Worx Rasenroboter - was gibt die webschnittstelle her

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

Vorheriges Thema - Nächstes Thema

CoolTux

Hallo Axel,

Habe gerade mal drüber geschaut. Sieht wirklich gut aus.
Kleiner Tip, rife die decode_json lieber in einem eval auf


$decode_json    = eval{decode_json($json)};
    if($@){
        Log3 $name, 4, "Aqicn ($name) - error while request: $@";
        readingsSingleUpdate($hash, 'JSON_Error', $@,1);
        return;
    }


So crasht Dir nicht gleich das ganze FHEM wenn mal ein unsauberer JSON String kommt.





Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

pc1246

Moin Axel
Toll, dass du jetzt ein Modul fuer meinen Shaun gebaut hast. Leider bin ich gerade dabei, das Schaf in den Stall zu bringen. Denn wir haben hier kein Wetter mehr, dass es sich lohnt den rumfuhren zu lassen. Ich habe das Maehgut derzeit hauptsaechlich an den Raedern und unter dem Gehaeuse.
Mal sehen, ob das dieses Jahr noch was wird.
Danke nochmals und Gruss
Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

axel.mohnen

Moin,
vielen dank fürs feedback...
@cooltux: werde ich umgehend machen....
@pc1246: wenn shaun im Stall wifi hat kannst du ihn einfach einschalten und testen. Du bekommst nur die Fehlermeldung "Draht fehlt".

Grüß Axel

CoolTux

Zitat von: axel.mohnen am 24 Oktober 2017, 08:36:00
Moin,
vielen dank fürs feedback...
@cooltux: werde ich umgehend machen....
@pc1246: wenn shaun im Stall wifi hat kannst du ihn einfach einschalten und testen. Du bekommst nur die Fehlermeldung "Draht fehlt".

Grüß Axel

Hallo Axel,

Ein zwei Sachen würde ich im Sinne der FHEM Developer Guide noch anpassen. Wenn Du da Interesse hast dann melde Dich einfach kurz.




Grüße
Leon
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

pc1246

Zitat von: axel.mohnen am 24 Oktober 2017, 08:36:00
...
@pc1246: wenn shaun im Stall wifi hat kannst du ihn einfach einschalten und testen. Du bekommst nur die Fehlermeldung "Draht fehlt".
Hallo Axel
Momentan weiss ich noch gar nicht, wie ich das loese! Die Station bleibt jedenfalls draussen, denke ich. Und dann wird es schwierig den Agenten zu laden! Also mal sehen, evtl. nehme ich den Akku raus und haeng den an ein Modellbau-Ladegeraet. Dann hat er natuerlich kein WiFi. Heute abend integrier ich Ihn aber evtl. noch, da sturmfrei.
Gruss Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

axel.mohnen

habe das gleiche Problem. Meine Ladestation bleibt draussen.
Ich werde vielleicht bei gutem Wetter "Robbi" kurz in den Ladestation schieben.......

axel.mohnen

Hallo,

zur Info:
ich habe das "eval" beim JSON decoding eingebaut....

Gruss
Axel

flipkill

#52
Hallo,

Erst mal vielen Dank das sich da jemand ran gesetzt hat um unseren Mähi in FHEM zu bekommen :P

Ich hab das nun versucht umzusetzen bekomm aber keine Readings rein :(

Service läuft
root@fhem:/opt/fhem# netstat -tulpn |grep 8001
tcp6       0      0 :::8001                 :::*                    LISTEN


Device ist eingerichtet
define robbi LANDROID localhost
attr robbi disable 0
attr robbi interval 60
attr robbi room Garten


pm2list

root@fhem:/opt/fhem# pm2 list
┌───────────────┬──────┬────────┬───┬─────┬───────────┐
│ Name          │ mode │ status │ ↺ │ cpu │ memory    │
├───────────────┼──────┼────────┼───┼─────┼───────────┤
│ LandroidSrv10 │ fork │ online │ 0 │ 0%  │ 40.3 MB   │
└───────────────┴──────┴────────┴───┴─────┴───────────┘
Use `pm2 show <id|name>` to get more details about an app


Log:
root@fhem:/opt/fhem# pm2 logs LandroidSrv10
[TAILING] Tailing last 15 lines for [LandroidSrv10] process (change the value with --lines option)
/root/.pm2/logs/LandroidSrv10-error-0.log last 15 lines:
0|Landroid | Error: listen EADDRINUSE :::8001
0|Landroid |     at Object.exports._errnoException (util.js:1020:11)
0|Landroid |     at exports._exceptionWithHostPort (util.js:1043:20)
0|Landroid |     at Server._listen2 (net.js:1258:14)
0|Landroid |     at listen (net.js:1294:10)
0|Landroid |     at Server.listen (net.js:1390:5)
0|Landroid |     at startWebServer (/opt/landroid/fhem-landroid-s/LandroidSrv10.js:33:6)
0|Landroid |     at LandroidCloud.updateListener (/opt/landroid/fhem-landroid-s/LandroidSrv10.js:49:5)
0|Landroid |     at LandroidCloud.onMessage (/opt/landroid/fhem-landroid-s/node_modules/iobroker.landroid-s/lib/landroid-cloud-2.js:169:18)
0|Landroid |     at MqttClient.<anonymous> (/opt/landroid/fhem-landroid-s/node_modules/iobroker.landroid-s/lib/landroid-cloud-2.js:141:14)
0|Landroid |     at emitThree (events.js:116:13)

/root/.pm2/logs/LandroidSrv10-out-0.log last 15 lines:
0|Landroid | get  https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem ->  200
0|Landroid | Fri, 03 Nov 2017 15:22:12 GMT --> Connected to mower
0|Landroid | Fri, 03 Nov 2017 15:22:12 GMT --> Landroid WebServer: server initialized
0|Landroid | Fri, 03 Nov 2017 15:22:12 GMT --> Landroid WebServer: server running
0|Landroid | Fri, 03 Nov 2017 15:24:13 GMT --> Disconnect from mower
0|Landroid | Fri, 03 Nov 2017 15:30:47 GMT --> Connected to mower
0|Landroid | Fri, 03 Nov 2017 15:30:47 GMT --> Landroid WebServer: server initialized
0|Landroid | get  https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem ->  200
0|Landroid | Fri, 03 Nov 2017 15:30:51 GMT --> Connected to mower
0|Landroid | Fri, 03 Nov 2017 15:30:51 GMT --> Landroid WebServer: server initialized
0|Landroid | Fri, 03 Nov 2017 15:30:51 GMT --> Landroid WebServer: server running
0|Landroid | get  https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem ->  200
0|Landroid | Fri, 03 Nov 2017 15:34:25 GMT --> Connected to mower
0|Landroid | Fri, 03 Nov 2017 15:34:25 GMT --> Landroid WebServer: server initialized
0|Landroid | Fri, 03 Nov 2017 15:34:25 GMT --> Landroid WebServer: server running


Was muss ich noch machen?

Gruß Jan

axel.mohnen

Hallo Jan,
man muss sich ja um unsere Haustiere kümmern  ;)

Dein log sagt das der port 8001 bereits verwendet wird. Kannst du mal deinen pm2 Prozess stoppen mit pm2 stop LandroidSrv10 und nochmal den netstat Befehl ausführen.....

flipkill

Hallo,

vllt hab ich ihn vorher 2 mal gestartet aber grad nochmal gestoppt
pm2 stop /opt/landroid/fhem-landroid-s/LandroidSrv10.js
root@fhem:/opt/fhem# netstat -tulpn |grep 8001


Läuft nichts anderes auf 8001.

Hab es danach wieder gestartet
root@fhem:/opt/fhem# netstat -tulpn |grep 8001
tcp6       0      0 :::8001                 :::*                    LISTEN      8494/LandroidSrv10.


Gruß Jan

axel.mohnen

Hi Jan,

liegt der "Error: listen EADDRINUSE :::8001" immer noch an?
Ich hatte den Fehler bei meinen ersten Tests auch. Sobald der server im Hintergrund läuft (PM2) hatte ich keine Probleme mehr.
Ein "reboot" kann auch schon mal Wunder bewirken  ;)

Oder "killall node" aber Vorsicht der Befehl beendet alle node Prozesse!
https://stackoverflow.com/questions/4075287/node-express-eaddrinuse-address-already-in-use-kill-server

Du kannst die Verbindung zwischen Node.js server (LandroidSrv10) ganz einfach testen.
Gib einfach die folgende URL (mit IP vom Raspi) im Browser ein. Zurück bekommst du die "Robbi" Daten im JSON String format.

http://[RASPBERRY_IP]:8001/getMessage

Gruss
Axel

axel.mohnen

Du kannst die Verbindung zwischen Node.js server (LandroidSrv10) und AWS ganz einfach testen.
Gib einfach die folgende URL (mit IP vom Raspi) im Browser ein. Zurück bekommst du die "Robbi" Daten im JSON String format.

http://[RASPBERRY_IP]:8001/getMessage

flipkill

Hallo,

das funktioniert bekomme die Daten in jsonlint sieht auch alles gut aus aber das Device in FHEM legt mir keine Readings an.

Gruß Jan

axel.mohnen

Ok, versuche mal folgendes...
- setzte das "disable" Attribute auf "1"
- Änderung speichern
- Attribute "disable" wieder auf "0" setzen und speichern.
- Refresh Browser

Im LandroidSrv10 log (PM2 logs LandroidSrv10) sollte folgendes stehen:
Fri, 03 Nov 2017 20:36:38 GMT --> Landroid Server: request recieved
Fri, 03 Nov 2017 20:36:38 GMT --> Landroid WebServer: Response send

flipkill

Jetzt kommt so einiges ;) mal schauen ob nun auch der Refresh geht :)
Danke dir erstmal :)
kann man den Mähi da nun auch an und nach hause schicken.

Gruß Jan