FHEM Forum

Verschiedenes => Bastelecke => Thema gestartet von: schwatter am 15 Juni 2020, 21:42:30

Titel: Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 15 Juni 2020, 21:42:30
Last Update: 30.10.23


Vorsicht, kein Zugriff mit Bumper nach Update auf Firmware 1.8.2. Der Port wurde von 8883 auf 443 geändert. Eine Portweiterleitung
muss ich noch testen. Cloud und FhemOnly funktioniert.



Hallo zusammen,

mit @KölnSolar's Hilfe hab ich den Deebot Ozmo 950 in Fhem integriert. Vielen Dank!


Zur Steuerung des Bot's gibt es in Bezug auf Fhem momentan 3 mir bekannte Wege. Nummer 1 ist, verwenden von Bumper.
Das erlaubt, die orig "ECOVACS HOME"-App weiter zu nutzen. Da noch ein Zertifikat auf dem Handy installiert werden muss,
ist es aber etwas tricky
. Nummer 2, Fhem only. Das ganze funktioniert ohne viel Schnickschnack. Bedeutet, kein bearbeiten
der Karte. No-go Areas z.B. sind so nicht benutzbar. SpotArea, wenn sie vorher per App eingerichtet wurden. Nummer 3, der
Weg über die Cloud mit einer kleinen Library. Damit funktionieren die Grundfunktionen des Bots  per Fhem sowie auch die App
ohne Einschränkungen.


Auf einem Blick

1. Aufbau mit Bumper [CLOUDFREE]
2. Aufbau mit Fhem only [CLOUDFREE]
3. Aufbau mit Deebotozmo (simple python library for deebot 960/950/920/T8) [CLOUD]
4. Tips


Übersicht der API-Kommandos,Konstanten und Attribute.

https://github.com/boriswerner/ecovacs-API-docs/wiki/commands-toAPI-Deebot-Ozmo-950
https://github.com/boriswerner/ecovacs-API-docs/wiki/Constants-and-Attributes-Deebot-Ozmo-950


1. Aufbau mit Bumper


Ozmo950 <---> Bumper <---> MQTT2_CLIENT <---> MQTT2_DEVICE


Infos zu Bumper und die passenden Docs:

https://github.com/bmartin5692/bumper
https://bumper.readthedocs.io/en/latest/


Setup für Bumper auf einem Pi mit Pihole (als User root)

01. Der Bot muss erst per "ECOVACS HOME"-App im Wlan eingerichtet werden. Mit Bumper habe ich es noch nicht probiert.
02. raspianOs headless einrichten
03. apt-get update && apt-get upgrade
04. Pihole für DNS umleiten installieren. Dafür gibt es viele Tuts.
05. Fritzbox einrichten wie in diesem Tut -> https://www.kuketz-blog.de/pi-hole-einrichtung-und-konfiguration-mit-fritzbox-adblocker-teil1/
06. nano /etc/dnsmasq.d/02-custom.conf

address=/ecouser.net/192.168.178.6 # ändern in euere Pihole IP
address=/ecovacs.com/192.168.178.6 # ändern in euere Pihole IP
address=/ecovacs.net/192.168.178.6 # ändern in euere Pihole IP

07. service pihole-FTL reload
08. DNS-Umleitung checken

ping ecouser.net
ping ecovacs.com
ping ecovacs.net

09. cd /opt
10. wget https://github.com/bmartin5692/bumper/archive/master.zip
11. unzip master.zip
12. cd bumper-master
13. apt-get install python3-pip
14. apt-get install pipenv
15. pip3 install -r requirements.txt
16. pipenv --three #nur zur Sicherheit
17. pipenv install
18. pipenv run python -m bumper --listen 192.168.178.6 --announce 192.168.178.6 # Zur Kontrolle, ob die Zertifikate erstellt werden.
19. bumper wieder beenden
20. nano /etc/systemd/system/bumper.service

[Unit]
Description=Bumper
After=network.target
Wants=network.target

[Service]
User=root
Restart=always
Type=simple
WorkingDirectory=/opt/bumper-master
ExecStart=pipenv run python3 -m bumper --listen 192.168.178.6 --announce 192.168.178.6

[Install]
WantedBy=multi-user.target

21. systemctl enable bumper
22. systemctl start bumper
23. shutdown -r now
24. systemctl status bumper # nach Neustart nochmal Kontrolle. Bei mir lief bumper mit ConnectionRefusedError(111).
Wahrscheinlich weil Pihole einen Moment braucht, bis die Umleitung gesetzt ist. Bumper wird zu schnell sein.
25. systemctl restart bumper
26. Klappt nix, mal den ganzen Fuhrpark neustarten. Fritzbox, Pihole, Bot,...


Jetzt der Rest in Fhem.

27. Verbindung zu Bumper wird mit MQTT2_CLIENT erstellt.

defmod myEcovacsClient MQTT2_CLIENT 192.168.178.6:8883
attr myEcovacsClient SSL 1
attr myEcovacsClient autocreate simple
attr myEcovacsClient clientId fhemuser@bumper/GLBbe7d18eG9 # die clientId muss so aufgebaut sein. Anpassen ist erlaubt.
attr myEcovacsClient mqttVersion 3.1.1
attr myEcovacsClient room Saugroboter
attr myEcovacsClient username meine@geheimemail.de # der username muss so aufgebaut sein. Anpassen ist erlaubt.

28. Dann "set myEcovacsClient password 123456" # Passwort ist egal. 123456 ist perfekt  ;D

29. Jetzt noch der Bot. Bei mir ein Ozmo950.
Dieser wird per MQTT2_DEVICE angelegt. Das Template ist noch nicht fertig.
Grundfunktionen und ein bisschen mehr sind aber gegeben.

defmod Ozmo950 MQTT2_DEVICE fhemuser_bumper_GLBbe7d18eG9
attr Ozmo950 IODev myEcovacsServer
attr Ozmo950 devicetopic bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
attr Ozmo950 getList Battery:noArg BatteryState iot/p2p/getBattery/helperbot/bumper/helperbot/$DEVICETOPIC/q/2001/j {}\
Charging:noArg Charging iot/p2p/getChargeState/helperbot/bumper/helperbot/$DEVICETOPIC/q/2002/j {}\
Cleaning:noArg CleaningState iot/p2p/getCleanInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/2003/j {}\
Speed:noArg iot/p2p/getSpeed/helperbot/bumper/helperbot/$DEVICETOPIC/q/2004/j {}\
Error:noArg Error iot/p2p/getError/helperbot/bumper/helperbot/$DEVICETOPIC/q/2005/j {}\
LifeSpan:noArg LifeSpan iot/p2p/getLifeSpan/helperbot/bumper/helperbot/$DEVICETOPIC/q/2006/j {"body": {"data": ["brush", "sideBrush", "heap"]}\
Schedule:noArg getSched_p iot/p2p/getSched/helperbot/bumper/helperbot/$DEVICETOPIC/q/2007/j {}\
Sleep:noArg SleepState iot/p2p/getSleep/helperbot/bumper/helperbot/$DEVICETOPIC/q/2008/j {}\
Statistic:noArg getStats_p iot/p2p/getStats/helperbot/bumper/helperbot/$DEVICETOPIC/q/2009+/j {}\
Water:noArg Water iot/p2p/getWaterInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/2010/j {}\
attr Ozmo950 icon vacuum_bold
attr Ozmo950 jsonMap header_pri:0 header_tzm:0 header_ts:0 header_ver:Version header_fwVer:Firmware header_hwVer:Hardware body_data_value:BatteryState body_data_isLow:0 body_data_isCharging:Charging body_data_mode:0 body_data_trigger:Trigger body_data_state:0 body_data_speed:Speed body_data_area:CleaningArea body_data_time:0 body_data_cid:0 body_data_start:LastStart body_data_type:CleaningMode body_data_code:Systemcode body_data_left:Lifetime body_data_left:Lifetime_total body_data_enable:SleepState body_data_amount:Water body_data_1_left:LifetimeSidebrush body_data_1_total:LifetimeSidebrush_total body_data_1_type:0 body_data_2_left:LifetimeBrush body_data_2_total:LifetimeBrush_total body_data_2_type:0 body_data_3_left:LifetimeHeap body_data_3_total:LifetimeHeap_total body_data_3_type:0
attr Ozmo950 periodicCmd Battery:15
attr Ozmo950 readingList \$SYS/broker/version:.* version\
\$SYS/#:.* BrokerMessage\
\x5c\x24SYS/broker/version:.* version\
iot/atr/onPos/$DEVICETOPIC/j:.* onPos\
iot/atr/onMapTrace/$DEVICETOPIC/j:.* onMapTrace\
iot/atr/onMajorMap/$DEVICETOPIC/j:.* onMajorMap\
iot/atr/onMinorMap/$DEVICETOPIC/j:.* onMinorMap\
iot/atr/onStats/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/onBattery/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/onCachedMapInfo/$DEVICETOPIC/j:.* onCachedMapInfo\
iot/atr/onSched/$DEVICETOPIC/j:.* onSched\
iot/atr/onMapState/$DEVICETOPIC/j:.* onMapState\
iot/atr/reportStats/$DEVICETOPIC/j:.* reportStats\
iot/atr/reportPos/$DEVICETOPIC/j:.* reportPos\
iot/atr/reportMajorMap/$DEVICETOPIC/j:.* reportMajorMap\
iot/atr/reportMinorMap/$DEVICETOPIC/j:.* reportMinorMap\
iot/atr/reportMapTrace/$DEVICETOPIC/j:.* reportMapTrace\
iot/atr/onSpeed/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/onCleanInfo/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/onChargeState/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/onRelocationState/$DEVICETOPIC/j:.* onRelocationState\
iot/atr/onEvt/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/[^/]+/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* LastRequest\
iot/p2p/[^/]+/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* LastResponse\
iot/p2p/getAdvancedMode/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getAdvancedMode_p\
iot/p2p/getBattery/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getBlock/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getBlock_p\
iot/p2p/getBreakPoint/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getBreakPoint_p\
iot/p2p/getCachedMapInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getCachedMapInfo_p\
iot/p2p/getChargeState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getCleanInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getError/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getLifeSpan/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getMajorMap/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMajorMap_p\
iot/p2p/getMapSet/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMapSet_p\
iot/p2p/getMapState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMapState_p\
iot/p2p/getMapSubSet/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMapSubSet_p\
iot/p2p/getMapTrace/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMapTrace_p\
iot/p2p/getMinorMap/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMinorMap_p\
iot/p2p/getPos/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getPos_p\
iot/p2p/getRelocationState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getRelocationState_p\
iot/p2p/getSched/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getSched_p\
iot/p2p/getSleep/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getStats/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getStats_p\
iot/p2p/getWaterInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getSpeed/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/reportMapSubSet/$DEVICETOPIC/j:.* reportMapSubSet\
iot/atr/onSleep/$DEVICETOPIC/j:.* onSleep\
attr Ozmo950 room Saugroboter
attr Ozmo950 setList 01_CleaningAuto:start,stop iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/1001/j {"body": {"data": {"act": "$EVTPART1", "type": "auto"}}}\
02_CleaningSpot:0,1,2,3,4 iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/1002/j {"body": {"data": {"act": "start", "content": "$EVTPART1", "type": "spotArea"}}}\
03_Charging:go iot/p2p/charge/helperbot/bumper/helperbot/$DEVICETOPIC/q/1003/j {"body": {"data": {"act": "$EVTPART1"}}}\
04_BackToWorkOnOff:0,1 iot/p2p/setBreakPoint/helperbot/bumper/helperbot/$DEVICETOPIC/q/1004/j {"body": {"data": {"enable": $EVTPART1}}}\
05_Speed:1000,0,1,2 iot/p2p/setSpeed/helperbot/bumper/helperbot/$DEVICETOPIC/q/1005/j {"body": {"data": {"speed": $EVTPART1}}}\
06_AutoSpeedOnOff:0,1 iot/p2p/setCarpertPressure/helperbot/bumper/helperbot/$DEVICETOPIC/q/1006/j {"body": {"data": {"enable": $EVTPART1}}}\
07_SetWater:1,2,3,4 iot/p2p/setWaterInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/1007/j {"body": {"data": {"amount": $EVTPART1, "enable": 0}}}\
08_RestTimeOnOff:0,1 iot/p2p/setBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/1008/j {"body": {"data": {"enable": $EVTPART1}}, "header": {"tzm": 120}}\
09_RestTimeStart:selectnumbers,0,1,23,0,lin chiquer iot/p2p/setBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/1009/j {"body": {"data": {"end": "7:0", "start": "$EVTPART1:0"}}, "header": {"tzm": 120}}\
10_RestTimeEnd:selectnumbers,0,1,23,0,lin chiquer iot/p2p/setBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/1010/j {"body": {"data": {"end": "$EVTPART1:0", "start": "21:0"}}, "header": {"tzm": 120}}\
11_SetVolume:selectnumbers,0,1,10,0,lin chiquer iot/p2p/setVolume/helperbot/bumper/helperbot/$DEVICETOPIC/q/1011/j {"body": {"data": {"total": 10, "volume": $EVTPART1}}, "header": {"tzm": 120}}\
12_PlaySound:noArg iot/p2p/playSound/helperbot/bumper/helperbot/$DEVICETOPIC/q/1012/j {"body": {"data": {"count": 1, "sid": 30}}}\
13_RestTimeEndStart:textField iot/p2p/setBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/1013/j {"body": {"data": {"end": "$EVTPART1:0", "start": "$EVTPART2:0"}}, "header": {"tzm": 120}}\
attr Ozmo950 setStateList start stop
attr Ozmo950 stateFormat ActualStatus: LastResponse
attr Ozmo950 subType Saugroboter
attr Ozmo950 webCmd 01_CleaningAuto:02_CleaningSpot:03_Charging:14_move
attr Ozmo950 webCmdLabel cleaning_normal:cleaning_spot:return_to_charge



2. Aufbau mit Fhem only


Ozmo950 <---> MQTT2_SERVER <---> MQTT2_DEVICE


Übersicht der API_Kommandos

https://github.com/boriswerner/ecovacs-API-docs/wiki/commands-toAPI-Deebot-Ozmo-950


01. Pihole wie oben beschrieben einrichten (Schritte 01-08). Wichtig, IP vo Fhemserver verwenden.
02. Neu, seit dem Update auf Firmware 1.8.2 hat sich der MQTT-Port von 8883 auf 443 geändert. Daher muss jetzt per iptables geroutet werden.

iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to 8883
Funktioniert der Befehl nicht, dann muss im System ip_forward aktiviert werden. Hier Ubuntu.

echo "1" > /proc/sys/net/ipv4/ip_forward

03. MQTT2-SERVER als Broker einrichten. SSL und Port sind wichtig, ein Passwort aber nicht.

defmod myEcovacsServer MQTT2_SERVER 8883 global
attr myEcovacsServer SSL 1
attr myEcovacsServer autocreate simple
attr myEcovacsServer room Saugroboter
attr myEcovacsServer sslVersion TLSv12

04. Da die APP ohne Bumper nicht funktioniert, einmal am Bot die Starttaste drücken.
05. Jetzt sollte ein neues MQTT2_DEVICE automatisch angelegt werden.

defmod MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth MQTT2_DEVICE bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth IODev myEcovacsServer
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth readingList bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onSleep/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onChargeState/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth room MQTT2_DEVICE

setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 body_data_enable 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 body_data_isCharging 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 body_data_mode slot
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 header_fwVer 1.7.9
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 header_hwVer 0.1.1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 header_pri 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 header_ts 1592718855046
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 header_tzm 480
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 header_ver 0.0.1

05. Das angelegte Device dann erweitern (setList, getList, readingList,...,...).

defmod Ozmo950 MQTT2_DEVICE bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth
attr Ozmo950 IODev myEcovacsServer
attr Ozmo950 devicetopic bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
attr Ozmo950 getList Battery:noArg BatteryState iot/p2p/getBattery/x/y/z/$DEVICETOPIC/q/2001/j {}\
Charging:noArg Charging iot/p2p/getChargeState/x/y/z/$DEVICETOPIC/q/2002/j {}\
Cleaning:noArg CleaningState iot/p2p/getCleanInfo/x/y/z/$DEVICETOPIC/q/2003/j {}\
Speed:noArg iot/p2p/getSpeed/x/y/z/$DEVICETOPIC/q/2004/j {}\
Error:noArg Error iot/p2p/getError/x/y/z/$DEVICETOPIC/q/2005/j {}\
LifeSpan:noArg LifeSpan iot/p2p/getLifeSpan/x/y/z/$DEVICETOPIC/q/2006/j {"body": {"data": ["brush", "sideBrush", "heap"]}}\
Schedule:noArg getSched_p iot/p2p/getSched/x/y/z/$DEVICETOPIC/q/2007/j {}\
Sleep:noArg SleepState iot/p2p/getSleep/x/y/z/$DEVICETOPIC/q/2008/j {}\
Statistic:noArg getStats_p iot/p2p/getStats/x/y/z/$DEVICETOPIC/q/2009+/j {"header": {"ts": "1591972654686", "ver": "0.0.22", "pri": 2, "tzm": 120}}\
Water:noArg Water iot/p2p/getWaterInfo/x/y/z/$DEVICETOPIC/q/2010/j {}

\
attr Ozmo950 icon vacuum_bold
attr Ozmo950 jsonMap header_pri:0 header_tzm:0 header_ts:0 header_ver:Version header_fwVer:Firmware header_hwVer:Hardware body_data_value:BatteryState body_data_isLow:0 body_data_isCharging:Charging body_data_mode:0 body_data_trigger:Trigger body_data_state:0 body_data_speed:Speed body_data_area:CleaningArea body_data_time:0 body_data_cid:0 body_data_start:LastStart body_data_type:CleaningMode body_data_code:Systemcode body_data_left:Lifetime body_data_left:Lifetime_total body_data_enable:SleepState body_data_amount:Water body_data_1_left:LifetimeSidebrush body_data_1_total:LifetimeSidebrush_total body_data_1_type:0 body_data_2_left:LifetimeBrush body_data_2_total:LifetimeBrush_total body_data_2_type:0 body_data_3_left:LifetimeHeap body_data_3_total:LifetimeHeap_total body_data_3_type:0 body_data_cleanState_motionState:0 body_msg:MessageErrorCode
attr Ozmo950 periodicCmd Battery:15
attr Ozmo950 readingList \$SYS/broker/version:.* version\
\$SYS/#:.* BrokerMessage\
\x5c\x24SYS/broker/version:.* version\
iot/atr/onPos/$DEVICETOPIC/j:.* onPos\
iot/atr/onMapTrace/$DEVICETOPIC/j:.* onMapTrace\
iot/atr/onMajorMap/$DEVICETOPIC/j:.* onMajorMap\
iot/atr/onMinorMap/$DEVICETOPIC/j:.* onMinorMap\
iot/atr/onStats/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/onBattery/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/onCachedMapInfo/$DEVICETOPIC/j:.* onCachedMapInfo\
iot/atr/onSched/$DEVICETOPIC/j:.* onSched\
iot/atr/onMapState/$DEVICETOPIC/j:.* onMapState\
iot/atr/reportStats/$DEVICETOPIC/j:.* reportStats\
iot/atr/reportPos/$DEVICETOPIC/j:.* reportPos\
iot/atr/reportMajorMap/$DEVICETOPIC/j:.* reportMajorMap\
iot/atr/reportMinorMap/$DEVICETOPIC/j:.* reportMinorMap\
iot/atr/reportMapTrace/$DEVICETOPIC/j:.* reportMapTrace\
iot/atr/onSpeed/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/onCleanInfo/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/onChargeState/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/onRelocationState/$DEVICETOPIC/j:.* onRelocationState\
iot/atr/onEvt/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/[^/]+/x/y/z/$DEVICETOPIC/q/[^/]+/j:.* LastRequest\
iot/p2p/[^/]+/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* LastResponse\
iot/p2p/getAdvancedMode/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* getAdvancedMode_p\
iot/p2p/getBattery/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getBlock/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* getBlock_p\
iot/p2p/getBreakPoint/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* getBreakPoint_p\
iot/p2p/getCachedMapInfo/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* getCachedMapInfo_p\
iot/p2p/getChargeState/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getCleanInfo/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getError/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getLifeSpan/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getMajorMap/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* getMajorMap_p\
iot/p2p/getMapSet/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* getMapSet_p\
iot/p2p/getMapState/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* getMapState_p\
iot/p2p/getMapSubSet/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* getMapSubSet_p\
iot/p2p/getMapTrace/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* getMapTrace_p\
iot/p2p/getMinorMap/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* getMinorMap_p\
iot/p2p/getPos/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* getPos_p\
iot/p2p/getRelocationState/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* getRelocationState_p\
iot/p2p/getSched/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* getSched_p\
iot/p2p/getSleep/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getStats/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* getStats_p\
iot/p2p/getWaterInfo/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getSpeed/$DEVICETOPIC/x/y/z/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/reportMapSubSet/$DEVICETOPIC/j:.* reportMapSubSet\
iot/atr/onSleep/$DEVICETOPIC/j:.* onSleep
attr Ozmo950 room MQTT2_DEVICE,Saugroboter
attr Ozmo950 setList 01_CleaningAuto:start,stop iot/p2p/clean/x/y/z/$DEVICETOPIC/q/1001/j {"body": {"data": {"act": "$EVTPART1", "type": "auto"}}}\\
02_CleaningSpot:0,1,2,3,4 iot/p2p/clean/x/y/z/$DEVICETOPIC/q/1002/j {"body": {"data": {"act": "start", "content": "$EVTPART1", "type": "spotArea"}}}\\
03_Charging:go iot/p2p/charge/x/y/z/$DEVICETOPIC/q/1003/j {"body": {"data": {"act": "$EVTPART1"}}}\\
04_BackToWorkOnOff:0,1 iot/p2p/setBreakPoint/x/y/z/$DEVICETOPIC/q/1004/j {"body": {"data": {"enable": $EVTPART1}}}\\
05_Speed:1000,0,1,2 iot/p2p/setSpeed/x/y/z/$DEVICETOPIC/q/1005/j {"body": {"data": {"speed": $EVTPART1}}}\\
06_AutoSpeedOnOff:0,1 iot/p2p/setCarpertPressure/x/y/z/$DEVICETOPIC/q/1006/j {"body": {"data": {"enable": $EVTPART1}}}\\
07_SetWater:1,2,3,4 iot/p2p/setWaterInfo/x/y/z/$DEVICETOPIC/q/1007/j {"body": {"data": {"amount": $EVTPART1, "enable": 0}}}\\
08_RestTimeOnOff:0,1 iot/p2p/setBlock/x/y/z/$DEVICETOPIC/q/1008/j {"body": {"data": {"enable": $EVTPART1}}, "header": {"tzm": 120}}\\
09_RestTimeStart:selectnumbers,0,1,23,0,lin chiquer iot/p2p/setBlock/x/y/z/$DEVICETOPIC/q/1009/j {"body": {"data": {"end": "7:0", "start": "$EVTPART1:0"}}, "header": {"tzm": 120}}\\
10_RestTimeEnd:selectnumbers,0,1,23,0,lin chiquer iot/p2p/setBlock/x/y/z/$DEVICETOPIC/q/1010/j {"body": {"data": {"end": "$EVTPART1:0", "start": "21:0"}}, "header": {"tzm": 120}}\\
11_SetVolume:selectnumbers,0,1,10,0,lin chiquer iot/p2p/setVolume/x/y/z/$DEVICETOPIC/q/1011/j {"body": {"data": {"total": 10, "volume": $EVTPART1}}, "header": {"tzm": 120}}\\
12_PlaySound:noArg iot/p2p/playSound/x/y/z/$DEVICETOPIC/q/1012/j {"body": {"data": {"count": 1, "sid": 30}}}\\
13_RestTimeEndStart:textField iot/p2p/setBlock/x/y/z/$DEVICETOPIC/q/1013/j {"body": {"data": {"end": "$EVTPART1:0", "start": "$EVTPART2:0"}}, "header": {"tzm": 120}}
attr Ozmo950 setStateList start stop
attr Ozmo950 stateFormat ActualStatus: LastResponse
attr Ozmo950 subType Saugroboter
attr Ozmo950 webCmd 01_CleaningAuto:02_CleaningSpot:03_Charging
attr Ozmo950 webCmdLabel cleaning_normal:cleaning_spot:return_to_charge



3. Aufbau mit Deebotozmo (simple python library for deebot 960/950/920/T8)



Ozmo950 <---> CLOUD <---> Deebotozmo  <--> Dummy

Infos sind hier zu finden.

https://github.com/And3rsL/Deebotozmo



01. Deebotozmo installieren

pip3 install deebotozmo==1.7.1
02. Fehlende Abhängigkeiten installieren. Bei mir

sudo apt-get install libatlas-base-dev
sudo apt-get install libopenjp2-7
sudo apt-get install libtiff5

03. Config erstellen

root@pi3Pihole:~# deebotozmo createconfig
Ecovacs app email: your@mail.de
Ecovacs app password: supergeheimespasswort
your two-letter country code [de]: de
your two-letter continent code [eu]: eu
Verify SSL for API requests [True]: True

04. Zum testen im Terminal

deebotozmo clean
Jetzt sollte der Bot saugen

05. Übersicht der Befehle

root@pi3Pihole:~# deebotozmo --help
Usage: deebotozmo [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...

Options:
  --debug / --no-debug
  --help                Show this message and exit.

Commands:
  charge         Returns to charger
  clean          Auto clean
  components     Get robot components life span
  createconfig   logs in with specified email; run this first
  customarea     Cleans provided area(s), ex: "-602,1812,800,723"
  dodebug        debug function, do not use :)
  exportlivemap  Get robot map and save it [filepath ex:...
  getcleanlogs   Get Clean Logs
  getrooms       Get saved rooms
  pause          pause the robot
  playsound      Play welcome sound
  resume         Resume the robot
  setfanspeed    Set Clean Speed
  setwaterlevel  Set Water Level
  spotarea       Cleans provided rooms(s), ex: "0,1" | Use GetRooms to see...
  statuses       Get robot statuses [Status,Battery,FanSpeed,WaterLevel]
root@pi3Pihole:~#

06. Dummy in Fhem anlegen

defmod DeebotOzmo950 dummy
attr DeebotOzmo950 readingList state
attr DeebotOzmo950 room 04.Esszimmer_EG
attr DeebotOzmo950 setList 01_CleaningAuto:clean,pause,resume,charge 02_SpotArea:selectnumbers,0,1,9,0,lin 03_Fanspeed:quiet,normal,max,max+ 04_WaterFlowRate:low,medium,high,ultrahigh 05_Systeminfos:components,getrooms,statuses 06_GetMap:noArg
attr DeebotOzmo950 stateFormat LastActivity:state<br><br>\
statuses<br>\
<a href="http://192.168.178.66:8085/fhem/www/livemap/map.png"><img src="/fhem/www/livemap/map.png?nocache=<?time();; ?>" style="width: 100%;;max-height: 100%"> </a>
attr DeebotOzmo950 webCmd 01_CleaningAuto:02_SpotArea:03_Fanspeed:05_Systeminfos:06_GetMap
attr DeebotOzmo950 webCmdLabel BasicCmd::SpotArea::Fanspeed::Vacuumdetails::Mapdater:

setstate DeebotOzmo950 LastActivity:05_Systeminfos statuses<br><br>\
Vacuum Status: STATE_DOCKED\
Battery: 100%\
Fan Speed: normal\
Water Level: low\
<br>\
<img src="/fhem/www/livemap/map.png?nocache=<?time(); ?>">"
setstate DeebotOzmo950 2020-09-24 21:58:58 components brush: 92.50555555555555%\
sideBrush: 83.91111111111111%\
heap: 81.26388888888889%\

setstate DeebotOzmo950 2020-09-24 22:02:21 state 05_Systeminfos statuses
setstate DeebotOzmo950 2020-09-24 22:02:24 statuses Vacuum Status: STATE_DOCKED\
Battery: 100%\
Fan Speed: normal\
Water Level: low\

07. Und ein paar notify's für die Cmd's

defmod DeebotOzmo950_Cmd01 notify DeebotOzmo950:01_CleaningAuto.* {my $botcmd = (split ' ',ReadingsVal("DeebotOzmo950","state",0))[1];;;;system("sudo deebotozmo $botcmd &")}defmod DeebotOzmo950_Cmd02 notify DeebotOzmo950:02_SpotArea.* {my $botcmd = (split ' ',ReadingsVal("DeebotOzmo950","state",0))[1];;;;system("sudo deebotozmo spotarea $botcmd 1 &")}defmod DeebotOzmo950_Cmd03 notify DeebotOzmo950:03_Fanspeed.* {my $botcmd = (split ' ',ReadingsVal("DeebotOzmo950","state",0))[1];;;;system("sudo deebotozmo setfanspeed $botcmd &")}defmod DeebotOzmo950_Cmd04 notify DeebotOzmo950:04_WaterFlowRate.* {my $botcmd = (split ' ',ReadingsVal("DeebotOzmo950","state",0))[1];;;;system("sudo deebotozmo setwaterlevel $botcmd &")}defmod DeebotOzmo950_Cmd05 notify DeebotOzmo950:05_Systeminfos.* {my $botcmd = (split ' ',ReadingsVal("DeebotOzmo950","state",0))[1];;;;my $result = qx "sudo deebotozmo $botcmd &";;;; fhem("setreading DeebotOzmo950 $botcmd $result");;;;}defmod DeebotOzmo950_Cmd06 notify DeebotOzmo950:06_GetMap {fhem(system("sudo deebotozmo exportlivemap /opt/fhem/www/livemap/map.png & "))} ; sleep 15 ; { map { FW_directNotify("#FHEMWEB:$_", "location.reload('true')", "") } devspec2array("WEB.*") };;

Info zu GetMap
Die Map braucht ca. 15 sek. bis sie geladen ist und in Fhem zur Verfügung steht, daher ein sleep 15 im Anschluss. Danach ist ein Browserrefresh nötig, um das
Bild zu aktualisieren. Das erfolgt per Aufruf von FW_directNotify. So wie es oben im Notify ausgeführt wird, erfolgt ein Refresh von allen WEB.* Instanzen.
Wer das nicht möchte, muss den Filter anpassen.

Siehe:
https://wiki.fhem.de/wiki/DevelopmentFHEMWEB-API

08. Ein at für Statusupdates

defmod DeebotOzmo950_Updates at +*00:10:00 set DeebotOzmo950 05_Systeminfos statuses
09. Ordner anlegen für die Map

/opt/fhem/www/livemap
10. Berechtigungen damit Fhem Shellbefehle ausführen bzw den Roboter steuern darf.

Von Haus aus hat Fhem keine Erlaubnis, tiefgreifende Shellbefehle ausführen zu dürfen. Deshalb muss in diesem Fall folgendes erledigt werden.


Pfad der Bin-Datei ermitteln.

which deebotozmo
Dann die Berechtigungsdatei erstellen.

sudo nano /etc/sudoers.d/011_fhem-nopasswd
Folgendes einfügen und speichern. Gegebenenfalls neustarten.

fhem ALL=(ALL) NOPASSWD: /pfad/der/gerade/ermittelt/wurde

Weitere Infos dazu:

https://forum.fhem.de/index.php/topic,112149.msg1122934.html#msg1122934
https://heinz-otto.blogspot.com/2017/08/raspberry-ausschalten-mit-fhem.html

Danke Otto123 für das aufbereiten.


4. Tips


01. Da der Bot nicht viel redet, empfiehlt es sich bei MQTT ein periodicCmd anzulegen.

attr Ozmo950 periodicCmd Battery:15

Damit wird im interval von 15min Battery abgefragt.

02. Die "ECOVACS HOME"-App

- funktionierte bei mir nur bis 1.4.5
- Wenn der Bot als offline angezeigt wird, App beenden und neustarten.
- Oder in der App runterziehen, so dass aktualisiert wird.
- Der Dienst der App läuft im Hintergrund. Funktioniert nichts, die App unter Einstellungen --> Apps suchen und beenden erzwingen. Speicher + Cache löschen.
Titel: Antw:Deebot Ozmo 950 [MQTT]
Beitrag von: schwatter am 20 Juni 2020, 14:58:43
@KölnSolar

Ich war ein paar Tage weg. Nu können wir es fortsetzen.
Titel: Antw:Deebot Ozmo 950 [MQTT]
Beitrag von: KölnSolar am 20 Juni 2020, 15:12:05
womit ? mqtt2-server ?
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE]
Beitrag von: schwatter am 20 Juni 2020, 15:24:37
Aso, ja. Ohne Bumper. Die Readings werden nebenbei fertig.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE]
Beitrag von: KölnSolar am 20 Juni 2020, 19:39:49
Na dann probieren wir es mal. Als erstes mal ganz ohne Zertifikat/Key. Da blick ich bei mir nämlich nicht mehr so recht durch.  ::) :-[

bumper stoppen.

Den Server so anlegendefmod myEcovacsServer MQTT2_SERVER 8883 global
attr myEcovacsServer autocreate simple
attr myEcovacsServer room Saugroboter


Änderung des IODev beim MQTT2-device(sicherheitshalber das nicht mehr benötigte MQTT2-client-device löschen)
attr Ozmo950 IODev myEcovacsServer
Bot aus, kurz warten u. wieder ein.

Ich vermute es passiert .....nichts.

Daher die TLS-Verschlüsselung beim Server aktivieren.

attr myEcovacsServer SSL 1
attr myEcovacsServer sslVersion TLSv12

Bot aus, kurz warten u. wieder ein.

Und verbunden ? Wenn nicht brauchen wir noch das Zertifikat.(Info gebe ich dann)

Als Schmankerl könntest Du mal gucken, ob Du den 950 zum Tanzen bekommst. Musst es natürlich auf JSON umbauen.
move:backward,forward,SpinLeft,SpinRight,TurnAround,stop iot/p2p/Move/helperbot/bumper/helperbot/$DEVICETOPIC/q/1119/x <ctl td="Move"><move action="$EVTPART1"/></ctl>

Have fun
Markus
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE]
Beitrag von: schwatter am 20 Juni 2020, 20:16:55
Ok, alles so eingerichtet. Kein Mucks. Ich habe jetzt alle Zertifikate nach
/opt/fhem/certs geschoben. Gruppe dialout, Eigentümer fhem.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE]
Beitrag von: KölnSolar am 20 Juni 2020, 21:28:14
 aus dem certs-Verzeichnis das bumper.key u. bumper.crt in das ggfs. neu zu erstellende Verzeichnis certs unterhalb des FHEM-Hauptverzeichnisses kopieren
umbenennen in bumper-key.pem bzw. bumper-cert.pem(ich hoffe die sind schon im pem-Format sonst müssten sie umgewandelt werden  :()

und noch ein Attribut
attr myEcovacsServer sslCertPrefix certs/bumper-
Hier ist vermutlich ein modify oder shutdown/restart erforderlich.

Ich bin gespannt....
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE]
Beitrag von: schwatter am 20 Juni 2020, 22:04:37
So, die gute Nachricht. Es funktioniert  :D
Die schlechte Nachricht. Wir Beide haben die Info vergessen, den DNS auf Fhem zu setzen zu erwähnen.
Ist selbstverständlich, aber ja. Nochmal Rolle rückwärts und schauen ob es ohne Zertifikat funktioniert.
Melde mich gleich.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE]
Beitrag von: KölnSolar am 20 Juni 2020, 22:28:12
ZitatDie schlechte Nachricht. Wir Beide haben die Info vergessen, den DNS auf Fhem zu setzen zu erwähnen.
Ich nicht. Bei mir liefen bumper u. FHEM auf der selben Hardware.  ;) Dann muss man nichts ändern.

Zitatdie gute Nachricht. Es funktioniert 
Prima. 8)
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE]
Beitrag von: schwatter am 20 Juni 2020, 22:55:17
ZitatIch nicht. Bei mir liefen bumper u. FHEM auf der selben Hardware.  ;) Dann muss man nichts ändern.

touché  ;D

Ok, alle Zertifikate gelöscht. Und diverse Neustarts. Läuft.

attr myEcovacsServer sslVersion TLSv12

Habe herausgefunden, das MQTT2-SERVER das als Standard gesetzt hat. Es wäre also
nicht erforderlich. Aber, ich nehme es mit auf. Dinge ändern sich mit der Zeit.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE]
Beitrag von: KölnSolar am 20 Juni 2020, 22:59:46
ZitatOk, alle Zertifikate gelöscht. Und diverse Neustarts. Läuft.
Ha, hätte ich nicht mit gerechnet. D.h. ja, dass unsere Nachfolger kein bumper, kein pip, kein pipenv, kein python3 installieren müssen. 8) 8) 8)
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE]
Beitrag von: schwatter am 20 Juni 2020, 23:25:11
Ja, genau  :)
Ich werde das Morgen nochmal zwecks MQTT2_DEVICE und autocreate nachstellen.
Heute nach dem löschen vom Device wurde nach einem Neustart kein neues Device angelegt.

Vielleicht, weil der Bot so wenig sendet, wenn er nicht in Betrieb ist. Hab aber gerade Sperrstunde  :P
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE]
Beitrag von: schwatter am 21 Juni 2020, 08:42:43
Moin,

der Bot meldet sich nicht, ohne das ich was mache. Nachdem ich den Button auf ihm kurz
gedrückt habe, wird er aber per autocreate angelegt.

defmod MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth MQTT2_DEVICE bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth IODev myEcovacsServer
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth readingList bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onSleep/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onChargeState/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth room MQTT2_DEVICE

setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 body_data_enable 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 body_data_isCharging 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 body_data_mode slot
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 header_fwVer 1.7.9
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 header_hwVer 0.1.1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 header_pri 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 header_ts 1592718855046
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 header_tzm 480
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 07:54:20 header_ver 0.0.1



Aber auch danach, keine Aktualisierung. Erst wenn er gestartet wird. Getreu dem Motto,
klotzen statt kleckern.

Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE]
Beitrag von: KölnSolar am 21 Juni 2020, 09:32:17
ZitatAber auch danach, keine Aktualisierung. Erst wenn er gestartet wird. Getreu dem Motto,
klotzen statt kleckern.
Hatten wir ja schon zu Beginn so, dass der 950 nicht so gesprächig ist wie mein Slim10. Kannst ja mal ein zyklisches at mit get Ozmo950 Battery anlegen.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE]
Beitrag von: schwatter am 21 Juni 2020, 10:33:11
Ja, gute Idee. Werde ein at anlegen und bald Post 1 überarbeiten.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE]
Beitrag von: stefanpf am 21 Juni 2020, 11:50:47
Moin,
sorry, dass ich so unqualifiziert dazwischen frage.
Werden bei der reinen MQTT Lösung die Karten noch unterstützt?
Als ich das letzte Mal bei den verschiedenen Projekten auf GitHub vorbeigeschaut hatte war das noch eine große Baustelle. Inzwischen scheinen die ja gut vorangekommen zu sein.
Ich hatte irgendwie gespeichert, dass für die Karten auch http benötigt wird...mag mich aber auch täuschen.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE]
Beitrag von: schwatter am 21 Juni 2020, 15:03:43
Die Karte kannst du nur in der App bearbeiten. Verschiedene Kartenbereiche
anfahren geht mit MQTT-only per spotArea.
Vielleicht gibts es noch eine Möglichkeit, die Karte vom Bot zu laden.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 21 Juni 2020, 22:23:34
Post 1 wieder etwas überarbeitet.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: Beta-User am 22 Juni 2020, 17:19:22
Hallo zusammen,

da KölnSolar hier mit von der Partie ist, gehe ich davon aus, dass das eigentliche Ziel wäre, irgendwann auch ein attrTemplate zu haben?

Falls ihr da Unterstützung braucht: einfach anfunken...

Habe nur das hier gesehen:
Zitat von: schwatter am 15 Juni 2020, 21:42:30
01. Da der Bot nicht viel redet, empfiehlt es sich, ein "at" auf get's anzulegen. z.B


defmod atOzmo950State at +*00:15:00 get Ozmo950 Battery
attr atOzmo950State room Saugroboter

Das geht seit einiger Zeit auch "built-in":
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth periodicCmd Battery:15
(Über die Namensgebung des Muster-Devices könntet ihr vielleicht nochmal nachdenken ::) ).
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 22 Juni 2020, 17:43:00
ZitatHallo zusammen,

da KölnSolar hier mit von der Partie ist, gehe ich davon aus, dass das eigentliche Ziel wäre, irgendwann auch ein attrTemplate zu haben?

Falls ihr da Unterstützung braucht: einfach anfunken...

Ja, nachdem wir soweit gekommen sind, sollte das nun zum Ziel werden. Danke für die zugesagte Unterstützung.

periodicCmd Battery:15

Oh super, nehme ich mit auf!
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: KölnSolar am 22 Juni 2020, 18:41:13
Hi Beta,
Zitatdass das eigentliche Ziel wäre, irgendwann auch ein attrTemplate zu haben?
Nicht wirklich. Die Userzahl scheint sehr begrenzt(bisher 2, die auch noch ein unterschiedliches Template benötigen würden; kein Handvoll weitere, die bis dato Interesse bekundet haben)
Sollten es mehr werden, kommen wir natürlich gerne auf Dein Angebot zurück.

btw., gibt es noch andere Möglichkeiten außer über json2nameValue u. $JSONMAP Daten aus einem JSON in Readings umzuwandeln bzw. zu unterdrücken oder geht das dann nur mit Perl ?
Bsp.: 2 unterschiedliche topics liefern einen payload zurück, deren Inhalt gleich ist, bspw. {"content": true} Das würde ja immer nur zu einem reading content führen. Aber es müssten 2 unterschiedliche readings sein, deren Name sich durch einen Teil des topics ergeben würde.

Grüße Markus
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: rudolfkoenig am 22 Juni 2020, 19:15:10
ZitatDas würde ja immer nur zu einem reading content führen.
Fuer diesen Zweck gibts in json2nameValue der zweite Parameter, automatisch ausloesbar mit "attr mqtt2_server autocreate complex".
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: Beta-User am 23 Juni 2020, 13:10:13
Zitat von: KölnSolar am 22 Juni 2020, 18:41:13
[..] Nicht wirklich. Die Userzahl scheint sehr begrenzt (bisher 2, die auch noch ein unterschiedliches Template benötigen würden; kein Handvoll weitere, die bis dato Interesse bekundet haben)
Ganz nach Belieben :) .

Die reine User-Anzahl an sich würde ich nicht unbedingt zum Maßsstab machen, attrTemplate ist zwischenzeitlich auch ein Weg, Dinge wiederauffindbar zu machen, selbst wenn man dann hinterher als user noch (teilweise) viel selber anpassen muß (wie scheinbar hier).
Abgesehen davon: manchmal lohnt es sich aus meiner Warte heraus auch, "exotische" Sachen aufzunehmen, wenn es dabei darum geht, auch Methoden für bisher ungelöste Problemstellungen darzustellen. Was hier interessant ist, ist die "MQTT-Falle", um den Robi aus der geschlossenen externen MQTT-Infrastruktur rauszubrechen (zumindest habe ich manche Teile des Threads so interpretiert...). Das ist eine Sache, die ggf. auch für ganz andere Usecases interessant ist, die Hersteller kochen ja schließlich auch nur mit Wasser und nutzen (allzu) oft dieselbe Infrastruktur im Hintergrund.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: KölnSolar am 23 Juni 2020, 15:37:54
ZitatWas hier interessant ist, ist die "MQTT-Falle", um den Robi aus der geschlossenen externen MQTT-Infrastruktur rauszubrechen (zumindest habe ich manche Teile des Threads so interpretiert...). Das ist eine Sache, die ggf. auch für ganz andere Usecases interessant ist, die Hersteller kochen ja schließlich auch nur mit Wasser und nutzen (allzu) oft dieselbe Infrastruktur im Hintergrund.
Wenn Du damit meinst, dass der Bot cloudfree nur mit FHEM kommuniziert: da bin ich mächtig Stolz drauf. Hat mich Monate gekostet. >:(

ZitatattrTemplate ist zwischenzeitlich auch ein Weg, Dinge wiederauffindbar zu machen, selbst wenn man dann hinterher als user noch (teilweise) viel selber anpassen muß (wie scheinbar hier).
Ok. Du erinnerst Dich an xxml(?;vs. JSON) bei meinem Bot ? Das "löse" ich nicht auf. Nicht schön die readings, aber lesbar. Damals hatten wir es verworfen ein Template draus zu machen. :-\

Grüße Markus
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: Beta-User am 23 Juni 2020, 15:55:15
Zitat von: KölnSolar am 23 Juni 2020, 15:37:54
Wenn Du damit meinst, dass der Bot cloudfree nur mit FHEM kommuniziert: da bin ich mächtig Stolz drauf. Hat mich Monate gekostet. >:(
Soweit mein Verständnis reicht, hast du eine große Berechtigung, darauf stolz zu sein!

ZitatOk. Du erinnerst Dich an xxml(?;vs. JSON) bei meinem Bot ? Das "löse" ich nicht auf. Nicht schön die readings, aber lesbar. Damals hatten wir es verworfen ein Template draus zu machen. :-\
Kann mich grade nicht dran erinnern, warum das damals irgendwie nicht weiterging, ist letztlich auch egal. Ich kann nur die Frage stellen, ob ich "blind" und irgendwie unterstützen kann (was bei derartigen komplexen Geräten tendenziell ziemlich schwierig ist, das ist und bleibt unübersichtlich, wenn man die Kommunikation nicht "live" verfolgen kann) und ggf. dafür sorgen, dass andere (via attrTemplate) ggf. irgendein "Ende zu fassen" bekommen, mit dem sie weitermachen können.
Grundsätzlich ist es mMn. kein allzugroßes Thema, ggf. auch "Baustellen" bzw. "Steinbrüche", bei denen man noch viel selbst machen muß, offen als solche zu kommunizieren. Das ist heute uU. auch ein etwas anderes Thema als vor einem Jahr oder länger, da doch zwischenzeitlich viele "Standarddevices" (und auch einige "Spezielle") soweit ausgegoren sind, dass keiner mehr den Eindruck haben dürfte, das ganze sei eine einzige Baustelle (selbst wenn ich hin und wieder mal das eine oder andere umgebaut habe, aber das dürfte es jetzt auch überwiegend gewesen sein)...
Außerdem haben "wir" (v.a. ich) zwischenzeitlich ja das eine oder andere gelernt bzw. Rudi hat auch weitere Funktionalität eingebaut, so dass ggf. manches heute doch einfacher ist, als es mal schien. Könnte man ggf. nochmal unter diesen Gesichtspunkten ansehen.

Aber wie gesagt: Kein Muß, eine (wenig dringliche) Option :) . Und wer Bedarf hat, die SuFu nutzt und hier landet, kann das ja auch ggf. aufgreifen, wenn er mag...
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 23 Juni 2020, 20:50:32
wenn ich MQTT2_SERVER auf complex setze, dann schaut das so aus.

defmod MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth MQTT2_DEVICE bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth IODev myEcovacsServer
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth readingList bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onSleep/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onChargeState/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onMapSet/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onError/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onCleanInfo/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/clean/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1001/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onMapTrace/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onMajorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onMinorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onPos/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportStats/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onStats/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onBattery/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportPos/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportMajorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportMinorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportMapTrace/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportMapSubSet/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onSpeed/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/clean/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1002/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/getBattery/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/2001/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/charge/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1003/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/setBreakPoint/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1004/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/setCarpertPressure/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1006/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/setWaterInfo/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1007/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/setBlock/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1008/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/playSound/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1012/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth room Saugroboter

setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:34:20 body_data_enable 0
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:34 body_data_isCharging 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 16:04:20 body_data_mid 409307405
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:34 body_data_mode slot
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 16:04:20 body_data_msid 10
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 16:04:20 body_data_subsets_1_mssid 0
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 16:04:20 body_data_subsets_2_mssid 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 16:04:20 body_data_subsets_3_mssid 3
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 16:04:20 body_data_subsets_4_mssid 5
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-21 16:04:20 body_data_type vw
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:34 header_fwVer 1.7.9
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:34 header_hwVer 0.1.1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:34 header_pri 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:34 header_ts 1592937808284
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:34 header_tzm 480
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:34 header_ver 0.0.1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_code 0
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_area 0
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:42 j_body_data_cellHeight 8
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:42 j_body_data_cellWidth 8
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_chargePos_1_a -80
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_chargePos_1_x 268
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_chargePos_1_y 302
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_cid 768420321
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:45 j_body_data_cleanState_content 2
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:45 j_body_data_cleanState_id 122
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:45 j_body_data_cleanState_motionState working
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:45 j_body_data_cleanState_router plan
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:45 j_body_data_cleanState_type spotArea
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_content 2
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:31 j_body_data_deebotPos_a 83
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:31 j_body_data_deebotPos_invalid 0
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:31 j_body_data_deebotPos_x 208
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:31 j_body_data_deebotPos_y 153
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_isLow 0
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_mapCount 9
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:42 j_body_data_mid 409307405
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_mssid 0
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:42 j_body_data_pieceHeight 100
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:42 j_body_data_pieceIndex 36
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:42 j_body_data_pieceValue XQAABAAQJwAAAADr/JAPhL+efdj+XM45Rg1P/GysKnrqdqOkRjp8uRvjP+fnaCLJIWqGSFkU/zkAj64MOKcMjRwzBn6is8L/PFqFtPHutlIYBz1Zi7iv7W+P2aiWDSl/Eoz2NCNSnW2bCm/JLHXk2FPNsF8kX+o+aNh9M+GDY7o6+wiRvazGXPT3A6hQmfUDJ2klIjoGFAaksiIs+ebT7DMXThseJ7FSTpXllgwZWI3OyviQYLfRvsUk2NUw8rdqbdB029jdya0KFCnjrA8/XnUQmfyHAD0RXaAbRsLUEjKOPkgLotFMK2kcHCUV0z+B5vBEfcAxRj+2LtwU08tmwfbOK7iO+Z20NQh59s01opLeCrlttkdsp/JlBew1EWVTY1lzf26OqmJcvOw6XmgEijj/Ounm0ozxjpqsPy1JI21I1N6xEDHrmmZuEcChlgVptdtHbQZ69yCXoi7m1eadfGJKqg1/7iaFVUclqT5uhKljbKdCsi2oMQv/Jw8zAaJ+bPQ7FhIpZie2YwMOjNruSQAmWX7P8M17oXDAFdeNrSZSKkfdUFSU9ajTErDeYPGuXvVVLULxzInQSA0tgg==
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:42 j_body_data_pieceWidth 100
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:42 j_body_data_pixel 50
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_pointCount 2
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:38:03 j_body_data_saOrder
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:35 j_body_data_speed 0
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_start 1592937756
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:36 j_body_data_state idle
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_stop 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_stopReason 2
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:38:03 j_body_data_subType 0
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_tid 187407
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_time 16
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_totalCount 2
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_traceStart 0
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_data_traceValue XQAABAAKAAAAADA/wSAERV7XgAAAAA==
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:36 j_body_data_trigger app
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:42 j_body_data_type ol
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:42 j_body_data_value 1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,3598963604,1962445609,3776464621,1295764014,1295764014,1295764014,1295764014,1295764014,2901055706,3482199629,89710766,1295764014,1295764014,1295764014,1295764014,1295764014,4164787420,4155340806,4212014900,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:42:58 j_body_msg ok
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:42 j_header_fwVer 1.7.9
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:42 j_header_hwVer 0.1.1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:42 j_header_pri 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:42 j_header_ts 1592937816327
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:42 j_header_tzm 480
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-23 20:43:42 j_header_ver 0.0.1


Internals:
   CFGFN     
   CID        bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth
   DEF        bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth
   DEVICETOPIC MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth
   FUUID      5eeef602-f33f-86cf-d13a-7d622f088f3e0c69
   IODev      myEcovacsServer
   LASTInputDev myEcovacsServer
   MSGCNT     743
   NAME       MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth
   NR         2809
   STATE      ???
   TYPE       MQTT2_DEVICE
   myEcovacsServer_MSGCNT 743
   myEcovacsServer_TIME 2020-06-23 20:43:42
   READINGS:
     2020-06-23 20:34:20   body_data_enable 0
     2020-06-23 20:43:34   body_data_isCharging 1
     2020-06-21 16:04:20   body_data_mid   409307405
     2020-06-23 20:43:34   body_data_mode  slot
     2020-06-21 16:04:20   body_data_msid  10
     2020-06-21 16:04:20   body_data_subsets_1_mssid 0
     2020-06-21 16:04:20   body_data_subsets_2_mssid 1
     2020-06-21 16:04:20   body_data_subsets_3_mssid 3
     2020-06-21 16:04:20   body_data_subsets_4_mssid 5
     2020-06-21 16:04:20   body_data_type  vw
     2020-06-23 20:43:34   header_fwVer    1.7.9
     2020-06-23 20:43:34   header_hwVer    0.1.1
     2020-06-23 20:43:34   header_pri      1
     2020-06-23 20:43:34   header_ts       1592937808284
     2020-06-23 20:43:34   header_tzm      480
     2020-06-23 20:43:34   header_ver      0.0.1
     2020-06-23 20:42:58   j_body_code     0
     2020-06-23 20:42:58   j_body_data_area 0
     2020-06-23 20:43:42   j_body_data_cellHeight 8
     2020-06-23 20:43:42   j_body_data_cellWidth 8
     2020-06-23 20:42:58   j_body_data_chargePos_1_a -80
     2020-06-23 20:42:58   j_body_data_chargePos_1_x 268
     2020-06-23 20:42:58   j_body_data_chargePos_1_y 302
     2020-06-23 20:42:58   j_body_data_cid 768420321
     2020-06-23 20:42:45   j_body_data_cleanState_content 2
     2020-06-23 20:42:45   j_body_data_cleanState_id 122
     2020-06-23 20:42:45   j_body_data_cleanState_motionState working
     2020-06-23 20:42:45   j_body_data_cleanState_router plan
     2020-06-23 20:42:45   j_body_data_cleanState_type spotArea
     2020-06-23 20:42:58   j_body_data_content 2
     2020-06-23 20:43:31   j_body_data_deebotPos_a 83
     2020-06-23 20:43:31   j_body_data_deebotPos_invalid 0
     2020-06-23 20:43:31   j_body_data_deebotPos_x 208
     2020-06-23 20:43:31   j_body_data_deebotPos_y 153
     2020-06-23 20:42:58   j_body_data_isLow 0
     2020-06-23 20:42:58   j_body_data_mapCount 9
     2020-06-23 20:43:42   j_body_data_mid 409307405
     2020-06-23 20:42:58   j_body_data_mssid 0
     2020-06-23 20:43:42   j_body_data_pieceHeight 100
     2020-06-23 20:43:42   j_body_data_pieceIndex 36
     2020-06-23 20:43:42   j_body_data_pieceValue XQAABAAQJwAAAADr/JAPhL+efdj+XM45Rg1P/GysKnrqdqOkRjp8uRvjP+fnaCLJIWqGSFkU/zkAj64MOKcMjRwzBn6is8L/PFqFtPHutlIYBz1Zi7iv7W+P2aiWDSl/Eoz2NCNSnW2bCm/JLHXk2FPNsF8kX+o+aNh9M+GDY7o6+wiRvazGXPT3A6hQmfUDJ2klIjoGFAaksiIs+ebT7DMXThseJ7FSTpXllgwZWI3OyviQYLfRvsUk2NUw8rdqbdB029jdya0KFCnjrA8/XnUQmfyHAD0RXaAbRsLUEjKOPkgLotFMK2kcHCUV0z+B5vBEfcAxRj+2LtwU08tmwfbOK7iO+Z20NQh59s01opLeCrlttkdsp/JlBew1EWVTY1lzf26OqmJcvOw6XmgEijj/Ounm0ozxjpqsPy1JI21I1N6xEDHrmmZuEcChlgVptdtHbQZ69yCXoi7m1eadfGJKqg1/7iaFVUclqT5uhKljbKdCsi2oMQv/Jw8zAaJ+bPQ7FhIpZie2YwMOjNruSQAmWX7P8M17oXDAFdeNrSZSKkfdUFSU9ajTErDeYPGuXvVVLULxzInQSA0tgg==
     2020-06-23 20:43:42   j_body_data_pieceWidth 100
     2020-06-23 20:43:42   j_body_data_pixel 50
     2020-06-23 20:42:58   j_body_data_pointCount 2
     2020-06-23 20:38:03   j_body_data_saOrder
     2020-06-23 20:43:35   j_body_data_speed 0
     2020-06-23 20:42:58   j_body_data_start 1592937756
     2020-06-23 20:43:36   j_body_data_state idle
     2020-06-23 20:42:58   j_body_data_stop 1
     2020-06-23 20:42:58   j_body_data_stopReason 2
     2020-06-23 20:38:03   j_body_data_subType 0
     2020-06-23 20:42:58   j_body_data_tid 187407
     2020-06-23 20:42:58   j_body_data_time 16
     2020-06-23 20:42:58   j_body_data_totalCount 2
     2020-06-23 20:42:58   j_body_data_traceStart 0
     2020-06-23 20:42:58   j_body_data_traceValue XQAABAAKAAAAADA/wSAERV7XgAAAAA==
     2020-06-23 20:43:36   j_body_data_trigger app
     2020-06-23 20:43:42   j_body_data_type ol
     2020-06-23 20:43:42   j_body_data_value 1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,3598963604,1962445609,3776464621,1295764014,1295764014,1295764014,1295764014,1295764014,2901055706,3482199629,89710766,1295764014,1295764014,1295764014,1295764014,1295764014,4164787420,4155340806,4212014900,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014
     2020-06-23 20:42:58   j_body_msg      ok
     2020-06-23 20:43:42   j_header_fwVer  1.7.9
     2020-06-23 20:43:42   j_header_hwVer  0.1.1
     2020-06-23 20:43:42   j_header_pri    1
     2020-06-23 20:43:42   j_header_ts     1592937816327
     2020-06-23 20:43:42   j_header_tzm    480
     2020-06-23 20:43:42   j_header_ver    0.0.1
Attributes:
   IODev      myEcovacsServer
   readingList bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onSleep/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onChargeState/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onMapSet/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onError/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onCleanInfo/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/clean/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1001/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onMapTrace/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onMajorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onMinorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onPos/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportStats/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onStats/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onBattery/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportPos/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportMajorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportMinorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportMapTrace/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportMapSubSet/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onSpeed/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/clean/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1002/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/getBattery/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/2001/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/charge/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1003/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/setBreakPoint/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1004/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/setCarpertPressure/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1006/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/setWaterInfo/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1007/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/setBlock/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1008/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/playSound/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1012/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
   room       Saugroboter


Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: KölnSolar am 23 Juni 2020, 23:11:45
as expected.  ;D

Wir bleiben mal bei der Version ohne complex.  ;)

Haben wir den konkreten Fall, wo wir Inhalte mehrerer topics unterscheiden müssen ?  :-\ Ich erinnere mich schwach, ja, aber welche topics bzw. readings waren das ?
Bei den "Wartungsdaten" steht die "Differenzierung" ja im JSON. Da werden wir mit Perl ran müssen.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: Beta-User am 24 Juni 2020, 07:13:53
Zitat von: KölnSolar am 23 Juni 2020, 23:11:45
Wir bleiben mal bei der Version ohne complex.  ;)
Warum das Kind mit dem Bade auskippen? Ihr könnt in den Präfix bei json2nameValue() auch (z.B. pro Topic-branch) was eigenes oder auch nichts (,'',$JSONMAP) reinschreiben, was aber (mAn.) nur bei den branches Sinn macht, die tatsächlich "scheinidentische" Readings ergäben. $JSONMAP kann dann für "schöne" Readingnamen sorgen, selbst wenn kein Präfix angesagt ist...

Vielleicht werft ihr auch mal einen Blick auf das "6channel_ethernet_board_6input_split"+Verwandtschaft, aktuell z.B. rund um L2496. Ist zwar eher erst mal ein vager Verdacht, dass euch das an einer oder zwei Stellen weiterhelfen könnte, aber falls Fragen sind, was da passiert: einfach melden.
(Das ist eine der Template-Familien, die wegen prinzipieller Lösungsansätze besonders interessant sind).
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: KölnSolar am 24 Juni 2020, 07:18:43
ZitatWarum das Kind mit dem Bade auskippen? Ihr könnt in den Präfix bei json2nameValue() auch (z.B. pro Topic-branch) was eigenes oder auch nichts (,'',$JSONMAP) reinschreiben, was aber (mAn.) nur bei den branches Sinn macht, die tatsächlich "scheinidentische" Readings ergäben. $JSONMAP kann dann für "schöne" Readingnamen sorgen, selbst wenn kein Präfix angesagt ist...
Genau so haben wir es ja bereits. Daher ja meine Frage nach den scheinidentischen readings
ZitatHaben wir den konkreten Fall, wo wir Inhalte mehrerer topics unterscheiden müssen ?
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: Beta-User am 24 Juni 2020, 07:31:06
...stimmt, sorry für den unnötigen Hinweis...
(Das Teil macht ja wirklich eine ziemlich krude Mischung aus JSON und Klartext ??? . Da ihr einige Zweige bewußt nicht auswertet: die könnte man evtl. auch über eine regex-Schreibweise der readingList zusammenfassen, ist vielleicht (?) übersichtlicher).

Was von meinem vorigen Beitrag bliebe: das mit dem 6-channel-Ding ist mMn. einen Blick wert ;) .
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 29 Juni 2020, 14:18:42
@KölnSolar

Momentan fahre ich 2gleisig. Sprich 2 x MQTT_DEVICE.

Einmal das Bumperdevice.

defmod Ozmo950 MQTT2_DEVICE fhemuser_bumper_GLBbe7d18eG9
attr Ozmo950 IODev myEcovacsServer
attr Ozmo950 autocreate 1
attr Ozmo950 devicetopic bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
attr Ozmo950 getList Battery:noArg BatteryState iot/p2p/getBattery/helperbot/bumper/helperbot/$DEVICETOPIC/q/2001/j {}\
Charging:noArg Charging iot/p2p/getChargeState/helperbot/bumper/helperbot/$DEVICETOPIC/q/2002/j {}\
Cleaning:noArg CleaningState iot/p2p/getCleanInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/2003/j {}\
Speed:noArg iot/p2p/getSpeed/helperbot/bumper/helperbot/$DEVICETOPIC/q/2004/j {}\
Error:noArg Error iot/p2p/getError/helperbot/bumper/helperbot/$DEVICETOPIC/q/2005/j {}\
LifeSpan:noArg LifeSpan iot/p2p/getLifeSpan/helperbot/bumper/helperbot/$DEVICETOPIC/q/2006/j {"body": {"data": ["brush", "sideBrush", "heap"]}\
Schedule:noArg getSched_p iot/p2p/getSched/helperbot/bumper/helperbot/$DEVICETOPIC/q/2007/j {}\
Sleep:noArg SleepState iot/p2p/getSleep/helperbot/bumper/helperbot/$DEVICETOPIC/q/2008/j {}\
Statistic:noArg getStats_p iot/p2p/getStats/helperbot/bumper/helperbot/$DEVICETOPIC/q/2009+/j {}\
Water:noArg Water iot/p2p/getWaterInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/2010/j {}\
\

attr Ozmo950 icon vacuum_bold
attr Ozmo950 jsonMap header_pri:0 header_tzm:0 header_ts:0 header_ver:Version header_fwVer:Firmware header_hwVer:Hardware body_data_value:BatteryState body_data_isLow:0 body_data_isCharging:Charging body_data_mode:0 body_data_trigger:Trigger body_data_state:0 body_data_speed:Speed body_data_area:CleaningArea body_data_time:0 body_data_cid:0 body_data_start:LastStart body_data_type:CleaningMode body_data_code:Systemcode body_data_left:Lifetime body_data_left:Lifetime_total body_data_enable:SleepState body_data_amount:Water body_data_1_left:LifetimeSidebrush body_data_1_total:LifetimeSidebrush_total body_data_1_type:0 body_data_2_left:LifetimeBrush body_data_2_total:LifetimeBrush_total body_data_2_type:0 body_data_3_left:LifetimeHeap body_data_3_total:LifetimeHeap_total body_data_3_type:0
attr Ozmo950 periodicCmd Battery:15
attr Ozmo950 readingList \$SYS/broker/version:.* version\
\$SYS/#:.* BrokerMessage\
\x5c\x24SYS/broker/version:.* version\
iot/atr/onPos/$DEVICETOPIC/j:.* onPos\
iot/atr/onMapTrace/$DEVICETOPIC/j:.* onMapTrace\
iot/atr/onMajorMap/$DEVICETOPIC/j:.* onMajorMap\
iot/atr/onMinorMap/$DEVICETOPIC/j:.* onMinorMap\
iot/atr/onStats/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/onBattery/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/onCachedMapInfo/$DEVICETOPIC/j:.* onCachedMapInfo\
iot/atr/onSched/$DEVICETOPIC/j:.* onSched\
iot/atr/onMapState/$DEVICETOPIC/j:.* onMapState\
iot/atr/reportStats/$DEVICETOPIC/j:.* reportStats\
iot/atr/reportPos/$DEVICETOPIC/j:.* reportPos\
iot/atr/reportMajorMap/$DEVICETOPIC/j:.* reportMajorMap\
iot/atr/reportMinorMap/$DEVICETOPIC/j:.* reportMinorMap\
iot/atr/reportMapTrace/$DEVICETOPIC/j:.* reportMapTrace\
iot/atr/onSpeed/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/onCleanInfo/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/onChargeState/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/onRelocationState/$DEVICETOPIC/j:.* onRelocationState\
iot/atr/onEvt/$DEVICETOPIC/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/[^/]+/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* LastRequest\
iot/p2p/[^/]+/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* LastResponse\
iot/p2p/getAdvancedMode/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getAdvancedMode_p\
iot/p2p/getBattery/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getBlock/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getBlock_p\
iot/p2p/getBreakPoint/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getBreakPoint_p\
iot/p2p/getCachedMapInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getCachedMapInfo_p\
iot/p2p/getChargeState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getCleanInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getError/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getLifeSpan/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getMajorMap/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMajorMap_p\
iot/p2p/getMapSet/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMapSet_p\
iot/p2p/getMapState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMapState_p\
iot/p2p/getMapSubSet/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMapSubSet_p\
iot/p2p/getMapTrace/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMapTrace_p\
iot/p2p/getMinorMap/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMinorMap_p\
iot/p2p/getPos/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getPos_p\
iot/p2p/getRelocationState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getRelocationState_p\
iot/p2p/getSched/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getSched_p\
iot/p2p/getSleep/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getStats/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getStats_p\
iot/p2p/getWaterInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/p2p/getSpeed/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT,"",$JSONMAP) }\
iot/atr/reportMapSubSet/$DEVICETOPIC/j:.* reportMapSubSet\
iot/atr/onSleep/$DEVICETOPIC/j:.* onSleep\

attr Ozmo950 room Saugroboter
attr Ozmo950 setList 01_CleaningAuto:start,stop iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/1001/j {"body": {"data": {"act": "$EVTPART1", "type": "auto"}}}\
02_CleaningSpot:0,1,2,3,4 iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/1002/j {"body": {"data": {"act": "start", "content": "$EVTPART1", "type": "spotArea"}}}\
03_Charging:go iot/p2p/charge/helperbot/bumper/helperbot/$DEVICETOPIC/q/1003/j {"body": {"data": {"act": "$EVTPART1"}}}\
04_BackToWorkOnOff:0,1 iot/p2p/setBreakPoint/helperbot/bumper/helperbot/$DEVICETOPIC/q/1004/j {"body": {"data": {"enable": $EVTPART1}}}\
05_Speed:1000,0,1,2 iot/p2p/setSpeed/helperbot/bumper/helperbot/$DEVICETOPIC/q/1005/j {"body": {"data": {"speed": $EVTPART1}}}\
06_AutoSpeedOnOff:0,1 iot/p2p/setCarpertPressure/helperbot/bumper/helperbot/$DEVICETOPIC/q/1006/j {"body": {"data": {"enable": $EVTPART1}}}\
07_SetWater:1,2,3,4 iot/p2p/setWaterInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/1007/j {"body": {"data": {"amount": $EVTPART1, "enable": 0}}}\
08_RestTimeOnOff:0,1 iot/p2p/setBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/1008/j {"body": {"data": {"enable": $EVTPART1}}, "header": {"tzm": 120}}\
09_RestTimeStart:selectnumbers,0,1,23,0,lin chiquer iot/p2p/setBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/1009/j {"body": {"data": {"end": "7:0", "start": "$EVTPART1:0"}}, "header": {"tzm": 120}}\
10_RestTimeEnd:selectnumbers,0,1,23,0,lin chiquer iot/p2p/setBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/1010/j {"body": {"data": {"end": "$EVTPART1:0", "start": "21:0"}}, "header": {"tzm": 120}}\
11_SetVolume:selectnumbers,0,1,10,0,lin chiquer iot/p2p/setVolume/helperbot/bumper/helperbot/$DEVICETOPIC/q/1011/j {"body": {"data": {"total": 10, "volume": $EVTPART1}}, "header": {"tzm": 120}}\
12_PlaySound:noArg iot/p2p/playSound/helperbot/bumper/helperbot/$DEVICETOPIC/q/1012/j {"body": {"data": {"count": 1, "sid": 30}}}\
13_RestTimeEndStart:textField iot/p2p/setBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/1013/j {"body": {"data": {"end": "$EVTPART1:0", "start": "$EVTPART2:0"}}, "header": {"tzm": 120}}\
14_move:start,backward,forward,SpinLeft,SpinRight,TurnAround,stop iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/1001/j {"body": {"data": {"act": "$EVTPART1", "type": "manual"}}}
attr Ozmo950 stateFormat ActualStatus: LastRequest
attr Ozmo950 subType Saugroboter
attr Ozmo950 webCmd 01_CleaningAuto:02_CleaningSpot:03_Charging:14_move
attr Ozmo950 webCmdLabel cleaning_normal:cleaning_spot:return_to_charge

setstate Ozmo950 ActualStatus: LastRequest
setstate Ozmo950 2020-06-29 14:02:22 BatteryState 100
setstate Ozmo950 2020-06-29 12:58:23 Charging 1
setstate Ozmo950 2020-06-29 12:49:18 CleaningArea 0
setstate Ozmo950 2020-06-29 12:49:18 CleaningMode auto
setstate Ozmo950 2020-06-29 14:02:22 Firmware 1.7.9
setstate Ozmo950 2020-06-29 14:02:22 Hardware 0.1.1
setstate Ozmo950 2020-06-29 14:02:22 LastResponse {"header":{"pri":1,"tzm":480,"ts":"1593432134529","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"value":100,"isLow":0}}}
setstate Ozmo950 2020-06-29 12:49:18 LastStart 1593427745
setstate Ozmo950 2020-06-29 12:50:00 Speed 0
setstate Ozmo950 2020-06-29 12:38:36 Systemcode 1064
setstate Ozmo950 2020-06-29 12:50:00 Trigger app
setstate Ozmo950 2020-06-29 14:02:22 Version 0.0.1
setstate Ozmo950 2020-06-29 14:02:22 body_code 0
setstate Ozmo950 2020-06-29 12:49:18 body_data_cleanState_id 122
setstate Ozmo950 2020-06-29 12:49:18 body_data_cleanState_motionState working
setstate Ozmo950 2020-06-29 12:49:18 body_data_cleanState_router plan
setstate Ozmo950 2020-06-29 12:49:18 body_data_cleanState_type auto
setstate Ozmo950 2020-06-29 14:02:22 body_msg ok
setstate Ozmo950 2020-06-29 12:50:05 onMajorMap {"header":{"pri":1,"tzm":480,"ts":"1593427798113","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceWidth":100,"pieceHeight":100,"cellWidth":8,"cellHeight":8,"pixel":50,"value":"1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1183747191,1656078210,2089534297,1295764014,1295764014,1295764014,1295764014,1295764014,2994777366,3016057941,369924367,1295764014,1295764014,1295764014,1295764014,1295764014,120121564,974362140,2990405093,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014","type":"ol"}}}
setstate Ozmo950 2020-06-29 12:49:35 onMapTrace {"header":{"pri":1,"tzm":480,"ts":"1593427768124","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"tid":"297990","totalCount":27,"traceStart":26,"pointCount":1,"traceValue":"XQAABAAFAAAAAEo/wYAAAAAAAA=="}}}
setstate Ozmo950 2020-06-29 12:50:05 onMinorMap {"header":{"pri":1,"tzm":480,"ts":"1593427798123","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceIndex":36,"pieceValue":"XQAABAAQJwAAAADr/JAPiKYid/UhxbsNr0+4I5Awja7FsNc1CVsu5hDM5pBqiz2XxVRQHIr39d5VbPJQowjOE8htgsxI7ZVXA17J1JcTy+2HZ++pNtCBxgQ/ILrW9kXM0v1owIlcbJ7KGQltn9VoVACAseZ6PQLlXjUZuqDxNvYUayo6HZlgAaC72vrdJcfOvcwXjfSoi/aH+CmqcKb0q73tukg/OH8BtE5oVxTl2HoL/5czZkW/JINcJKCs3oIFMRVrRruaCF6HMsPyRUQvPgirolLx0M5v0cys/2Q5hcCPp2JHTKbNYGLPiAnNn8GHussylslI8jXENMZKFJj+Wc/8JxHLMRen7LR8U1qJY9bcJZ9LBaVIpipHLKvCLN/OurXTITM6HOGmtkCLDSkFVGcrmRj5rrLczxyZOLE5lP+FkNp23cxp0+Iy9je5LkRluCIDXHsG9NuakqHjMLsNIwoCiw=="}}}
setstate Ozmo950 2020-06-29 12:49:56 onPos {"header":{"pri":1,"tzm":480,"ts":"1593427789110","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"deebotPos":{"x":216,"y":179,"a":81,"invalid":0}}}}
setstate Ozmo950 2020-06-29 12:38:36 onRelocationState {"header":{"pri":1,"tzm":480,"ts":"1593427108574","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mode":"slot","state":"ok","isHasMap":1}}}
setstate Ozmo950 2020-06-29 12:58:23 onSleep {"header":{"pri":1,"tzm":480,"ts":"1593428296110","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"enable":1}}}
setstate Ozmo950 2020-06-29 12:49:36 reportMajorMap {"header":{"pri":1,"tzm":480,"ts":"1593427769425","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"428756298","value":"1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1183747191,1661258268,685904980,1295764014,1295764014,1295764014,1295764014,1295764014,2994777366,3317146479,684867109,1295764014,1295764014,1295764014,1295764014,1295764014,120121564,974362140,2990405093,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014","pieceWidth":100,"pieceHeight":100,"cellWidth":8,"cellHeight":8,"pixel":50}}}
setstate Ozmo950 2020-06-29 12:49:37 reportMapSubSet {"header":{"pri":1,"tzm":480,"ts":"1593427769465","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"428756298","mssid":"0","type":"vw","value":"[-652,-6545,-652,-5606,-294,-5606,-294,-6545]"}}}
setstate Ozmo950 2020-06-29 12:49:37 reportMapTrace {"header":{"pri":1,"tzm":480,"ts":"1593427769465","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"428756298","tid":"297990","totalCount":27,"traceStart":0,"pointCount":27,"traceValue":"XQAABACHAAAAAAmAHa8u1E6smkBjbUibtJ6yS3RyY8HqQ1VAkmLnJI1seWV50cczoUCgm3az/zDMksekyCp30oPp3nAwEmgehxapD7I6CFOnqmp/5go/RxKig6JMzl67d8Vckg=="}}}
setstate Ozmo950 2020-06-29 12:49:37 reportMinorMap {"header":{"pri":1,"tzm":480,"ts":"1593427769442","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"428756298","pieceIndex":44,"pieceValue":"XQAABAAQJwAAAADn/IIPLMU8VPh/ykiO9Xcz6uaP7LdQ4i9IBQytr6lgj/APmBGLaKJHzJkhgMX8Zq0SMtuOreFqeY2Q+FB2VB9XYRBUJ6lZNTkqp6y/DbXR/nwcyBIVhUchiSyp9UtkByStEQ/LtjUqfiJTTQ=="}}}
setstate Ozmo950 2020-06-29 12:49:36 reportPos {"header":{"pri":1,"tzm":480,"ts":"1593427769420","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"428756298","chargePos":[{"x":200,"y":300,"a":-95}],"deebotPos":{"x":-1126,"y":438,"a":171}}}}
setstate Ozmo950 2020-06-29 12:49:36 reportStats {"header":{"pri":1,"tzm":480,"ts":"1593427769418","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"428756298","type":"auto","stop":1,"mapCount":9,"area":0,"time":24,"start":"1593427745","content":"","stopReason":2}}}
setstate Ozmo950 2020-06-28 22:58:02 state 12_PlaySound


Und einmal das vom MQTT_SERVER automatisch generierte.

defmod MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth MQTT2_DEVICE bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth IODev myEcovacsServer
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth readingList bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onSleep/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onChargeState/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onMapSet/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onError/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth room Saugroboter

setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 12_PlaySound
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 12:58:23 body_data_enable 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 12:58:23 body_data_isCharging 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 12:58:23 body_data_mode slot
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 12:58:23 header_fwVer 1.7.9
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 12:58:23 header_hwVer 0.1.1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 12:58:23 header_pri 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 12:58:23 header_ts 1593428296112
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 12:58:23 header_tzm 480
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 12:58:23 header_ver 0.0.1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 12:55:40 state 12_PlaySound


So, jetzt hatte ich versucht das automatisch generierte anzupassen. Ich dachte, rein von der Logik, ich muss das set von

12_PlaySound:noArg iot/p2p/playSound/helperbot/bumper/helperbot/$DEVICETOPIC/q/1012/j {"body": {"data": {"count": 1, "sid": 30}}}

auf

12_PlaySound:noArg iot/p2p/playSound/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j/q/1012/j {"body": {"data": {"count": 1, "sid": 30}}}

ändern.


Das funktioniert aber nicht. Jetzt ist meine Frage, warum benötige ich

/helperbot/bumper/helperbot/

Das sieht doch stark nach Bumper aus. Auch ein Neustart vom Bot hat nicht geholfen.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 29 Juni 2020, 15:14:17
Ok,
ich muss nochmal bei 0 anfangen. Beide Devices gelöscht, das beißt sich.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 29 Juni 2020, 15:30:03
Ok, aber auch da. Ohne

/helperbot/bumper/helperbot/


funktioniert es nicht.

defmod MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth MQTT2_DEVICE bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth IODev myEcovacsServer
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth getList Battery:noArg BatteryState iot/p2p/getBattery/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/2001/j {}
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth readingList bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onCleanInfo/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onMapTrace/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onChargeState/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportStats/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onMajorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onMinorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onStats/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onPos/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onBattery/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportPos/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportMajorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportMinorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportMapTrace/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportMapSubSet/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onSpeed/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/clean/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1001/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onEvt/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/charge/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/1003/j:.* { json2nameValue($EVENT, 'j_', $JSONMAP) }
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth room MQTT2_DEVICE
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth setList 01_CleaningAuto:start,stop iot/p2p/clean/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/1001/j {"body": {"data": {"act": "$EVTPART1", "type": "auto"}}}\
02_CleaningSpot:0,1,2,3,4 iot/p2p/clean/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/1002/j {"body": {"data": {"act": "start", "content": "$EVTPART1", "type": "spotArea"}}}\
03_Charging:go iot/p2p/charge/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/1003/j {"body": {"data": {"act": "$EVTPART1"}}}

setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 03_Charging
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_code 0
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_data_area 0
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:40 j_body_data_cellHeight 8
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:40 j_body_data_cellWidth 8
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_data_chargePos_1_a -95
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_data_chargePos_1_x 240
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_data_chargePos_1_y 307
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_data_cid 605473818
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:01 j_body_data_cleanState_id 122
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:01 j_body_data_cleanState_motionState working
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:01 j_body_data_cleanState_router plan
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:01 j_body_data_cleanState_type auto
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:27:39 j_body_data_code 1023
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_data_content
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:31 j_body_data_deebotPos_a 84
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:31 j_body_data_deebotPos_invalid 0
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:31 j_body_data_deebotPos_x 227
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:31 j_body_data_deebotPos_y 223
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:33 j_body_data_isCharging 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_data_mapCount 9
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:40 j_body_data_mid 409307405
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:33 j_body_data_mode slot
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_data_mssid 0
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:40 j_body_data_pieceHeight 100
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:40 j_body_data_pieceIndex 36
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:40 j_body_data_pieceValue XQAABAAQJwAAAADr/JAPiKYid/UhxbsNr0+4I5Awja7FsNc1CVsu5hDM5pBqiz2XxVRQHIr39d5VmditRmX0NchwTlNfmHvT2zWVnPvMPthM2ocSE7XFxv0T7uxEAEMExSq27q6sjsEzlV9hZWthhDGuLjywwm4C1RDSPMbBBf3ILpzIECvQyBEt1128wmRiaPThleQTVPhx0joEf5a7GKEFDqOGVhxfmTtb9k3Zxsnnnc9ixMBmNo4f2+G0C4EYnZXcQoa/3ByzM9UmWEjYwTChE+t112A4cDfriyhjA8Rh0eucCt7cFaoJwp26OK1zZ8ov8//x0d8uCZcBLFDNJ6sYuwn2LPahkLAh4WJMuKnxdSlnslvydGKMTfGHtTv9yDaqzG9FjCcJYbUalyxrikhAnDvUL/oogOLdTAE+7z+COpkjeYrI6DjlN6R2MZ8U/KVw8qTM1C3Vl1pyqM3r8BjA3ZWRZXkucdwPLYMH0RysVlr9f8+M
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:40 j_body_data_pieceWidth 100
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:40 j_body_data_pixel 50
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_data_pointCount 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:34 j_body_data_speed 0
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_data_start 1593437267
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:34 j_body_data_state idle
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_data_stop 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_data_stopReason 2
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_data_tid 430099
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_data_time 19
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_data_totalCount 26
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_data_traceStart 25
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_data_traceValue XQAABAAFAAAAAFC/wWAAAAAAAA==
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:34 j_body_data_trigger app
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:40 j_body_data_type ol
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:40 j_body_data_value 1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1183747191,1873839180,3099234100,1295764014,1295764014,1295764014,1295764014,1295764014,2994777366,594799685,4192440891,1295764014,1295764014,1295764014,1295764014,1295764014,120121564,974362140,2990405093,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 j_body_msg ok
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:40 j_header_fwVer 1.7.9
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:40 j_header_hwVer 0.1.1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:40 j_header_pri 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:40 j_header_ts 1593437313436
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:40 j_header_tzm 480
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:40 j_header_ver 0.0.1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth 2020-06-29 15:28:13 state 03_Charging

Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 29 Juni 2020, 22:14:06
move:backward,forward,SpinLeft,SpinRight,TurnAround,stop iot/p2p/Move/helperbot/bumper/helperbot/$DEVICETOPIC/q/1119/x <ctl td="Move"><move action="$EVTPART1"/></ctl>

Ganz vergessen, damit hatte ich experimentiert. Ohne Erfolg.


move:backward,forward,SpinLeft,SpinRight,TurnAround,stop iot/p2p/Move/helperbot/bumper/helperbot/$DEVICETOPIC/q/1119/j  {"body": {"data": {"act": "$EVTPART1", "type": "auto"}}}
move:backward,forward,SpinLeft,SpinRight,TurnAround,stop iot/p2p/Move/helperbot/bumper/helperbot/$DEVICETOPIC/q/1119/j  {"body": {"data": {"act": "$EVTPART1", "type": "manual"}}}
move:backward,forward,SpinLeft,SpinRight,TurnAround,stop iot/p2p/Move/helperbot/bumper/helperbot/$DEVICETOPIC/q/1119/j {"body": {"data": {"act": "$EVTPART1"}}}

Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: KölnSolar am 29 Juni 2020, 22:15:46
Das "automatisch generierte" ist ja nur das, was der Bot "plappert". Sieht man an dem fehlenden p bzw. q im topic.

ZitatOk, aber auch da. Ohne


Code: [Auswählen]

/helperbot/bumper/helperbot/



funktioniert es nicht.
Nimm es wie es ist.  ;)

Wenn man in MQTT denkt, kann es nicht ohne funktionieren. Irgendeine Struktur der topics wird der Bot ja haben auf die er subscribed. Ich spekuliere, dass bumper beliebig ersetzbar ist, helperbot eher nicht.

/a/b/c/ vermute ich funktioniert nicht
/helperbot/schwatter/helperbot/ vielleicht schon.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 29 Juni 2020, 22:45:12
Ah ok. Ich dachte ich hatte das übersehen, und es wäre ein Überbleibsel von Bumper. Dann das Wetter die Tage, da war die Birne breit.
Habe beide Varianten getestet. Überraschung nochmal, es funktioniert beides  ;D

Beispiel:

12_PlaySound:noArg iot/p2p/playSound/i/suck/dust/$DEVICETOPIC/q/1012/j {"body": {"data": {"count": 1, "sid": 30}}}\

:P
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: KölnSolar am 30 Juni 2020, 08:16:00
Aha,
dann könnte man ja tatsächlich nur mit /1/2/3 oder /x/y/z/ .....arbeiten, um die topics etwas übersichtlicher zu gestalten
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 05 Juli 2020, 10:38:15
Ich habe das MQTT2_DEVICE im ersten Post auf /x/y/z/ umgestellt. Das Bumper_DEVICE aber nicht.
Vielleicht ist das inkompatibel.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: KölnSolar am 05 Juli 2020, 13:40:42
Wie gesagt, Du musst in MQTT denken.

Bot: subscribed scheinbar auf /+/+/+/; die responses immer in der topic-Struktur, die er im request empfangen hat
bumper:
- helperbot: sendet empfangene Befehle aus der App/FHEM mit /helperbot/bumper/helperbot/
FHEM-MQTT-Server: wir bestimmen z.B. /x/y/z/ für die requests
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 05 Juli 2020, 14:55:52
Ok,

hast du eigentlich bei dir einen Weg gefunden die Map zu extrahieren?
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: KölnSolar am 05 Juli 2020, 15:00:30
habe keine map.Aber die ist auch meines Erachtens nichts f. FHEM.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 05 Juli 2020, 15:44:56
Benötige die auch nicht. Das wäre mehr "nice to have". Kann
auch sein das die aus den Daten auf der App generiert wird.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 05 Juli 2020, 18:57:24
Damit meine Frau auch weiß, welche Spotarea angefahren wird, will ich per TTS eine Ansage machen.
Ich möchte halt nicht die FB beschriften. Das sieht doof aus.
Daher habe ich im Eventmonitor geschaut und festgestellt, das z.B nicht das komplette Setkommando mitgeschnitten wird.

2020-07-05 18:45:40 DOIF Ozmo950_DOIF_1 cmd_nr: 2
2020-07-05 18:45:40 DOIF Ozmo950_DOIF_1 cmd: 2
2020-07-05 18:45:40 DOIF Ozmo950_DOIF_1 cmd_event: Ozmo950
2020-07-05 18:45:40 DOIF Ozmo950_DOIF_1 cmd_2
2020-07-05 18:45:40 MQTT2_DEVICE Ozmo950 Version: 0.0.1
2020-07-05 18:45:40 MQTT2_DEVICE Ozmo950 Firmware: 1.7.9
2020-07-05 18:45:40 MQTT2_DEVICE Ozmo950 Hardware: 0.1.1
2020-07-05 18:45:40 MQTT2_DEVICE Ozmo950 BatteryState: 89
2020-07-05 18:45:41 MQTT2_DEVICE Ozmo950 01_CleaningAuto
2020-07-05 18:45:41 MQTT2_DEVICE Ozmo950 Hardware: 0.1.1
2020-07-05 18:45:41 MQTT2_DEVICE Ozmo950 body_data_cleanState_router: plan
2020-07-05 18:45:41 MQTT2_DEVICE Ozmo950 body_data_cleanState_id: 122
2020-07-05 18:45:41 MQTT2_DEVICE Ozmo950 Trigger: app
2020-07-05 18:45:41 MQTT2_DEVICE Ozmo950 Version: 0.0.1
2020-07-05 18:45:41 MQTT2_DEVICE Ozmo950 Firmware: 1.7.9
2020-07-05 18:45:41 MQTT2_DEVICE Ozmo950 body_data_cleanState_type: auto
2020-07-05 18:45:41 MQTT2_DEVICE Ozmo950 LastResponse: {"header":{"pri":1,"tzm":480,"ts":"1593967533520","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok"}}
2020-07-05 18:45:42 MQTT2_DEVICE Ozmo950 onMapTrace: {"header":{"pri":1,"tzm":480,"ts":"1593967533674","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"tid":"30351","totalCount":0,"traceStart":0,"pointCount":0,"traceValue":""}}}
2020-07-05 18:45:48 MQTT2_DEVICE Ozmo950 Version: 0.0.1
2020-07-05 18:45:48 MQTT2_DEVICE Ozmo950 Firmware: 1.7.9
2020-07-05 18:45:48 MQTT2_DEVICE Ozmo950 Charging: 0
2020-07-05 18:45:48 MQTT2_DEVICE Ozmo950 Hardware: 0.1.1
2020-07-05 18:45:49 MQTT2_DEVICE Ozmo950 onMajorMap: {"header":{"pri":1,"tzm":480,"ts":"1593967540678","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceWidth":100,"pieceHeight":100,"cellWidth":8,"cellHeight":8,"pixel":50,"value":"1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1183747191,2795916218,1196072023,1295764014,1295764014,1295764014,1295764014,1295764014,3346166660,702449422,2955726020,1295764014,1295764014,1295764014,1295764014,1295764014,2271336717,1314607644,1546974044,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014","type":"ol"}}}
2020-07-05 18:45:49 MQTT2_DEVICE Ozmo950 onMinorMap: {"header":{"pri":1,"tzm":480,"ts":"1593967540683","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceIndex":27,"pieceValue":"XQAABAAQJwAAAABv/f//o7f/Rz5IFXI5YUCGnkt5tkwIQzsHaLUJV9GRjwrm5J9moFVB8L71CPYs1B/sJhiLlz0s7ETltL56k5I9baPZb1X3LdCkIVO7ICgG8yf/oV00cXkJk6S1yOCwdoHak+40OfvLUmsOqnkVn/t03rFyr+1gEPHFxCmPu9x8QQ5dSMJODxkVSDSuEcDY2N0ZKaxFlfDjIRMYzkUNd8MjXYYW37FK5r1AKq7Kf24xax2FaPMi02eK8+LKdOpIo3+wFSjxO3m/hiw+rRz6AATrcAyrul/KyDa/DX8a2Obpo462Uyb8gYiheoZ57NL6xex9Ro139890yWNPhCmhePY8cyR54qDhCvph3TDtG7rh8eSMDB4b6g0aaqTzE0/KQ49Um6Eh+A6N/nOc6RNk47I0QWefHGb/XWvdpI2H0sDlOU4/UNPgSIsRUqoSEDdWl+UlagBRTURp8bxbypVJHiGMC9+0jV/FwHuOXUA7NPSUUyb8+PwnEJ1rAYiy4nCMMN05WFvftuVsngZiYMYVvbSWxXSvLREAA/tcMIIRFylK9Brl491BKdgC6NtAXDZq41ThMpbWay5SvyCT/yHLeBDVlOZUNQzKDCEp7Wf+ZVlQp3/qonOOIITec8HiLpojW4rxzpLOvfhQrlP2E1+yJTq0Sj07paw3bAfFicQoeUMK51Jqw8li7pk="}}}
2020-07-05 18:45:49 MQTT2_DEVICE Ozmo950 onMinorMap: {"header":{"pri":1,"tzm":480,"ts":"1593967540684","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceIndex":28,"pieceValue":"XQAABAAQJwAAAABv/f//o7f/Rz5IFXI5YUEbxS57/3W0doxddXUjwKNKuN59pDYcMJYzHJbWivwFG6XOT/YurDm/bpL60gBEgeasibTQLkZiPxa7PNRSOzSXkGJuJsYOFSCmoag4pZWhDDC4WaiSwSTUp8/CZQHP2piGHLQkF2dFolQgIPEawGWgU5ryzgz8PAIqhTqJW4Z5HAZEMoln+MFZbypM+hILAnk+l9rGQ7g4FM7v+2DIwBMrHrve+5jFw/sOP74ZDl9MLUzpgu68wnn3SDSd9jXu5j+NMcDFm/sPQY1CWmS3yyVrPFLuEcaA3lWtbri/ApZvbG3qHF3SfohpA29fW9yq66SjiiId6A15cTTBxP2FMRFCdsDuBWncJWigNfSkeBqZVUCteoGlDLlEsZTfWOuXb2eI7ZtIZwQCUSciN6bgyUbXxV9C+72zevS49Kp2gDIdcQpZl+W02DUi0aHPji88yy6yziFThgzwNzr+tufOwpnFO8ryH9qrN6y4EkGhXb0Zes/sGu8/EkzlcrC+J6idIrncEvHLIuWp92oP9+aITXdV1w4yyMr3ilPVYOlRS5/IaTBeYIB1chwgjmn7ZvNHbB//ymbXAyF+tO76C1yvdYfq+NGTPOhttqw36rvL3+A/EWxSDx7aiWTVL/C49DAbd4fSE2hLy3oaOWcd+Q/PYTjibi2SHsSKq5iMSRrSoNCcgOZANXKrgg=="}}}
2020-07-05 18:45:49 MQTT2_DEVICE Ozmo950 onMinorMap: {"header":{"pri":1,"tzm":480,"ts":"1593967540686","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceIndex":35,"pieceValue":"XQAABAAQJwAAAABqfsznLnX8oeJWVem8j+sLS/6FuzWR1cnfw8u83fqyUE4slQTccCWkiOWNBKIB5mZefa4AMWp+7X8MNUz2wENGt8IZtSXK+UUk9aLZkVsU8S9W6GbuQdAqNG/TEaR62P+Hh+R4K1L7isxNNJ8QQ6sWhUfhi8BUjn+QTChspwTzXTZDOZcNx77Nby1Yha0/zmo5R9D65f/3tEQKos6hXUnsba7MXsjzwxNqsmfq+IAUJk7Zecim/RkQFSimA/Q26an5aJOICkTP8Qt+7jcU+//3rL7WMDQhEqjGsy6paCPnAgaeoukgp8O9MEAOc5vA2bl3YesV2poFNbY1AfhoDMm8SAX6d8suYVWQZvdwgDIqZEnL/GfmTimqR4Pqyw28LotP2rZY1rAEQgWjrdtjBF58862AqHF2ndwXnIHYEnVJEt91Tc9+TWOoXWemQNdQUUps31xFxRGWnnNEgBzt2LgEUfcZwVrj5wL9Q7vmSEkwevnhJrEgO54njB09Cb/1z3JkGWcC2Fgc9l7lL1E+WM4AeCAq3vGOpRrZJ7gEmbLvzR4bl++SzCBizTZibn+GZ77mFXuQ3Nvqx7ZO/SHrm5Dy3aeiH1TT8t78REj+5ZTCWPFlHMaGvPBguQMFUhzswt7x9TZukmuuCe1b9OzmAWlonQBmB85NFGyhU8jmyMk+iMlGX+hxxePxkRk7lBi0glMjykfaIqfR2joVj9IcrzPSsy4oCZ74443dzhXVYLXCGbTSZkwbZBi7jVTqB1TfeLj741IQgNxA/+p25stIzxaqtG3G5m+nGpgHiRigSDcA9fuhLxvj+cKNogzmrDDrE1HdSjNgzqHs4IgrJTjRI+MWipUuNL47WBfrLkfQnrj4ntTOUGky/BCL19GS1ieFrtFHDk/AeivKKS2Fc387NkJKT6tNohVG1GSJr6od2865af0kTJ5NN+WDc+blQalOp51tyxs3N3W33fe2EyE8d3DJVtFb10cct/iTNsyS2KdPxNxaH7OqR6cwf9sKRfuzQJcss7tj+CcviRucc2E/++pEQT3vbIWIOk19hgbhwjrdbIIOwAX+9/hSpPSopzvwhKB8yRKQSCKWDTSS+6nyo7x04Z2qyA=="}}}
2020-07-05 18:45:49 MQTT2_DEVICE Ozmo950 onMinorMap: {"header":{"pri":1,"tzm":480,"ts":"1593967540688","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceIndex":36,"pieceValue":"XQAABAAQJwAAAADr/JAPiKYgWUpLA/Pi9ODe1vjyEhHOxdlT+WqatkXHzRJjO/2LY+52bGJz1upuKmQFAmQC3vN8pyTC9BJ/0V6aKHBy32TZWIRcjQYdXvNQVvhiYSMI1b2ZK5En666d8bYCaDvqgc+e4MV9FxJtz7UE5Lqn5sIKFn8irrOPYzTxDouBtOe4QvbOxR+lCQvLQtAj4WPTtyHh/rjscVlSukP4BD7pBgawzjfF3KBKUpMuqg95e1v9mWnDcJKfnpuhen1EVeYN9Tm5L00m03ZASqO2HXbfhFi9gX35IucvbyQnUovbl8K3Mcb/ZjUYX3XY5GlSIOGjPvcebJZlm+Wt7QFB3S1uugAkm4GjOr09cBZkRpEt1BmLhuUiSz2LupsJ+BNDj4yRV1dVs2pPM28DYU1+E00MudCJOAem8ONTWK7rVVjuOn/TuV6eLe0Bx9sQjnE1h5KRIwdtsSsonxauRk2Ou+L0KfA73ScaeEu+DIhgS0SuRA=="}}}
2020-07-05 18:45:50 MQTT2_DEVICE Ozmo950 01_CleaningAuto
2020-07-05 18:45:50 MQTT2_DEVICE Ozmo950 reportStats: {"header":{"pri":1,"tzm":480,"ts":"1593967542519","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"384436368","type":"spotArea","stop":1,"mapCount":9,"area":0,"time":13,"start":"1593967137","content":"1","stopReason":2}}}
2020-07-05 18:45:50 MQTT2_DEVICE Ozmo950 reportPos: {"header":{"pri":1,"tzm":480,"ts":"1593967542522","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"384436368","chargePos":[{"x":216,"y":284,"a":-90}],"deebotPos":{"x":207,"y":-6,"a":88}}}}
2020-07-05 18:45:50 MQTT2_DEVICE Ozmo950 reportMajorMap: {"header":{"pri":1,"tzm":480,"ts":"1593967542527","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"384436368","value":"1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1183747191,2795916218,1196072023,1295764014,1295764014,1295764014,1295764014,1295764014,3346166660,702449422,2955726020,1295764014,1295764014,1295764014,1295764014,1295764014,2271336717,1314607644,1546974044,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014","pieceWidth":100,"pieceHeight":100,"cellWidth":8,"cellHeight":8,"pixel":50}}}
2020-07-05 18:45:50 MQTT2_DEVICE Ozmo950 reportMinorMap: {"header":{"pri":1,"tzm":480,"ts":"1593967542529","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"384436368","pieceIndex":26,"pieceValue":"XQAABAAQJwAAAABv/f//o7f/Rz5IFXI5YVG4kijmo4YH+e7kHoLTL8U6PAFLsVh6tRaj+kdN/4/dbpjebWOVqowaca4h8UigagQYStLcOxOlXRaKdjNtE6eVqTfwXw8A"}}}
2020-07-05 18:45:50 MQTT2_DEVICE Ozmo950 reportMinorMap: {"header":{"pri":1,"tzm":480,"ts":"1593967542533","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"384436368","pieceIndex":27,"pieceValue":"XQAABAAQJwAAAABv/f//o7f/Rz5IFXI5YUCGnkt5tkwIQzsHaLUJV9GRjwrm5J9moFVB8L71CPYs1B/sJhiLlz0s7ETltL56k5I9baPZb1X3LdCkIVO7ICgG8yf/oV00cXkJk6S1yOCwdoHak+40OfvLUmsOqnkVn/t03rFyr+1gEPHFxCmPu9x8QQ5dSMJODxkVSDSuEcDY2N0ZKaxFlfDjIRMYzkUNd8MjXYYW37FK5r1AKq7Kf24xax2FaPMi02eK8+LKdOpIo3+wFSjxO3m/hiw+rRz6AATrcAyrul/KyDa/DX8a2Obpo462Uyb8gYiheoZ57NL6xex9Ro139890yWNPhCmhePY8cyR54qDhCvph3TDtG7rh8eSMDB4b6g0aaqTzE0/KQ49Um6Eh+A6N/nOc6RNk47I0QWefHGb/XWvdpI2H0sDlOU4/UNPgSIsRUqoSEDdWl+UlagBRTURp8bxbypVJHiGMC9+0jV/FwHuOXUA7NPSUUyb8+PwnEJ1rAYiy4nCMMN05WFvftuVsngZiYMYVvbSWxXSvLREAA/tcMIIRFylK9Brl491BKdgC6NtAXDZq41ThMpbWay5SvyCT/yHLeBDVlOZUNQzKDCEp7Wf+ZVlQp3/qonOOIITec8HiLpojW4rxzpLOvfhQrlP2E1+yJTq0Sj07paw3bAfFicQoeUMK51Jqw8li7pk="}}}
2020-07-05 18:45:50 MQTT2_DEVICE Ozmo950 reportMinorMap: {"header":{"pri":1,"tzm":480,"ts":"1593967542536","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"384436368","pieceIndex":28,"pieceValue":"XQAABAAQJwAAAABv/f//o7f/Rz5IFXI5YUEbxS57/3W0doxddXUjwKNKuN59pDYcMJYzHJbWivwFG6XOT/YurDm/bpL60gBEgeasibTQLkZiPxa7PNRSOzSXkGJuJsYOFSCmoag4pZWhDDC4WaiSwSTUp8/CZQHP2piGHLQkF2dFolQgIPEawGWgU5ryzgz8PAIqhTqJW4Z5HAZEMoln+MFZbypM+hILAnk+l9rGQ7g4FM7v+2DIwBMrHrve+5jFw/sOP74ZDl9MLUzpgu68wnn3SDSd9jXu5j+NMcDFm/sPQY1CWmS3yyVrPFLuEcaA3lWtbri/ApZvbG3qHF3SfohpA29fW9yq66SjiiId6A15cTTBxP2FMRFCdsDuBWncJWigNfSkeBqZVUCteoGlDLlEsZTfWOuXb2eI7ZtIZwQCUSciN6bgyUbXxV9C+72zevS49Kp2gDIdcQpZl+W02DUi0aHPji88yy6yziFThgzwNzr+tufOwpnFO8ryH9qrN6y4EkGhXb0Zes/sGu8/EkzlcrC+J6idIrncEvHLIuWp92oP9+aITXdV1w4yyMr3ilPVYOlRS5/IaTBeYIB1chwgjmn7ZvNHbB//ymbXAyF+tO76C1yvdYfq+NGTPOhttqw36rvL3+A/EWxSDx7aiWTVL/C49DAbd4fSE2hLy3oaOWcd+Q/PYTjibi2SHsSKq5iMSRrSoNCcgOZANXKrgg=="}}}
2020-07-05 18:45:50 MQTT2_DEVICE Ozmo950 reportMinorMap: {"header":{"pri":1,"tzm":480,"ts":"1593967542537","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"384436368","pieceIndex":34,"pieceValue":"XQAABAAQJwAAAABuXkiBH7m6dmxkqpscfsBEEQnRXzmzYKIdrNAkuJuU167nlckIAWYRYtwsk5ESPPWM4if+4x7i1G5HMTd6vh+JpUgt/ZWVJRB4yk4HduxPchv2b1H4jENZlRnH+E5HOGx+8u0gM6cRDfShI+8XoSnTHE4VCONnqE88CXFHGQmsXyhefCqn5N6xUOaBuO8DoKuSC0opbNLn1SBWgfeCj2vsAe78CQz2Og8EoItmjl865jXa53KPxSZYvFlmY+HN/El7XZ71r4jJ5eJv5341+SkSpqh+bhu6g8n1v/b4/EanwO339cTnLILLbh+8hERL41g0f62uR1JYdq6tl/REWkk0B1KCcKV4OhBiFoHjCoxfYyuX+wAz+XZ5P0SGUA9YZklaNmPZAR+K4n7SkfHhxPjvKiWB/xyvMnz3gpTcTOAuUTQ9kCovH+fOVwefG0xPkO4sbOcwVUSj"}}}
2020-07-05 18:45:50 MQTT2_DEVICE Ozmo950 reportMinorMap: {"header":{"pri":1,"tzm":480,"ts":"1593967542540","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"384436368","pieceIndex":35,"pieceValue":"XQAABAAQJwAAAABqfsznLnX8oeJWVem8j+sLS/6FuzWR1cnfw8u83fqyUE4slQTccCWkiOWNBKIB5mZefa4AMWp+7X8MNUz2wENGt8IZtSXK+UUk9aLZkVsU8S9W6GbuQdAqNG/TEaR62P+Hh+R4K1L7isxNNJ8QQ6sWhUfhi8BUjn+QTChspwTzXTZDOZcNx77Nby1Yha0/zmo5R9D65f/3tEQKos6hXUnsba7MXsjzwxNqsmfq+IAUJk7Zecim/RkQFSimA/Q26an5aJOICkTP8Qt+7jcU+//3rL7WMDQhEqjGsy6paCPnAgaeoukgp8O9MEAOc5vA2bl3YesV2poFNbY1AfhoDMm8SAX6d8suYVWQZvdwgDIqZEnL/GfmTimqR4Pqyw28LotP2rZY1rAEQgWjrdtjBF58862AqHF2ndwXnIHYEnVJEt91Tc9+TWOoXWemQNdQUUps31xFxRGWnnNEgBzt2LgEUfcZwVrj5wL9Q7vmSEkwevnhJrEgO54njB09Cb/1z3JkGWcC2Fgc9l7lL1E+WM4AeCAq3vGOpRrZJ7gEmbLvzR4bl++SzCBizTZibn+GZ77mFXuQ3Nvqx7ZO/SHrm5Dy3aeiH1TT8t78REj+5ZTCWPFlHMaGvPBguQMFUhzswt7x9TZukmuuCe1b9OzmAWlonQBmB85NFGyhU8jmyMk+iMlGX+hxxePxkRk7lBi0glMjykfaIqfR2joVj9IcrzPSsy4oCZ74443dzhXVYLXCGbTSZkwbZBi7jVTqB1TfeLj741IQgNxA/+p25stIzxaqtG3G5m+nGpgHiRigSDcA9fuhLxvj+cKNogzmrDDrE1HdSjNgzqHs4IgrJTjRI+MWipUuNL47WBfrLkfQnrj4ntTOUGky/BCL19GS1ieFrtFHDk/AeivKKS2Fc387NkJKT6tNohVG1GSJr6od2865af0kTJ5NN+WDc+blQalOp51tyxs3N3W33fe2EyE8d3DJVtFb10cct/iTNsyS2KdPxNxaH7OqR6cwf9sKRfuzQJcss7tj+CcviRucc2E/++pEQT3vbIWIOk19hgbhwjrdbIIOwAX+9/hSpPSopzvwhKB8yRKQSCKWDTSS+6nyo7x04Z2qyA=="}}}
2020-07-05 18:45:51 MQTT2_DEVICE Ozmo950 reportMinorMap: {"header":{"pri":1,"tzm":480,"ts":"1593967542544","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"384436368","pieceIndex":36,"pieceValue":"XQAABAAQJwAAAADr/JAPiKYgWUpLA/Pi9ODe1vjyEhHOxdlT+WqatkXHzRJjO/2LY+52bGJz1upuKmQFAmQC3vN8pyTC9BJ/0V6aKHBy32TZWIRcjQYdXvNQVvhiYSMI1b2ZK5En666d8bYCaDvqgc+e4MV9FxJtz7UE5Lqn5sIKFn8irrOPYzTxDouBtOe4QvbOxR+lCQvLQtAj4WPTtyHh/rjscVlSukP4BD7pBgawzjfF3KBKUpMuqg95e1v9mWnDcJKfnpuhen1EVeYN9Tm5L00m03ZASqO2HXbfhFi9gX35IucvbyQnUovbl8K3Mcb/ZjUYX3XY5GlSIOGjPvcebJZlm+Wt7QFB3S1uugAkm4GjOr09cBZkRpEt1BmLhuUiSz2LupsJ+BNDj4yRV1dVs2pPM28DYU1+E00MudCJOAem8ONTWK7rVVjuOn/TuV6eLe0Bx9sQjnE1h5KRIwdtsSsonxauRk2Ou+L0KfA73ScaeEu+DIhgS0SuRA=="}}}
2020-07-05 18:45:51 MQTT2_DEVICE Ozmo950 reportMinorMap: {"header":{"pri":1,"tzm":480,"ts":"1593967542545","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"384436368","pieceIndex":42,"pieceValue":"XQAABAAQJwAAAABugkfxNkrQhYmkcQNh6gJMnuoq261U7G1RZFStFGYhLuP+jp+h/Z5JG6sb585j90bSbbg+VTPH2n7wgdwyZN5qyERa8LDU/JKVZadGmDk5VUpcAAA="}}}
2020-07-05 18:45:51 MQTT2_DEVICE Ozmo950 reportMinorMap: {"header":{"pri":1,"tzm":480,"ts":"1593967542545","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"384436368","pieceIndex":43,"pieceValue":"XQAABAAQJwAAAADuEkmpNdQ7ba7isTnGIDfUdlnWVxZp6WRpDGaR2iWqx5QgWO1yZE3WgJmCCxcf2g6+nBM60craHRUW7xg9pRYS6XsaxKbMUT2ULr20Mb/sNQws4kXfXkHEEdZjsSKfWnj8y8tcqhAYSe4A6hSM+orM2RR/tuOis28YwpobWx43E98pxLgL0FywyyVAr34/4yj2T7oPFFiTsX452331dFQCWA2+tOLKSI3N1Opu10l52fVSdXN2j9QM6ttjDT8atigQjy2gTYFbWvj1JnGnzle66eyWJpmL4UoLqPLPU9ssx0vur4TQ9zlrJ7oB4DXMPYhx2pCRKMWEaPlsm6mqN0pof5avawmPJzaIkiB/veb8NYcxJ1X0HvT4jvty/RDUoG5fJH6NpLszAAQKJHiRL1RkpedVgog+bUM/LSIotQto77XRy7GFfnGjmGOSSfvxKoZNYTwtTsQ0347MumWNfUsb8zWpWuitrssa3HDBcmBCjQacp5ma9mMxuwjwZH/jIvstiNIOAA=="}}}
2020-07-05 18:45:51 MQTT2_DEVICE Ozmo950 reportMinorMap: {"header":{"pri":1,"tzm":480,"ts":"1593967542549","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"384436368","pieceIndex":44,"pieceValue":"XQAABAAQJwAAAADn/IIPLMU8VPh/ykiO9Xcz6uZx3LCMeAm247Uaxx7w9UkJCbVAfHIci4h7ENWoph7Q3dJucKg9DX8vP4ZDCE7TnN3+TsM+Tj6aXvUaL6wj2xptw2Ilpm0VRZLpt1pZyKHMjNdlyDFDUw8xg3YXa+Lt07Kh3h4bxBJ/TPLYZcXNvwA="}}}
2020-07-05 18:45:51 MQTT2_DEVICE Ozmo950 reportMapSubSet: {"header":{"pri":1,"tzm":480,"ts":"1593967542552","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"384436368","mssid":"0","type":"vw","value":"[-652,-6545,-652,-5606,-294,-5606,-294,-6545]"}}}
2020-07-05 18:45:51 MQTT2_DEVICE Ozmo950 reportMapSubSet: {"header":{"pri":1,"tzm":480,"ts":"1593967542553","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"384436368","mssid":"1","type":"ar","value":"250,-1900;600,-350;750,-300;1500,-350;1600,-250;1950,-250;2200,150;2150,350;2400,400;2450,-100;2600,-250;2750,0;2800,-50;3500,0;3750,-50;3950,-350;4100,-350;4150,-600;3950,-600;3800,-750;3800,-1100;4000,-1300;4400,-1300;4550,-1600;4650,-1600;4850,-1850;5000,-1800;5050,-1950;5300,-2100;5500,-1900;5500,-1550;5400,-1450;5450,250;5500,200;6800,200;6750,100;6500,100;6300,-300;6300,-3050;6150,-3050;6050,-3150;6050,-3300;5950,-3350;5650,-3250;5750,-3150;5600,-3000;5450,-3150;5400,-3400;3100,-3200;3200,-3000;3100,-2900;2250,-2950;2250,-2550;2000,-2350;1700,-2350;1550,-2550;1050,-2550;1050,-1650;900,-1550;700,-1750;700,-2250;300,-2100;350,-2050;300,-1950;250,-1900","subType":"0","saOrder":""}}}
2020-07-05 18:45:51 MQTT2_DEVICE Ozmo950 Hardware: 0.1.1
2020-07-05 18:45:51 MQTT2_DEVICE Ozmo950 Firmware: 1.7.9
2020-07-05 18:45:51 MQTT2_DEVICE Ozmo950 Version: 0.0.1
2020-07-05 18:45:51 MQTT2_DEVICE Ozmo950 Trigger: app
2020-07-05 18:45:51 MQTT2_DEVICE Ozmo950 Firmware: 1.7.9
2020-07-05 18:45:51 MQTT2_DEVICE Ozmo950 Version: 0.0.1
2020-07-05 18:45:51 MQTT2_DEVICE Ozmo950 Hardware: 0.1.1
2020-07-05 18:45:51 MQTT2_DEVICE Ozmo950 Speed: 0
2020-07-05 18:45:51 MQTT2_DEVICE Ozmo950 LastResponse: {"header":{"pri":1,"tzm":480,"ts":"1593967542554","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok"}}
2020-07-05 18:52:44 MQTT2_DEVICE Ozmo950 Firmware: 1.7.9
2020-07-05 18:52:44 MQTT2_DEVICE Ozmo950 MessageErrorCode: ok
2020-07-05 18:52:44 MQTT2_DEVICE Ozmo950 Version: 0.0.1
2020-07-05 18:52:44 MQTT2_DEVICE Ozmo950 BatteryState: 89
2020-07-05 18:52:44 MQTT2_DEVICE Ozmo950 body_code: 0
2020-07-05 18:52:44 MQTT2_DEVICE Ozmo950 Hardware: 0.1.1
2020-07-05 18:52:44 MQTT2_DEVICE Ozmo950 LastResponse: {"header":{"pri":1,"tzm":480,"ts":"1593967955702","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"value":89,"isLow":0}}}


Der betreffende Teil ist beschnitten.

2020-07-05 18:45:41 MQTT2_DEVICE Ozmo950 01_CleaningAuto

In dem Fall habe ich folgendes set

2020-07-05 18:45:41 MQTT2_DEVICE Ozmo950 01_CleaningAuto start

Ist das so gewollt oder wäre das was für rudolfkoenig?

Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: KölnSolar am 05 Juli 2020, 19:25:39
Habs mal getestet. Ist bei mir auch so, dass der Parameter nicht im event steht.

Liest Du noch mit Beta ? Ich würde das jetzt auch als Bug ansehen.  :-\
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: Beta-User am 06 Juli 2020, 07:30:20
Moin, lese schon noch so aus den Augenwinkeln mit, mußte aber erst mal nachvollziehen, wie die Zusammenhänge sind bzw. wie die setList dazu in etwa aussieht.
An sich hätte ich auch erwartet, dass das vollst. Event auftaucht, aber evtl. deswegen nicht, weil es auf state geht. Ohne jetzt vertiefte Code-Analyse zu machen, könnte das "besser" werden, wenn ihr "irgendwas" in setStateList schreibt ("on off").

(Btw.: BatteryState ist auch kein "gutes Reading", es gibt dazu gewisse Konventionen, sollte daher batteryState heißen, wobei auch das nicht paßt, da es ein %-Wert zu sein scheint).
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: KölnSolar am 06 Juli 2020, 09:01:10
Man lernt halt nie aus. setStateList kannte ich noch gar nicht. Mit "on off" taucht dann der Parameter(in diesem Fall "auto") des commands so im event auf
2020-07-06 08:44:45 MQTT2_DEVICE OZMO clean: set auto Bei command ohne Parameter
2020-07-06 08:44:55 MQTT2_DEVICE OZMO charge: set

BatteryState ist so ne Sache. Das scheint eine etwas "unsinnige" Ausgabe der Batterieinformation. Zeigt eher die Lade-/Entladedauer an und ist eine Zahl, die zur Ladezeit bis 255 hochzählt und dann wieder bei 100 beginnt. Beim Betrieb wird von der aktuellen Zahl(100-255) heruntergezählt. Beim anschließenden Ladevorgang wird auf 99 gesetzt u. wieder hochgezählt. ::)
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: Beta-User am 06 Juli 2020, 18:14:51
Ja, setStateList ist mMn. interessant und wird häufig verkannt.

In der Liste sollte eben alles stehen, was irgendwie eine Art "Hauptzustand" ist, das _könnte_ auch "charge" oder "cleaning" oä. sein, "on off" ist eben erst mal "Pseudoinhalt", um alles andere in Readings zu "verbannen" (wo es mMn. meistens hingehört).

BatteryState darf dann übrigens gerne weiter so heißen, oder man verwirft den Unsinn gleich, ist ja nicht mal eine Schätzung, oder... (jsonMap nach :0)
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 06 Juli 2020, 19:19:39
Mh ja setStateList. Schaut erstmal ok aus. Aber wenn ich jetzt alle state's von meinem Device abbilden will, dann...
ich glaub dann funktioniert das nicht? Oder nur sehr erschwert? Beispiel, Zahlen von 1-100. Muss ich dann alle
Zahlen in setStateList schreiben?

edit:
Also nicht das wir uns falsch verstehen. Ich benötige ja höchstens Zahlen für 24Std  (1-24) und 1000.
Geht mehr um das grundsätzliche Händling. Würde sowas in setStatelist funktionieren?


(1..1000)
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 06 Juli 2020, 19:45:35
Funktioniert wohl  ;D
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 06 Juli 2020, 19:54:36
Ok, habe das Kommentar von Beta-User eine Seite vorher nicht gelesen.
Hauptsache es steht was drinne. Ok erledigt  ::)
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: Beta-User am 06 Juli 2020, 20:03:31
Vielleicht zur Ergänzung noch:

Kann sein, dass "stateEvent" noch ein Stichwort für notify gewesen wäre, das auch zum Ziel geführt hätte...

(Und wegen der "1-1000": k.A., ob die Ausdrücke/Angaben in setStateList per regex geprüft werden, müßte ich auch im Code nachsehen...).
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 24 August 2020, 21:24:09
Heute gab es ein Update auf 1.8.2. Bumper sowie auch Fhem haben im Moment keinen Zugriff.
Werde wohl um "traffic sniffen" nicht herum kommen. Alle Versuche inc. zurücksetzen sind
bisher gescheitert.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 24 August 2020, 22:23:21
Ein Scan auf die Ports verlief negativ.

mqtt_listen_port = 8883
conf1_listen_port = 443
conf2_listen_port = 8007
xmpp_listen_port = 5223


8888 gibt es. Mal sehen ob ich weitere finde.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: KölnSolar am 25 August 2020, 18:16:48
Oha... :'(

update der bot firmware oder Äpp ?
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 25 August 2020, 20:51:47
Ein Update für den Bot....Wenn ich Zeit habe, probier ich mal wieder alles durch.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: schwatter am 19 September 2020, 18:30:03
Ich habe bei Bumper mal ein Issue eröffnet.

https://github.com/bmartin5692/bumper/issues/103


Außerdem habe ich eine simple Pythonlibrary gefunden, die per Cloud funktioniert. Besser als nix.

https://github.com/And3rsL/Deebotozmo

War schnell aufgesetzt. Mussten nur ein paar ImportError's gelöst werden. Es nervt doch schon sehr,
wenn man sich immer Bücken muss. Der Bot steht unter einem Schrank und Handyapp benutzen ist auch
Banane...

Werde das erste Post noch um Cloudconnect ergänzen.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 24 September 2020, 22:33:45
So, ich habe für Cloudconnect nochmal die setlist und die notify's überarbeitet. Jetzt ist das ganze schon viel ansehnlicher
für den Übergang zu (hoffentlich wieder) MQTT-Only.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: flolee am 21 Oktober 2020, 12:46:01
oh nein, bin gerade draufgekommen dass mein forum-benutzerkonto wegen inaktivität gelöscht wurde :(

nundenn... weiß jemand, inwiefern das hier auch für den ozmo t8 anwendbar ist?

danke und lg
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 21 Oktober 2020, 13:41:46
Keine Ahnung. Mqtt mit bumper oder ohne musst du testen.
Ich habe im Moment keine Zeit zum testen und hänge noch
mit der "pythonlibrary" in der Cloud...
Jedenfalls, falls Cloud ok ist, dann ist And3rsL wohl dein Mann.
Kenne die Unterschiede nicht zu meinem 950.
Denke aber, die sind nich all zu groß. Bei hassio hat er den T8
drinne. Wenn du ihn kontaktierst, zieht er bestimmt Deebotozmo nach. Vielleicht funktionert es aber jetzt schon.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: flolee am 23 Oktober 2020, 20:26:31
so, zuerst mal danke für die antwort :)

ist etwas schwierig die cloudlösung auf meiner FHEM installation auf jessie zum laufen zu bringen... python 3.7 und Openssl nerven irgendwie.
hab dafür jetzt mal auf einem anderen system die cloudlösung installiert und kann bestätigen, dass es auch mit dem T8 im großen und ganzen funktioniert.
denke, das reicht vorerst vollkommen...

lg
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 23 Oktober 2020, 21:36:00
Joa, also ich bereue den umstiegt nicht auf Buster. Kann ich nur
empfehlen. Schön das es funktioniert. Einbinden in Fhem lässt
sich das auch per z.B Remote-SSH.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: flolee am 23 Oktober 2020, 22:21:07
zuerst mal vielen dank für die wirklich super arbeit :)

ja, am remote-ssh wäre ich grad dran, vorerst nur mal übers terminal.

allerdings....


pi@raspberrypi:~ $ ssh 192.168.1.*
Linux raspberrypi 5.4.72-v7+ #1356 SMP Thu Oct 22 13:56:54 BST 2020 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Oct 23 22:08:59 2020 from 192.168.1.*
pi@raspberrypi:~ $ deebotozmo charge
pi@raspberrypi:~ $ exit
Abgemeldet
Connection to 192.168.1.* closed.


funktioniert also problemlos.
pi@raspberrypi:~ $ ssh 192.168.1.* deebotozmo clean
bash: deebotozmo: Kommando nicht gefunden.
pi@raspberrypi:~ $


aber muss ich das verstehen? über ein script funktioniert es wieder "einzeilig":

pi@raspberrypi:~ $ ssh 192.168.1.* < scr.sh
Pseudo-terminal will not be allocated because stdin is not a terminal.
Linux raspberrypi 5.4.72-v7+ #1356 SMP Thu Oct 22 13:56:54 BST 2020 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Vacuum Status: STATE_CLEANING
Battery: 100%
Fan Speed: normal
Water Level: ultrahigh
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 24 Oktober 2020, 09:58:44
Probier mal so

pi@raspberrypi:~ $ ssh 192.168.1.* "deebotozmo clean"
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: flolee am 24 Oktober 2020, 15:15:09
alles schon probieren... mit "" mit '' mit -t usw... keine chance  ???
echt eigenartig...

aber ja, div befehle senden aus fhem klappt jetzt mal mit...

({system ('ssh pi@192.168.1.* < /opt/fhem/BotT8_sz.sv')})

Status auslesen ist so etwas mühsam... aber nachdem wir eh bald umziehen werde ich das mal zum anlass nehmen um alles zu aktualisieren.

danke :)

Ps. vielleicht könnte man im ersten post erwähnen, dass die cloud lösung im großen und ganzen auch mitm T8 funktioniert?
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 24 Oktober 2020, 17:30:28
Ich habe zum testen nochmal keyless ssh eingerichtet.

http://www.linuxproblem.org/art_9.html

Per Pi3 terminal auf meinem Pi4 eingeloggt. Egal ob mit "" oder '' sowie auch ohne, es funktioniert.
root@192.168.178.42's password:
Linux raspi3fhem 5.4.51-v7+ #1333 SMP Mon Aug 10 16:45:19 BST 2020 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Oct 24 17:35:05 2020 from 192.168.178.37
root@raspi3fhem:~# ssh root@192.168.178.66 'deebotozmo charge'
root@raspi3fhem:~# ssh root@192.168.178.66 "deebotozmo charge"
root@raspi3fhem:~# ssh root@192.168.178.66 deebotozmo charge
root@raspi3fhem:~#


T8 habe ich im ersten Post hinzugefügt.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: flolee am 25 Oktober 2020, 20:44:33
danke... nachdem ich es eigentlich schon aufgegeben hatte, habe ich nach deinem input das ganze nochmal versucht. diesmal unter root. lustigerweise klappte es sobald ich deebotozmo unter root installiert habe einwandfrei - egal ob ich mit als root oder pi verbinde ???
nundenn, hautpsache es funktioniert jetzt ... aber vielleicht hilft das jemandem, der dasselbe problem hat :)
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 04 November 2020, 18:12:33
Ich habe gerade im ersten Post "getrooms" unter Systeminfos hinzugefügt. Damit sind die Spotareanummern nun sichtbar.

05_Systeminfos:components,getrooms,statuses

Nachdem Ecovacs unter anderem neue Räume hinzugefügt hat, war das kaputt. Hatte dazu ein Issue laufen. Gerade wurde es gefixt.
Zum updaten einfach


root@raspi4fhem:~# pip3 install 'deebotozmo==1.7.1'
..............................................................
Installing collected packages: deebotozmo
  Found existing installation: deebotozmo 1.6.6
    Uninstalling deebotozmo-1.6.6:
      Successfully uninstalled deebotozmo-1.6.6
Successfully installed deebotozmo-1.7.1
root@raspi4fhem:~# deebotozmo getrooms
0 Dining Room
1 Study
2 Corridor
3 Kitchen
4 Living Room
root@raspi4fhem:~#
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][bumper][non-bumper]
Beitrag von: lulatsch66 am 19 November 2020, 22:55:37
Hallo zusammen,

das klingt ja alles super vielversprechend hier im Thread.

Zitat von: schwatter am 24 August 2020, 21:24:09
Heute gab es ein Update auf 1.8.2. Bumper sowie auch Fhem haben im Moment keinen Zugriff.
Werde wohl um "traffic sniffen" nicht herum kommen. Alle Versuche inc. zurücksetzen sind
bisher gescheitert.

Habe eben einen neuen Ozmo 950 ausgepackt, aber noch nicht in WLAN eingebunden.
Nur frage ich mich, ob ich den einfach ins WLAN/Internet lassen kann oder ob ich das besser
erstmal Richtung internet sperre... also um zu verhindern, dass die Firmware >=1.8.2  da
automatisch installiert wird, falls das Gerät nicht schon damit ausgeliefert wurde.

Auch wenn vielleicht etwas offtopic - könnt ihr mir dazu etwas sagen?

Welche der eingangs genannten Varianten ich letztlich nutzen will, weiß ich gerade noch nicht,
möchte nur vorbeugen ...

Vielen Dank schon mal.

Falko
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 20 November 2020, 19:09:54
Ich meine das Update musste manuell angestoßen werden.
Besser aber erstmal Pihole aufsetzen und blocken.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: kaiwerner am 01 Januar 2021, 23:04:51
Hallo,

was würde an der Firmware 1.8.2 geändert das diese nicht mehr Cloud frei läuft. Gibt es Aussichten?

Danke
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 02 Januar 2021, 17:48:21
Das Problem ist, es wird kein MQTT-Port vom Robo bereitgestellt. Ich habe den Traffic der App gescannt. Dort taucht
der Port 1883 auf. Lass ich einen Portscanner auf dem Robo laufen, popt nur der Port 8888 auf. Ich gehe davon aus,
das Ecovacs jetzt einfach den Port 1883 durch Port 8888 tunnelt?
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Shadow3561 am 03 Januar 2021, 12:00:36
Moin und ein frohes neues Jahr für alle.

Erst einmal möchte ich mich bedanken.
Dank der Anleitung in #1 habe ich es geschafft meinen Ozmo T8 in FHEM ein zu binden.

Ich habe Variante 3 benutzt.

Nur weiss ich nicht was attr DeebotOzmo950 BasicCmd::SpotArea::Fanspeed::Vacuumdetails::Mapdater:

bedeutet.

FHEM jedenfalls meckert wenn ich versuche dieses attr. zu setzten.

Was mache ich falsch?

Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 03 Januar 2021, 12:19:19
Tag,
stimmt. Da ist etwas verloren gegangen. So ist es richtig

attr DeebotOzmo950 webCmdLabel BasicCmd:;:SpotArea:;:Fanspeed:;:Vacuumdetails:;:Mapdater:;

Werde es im ersten Thread anpassen. Außerdem werde ich den Thread in die Bastelecke verschieben. MQTT ist erstmal vom Tisch....
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 15 Januar 2021, 13:53:00
Moin moin und Grüße aus dem Norden,

ich relativ neu hier und auch ein ziemlicher Anfänger. Ich habe aber seit einige Monaten einen Deebot Ozmo 950 bei uns hier im Haus und bin sehr zufrieden. Den Deebot mit in FHEM  zu integrieren wäre klasse aber dabin ich wirklich mit überfordert. Könnte mich jemand dabei unterstützen oder eine Anleitung geben die auch ich kapiere? ::)


VG Thomas
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 15 Januar 2021, 20:03:52
Tag Thomas,

Punkt 3 im ersten Post sollte doch was für dich sein. Damit installierst du dir auf den gleichen Device auf dem Fhem läuft
eine simple Python-Bibliothek. Diese vermittelt dann zwischen
dem Deebot und Fhem. Installieren und einrichten per Telnet/SSH.

Gruß schwatter
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 15 Januar 2021, 20:15:37
Ja das hatte ich auch gehofft aber mit dem ersten geht es schon los.

pip3 install deebotozmo

Wird das so in die Shell geschrieben oder fehlt noch sudo. Du siehst hier ist einer der wirklich gerade erst damit angefangen ist  ;D

Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 16 Januar 2021, 15:01:40
Ein kleines Update,

ich habe jetzt Phyton 3 installiert und konnte dann "pip3 install deebotozmo" auch installieren. Dann fehlte noch "sudo apt-get install libtiff5"

Vorsichtshalber mal den Pi neu gestartet.

bei "deebotozmo createconfig" kommt "Befel nicht gefunden"

Hat jemand einen Tipp was ich evtl. falsch gemacht habe?

VG Thomas
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 16 Januar 2021, 19:04:47
Nabend, als welcher User bist du denn angemeldet? Ich gehe mal von User Pi aus.

Funktioniert das?

root@raspi4fhem:~# deebotozmo  --help
Usage: deebotozmo [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...

Options:
  --debug / --no-debug
  --help                Show this message and exit.

Commands:
  charge         Returns to charger
  clean          Auto clean
  components     Get robot components life span
  createconfig   logs in with specified email; run this first
  customarea     Cleans provided area(s), ex: "-602,1812,800,723"
  dodebug        debug function, do not use :)
  exportlivemap  Get robot map and save it [filepath ex:...
  getcleanlogs   Get Clean Logs
  getrooms       Get saved rooms
  pause          pause the robot
  playsound      Play welcome sound
  resume         Resume the robot
  setfanspeed    Set Clean Speed
  setwaterlevel  Set Water Level
  spotarea       Cleans provided rooms(s), ex: "0,1" | Use GetRooms to see...
  stats          Get stats
  statuses       Get robot statuses [Status,Battery,FanSpeed,WaterLevel]
root@raspi4fhem:~#


Ich habe das als User root eingerichtet. Probier mal "sudo deebotozmo createconfig"
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 16 Januar 2021, 19:10:06
Nabend,

ich habe es natürlich immer als "root" probiert und da funktioniert es nicht. Gerade habe ich als "pi" versucht und es funktioniert. Ist das richtig oder latte?
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 16 Januar 2021, 20:14:49
Moin moin,

über das Terminal funktioniert das tadellos.

Bei dem dummy gibt es Probleme, nach dem setzen der Attribute und Speichern der Config schmeißt FHEM das komplett aufgeführte raus

attr DeebotOzmo950 webCmdLabel BasicCmd::SpotArea::Fanspeed::Vacuumdetails::Mapdater:

setstate DeebotOzmo950 LastActivity:05_Systeminfos statuses<br><br>\
Vacuum Status: STATE_DOCKED\
Battery: 100%\
Fan Speed: normal\
Water Level: low\
<br>\
<img src="/fhem/www/livemap/map.png?nocache=<?time(); ?>">"
setstate DeebotOzmo950 2020-09-24 21:58:58 components brush: 92.50555555555555%\
sideBrush: 83.91111111111111%\
heap: 81.26388888888889%\

setstate DeebotOzmo950 2020-09-24 22:02:21 state 05_Systeminfos statuses
setstate DeebotOzmo950 2020-09-24 22:02:24 statuses Vacuum Status: STATE_DOCKED\
Battery: 100%\
Fan Speed: normal\
Water Level: low\

Wenn ich das über die RAW definition eingebe gibt es eine Fehlermeldung die sich auf diese Endung bezieht: ?>">"

Kann es sein das bei mir irgendwas fehlt bei der Grundinstallation von FHEM?
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 17 Januar 2021, 11:24:34
Morgen,

schön das du selber so weit gekommen bist. Alles was Config und Code betrifft kopiert man in Codetags. Das ist das Symbol #.
Hier nochmal meine Raw.

defmod DeebotOzmo950 dummy
attr DeebotOzmo950 readingList state
attr DeebotOzmo950 room 04.Esszimmer_EG
attr DeebotOzmo950 setList 01_CleaningAuto:clean,pause,resume,charge 02_SpotArea:selectnumbers,0,1,9,0,lin 03_Fanspeed:quiet,normal,max,max+ 04_WaterFlowRate:low,medium,high,ultrahigh 05_Systeminfos:components,statuses,stats,getrooms 06_GetMap:noArg
attr DeebotOzmo950 stateFormat LastActivity:state<br><br>\
statuses<br>\
<a href="http://192.168.178.66:8085/fhem/www/livemap/map.png"><img src="/fhem/www/livemap/map.png?nocache=<?time();; ?>" style="width: 100%;;max-height: 100%"> </a>
attr DeebotOzmo950 webCmd 01_CleaningAuto:02_SpotArea:03_Fanspeed:05_Systeminfos:06_GetMap
attr DeebotOzmo950 webCmdLabel BasicCmd:;:SpotArea:;:Fanspeed:;:Vacuumdetails:;:Mapdater:;


Wenn vielleicht etwas nicht wegen Formatierung funktioniert, bist du nicht gezwungen alles immer Raw anzulegen. Leg den Dummy an
und dann nach und nach weitere "attr".
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 17 Januar 2021, 11:42:46
Aber wo werden denn die anderen Befehle/Codes eingetragen setstate usw.?

Da viel mir immer nur die Raw ein. Ich hatte es auch so versucht nur die Attribute nach und nach zu setzen. Funktionierte aber leider trotzdem nicht.
Gehört das "statuses<br>\
<a href="http://192.168.178.66:8085/fhem/www/livemap/map.png"><img src="/fhem/www/livemap/map.png?nocache=<?time();; ?>" style="width: 100%;;max-height: 100%"> </a>"
mit zu dem Attribut "stateFormat"?
Die IPund Port ist vom Pi wo FHEM drauf läuft oder?

Ist eigentlich die Version wichtig vom Bot?

Hatte glaube was gelesen davon

Sorry das ich so viel Fragen habe
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 17 Januar 2021, 14:39:55
- Die Befehle sind mit den Notifys verknüpft. Setzt man in dem Dummy einen State, reagiert das passende Notify darauf und führt den Befehl aus.
- Über setstate musst du dir keine Gedanken machen. Das wird automatisch angelegt. Die sind nur als Beispiel im ersten Thread mit drinne.
- Die IP und Port ist vom Pi wo FHEM drau.
- Die Version vom Bot ist nur wichtig wegen MQTT. Das funktioniert leider mit der neusten Version nicht mehr. Du nutzt aber die Cloud. Daher egal.

Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 17 Januar 2021, 14:41:11
Ah ok, dann läuft es trotzdem nicht  ::)
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 17 Januar 2021, 14:52:55
Fhem fehlen bestimmt noch die Berechtigungen, um Shellbefehle ausführen zu dürfen.

Gib oben in der Fhem-Befehlszeile folgendes ein.

{system("sudo deebotozmo clean &")}

Wenn alles ok ist, startet der Bot und du bekommst eine "-1" zurück. Tut sich nichts, dann schau dir bitte den Link an.

http://heinz-otto.blogspot.com/2018/02/in-fhem-externe-programme-aufrufen.html
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 17 Januar 2021, 15:03:10
Ich bekomme eine -1 zurück aber der Lümmel startet leider nicht
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Otto123 am 18 Januar 2021, 13:47:14
Hallo Thomas,

Deine sudoers  sieht nach kein Plan aus ;)
stell bitte den Originalzustand wieder her!

Dann machst Du folgendes um den Pfad zu ermitteln:
which deebotozmo
Dann erstellts Du eine Datei:
sudo nano /etc/sudoers.d/011_fhem-nopasswd
Dort kommt so eine Zeile rein:
fhem ALL=(ALL) NOPASSWD: /pfad/der/gerade/ermittelt/wurde

Oder als ein Script (vorher sudo su):
File="011_fhem-nopasswd"
echo "fhem ALL=(ALL) NOPASSWD: $(which deebotozmo)" >/etc/sudoers.d/$File
chmod 0440 /etc/sudoers.d/$File


Gruß Otto
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 18 Januar 2021, 14:07:45
Hallo Otto,

sudo: stat konnte nicht auf /etc/sudoers.d/010_at-export angewendet werden: Keine Berechtigung
sudo: stat konnte nicht auf /etc/sudoers.d/010_pi-nopasswd angewendet werden: Keine Berechtigung
sudo: stat konnte nicht auf /etc/sudoers.d/010_proxy angewendet werden: Keine Berechtigung
sudo: stat konnte nicht auf /etc/sudoers.d/README angewendet werden: Keine Berechtigung
sudo: stat konnte nicht auf /etc/sudoers.d/fhem angewendet werden: Keine Berechtigung
[sudo] Passwort für pi:
pi ist nicht in der sudoers-Datei. Dieser Vorfall wird gemeldet.

das habe ich jetzt wenn ich mich anmelde

Das liegt bestimmt an meinem gefährlichen halbwissen ;D
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Otto123 am 18 Januar 2021, 19:36:22
nachdem Du was getan hast?  :o :o :o
Wenn Du nicht mehr weißt was der Originalzustand war und nicht weißt was Du tun sollst - musst Du doch nachfragen!?
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 18 Januar 2021, 19:47:18
Wie es vorher war kann ich nicht sagen, die /etc/sudoers ist mit dem FHEM-Kurs den ich mache so gewachsen.

ich hatte zuletzt die /etc/sudoers mit nano geöffnet und da stand das ja drin
# User privilege specification
root ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

und versehentlich beim Telefonieren mit einem Kunden habe ich das % vor sudo ALL=(ALL:ALL) ALL gelöscht. Ich dacht ich bin in meiner Betriebssoftware mit dem Cursor. Als ich gemerkt habe das ich noch in Putty hänge, schnell habe ich dann mit strg-o und j und strg-x beendet (Der Kunde nervte gar füchterlig) und ohne drüber nachzudenken den pi geschlossen

Ziemlich bekloppt

Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Otto123 am 18 Januar 2021, 20:12:19
Aus diesem Grund gibt es visudo.  ::)

Ich muss nämlich zugeben, ich habe mich wahrscheinlich verguckt. Deine sudoers war so wahrscheinlich  in Ordnung. :-[

Die /etc/sudoers zerschossen ist ziemlich blöd. Jetzt heißt es:
(so ähnlich wie hier  (https://heinz-otto.blogspot.com/2020/08/crash-recovery.html)- Achtung das ist nicht genau Dein Fall!)
neue SD Card mit raspian-lite bestücken (oder wie immer das jetzt heißt)
Einen USB Kartenleser bereithalten
Den Pi ausmachen (geht sicher nur noch hart)
Neue SD rein und booten, die alte SD in den Kartenleser und anstecken (am Besten vor dem neustart)
die alte SD Card Mounten
Mit sudo nano /mnt/sda2/etc/sudoers den Schlamassel beheben.
Rolle rückwärts und hoffen alles war richtig!

Das habe ich jetzt aus dem Kopf geschrieben und nicht Schritt für Schritt getestet!
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 18 Januar 2021, 20:17:06


Bei
sudo nano /mnt/sda2/etc/sudoers

[ Verzeichnis ,,/mnt/sda2/etc" existiert nicht ]

und weiss nicht weiter.


Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Otto123 am 18 Januar 2021, 21:34:58
wir lösen hier natürlich ein OffTopic Problem, Du solltest ev. einen neuen extra Thread aufmachen.

klingt als ob Du nicht gemountet hast - was sagt lsblk?
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 19 Januar 2021, 20:18:24
Nabend,

danke an alle die mir geholfen haben den Deebot in FHEM zu integrieren. Nach anfänglichen Problemen klappt das jetzt perfekt.

Vielen Dank an alle

Gerade den Deebot bei Tablet UI integriert, dass Steuern läuft super. Karte kommt später. Falls interesse hier HTML-Code. Buttons und Farben können ja nach belieben angepasst werden.

<li data-row="6" data-col="3" data-sizex="2" data-sizey="2">
<header>DEEBOT-Saugroboter</header>
<div class="sheet">
<div class="row">
<div class="cell">
<div data-type="push" data-device="DeebotOzmo950" data-cmd="set" data-set-on="01_CleaningAuto clean" data-icon="fa-play green" class="inline big"></div>
<div data-type="push" data-device="DeebotOzmo950" data-cmd="set" data-set-on="01_CleaningAuto pause" data-icon="fa-pause yellow" class="inline big"></div>
<div data-type="push" data-device="DeebotOzmo950" data-cmd="set" data-set-on="01_CleaningAuto charge" data-icon="fa-charging-station red" class="inline big"></div>
</div>
</div>
</div>
</li>



VG Thomas
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 23 Januar 2021, 19:37:38
@Otto123

Ich hatte deinen Block verlinkt, weil ich mir sicher war, da steht alles drinne. Hatte ich so im Hinterkopf...

http://heinz-otto.blogspot.com/2018/02/in-fhem-externe-programme-aufrufen.html

Aber ich seh gerade, da ist nichts über Fhem und Berechtigungen. Hattest du nicht auch einen Blockeintrag darüber?
Wenn ja, würde ich den im ersten Post gerne verlinken. Wenn nicht, dann schreib ich ein paar Sätze dazu.
Oder gibt es sogar einen Wikieintrag?

Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 23 Januar 2021, 19:50:35
Hallo Schwatter,

ich glaube Du meinst den hier

https://heinz-otto.blogspot.com/2017/08/raspberry-ausschalten-mit-fhem.html

und dieser hier ist auch eine Empfehlung von Otto

https://wiki.ubuntuusers.de/Rechte/

Mir haben sie natürlich mit Anleitung von Otto sehr geholfen mein Problem zu lösen

VG Thomas
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Otto123 am 23 Januar 2021, 19:51:25
Hallo schwatter,

Du meinst den? https://heinz-otto.blogspot.com/2017/08/raspberry-ausschalten-mit-fhem.html
Wir haben das Problem dann hier aufgearbeitet
https://forum.fhem.de/index.php/topic,117893.msg1123461.html#msg1123461

Edit: Doppelt hält besser  ;D

Gruß Otto
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 23 Januar 2021, 22:58:08
Ok, super  :)

Werde Morgen den ersten Post anpassen.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 03 April 2021, 09:03:45
@KölnSolar

We are back in business  :) Mqtt geht wieder. Der Port 8883 hatte
sich nur geändert auf 443... Gestern Abend hatte ich kurz Bumper
connectet. Könnte sein das sich Befehlpayloads geändert haben.
Wenn ich mal wieder mehr Zeit habe, schaue ich mir das an.

https://github.com/bmartin5692/bumper/issues/103
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 05 April 2021, 08:15:43
Moin moin,

vor ein paar Tagen wollte ich über FTUI den Bot pausieren und es funktioniert nichts mehr, sämtliche set-Befehle kommen bei dem Bot nicht mehr an. Komisch ist nur, wenn ich von der Shell Befehle absetze reagiert der Bot. Hat jemand einen Plan woran das liegen könnte. Ich nutze die Cloudversion.

VG Thomas
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 05 April 2021, 11:11:24
Ich steuere weiterhin per Cloud aus Fhem heraus. Mit FTUI kenne ich mich nicht aus.
Funktioniert es denn aus Fhem heraus? Hast du was verändert? Geupdatet?

Gruß schwatter
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 05 April 2021, 11:19:18
Die ganz normalen Updates am PI und FHEM vdurchgeführt, aus FHEM heraus funktioniert es auch nicht aber von der Shell aus und das ist das was ich nicht verstehe.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 05 April 2021, 12:48:27
Klingt wie dein altes Problem...dann geh nochmal alles durch,
was du mit Otto erarbeitet hast.

Gruß schwatter
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 05 April 2021, 13:02:19
Den Verdacht hatte ich auch und habe es bestimmt schon 10x durchgearbeitet aber klappt nicht
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Otto123 am 05 April 2021, 13:32:43
Wenn ich irgendwie helfen kann - müsste ich wissen was genau der Stand ist und was nicht geht. Ich habe mir die alten Beiträge angeschaut, da kann ich aber keine Idee entwickeln.
Also:
Wie sind die shell Befehle die funktionieren?
Wie sehen die sudoer Dateien aus? Die /etc/sudoers Datei ist Original und nicht "verbogen"?
sudo cat /etc/sudoers.d/*
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 05 April 2021, 14:32:21
Hallo Otto,

vielen Dank das Du helfen möchtest

folgende shell Befehle funktionieren

deebotozmo clean
deebotozmo charge

usw.

Die sudo cat /etc/sudoers.d/*

dieht so aus

Defaults env_keep += "NO_AT_BRIDGE"
pi ALL=(ALL) NOPASSWD: ALL
Defaults env_keep += "http_proxy HTTP_PROXY"
Defaults env_keep += "https_proxy HTTPS_PROXY"
Defaults env_keep += "ftp_proxy FTP_PROXY"
Defaults env_keep += "RSYNC_PROXY"
Defaults env_keep += "no_proxy NO_PROXY"
fhem ALL=(ALL) NOPASSWD: /usr/local/bin/deebotozmo
fhem ALL=(ALL) NOPASSWD:SETENV: /usr/bin/cpanm *
fhem ALL=(ALL) NOPASSWD:SETENV: /usr/bin/perl - App\:\:cpanminus
#
# As of Debian version 1.7.2p1-1, the default /etc/sudoers file created on
# installation of the package now includes the directive:
#
#       #includedir /etc/sudoers.d
#
# This will cause sudo to read and parse any files in the /etc/sudoers.d
# directory that do not end in '~' or contain a '.' character.
#
# Note that there must be at least one file in the sudoers.d directory (this
# one will do), and all files in this directory should be mode 0440.
#
# Note also, that because sudoers contents can vary widely, no attempt is
# made to add this directive to existing sudoers files on upgrade.  Feel free
# to add the above directive to the end of your /etc/sudoers file to enable
# this functionality for existing installations if you wish!
#
# Finally, please note that using the visudo command is the recommended way
# to update sudoers content, since it protects against many failure modes.
# See the man page for visudo for more information.



Ich habe die sudoer nicht angerührt seit meinem Unfall
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Otto123 am 05 April 2021, 18:56:31
Ok meine Befehl listet jetzt einfach den Inhalt aller Dateien im Verzeichnis /etc/sudoers.d - da gibt es jetzt offenbar bei Dir ein paar Dinge die mir unklar sind. Aber lassen wir das erstmal

Schau mal bitte mit dem Befehl:
which deebotozmo
Wenn da als Antwort /usr/local/bin/deebotozmo kommt, kann das mMn nie funktioniert haben!
Die Zeile müsste dann so aussehen:
fhem ALL=(ALL) NOPASSWD: /usr/local/bin/deebotozmo *

Gruß Otto
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 05 April 2021, 19:02:42
nach Eingabe von
wich deebotozmo

kommt dieser Pfad
/home/pi/.local/bin/deebotozmo
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Otto123 am 05 April 2021, 19:52:08
Das ist ja ein völlig anderer Pfad :o
und in der FHEM Oberfläche?
{qx(which deebotozmo)}
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 05 April 2021, 19:54:32
ja genau und ich habe keine Ahnung warum, ich habe wirklich nichts geändert

Pfad aus der FHEM-Oberfläche
/usr/local/bin/deebotozmo

VG Thomas
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Otto123 am 05 April 2021, 20:05:52
Das ist doch npm Zeugs? Da hast Du beim letzten setup offenbar unter user pi installiert und option -g vergessen.

Aber für Dein fhem user sudo weißt Du jetzt was zu tun ist?
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 05 April 2021, 20:07:29
Leider nein  :-\

Unterstützung wäre cool
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Otto123 am 05 April 2021, 20:21:28
Hab ich doch aber in #106 gesagt?
Du musst Deine Datei im Pfad /etc/sudoers.d/ - ich weiß leider nicht wie sie heisst - mit
Edit: Dateiname aus dem alten Thread
sudo visudo /etc/sudoers.d/011_fhem-nopasswd
Editieren und die Zeile um den Stern ergänzen
fhem ALL=(ALL) NOPASSWD: /usr/local/bin/deebotozmo *
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 05 April 2021, 20:32:56
War mir nicht ganz sicher und wollte nicht wieder eine Katastrophe verursachen.

Hab ich geändert und funktioniert wieder, vielen Dank Otto

VG Thomas
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: cbl am 03 Mai 2021, 19:22:07
Ich hänge mich mal hier an den Thread, da es offenbar der einzige ist, in dem die Deebot diskutiert wurden.

Die Lösung finde ich interessant und stehe kurz davor, einen ECOVACS DEEBOT OZMO * zu kaufen. Die Beschreibung hier bezieht sich auf den 950. Aufgrund der geringeren Höhe (und damit einer weiteren erreichbare Fläche unter einem Schrank) würde ich das jüngere Modell T8 favorisieren. Hat jemand damit Erfahrung gesammelt? Wird der ebenfalls so funktionieren wie der 950 mit FHEM (die drei Varianten, von denen mit jüngerer Firmware nur eine funktioniert, habe ich gesehen).



Gruß
Christian
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: Thomas0401 am 03 Mai 2021, 19:28:39
Hallo Christian,

ich glaube das nur Deebot 960/950/920 unterstützt wird. Das steht zumindest https://github.com/And3rsL/Deebotozmo (https://github.com/And3rsL/Deebotozmo) hier so.

bzw. schau mal hier https://forum.fhem.de/index.php/topic,112149.msg1094921.html#msg1094921 (https://forum.fhem.de/index.php/topic,112149.msg1094921.html#msg1094921) da steht was über den T8

VG Thomas
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: laberlaib am 08 Juni 2021, 14:07:15
Gude,

im ersten Post steht immernoch, dass das FW Update auf 1.8.2 die cloudfreien Steuerungsmöglichkeiten aushebelt.
Im Thread und auch aus Github heraus wird aber wohl klar, dass das nicht mehr der Fall ist sondern nur der MQTT-Port umgestellt wird.

Also klappt das alles wieder und ich kann das Ding gefahrlos mal meinen Eltern andrehen und dann bei Nichtgefallen selber abziehen und den hier nutzen?

Philipp
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 08 Juni 2021, 18:01:34
Nabend,

ja, es funktioniert. Zumindest mit Bumper, aber etwas frickelig. Ich konnte auch schon erfolgreich den Bot steuern. Hatte erst den Fork von Edenhaus und jetzt von Martin. Alle sets haben funktioniert. Die gets aber nicht. Daher hab ich auch nichts im ersten Post aktualisiert.
Bei Fhem Only hatte ich mein ich
ein "can not connect to port 443" oder ähnliches. Da muss jetzt wohl mit Zertifikaten gearbeitet werden oder die Art der Verbindung anders aufgebaut werden.

Feel free to test und lass und daran teilhaben. Im Moment habe ich andere Prioritäten.

Gruß schwatter
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: davipet am 24 Juni 2021, 18:18:36
´Nabend
Ich habe mir am PrimeDay auch einen OZMO 950 gegönnt und möchte nun das Ding in FHEM integrieren.
Ich scheitere leider schon bei der Installation der Python Lib...

Die Installation läuft erstmal scheinbar normal durch. Die 3 Abhängikeiten wie in #1 beschrieben habe ich auch installiert.
Beim Aufruf von deebotozmo createconfig kommt folgender Fehler:

pi@fhemvm:~$ sudo deebotozmo createconfig
Traceback (most recent call last):
  File "/usr/local/bin/deebotozmo", line 7, in <module>
    from deebotozmo.cli import cli
  File "/usr/local/lib/python3.5/dist-packages/deebotozmo/__init__.py", line 410
    self.mop_attached: bool = False
                     ^
SyntaxError: invalid syntax


Das selbe kommt auch wenn ich es mit sudo ausführe. Es ist auch völlig egal welches Kommando. Ob createconfig, debog, help... egal. Immer der Selbe Fehler.
Daher vermute ich ein Problem bei abhängigkeiten. Ich habe eine Linux debian VM mit FHEM laufen.
Gibt es eine Möglichkeit fehlende Pakete zu identifizieren?

Danke!

Gruß

David
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: davipet am 24 Juni 2021, 19:12:09
Nochmal ich ;)
sowas lässt mir dann ja keine Ruhe...
Ich habe also weiter probiert und einfach mal den mutmaßlichen Fehler in Zeile 410 der Datei behoben.
Aus:
self.mop_attached: bool = False

wurde:
self.mop_attached = False


Und schon geht einiges mehr!
Also Einrichten hat nun soweit geklappt und ich kann den Kollegen aus FHEM zum Arbeiten überreden.

Aber leider nicht so ganz alles.
Im Terminal versuche ich zu debuggen und bekomme für verschiedene Kommandos keine Rückmeldung. Also gar nichts.
getrooms oder stats geben nichts zurück.

Und bei exportlivemap bekomme ich wieder einen Fehler:

root@fhemvm:/usr/local/bin# sudo deebotozmo exportlivemap /opt/fhem/www/livemap/map.png
Traceback (most recent call last):
  File "/usr/lib/python3.5/base64.py", line 518, in _input_type_check
    m = memoryview(s)
TypeError: memoryview: a bytes-like object is required, not 'NoneType'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/bin/deebotozmo", line 11, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 1289, in invoke
    rv.append(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/deebotozmo/cli.py", line 203, in exportLiveMap
    fh.write(base64.decodebytes(vacbot.live_map))
  File "/usr/lib/python3.5/base64.py", line 552, in decodebytes
    _input_type_check(s)
  File "/usr/lib/python3.5/base64.py", line 521, in _input_type_check
    raise TypeError(msg) from err
TypeError: expected bytes-like object, not NoneType



Was läuft da schief?

Danke!

David
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 24 Juni 2021, 21:06:39
Nabend,

mh vielleicht ein Prerelease mit Fehlern? Ich habe im Moment die 1.80 installiert. Installier mal neu:


pip3 install deebotozmo==1.8.0


Gruß schwatter
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: davipet am 25 Juni 2021, 10:17:36
Moin,

danke für den Tipp,

ist bei mir auch die 1.8.0  :o

Kann meine Python-Version schlecht sein?
python -V sagt 2.7.13
python3 -V sagt 3.5.3


Gruß

David
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 26 Juni 2021, 21:27:52
Nabend

root@raspi4fhem:~# python -V
Python 2.7.16
root@raspi4fhem:~# python3 -V
Python 3.7.3


Probleme hatte ich nur nach V 1.8.0. Da hat sich was geändert.

https://pypi.org/project/deebotozmo/#history
pip3 install deebotozmo==2.0.0b6

Da keine Zeit und Motivation, hatte ich einfach wieder auf 1.8.0 gedowngraded.


Gruß schwatter
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: davipet am 02 Juli 2021, 15:37:56
Moin,

ich bin noch an den Thema dran...

Ich habe eine frische VM mit debian 10 aufgesetzt.
python 2.7.16 und Python 3.7.3 laufen da.

"createconfig" läuft nun ohne, dass ich den Code ändern muss.
Aber exportlivemap wirft noch immer diese Fehler...
Ich habe den OZMO 950 mit firmware 1.8.2

Kann es an der Karte selber liegen? Gibt es da etwas was in der App nicht gemacht werden sollte? Ich habe z.B. ein paar erkannte Räume zusammen gelegt.

Danke!

Gruß

David
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 02 Juli 2021, 19:22:06
Nabend,

mein Ozmo ist auch auf der 1.8.2. Und bei mir habe ich es auf meinem
Raspi4 installiert, auf dem auch Fhem läuft.
Das mit dem zusammenlegen der Räume sollte kein Problem sein.
Stell dein Problem bitte in Github ein.

Gruß schwatter

edit:

Ok, ich bekomme jetzt auch den Fehler.

root@raspi4fhem:~# deebotozmo exportlivemap /tmp/map.png
Traceback (most recent call last):
  File "/usr/lib/python3.7/base64.py", line 510, in _input_type_check
    m = memoryview(s)
TypeError: memoryview: a bytes-like object is required, not 'NoneType'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/bin/deebotozmo", line 10, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1289, in invoke
    rv.append(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/deebotozmo/cli.py", line 203, in exportLiveMap
    fh.write(base64.decodebytes(vacbot.live_map))
  File "/usr/lib/python3.7/base64.py", line 545, in decodebytes
    _input_type_check(s)
  File "/usr/lib/python3.7/base64.py", line 513, in _input_type_check
    raise TypeError(msg) from err
TypeError: expected bytes-like object, not NoneType
root@raspi4fhem:~#


Wahrscheinlicht hat Ecovacs etwas geändert, oder ein Service von den ist down.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: ZeitlerW am 04 Juli 2021, 17:52:09
Hallo zusammen,

ich mußte wieder auf 1.7.1 zurückgehen, dann hat es bei mir funktioniert.
Python 3.5.3 auf Raspbian Stretch


p.s.
@schwatter: Vielen Dank für Deine Arbeit!

vG
Wolfgang

Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 04 Juli 2021, 18:32:45
@ZeitlerW

Sehr gerne. Und jetzt auch Dank an dich. Mit 1.7.1 is alles ok.
Jetzt weiß ich auch warum es nicht mehr funktionert. Ich war
auf 1.7.1 und hatte die letzte Prerelease probiert. Da es nicht
funktioniert hat habe ich einfach die letzte stable 1.8.0 installiert
und nur getestet ob der Bot startet.

Gruß schwatter
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: davipet am 10 Juli 2021, 10:31:00
Moin!

Danke Wolfgang. Mit der 1.7.1 hatte ich es noch gar nicht versucht. Damit funktioniert es bei mir auch!

Ich habe das übrigens mal an den Entwickler weiter kommuniziert.

Gruß

David
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 18 Oktober 2021, 21:42:51
@KölnSolar

Nabend,
nachdem der Edenhaus, der jetztige MainContributer/MainDev von der DeebotLibrary im Moment alles umkrempelt und den Client eher als optional betrachtet, bzw. keine Lust auf Support hat, dachte ich, ich schau mir nochmal das Problem mit dem Port an.

Der Port wurde beim Bot von 1883 auf 443 geändert. Um das ganze jetzt mit FhemOnly zu realisieren, bekommen wir
eine Port-Konflikt.

defmod myEcovacsServer MQTT2_SERVER 443 global
attr myEcovacsServer SSL 1
attr myEcovacsServer autocreate simple
attr myEcovacsServer room Saugroboter
attr myEcovacsServer sslVersion TLSv12


myEcovacsServer: Can't open server port at 443: Permission denied

An der Stelle ist das Problem mein ich Fhem selber, da es 443 blockiert? Irgendwo aufgeschnappt. Kann der Port vielleicht freigegeben werden?
Belegte Fhemports von mir sind 8083,8084 und 8085.

Alternative wäre ein anderer Headlessserver ohne irgendeinem Firlefanz in Bezug auf Port 443 (Webinterface,...,...) oder

ein Routing.
iptables -A PREROUTING -t nat -i wlp0s20f3 -p tcp --dport 443 -j REDIRECT --to-port 8883

Aber auch da bin ich mir nicht sicher, Konflikt mit Fhem wegen dem blockieten Port?

Gruß schwatter

edit:
Oder einfach
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to 8883
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 18 Oktober 2021, 22:41:15
Juhu,
funktioniert, da issa wieder.

Internals:
   CFGFN     
   CID        bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_iElk
   DEF        bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_iElk
   DEVICETOPIC MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_iElk
   FUUID      616ddb0d-f33f-86cf-676e-918b2d18a445b6eb
   IODev      myEcovacsServer
   LASTInputDev myEcovacsServer
   MSGCNT     2
   NAME       MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_iElk
   NR         487
   STATE      ???
   TYPE       MQTT2_DEVICE
   myEcovacsServer_MSGCNT 2
   myEcovacsServer_TIME 2021-10-18 22:37:33
   READINGS:
     2021-10-18 22:37:33   IODev           myEcovacsServer
     2021-10-18 22:37:33   body_data_code  1065
     2021-10-18 22:37:43   body_data_enable 1
     2021-10-18 22:37:33   body_data_info_1_built 1
     2021-10-18 22:37:33   body_data_info_1_index 2
     2021-10-18 22:37:33   body_data_info_1_mid 2010636970
     2021-10-18 22:37:33   body_data_info_1_name
     2021-10-18 22:37:33   body_data_info_1_status 0
     2021-10-18 22:37:33   body_data_info_1_using 1
     2021-10-18 22:37:33   body_data_info_2_built 0
     2021-10-18 22:37:33   body_data_info_2_index 3
     2021-10-18 22:37:33   body_data_info_2_mid 2010636970
     2021-10-18 22:37:33   body_data_info_2_name
     2021-10-18 22:37:33   body_data_info_2_status 0
     2021-10-18 22:37:33   body_data_info_2_using 1
     2021-10-18 22:37:43   body_data_isCharging 1
     2021-10-18 22:37:33   body_data_isHasMap 1
     2021-10-18 22:37:43   body_data_mode  slot
     2021-10-18 22:37:33   body_data_state idle
     2021-10-18 22:37:33   body_data_trigger none
     2021-10-18 22:37:43   header_fwVer    1.8.2
     2021-10-18 22:37:43   header_hwVer    0.1.1
     2021-10-18 22:37:43   header_pri      1
     2021-10-18 22:37:43   header_ts       1634589461911
     2021-10-18 22:37:43   header_tzm      480
     2021-10-18 22:37:43   header_ver      0.0.1
Attributes:
   readingList bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_iElk:iot/atr/onRelocationState/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/iElk/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_iElk:iot/atr/onMapState/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/iElk/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_iElk:iot/atr/onSched/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/iElk/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_iElk:iot/atr/onCachedMapInfo/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/iElk/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_iElk:iot/atr/onEvt/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/iElk/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_iElk:iot/atr/onCleanInfo/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/iElk/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_iElk:iot/atr/onSleep/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/iElk/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_iElk:iot/atr/onChargeState/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/iElk/j:.* { json2nameValue($EVENT) }
   room       MQTT2_DEVICE


Funktionierte erst, nachdem ich den Bot einmal aus und wieder eingeschaltet hatte.

Gruß schwatter

edit:

Ich habe den Hinweis im ersten Post unter 2.02 hinzugefügt.
Titel: Antw:Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: KölnSolar am 19 Oktober 2021, 07:26:42
Na dann antworte ich mal nur ohne Worte.  ;)
Grüße Markus
Titel: Aw: Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 08 Januar 2024, 22:08:48
Nabend,


ich hatte Dennis Giese sein Vortrag auf der 37c3 gesehen. Im Stream war auch ein Link zum EcopasswordCalculator.

--> https://x.com/dgi_DE/status/1742040123997577565?s=20 <-- bitte Link teilen

https://media.ccc.de/v/37c3-11943-sucking_dust_and_cutting_grass_reversing_robots_and_bypassing_security
https://builder.dontvacuum.me/ecopassword.php

Einige Modelle, außer mein Deebot950 waren schon da. Daraufhin habe ich mein UART (Pinout im Anhang) ausgemessen um TX/RX/GND zu finden.
Nachdem ich erfolgreich connectet hatte, kontaktierte ich Dennis.


Heute Nacht hat Dennis nochmal Vollgas gegeben und nun ist die 9x0 Serie auch mit im EcopasswordCalculator.


Ecovacs ist sehr verbreitet und das Ziel ist, auf den neuen Modellen Valetudo zu installieren. Das trifft in meinem Fall
natürlich nicht mehr zu, da EOL.

Mein Antrieb war und ist, ein Redirect der EcovacsServer auf dem Bot einzurichten. Damit würde der Bot direkt, wie im ersten
Post unter "2. Aufbau mit Fhem only", mit dem MQTT_Server aber ohne PIHOLE oder ähnlichen externen DNS_Verbiegern sprechen.


Gruß schwatter
Titel: Aw: Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 21 Januar 2024, 16:30:37
Tag,

jetzt bin ich weiter und ein "spoof" bzw. "redirect" funktioniert direkt auf dem Bot ohne mounten und ohne extra Tools. Er stellt einfach
alles zur Verfügung.


1. Etwas Vorarbeit aus dem ersten Post von mir, damit der Fhemserver den Bot hört.

Ich habe Ubuntu, muss mal wechseln auf Debian, und muss folgendes ergänzen.

echo "1" > /proc/sys/net/ipv4/ip_forward
Danach eine Rule

iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to 8883
Problem, der Bot möchte gerne mit Port 443 sprechen. Das ist aber von Fhem blockiert, auch wenn
ihr es nicht nutzt. Deshalb umleiten.


2. Einen passenden MqttServer anlegen

defmod myEcovacsServer MQTT2_SERVER 8883 global
attr myEcovacsServer SSL 1
attr myEcovacsServer autocreate simple
attr myEcovacsServer room Saugroboter
attr myEcovacsServer sslVersion TLSv12


3. Der Bot sucht zu unserem Glück nach einem Script in /data/autostart. Den Wunsch erfüllen wir ihm natürlich :)
"vi" is on board, damit erstellen wir jetzt den Rest.

echo "1" > /data/freebot/spoofswitch
/data/autostart # cat start.sh
#/bin/sh

# start telnet
/usr/sbin/telnetd

# start ftpserver
/etc/rc.d/vsftpd.sh start

# restart tools and medusa for local redirect if spoofswitch == 1
value=`cat /data/freebot/spoofswitch`
if [[ $value == 1 ]]
then
  echo "mqtt_spoof is on"
  /data/freebot/mqtt_spoof.sh
else
  echo "mqtt_spoof is off"
fi


4. So, nach dem ersten Restart steht uns ein Telnetd Daemon und ein FTP-Server zur Verfügung. Wir arbeiten auch direkt mit Telnet weiter und loggen uns ein.

4.1 mqtt_spoof.sh anlegen

mkdir /data/freebot
/data/freebot # cat mqtt_spoof.sh
#/bin/sh

# stop medusa and dhcpcd
sleep 20
/etc/rc.d/medusa.sh stop
pkill dhcpcd

# change hosts
echo "127.0.0.1 dnsmasq" > /tmp/root/etc/hosts
chmod 0444 /tmp/root/etc/hosts
sleep 1

# dhcpcd always overwrites resolv.conf, so add nodnsupdate
echo "#!/bin/sh" > /data/freebot/nodnsupdate
echo "make_resolv_conf(){" >> /data/freebot/nodnsupdate
echo "        :" >> /data/freebot/nodnsupdate
echo "}" >> /data/freebot/nodnsupdate
chmod +x /data/freebot/nodnsupdate
sleep 1

# start dnsmasq, dhcpcd and medusa again
dnsmasq -C /data/freebot/dnsmasq.conf
sleep 1
dhcpcd --noarp -c /data/freebot/nodnsupdate --option 1,3,6,28,51
sleep 1
/etc/rc.d/medusa.sh start

chmod +x /data/freebot/mqtt_spoof.sh

4.2 dnsmasq.conf anlegen und eure IP vom Fhemserver unter {bumper server ip} eintragen.

/data/freebot # cat dnsmasq.conf
server=208.67.222.222
server=208.67.220.220
listen-address=127.0.0.1
no-dhcp-interface=

# https://bumper.readthedocs.io/en/latest/DNS_Setup/
address=/ecouser.net/{bumper server ip}
address=/ecovacs.com/{bumper server ip}
address=/ecovacs.net/{bumper server ip}

chmod 0444 /data/freebot/dnsmasq.conf

5. Nach einem erneuten restart des Bots sollte in Fhem ein neues Device angelegt werden. Wenn nicht, auf dem Bot einmal den Startbutton drücken.
Er redet nicht sehr viel. Die Topics haben sich etwas verkürzt. Daher muss ich jetzt schauen, wie ich die Cmd-Topics anpassen muss.
Bei mir wurden bis jetzt nur 2 Topics angelegt, da der Bot noch zerplückt im Keller hockt. Mehr als "Error" kommt da noch nicht.
Außerdem denke ich, ich baue noch einen Switch im Script ein, damit ich zwischen Cloud und Lokal umschalten kann.

defmod MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_TQjj MQTT2_DEVICE bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_TQjj
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_TQjj readingList bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_TQjj:iot/atr/onError/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/TQjj/j:.* { json2nameValue($EVENT) }\
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_TQjj:iot/atr/onSpeed/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/TQjj/j:.* { json2nameValue($EVENT) }
attr MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_TQjj room MQTT2_DEVICE

setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_TQjj 2024-01-21 14:42:40 IODev myEcovacsServer
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_TQjj 2024-01-21 14:42:45 body_data_code_1 102
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_TQjj 2024-01-21 14:42:40 body_data_speed 0
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_TQjj 2024-01-21 14:42:45 header_fwVer 1.8.2
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_TQjj 2024-01-21 14:42:45 header_hwVer 0.1.1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_TQjj 2024-01-21 14:42:45 header_pri 1
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_TQjj 2024-01-21 14:42:45 header_ts 1705844564179
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_TQjj 2024-01-21 14:42:45 header_tzm 480
setstate MQTT2_bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_TQjj 2024-01-21 14:42:45 header_ver 0.0.1


Gruß schwatter




Titel: Aw: Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: KölnSolar am 21 Januar 2024, 20:21:55
Seeeeehr interessant  !!!

Aber ich glaub ich verfahre nach dem alten Motto: never change a running system. bumper verrichtet noch immer seine Dienste.

Grüße Markus
Titel: Aw: Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 27 Januar 2024, 13:42:51
@KölnSolar

Tag,

bleib bei deinem Setup. Ich will dich zu nix animieren :D

@all EcovacsUser

Hatte die Tage damit verbracht, meine Mainboard zu flicken. Leider ist da geplante Obsolenz
mit im Spiel. SMD's rauchen ab. Und bestimmte Funktionen wie z.B Laden leiden darunter.
Bin noch nicht fertig, daher habe ich mich heute wieder MQTT zugewandt.

Top, jetzt funktioniert es genau so wie unter Punkt "2. Aufbau mit Fhem only" beschrieben.
Aber ohne Pihole. Das der Bot sich direkt mit Fhem connectet, hatte ich oben schon beschrieben.
Was ich den Tag bei der Freude übersehen hatte, es hat sich lediglich das "devicetopic" minimal geändert.

Von:

bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/9cha
Zu:

bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/TQjj
Danach funktioniert die set- und getlist.

Möchte man die Map in der App bearbeiten, einfach kurz in der /data/autostart/start.sh
die Zeile -->/data/freebot/mqtt_spoof.sh<-- mit"#" auskommentieren und einen reboot auslösen.
Jetzt ist der Bot wieder online. Danach das "#" wieder entfernen und einen erneuten reboot
auslösen. Dann steht der Bot in Fhem wieder zur Verfügung.

Gruß schwatter
Titel: Aw: Deebot Ozmo 950 [MQTT][CLOUDFREE][CLOUD][bumper][non-bumper]
Beitrag von: schwatter am 28 Januar 2024, 18:01:01
Nabend,

damit wir schnell den Redirect per Fhem an und aus schalten können, habe ich mir 2 Scripte
und ein DOIF gebastelt.

Da wir im Moment nur Telnet anstatt SSH haben, benutze ich TCL. Dafür brauchen wir "expect".
# we use https://www.tcl.tk/ to login in telnet
apt install expect

Dann einen Ordner in Fhem erstellen.
mkdir /opt/fhem/deebot

Nun 2 Scripte im Ordner anlegen. Wichtig, Password von euerem Bot einfügen. Direkt unter expect "Password: " im send.
vi /opt/fhem/deebot/deebotswitch_on.sh
#!/usr/bin/expect
# if you get "Escape character is '^]'" as the output it means got connected otherwise it has failed

# change to the ip of your bot
spawn telnet 192.168.178.81 23
expect "'^]'."

expect "deboot login: "
send "root\n"
sleep 1
expect "Password: "
send "HierKommtEuerPasswordHin\n"
sleep 2
send "echo 1 > /data/freebot/spoofswitch\n"
puts "switched to on, now reboot"
sleep 1
send "reboot\n"
expect eof
exit

vi /opt/fhem/deebot/deebotswitch_off.sh
#!/usr/bin/expect
# if you get "Escape character is '^]'" as the output it means got connected otherwise it has failed

# change to the ip of your bot
spawn telnet 192.168.178.81 23
expect "'^]'."

expect "deboot login: "
send "root\n"
sleep 1
expect "Password: "
send "HierKommtEuerPasswordHin\n"
sleep 2
send "echo 0 > /data/freebot/spoofswitch\n"
send "/etc/rc.d/medusa.sh stop\n"
puts "switched to off, now reboot"
sleep 1
send "reboot\n"
expect eof
exit

Jetzt die Scripte ausführbar machen, fhem als Eigentümer und dialout als Gruppe setzen.
chmod +x -R /opt/fhem/deebot
chown -R fhem /opt/fhem/deebot
chgrp -R dialout /opt/fhem/deebot

Zum Abschluss das DOIF.
defmod Deebot950.Redirectcontrol DOIF (["$SELF:command: Aus"])\
    ( {system("/opt/fhem/deebot/deebotswitch_off.sh")} )\
DOELSEIF (["$SELF:command: An"])\
    ( {system("/opt/fhem/deebot/deebotswitch_on.sh &")} )
attr Deebot950.Redirectcontrol cmdState AUS|AN
attr Deebot950.Redirectcontrol group Saugroboter
attr Deebot950.Redirectcontrol icon audio_shuffle
attr Deebot950.Redirectcontrol readingList command
attr Deebot950.Redirectcontrol setList command:uzsuSelectRadio,An,Aus
attr Deebot950.Redirectcontrol stateFormat Redirectstatus: (command)
attr Deebot950.Redirectcontrol webCmd command

edit:
Ahhh, ganz vergessen. Damit das funktioniert, muss auch das Script auf dem Bot angepasst werden.
Ist damit erledigt.
Siehe https://forum.fhem.de/index.php?topic=112149.msg1300870#msg1300870 unter Punkt 3.


Gruß schwatter