Autor Thema: MQTT2 für Worx Landroid Mähroboter  (Gelesen 24069 mal)

Offline FosCo

  • New Member
  • *
  • Beiträge: 26
Antw:MQTT2 für Worx Landroid Mähroboter
« Antwort #300 am: 26 Juli 2021, 10:44:20 »
Hi Otto123,

da ja sonst meist nur gefragt und gemeckert wird, den Daumen hoch gibt's natürlich auch, aber nochmal so: DANKE!

Funzt auf Anhieb und ist genau das, was ich brauche.
Deutlich flexibler als ein ständig nachzupflegendes Modul!

Analog zu den hier (https://github.com/iobroker-community-adapters/ioBroker.worx/blob/65ecc586cc16b187fb3cb71f7fb3238503fc2989/main.js) gelisteten cmds und states, macht es vielleicht Sinn, diese mit aufzunehmen.
cmd=9 (SAFE HOMING=Rückfahrt ohne Messer) werde ich z.B. immer brauchen, wenn ich mit den Kindern rausgehe ;)

Wie kann ich einen pull Request auf das Template machen?

Erros, States & CMD are these:
const ERRORCODES = {
    0: 'No error',
    1: 'Trapped',
    2: 'Lifted',
    3: 'Wire missing',
    4: 'Outside wire',
    5: 'Raining',
    6: 'Close door to mow',
    7: 'Close door to go home',
    8: 'Blade motor blocked',
    9: 'Wheel motor blocked',
    10: 'Trapped timeout',
    11: 'Upside down',
    12: 'Battery low',
    13: 'Reverse wire',
    14: 'Charge error',
    15: 'Timeout finding home',
    16: 'Mower locked',
    17: 'Battery over temperature',
    18: 'dummy model',
    19: 'Battery trunk open timeout',
    20: 'wire sync',
    21: 'msg num'
};
const STATUSCODES = {
    0: 'IDLE',
    1: 'Home',
    2: 'Start sequence',
    3: 'Leaving home',
    4: 'Follow wire',
    5: 'Searching home',
    6: 'Searching wire',
    7: 'Mowing',
    8: 'Lifted',
    9: 'Trapped',
    10: 'Blade blocked',
    11: 'Debug',
    12: 'Remote control',
    13: 'escape from off limits',
    30: 'Going home',
    31: 'Zone training',
    32: 'Border Cut',
    33: 'Searching zone',
    34: 'Pause'
};
const COMMANDCODES = {
    1: 'Start',
    2: 'Stop',
    3: 'Home',
    4: 'Start Zone Taining',
    5: 'Lock',
    6: 'Unlock',
    7: 'Restart Robot',
    8: 'pause when follow wire',
    9: 'safe homing'
};

Edit:
userReadings ist dann folgendermaßen angepasst:
mowerActive:mowerActiveIndex:.* {my %activeState = (
 0 => "No",
 1 => "Yes",
 2 => "Party"
); $activeState{ReadingsVal($name,"mowerActiveIndex","0")}},
mowerStatusTxt:mowerStatusIndex.* {my %stateCodes = (
 0 => "Idle",
 1 => "Home",
 2 => "Start sequence",
 3 => "Leaving home",
 4 => "Follow wire",
 5 => "Searching home",
 6 => "Searching wire",
 7 => "Mowing",
 8 => "Lifted",
 9 => "Trapped",
 10 => "Blade blocked",
 11 => "Debug",
 12 => "Remote control",
 13 => "escape from off limits",
 30 => "Going home",
 31 => "Zone Training",
 32 => "Edge cutting",
 33 => "Searching zone",
 34 => "Pause"
); $stateCodes{ReadingsVal($name,"mowerStatusIndex","0")}},
mowerErrorTxt:mowerErrorIndex.* { my %errorCodes = (
 0 => "No error",
 1 => "Trapped",
 2 => "Lifted",
 3 => "Wire missing",
 4 => "Outside wire",
 5 => "Raining",
 6 => "Close door to mow",
 7 => "Close door to go home",
 8 => "Blade motor blocked",
 9 => "Wheel motor blocked",
 10 => "Trapped timeout",
 11 => "Upside down",
 12 => "Battery low",
 13 => "Reverse wire",
 14 => "Charge error",
 15 => "Timeout finding home",
 16 => "Mower locked",
 17 => "Battery temp out of range",
 18 => "dummy model",
 19 => "Battery trunk open timeout",
 20 => "wire sync",
 21 => "msg num"
); $errorCodes{ReadingsVal($name,"mowerErrorIndex","0")}}

Bei den Commands bin ich mit "Pause/Stop" im Gegensatz zu "Stop/Home" etwas durcheinandergekommen, da es auch einen "Pause when follow wire" zu geben scheint. Ich habe mir daher erlaubt, die Bezeichnungen anzugleichen, ich lasse mich da natürlich auch gerne überstimmen ;)

Achtung: cmd=9 geht wohl erst mit FW 3.25!

mowerRainDelay:slider,0,30,1440 $DEVICETOPIC/commandIn {"rd":$EVTPART1}
  mowerTimeCorrection:slider,-100,1,100 $DEVICETOPIC/commandIn {"sc":{"p":$EVTPART1}}
  startBorderCut:noArg $DEVICETOPIC/commandIn {"sc":{"ots":{"bc":1,"wtm":0}}}
  startOneTime:slider,10,10,720 $DEVICETOPIC/commandIn {"sc":{"ots":{"bc":0,"wtm":$EVTPART1}}}
  startMower:noArg $DEVICETOPIC/commandIn {"cmd":1}
  stopMower:noArg $DEVICETOPIC/commandIn {"cmd":2}
  sendMowerHome:noArg $DEVICETOPIC/commandIn {"cmd":3}
  startZoneTraining:noArg $DEVICETOPIC/commandIn {"cmd":4}
  lockMower:noArg $DEVICETOPIC/commandIn {"cmd":5}
  unlockMower:noArg $DEVICETOPIC/commandIn {"cmd":6}
  restartMower:noArg $DEVICETOPIC/commandIn {"cmd":7}
  pauseFollowWire:noArg $DEVICETOPIC/commandIn {"cmd":8}
  sendMowerHomeWithoutKnives:noArg $DEVICETOPIC/commandIn {"cmd":9}
  PartyTime:slider,0,10,2880 $DEVICETOPIC/commandIn {"sc":{"distm":$EVTPART1}}
  PartyMode:on,off { my %hash = ( 'on' => 2, 'off' => 1);qq($DEVICETOPIC/commandIn {"sc":{"m":$hash{$EVTPART1}}})}
  x_raw_payload:textField { my $payload = $EVENT;$payload =~ s/$EVTPART0 //g; qq($DEVICETOPIC/commandIn $payload)}

Danke und Grüße
Jonas
« Letzte Änderung: 26 Juli 2021, 10:57:02 von FosCo »
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 20195
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:MQTT2 für Worx Landroid Mähroboter
« Antwort #301 am: 26 Juli 2021, 11:34:55 »
Hallo Jonas,

Zitat
Wie kann ich einen pull Request auf das Template machen?
Naja eigentlich nur so wie Du es hier gemacht hast :)
Zitat
Deutlich flexibler als ein ständig nachzupflegendes Modul!
Finde ich auch! Und da reiche ich den Dank weiter an die Macher der MQTT2* und AttrTemplate Infrastruktur!👏👏👏

Ich installiere mir die neue Firmware, schau es mir an und baue es dann ins Template.

Danke für die Info und Zuarbeit.

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline FosCo

  • New Member
  • *
  • Beiträge: 26
Antw:MQTT2 für Worx Landroid Mähroboter
« Antwort #302 am: 26 Juli 2021, 11:49:22 »
Danke, dann hab ich ja alles richtig gemacht.

Testen kann ich es leider noch nicht, der Mäher steht aktuell noch neben dem Schreibtisch :D

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 20195
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:MQTT2 für Worx Landroid Mähroboter
« Antwort #303 am: 26 Juli 2021, 12:06:14 »
getestet: das funktioniert. Er akzeptiert per x_raw_payload {"cmd":9} und ich höre keine Messer laufen.

Auch mal wieder eine Funktion, die es per App gar nicht gibt?

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline FosCo

  • New Member
  • *
  • Beiträge: 26
Antw:MQTT2 für Worx Landroid Mähroboter
« Antwort #304 am: 26 Juli 2021, 17:12:06 »
So wurde es bei iobroker im Forum beschrieben 😉

Edit: Aber auch brandneu ab der 3.25, Link finde ich leider grade nicht, selbst das zweite Mal googlen war heute schwer, ein Hoch auf GitHub.

Da der Landi grade das neuste Spielzeug ist (danach folgt die Inbetriebnahme des opensprinkler), halte ich das Ohr aktuell an iobroker und Roboter Forum.

Viele Grüße und einen schönen Abend,
Jonas

« Letzte Änderung: 26 Juli 2021, 20:31:04 von FosCo »

Offline FosCo

  • New Member
  • *
  • Beiträge: 26
Antw:MQTT2 für Worx Landroid Mähroboter
« Antwort #305 am: 28 Juli 2021, 19:38:42 »
Genial, funktioniert perfekt mit temporärem Lautsprecher Kabel durch den halben Garten 😀

Offline remo

  • Full Member
  • ***
  • Beiträge: 184
Antw:MQTT2 für Worx Landroid Mähroboter
« Antwort #306 am: 28 Juli 2021, 21:23:56 »
Guten Abend,

schön zu sehen, dass es hierzu immerwieder Neuigkeiten gibt.
Bisher läuft bei mir auch alles tadellos.

Reicht es aus für das neue Template von Otto FHEM zu updaten und das Template neu auszuwählen?


Noch etwas zum Thema Regenverzögerung:

Das Reading dat_rain_s wechselt zwischen 1 und 0 bei Regen und !Regen.
Hat man einen externen Regensensor und der Landroid steht in einer Garage, könnte man dann das Reading nicht entsprechend abhängig vom externen Regensensor setzen?

Also soetwas wie:

notify Regensensor.on -> set Landroid dat_rain_s 1

Oder präziser:

Lässt sich dieses Reading gezielt (manuell oder automatisch) manipulieren, sodass der Landroid das mitbekommt und automatisch in die Regenverzögerung geht?

Ich schreibe lieber ein paar Zeilen Code, statt ein Loch in die Garage zu bohren  :)


Schönen Abend.
« Letzte Änderung: 28 Juli 2021, 21:41:04 von remo »
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 20195
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:MQTT2 für Worx Landroid Mähroboter
« Antwort #307 am: 28 Juli 2021, 22:01:08 »
Hi remo,

einfach ins Reading schreiben bringt nichts. Man müsste dann den Wert schon per mqtt zum Mower übertragen. Aber es würde mich wundern wenn er das zulässt. Es ist immerhin ein Wert vom internen Sensor, den würd ich mir nicht von außen manipulieren lassen.
Aber Du kannst ja die interne Regenverzögerung ausschalten und den Mower für die Zeit des Regens in die Party Pause schicken?

Gruß Otto
« Letzte Änderung: 28 Juli 2021, 23:10:02 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline remo

  • Full Member
  • ***
  • Beiträge: 184
Antw:MQTT2 für Worx Landroid Mähroboter
« Antwort #308 am: 28 Juli 2021, 22:15:08 »
Hallo Otto.

Dankeschön für deine Antwort.
Das habe ich mir schon fast gedacht.
Wäre auch zu einfach gewesen.

Du meinst sicherlich den Party-Modus?!
So habe ich es bisher auch getan:
if Regen: stopMower + PartyMode on
if !Regen: PartyMode off (+ startMower)

Bringt aber leider auch einen Nachteil:
Wenn der Party-Modus zuvor von Hand aktiviert wurde, deaktiviert dieser sich wieder wenn irgendwann ein Regen vorbei  ist. Angenommen ich schicke den Landroid für eine Woche in den Party-Modus. Nach zwei Tagen regnet es für einen Tag, dann ist am dritten Tag der Party-Modus wieder deaktiviert..


dat_rain_cnt

Zeigt übrigens die Restzeit für die Regenverzögerung in Minuten an.
Aber dieses Reading ist wahrscheinlich auch read-only?!

Sonst könnte man bei Regen den cfg_rd auslesen und entsprechend in dat_rain_cnt setzten…


EDIT:
Vielleicht ist mowerTimeCorrection ein Ansatz…
« Letzte Änderung: 28 Juli 2021, 22:50:51 von remo »

Offline frober

  • Hero Member
  • *****
  • Beiträge: 1061
  • Was man nicht kann, kann man lernen...
Antw:MQTT2 für Worx Landroid Mähroboter
« Antwort #309 am: 29 Juli 2021, 06:05:47 »
Hallo Otto.

Dankeschön für deine Antwort.
Das habe ich mir schon fast gedacht.
Wäre auch zu einfach gewesen.

Du meinst sicherlich den Party-Modus?!
So habe ich es bisher auch getan:
if Regen: stopMower + PartyMode on
if !Regen: PartyMode off (+ startMower)

Bringt aber leider auch einen Nachteil:
Wenn der Party-Modus zuvor von Hand aktiviert wurde, deaktiviert dieser sich wieder wenn irgendwann ein Regen vorbei  ist. Angenommen ich schicke den Landroid für eine Woche in den Party-Modus. Nach zwei Tagen regnet es für einen Tag, dann ist am dritten Tag der Party-Modus wieder deaktiviert..


dat_rain_cnt

Zeigt übrigens die Restzeit für die Regenverzögerung in Minuten an.
Aber dieses Reading ist wahrscheinlich auch read-only?!

Sonst könnte man bei Regen den cfg_rd auslesen und entsprechend in dat_rain_cnt setzten…


EDIT:
Vielleicht ist mowerTimeCorrection ein Ansatz…

Das kannst du doch "abfangen"...

Als Bsp. in deiner Kurzschreibweise...
Dummy d_PartyMode on/off
notify d_PartyMode.on set Mower PartyMode
if !Regen & !d_PartyMode: PartyMode off (+ startMower)



Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

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

Offline hanswerner1

  • Full Member
  • ***
  • Beiträge: 349
Antw:MQTT2 für Worx Landroid Mähroboter
« Antwort #310 am: 29 Juli 2021, 06:44:21 »

EDIT:
Vielleicht ist mowerTimeCorrection ein Ansatz…

Ich mache das mit dem externen Regensensor über mowerTimeCorrection und das funtioniert gut.

([ESPEasy_WeMos_02_wetter:Regen_Landroid] eq "on")
(set Worx_Landroid_M500 mowerTimeCorrection -100)

DOELSEIF
([ESPEasy_WeMos_02_wetter:Regen_Landroid] eq "off")
(set Worx_Landroid_M500 mowerTimeCorrection 0)

Im Regensensor habe ich bei "off" eine 2h Zeitverzögerung damit der Rasen auch abtrocknen kann.


Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 20195
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:MQTT2 für Worx Landroid Mähroboter
« Antwort #311 am: 29 Juli 2021, 13:30:20 »
Reicht es aus für das neue Template von Otto FHEM zu updaten und das Template neu auszuwählen?
Hatt ich vergessen: ich habe noch kein neues Template gemacht.
Das mit dem Template updaten ist so eine Sache:
Das Template macht eine Grundeinrichtung. Jede persönliche Anpassung und uU auch Readings gehen bei einer erneuten Anwendung verloren. So ein Template ist mMn nicht unbedingt update geeignet.

Ich würde immer schauen und normalerweise die Neuigkeit/Anpassung im Device per Hand nachpflegen.

Ansonsten kann man aber die Templates unabhängig vom FHEM update holen.
Ich versuche bei meinen Templates die eine Utils Datei im Hintergrund haben, die Updates und Bugfixes in die Utils Datei zu verlegen. Die Datei müsste man in jedem Fall direkt holen, weil der contrib Ordner durchs FHEM update nicht aktualisiert wird.
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline remo

  • Full Member
  • ***
  • Beiträge: 184
Antw:MQTT2 für Worx Landroid Mähroboter
« Antwort #312 am: 29 Juli 2021, 20:13:31 »
@hanswerner1:
So dachte ich mir das auch.
Habe auch einen ESPEasy.
Werde da mal etwas basteln und würde gerne noch die interne Verzögerung mit einfließen lassen, bevor die Time Correction wieder zurück gesetzt wird.
Ich mach mich mal ran wenn die Zeit (irgendwann) mal wieder etwas lockerer sitzt  ;)

@Otto:
Stimmt. Hab es von Hand eingepflegt. Hat keine 5 Minuten gedauert. Alles sauber.
Und ohne Messer nach Hause schicken klappt super.
Vielen Dank für dein tolles Template übrigens  :-*

Gruß
 remo
« Letzte Änderung: 29 Juli 2021, 20:15:27 von remo »

Offline frober

  • Hero Member
  • *****
  • Beiträge: 1061
  • Was man nicht kann, kann man lernen...
Antw:MQTT2 für Worx Landroid Mähroboter
« Antwort #313 am: 27 August 2021, 22:44:07 »
Kann es sein, dass der MQTT2-Server/Device um die 150x am Tag den AWS-Server kontaktiert?

Ich habe wieder Probleme, dass Fhem und die App bzgl. Mähzone nicht synchron sind und das Kantenmähen wird wieder nicht mehr angezeigt.

Laut Support kontaktiert meine "Fremdsoftware" um die 150x den Server und ab 150 gibt es eine 24h Sperre.

Den Broker hatte ich nie installiert....
Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

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

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 20195
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:MQTT2 für Worx Landroid Mähroboter
« Antwort #314 am: 27 August 2021, 23:11:32 »
Hi,

der MQTT2 Server spielt keine Rolle, die Verbindung macht ja der MQTT2_Client :)

Ich weiß nicht was mit kontaktieren gemeint ist, der Verbindungsaufbau wird ja im LogFile geloggt. Bei mir ist das ca. einer am Tag. Ansonsten dürften ja die meisten MQTT Nachrichten vom Mäher kommen.

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

 

decade-submarginal