MQTT2 für Worx Landroid Mähroboter

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

Vorheriges Thema - Nächstes Thema

huhu

Hallo Otto,

ich habe den pm2 Kram nun auch auf MQTT2_Client wie hier von Dir beschrieben umgesetzt.
Der Mäher steht auf opened, aber irgendwie kommen keine Readings? Habe ich noch etwas vergessen?

Das Template habe ich ebenfalls zugewiesen.

Viele Grüße

Ralli

Wirfst du hier gerade etwas durcheinander?

Den "pm2 Kram" braucht man nur, wenn man den Landroid mit der Methode von Alex Mohnen (nodejs) einbindet. Wenn du ihn mit der Methode von Otto (MQTT) einbindest, darfst du den "pm2 Kram" nicht installieren.
Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) 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

huhu

#77
Sorry, ich war noch nicht ganz fertig  ;D
pm2 habe ich komplett deinstalliert und den Mäher wie hier beschrieben als MQTT2 Client eingebunden. Soweit so gut, connect steht, aber keine Readings?

Ich meine ich habe das autocreate für devices global abgestellt, im MQTT2 Client ist es eingeschaltet mit Simple, könnte das ggfs die Ursache sein?

Ralli

Die kommen erst dann, wenn dein Mäher auch das erste mal nach dem Einrichten des FHEM-Devices Daten an die Cloud verschickt.
Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) 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

huhu

Sollte er nach 30min spätestens getan haben. Im Desktop Tool sehe ich auch neue Einträge im Log

Ralli

Dann können wir nur in die Glaskugel schauen oder Rätsel raten. Es sei denn, du machst mal ein List von deinem MQTT-Device und dem Client-Device und postest das hier. Wenn du das tust, kannst du die Client-ID und MAC anonymisieren.
Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) 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

huhu

Ausgabe des Devices:

Internals:
   BUF       
   CFGFN     
   DEF        a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883
   DeviceName a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883
   FD         52
   FUUID      607ff0f3-f33f-4c31-a873-xxxxxxxxxxxxxxx
   NAME       LandroidSB500
   NR         1275
   PARTIAL   
   SSL        1
   STATE      opened
   TYPE       MQTT2_CLIENT
   WBCallback
   clientId   android-xxxxxxxxx-xxxx-xxxx-xxxx-1xxxxxxxxx

   lastMsgTime 1618998774.59132
   nextOpenDelay 5
   READINGS:
     2021-04-21 11:31:37   state           opened
   sslargs:
     SSL_cert_file aws.cer
     SSL_key_file aws.key
     SSL_use_cert 1
     SSL_version TLSv12
Attributes:
   SSL        1
   autocreate simple
   clientId   android-xxxxxxxxx-xxxx-xxxx-xxxx-1xxxxxxxxx

   keepaliveTimeout 600
   mqttVersion 3.1.1
   msgAfterConnect DB510/F0Fxxxxxxxxx/commandIn {}
   room       16_Worx
   sslargs    SSL_version:TLSv12 SSL_cert_file:aws.cer SSL_key_file:aws.key SSL_use_cert:1
   subscriptions DB510/F0Fxxxxxxxxxx/commandOut



Im Eventmonitor habe ich diesen Hinweis gefunden:
2021-04-21 12:12:54 Global global UNDEFINED MQTT2_android_xxxxxxxxx-xxxx-xxxx-xxxx-1xxxxxxxxx_ MQTT2_DEVICE android_xxxxxxxxx-xxxx-xxxx-xxxx-1xxxxxxxxx_ LandroidSB500

fred_feuerstein

Das ist aber nur der Client.

Es fehlt noch das Device. Schau mal. Es sollte ein neuer "Raum" erstellt worden sein mit MQTT2_DEVICE.
Darin ist das neue Gerät.
Gruß, Fred

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

Ralli

Und wenn da nichts ist und mit dem Hinweis auf den Eintrag im Log ist wohl das eigentliche MQTT2_DEVICE nicht erstellt worden - vielleicht weil autocreate nicht active ist?

Normalerweise sollte nämlich ein Eintrag nach folgendem Schema im Log zu finden sein:


2021.04.18 08:51:30.906 2: autocreate: define MQTT2_android_xxxxxxxxx-xxxx-xxxx-xxxx-1xxxxxxxxx_ MQTT2_DEVICE android_xxxxxxxxx-xxxx-xxxx-xxxx-1xxxxxxxxx_ MQTT_Landroid
Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) 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

fred_feuerstein

Ich hätte da auch nochmal eine Frage.

Thema Mähzeiten setzen.

Also einen Befehl, um alle 7 Mähzeiten auf einmal zu setzen habe ich anhand von Seite 2 hier im Thread anlegen können. setmowtimes funktioniert damit.

Aber wie kann man bspw. einzeln nur für den Montag (also cfg_sc_d_2_1 / cfg_sc_d_2_2 / cfg_sc_d_2_3) die Werte setzen?
Gruß, Fred

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

Otto123

#85
Ist die Subscription richtig? Ich hatte damals aufgeschrieben MAC 12 stellig, ich zähle 13 Stellen, kann aber durchs anonymisieren passiert sein. Oben bei messageAfterConnect sind es 12 ;)
autocreate simple im MQTT2_CLIENT ist richtig! Nicht auf complex stellen!

Also das IO Device sieht gut aus. Mir scheint auch autocreate im System fehlt

@fred_feuerstein Du kannst sicher den kompletten Zeitstring bauen, ich habe es noch nicht gemacht. Wie schon gesagt, das Format wurde voriges Jahr geändert. Das Windows tool hat mir bei der Analyse etwas geholfen.
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

fred_feuerstein

#86
Beim Windows-Tool werden auch beim Ändern eines Tages dann alle Tage neu übergeben. Gut, das kann man natürlich auch machen. Ist dann im Doif ggfs. etwas aufwändiger, da die Werte aus den jeweils anderen Tagen ausgelesen und mit übergeben werden müssen.
Aber geht erstmal so.
Werde das so umsetzen. Ich trage die Mähzeiten ja nicht manuell ein, sondern die werden über den Google-Kalender befüttert.
Somit muss ich das ja nur einmal im Doif hinterlegen.

//edit: wobei ich schon auf Seite 2 gelesen habe, dass es ja Probleme mit Doif und den eckigen Klammern gibt... ok. mal sehen.
Also mit den Klammern ist scheinbar ein Problem beim DOIF, das Maskieren hat nicht wirklich funktioniert. Mal weiter probieren.



Aber hast Du eine Idee wegen dem BladeTimeCounter und TotalBladeTime? Im Moment sehe ich im MQTT2 nur die ToTalBladeTime (im standard templates ist das allerdings als BladeTimeCounter hinterlegt, was eigentlich falsch ist).
Gruß, Fred

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

EinEinfach

Warum bekomme ich im Log folgende Fehlemeldung:
2021.04.21 13:47:22 1: Error: >MQTT2_android_1c50dc08_7c30_4984_83da_94adcd1e6717_< has no TYPE, but following keys: ><
2021.04.21 13:48:40 3: MQTT2_DEVICE set DR.Rasenmaehroboter startMower
2021.04.21 13:48:52 1: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883 disconnected, waiting to reappear (LandroidAccount)
2021.04.21 13:48:52 1: a1optpg91s0ydf-ats.iot.eu-west-1.amazonaws.com:8883 reappeared (LandroidAccount)


Losgefahren ist er, aber danach wird der Logfile mit disconnected und reappeared zugemüllt.
fhem auf Intel NUC6CAYH mit Proxmox im LXC (Debian 10), KNX mit knxd über MDT SCN-IP000.02, Buderus GB192-15i über KM100, Solaredge WR SE9K über Modbus-TCP

Otto123

Zitat von: fred_feuerstein am 21 April 2021, 12:50:39
Aber hast Du eine Idee wegen dem BladeTimeCounter und TotalBladeTime? Im Moment sehe ich im MQTT2 nur die ToTalBladeTime (im standard templates ist das allerdings als BladeTimeCounter hinterlegt, was eigentlich falsch ist).
Ich meine, ich habe mich da mit den Werten und den Namen am Node Tool orientiert. Und Klingen Arbeitszeit ist in Minuten und steht in {"st" => {"b" => 16952}} Wo er bei mir 282 angezeigt hat, was hinkommt. Ein reset auf 0 ist aber im MQTT bei mir bisher nicht angekommen.  ::)
Die Zeit muss man mMn als komplettes Array übertragen - könnte aber sein, dass d und dd getrennt geht. Muss ich mal probieren.
    "sc":{"m":1,"distm":0,"ots":{"bc":0,"wtm":0},"p":0,"d":[
      ["00:00",0,0],
      ["00:00",0,0],
      ["00:00",0,0],
      ["00:00",0,0],
      ["00:00",0,0],
      ["00:00",0,0],
      ["00:00",0,0]],"dd":[
      ["00:00",0,0],
      ["00:00",0,0],
      ["00:00",0,0],
      ["00:00",0,0],
      ["00:00",0,0],
      ["00:00",0,0],
      ["00:00",0,0]]},


@EinEinfach Ich denke da stimmt noch etwas mit dem MQTT2_CLIENT Device nicht.
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

fred_feuerstein

also im Node kam bei mir der zurückgesetzt Klingenwert über bladeTimeCounter rein. Die komplette Mähzeit stand unter totalbladetime.
Das hatte so funktioniert, also auch mit dem Reset.
in MQTT2 finde ich als Zahlenwert nur den totalbladetime.
Ist jetzt nicht megadramatisch. Notfalls könnte man sich ja auch über einen Counter eine bspw. mtl. Mähzeit anlegen. Ist nur komisch, dass der Wert im Node vorhanden ist und hier scheinbar nicht.

Zu den Mähzeiten. Ich habe es nun so gemacht, dass ich Userreading erstellt habe, welches den erforderlichen String bildet und der kann dann über ein DOIF übergeben werden.

Das ist das Userreading:
userZeiten {sprintf('{"sc":{"d":[["%s",%s,%s],["%s",%s,%s],["%s",%s,%s],["%s",%s,%s],["%s",%s,%s],["%s",%s,%s],["%s",%s,%s]]}}',
ReadingsVal("$name","cfg_sc_d_1_1","Unknown"), ReadingsVal("$name","cfg_sc_d_1_2","Unknown"), ReadingsVal("$name","cfg_sc_d_1_3","Unknown"),
ReadingsVal("$name","cfg_sc_d_2_1","Unknown"), ReadingsVal("$name","cfg_sc_d_2_2","Unknown"), ReadingsVal("$name","cfg_sc_d_2_3","Unknown"),
ReadingsVal("$name","cfg_sc_d_3_1","Unknown"), ReadingsVal("$name","cfg_sc_d_3_2","Unknown"), ReadingsVal("$name","cfg_sc_d_3_3","Unknown"),
ReadingsVal("$name","cfg_sc_d_4_1","Unknown"), ReadingsVal("$name","cfg_sc_d_4_2","Unknown"), ReadingsVal("$name","cfg_sc_d_4_3","Unknown"),
ReadingsVal("$name","cfg_sc_d_5_1","Unknown"), ReadingsVal("$name","cfg_sc_d_5_2","Unknown"), ReadingsVal("$name","cfg_sc_d_5_3","Unknown"),
ReadingsVal("$name","cfg_sc_d_6_1","Unknown"), ReadingsVal("$name","cfg_sc_d_6_2","Unknown"), ReadingsVal("$name","cfg_sc_d_6_3","Unknown"),
ReadingsVal("$name","cfg_sc_d_7_1","Unknown"), ReadingsVal("$name","cfg_sc_d_7_2","Unknown"), ReadingsVal("$name","cfg_sc_d_7_3","Unknown"),
)},


und im Doif kann man dann eine gewünschte Zeit etc. für einen bestimmten Tag so setzen (hier als Beispiel der Montag):
((setreading ShaunDasSchaf cfg_sc_d_2_1 13:00), (setreading ShaunDasSchaf cfg_sc_d_2_2 180), (setreading ShaunDasSchaf cfg_sc_d_2_3 1), (set ShaunDasSchaf x_raw_payload [ShaunDasSchaf:userZeiten]))

Das funktioniert so erstmal für mich.
Gruß, Fred

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