Worx Landroid via FHEM und MQTT via LoxBerry an den Loxone Miniserver anbinden

Mittlerweile gibt es zur Anbindung auch ein LoxBerry Plugin: Worx Landroid Mährobotor

Hier möchte ich mal beschreiben, wie man einen Worx Landroid Mähroboter an Loxone anbinden kann und dabei den LoxBerry mit den FHEM und MQTT Plugins verwendet.

Für welche Geräte funktioniert das?

Ich selbst verwende einen Worx Landroid M700 (WR142E) mit Firmware 3.23.1

Vorbereitung

Zuerst empfehle ich, sich mal auf der Worx Landroid Seite anzumelden, um den eigenen registrierten Mäher zu suchen.

Hier kann man die verwendete Firmware sowie die Kopplung zur Cloud überprüfen: https://account.worxlandroid.com/login

Das sieht dann etwa so aus:

Schritt-für-Schritt-Anleitung

Bitte bei der Eingabe von Kommandos auf dem Prompt achten. # ist root und $ der normale Benutzer - im Standard "loxberry".

  1. Als ersten Schritt installiert man in der LoxBerry Plugin-Verwaltung das MQTT Gateway Plugin.

    https://www.loxwiki.eu/display/LOXBERRY/MQTT+Gateway

  2. Dann das FHEM Plugin nach dem selben Schema.

    https://www.loxwiki.eu/display/LOXBERRY/Fhem

  3. FHEM für MQTT konfigurieren:

    Folgende Kommandos oben in der Zeile neben dem [+] beim FHEM Plugin eingeben:

    Das Plugin erreicht man über http://loxberry/admin/plugins/fhem/ ⇒ Fhem aufrufen (Desktop) anklicken.

    Dein MQTT Passwort findest du im MQTT Plugin hinter dem Feld wo die Secure PIN einzugeben ist:
    http://loxberry/admin/plugins/mqttgateway/index.cgi


    1. define lb_mosquitto MQTT loxberry:1883 loxberry <deinMQTTPasswort>
      define mqttGeneric MQTT_GENERIC_BRIDGE
      attr mqttGeneric IODev lb_mosquitto
      attr mqttGeneric globalDefaults sub:qos=2 pub:qos=0 retain=1
      attr mqttGeneric globalPublish *:topic={"fhem/$device/$reading"}

      Weitere Details hier: https://www.loxwiki.eu/display/LOXBERRY/MQTT+Gateway+-+Alle+FHEM-Readings+weitergeben


  4. MQTT Gerät in FHEM erstellen

    define SYS_MQTT MQTT_DEVICE
    attr SYS_MQTT alias MQTT-Command
    attr SYS_MQTT userattr subscribeReading_cmnd
    attr SYS_MQTT subscribeReading_cmnd /fhem/cmnd
    define n_SYS_MQTT_cmnd notify SYS_MQTT:cmnd:.* {}

    Im SYS_MQTT:cmnd auf DEF und dann diesen Code einfügen und auf modify n_SYS_MQTT_cmnd klicken:

    SYS_MQTT:cmnd:.* {
    if ($EVENT =~ qr/.*?: (.*)/p) {
    my $cmnd = $1;
    Log3($NAME, 5, "executed mqtt command: " . $cmnd);
    fhem($cmnd);
    }
    }


    Dann links oben "Save config" anklicken.

    Weitere Details https://www.loxwiki.eu/pages/viewpage.action?pageId=70353530

  5. Nun den FHEM "Landroid-S Adapter" und den "ioBroker.worx" installieren

    Auf dem LoxBerry per SSH (z.B. mit Putty) anmelden und folgende Kommandos eingeben:

    $ cd /opt
    $ su

    Root Passwort vom LoxBerry eingeben

    # mkdir /opt/landroid
    # cd /opt/landroid
    # git clone https://github.com/axelmohnen/fhem-landroid-s.git
    # cd fhem-landroid-s
    # npm install iobroker.worx
    # cp 74_LANDROID.pm /opt/fhem/FHEM

    Da ich Probleme mit einer veralteten Version hatte, habe ich das Modul nochmal aktualisieren müssen:
    # git clone ''%%https://github.com/iobroker-community-adapters/ioBroker.worx.git%%'' /opt/landroid/fhem-landroid-s/node_modules/iobroker.worx

    Die Rechte anpassen - der <LOGIN-USER> ist im Auslieferungszustand "loxberry" daraus ergibt sich:
    # chown -R loxberry /opt/landroid
    # chown fhem:dialout /opt/fhem/FHEM/74_LANDROID.pm

    Jetzt muss noch die Landroid Adapter Konfiguration in /opt/landroid/fhem-landroid-s/ angepasst werden (Worx Login Daten)
    # nano LandroidConf.json

    -eMail Addresse für mower1 anpassen

    -Password für mower1 anpassen 

    -Strg o zum Speichern drücken und dann Enter. Sowie Strg x zum Beenden des Editors.

    Bei mehreren Mähern entsprechend mower2 usw. auch anpassen.

    Testweise das Node Script aufrufen:

    # node LandroidSrv.js mower1

    Abbrechen kann man das wieder mit Strg c

  6. Installation des Perl JSON Moduls

    # apt-get install libjson-pp-perl

  7. FHEM fertig konfigurieren

    Wieder folgende Kommandos oben im FHEM Plugin in der Zeile neben dem [+] eingeben:
    shutdown restart
    define robbi LANDROID localhost
    "Save config" klicken
    Das Attribut “disable” auf 0 stellen (Default = 1)
    Das geht unten bei Attributes - disable auswählen und links daneben auf attr klicken
    Wer will, kann links unten bei Icon noch im Filter nach mower suchen und sich das Symbol auswählen.
    "Save config" klicken

  8. Prozess Manager installieren

    # npm install pm2 -g

    Jetzt die entsprechenden Landroid Server im Hintergrund für jeden Mäher starten

    Achtung, nicht als root sondern loxberry user!
    $ pm2 start /opt/landroid/fhem-landroid-s/LandroidSrv.js -f -- mower1

    Prüfen des Prozess Managers - der Landroid Server muss im Status "online" sein, bevor es weiter geht.

    $ pm2 list

    $ pm2 show LandroidSrv kann man auch eingeben, wenn man mehr Details sehen möchte.

    Nun folgt das Start/Boot Management

    $ pm2 startup

    Das am Ende ausgegebene Kommando kopieren - es sollte in etwa so aussehen:
    env PATH=$''%%PATH:/usr/bin%%'' /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u loxberry --hp /opt/loxberry

    Nun wieder als root anmelden und das kopierte Kommando einfügen und ausführen:

    # env PATH=$''%%PATH:/usr/bin%%'' /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u loxberry --hp /opt/loxberry

    Wieder von root abmelden und somit wieder der loxberry User werden, speichern und den LoxBerry neu starten (Neustart auch via Web-Oberfläche ok):
    # exit
    $ pm2 save
    $ sudo shutdown -r now

    Wenn die LandroidSrv.js aktualisiert wird, muss der Prozess neu gestartet werden (oder man bootet den LoxBerry mal durch)

    $ pm2 restart /opt/landroid/fhem-landroid-s/LandroidSrv.js -f -- mower1

  9. Einstellungen im MQTT

    Ich verwende folgende HTTP Virtual Inputs vom MQTT:
    fhem_robbi_batteryChargeCycle
    fhem_robbi_batteryCharging
    fhem_robbi_batteryLevel
    fhem_robbi_batteryTemperature
    fhem_robbi_batteryVoltage
    fhem_robbi_lastSetCommandMsg
    fhem_robbi_mowerError
    fhem_robbi_mowerStatus
    fhem_robbi_mowerStatusTxt
    fhem_robbi_totalBladeTime
    fhem_robbi_totalDistance
    fhem_robbi_wifiQuality

    Alle anderen fhem_robbi_* habe ich im MQTT Plugin auf "Do not forward" gesetzt.
    Dazu den Haken "Show details and advanced settings" anklicken.
    Siehe unter Incoming overview > HTTP Virtual Inputs.

  10. Einstellungen in der Loxone Config

    In der Loxone Config sind nun Virtuelle Eingänge zu erstellen um darüber die Daten vom Mäher zu erhalten.
    Achtung! Es handelt sich um unterschiedliche Typen. 
    fhem_robbi_mowerStatusTxt und fhem_robbi_lastSetCommandMsg haben den Typ Virtueller Texteingang. Alle anderen sind vom Typ Virtueller Eingang.


Die Eingänge müssen genauso heißen, wie im MQTT Plugin zu sehen.
Wenn sie dort im Plugin nach dem Speichern in den Miniserver grün sind, wenn Daten angefallen sind, funktioniert alles korrekt.
Ist der Name vom Eingang falsch oder der Eingang nicht vorhanden, kommt ein Error 404.


Der abgehende Weg zum Mäher erfolgt über das Objekt "Virtueller Ausgang":

In den 3 Befehlen werden die FHEM Kommandos übergeben.

Ich verwende derzeit diese:
Mäher - Pause+Start:
Befehl bei EIN: /fhem/cmnd set robbi pauseMower
Befehl bei AUS: /fhem/cmnd set robbi startMower
Als Digitalausgang verwenden: Ja

Mäher - Start+Stop
Befehl bei EIN: /fhem/cmnd set robbi startMower
Befehl bei AUS: /fhem/cmnd set robbi stopMower
Als Digitalausgang verwenden: Ja

Mäher - Messer getauscht
Befehl bei EIN: /fhem/cmnd set robbi resetBladeTimeCounter
Als Digitalausgang verwenden: Ja

Beispieleinbindung

Worx Landroid.zip ab Version 12.0.2.24

svg_icons.zip - Diese werden in die images.zip im web Ordner auf dem Miniserver mit hinein kopiert.

Diese Zeilen werden mit einem Editor an den entsprechenden Stellen in die Loxone Projektdatei kopiert. (IconCat und IconState)
Danach kann man die Projektdatei in der Loxone Config öffnen und die Symbole zuordnen. (Werden aber in der Loxone Config nicht dargestellt)

Symboldefinition Quelle erweitern

              <C Type="IconCat" V="145" U="00000000-0000-0042-2000000000000000" Title="Batterie mit Blitz"     WF="16384" Ix="1001"/>
                <C Type="IconCat" V="145" U="00000000-0000-0043-2000000000000000" Title="Batterie mit 3 Pfeilen" WF="16384" Ix="1002"/>
                <C Type="IconCat" V="145" U="00000000-0000-0044-2000000000000000" Title="Landroid Mower"         WF="16384" Ix="1003"/>
                <C Type="IconCat" V="145" U="00000000-0000-003f-2000000000000000" Title="Wegstrecke"             WF="16384" Ix="1004"/>
                <C Type="IconCat" V="145" U="00000000-0000-0040-2000000000000000" Title="Klinge"                 WF="16384" Ix="1005"/>
                <C Type="IconCat" V="145" U="00000000-0000-0041-2000000000000000" Title="Wifi"                   WF="16384" Ix="1006"/>
 
                <C Type="IconState" V="145" U="00000000-0001-0f1a-2200000000000000" Title="Batterie 00-01 Prozent"  WF="16384" Ix="2001"/>
                <C Type="IconState" V="145" U="00000000-0105-0f1b-2200000000000000" Title="Batterie 01-05 Prozent"  WF="16384" Ix="2002"/>
                <C Type="IconState" V="145" U="00000000-0610-0f1c-2200000000000000" Title="Batterie 06-10 Prozent"  WF="16384" Ix="2003"/>
                <C Type="IconState" V="145" U="00000000-1115-0f1d-2200000000000000" Title="Batterie 11-15 Prozent"  WF="16384" Ix="2004"/>
                <C Type="IconState" V="145" U="00000000-1620-0f1e-2200000000000000" Title="Batterie 16-20 Prozent"  WF="16384" Ix="2005"/>
                <C Type="IconState" V="145" U="00000000-2125-0f1f-2200000000000000" Title="Batterie 21-25 Prozent"  WF="16384" Ix="2006"/>
                <C Type="IconState" V="145" U="00000000-2630-0f20-2200000000000000" Title="Batterie 26-30 Prozent"  WF="16384" Ix="2007"/>
                <C Type="IconState" V="145" U="00000000-3135-0f21-2200000000000000" Title="Batterie 31-35 Prozent"  WF="16384" Ix="2008"/>
                <C Type="IconState" V="145" U="00000000-3640-0f22-2200000000000000" Title="Batterie 36-40 Prozent"  WF="16384" Ix="2009"/>
                <C Type="IconState" V="145" U="00000000-4145-0f23-2200000000000000" Title="Batterie 41-45 Prozent"  WF="16384" Ix="2010"/>
                <C Type="IconState" V="145" U="00000000-4650-0f24-2200000000000000" Title="Batterie 46-50 Prozent"  WF="16384" Ix="2011"/>
                <C Type="IconState" V="145" U="00000000-5155-0f25-2200000000000000" Title="Batterie 51-55 Prozent"  WF="16384" Ix="2012"/>
                <C Type="IconState" V="145" U="00000000-5660-0f26-2200000000000000" Title="Batterie 56-60 Prozent"  WF="16384" Ix="2013"/>
                <C Type="IconState" V="145" U="00000000-6165-0f27-2200000000000000" Title="Batterie 61-65 Prozent"  WF="16384" Ix="2014"/>
                <C Type="IconState" V="145" U="00000000-6670-0f28-2200000000000000" Title="Batterie 66-70 Prozent"  WF="16384" Ix="2015"/>
                <C Type="IconState" V="145" U="00000000-7175-0f29-2200000000000000" Title="Batterie 71-75 Prozent"  WF="16384" Ix="2016"/>
                <C Type="IconState" V="145" U="00000000-7680-0f2a-2200000000000000" Title="Batterie 76-80 Prozent"  WF="16384" Ix="2017"/>
                <C Type="IconState" V="145" U="00000000-8185-0f2b-2200000000000000" Title="Batterie 81-85 Prozent"  WF="16384" Ix="2018"/>
                <C Type="IconState" V="145" U="00000000-8690-0f2c-2200000000000000" Title="Batterie 86-90 Prozent"  WF="16384" Ix="2019"/>
                <C Type="IconState" V="145" U="00000000-9195-0f2d-2200000000000000" Title="Batterie 91-95 Prozent"  WF="16384" Ix="2020"/>
                <C Type="IconState" V="145" U="00000000-9699-0f2e-2200000000000000" Title="Batterie 96-100 Prozent" WF="16384" Ix="2021"/>
 

Die Symbole sind nach Austausch der images.zip auf dem Miniserver erst nach einem Neustart des Miniservers sichtbar. 
Weitere Infos siehe https://loxwiki.atlassian.net/wiki/x/cwCwWg