Valetudo Koordinaten -> Fhem

Begonnen von gary822, 28 April 2021, 16:31:35

Vorheriges Thema - Nächstes Thema

gary822

Hallo an alle :)

ich habe mir auf meine ToDo Liste gesetzt eine Zonenreinigung über FHEM zu realisieren.
Dazu möchte ich feste Zonen von meinem Xiaomi Vacuum V1 reinigen lassen und habe diese auch definiert.
Diese sehen in meinem Valetudo folgendermaßen aus (nicht wundern sind zwei Staubsauger):
{"name":"Bad","id":"ef6f96b7-c770-4204-9916-6e5edb315d68","areas":[[2345,2215,2635,2510,1]]},
{"name":"Flur","id":"0ebcf777-074c-41eb-abc9-2db44ae2e9b9","areas":[[2210,2305,2340,2670,1],[2345,2515,2670,2675,1],[2045,2675,2305,2795,1]]},
{"name":"SZ","id":"d2c8a4ff-5857-415f-9574-4ec3c6adfc7e","areas":[[2375,2675,2740,3080,1]]},
{"name":"AZ","id":"e1a4c176-9cb9-40b3-b64c-610400c77768","areas":[[1845,2695,2000,3080,1],[2000,2805,2305,3080,1]]},
{"name":"Komplett","id":"b396f85c-0fdb-422c-ae57-261327b85954","areas":[[2205,2210,2740,3080,1],[1835,2660,2210,3080,1]]

{"name":"Bad","id":"9e79e4b0-de4e-4e78-9e09-5d08b0544757","areas":[[2060,2920,2400,3090,1],[2060,3025,2185,3150,1]]},
{"name":"WZ","id":"dc1fc43d-7256-4118-9136-73fdd9777882","areas":[[2420,2505,2905,2890,1]]},
{"name":"Küche","id":"815256e4-7256-4ea5-acd3-f2ab46345aef","areas":[[2000,2510,2415,2865,1]]},
{"name":"SZ","id":"58b75877-9680-4471-84b0-8826d5d70b75","areas":[[2765,2940,3180,3340,1]]},
{"name":"AZ","id":"7201d59c-52fb-4d40-b3e5-3a8e3a209268","areas":[[2055,3185,2375,3395,1],[2270,3095,2385,3210,1]]},
{"name":"Flur","id":"43399131-0235-4b24-8328-c2de0ffecc0d","areas":[[2385,2885,2525,3380,1],[2525,3215,2755,3325,1],[2595,2935,2725,3215,1]]},
{"name":"Komplett","id":"bb842b54-5260-40ef-9adf-7efd56e8aa06","areas":[[1995,2510,2890,3395,1],[2885,2940,3170,3350,1]]}]


Wenn ich nun diese Informationen in meinem FHEM Einpflege werden die Zonen irgendwo außerhalb der Karte definiert.
Zur Verdeutlichung habe ich das mal in zwei Bildern festgehalten.
Die Definition in meinem FHEM zu den beiden Staubsaugerzonen ist folgende:
attr Staubi_OG zone_names Bad:[2345,2215,2635,2510,2] Flur:[2210,2305,2340,2670,1],[2345,2515,2670,2675,2],[2045,2675,2305,2795,2] SZ:[2375,2675,2740,3080,2] AZ:[1845,2695,2000,3080,2],[2000,2805,2305,3080,2] Komplett:[2205,2210,2740,3080,2],[1835,2660,2210,3080,2]
attr Staubi_EG zone_names Bad:[2060,2920,2400,3090,2],[2060,3025,2185,3150,2] WZ:[2420,2505,2905,2890,2] Küche:[2000,2510,2415,2865,2] SZ:[2765,2940,3180,3340,2] AZ:[2055,3185,2375,3395,2],[2270,3095,2385,3210,2] Flur:[2385,2885,2525,3380,2],[2525,3215,2755,3325,2],[2595,2935,2725,3215,2] Komplett:[1995,2510,2890,3395,2],[2885,2940,3170,3350,2]


Ich habe nun schon den ganzen Recherchiert aber leider keine Aussage gefunden wie genau ich die Koordinaten umrechnen muss um diese in FHEM zu nutzen.
Alle Threads dahingehend beziehen sich auf veraltete Valetudo Installationen.

Ich bin über Lösungsansätze sehr froh um dieses Problem zu lösen.

VG
gary822


gary822

Hallo @swsmily,

danke habe ich schon durch den Thread und keine richtige Lösung gefunden, da sich die API seitens Valetudo geändert hat weshalb die automatischen Lösungen nicht funktionieren.

Die Lösung mit dem 'sub my_makeFHEMcoordinates($)' habe ich mir auch angeschaut aber irgendwie bekomme ich das nicht lauffähig, da ich nicht weiß wie ich den sub dann aufrufen soll um die Berechnung durchzuführen.
Weiterhin habe ich die Berechnung mit der 51200 manuell durchgeführt aber dann ist die Zone auch immer noch ganz woanders.

VG
gary822

MadMax-FHEM

Den Sub aufrufen?
Steht doch unten ein Beispiel.

Aufruf in FhemWeb dann eben den Aufruf in geschweifte Klammern:


{ my_makeFHEMcoordinates("[24540, 25827, 26244, 26448, 1]") }


Aber ich hab keine Ahnung ob das noch tut.
Bei mir hat es "damals" geklappt...

Nachdem Valetudo (bei mir) aber nicht wirklich stabil lief bin ich wieder weg davon...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

swsmily

Ich hab es bei mir so gelöst, dass ich zwei Dummys angelegt habe. RoboKoordinaten_Valetudo und RoboKoordinaten_FHEM
Dazu ein DOIF:
defmod RoboKoordinaten_Umrechnen DOIF ([RoboKoordinaten_Valetudo])\
(\
{ my_makeFHEMcoordinates();; }\
)\


In dem sub my_makeFHEMcoordinates($) habe ich vor das   return $Result; folgende Zeile eingefügt:

fhem ("set RoboKoordinaten_FHEM $Result");


In FHEM setze ich dann den dummy RoboKoordinaten_Valetudo
set RoboKoordinaten_Valetudo 19939,24301,24629,27770
Damit kommt dann in den Dummy RoboKoordinaten_FHEM die richtigen Koordinaten. Mit meinen Koordinaten kommt dann [19939,23430,24629,26899,1].

Ich muss aber dazu sagen, es ist bei mir schon lange her, dass ich das eingerichtet habe. In wie weit sich da Valetudo unterdessen geändert hat, kann ich nicht beurteilen. Ich nutze unterdesen Valetudo RE und die Koordinaten im FHEM hab ich seit dem nicht mehr anpassen müssen.

gary822

#5
Ja über den Befehl { my_makeFHEMcoordinates("[2345,2215,2635,2510,1]") } rechnet er sie um aber das passt leider nicht.

Anbei noch mal ein Bild wo ich dabei rauskomme..
Bin jetzt in einer anderen Ecke.

@MadMax-FHEM was nutzt du jetzt aktuell?
Geht bei dir die Zonenreinigung?

@swsmily welche Version nutzt du da?

VG

MadMax-FHEM

Ganz normal "gerootete" FW.
Klar geht Zonenreinigung.

Koordinaten aus der Flole-App...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

swsmily

#7
Ich nutze wie schon gesagt bei mir Valetudo RE und es funktioniert super.
über [IP]/api/zones kann man sich die im Robo angelegten Zonen anzeigen lassen. Ich teste morgen mal, ob bei Valetudo RE die Umrechnung noch passt.


EDIT: Ich hab mal eine Testzone eingerichtet und die Koordinaten vergleichen mit denen bestehender Zonen. Ich würde sagen das passt. Testen kann ich es jetzt gerade leider nicht, da Frau und Kind bereits schlafen  ;)

gary822

also ich hab nochmal geschaut.
Wenn ich [IP]/api/zones aufrufe erhalte ich "Cannot GET /api/zones".

Ich nutze Valetudo Valetudo 2021.04.0.
Habe das gerade noch mal mit einer alten Version geprüft aber leider geht dabei meine Karte verloren und ich wollte den Staubi jetzt ungern einmal durchjagen :D

Es muss ja irgendeine Möglichkeit mit der Version Valetudo 2021.04.0 geben um das weiterhin umsetzen zu können.

VG

swsmily

Bedenke dass Valetudo und Valetudo RE nicht das wirklich gleiche sind  ;)
https://github.com/rand256/valetudo

Bei Valetudo RE gibt es [IP]/api/zones, bei Valetudo ist es etwas anders. Aber nach über einem Jahr mit RE kann ich dir leider nicht mehr sagen, wie da (bei Valetudo) die genaue Adresse ist.

Anfangs nutzte ich auch das "normale" Valetudo, hatte damit aber auch das Problem, dass der Robo alle paar Monate sich komplett auf Werkseinstellungen zurückgesetzt hatte. Er musste also komplett neu eingerichtet werden. Die komplett überarbeitete Version von Valetudo hatte ich aber nicht im Einsatz.

Mit Valetudo RE ist das auf Werkseinstellugen zurücksetzen nicht mehr passiert. Zudem hat RE noch die Möglichkeit einen Telegram-Bot zu nutzen. Damit könntest du von Unterwegs sogar über Telegram den Robo steuern.
Karten kann man auch über das Webinterface speichern. Wirklich getestet habe ich das aber auch nie, da er bisher die Karte nie gelöscht hat.

gary822

#10
Ich sag mal so wenn das mit dem Valetudo RE ähnlich funktioniert bzw. besser als mit dem Original Valetudo Flashe ich auch das auf meinen Roboter :)
Es wird ja ähnlich sein wie mit Valetudo (python3 flasher) und dann per SSH bzw. per Web.
Es dürfte sich ja dann seitens FHEM nur der Token ändern.

Ist dieser auch per Web sichtbar?

VG

EDIT:
Bzw. sehe ich gerade auf der Wiki Page von Valetudo RE das es auch eine Installation per DEB File gibt:
ZitatIf you have used a pre-rooted firmware that included Valetudo, you can skip this step and continue continue to "Installation complete".

This is the fastest way, you need to download a *.deb file and put it onto the device. After that just do SSH login as root and issue the dpkg -i /path/to/file.deb command. This will install the required files to correct places. Next you just need to restart the vacuum either by issuing reboot command or by physical button on the device.

Wenn ich das richtig rauslese müsste ich ja auch auf meiner aktuellen Firmware das RE einfach drüber bügeln und vorher Valetudo (orig.) deaktivieren und löschen können  :D

VG

MadMax-FHEM

Wenn du mit ssh drauf kommst, dann kannst du den Token auslesen und sogar deinen alten wieder setzen... :)

Vielleicht gebe ich Valetudo RE auch mal eine Chance.

Bin damals von Valetudo weg, weil auch mein Sauger sich einfach zurückgesetzt hatte... :-\

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

swsmily

Dass sich der Sauger zurück setzt ist soweit ich weiß auch mit der offiziellen Version von Valetudo geschichte.

Ich habe es jetzt gerade probiert, mit einer neuen Zone, die ich angelegt habe, mittels Skript umgerechnet und diese in FHEM gestartet. Die Zone hat genau auf der Karte gepasst.

gary822

Also mit dem Valetudo RE hab ich es jetzt hinbekommen.
Folgender Ablauf der Konfiguration:


  • ssh zu Staubsauger
  • cd /mnt/data
  • wget [Valetudo RE.deb]
  • dpkg -i [Valetudo RE.deb]
  • reboot
  • Reinigung starten
  • Warten
  • Zonen anlegen
  • aufrufen http://[IP Stausauger]/api/zones
  • ssh FHEM Server
  • vi /opt/fhem/FHEM/99_myUtils.pl
  • Code einfügen von https://forum.fhem.de/index.php/topic,101197.msg950759.html#msg950759
  • in FHEM reload 99_MyUtils
  • Koordinaten umrechnen mit { my_makeFHEMcoordinates("[2345,2215,2635,2510,1]") } und notieren
  • Definition des Xiaomi Devices anpassen

Die Original Koordinaten von Valetudo RE lauten
[{"name":"AZ","coordinates":[[18478,27022,19938,30790,1],[19932,28144,22973,30816,1]]},{"name":"SZ","coordinates":[[23477,27022,27360,30816,1]]},{"name":"Bad","coordinates":[[23375,22215,26378,25154,1]]},{"name":"Flur","coordinates":[[21998,22980,23279,26684,1],[23286,25224,26722,26735,1],[21960,26678,23024,27997,1],[20366,27022,21953,27985,1]]},{"name":"Komplett","coordinates":[[18440,22240,27347,30790,1]]}]
Die relevante Definition für meine Staubsauger ist nun
attr Staubi_OG webCmd state:zone
attr Staubi_OG webCmdLabel Statusänderung ;:Zonenreinigung
attr Staubi_OG widgetOverride state:charge,pause,reconnect,stop
attr Staubi_OG zone_names AZ:[18478,20410,19938,24178,1],[19932,20384,22973,23056,1] \
Bad:[23375,26046,26378,28985,1] \
Flur:[21998,24516,23279,28220,1],[23286,24465,26722,25976,1],[21960,23203,23024,24522,1],[20366,23215,21953,24178,1] \
Komplett:[18440,20410,27347,28960,1] \
SZ:[23477,20384,27360,24178,1]


Wichtig ist nur, dass man keine komplette Reinigung startet sondern eine Zone anlegt für die Komplettreinigung, da sich die Karte bei einer kompletten Reinigung zurücksetzt.

VG

MadMax-FHEM

Zitat von: gary822 am 30 April 2021, 12:18:25
Wichtig ist nur, dass man keine komplette Reinigung startet sondern eine Zone anlegt für die Komplettreinigung, da sich die Karte bei einer kompletten Reinigung zurücksetzt.

Gut vi kann man nat. nehmen... ;)
...man kann auch den fhem-Editor mit Syntax-highlightning nehmen -> Edit Files...

Man kann auch die Karten abspeichern und wieder laden...
...ist (denke ich) irgendwo in dem Thread wo auch der Umrechnungs-Aufruf drin ist zu finden oder dort weiter verlinkt...
(ich hab mir zu meinen Saugern mal alle aktuellen Karten abgespeichert)

Hmmm, da werde ich dem Valetudo dann doch noch mal ne Chance geben...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)