MQTT2 für Worx Landroid Mähroboter

Begonnen von Otto123, 09 Juni 2020, 13:55:43

Vorheriges Thema - Nächstes Thema

mabula

Hallo Rudi,
Als ich das Modul 70_VIERA.pm für die verschlüsselte Verbindung geändert habe, brauchte ich Variable die restart überleben. Ich war und bin nicht so eingefuchst in FHEM, die einzige Lösung dir mir half war "setKeyValue" und "getKeyValue". Also zB. die Valiable $ENCRYPTION mit

setKeyValue("$ENCRYPTION", xyz)

gesichert und nach restart mit

getKeyValue("$ENCRYPTION")

wieder ausgelesen.
Jemand hatte 2 TVs (define TV1 Viera ... und define TV2 Viera ...) und setKeyValue hatte die unterschiedlichen Werte in den selben Speicherplatz geschrieben/überschrieben. Nach Modulspezifischer Namensergänzung war alles ok. Also diese Zeilen verwendet:

setKeyValue("$nom.ENCRYPTION", XYZ) und getKeyValue("$nom.ENCRYPTION")

Damit waren die Speicherplätze Modul spezifisch eindeutig.

Das mit global verbose 5 ist nun klar, nur zwischen den Ereignissen.


Gruß
Hans-Jörg
FHEM auf RPI mit FS20, Homematic, ELERO, Zigbee, Eigenbau z.B. Heizölsensor auf Basis Arduino, Anemometer; Sprachsteuerung offline über vosk/Python

rudolfkoenig

Bin nicht sicher, dass ich dein Beispiel verstehe, keine Ahnung, was $ENCRYPTION enthaelt.
ENCRYPTION (ohne $) ist natuerlich ein Problem.

Im Fall vom MQTT2_CLIENT ist die Ergaenzug der Schluessel (z.Zt. Name der Instanz) mit dem Typ ueberfluessig, da der Name einer Instanz in FHEM (z.Bsp MQTT_Worx) eindeutig ist.

Will sagen: ich sehe noch nicht, wann die aktuelle Implementierung zu einem Problem fuehrt.

frober

#662
Premiere erfolgreich  8)

Ein ersten "Entwurf", Feinheiten fehlen noch...
https://wiki.fhem.de/wiki/Mähroboter:_Worx_Landroid,_Kress,_Landxcape

...gefundene Fehler dürfen behalten werden, Verbesserungen sind erwünscht.  ;D

Edit: Link aktualisiert
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

efyzz

Moin,

um das Dist-Upgrade auf meinem Raspberry zu vermeiden bzw. noch etwas hinauszuzögern, habe ich jetzt mal ein zweites FHEM auf meinem NAS (Debian Buster) installiert. Und siehe da: die Anbindung an den Landroid war in 5min erledigt :)

Ich weiß, es ist gefuscht ... Aber kann mir jemand einen Tipp geben, wie ich die Daten jetzt vom NAS-FHEM zum Raspi-FHEM kriege? Ideal wäre ja, wenn nur der MQTT-Client auf dem NAS läuft und auf dem Raspi dann das Mower-Device liegt. Oder muss ich unbedingt FHEM2FHEM benutzen?

Auf jeden Fall auch nochmal von mir ein dickes DANKE bis hierher :)
RaspberryPi3B, Bookworm Lite
Homematic Funkmodul HM-MOD-RPI-PCB
------------------------------------------------------------------------
Ich bin kein Programmierer ... aber ich weiß, auf welcher Seite der Lötkolben heiß ist.

frober

Zitat von: efyzz am 23 April 2023, 20:15:09Moin,

um das Dist-Upgrade auf meinem Raspberry zu vermeiden bzw. noch etwas hinauszuzögern, habe ich jetzt mal ein zweites FHEM auf meinem NAS (Debian Buster) installiert. Und siehe da: die Anbindung an den Landroid war in 5min erledigt :)

Ich weiß, es ist gefuscht ... Aber kann mir jemand einen Tipp geben, wie ich die Daten jetzt vom NAS-FHEM zum Raspi-FHEM kriege? Ideal wäre ja, wenn nur der MQTT-Client auf dem NAS läuft und auf dem Raspi dann das Mower-Device liegt. Oder muss ich unbedingt FHEM2FHEM benutzen?

Auf jeden Fall auch nochmal von mir ein dickes DANKE bis hierher :)

MQTT_GENERIC_BRIDGE schon einmal angeschaut? Hab's aber selbst noch nicht benutzt...
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

mabula

#665
Beide TVs sind im System noch nicht definiert.
TV1 benötigt eine verschlüsselte Kommunikation. also wird bei der Initialisierung $ENCRYPTION="yes" gesetzt und mit
setKeyValue("ENCRYPTION", $ENCRYPTION)
gesichert. Nach einem restart wird bei der Initialisierung geschaut, ob $ENCRYPTION bereits gesetzt ist und die vorhandenen Schlüssel verwendet werden können. Also wird mit
$ENCRYPTION=getKeyValue("ENCRYPTION")
der Wert ausgelesen und sollte "yes" sein. Wird danach der TV2, der keine verschlüsselte Kommunikation kann, initialisiert, wird in diesem Modul $ENCRYPTION="no" gesetzt und wie oben gesichert.
Nach einem restart wird bei der Initialisierung des TV1 nicht mehr $ENCRYPTION="yes", wie es richtig wäre, sondern
$ENCRYPTION=getKeyValue("ENCRYPTION") => "no" ausgelesen. Der Wert des Modul TV1 wird durch Modul TV2 überschrieben. Deshalb die Modulspezifischen Namen.
Ein fehlendes $ Zeichen sehe ich nicht. Nur die Namen der Speicherplätze werden mit $nom ergänzt. ENCRYPTION => $nom.ENCRYPTION

Sorry: Der Name in GertKeyValue und setKeyValue war natürlich "ENCRYPTION" und nicht "$ENCRYPTION"
FHEM auf RPI mit FS20, Homematic, ELERO, Zigbee, Eigenbau z.B. Heizölsensor auf Basis Arduino, Anemometer; Sprachsteuerung offline über vosk/Python

fred_feuerstein

#666
Zitat von: frober am 23 April 2023, 19:48:53Premiere erfolgreich  8)

Ein ersten "Entwurf", Feinheiten fehlen noch...
https://wiki.fhem.de/wiki/Mähroboter:_Works,_Kress,_Landxcape

...gefundene Fehler dürfen behalten werden, Verbesserungen sind erwünscht.  ;D

Ja, super! Danke.

Habe nur einen kleinen Fehler gefunden ;)

Du schreibst in der Überschrift:
ZitatMähroboter: Works, Kress, Landxcape

Ich würde "Worx" schreiben und ggfs. noch in Klammern (Landroid), also so:
Mähroboter: Worx (Landroid), Kress, Landxcape

Ansonsten sind die wichtigen Sachen enthalten.

:)

Gruß, Fred

NEU: FHEM auf Raspberry PI 5, OS: Bookworm, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp) und knapp 300 Devices aller Art
ALT: FHEM auf Raspberry PI 3B+ im 7Zoll TouchDisplay Gehäuse, OS: Bullseye, mit Z-Wave RaZberry-Modul, 868CUL (WMBUS), LaCrosseCUL (Temp)

frober

Zitat von: fred_feuerstein am 24 April 2023, 09:54:21
Zitat von: frober am 23 April 2023, 19:48:53Premiere erfolgreich  8)

Ein ersten "Entwurf", Feinheiten fehlen noch...
https://wiki.fhem.de/wiki/Mähroboter:_Works,_Kress,_Landxcape

...gefundene Fehler dürfen behalten werden, Verbesserungen sind erwünscht.  ;D

Ja, super! Danke.

Habe nur einen kleinen Fehler gefunden ;)

Du schreibst in der Überschrift:
ZitatMähroboter: Works, Kress, Landxcape

Ich würde "Worx" schreiben und ggfs. noch in Klammern (Landroid), also so:
Mähroboter: Worx (Landroid), Kress, Landxcape

Ansonsten sind die wichtigen Sachen enthalten.

:)



F*** ausgerechnet in der Überschrift (Url).

Danke für den Hinweis, damit ändert sich auch der Link. Werde es heute Abend korrigieren...
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

Mumpitz

Zitat von: mabula am 23 April 2023, 13:52:31In der "Garage" funktioniert der im Landroid eingebaute Regensensor nicht wirklich. Und es gibt im Landroid nur eine fest einstellbare Regenpause. Die neuen Möglichkeiten haben den Erfindergeist geweckt und ich wollte die Pause abhängig von der Regenmenge einstellen. Sumpfigen Rasen mäht er nicht wirklich gut. Der Parameter "cfg_sc_distm" pausiert den programmierten Zeitplan um die eingetragenen Minuten und der Wert wird im Landroid selbst runter gezählt. Das reading dieses Werts wird wie oben beschrieben alle 5 - 7 Minuten aktualisiert.
Wenn der Zugang wieder frei ist, kann ich das stacktrace zum Test einfügen, ein global verbose 5 wird bei den vielen Geräten wuchtig.

Hey Mabula
Dein Voting hat mich angesprochen. Ist zwar etwas OffTopic hier..
Mein Worx M500 steht ebenfalls in einer Garage und kommt daher nicht mit, ob es regnet oder nicht. Sprich ich würde grundsätzlich gerne den automatischen Zeitplan deaktivieren, selber einen bauen und diesen dann mittels fhem an den Worx übermitteln.
Dazu habe ich mir einen ganz einfachen, dummen, Regenmelder mit einer in der nähe befindlichen Wetterstation gebaut. Ich möchte diesen nun gerne etwas pimpen und je nach Regenmenge und anzahl zurückliegender Regentage intelligenter Steuern. Ich habe bei meinem Garten, zu mindest in einem Teil das Problem, dass es dort relativ lange feucht bleibt. Wenn der Worx zu früh rausfährt, sieht der Rasen dort wie ein frisch angesähtes Maisfeld aus :-)

Was hast du noch für Ideen für eine smarte Steuerung?

mabula

@ Mumpitz
das hört sich nach vielen Stunden Verzögerung an. Dafür würde ich zum Party Mode raten. Der count down von cfg_sc_distm ist evtl. instabil, da laufend vom Server Push Nachrichten kommen. Trotzdem anbei die beiden Befehle:
setList PartyMode:on,off { my %hash = ( 'on' => 2, 'off' => 1);; qq(PRM100/98F4AB02DF3C/commandIn {"sc":{"m":$hash{$EVTPART1}}})}\
        setraindelay:textField { my $payload = $EVENT;;;;$payload =~ s/$EVTPART0 //g;;;; qq(PRM100/98F4AB02DF3C/commandIn {"sc":{"distm":$payload}})}
FHEM auf RPI mit FS20, Homematic, ELERO, Zigbee, Eigenbau z.B. Heizölsensor auf Basis Arduino, Anemometer; Sprachsteuerung offline über vosk/Python

frober

Wiki ist korrigiert und noch etwas überarbeitet.
https://wiki.fhem.de/wiki/Mähroboter:_Worx_Landroid,_Kress,_Landxcape
Vorherigen Post habe ich aktualisiert.

Es darf gerne gegengelesen und bearbeitet werden...


@Otto, diesen Link kannst du im ersten Post erwähnen, die alte Beschreibung ist obsolet.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

mabula

Ich habe versucht den Fehlerfall "maxFailedConnects" mit stacktrace und verbose 5 zu wiederholen. Der Test lief 6 Stunden, leider trat kein Fehler auf. Allerdings war meine Beobachtung, dass diesmal das update Intervall der readings bis über eine Stunde verlängert wurde. Wurden Parameter im Server durch die Sperre verändert?
FHEM auf RPI mit FS20, Homematic, ELERO, Zigbee, Eigenbau z.B. Heizölsensor auf Basis Arduino, Anemometer; Sprachsteuerung offline über vosk/Python

Otto123

Zitat von: frober am 24 April 2023, 18:59:03@Otto, diesen Link kannst du im ersten Post erwähnen, die alte Beschreibung ist obsolet.
Danke Dir, habe ich gemacht.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

frober

Zitat von: mabula am 24 April 2023, 20:18:47Ich habe versucht den Fehlerfall "maxFailedConnects" mit stacktrace und verbose 5 zu wiederholen. Der Test lief 6 Stunden, leider trat kein Fehler auf. Allerdings war meine Beobachtung, dass diesmal das update Intervall der readings bis über eine Stunde verlängert wurde. Wurden Parameter im Server durch die Sperre verändert?

Durch die Sperre sollte es keine Veränderung geben, zumindest habe ich das bei mir bisher nicht beobachtet.

Welche Readings meinst du genau?
Die von der API kommen nur ~stündlich. Die vom Mäher (MQTT) kommen individuell, sofern der Mäher nicht "schläft".
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

mabula

ZitatWelche Readings meinst du genau?
Es geht um cfg_sc_distm. Ich will das gespeicherte Mähprogramm für zB. 5 Stunden aussetzen. Also cfg_sc_distm auf 300 gesetzt. Dabei werden alle Daten mit cfg_* und dat_* aktualisiert. Nach 8 Minuten wurde das erste mal aktualisiert, wieder alle cfg_* und dat_* und cfg_sc_dist = 292. Nach weiteren 38 Minuten erfolgte die nächste Aktualisierung aller oberen Daten cfg_sc_distm = 254. Dann nach weiteren 12 Minuten cfg_sc_distm = 242, usw. Das Intervall scheint zufällig zu sein.
FHEM auf RPI mit FS20, Homematic, ELERO, Zigbee, Eigenbau z.B. Heizölsensor auf Basis Arduino, Anemometer; Sprachsteuerung offline über vosk/Python