Sonntag, 7. Juni 2020

Worx Landroid per MQTT

Vor einem Jahr habe ich den neuen Mähroboter an FHEM angebunden. Nach einiger Zeit wurde mir irgendwie klar: Die Cloud Anbindung des Roboters läuft doch mit MQTT!?
Die Anbindung über zwei nodejs Services und ein FHEM Modul erschien mir ziemlich aufwendig:
 Cloud-MQTT - iobroker.worx - fhem-landroid-s - 74_LANDROID.pm
Ein Beitrag im Forum gab die entscheidenden Hinweise. Ich habe das ganze noch etwas weiter geführt und mich dabei auch mal etwas eingehender mit attrTemplate beschäftigt.

Vorbereitung

Zur Vorbereitung der Installation braucht man ein Tool um die Informationen für den Zugang zum Cloudserver zu bekommen.
  • Broker Server Adresse
  • Board ID z.B. bei den 2019 Modellen PRM100
  • Mac zwölf stellig
  • SSL Zertifikat AWS.p12
  • Eine neue Uuid -> kann einfach selbst erzeugt werden: 
    • cat /proc/sys/kernel/random/uuid 
    • oder im Browser hier .
Ich habe die Version V0.0.24 - Net.zip verwendet. Das Tool erfordert keine Installation. Man trägt einfach seinen Cloudzugang ein, nach der Verbindung zeigt das Tool die notwendigen Daten und das Zertifikat liegt im gleichen Pfad.
Das Zertifikat muss noch zerlegt werden, um es in FHEM mit MQTT2_CLIENT verwenden zu können.

Einrichtung

Mit scp kopiert man die Datei AWS.p12 auf den FHEM Server: 
scp "d:\Downloads\V0.0.24 - Net\AWS.p12" pi@raspib3:

Ab hier sind die Befehle für die FHEM Kommandozeile oder die Raw Definition aufbereitet!

Das Zertifikat muss zerlegt werden damit fhem die Dateien verwenden kann.
"openssl pkcs12 -in /home/pi/AWS.p12 -nokeys -passin pass: -out aws.cer -clcerts"
"openssl pkcs12 -in /home/pi/AWS.p12 -nodes -passin pass: -out aws.key -nocerts"
"chmod 0600 aws.*"
Die Template Datei kann man jederzeit aktualisieren ohne ein komplettes Update machen zu müssen. Nichtsdestotrotz muss FHEM halbwegs aktuell sein und attrTemplate funktioniert.
{ Svn_GetFile("FHEM/lib/AttrTemplate/mqtt2.template", "FHEM/lib/AttrTemplate/mqtt2.template", sub(){ AttrTemplate_Initialize() }) }
Jetzt in FHEM den Connector zum Broker herstellen und testen.
define MQTT_Worx MQTT2_CLIENT <broker-server-adresse>:8883
attr MQTT_Worx SSL 1
attr MQTT_Worx autocreate simple
{my $uuid=qx(cat /proc/sys/kernel/random/uuid);;fhem("attr MQTT_Worx clientId android-$uuid")}
attr MQTT_Worx keepaliveTimeout 600
attr MQTT_Worx mqttVersion 3.1.1
attr MQTT_Worx msgAfterConnect <BoardID>/<MAC>/commandIn {}
attr MQTT_Worx sslargs SSL_version:TLSv12 SSL_cert_file:aws.cer SSL_key_file:aws.key SSL_use_cert:1
attr MQTT_Worx subscriptions <BoardID>/<MAC>/commandOut
Hat man alles richtig gemacht, geht der state des Devices MQTT_Worx sofort auf opened.

Wechselt der Status hektisch zwischen opened und disconnected stimmt etwas mit dem Zertifikat nicht.

Die erste Übertragung sollte automatisch ein neues MQTT_DEVICE erstellen.

Auf dieses Device wird jetzt das Template angewendet und damit konfiguriert.
set MQTT2_.*:FILTER=IODev=MQTT_Worx attrTemplate worx_landroid
Die Readings und die Steuerung sind ähnlich das Moduls 74_LANDROID.pm
Problemlösung
Bleibt der Connector MQTT_Worx auf disconnected -> die Zertifikate prüfen:
{qx(ls -lha /opt/fhem/aws.*)}

Das Ergebnis sollte in etwa so aussehen:
-rw------- 1 fhem dialout 1.4K Jun  9 13:27 /opt/fhem/aws.cer
-rw------- 1 fhem dialout 1.8K Jun  9 13:27 /opt/fhem/aws.key/

Support

Es gibt dazu auch einen Beitrag im Forum.

9 Kommentare:

  1. Hallo,

    Dieses Thema interessiert mich bereits lange! Ist dies hiermit erledigt?

    Mit freundlichen Grüßen,
    Wajos

    AntwortenLöschen
    Antworten
    1. Hallo, naja erledigt - wann ist etwas schon erledigt. Aber derzeit fehlt mir nichts. Man kann sicher noch ein paar Dinge tun - hast Du Ideen?
      Gruß Otto

      Löschen
  2. Ich würde das gerne alles verstehen können. Wo kann ich mir Tipps zu dem Thema für absolute Einsteiger holen?

    LG Heinrich

    AntwortenLöschen
    Antworten
    1. Hallo Heinrich,
      es gibt auch einen Beitrag im Forum
      Dort kannst Du gern einfach Fragen stellen.

      Löschen
  3. Hallo Otto,
    danke für den Tipp, läuft sehr stabil und ich bin begeistert.

    AntwortenLöschen
  4. Vielen Dank, Otto!
    Es hat geklappt. Es gab bei mir Probleme, da die beiden Zertifikate aws.key und aws.cer im Ordner /home/pi erstellt wurden und noch in den Ordner opt/fhem kopiert werden mussten. Hat mich eine ganze Weile gekostet, dies herauszufinden. Jetzt bin ich verbunden. Danke!!

    AntwortenLöschen
    Antworten
    1. Die beiden openssl Befehle tun aber genau dies, wenn man sie nicht in der Linux Konsole, sondern wie beschrieben in der fhem Kommando Zeile eingibt. Dann wird im /home/pi Pfad gelesen und im /opt/fhem Pfad geschrieben.😃

      Löschen
  5. Hallo, bei mir funktioniert es aktuell nicht mehr. Geht es bei dir noch immer @otto?

    AntwortenLöschen
    Antworten
    1. Neine funktioniert leider nicht mehr. Die haben die Anmeldung komplett umgebaut. Ein Jungs im Forum sind am suchen, mal schauen ob die Erfolg haben.

      Löschen