Worx Landroid Anbindung ohne IOBroker möglich?

Begonnen von iceman, 05 April 2019, 11:37:45

Vorheriges Thema - Nächstes Thema

Jasimo

Zitat von: WumpE am 15 April 2020, 12:57:52
für alle die es interessiert, hier mal mein DEFMOD

defmod MQTT_Landroid MQTT2_DEVICE
attr MQTT_Landroid DbLogExclude .*
attr MQTT_Landroid IODev MQTT_Worx
attr MQTT_Landroid jsonMap dat_rsi:announceWifiQuality\
dat_fw:announceFirmware\
dat_mac:announceMacAddress\
cfg_sn:announceSerialNumber\
cfg_tm:lastUpdateTime\
cfg_dt:lastUpdateDate\
dat_dmp_1:directionPitch\
dat_dmp_2:directionRoll\
dat_dmp_3:directionYaw\
dat_bt_t:batteryTemperature\
dat_bt_v:batteryVoltage\
dat_bt_p:batteryLevel\
dat_bt_nr:batteryChargeCycle\
dat_bt_c:batteryCharging\
dat_st_b:totalBladeTime\
dat_st_d:totalDistance\
dat_st_wt:totalTime\
dat_le:mowerErrorIndex\
dat_ls:mowerStatusIndex\
dat_lk:mowerLockState\
cfg_rd:mowerRainDelay\
cfg_sc_m:mowerActiveIndex\
cfg_sc_p:mowerTimeCorrection\
cfg_mz_1:areasArea1\
cfg_mz_2:areasArea2\
cfg_mz_3:areasArea3\
cfg_mz_4:areasArea4\
cfg_mzv_1:areasAreaAct1\
cfg_mzv_2:areasAreaAct2\
cfg_mzv_3:areasAreaAct3\
cfg_mzv_4:areasAreaAct4\
cfg_mzv_5:areasAreaAct5\
cfg_mzv_6:areasAreaAct6\
cfg_mzv_7:areasAreaAct7\
cfg_mzv_8:areasAreaAct8\
cfg_mzv_9:areasAreaAct9\
dat_lz:areasAreaActIndex\
cfg_sc_d_1_1:calendarWeekday0StartTime\
cfg_sc_d_1_2:calendarWeekday0WorkTime\
cfg_sc_d_1_3:calendarWeekday0BorderCut\
cfg_sc_d_2_1:calendarWeekday1StartTime\
cfg_sc_d_2_2:calendarWeekday1WorkTime\
cfg_sc_d_2_3:calendarWeekday1BorderCut\
cfg_sc_d_3_1:calendarWeekday2StartTime\
cfg_sc_d_3_2:calendarWeekday2WorkTime\
cfg_sc_d_3_3:calendarWeekday2BorderCut\
cfg_sc_d_4_1:calendarWeekday3StartTime\
cfg_sc_d_4_2:calendarWeekday3WorkTime\
cfg_sc_d_4_3:calendarWeekday3BorderCut\
cfg_sc_d_5_1:calendarWeekday4StartTime\
cfg_sc_d_5_2:calendarWeekday4WorkTime\
cfg_sc_d_5_3:calendarWeekday4BorderCut\
cfg_sc_d_6_1:calendarWeekday5StartTime\
cfg_sc_d_6_2:calendarWeekday5WorkTime\
cfg_sc_d_6_3:calendarWeekday5BorderCut\
cfg_sc_d_7_1:calendarWeekday6StartTime\
cfg_sc_d_7_2:calendarWeekday6WorkTime\
cfg_sc_d_7_3:calendarWeekday6BorderCut
attr MQTT_Landroid readingList DB510/F0FEAAAAAAAA/commandOut:.* { json2nameValue($EVENT, '', $JSONMAP) }
attr MQTT_Landroid setList mowerRainDelay:slider,0,30,1440 DB510/F0FEAAAAAAAA/commandIn {"rd":$EVTPART1}\
mowerTimeCorrection:slider,-100,1,100 DB510/F0FEAAAAAAAA/commandIn {"sc":$EVTPART1}\
startMower:noArg DB510/F0FEAAAAAAAA/commandIn {"cmd":1}\
pauseMower:noArg DB510/F0FEAAAAAAAA/commandIn {"cmd":2}\
stopMower:noArg DB510/F0FEAAAAAAAA/commandIn {"cmd":3}
attr MQTT_Landroid userReadings mowerActive {\
       my $return = (ReadingsVal($name,"mowerActiveIndex","0") eq 1 )? "true" : "false" ;;;;\
      $return \
},\
mowerStatusTxt {\
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",\
30 => "Going home",\
31 => "Zone Training",\
32 => "Edge cutting",\
33 => "Searching zone",\
34 => "Pause"\
);;;;\
\
        $stateCodes{ReadingsVal($name,"mowerStatusIndex","0")}\
},\
mowerState {\
       my $status = ReadingsVal($name,"mowerStatusIndex","0");;;;\
       my $error = ReadingsVal($name,"mowerErrorIndex","0");;;;\
       my $return = "";;;;\
\
      if (($status eq 7 || $status eq 9) && $error eq 0) {\
           $return = "true";;;;\
      }else{\
           $return = "false";;;;\
      }\
\
      $return \
},\
mowerErrorTxt {\
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"\
);;;;\
\
        $errorCodes{ReadingsVal($name,"mowerErrorIndex","0")}\
}

Moin,

hab das von Dir übernommen und auf meinen Landroid angepasst (Model und MAC), eine Sache klappt zumindest bei mir nicht, das setzen von mowerTimeCorrection, kannst Du nochmal gucken?

Gruß
Jan

Jasimo

#16
noch ungetestet, aber zumindest "scheint" es so nun bei mir zu klappen mit dem "mowerTimeCorrection"
attr MQTT_Landroid setList
mowerRainDelay:slider,0,30,1440 DB504/<MAC>/commandIn {"rd":$EVTPART1}\
mowerTimeCorrection:slider,-100,1,100 DB504/<MAC>/commandIn {"sc":{"p":$EVTPART1}}\
startMower:noArg DB504/<MAC>/commandIn {"cmd":1}\
pauseMower:noArg DB504/<MAC>/commandIn {"cmd":2}\
stopMower:noArg DB504/<MAC>/commandIn {"cmd":3}

eldrik

Hallo zusammen,

wie habt ihr das pollen realisiert?

Mein MQTT Status aktualisiert sich bisher nur wenn ich in der iOS Desktop app "aktualisiere" oder in der FHEM Verbindung zum Amazon Broker ein publish <BOARDID>/<ROVERMAC>/commandIn {} absetze.

Von sich aus schickt der Mäher keine Updates zu Amazon?

Greetz
Eldrik

Jasimo

Komisch, bei mir klappt das alles ohne das ich eingreifen muss.


Gesendet von iPhone mit Tapatalk Pro

Otto123

Hallo Leute,

Danke für die Ideen,
irgendwie haben wir den Ersteller und den Ideengeber für MQTT verloren?
Ich habe mal, mit dem was ich hier gefunden (und verstanden) habe, ein attrTemplate gebastelt. Wenn das mal noch einer testen will? Ich würde, wenn das für gut befunden wird, einen neuen Thread im MQTT Board eröffnen - oder der TE verschiebt das Thema dorthin? dann könnten "wir" (Beta-USer :)) das Template offiziell verteilen.

Bis dahin zum Test auf auf meiner "Spielwiese" - in der Raw Def mal folgendes machen:
"wget -qO ./FHEM/lib/AttrTemplate/ottos.template https://raw.githubusercontent.com/heinz-otto/scripts/master/fhem/worx.template"
sleep 5;{ AttrTemplate_Initialize() }

Dann ein Test Device anlegen (das funktioniert einwandfrei parallel)
define MQTT_MowerTest MQTT2_DEVICE
attr MQTT_MowerTest IODev MQTT_Worx
attr MQTT_MowerTest room Mower

Entweder gibt man noch diese Zeile(n) dazu NACHDEM man die echten Werte ersetzt hat:
attr MQTT_MowerTest readingList <BoardID>/<MAC>/commandOut:.* { json2nameValue($EVENT,'',$JSONMAP) }
set MQTT_MowerTest attrTemplate worx_landroid

Oder man wählt gleich im neu entstandenen MQTT_MowerTest das attrTemplate worx_landroid aus und drückt set.
Falls die Zeile fehlt wird man nach der BoardID und MAC gefragt.

Der CloudService liefert bei mir alle 10 minuten von selbst Updates, liegt das an der Einstellung im IO (MQTT_Worx)? -> keepaliveTimeout 600

Gruß Otto
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

eldrik

Moin Otto,

ich habe deine Beschreibung testhalber einmal durchgeführt und keine Probleme festgestellt, lediglich bei der TimeCorrection gab es scheinbar eine Änderung, die dein Template nicht aufgegriffen hat, ob diese Änderung soweit das tut was sie soll habe ich selber nicht getestet.

https://forum.fhem.de/index.php/topic,99343.msg1047041.html#msg1047041

Also bei mir ändern sich die Reading Inhalte nicht automatisch, lediglich wenn eine neue Verbindung zur IOT Cloud aufgebaut wird, ich das Update Kommando händisch schicke oder halt per Update in der iOS Worx App.

Ich habe mir jetzt vorerst ein at mit dem passenden publish Befehl erstellt.

Bei der pm2 Methode konnte man ja auch ein Update Intervall im LANDROID Modul hinterlegen daher weiß ich weiterhin nicht, ob die Readings tatsächlich automatisch aktualisiert werden oder ob hierfür noch irgend etwas konfiguriert werden muss  :o

Greetz
Eldrik

Otto123

Hallo Eldrik,

danke fürs testen. Deine Änderung habe ich übernommen (mir ist nicht ganz klar wofür das ist?);)

Wie ist Dein Worx Bridge Gerät konfiguriert? Ist das Attribute gesetzt? Ich weiß aber auch nicht ob es wirklich darin begründet ist.
attr <> keepaliveTimeout 600

Gruß Otto
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

eldrik

Zitat von: Otto123 am 08 Juni 2020, 14:31:34
Hallo Eldrik,

danke fürs testen. Deine Änderung habe ich übernommen (mir ist nicht ganz klar wofür das ist?);)

Meine Änderung ist es ja nicht direkt, aber ich meine über die MQTT Kommunikation der im ersten Post erwähnten App gesehen zu haben dass der String zum Server tatsächlich das "p" beinhaltet.

Zitat von: Otto123 am 08 Juni 2020, 14:31:34

Wie ist Dein Worx Bridge Gerät konfiguriert? Ist das Attribute gesetzt? Ich weiß aber auch nicht ob es wirklich darin begründet ist.
attr <> keepaliveTimeout 600

Gruß Otto

ja das Attribut ist bei mir gesetzt, wirkt sich aber auch nicht auf das Verhalten aus, nach meinem Verständnis ist dieses auch nur für das keepalive zum Server, damit dieser die Verbindung nicht abbaut.

Für mich funktioniert es jetzt erst einmal über das zyklische at, dessen Frequenz ich nach Bedarf anpassen kann.

Greetz
Eldrik

Otto123

Ich behalte das mal im Kopf. Bei mir läuft ja jetzt die APP, iobroker.worx und dies hier.
Ich meine: wenn einer pollt, mithören tun ja alle :)
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

Otto123

Hi,

das Template und die Beschreibung zur kompletten Installation ist im MQTT Thread:
https://forum.fhem.de/index.php/topic,111959.0.html

Gruß Otto
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