Ardumower Webinterface

Stand 30.05.2022
Es gibt eine neue Version der pfod.cpp und pfod.h
Die Live Data Funktion ist erweitert und sollte eigentlich alles zeigen, was bisher in den plot-menüs der pfod-app möglich war (wenn auch etwas anders im Erscheinungsbild)
Der Timer von azuritBer/TeensyMower unterscheidet sich von azurit, was mir nicht gleich aufgefallen ist. Die fehlenden Eingaben sollten jetzt möglich sein.
Das Layout paßt sich an den Bildschirm an.

Bernard hat in TeensyMower das Abspeichern von Nachrichten auf der SD-Karte des Teensy eingeführt. Das Anzeigen über eine Webseite steht noch aus.
Damit gibt es mehrere Möglichkeiten auf Informationen der Console vom Teensy zuzugreifen.

Wie immer: bitte meldet Fehler und Bedarfe

Gruß Fürst Ruprecht
 
Ich würde mir ein wenig Platz für den Finger zum scrollen wünschen. Z.B. eine kleine freie Fläche auf der rechten Seite.
Vielleicht gibt es auch andere Lösungen?
Wenn ich mit dem Handy in den Einstellungen herumscrolle, verstelle ich oft etwas. Manchmal bemerke ich das nichtmal.
 
O.K. ich denke, das kann man „leicht“ machen.
Wie würde Dein „Lieblings-Menü“ aussehen, was würde da angezeigt und was bedient?

meine sind:

Gruß Fürst Ruprecht
 

Anhänge

  • 70563AF9-AFBA-482D-9638-ED7FD190728C.png
    70563AF9-AFBA-482D-9638-ED7FD190728C.png
    847,1 KB · Aufrufe: 31
  • 2C258185-B50F-4CA0-98D6-AFABD6CE46C6.png
    2C258185-B50F-4CA0-98D6-AFABD6CE46C6.png
    1,1 MB · Aufrufe: 29
Meistens sind es ja nur ein paar kleine schnelle Änderungen in Settings/Motor. Wenn ich unten weiter eine Einstellung ändern möchte, dann ist schnell oben ein Schieberegler nach rechts gerutscht.
Es würde mir schon reichen nach je 3 Schiebereglern eine freie Zeile einzufügen. Da kann man dann ohne bedenken draufklicken und das Menü weiterschieben.
 
Hallo zusammen,
ich habe mich mal wieder dran gesetzt das Webinterface mit Azuritber zum laufen zu bekommen.
Leider komme ich nicht weiter.
Ausgangssituation:
Azuritber DEV 1.86auf den Due gehieft. Läuft
Webinterface vom 01.06. auf den ESP geladen, Data geladen. Läuft.
Dann die Pfods aus dem Webinterface vom 01.06 in das Azuritber DEV 1.86 Verzeichnis kopiert und diese Änderungen gemacht:

//#define TEENSYDUINO true
#define STANDARD true //choose normal code for one Perimetersensor
//#define FUERSTRUPRECHT true //choose for two Perimetersensor and Fürst Ruprecht Stepper application

und versucht zu kompilieren. Das hat mit der Webinterface version vom 22.05 funktioniert.
Jetzt bekomme ich das hier:
:

Arduino: 1.8.19 (Windows Store 1.8.57.0) (Windows 10), Board: "Arduino Due (Programming Port)"

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'void RemoteControl::sendErrorMenu(boolean)':

pfod.cpp:554:44: error: 'ERR_MOTOR_FRONT_LEFT' was not declared in this scope

serialPort->print(robot->errorCounterMax[ERR_MOTOR_FRONT_LEFT]); //FR:ERR_MOTOR_LEFT

^

pfod.cpp:561:44: error: 'ERR_MOTOR_FRONT_RIGHT' was not declared in this scope

serialPort->print(robot->errorCounterMax[ERR_MOTOR_FRONT_RIGHT]); //FR:ERR_MOTOR_RIGHT

^

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'void RemoteControl::sendMowMenu(boolean)':

pfod.cpp:738:27: error: 'class Robot' has no member named 'Mow1_Power'

serialPort->print(robot->Mow1_Power);

^

pfod.cpp:740:27: error: 'class Robot' has no member named 'Mow2_Power'

serialPort->print(robot->Mow2_Power);

^

pfod.cpp:742:27: error: 'class Robot' has no member named 'Mow3_Power'

serialPort->print(robot->Mow3_Power);

^

pfod.cpp:757:60: error: 'class Robot' has no member named 'highGrassSpeedCoeff'

sendSlider("o03", F("High Grass speed Ratio % "), robot->highGrassSpeedCoeff, "", 0.1, 1, 0.2);

^

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'void RemoteControl::processMowMenu(String)':

pfod.cpp:786:68: error: 'class Robot' has no member named 'highGrassSpeedCoeff'

else if (pfodCmd.startsWith("o03")) processSlider(pfodCmd, robot->highGrassSpeedCoeff, 0.1);

^

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'void RemoteControl::sendPerimeterMenu(boolean)':

pfod.cpp:894:15: error: 'class Robot' has no member named 'perimeterInsideRight'

if(robot->perimeterInsideRight) serialPort->print(F(" Inside "));

^

pfod.cpp:907:60: error: 'class Robot' has no member named 'perimeterMagMaxValue'

sendSlider("e21", F("Perimeter MAG MAX VALUE"), robot->perimeterMagMaxValue, "", 10 , 20000, 5000);

^

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'void RemoteControl::processPerimeterMenu(String)':

pfod.cpp:936:69: error: 'class Robot' has no member named 'perimeterMagMaxValue'

else if (pfodCmd.startsWith("e21")) processSlider(pfodCmd, robot->perimeterMagMaxValue, 10);

^

pfod.cpp:943:28: error: 'pinPerimeterLeft' was not declared in this scope

robot->perimeter.begin(pinPerimeterLeft, pinPerimeterRight);

^

pfod.cpp:943:46: error: 'pinPerimeterRight' was not declared in this scope

robot->perimeter.begin(pinPerimeterLeft, pinPerimeterRight);

^

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'void RemoteControl::sendRainMenu(boolean)':

pfod.cpp:998:21: error: 'class Robot' has no member named 'Enable_Screen'

sendYesNo(robot->Enable_Screen);

^

pfod.cpp:1000:29: error: 'class Robot' has no member named 'temperatureTeensy'

serialPort->print(robot->temperatureTeensy);

^

pfod.cpp:1002:29: error: 'class Robot' has no member named 'temperatureImu'

serialPort->print(robot->temperatureImu);

^

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'void RemoteControl::processRainMenu(String)':

pfod.cpp:1013:38: error: 'class Robot' has no member named 'Enable_Screen'

else if (pfodCmd == "m03") robot->Enable_Screen = !robot->Enable_Screen;

^

pfod.cpp:1013:62: error: 'class Robot' has no member named 'Enable_Screen'

else if (pfodCmd == "m03") robot->Enable_Screen = !robot->Enable_Screen;

^

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'void RemoteControl::sendGPSMenu(boolean)':

pfod.cpp:1043:58: error: 'class Robot' has no member named 'gpsSpeedIgnoreTime'

sendSlider("q02", F("GPS speed ignore time"), robot->gpsSpeedIgnoreTime, "", 1, 10000);

^

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'void RemoteControl::processGPSMenu(String)':

pfod.cpp:1075:71: error: 'class Robot' has no member named 'gpsSpeedIgnoreTime'

else if (pfodCmd.startsWith("q02")) processSlider(pfodCmd, robot->gpsSpeedIgnoreTime, 1);

^

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'void RemoteControl::sendSdCardLogMenu(boolean)':

pfod.cpp:1096:3: error: 'File' was not declared in this scope

File root;

^

pfod.cpp:1096:8: error: expected ';' before 'root'

File root;

^

pfod.cpp:1097:8: error: expected ';' before 'entry'

File entry;

^

pfod.cpp:1099:3: error: 'root' was not declared in this scope

root = SD.open("/");

^

pfod.cpp:1099:10: error: 'SD' was not declared in this scope

root = SD.open("/");

^

pfod.cpp:1100:3: error: 'entry' was not declared in this scope

entry = root.openNextFile(); // remove title from list

^

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'void RemoteControl::processSdCardLogMenu(String)':

pfod.cpp:1173:5: error: 'File' was not declared in this scope

File root = SD.open("/");

^

pfod.cpp:1173:10: error: expected ';' before 'root'

File root = SD.open("/");

^

pfod.cpp:1174:10: error: expected ';' before 'entry'

File entry = root.openNextFile(); // remove title from list

^

pfod.cpp:1176:12: error: expected ';' before 'entry'

File entry = root.openNextFile();

^

pfod.cpp:1177:13: error: 'entry' was not declared in this scope

if (! entry) {

^

pfod.cpp:1180:7: error: 'SD' was not declared in this scope

SD.remove(entry.name());

^

pfod.cpp:1180:17: error: 'entry' was not declared in this scope

SD.remove(entry.name());

^

pfod.cpp:1196:5: error: 'File' was not declared in this scope

File myFile;

^

pfod.cpp:1196:10: error: expected ';' before 'myFile'

File myFile;

^

pfod.cpp:1197:5: error: 'myFile' was not declared in this scope

myFile = SD.open(logFileName.c_str());

^

pfod.cpp:1197:14: error: 'SD' was not declared in this scope

myFile = SD.open(logFileName.c_str());

^

pfod.cpp:1211:18: error: 'class Robot' has no member named 'resetWatchdogForPfod'

robot->resetWatchdogForPfod();

^

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'void RemoteControl::processRemoteMenu(String)':

pfod.cpp:1513:32: error: 'class Robot' has no member named 'teensyBootLoader'

if (pfodCmd == "h05" ) robot->teensyBootLoader(); //use by pi to reset teensy

^

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'void RemoteControl::processDateTimeMenu(String)':

pfod.cpp:1643:12: error: 'class Robot' has no member named 'pfodSetDateTime'

robot->pfodSetDateTime(robot->datetime.time.hour, robot->datetime.time.minute, 0, robot->datetime.date.day, robot->datetime.date.month, robot->datetime.date.year);

^

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'void RemoteControl::processCommandMenu(String)':

pfod.cpp:2002:10: error: 'class Robot' has no member named 'userOut1'

robot->userOut1 = 1;

^

pfod.cpp:2003:10: error: 'class Robot' has no member named 'setUserOut'

robot->setUserOut();

^

pfod.cpp:2007:10: error: 'class Robot' has no member named 'userOut1'

robot->userOut1 = 0;

^

pfod.cpp:2008:10: error: 'class Robot' has no member named 'setUserOut'

robot->setUserOut();

^

pfod.cpp:2012:10: error: 'class Robot' has no member named 'userOut2'

robot->userOut2 = 1;

^

pfod.cpp:2013:10: error: 'class Robot' has no member named 'setUserOut'

robot->setUserOut();

^

pfod.cpp:2017:10: error: 'class Robot' has no member named 'userOut2'

robot->userOut2 = 0;

^

pfod.cpp:2018:10: error: 'class Robot' has no member named 'setUserOut'

robot->setUserOut();

^

pfod.cpp:2022:10: error: 'class Robot' has no member named 'userOut3'

robot->userOut3 = 1;

^

pfod.cpp:2023:10: error: 'class Robot' has no member named 'setUserOut'

robot->setUserOut();

^

pfod.cpp:2027:10: error: 'class Robot' has no member named 'userOut3'

robot->userOut3 = 0;

^

pfod.cpp:2028:10: error: 'class Robot' has no member named 'setUserOut'

robot->setUserOut();

^

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'void RemoteControl::sendTestOdoMenu(boolean)':

pfod.cpp:2259:32: error: 'class Robot' has no member named 'perimeterNoise'

serialPort->print(int(robot->perimeterNoise));

^

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'void RemoteControl::sendStepperMenu(boolean)':

pfod.cpp:2415:21: error: 'class Robot' has no member named 'enable_spreadCycle'

sendYesNo(robot->enable_spreadCycle);

^

pfod.cpp:2417:48: error: 'class Robot' has no member named 'rms'

sendSlider("S03", F("RMS current "), robot->rms, "", 1, 1200, 200);

^

pfod.cpp:2418:47: error: 'class Robot' has no member named 'microSteps'

sendSlider("S04", F("MicroSteps "), robot->microSteps, "", 1, 128, 0);

^

pfod.cpp:2419:63: error: 'class Robot' has no member named 'i_hold'

sendSlider("S05", F("Ihold - Standstill current "), robot->i_hold, "", 1, 31, 0);

^

pfod.cpp:2420:62: error: 'class Robot' has no member named 'i_run'

sendSlider("S06", F("i_run - Motor run current "), robot->i_run, "", 1, 31, 0);

^

pfod.cpp:2421:66: error: 'class Robot' has no member named 'i_holddelay'

sendSlider("S07", F("Iholddelay - motor power down "), robot->i_holddelay, "", 1, 31, 0);

^

pfod.cpp:2422:73: error: 'class Robot' has no member named 'f_clktrim'

sendSlider("S08", F("fclktrim - clockgenerator (31=12MHz) "), robot->f_clktrim, "", 1, 31, 0);

^

pfod.cpp:2424:49: error: 'class Robot' has no member named 'steering_PWM'

sendSlider("S11", F("Steering PWM "), robot->steering_PWM, "", 1, 500, 0);

^

pfod.cpp:2425:49: error: 'class Robot' has no member named 'steering_kp'

sendSlider("S12", F("Steering kp "), robot->steering_kp, "", 1, 200, 0);

^

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'void RemoteControl::processStepperMenu(String)':

pfod.cpp:2434:10: error: 'class Robot' has no member named 'enable_spreadCycle'

robot->enable_spreadCycle = !robot->enable_spreadCycle;

^

pfod.cpp:2434:39: error: 'class Robot' has no member named 'enable_spreadCycle'

robot->enable_spreadCycle = !robot->enable_spreadCycle;

^

pfod.cpp:2437:70: error: 'class Robot' has no member named 'rms'

else if (pfodCmd.startsWith("S03")) processSlider(pfodCmd, robot->rms, 1);

^

pfod.cpp:2438:70: error: 'class Robot' has no member named 'microSteps'

else if (pfodCmd.startsWith("S04")) processSlider(pfodCmd, robot->microSteps, 1);

^

pfod.cpp:2439:70: error: 'class Robot' has no member named 'i_hold'

else if (pfodCmd.startsWith("S05")) processSlider(pfodCmd, robot->i_hold, 1);

^

pfod.cpp:2440:70: error: 'class Robot' has no member named 'i_run'

else if (pfodCmd.startsWith("S06")) processSlider(pfodCmd, robot->i_run, 1);

^

pfod.cpp:2441:70: error: 'class Robot' has no member named 'i_holddelay'

else if (pfodCmd.startsWith("S07")) processSlider(pfodCmd, robot->i_holddelay, 1);

^

pfod.cpp:2442:70: error: 'class Robot' has no member named 'f_clktrim'

else if (pfodCmd.startsWith("S08")) processSlider(pfodCmd, robot->f_clktrim, 1);

^

pfod.cpp:2443:70: error: 'class Robot' has no member named 'steering_PWM'

else if (pfodCmd.startsWith("S11")) processSlider(pfodCmd, robot->steering_PWM, 1);

^

pfod.cpp:2444:70: error: 'class Robot' has no member named 'steering_kp'

else if (pfodCmd.startsWith("S12")) processSlider(pfodCmd, robot->steering_kp, 1);

^

pfod.cpp:2445:56: error: 'tmc2208settings' was not declared in this scope

else if (pfodCmd.startsWith("S09")) tmc2208settings();

^

D:\users\Michael neu\Documents\Ardumower\Firmware\AzuritBer-DEV 1.86-26.05.22\ardumower\pfod.cpp: In member function 'boolean RemoteControl::readSerial()':

pfod.cpp:2691:14: error: 'class Robot' has no member named 'sdcardToPfod'

robot->sdcardToPfod = false;

^

pfod.cpp:2818:16: error: 'class Robot' has no member named 'sdcardToPfod'

robot->sdcardToPfod = true;

^

exit status 1

'ERR_MOTOR_FRONT_LEFT' was not declared in this scope



Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.


Wo mache ich den Fehler?

Danke im Voraus

Gruss Michael
 
Sorry für die Frage, ich denke ich habs gefunden. ist das gleiche Problem wie bei meinem letzten Versuch mit der Master Version.
 
Du mußt die DEV-Version benutzen und Du hast auch noch Fürst Ruprecht aktiviert, es kommen nämlich die Steppereinstellungen und der Vierradantrieb.
Wennś nicht klappt, mache ich für Dich ein zip-Packet.

Gruß Fürst Ruprecht
 
Hallo Fürst Ruprecht,
ich habe eigentlich die defines so gesetzt wie es für mich passen sollte.
in der Pfodd.cpp:

// Android remote control (pfod App)
// For a detailed specification of the pfodApp protocol, please visit: http://www.forward.com.au/pfod/

//#define TEENSYDUINO true
#define STANDARD true //choose normal code for one Perimetersensor
//#define FUERSTRUPRECHT true //choose for two Perimetersensor and Fürst Ruprecht Stepper application

#include "pfod.h"
#include "robot.h"
#include "imu.h"
#if not defined(FUERSTRUPRECHT) //(DUE)
#include "mower.h"
#endif
#if not defined(TEENSYDUINO) //(DUE)

und in der Pfod.h:
*/

#define DUE true //if you use DUE-CPU
//#define TEENSYDUINO true //if you use Teensy4.1-CPU
#define STANDARD true //if you are NOT Fürst Ruprecht
//#define FUERSTRUPRECHT true //if you are Fürst Ruprecht
#define USECONSOLE true //if you want to send the arduino-console-Output to your mobile/tablet
#define USEPFOD true //if you use the arduino-pfod-V3-app

#if not defined(TEENSYDUINO) //(DUE)
#include <Arduino.h> //(DUE)

Und ich habe die DEV 1.86 Version von Bernard verwendet.
Da StefanH schrieb ich soll die verwenden bin ich davon ausgegangen dass ich sonst nichts mehr ändern muss.

Compilieren hat erst nach umfangreichen auskommentieren hauptsächlich der SD Card funktionen funktioniert.

Ich habe das jetzt erstmal auf den zweiten Due auf dem Schreibtisch gespielt, da ich noch ein bischen zögere mein Produktiv Mäher damit zu füttern.
 
Hallo,
ich habe mir jetzt mal ein bischen die Menüs angesehen und mit meinem Einstellungen bzw. der Auflistung aus der seriellen Konsole (Menüpunkt X) verglichen.
Da gehen wohl einige Einstellungen nicht richtig.
z.B. Im Menü Motor steht die Werte für SpeedOdoMin und Max auf 0
Im lanes Menü stehen die Werte für fixed yaw und opposite lane alle auf 0
Auch fehlen manche Parameter in der Web, wie z.b. Station heading, Reboot after charging,
Motormenu motroSenseRightscale sowie left, motor forwtime max, motor rightoffsetfwd,usw.

Sollte das alles schon gehen oder ist das noch ein früher Entwicklungsstand wo noch nicht alles umgesetzt ist oder habe ich noch irgendwo einen Bock drin?
Meine Konfig ist Azuritber 1.86 DEV vom 26.05. runtergeladen und das Webinterface vom 01.06.

Das Webinterface sieht klasse aus und da mir die Pfodapp auch immer Ärger macht hatte ich gehofft ich könnte einfach darauf umswitchen.
Nichts desto trotz nochmals vielen Dank für die tolle Arbeit hier.
Gruss Michael
 
Hallo Michael,

wir sind/waren soweit, daß es keine Compiler-Fehler mehr gegeben hat und alle Einstellmenüs umgesetzt sind. Die 1.86 ist ja schon „recht alt“, es dürften die letzten Änderungen also nicht an den Problemen schuld sein.
Da ich versuche, eine einzige pfod für alle Varianten zu machen kann es schon sein, daß aus einer Verbesserung für Teensy ein Fehler bei DUE wird.
Evtl. ist das zu aufwendig, da denke ich drüber nach.
Ich schaue mir die dev 1.86 nochmal an und melde mich möglichst schnell.

Gruß Fürst Ruprecht
 
Hallo,die 1.86 ist aber der neueste Stand den man auf GitHub bekommt.
Ich Versuche gerne was aktuelleres.
Wenn ich sonst irgendwie helfen kann...
 
Oben