MQTT2 für Worx Landroid Mähroboter

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

Vorheriges Thema - Nächstes Thema

frober

@Otto: Da nun auch Kress und Landxcape, bei Ferrex bin ich nicht sicher (DeskApp hat es nicht implementiert) funktioniert.

Erster Post anpassen oder Wiki?

Was meinst du?
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...

fred_feuerstein

Zitat von: frober am 18 April 2023, 17:52:54@fred_feuerstein und @efyzz
Testet mal die alte Version im Anhang. Auf die Rechte beim Kopieren achten und Neustart.

Zeile 59 ersetzten durch: $m2c->{autocreate} = $autocreate?1:0; und Neustart funktioniert auch bei mir. Client davor gelöscht und neu angelegt (zum Testen).

Habe die Version getestet. Vorher sowohl das Haupt-Device und das Mäher-Device gelöscht. Die Änderung im Skript gemacht und dann Neustart.
Dann wieder erstellt.

define MQTT_Worx MQTT2_CLIENT xyzblablubb-ats.iot.eu-west-1.amazonaws.com:8883
attr MQTT_Worx username a@bc.de
attr MQTT_Worx connectFn {use LandroidUtils;;Landroid_connect($NAME,"worx",1)}
set MQTT_Worx password mySecret

Das Mäher-Device wurde dann automatisch angelegt. Das Haupt-Device steht auf disconnected. Mit der Utils-Version aus dem FHEM Update wurde dann trotzdem zyklisch das Mäher-Device upgedated. Allerdings nur mit folgenden Readings:
battery_charge_cycles
battery_charge_cycles_reset
battery_charge_cycles_reset_at
blade_work_time
blade_work_time_reset
blade_work_time_reset_at
capabilities_1
capabilities_2
capabilities_3
capabilities_4
capabilities_5
capabilities_6
capabilities_7
city_country_id
city_created_at
city_id
city_latitude
city_longitude
city_name
city_updated_at
created_at
diagnostic
distance_covered
features_chassis
features_display_type
features_input_type
features_lock
features_mqtt
features_multi_zone
features_multi_zone_percentage
features_multi_zone_zones
features_rain_delay
features_unrestricted_mowing_time
features_wifi_pairing
firmware_auto_upgrade
firmware_version
id
improvement
iot_registered
lawn_size
locked
mac_address
mower_work_time
mqtt_endpoint
mqtt_registered
mqtt_topics_command_in
mqtt_topics_command_out
name
online
product_id
protocol
purchased_at
push_notifications
push_notifications_level
registered_at
serial_number
setup_location_latitude
setup_location_longitude
test
time_zone
updated_at
user_id
uuid
warranty_expires_at
warranty_registered

Es fehlen hier also nach wie vor die benötigen Status Readings: über die Batterie, Aktueller Status vom Mäher, etc.

Für mich also erstmal kein Unterschied zu erkennen, zwischen der Version aus dem Update und der "älteren" von Dir angehängten Version.

Was hast Du denn für Readings im Mäher-Device? Die aus meiner Liste oben und welche weiteren noch?
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)

rudolfkoenig

Hab jetzt relativ viel ungebaut, einiges getestet, und eine neue Version von LandroidUtils.pm eingecheckt.
Gelernt: ein refresh_token scheint viele Stunden (15+) lang gueltig zu sein.

Die neue Version verwendet den access_token (wenn noch gueltig), sonst refresh_token (falls vorhanden), sonst username/passwort. Es wird kein MQTT disconnect initiiert, sondern auf dem MQTT-Server gewartet. Danach wird sofort ein reconnect versucht, wenn das nicht klappt, dann jeweils alle nextOpenDelay (180 Sekunden) noch eins, bis maxFailedConnects (20) erreicht ist.
Auch in Problemfaellen wie falsches Username oder Backend-Probleme wird die 180-Sekunden Schleife angewendet

Getestet:
- login ohne gespeicherte Daten
- login mit gueltigen access_token
- login mit ungueltigen access_token
- login mit ungueltigen refresh token
- falscher username
- mqtt-server disconnect

Was ich nicht getestet habe: Probleme im Amazon-Backend, insb. wenn Auth und HTTP da ist, aber der MQTT-Server nicht.

Lesbares debugging bekommt man mit "attr MQTT2_Worx verbose 4".
Die Aufruf-Syntax hat sich nicht geaendert.

frober

Zitat von: fred_feuerstein am 18 April 2023, 20:00:43Habe die Version getestet. Vorher sowohl das Haupt-Device und das Mäher-Device gelöscht. Die Änderung im Skript gemacht und dann Neustart.
Dann wieder erstellt.
Sorry, war wohl missverständlich. Entweder Zeile ändern oder alte Version.

Hast du noch ein set .. connect gemacht?


ZitatWas hast Du denn für Readings im Mäher-Device? Die aus meiner Liste oben und welche weiteren noch?

Ich bekomme die gewohnten Readings.

Probiere die neue Version von Rudi...
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...

Ralli

2023.04.18 21:05:26.208 1: ERROR evaluating my $NAME=   $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}: Attempt to reload LandroidUtils.pm aborted.
Gruß,
Ralli

Proxmox 9 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250824) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

rudolfkoenig

Ich bin gewohnt, dass in der naechsten Zeile im FHEM-Log die Begruendung fuer diese Fehlermeldung steht.

Ralli

Entschuldige Rudi, darunter stand lediglich noch

Compilation failed in require at (eval 3966) line 1.
BEGIN failed--compilation aborted at (eval 3966) line 1.

Tatsächlich hatte ich aber übersehen, dass beim Start von FHEM bereits einige Einträge im Log waren:

2023.04.18 21:04:37.599 1: PERL WARNING: Bareword found where operator expected at FHEM/LandroidUtils.pm line 13, near ""X-UA-Compatible" content"
2023.04.18 21:04:37.599 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.599 1: PERL WARNING:    (Missing operator before content?)
2023.04.18 21:04:37.599 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.599 1: PERL WARNING: Bareword found where operator expected at FHEM/LandroidUtils.pm line 16, near ")
        window"
2023.04.18 21:04:37.599 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.599 1: PERL WARNING:    (Missing operator before window?)
2023.04.18 21:04:37.599 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.599 1: PERL WARNING: Bareword found where operator expected at FHEM/LandroidUtils.pm line 20, near ""search"  href"
2023.04.18 21:04:37.599 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.599 1: PERL WARNING:    (Missing operator before href?)
2023.04.18 21:04:37.599 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.599 1: PERL WARNING: Bareword found where operator expected at FHEM/LandroidUtils.pm line 39, near "jQuery"
2023.04.18 21:04:37.599 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.599 1: PERL WARNING:    (Missing semicolon on previous line?)
2023.04.18 21:04:37.599 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.600 1: PERL WARNING: String found where operator expected at FHEM/LandroidUtils.pm line 40, near "$(".trac-autofocus""
2023.04.18 21:04:37.600 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.600 1: PERL WARNING:    (Missing operator before ".trac-autofocus"?)
2023.04.18 21:04:37.600 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.600 1: PERL WARNING: String found where operator expected at FHEM/LandroidUtils.pm line 41, near "$(".trac-target-new""
2023.04.18 21:04:37.600 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.600 1: PERL WARNING:    (Missing operator before ".trac-target-new"?)
2023.04.18 21:04:37.600 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.600 1: PERL WARNING: Bareword found where operator expected at FHEM/LandroidUtils.pm line 42, near "$.ui"
2023.04.18 21:04:37.600 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.600 1: PERL WARNING:    (Missing operator before ui?)
2023.04.18 21:04:37.600 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.600 1: PERL WARNING: String found where operator expected at FHEM/LandroidUtils.pm line 43, near "$(".trac-datepicker:not([readonly])""
2023.04.18 21:04:37.600 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.600 1: PERL WARNING:    (Missing operator before ".trac-datepicker:not([readonly])"?)
2023.04.18 21:04:37.600 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.600 1: PERL WARNING: Bareword found where operator expected at FHEM/LandroidUtils.pm line 45, near "// Input"
2023.04.18 21:04:37.600 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.600 1: PERL WARNING:    (Missing operator before Input?)
2023.04.18 21:04:37.600 3: eval: my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}
2023.04.18 21:04:37.600 1: ERROR evaluating my $NAME=  $evalSpecials->{'%NAME'};{use LandroidUtils;;;;Landroid_connect($NAME,"worx",1)}: Can't modify glob in predecrement (--) at FHEM/LandroidUtils.pm line 7, near "<"
Unknown regexp modifier "/t" at FHEM/LandroidUtils.pm line 8, at end of line
Unknown regexp modifier "/t" at FHEM/LandroidUtils.pm line 8, at end of line
Unknown regexp modifier "/e" at FHEM/LandroidUtils.pm line 8, at end of line
syntax error at FHEM/LandroidUtils.pm line 13, near ""X-UA-Compatible" content"
Not enough arguments for link at FHEM/LandroidUtils.pm line 20, near ""search"  href"
syntax error at FHEM/LandroidUtils.pm line 20, near ""search"  href"
syntax error at FHEM/LandroidUtils.pm line 41, near "$(".trac-target-new""
syntax error at FHEM/LandroidUtils.pm line 42, near "$.ui"
syntax error at FHEM/LandroidUtils.pm line 45, near "// Input current "
FHEM/LandroidUtils.pm has too many errors.
Compilation failed in require at (eval 631) line 1.
BEGIN failed--compilation aborted at (eval 631) line 1.
Gruß,
Ralli

Proxmox 9 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250824) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

frober

#592
 @Rudi, beim ersten Start hatte ich Disco:
2023.04.18 21:11:49 3: iot.eu-west-1.worxlandroid.com:443 reappeared (MQTT2_Worx)
2023.04.18 21:11:49 3: iot.eu-west-1.worxlandroid.com:443 disconnected, waiting to reappear (MQTT2_Worx)
2023.04.18 21:11:50 3: iot.eu-west-1.worxlandroid.com:443 reappeared (MQTT2_Worx)
2023.04.18 21:11:50 3: iot.eu-west-1.worxlandroid.com:443 disconnected, waiting to reappear (MQTT2_Worx)
2023.04.18 21:11:51 3: iot.eu-west-1.worxlandroid.com:443 reappeared (MQTT2_Worx)
2023.04.18 21:11:51 3: iot.eu-west-1.worxlandroid.com:443 disconnected, waiting to reappear (MQTT2_Worx)
2023.04.18 21:11:52 3: iot.eu-west-1.worxlandroid.com:443 reappeared (MQTT2_Worx)
2023.04.18 21:11:53 3: iot.eu-west-1.worxlandroid.com:443 disconnected, waiting to reappear (MQTT2_Worx)
2023.04.18 21:11:53 3: iot.eu-west-1.worxlandroid.com:443 reappeared (MQTT2_Worx)
2023.04.18 21:11:54 3: iot.eu-west-1.worxlandroid.com:443 disconnected, waiting to reappear (MQTT2_Worx)
2023.04.18 21:11:54 3: iot.eu-west-1.worxlandroid.com:443 reappeared (MQTT2_Worx)
2023.04.18 21:11:55 3: iot.eu-west-1.worxlandroid.com:443 disconnected, waiting to reappear (MQTT2_Worx)
2023.04.18 21:11:56 3: iot.eu-west-1.worxlandroid.com:443 reappeared (MQTT2_Worx)
2023.04.18 21:11:56 3: iot.eu-west-1.worxlandroid.com:443 disconnected, waiting to reappear (MQTT2_Worx)
2023.04.18 21:11:57 3: iot.eu-west-1.worxlandroid.com:443 reappeared (MQTT2_Worx)
2023.04.18 21:11:57 3: iot.eu-west-1.worxlandroid.com:443 disconnected, waiting to reappear (MQTT2_Worx)
2023.04.18 21:11:58 3: iot.eu-west-1.worxlandroid.com:443 reappeared (MQTT2_Worx)
2023.04.18 21:11:58 3: iot.eu-west-1.worxlandroid.com:443 disconnected, waiting to reappear (MQTT2_Worx)
2023.04.18 21:11:59 3: iot.eu-west-1.worxlandroid.com:443 reappeared (MQTT2_Worx)
2023.04.18 21:11:59 3: iot.eu-west-1.worxlandroid.com:443 disconnected, waiting to reappear (MQTT2_Worx)

Nach einem disable/enable lief es stabil, auch nach einem erneuten Neustart.

Fazit: läuft erstmal...
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...

Ralli

Ich habe das File neu heruntergeladen und in meine FHEM-Installation geschoben.

Nun klappt's. Scheinbar war der Download korrupt. :o
Gruß,
Ralli

Proxmox 9 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250824) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

frober

#594
@Rudi, Disco bekomme ich anscheinend wg. autocreate 0.
Während des connects kann ich von 1 auf 0 ohne Auswirkung, wenn ich dann aber z.B. nextOpenDelay ändere fängt es wieder an.

Nachtrag: 
Mein Device ist umbenannt, wg. Logging und sonstigen Abhängigkeiten. Mit autocreate wird, obwohl vorhanden, ein weiteres Device neu angelegt.
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...

fred_feuerstein

#595
Eine neue Version der LandroidUtils.pm bekomme ich nicht übers Update. Die letzte ist vom 14.04.
Kann mir jemand die neue Version mal anhängen?

//edit: jetzt ist eine neue im Update gewesen von heute 7.45 Uhr - hat Rudi scheinbar gerade noch was dran gemacht :)

Werde also mal probieren.

//edit2: habe testweise mich mal online anmelden wollen. Dort kommt der Hinweis, dass ich scheinbar temporär gesperrt bin. Mal schauen. Wahrscheinlich geht es dann erst wieder morgen weiter...
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 19 April 2023, 07:43:34Eine neue Version der LandroidUtils.pm bekomme ich nicht übers Update. Die letzte ist vom 14.04.
Kann mir jemand die neue Version mal anhängen?

//edit: jetzt ist eine neue im Update gewesen von heute 7.45 Uhr - hat Rudi scheinbar gerade noch was dran gemacht :)

Werde also mal probieren.

Die neue Versionen kommen immer erst am nächsten Tag, morgens um 7 Uhr(?).
Direkt kann man sie aus dem SVN beziehen.
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...

frober

#597
Hallo Rudi,

autocreate 0 macht Probleme. Auch beim nachträglichen Setzen.
Edit: evtl. hängt es damit zusammen, dass ich mein Device umbenannt habe, ich habe auch keine "Mowerdaten" in diesem Device.

Bei mir hat es heute Nacht zugeschlagen, bin nun erstmal komplett gesperrt...auch die AndroidApp usw.

Ich habe nun auch eine 403 forbidden als HTML im Log.
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

#598
Moin,
ich habe gerade nochmal ein Update gemacht, den Clienten wieder enabled und connect ausgeführt. Funktioniert immer noch nicht, obwohl ich jetzt über 30h gewartet habe. In der Log steht auch nichts Neues drin.

2023.04.19 08:34:36 4: MQTT_Worx: Got device info
2023.04.19 08:34:36 5: MQTT_Worx: discarding DISCONNECT (224)(0)
2023.04.19 08:34:36 5: HttpUtils url=https://iot.eu-west-1.worxlandroid.com:443/ NonBlocking via https
2023.04.19 08:34:36 4: IP: iot.eu-west-1.worxlandroid.com -> 34.250.240.209

Zitat von: fred_feuerstein am 19 April 2023, 07:43:34//edit2: habe testweise mich mal online anmelden wollen. Dort kommt der Hinweis, dass ich scheinbar temporär gesperrt bin. Mal schauen. Wahrscheinlich geht es dann erst wieder morgen weiter...

Wie genau machst du das? Wenn ich mich bei eu.worx.com einlogge, kann ich dort nur meine persönlichen Daten einsehen/ändern, sonst nichts.
RaspberryPi3B, Bookworm Lite
Homematic Funkmodul HM-MOD-RPI-PCB
------------------------------------------------------------------------
Ich bin kein Programmierer ... aber ich weiß, auf welcher Seite der Lötkolben heiß ist.

Ralli

Zitat von: frober am 19 April 2023, 08:12:45Ich habe nun auch eine 403 forbidden als HTML im Log.

Dafür klappt's jetzt bei mir 8) . Das ist schon ein Kreuz mit dem Worx-Zeug >:( .
Gruß,
Ralli

Proxmox 9 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250824) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa