Worx Rasenroboter - was gibt die webschnittstelle her

Begonnen von ritter_runkel, 27 Juni 2016, 23:36:10

Vorheriges Thema - Nächstes Thema

Ralli

Hallo Andreas,

war bei mir genau so und ich habe das über zwei Tage nicht gelöst bekommen. Ich bin daher auf die von Otto entwickelte und im Beitrag über deinem verlinkte Methode umgestiegen. Klappt.

https://forum.fhem.de/index.php/topic,111959.0.html
Gruß,
Ralli

Proxmox 8.1 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.6.20240316) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

andreas1971

Danke für den Hinweis - werde ich die Woche mal testen! Heißt aber leider etwas Umbauarbeit. Ich steuere den Worx über mein NodeRed-Dashboard. Das müsste ich dann anpassen.

Florian St.

#857
Ich habe es nach kurzer Analyse geschafft es wieder zum laufen zu bekommen.
Mein stand der node_modules ist etwa 1 Jahr alt (Anfang 2020)
Vorerst kein Update über npm machen, mit der aktuellen Version vom iobroker.worx module habe ich es auf die schnelle nicht zum laufen bekommen.

Mein Vorgehen:
Erst einmal den Node Server stoppen.

Dann im Verzeichnis /opt/landroid/fhem-landroid-s/node_modules/iobroker.worx/lib liegt die Datei api.js
Ziemlich am Ende ist der Eintrag

    const options = {                                               
        method: method,                                             
        uri: 'http://' + URL + PATH + path,                         
        headers: headers,                                           
        json: true                                                   
    };


Hier das http zu https ändern und dann den Node Server wieder starten

Nicht die elegante Lösung aber funktional und schnell ;)

Vg

Edit: Kommandos senden habe ich noch nicht probiert das es gerade Nacht ist, aber die Werte werden wieder korrekt abgerufen
Es gibt 10 Gruppen von Menschen: Die, die Binärcode verstehen und die, die ihn nicht verstehen.

Ich möchte gerne die Welt verändern, doch Gott gibt den Quelltext nicht frei.

Xell1984

#858
Hallo zusammen,

bei mir wurde am 6.4.21 das letzte mal der Status aktualisiert. Wenn ich Start Anklicke dann

Zitat
2021.04.25 15:00:29 5: LANDROID (Eddie) - set Eddie startMower
2021.04.25 15:00:29 4: LANDROID (Eddie) - NonblockingGet get URL
2021.04.25 15:00:29 4: LANDROID (Eddie) - LANDROID_ResponseSetCmd: calling Host: localhost
2021.04.25 15:00:29 4: LANDROID (Eddie) - LANDROID_ResponseSetCmd: processed response data
2021.04.25 15:00:29 4: LANDROID (Eddie) - LANDROID_ResponseSetCmd: error while request: http://localhost:8001/startMower?value=: empty answer received

Im Oktober lief noch alles. Jemand einen Tipp / Idee?

Ich hab im Januar allerdings einiges Aktualisiert. Ich meine auch die npm sachen wegen Homebridge. Liegt es daran?
Landroid ist aktuell, Adapter müsste aktuell sein,da im Oktober noch alles lief. 

Vielen Dank!

Gruß

/edit
http://192.168.178.36:8001/getMessage erzeugt eine leere Seite
Mit dem Tool aus dem Robterforum komm ich auf den Mäher
E-Mail und Passwort sind unverändert und funktionieren über die App von Eisha aus dem Robter Forum
Razpberry on Raspberry Pi 3 mit Raspian Jessy

Florian St.

#859
Was steht denn in den beiden Logs vom pm2?

Findet man unter ~/.pm2/logs/
Wahrscheinlich konnte er den Node Server nicht richtig starten und die Verbindung zur api aufbauen.

Ich denke zu müsstest die api.js auf einen älteren
stand zurücksetzen und die erwähnte Änderung aus dem vorherigen Post nutzen.

Machst am besten vorher ein Backup der aktuellen api bis jemand rausgefunden hat was man in der LandroidSrv.js ändern müsste

PS: mit wget https://raw.githubusercontent.com/iobroker-community-adapters/ioBroker.worx/9e09ec0a48512d8aa9f373082e4ee9affe62721e/lib/api.js kann man die "alte" api in das aktuelle Verzeichnis runterladen
Es gibt 10 Gruppen von Menschen: Die, die Binärcode verstehen und die, die ihn nicht verstehen.

Ich möchte gerne die Welt verändern, doch Gott gibt den Quelltext nicht frei.

Xell1984

Hab die Schritte versucht. Der wget Befehl hat bei mir keine Änderung bei der Api Datei erbracht. Steht schon https drin. Ist der  link evtl falsch?

LG  und danke
Razpberry on Raspberry Pi 3 mit Raspian Jessy

Florian St.

Der link sollte richtig sein. Wenn ich den im Browser öffne steht da auch http ohne "s"
Hast du beide uri kontrolliert? In beiden muss https stehen.

Wenn sich an der Datei nichts geändert hat, hast du das direkt im lib Verzeichnis gemacht und der Benutzer eventuell keine rechte? Oder hast du den Befehl im homeverzeichnis ausgeführt und dann in die api im lib Ordner geschaut?
Der wget befehl speichert die datei da wo er ausgeführt wurde
Es gibt 10 Gruppen von Menschen: Die, die Binärcode verstehen und die, die ihn nicht verstehen.

Ich möchte gerne die Welt verändern, doch Gott gibt den Quelltext nicht frei.

Xell1984

So, jetzt hat es geklappt. Der Fehler saß vor dem Bildschirm. Ich hatte übersehen das es zwei Blöcke hab mit  Uri. Der erste hatte https, der zweite nur http.
Zumindest die Readings sind nun aktualisiert und Zonenstartpunkt verändern geht wieder. Danke 👍
Razpberry on Raspberry Pi 3 mit Raspian Jessy

axel.mohnen

Hallo Landroider,

leider bin ich in anderen Projekten eingebunden und finde nicht die Zeit um das LANDROID Module weiterzuentwickeln.
Ich bin froh das die aktuelle Version noch funktionsfähig ist und hoffe das das auch noch eine Weile so bleibt.  8)
Mich würde es freuen wenn jemand von Euch eine neue GITHAB "Fork" anlegt und das Module weiterentwickeln könnte.
Es werden bestimmt bald neue Anpassungen zwecks neuer Modelle (z.b. WR141E) oder Firmware update nötig sein...

Viele Grüße
Axel

speedAmaster

Hallo Commumnity,

ich nutze meinen Landroid mit dem LANDROID Modul von Axel Mohnen.
Hat prima funktioniert, bis gestern 18:09......
Seit diesem Zeitpunkt habe ich keine LOG Werte mehr und: der Status des devices ist:
mowerStatusTxt mowerErrorTxt

Und obwohl der state "initialized" ist, bekomme ich:
lastStatusRequestError: empty response
lastStatusRequestState: statusRequest_error

Den Landroid kann ich nach wie vor über die Landroid-App erreichern (also geht WiFi und die Verbindung).

Woran kann dies denn liegen?

defmod Landroid LANDROID localhost
attr Landroid DbLogInclude batteryLevel,batteryCharging,mowerStatusTxt,mowerErrorTxt,totalDistance,wifiQuality
attr Landroid group Landroid
attr Landroid icon Botvac_VR200
attr Landroid room Garten
attr Landroid stateFormat mowerStatusTxt mowerErrorTxt

setstate Landroid mowerStatusTxt mowerErrorTxt
setstate Landroid 2021-05-02 23:50:48 .bladeTimeOffset 0
setstate Landroid 2021-05-04 13:33:27 lastSetCommandMsg http://localhost:8001/edgeCutting?value=: empty answer received
setstate Landroid 2021-05-04 13:33:27 lastSetCommandState cmd_error
setstate Landroid 2021-05-04 16:26:11 lastStatusRequestError empty response
setstate Landroid 2021-05-04 16:26:11 lastStatusRequestState statusRequest_error
setstate Landroid 2021-05-02 23:50:48 state initialized


Viele Grüße!
Bernd

Florian St.

Hallo
ging es vorgestern noch oder hast du ihn zum ersten mal dieses Jahr wieder Freilauf gegeben?

Zitat von: Florian St. am 25 April 2021, 21:37:28
Was steht denn in den beiden Logs vom pm2?

Findet man unter ~/.pm2/logs/
Es gibt 10 Gruppen von Menschen: Die, die Binärcode verstehen und die, die ihn nicht verstehen.

Ich möchte gerne die Welt verändern, doch Gott gibt den Quelltext nicht frei.

speedAmaster

Hallo Florian,
der Landroid lief schon einige Tage vorher..... (seit 28.3.)!

in LandroidSrv-error.log steht:
TypeError: Cannot read property 'serial' of undefined
    at edgeCutting (/opt/landroid/fhem-landroid-s/LandroidSrv.js:214:45)
    at fireCmd (/opt/landroid/fhem-landroid-s/LandroidSrv.js:129:17)
    at Server.<anonymous> (/opt/landroid/fhem-landroid-s/LandroidSrv.js:85:6)
    at Server.emit (events.js:198:13)
    at Server.<anonymous> (/usr/local/lib/node_modules/pm2/node_modules/@pm2/io/build/main/metrics/httpMetrics.js:166:33)
    at parserOnIncoming (_http_server.js:691:12)
    at HTTPParser.parserOnHeadersComplete (_http_common.js:111:17)


in LandroidSrv-out.log steht:
Tue, 04 May 2021 14:50:29 GMT --> Landroid WebServer: Request recieved
Tue, 04 May 2021 14:50:29 GMT --> Landroid WebServer: Response send


interessant ist dieser Block:
Tue, 04 May 2021 11:33:27 GMT --> Landroid WebServer: Request recieved
DEBUG: Connect to worx....
DEBUG: Connect to worx ok : {"token_type":"Bearer","expires_in":31536000,"access_token":"eyJ0eXAiOiJ...........habe ich entfernt............df2b70bc012
65ab034772a0d0708a"}
Tue, 04 May 2021 11:33:30 GMT --> sucessfully connected!
Tue, 04 May 2021 11:33:30 GMT --> Landroid WebServer: server initialized
ERROR: StatusCodeError: 426 - "This service requires use of the HTTPS protocol."
Tue, 04 May 2021 11:36:26 GMT --> Landroid WebServer: Request recieved


interessanterweise keine Auffälligkeiten um die Zeit, wo ich den letzten Log-Eintrag habe (ist auch klar: da keine neuen Werte, da der Landroid über Nacht in seiner Garage steht).

Kann dies weiterhelfen?

Florian St.

Hast du beide Uri-Konfiguration in der api.js kontrolliert ob dort auch wirklich https steht?
Der Fehler "ERROR: StatusCodeError: 426" sieht mir stark nach dem bekannten "Problem" aus.

Siehe
Zitat von: Florian St. am 24 April 2021, 23:41:48
Ich habe es nach kurzer Analyse geschafft es wieder zum laufen zu bekommen.
Mein stand der node_modules ist etwa 1 Jahr alt (Anfang 2020)
Vorerst kein Update über npm machen, mit der aktuellen Version vom iobroker.worx module habe ich es auf die schnelle nicht zum laufen bekommen.

Mein Vorgehen:
Erst einmal den Node Server stoppen.

Dann im Verzeichnis /opt/landroid/fhem-landroid-s/node_modules/iobroker.worx/lib liegt die Datei api.js
Ziemlich am Ende ist der Eintrag

    const options = {                                               
        method: method,                                             
        uri: 'http://' + URL + PATH + path,                         
        headers: headers,                                           
        json: true                                                   
    };


Hier das http zu https ändern und dann den Node Server wieder starten

Nicht die elegante Lösung aber funktional und schnell ;)

Vg

Edit: Kommandos senden habe ich noch nicht probiert das es gerade Nacht ist, aber die Werte werden wieder korrekt abgerufen
Es gibt 10 Gruppen von Menschen: Die, die Binärcode verstehen und die, die ihn nicht verstehen.

Ich möchte gerne die Welt verändern, doch Gott gibt den Quelltext nicht frei.

speedAmaster

Hallo Florian,
danke dir! Im Nachhinein bin ich wieder schlauer! Die 2te Ri-Konfig war auf http!
Evtl hat sich bei meinem apt update/upgrade das npm upgedated.
DIR VIELEN DANK!
VG
Bernd

andi11

gibts schon ne Möglichkeit das Modul zu nutzen mit frisch installiertem node und dementsprechend dem aktuellen iobroker.worxs? Bei mir funktioniert die Verbindung zur Cloud aber sobald ich ein Kommando auf den lokalen Server schicke, stürtzt dieser ab