Hi.
Da mein Deebot Slim der Version 1 nun die Hufe hochgemacht hat und Amazon mir den Kaufpreis zurückerstattet,
will ich mir die Version 2 zulegen, die mittles Wlan (Client-Mode) dann über eine App gesteuert werden kann.
Frage hier ist: Hat jemand das Teil schon im Einsatz und kann berichten, ob eine Fhem-Integration bereits geglückt ist?
Oder sonstige Tipps für das Teil?
Danke schonmal.
Moin, ich hab mir auch einen bestellt wegen meinem Husky der zum Fellwechsel extrem haart.
Mal sehen ob er was taugt bei der Menge an Haaren... naja jedenfalls zurück zur Frage:
Es gibt die Sucks library von hier: https://github.com/wpietri/sucks
Die soll wohl mit allen Deebot (Ecovacs) Geräten kompatibel sein.
Gibt es schon was neues zu diesen Thema ?
Leider noch nix.
Ich hab es nichtmal hinbekommen, den Bot selbst über die App zu steuern -> zurückgeschickt.
Vielleicht kommt mal noch was anderes von Deebot...
Neuer Deebot, neues Glück ^^
Über Sucks dürfte was zu machen sein. Hierüber kann ich das Ding bereits steuern und Statusdaten erhalten (über --debug):
https://github.com/wpietri/sucks
Es gibt mittlerweile auch, basierend auf sucks, Libraries (Javascript, golang)
und ebenso ein Python-Script zur Integration in die Homebridge:
https://github.com/EtienneMD/Cmdswitch2-Ecovacs
sucks DEBUG *** battery_status = 25%
sucks DEBUG *** sending ping ***
sucks DEBUG *** sending ping ***
sucks DEBUG *** sending ping ***
sucks DEBUG *** sending ping ***
sucks DEBUG *** sending ping ***
sucks DEBUG *** charge_status = returning
sucks DEBUG *** charge_status = returning
sucks DEBUG *** charge_status = returning
sucks DEBUG *** battery_status = 20%
sucks DEBUG *** sending ping ***
sucks DEBUG *** sending ping ***
sucks DEBUG *** sending ping ***
sucks DEBUG *** sending ping ***
sucks DEBUG *** sending ping ***
sucks DEBUG *** sending ping ***
sucks DEBUG *** sending ping ***
sucks DEBUG *** sending ping ***
sucks DEBUG *** sending ping ***
sucks DEBUG *** sending ping ***
sucks DEBUG *** charge_status = returning
sucks DEBUG *** charge_status = returning
sucks DEBUG *** charge_status = charging
sucks DEBUG *** charge_status = charging
sucks DEBUG *** clean_status = stop fan_speed = normal
sucks DEBUG *** sending ping ***
sucks DEBUG *** battery_status = 21%
sucks DEBUG *** sending ping ***
sucks DEBUG *** sending ping ***
sucks DEBUG *** sending ping ***
Und ? Weitere Erkenntnisse ?
Ich hab mir heute den OZMO Slim10 zugelegt. Gesaugt hat er schon mal ganz passabel. Die Treppe runter gefallen ist er nicht und hat auch sonst wenig Blödsinn gemacht. Angenehm leise. Bei Nicht-Hartböden dürfte er Schwierigkeiten durch seine geringe Saugleistung bekommen.
Tja, sucks klingt nach "nach Hause telefonieren"(cloud). Mega schlecht. Müsste man gucken, dass nur telefoniert wird, wenn man das will, also einen Türsteher zur weiten Welt einbauen. Python, naja. Aber so haben wir mit dem Samsung auch angefangen. Cmdswitch2-Ecovacs kriegen wir vermutlich so übersetzt, dass wir es in ein FHEM-Modul packen könnten.
Langfristig ohne www.
Ich scheitere dann erst einmal daran, dass ich weder iOS, noch Android "kann". Also vorerst keine WLAN-Kommunikation/-Information. :'(
Grüße Markus
Edit: 1. bumper (https://github.com/bmartin5692/bumper) ist das Zauberwort für die cloudfree Kommunikation. ;D
Server auf Python3-Basis zur Emulation der Cloud-Server
Router mit Fähigkeit der DNS-Umleitung notwendig(Fritte kann nur Domains "aussperren";ggfs. eigener DNS-notwendig; pi-hole ?)
Sehe ich ja jetzt erst, dass es hier im Thread ein wenig weitergegangen ist.
Jau, bin mit dem Slim auch halbwegs zufrieden (nur, dass er Kabel, Tischbeine, Wäscheständer etc. liebt und sich dauernd dran aufhäng)...
Ich nutze das Sucks-Modul momentan nur zum rumspielen über die Konsole. Ansonsten hab ich noch nix weiter damit gemacht.
Dürfte nicht allzuschwer sein, das Ganze hübsch in ein Fhem-Modul zu packen.
Richtig, Bumper hatte ich schonmal gefunden. War mir aber erstmal zuviel Arbeit und habs zu meinen "Winter-Projekten" verschoben, mit denen ich sowieso nie fertig werde... wenn ich denn mal anfange :-D
Hallo,
ich hab zwar nicht diesen Deebot aber beim Stöbern im Roboter Forum bin ich über diesen thread https://www.roboter-forum.com/index.php?thread/37700-alternativer-server-und-client-f%C3%BCr-deebot-ger%C3%A4te/ (https://www.roboter-forum.com/index.php?thread/37700-alternativer-server-und-client-f%C3%BCr-deebot-ger%C3%A4te/)gestolpert.
Ein User von dort hat seine erfolge auch auf GIT https://gitlab.com/michael.becker/vacuumclean (https://gitlab.com/michael.becker/vacuumclean)zur Verfügung gestellt. Der applaus gebührt also ihm.
Ich denke das man damit was anfangen kann (wenn man weiß was man tut :-[ )
Da hab ich hoffnung das mein Deebot 930 nun doch irgendwann den Weg zu FHEM findet. Getestet habe ich noch nicht.
Grüße
ZitatIch denke das man damit was anfangen kann
Leider nein. Zumindest für die SlimX, denn die sprechen wohl MQTT u. nicht XMPP. :'(
Mittlerweile hab ich meinen Bot müühsaaaaam über eine Android-Emulation registriert. Prompt ist er mir beim Suchen der Ladestation in den Keller gestürzt. :o Zum Glück nur Plastikschaden am Bumper.
Zur Zeit verzweifle ich an der Installation von bumper wg. diesem Sch.... python. Zig verschiedene Versionen, pip ebenso und dieses pipenv raubt einem die letzten Haare, weil es dann Berechtigungsprobleme gibt. Kein Python-Profi in der Nähe, der einem sagen kann, wann man was ggfs. mit sudo wo installieren/srarten muss ?
Grüße Markus
Es ist mühsam, aber wir kommen der Sache näher. ;D Ich habe nun endlich geschafft bumper zu installieren und ans rennen zu bringen.
Dabei hab ich feststellen können, dass der slim10 mqtt spricht. Ich hab es auch schon hinbekommen die topics mit mqtt.fx zu subscriben. Die Infos sind umfangreich. Ich guck jetzt mal, wie wir damit weiterkommen.
Grüße Markus
So es ist so weit. Erste Daten in FHEM. ;D Ich hab es noch nicht strukturiert und auch noch keine finale Lösung. Aber nachdem ich mit wesentlicher Unterstützung von Rudi die Daten über MQTT2_CLIENT per mqtt empfangen habe, wollte ich Euch kurz darüber in Kenntnis setzen. Wer sich an "bumper" probiert hat, kann sich melden. Ich versuche aber eine Lösung ohne jegliche "externe" Software hinzubekommen.
Das Ganze wird nicht für alle Ecovacs-Bots funktionieren, da modellspezifisch nicht alle mqtt sprechen. :'(
Ich habs mit einem OZMO Slim10 hinbekommen.
Grüße Markus
Ich hänge mich mal hier mit dran und stelle mich mit meinem Slim2 als Tester zur Verfügung.
vb
Hi VB,
auch wenn es für mich eine Quälerei war: Magst Du bumper(Python) (https://github.com/bmartin5692/bumper) installieren ?
Wie Du hier (https://github.com/bmartin5692/bumper/issues/51) nachlesen kannst, stocken meine Bemühungen. Von überm Teich habe ich leider keine Antwort/Hilfe mehr bekommen. :(
Der slim2 spricht meines Wissens auch mqtt und vielleicht kommen wir über den ja weiter...
Grüße Markus
Moin Markus,
ich schau mir das mal an. Versprechen kann ich dir nix, ausser dem Deebot habe ich nicht viel. sowas wie Ahnung oder so....
MQTT, weiste was das für mich is?? Ein böhmisches Dorf... ;D
Gut, ich schau mal wie weit ich komme.
vb
Japp, ich werde dann auch anfangen zu testen. Hab mich an euren Github-Bug angehängt und warte noch auf Ergebnisse, bevor ich starte.
ZitatMQTT, weiste was das für mich is?? Ein böhmisches Dorf...
;D ;D ;D Es ist wie immer. Die Abkürzung klingt nach kompliziert und wenn man dann einmal z.B. Wikipedia bemüht hat, ist es total einfach. Da kann ich auch jederzeit mit Rat zur Seite stehen. Schwieriger ist wie oben
ZitatZur Zeit verzweifle ich an der Installation von bumper wg. diesem Sch.... python. Zig verschiedene Versionen, pip ebenso und dieses pipenv raubt einem die letzten Haare, weil es dann Berechtigungsprobleme gibt. Kein Python-Profi in der Nähe, der einem sagen kann, wann man was ggfs. mit sudo wo installieren/srarten muss ?
schon beschrieben dieser Python-Mist(sorry an die, die sich damit auskennen und es dann auch einfach ist ;) )
Achte bei Python auf Installationshinweise in der bumper-Doku und überlege immer, ob es sich gerade um eine "allgemeine" Installation handelt, die mit Root-Rechten(also in der Regel mit vorangestelltem sudo) gestartet werden muss oder lokal. Hilfreich ist sicherlich, wenn Du Deine (erfolgreichen ;D) Schritte dokumentierst und wir so eine Anleitung hinbekommen. Am besten Du beginnst damit die Versionsinfos zu pip, pipenv und Python zu sammeln. Zu letzterem gibt es dann noch diesen Blödsinn, dass es so etwas wie python UND python3 UND python3.7 oder so ähnlich geben kann. >:(
Grüße Markus
Yippi.
Mein bot hört auf mich. Ohne Cloud. Bisher noch mit bumper. Aber das müsste nun auch mit mqtt2-server machbar sein. Problem wird TSL werden. Aber dann brauchen wir kein Python-add-on mehr.
Ohne Brian(author v. bumper) hätt ich das nie hinbekommen, da der Slim10 scheinbar einen bis dato unbekannten "Dialekt" hat.
Thank you so much Brian. :-*
Grüße Markus
Nun mal etwas zum "Aufbau" in FHEM.
Es wird ein MQTT2_CLIENT device als Kommunikations-Schnittstelle und der Bot selber als MQTT2_DEVICE benötigt. Letzteres wird über das attr IODEV zum MQTT_CLIENT-device "verlinkt".
Zuerst das MQTT2_CLIENT device
define myEcovacsClient MQTT2_CLIENT bumperIP:bumperMQTT-Port
attr myEcovacsClient SSL 1
attr myEcovacsClient autocreate simple
attr myEcovacsClient clientId irgendwas@bumper/GLB19396e86
attr myEcovacsClient mqttSubscribe iot/p2p/# iot/atr/# \$SYS
attr myEcovacsClient mqttVersion 3.1.1
attr myEcovacsClient username hierhabichdenecovacsaccount
Ob clientId u. username genauso aufgebaut sein MÜSSEN, kann ich nicht sagen. Der beschriebene Aufbau funktioniert jedenfalls. Das GLB19396e86 wird bei Euch vermutlich anders sein. Das findet Ihr über die bumper-Logs heraus.
Etwas unübersichtlicher das eigentliche device. Ich hab mal die get-, set- u. readingsList-Attribute hinten angestellt, um die anderen Attribute in den Fokus zu rücken. Und ACHTUNG in der get-list findet Ihr den NetInfo-Befehl. Der hat die unangenehme Eigenschaft, dass er das Passwort Eures WiFi-Netzwerks lesbar in ein reading schreibt. Also ggfs. weglassen !!!!
serialId-des-Deebot ist, man glaubt es kaum, durch die serial-Id Eures Bots zu ersetzen.
02uwxm/O70q wird bei Euch vermutlich ebenfalls anders sein. Das findet Ihr auch über die bumper-Logs heraus.
define OZMO MQTT2_DEVICE irgendwas_bumper_GLB19396e86
attr OZMO IODev myEcovacsClient
attr OZMO getList BatteryInfo:noArg Bat iot/p2p/GetBatteryInfo/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1121/x <ctl/>\
ChargeState:noArg ChSt iot/p2p/GetChargeState/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1122/x <ctl/>\
CleanSpeed:noArg ClSp iot/p2p/GetCleanSpeed/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1123/x <ctl/>\
CleanState:noArg ClSt iot/p2p/GetCleanState/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1124/x <ctl/>\
CleanStatistics:noArg ClState iot/p2p/GetCleanStatistics/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1125/x:.* <ctl/>\
CleanSum:noArg ClSum iot/p2p/GetCleanSum/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1126/x <ctl/>\
Error:noArg Error iot/p2p/GetError/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1127/x <ctl/>\
LifeSpan:DustCaseHeap,SideBrush LifeSpan iot/p2p/GetLifeSpan/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1128/x <ctl type='$EVTPART1'/>\
NetInfo:noArg Net iot/p2p/GetNetInfo/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1129/j {"td": "NetInfo"}\
Schedule:noArg Schd iot/p2p/GetSched/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1130/x <ctl/>\
SleepStatus:noArg SlState iot/p2p/GetSleepStatus/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1131/x <ctl/>\
SpotArea:noArg SpArea iot/p2p/GetSpotArea/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1132/x <ctl/>\
WaterBoxInfo:noArg WB iot/p2p/GetWaterBoxInfo/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1133/x <ctl/>\
WaterPermeability:noArg WP iot/p2p/GetWaterPermeability/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1134/x <ctl/>\
WKVer:noArg Vers iot/p2p/GetWKVer/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1135/j {"td": "GetWKVer"}\
Firmware:noArg Firm iot/p2p/GetVersion/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1136/x <ctl td="GetVersion" name="FW"/>
attr OZMO readingList \$SYS/broker/version:.* version\
\$SYS/#:.* BrokerMessage\
iot/atr/BatteryInfo/EureSerialId/02uwxm/O70q/x:.* BatteryInfo\
iot/p2p/GetBatteryInfo/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* GetBatteryInfo\
iot/atr/ChargeState/EureSerialId/02uwxm/O70q/x:.* ChargeState\
iot/p2p/GetChargeState/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* ChargeState\
iot/atr/CleanReport/EureSerialId/02uwxm/O70q/x:.* CleanReport\
iot/p2p/GetCleanReport/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* CleanReport\
iot/atr/CleanRptBgdata/EureSerialId/02uwxm/O70q/x:.* CleanRptBgdata\
iot/p2p/GetCleanRptBgdata/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* CleanRptBgdata\
iot/atr/CleanSt/EureSerialId/02uwxm/O70q/x:.* CleanSt\
iot/p2p/GetCleanSt/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* CleanSt\
iot/p2p/GetCleanStatistics/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* CleanStatistics\
iot/p2p/GetCleanSpeed/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* {my @a = "";; @a = split(" ",$EVENT);;return {"CleanSpeed" => $a[2]}}\
iot/p2p/GetLifeSpan/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* {my @a = "";; @a = split(" ",$EVENT);;my $name = $a[2] =~ /Heap/ ? "LifeSpanHeap" : "LifeSpanBrush";; return { $name => $a[3]." of ".$a[4]}}\
iot/p2p/GetSched/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* Schedule\
iot/p2p/SetTZ/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/[^/]+/j:.* Schedule\
iot/atr/SleepStatus/EureSerialId/02uwxm/O70q/x:.* SleepStatus\
iot/p2p/GetSleepStatus/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* SleepStatus\
iot/p2p/GetCleanState/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* CleanState\
iot/p2p/GetCleanLogs/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* CleanLogs\
iot/p2p/GetCleanSum/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* CleanSum\
iot/p2p/GetSpotArea/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* SpotArea\
iot/p2p/SetSpotArea/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* SpotArea\
iot/p2p/GetWaterBoxInfo/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* WaterBoxInfo\
iot/atr/WaterBoxInfo/EureSerialId/02uwxm/O70q/x:.* WaterBoxInfo\
iot/p2p/GetWaterPermeability/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* WaterPermeability\
iot/atr/GetIOTConnStatus/EureSerialId/02uwxm/O70q/j:.* GetIOTConnStatus\
iot/p2p/GetIOTConnStatus/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* GetIOTConnStatus\
iot/atr/GoChargeBgdata/EureSerialId/02uwxm/O70q/x:.* GoChargeBgdata\
iot/p2p/GoChargeBgdata/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* GoChargeBgdata\
iot/atr/error/EureSerialId/02uwxm/O70q/x:.* error\
iot/p2p/GetError/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* error\
iot/atr/evt/EureSerialId/02uwxm/O70q/x:.* evt\
iot/p2p/[^/]+/helper1/bumper/helper1/EureSerialId/02uwxm/O70q/q/[^/]+/x:.* {my @a = "";; @a = split("/",$TOPIC);;return {"LastCommand" => $a[2]. " " . $EVENT }}\
iot/p2p/GetWKVer/helper1/bumper/helper1/EureSerialId/02uwxm/O70q/#:.* GetWKVer\
iot/p2p/[^/]+/proxyhelper/ecosys/1234/EureSerialId/02uwxm/O70q/q/[^/]+/j:.* { json2nameValue($EVENT) }\
iot/p2p/[^/]+/proxyhelper/ecosys/1234/EureSerialId/02uwxm/O70q/q/[^/]+/x:.* ProxyHelperCommand\
iot/p2p/[^/]+/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/[^/]+/x:.* HelperbotCommand\
iot/p2p/Move/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/[^/]+/x:.* manualMove\
iot/p2p/[^/]+/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* HelperBotResponse\
iot/p2p/GetWKVer/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/j:.* GetWKVer\
iot/p2p/GetNetInfo/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/j:.* NetInfo\
iot/p2p/GetVersion/EureSerialId/02uwxm/O70q/helperbot/bumper/helperbot/p/[^/]+/x:.* Firmware
attr OZMO setList charge:noArg iot/p2p/Charge/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1111/x <ctl><charge type='go'/></ctl> \
clean:auto,border,spot,stop iot/p2p/Clean/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1112/x <ctl><clean type='$EVTPART1' speed='strong' act='s'/></ctl>\
spotArea:1x1,2x2,3x2 iot/p2p/SetSpotArea/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1115/x <ctl x='2.0' y='2.0'/>\
beep:noArg iot/p2p/PlaySound/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1116/x <ctl/>\
speed:strong,standard iot/p2p/SetCleanSpeed/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1117/x <ctl speed='$EVTPART1'/>\
waterPermeability:1,2,3,4 iot/p2p/SetWaterPermeability/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1118/x <ctl v='$EVTPART1'/>\
move:backward,forward,SpinLeft,SpinRight,TurnAround,stop iot/p2p/Move/helperbot/bumper/helperbot/EureSerialId/02uwxm/O70q/q/1119/x <ctl td="Move"><move action="$EVTPART1"/></ctl>
# noch meine settings der readings zur Nachvollziehbarkeit
setstate OZMO charge
setstate OZMO 2020-02-03 13:55:56 BatteryInfo <ctl td='BatteryInfo'><battery power='102'/></ctl>
setstate OZMO 2020-02-03 13:15:53 ChargeState <ctl td='ChargeState'><charge type='SlotCharging'/></ctl>
setstate OZMO 2020-02-02 17:43:00 CleanLogs <ctl ret='ok'><CleanSt a='021' s='1580638142' l='1999' t='a' f='a'/><CleanSt a='018' s='1580642288' l='1517' t='a' f='a'/><CleanSt a='000' s='1579615405' l='0012' t='a' f='a'/><CleanSt a='000' s='1579615427' l='0011' t='a' f='a'/><CleanSt a='000' s='1579872143' l='0296' t='a' f='a'/><CleanSt a='000' s='1579872446' l='0058' t='a' f='a'/><CleanSt a='018' s='1579872537' l='2204' t='a' f='a'/><CleanSt a='007' s='1580296930' l='0555' t='a' f='a'/><CleanSt a='018' s='1580298119' l='1494' t='a' f='a'/><CleanSt a='010' s='1580299684' l='0904' t='a' f='a'/></ctl>
setstate OZMO 2020-02-03 13:15:54 CleanReport <ctl td='CleanReport'><clean type='auto' speed='strong' st='h' rsn='a'/></ctl>
setstate OZMO 2020-02-03 13:10:48 CleanRptBgdata <ctl td='CleanRptBgdata' ts='1580739032' Battery='097' CleanID='3982208858' iCleanID='3982208858' MapID='1263538129' rsn='a' IsFrmCharger='0' CleanType='auto' Speed='strong' OnOffRag='1' WorkMode='s' Spray='4' WorkArea='000'/>
setstate OZMO 2020-02-02 18:49:41 CleanSpeed speed='strong'/>
setstate OZMO 2020-02-03 13:11:05 CleanSt <ctl td='CleanSt' a='000' s='2' l='0000' t='a'/>
setstate OZMO 2020-02-02 18:20:31 CleanState <ctl ret='ok'><clean speed='standard' st='h' t='100' a='100'/></ctl>
setstate OZMO 2020-02-02 18:20:31 CleanStatistics <ctl ret='ok' a='0' s='2' l='0' t='a'/>
setstate OZMO 2020-02-02 18:48:22 CleanSum <ctl ret='ok' a='000000160' l='000014835' c='000000025'/>
setstate OZMO 2020-02-03 13:54:39 Firmware <ctl ret='ok'><ver name='FW'>1.1.4</ver></ctl>
setstate OZMO 2020-02-02 18:20:29 GetBatteryInfo <ctl ret='ok'><battery power='120'/></ctl>
setstate OZMO 2020-02-02 23:45:38 GetIOTConnStatus {"td":"GetIOTConnStatus","on":1,"conn":2,"ip":"bumper-IP"}
setstate OZMO 2020-02-02 18:46:48 GetWKVer {"ret":"ok","ver":"0.3.5e"}
setstate OZMO 2020-02-03 13:15:55 GoChargeBgdata <ctl td='GoChargeBgdata' ts='1580739325' Battery='096' GoChargeId='2971026588' CleanId='3982208858' PreWorkMode='stop' WorkMode='Idle' CmdSrc='a' MapId='' OnCharger='1'/>
setstate OZMO 2020-02-03 13:54:39 HelperBotResponse <ctl ret='ok'><ver name='FW'>1.1.4</ver></ctl>
setstate OZMO 2020-02-03 13:54:38 HelperbotCommand <ctl td="GetVersion" name="FW"/>
setstate OZMO 2020-01-21 13:30:16 LastCommand PlaySound <ctl/>
setstate OZMO 2020-02-02 18:33:56 LifeSpanBrush left='113' of total='150'/>
setstate OZMO 2020-02-02 18:33:39 LifeSpanHeap left='073' of total='120'/>
setstate OZMO 2020-02-02 18:46:11 NetInfo {"ret":"ok","s":"EuerAccessPoint","p":"WiFi-Passwort","wi":"Bot-IP","wm":"Bot-MAC","st":"-72"}
setstate OZMO 2020-02-02 18:52:03 Schedule <ctl ret='ok'><s n='15806597273928' o='0' h='17' m='8' r='0000000'><ctl td='clean' type='auto'/></s><s n='15806597729675' o='0' h='17' m='9' r='0000000'><ctl td='clean' type='auto'/></s></ctl>
setstate OZMO 2020-02-03 13:33:02 SleepStatus <ctl ts='1580736784' td='SleepStatus' st='1'/>
setstate OZMO 2020-02-02 18:20:27 SpotArea <ctl ret='ok' x='2' y='2'/>
setstate OZMO 2020-02-02 18:25:26 WaterBoxInfo <ctl ret='ok' on='1'/>
setstate OZMO 2020-02-02 18:50:15 WaterPermeability <ctl ret='ok' v='4'/>
setstate OZMO 2020-02-03 13:15:07 error <ctl td='error' errs='100'/>
setstate OZMO 2020-02-03 13:15:55 evt <ctl td='evt' e='7'/>
setstate OZMO 2020-02-03 13:14:41 manualMove <ctl td="Move"><move action="SpinLeft"/></ctl>
setstate OZMO 2020-02-03 13:15:06 state charge
setstate OZMO 2020-02-03 06:02:04 version HBMQTT version 0.9.5
Have Fun
Markus
Zitat von: KölnSolar am 03 Februar 2020, 08:35:03
Und wenn ja, da stecken ne Menge user-/device-spezifische zu ersetzende Strings drin. Wie müsste man die "definieren", damit ein template leicht für den individuellen Einsatz nutzbar ist.
Hmm, ist es nicht so, dass das meiste user/device-spezifische aus den readingList-Einträgen abzulesen wäre?
Z.B. in "iot/atr/BatteryInfo/serialId-des-Deebot/02uwxm/O70q/x" stecken ja die immer wieder benötigten Infos zu serialId-des-Deebot drin sowie die vermutlich spezifischen Angaben "02uwxm" und "O70q". Kann man mit "par:" und etwas regex extrahieren und ohne weiteres verwenden, man sollte halt eine rL-Zeile nehmen, die "immer" da ist...
Völlig "doof" ist die "Verpackung" der eigentlichen Infos; dafür würde man eine Mischung aus json2nameValue() und parseParams() benötigen (aber das sind zum Teil verschachtelte Strukturen, geht vermutlich mit parseParams() nicht)...
Kann man dem Bot beibringen, "vernünftiges JSON" zu sprechen, statt so einen eigenen Kauderwelsch?
Ansonsten wäre die Überlegung, ob man das erst selbst nach JSON umpackt (myUtils, analog der Karte für valetudo) und dann das Zwischenergebnis an json2NameValue() übergibt; das hätte den Vorteil, dass man z.B. auch das Passwort über jsonMap aussortieren könnte...
Hilft das erst mal weiter?
Danke schon einmal.
ZitatVöllig "doof" ist die "Verpackung" der eigentlichen Infos; dafür würde man eine Mischung aus json2nameValue() und parseParams() benötigen (aber das sind zum Teil verschachtelte Strukturen, geht vermutlich mit parseParams() nicht)...
Das will ich auch gar nicht. Die geringe Anz. User müssen schon die Syntax verstehen. (Ich bin eher der Typ funktionell, als schöne Oberfläche)
ZitatHmm, ist es nicht so, dass das meiste user/device-spezifische aus den readingList-Einträgen abzulesen wäre?
Hast Du völlig richtig verstanden. Das ist alles vom Gerät des Users abhängig.
ZitatKann man mit "par:" und etwas regex extrahieren und ohne weiteres verwenden, man sollte halt eine rL-Zeile nehmen, die "immer" da ist...
Das guck ich mir dann mal in Ruhe an.
ZitatKann man dem Bot beibringen, "vernünftiges JSON" zu sprechen, statt so einen eigenen Kauderwelsch?
;D ;D ;D Nein, damit muss man bei "Migranten" leben. ;) Kauderwelsch=XMPP
ZitatHilft das erst mal weiter?
Definitiv.
Danke&Grüße
Markus
und jetzt noch ein paar weitere gets(firmware), sets(move;eine Funktion, die es noch nicht einmal in der App gibt 8)) sowie die dazugehörigen readings im obigen Post ergänzt.
Schön, dass du vorankommst.
XMPP sagte mir bis dahin nichts, aber es scheint auch dafür ja libs zu geben, vielleicht kann man damit einfaches decode/encode machen?
Zwei Tipps noch:
- die Seriennummer scheint wichtig zu sein, vielleicht anonymisierst du die im letzten List?
- Du kannst den CID-Präfix (fhemuser1_bumper_GLB19396e86:) in der readingList komplett weglassen. Ist mMn. zu empfehlen, vor allem, wenn man nicht gewährleisten kann, dass sich die nicht ändert, was bei externen Diensten gerne mal der Fall ist...
Zitatdie Seriennummer scheint wichtig zu sein, vielleicht anonymisierst du die im letzten List?
Du Fuchs. Mir war es im nachhinein auch aufgefallen und ist schon geändert.
ZitatDu kannst den CID-Präfix (fhemuser1_bumper_GLB19396e86:) in der readingList komplett weglassen
Klar. Ich hatte es auch schon mal ohne. Fördert die Übersichtlichkeit.
Danke
Markus
nur kurz zu xmpp: je nach anforderung braucht man keine lib. der harmony hub spricht eigentlich auch xmpp, das modul nimmt aber nur die xml lib und ein paar regex.
Ich kann es kaum glauben. Hatte ich tatsächlich nie final kommuniziert, dass mein Slim10 OHNE bumper nur mit FHEM-Bordmitteln(MQTT2) läuft ? Ich find zumindest selber keinen Post dazu. :-[ :o Laufen tuts nun bereits seit 3 Monaten problemlos. 8) Keine chique Oberfläche, keine toll aufbereiteten Readings, aber für den (scheinbar) kleinen Anwenderkreis macht das auch wenig Sinn.
Das Problem ist nur: Ich habe so viel hin und her gebastelt, dass ich keine funktionsfähige Schritt-für-Schritt-Anleitung liefern kann. :'(
Mein System zu verändern traue ich mich nicht, so dass ich einen interessierten User bräuchte, um eine Schritt-für-Schritt-Anleitung zu entwickeln. Wer Lust hat meldet sich, nachdem er bumper funktionsfähig installiert hat. Wir brauchen es nämlich zumindest für die SSL-Zertifikate-Generierung und ein paar userspezifische Informationen.
Grüße Markus
Ich würde mich gerne daran versuchen. Habe seit ein paar Tagen den Deebot Ozmo 950. Gekauft wegen MQTT.
Noch war er nicht im Wlan, auch habe ich keine APP vom Handy benutzt. Seh ich das richtig, das er einmalig mit
dem Server von Deebot sprechen muss? Also muss ich zwingend einen Account anlegen?
Bumber habe ich testweise mal unter Windows10 installiert. Unter python3.8
C:\Users\schwatter.ZOTAC-ZBOX\Desktop\bumper>pipenv install
Installing dependencies from Pipfile.lock (2ba937)...
================================ 19/19 - 00:00:28
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
C:\Users\schwatter.ZOTAC-ZBOX\Desktop\bumper>pipenv run python -m bumper
Creating certificates
-------- Create_Certs --------
-------- Starting Certificate Creation --------
Options:
Output Directory: C:\Users\schwatter.ZOTAC-ZBOX\Desktop\bumper\certs
Input SAN List: C:\Users\schwatter.ZOTAC-ZBOX\Desktop\bumper\create_certs\Bumper_SAN.txt
-------- Creating CA Cert --------
2020/05/23 21:12:11 ca.crt created at C:\Users\schwatter.ZOTAC-ZBOX\Desktop\bumper\certs\ca.crt
2020/05/23 21:12:11 ca.key created at C:\Users\schwatter.ZOTAC-ZBOX\Desktop\bumper\certs\ca.key
-------- Creating Server Cert --------
2020/05/23 21:12:11 bumper.crt created at C:\Users\schwatter.ZOTAC-ZBOX\Desktop\bumper\certs\bumper.crt
2020/05/23 21:12:11 bumper.key created at C:\Users\schwatter.ZOTAC-ZBOX\Desktop\bumper\certs\bumper.key
-------- Certificate Creation Complete --------
Certificates created
C:\Users\schwatter.ZOTAC-ZBOX\Desktop\bumper>[2020-05-23 21:12:12,974] :: INFO :: bumper :: Starting Bumper
[2020-05-23 21:12:13,059] :: INFO :: mqttserver :: Starting MQTT Server at 169.254.133.212:8883
[2020-05-23 21:12:13,064] :: INFO :: xmppserver :: Starting XMPP Server at 169.254.133.212:5223
[2020-05-23 21:12:13,065] :: INFO :: hbmqtt.broker :: Listener 'tls1' bind to 169.254.133.212:8883 (max_connections=-1)
[2020-05-23 21:12:13,581] :: INFO :: hbmqtt.broker :: Listener 'tls1': 1 connections acquired
[2020-05-23 21:12:13,582] :: INFO :: hbmqtt.broker :: Connection from 169.254.133.212:55761 on listener 'tls1'
[2020-05-23 21:12:13,588] :: INFO :: mqttserver :: Bumper Authentication Success - Helperbot: helperbot@bumper/helperbot
ZitatSeh ich das richtig, das er einmalig mit
dem Server von Deebot sprechen muss? Also muss ich zwingend einen Account anlegen?
Kann ich Dir leider nicht beantworten. Wir könnten aber versuchen es ohne hinzubekommen. Also per Test Deine Frage beantworten.
Was sagt denn das bumper log ? Die App ? Bot erkannt ?
ZitatOutput Directory: C:\Users\schwatter.ZOTAC-ZBOX\Desktop\bumper\certs
Input SAN List: C:\Users\schwatter.ZOTAC-ZBOX\Desktop\bumper\create_certs\Bumper_SAN.txt
-------- Creating CA Cert --------
2020/05/23 21:12:11 ca.crt created at C:\Users\schwatter.ZOTAC-ZBOX\Desktop\bumper\certs\ca.crt
2020/05/23 21:12:11 ca.key created at C:\Users\schwatter.ZOTAC-ZBOX\Desktop\bumper\certs\ca.key
-------- Creating Server Cert --------
2020/05/23 21:12:11 bumper.crt created at C:\Users\schwatter.ZOTAC-ZBOX\Desktop\bumper\certs\bumper.crt
2020/05/23 21:12:11 bumper.key created at C:\Users\schwatter.ZOTAC-ZBOX\Desktop\bumper\certs\bumper.key
-------- Certificate Creation Complete --------
Certificates created
Die brauchen wir !
(vielleicht etwas mehr anonymiseren ? ???)
Wie sieht sonst so Dein IT-KnowHow aus ? mqtt-server(z.B. fx), wireshark, Fritte, tcpdump, pihole, DNS ....?
Bin mir zum 950 nicht sicher. Wenn ich es richtig in Erinnerung hab funktioniert er teilweise.
Und bitte penibel dokumentieren.(bumper unter windoof find ich interessant)
Grüße Markus
Moin,
was ist nicht anonym genug. Die Pfade? Die Ip?
Erfahrung:
Mqtt nur bis jetzt per Fhem mit Mqtt und Mqtt2. Letzteres nimmt einem ja fast alles ab.
Fritten hab ich ein paar.
Pihole nie gebraucht. Ein paar Pi's habe ich zur Not.
DNS ist klar ;D
Wireshark des öfteren benutzt.
Tcpdump schaut einfach aus. Hatte sonst nur mit dumps von android bluetooth zu tun. Sollte ähnlich sein, in Bezug auf Wireshark.
Mal sehen wie ich weiter komme, habe gerade erst frisch meine Altersresidenz bezogen. Alles durcheinander....
Dachte das fummelt sich schnell nebenbei mit dem Deebot, dem is aber nicht so :D Deshalb durfte der Sauger doch schon ins Wlan...
Zitatwas ist nicht anonym genug. Die Pfade? Die Ip?
Alles OK. Ich bin mit meinen Daten sehr empfindlich. War daher nur als Tipp gedacht.
ZitatPihole nie gebraucht. Ein paar Pi's habe ich zur Not.
Ist nicht schlecht als einfache Spionageabwehr. ;) Und wir müssen dem 950 ja das nach-Hause-telefonieren abgewöhnen: Umleitung der Domains auf bumper bzw. FHEM
ZitatDachte das fummelt sich schnell nebenbei mit dem Deebot, dem is aber nicht so
Leider richtig.
Ja, tcpdump ist einfach. Aber da Du bumper auf Windoof hast, vermutlich genau wie eine Fritte nicht notwendig.
Wo hast Du FHEM laufen ?
Edit: Nur mqtt(lauschen) in FHEM ist relativ einfach. Ich denke aber nur mit bumper(wg. SSL).
Ab und zu spiele ich mit der linux-sub in windows ;D
Fhem läuft auf einem Raspi. Werde es mit Bumper
wohl da nochmal probieren. Ganz geheuer war es
mir nicht. Hatte den DNS auf den Rechner mit w10 und
Bumper gesetzt, kam nichts an... Meine Netzwerk
Infrastruktur steht nur halb, alles noch sehr wild.
Hab schon 2 Tage an Bumper herumgespielt....Irgendwas passt immer nicht. Windows10 lief erst. Kein Kontakt möglich.
Raspi3 auf dem auch Pihole läuft. Fehlermeldung
[2020-05-26 20:33:02,935] :: WARNING :: hbmqtt.client :: Connection failed: ConnectException(ConnectionRefusedError(111, "Connect call failed ('192.168.178.80', 8883)"))
Pizero kackt schon ab mit Fehlermeldungen beim erstellen von virtualenv... Jetzt wieder Windows10 getestet und er meckert plötzlich, das aiohttp nich da is...
Alles probiert um aio wieder zu flicken. Ist da, aber import klappt nich. Rufe ich die python-konsole auf wird es mit "import aiohttp" geladen ::)
Pihole und die DNS-Umleitung war in 5min erledigt. Brauch mal ein paar Tage Abstand :D Bumper is ne "Bitc*"
;D ;D ;D Nicht bumper, python.
Zitatdas aiohttp nich da is...
Kommt mir bekannt vor. Ich glaube das Problem war, dass ich erst mit einem normalen user installiert hatte. Mit sudo ging es dann. (glaub ich :-\)
Gestern Abend habe ich etwas weiter probiert. Mein "aiohttp"-Problem konnte ich lösen.
Geholfen hat mir das Commit von hier
https://github.com/bmartin5692/bumper/commit/d28eac632ec33b8092a32d344e18ee76ea239dcd
- pipenv --python 3.7
- pipenv install --dev
Danach startet Bumper wieder normal auf dem Pi und erstellt Zertifikate. Nun hänge ich bei ConnectionRefusedError.
Einmal Start mit der IP auf dem Bumper läuft.
sudo pipenv run python -m bumper --listen 192.168.178.42 --announce 192.168.178.42
sudo pipenv run python -m bumper --listen 192.168.178.42 --announce 192.168.178.42
[2020-06-04 18:59:31,143] :: INFO :: bumper :: Starting Bumper
[2020-06-04 18:59:31,308] :: INFO :: mqttserver :: Starting MQTT Server at 192.168.178.42:8883
[2020-06-04 18:59:31,326] :: INFO :: xmppserver :: Starting XMPP Server at 192.168.178.42:5223
[2020-06-04 18:59:31,329] :: WARNING :: hbmqtt.client :: MQTT connection failed: ConnectionRefusedError(111, "Connect call failed('192.168.178.42', 8883)")
[2020-06-04 18:59:31,330] :: WARNING :: hbmqtt.client :: Connection failed: ConnectException(ConnectionRefusedError(111,"Connect call failed ('192.168.178.42', 8883)"))
[2020-06-04 18:59:31,332] :: INFO :: hbmqtt.broker :: Listener 'tls1' bind to 192.168.178.42:8883 (max_connections=-1)
[2020-06-04 18:59:32,395] :: INFO :: hbmqtt.broker :: Listener 'tls1': 1 connections acquired
[2020-06-04 18:59:32,396] :: INFO :: hbmqtt.broker :: Connection from 192.168.178.42:51588 on listener 'tls1'
[2020-06-04 18:59:32,405] :: INFO :: mqttserver :: Bumper Authentication Success - Helperbot: helperbot@bumper/helperbot
Und einmal wie im Tut beschrieben.
pipenv run python -m bumper
pipenv run python -m bumper
[2020-06-04 19:17:12,860] :: INFO :: bumper :: Starting Bumper
[2020-06-04 19:17:13,051] :: INFO :: mqttserver :: Starting MQTT Server at 127.0.1.1:8883
[2020-06-04 19:17:13,068] :: INFO :: xmppserver :: Starting XMPP Server at 127.0.1.1:5223
[2020-06-04 19:17:13,070] :: WARNING :: hbmqtt.client :: MQTT connection failed: ConnectionRefusedError(111, "Connect call failed ('127.0.1.1', 8883)")
[2020-06-04 19:17:13,071] :: WARNING :: hbmqtt.client :: Connection failed: ConnectException(ConnectionRefusedError(111, "Connect call failed ('127.0.1.1', 8883)"))
[2020-06-04 19:17:13,073] :: INFO :: hbmqtt.broker :: Listener 'tls1' bind to 127.0.1.1:8883 (max_connections=-1)
[2020-06-04 19:17:14,139] :: INFO :: hbmqtt.broker :: Listener 'tls1': 1 connections acquired
[2020-06-04 19:17:14,140] :: INFO :: hbmqtt.broker :: Connection from 127.0.0.1:58402 on listener 'tls1'
[2020-06-04 19:17:14,149] :: INFO :: mqttserver :: Bumper Authentication Success - Helperbot: helperbot@bumper/helperbot
Auf einem 2ten Pi mit Pihole habe ich die 02-custom.conf je nach IP angepasst.
nano /etc/dnsmasq.d/02-custom.conf
#address=/ecouser.net/127.0.1.1
#address=/ecovacs.com/127.0.1.1
#address=/ecovacs.net/127.0.1.1
address=/ecouser.net/192.168.178.42
address=/ecovacs.com/192.168.178.42
address=/ecovacs.net/192.168.178.42
Danach immer
sudo service pihole-FTL reload
Jetzt ist die Frage, Zertifikaterror oder was anderes...?
Pihole läuft auf 192.168.178.80
Domains von einem Windowsrechner anpingen klappt aber auch nicht.
C:\WINDOWS\system32>ping ecovacs.com
Ping-Anforderung konnte Host "ecovacs.com" nicht finden. Überprüfen Sie den Namen, und versuchen Sie es erneut.
C:\WINDOWS\system32>ping ecouser.net
Ping-Anforderung konnte Host "ecouser.net" nicht finden. Überprüfen Sie den Namen, und versuchen Sie es erneut.
C:\WINDOWS\system32>ping ecovacs.net
Ping-Anforderung konnte Host "ecovacs.net" nicht finden. Überprüfen Sie den Namen, und versuchen Sie es erneut.
C:\WINDOWS\system32>ping 192.168.178.80
Ping wird ausgeführt für 192.168.178.80 mit 32 Bytes Daten:
Antwort von 192.168.178.80: Bytes=32 Zeit=1ms TTL=64
Antwort von 192.168.178.80: Bytes=32 Zeit=2ms TTL=64
Antwort von 192.168.178.80: Bytes=32 Zeit=2ms TTL=64
Antwort von 192.168.178.80: Bytes=32 Zeit=17ms TTL=64
Ping-Statistik für 192.168.178.80:
Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
(0% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 1ms, Maximum = 17ms, Mittelwert = 5ms
C:\WINDOWS\system32>
edit:
Ich denke aber Pihole ist soweit I.O., da die EcovacsApp keine Verbindung mangelnder Zertifikate herstellen kann?
Nur zum Verständnis. Brauche ich die App damit es funktioniert? Also Zertifikate installieren und ab geht es
oder ist Bumper erstmal stand-alone und nur wenn ich will muss ich die Zertifikate aufs Handy kopieren um
die App nutzen zu können? Wenn ich das Tut lese, würde ich sagen, stand-alone.
ZitatJetzt ist die Frage, Zertifikaterror oder was anderes...?
den ping interessieren Zertifikate nicht. Muss an was anderem liegen.
Ich hätte drauf getippt, dass Du den rpi noch nicht als DNS im Netzerk aktiviert hast(bei ner Fritte hab ich den pi-hole unter Heimnetz als lokalen DNS-Server eingetragen), aber dann dürften die umgeleiteten Domains ja nicht blockiert werden. :-\
Im pi-hole(admin-console) müsstest Du ja sehen, dass die Domains vom Win-Rechner angefragt wurden
ZitatBrauche ich die App damit es funktioniert?
Nein brauchst Du nicht. Aber angemeldet hast Du den Bot schon bei Ecovacs, oder ?(Kann sein, dass man auch das nicht braucht)
Ja, die App ist eingerichtet mit dem Bot und Ecovacs.
Kleiner Erfolg...Auf dem Raspi gibt es Probleme mit den Abhängigkeiten. Ich hab mal bei MQTT geschaut.
pi@raspberrypi:~/bumper-master $ sudo apt-get install python3-hbmqtt
Reading package lists... Done
Building dependency tree
Reading state information... Done
python3-hbmqtt is already the newest version (0.9.2-2).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Also wieder ab zu Windows10-LinuxSub
pip install hbmqtt <--dort wird die Version 0.9.5 installiert.
pipenv --python 3.8
pipenv install --dev
Danach ist dort auch wieder aiohttp-error weg und bumper startet endlich mal.
C:\Users\schwatter.ZOTAC-ZBOX\Desktop\bumper-master\bumper>pipenv run python -m bumper --listen 192.168.178.40 --announce 192.168.178.40
[2020-06-04 22:53:41,652] :: INFO :: bumper :: Starting Bumper
[2020-06-04 22:53:41,699] :: INFO :: mqttserver :: Starting MQTT Server at 192.168.178.40:8883
[2020-06-04 22:53:41,715] :: INFO :: xmppserver :: Starting XMPP Server at 192.168.178.40:5223
[2020-06-04 22:53:41,715] :: INFO :: hbmqtt.broker :: Listener 'tls1' bind to 192.168.178.40:8883 (max_connections=-1)
[2020-06-04 22:53:42,231] :: INFO :: hbmqtt.broker :: Listener 'tls1': 1 connections acquired
[2020-06-04 22:53:42,231] :: INFO :: hbmqtt.broker :: Connection from 192.168.178.40:53511 on listener 'tls1'
[2020-06-04 22:53:42,247] :: INFO :: mqttserver :: Bumper Authentication Success - Helperbot: helperbot@bumper/helperbot
Endlich ist auch mal das Webinterface erreichbar unter http://192.168.178.40:8007/ :)
Bot ist noch nicht connected, also weiter gehts....
Der Rest muss ein DNS Problem sein...
- Meine Fritzbox hat die IP vom PiholeServer. 192.168.178.80. Sie Bild unten.
- Mein WindowsPC hat die IP 192.168.178.40.
- Auf dem PiholeServer habe ich 02-custom.conf editiert
address=/ecouser.net/192.168.178.40
address=/ecovacs.com/192.168.178.40
address=/ecovacs.net/192.168.178.40
- danach sudo service pihole-FTL reload
ping vom FhemServer als unbeteiligter 4 im Bund klappt nicht :o
root@raspi4fhem:~# ping ecouser.net
ping: ecouser.net: No address associated with hostname
root@raspi4fhem:~# ping ecovacs.com
ping: ecovacs.com: No address associated with hostname
root@raspi4fhem:~# ping ecovacs.net
ping: ecovacs.net: No address associated with hostname
root@raspi4fhem:~#
Ich denke immer noch, dass es am pi-hole liegt. Was kommt denn dort so alles an ? Wie sind die settings ?(ich hab die fritte z.B. unter "Use conditional forwarding" eingetragen). Den "DNS Resolver" in pi-hole(admin-Weboberfläche: Tools) restartet ?
Den google(8.8.8.8) würd ich mal aus der Fritte rausnehmen und diese rebooten.
So es läuft alles :)
Hab das tut hier angewendet.
https://heikorichter.name/post/129/fritzbox-mit-pi-hole-und-dns-over-htttps/
root@raspi4fhem:~# ping ecouser.net
PING ecouser.net (192.168.178.40) 56(84) bytes of data.
64 bytes from ZOTAC-ZBOX.lan (192.168.178.40): icmp_seq=1 ttl=128 time=1.47 ms
64 bytes from ZOTAC-ZBOX.lan (192.168.178.40): icmp_seq=2 ttl=128 time=2.39 ms
64 bytes from ZOTAC-ZBOX.lan (192.168.178.40): icmp_seq=3 ttl=128 time=1.45 ms
^C
--- ecouser.net ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 5ms
rtt min/avg/max/mdev = 1.448/1.767/2.389/0.440 ms
root@raspi4fhem:~# ping ecovacs.net
PING ecovacs.net (192.168.178.40) 56(84) bytes of data.
64 bytes from ZOTAC-ZBOX.lan (192.168.178.40): icmp_seq=1 ttl=128 time=1.26 ms
64 bytes from ZOTAC-ZBOX.lan (192.168.178.40): icmp_seq=2 ttl=128 time=1.51 ms
64 bytes from ZOTAC-ZBOX.lan (192.168.178.40): icmp_seq=3 ttl=128 time=2.10 ms
^C
--- ecovacs.net ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 5ms
rtt min/avg/max/mdev = 1.263/1.624/2.102/0.352 ms
root@raspi4fhem:~# ping ecovacs.com
PING ecovacs.com (192.168.178.40) 56(84) bytes of data.
64 bytes from ZOTAC-ZBOX.lan (192.168.178.40): icmp_seq=1 ttl=128 time=5.87 ms
64 bytes from ZOTAC-ZBOX.lan (192.168.178.40): icmp_seq=2 ttl=128 time=1.45 ms
64 bytes from ZOTAC-ZBOX.lan (192.168.178.40): icmp_seq=3 ttl=128 time=1.59 ms
^C
--- ecovacs.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 5ms
rtt min/avg/max/mdev = 1.450/2.969/5.866/2.049 ms
root@raspi4fhem:~#
Ich hab versucht Post #17 umzusetzen.
2 Fragen
- Ich habe Probleme bei MQTT2_CLIENT mit mqttSubscribe. Wie setze ich das richtig?
attr myEcovacsClient mqttSubscribe iot/p2p/# iot/atr/# \$SYS
- Welches ist die serialId-des-Deebot? Leider geben die Logs noch nichts her. Oder Debug benutzen?
Ich finde nur folgende Infos
->clientid
->SN
->Class
Connected per MQTT2_CLIENT bin ich aber schon.
edit:
Ok,ok. Den Bot mal manuell starten und zack trudeln topics ein.....
z.B
'topic': 'iot/atr/onMapTrace/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j'
edit2:
per autocreate in fhem
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:\x5c\x24SYS/broker/version:.* version
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onPos/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onMapTrace/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onMajorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onMinorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onStats/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onBattery/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onCachedMapInfo/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onSched/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onMapState/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportStats/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportPos/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportMajorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportMinorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/reportMapTrace/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onSpeed/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) }
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/onRelocationState/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onEvt/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
Na prima, das erste Erfolgserlebnis. Du hast ja einen 950er, richtig ? Sieht ja im Detail doch ganz anders aus als bei mir. Immer JSON, keine lfd id....
Du hast ihn noch nicht rennen lassen, oder ? Würd ich mal machen. Und anstatt der { json2nameValue($EVENT) } mal einfach jeweils einen Reading-Namen vergeben. Dann müsste das reading mit dem gesamten Inhalt angelegt werden, so dass man die Daten strukturierter und vollständig sieht.
Dann würd ich das mal beobachten, ob es "Redundanzen" gibt. Die müssten dann wie bei mir mit [^/]+ .* eingedämmt werden.
Und dann müssen wir mal überlegen, wie wir an die Befehle kommen. Meine Set-/GetList wird ja nicht funktionieren. :'(
Ja genau, ein 950. Doch rennen lassen habe ich ihn. Wenn ich nichts mache kommt auch nichts. Da die App nicht geht,
nutze ich immer den Start/Stop-Knopf kurz und er startet. Dann lasse ich einen paar Minuten laufen, dann Start/Stop-Knopf lange
und er fährt wieder zur Ladestation.
In etwa so
setstate Ozmo950 2020-06-05 20:32:39 onBattery {"header":{"pri":1,"tzm":480,"ts":"1591381958024","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"value":98,"isLow":0}}}
setstate Ozmo950 2020-06-05 20:33:27 onCachedMapInfo {"header":{"pri":1,"tzm":480,"ts":"1591382007241","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"enable":0,"info":[{"mid":"1180777719","status":0,"index":2,"using":0,"built":1,"name":""},{"mid":"409307405","status":0,"index":3,"using":1,"built":0,"name":""}]}}}
setstate Ozmo950 2020-06-05 20:33:08 onChargeState {"header":{"pri":1,"tzm":480,"ts":"1591381987508","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"isCharging":1,"mode":"slot"}}}
setstate Ozmo950 2020-06-05 20:33:28 onCleanInfo {"header":{"pri":1,"tzm":480,"ts":"1591382007243","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"trigger":"button","state":"idle"}}}
setstate Ozmo950 2020-06-05 20:33:27 onEvt {"header":{"pri":1,"tzm":480,"ts":"1591382005936","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"code":1065}}}
setstate Ozmo950 2020-06-05 20:33:28 onMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591382007269","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,1295764014,2218844699,4068694584,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,2073600484,760289236,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1136934853,1295764014,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-05 20:33:27 onMapState {"header":{"pri":1,"tzm":480,"ts":"1591382006760","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"state":"building"}}}
setstate Ozmo950 2020-06-05 20:33:28 onMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591382007245","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"tid":"625708","totalCount":0,"traceStart":0,"pointCount":0,"traceValue":""}}}
setstate Ozmo950 2020-06-05 20:33:28 onMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591382007280","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceIndex":43,"pieceValue":"XQAABAAQJwAAAABt/knVyiqghH9PV8y0q9BjgodG9ShOT3INliSg6ZZGZqiJohWYSdd5SArdR7Al32OA6AUKEdO0b1R+Ym778kW7Y6QRQATys5akWXkbF13Wpbb6yWgLU8XFy6Txp93T0U5vDFJ3sZy80577odv0+8MaGXdxBF1pws78A3B4XKSru7p2LtsufI1YpXttWJREs9zBVyEW/Ng9p4w02YHUYmLh3mqkHh5lRQ0IRE/LoscoNgBCQd4Q1HP0h06zrirs2g1oiT1FadlGejaR70CyImhTJndq20rIeRI="}}}
setstate Ozmo950 2020-06-05 20:33:28 onPos {"header":{"pri":1,"tzm":480,"ts":"1591382007245","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"chargePos":[{"x":102,"y":261,"a":-87}],"deebotPos":{"x":28,"y":-139,"a":-114,"invalid":1},"mid":"409307405"}}}
setstate Ozmo950 2020-06-05 20:33:27 onRelocationState {"header":{"pri":1,"tzm":480,"ts":"1591382005935","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mode":"recover","state":"fail","isHasMap":1}}}
setstate Ozmo950 2020-06-05 20:33:28 onSched {"header":{"pri":1,"tzm":480,"ts":"1591382007242","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":[]}}
setstate Ozmo950 2020-06-05 20:33:09 onSpeed {"header":{"pri":1,"tzm":480,"ts":"1591381988868","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"speed":0}}}
setstate Ozmo950 2020-06-05 20:32:29 onStats {"header":{"pri":1,"tzm":480,"ts":"1591381948067","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"area":3,"time":238,"cid":"111","start":"1591381716","type":"auto"}}}
setstate Ozmo950 2020-06-05 20:32:49 reportMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591381967888","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"1405437905","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,1295764014,3228886661,3160956080,1295764014,1295764014,1295764014,1295764014,1295764014,3032557359,3844847604,3903064409,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1605340464,1295764014,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-05 20:32:49 reportMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591381967933","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1405437905","tid":"992468","totalCount":304,"traceStart":0,"pointCount":304,"traceValue":"XQAABADwBQAAAAeAHnriTPgcaxCCS933yeOfVdBmugbhmtZDCofiKRnJBdXGBMmcVQN4iWohadXbgrkGGC8bnPYTZaijWUbeDIXSz/AyUw85/mSbsyfUIqMLAHs8B8/8yZJnzEH4+WlOrYRXp4lp9wvHuonaEVhjC1/9Fi62Uancrp4NAv2TnwnttHpvThXoImUS0aFyNicafZJD3ipvFJbU+/ZIuaLmgXOuf5vqii9LGgESQeaTWmOn2QWIHFZyDLhLwlOnP0MdLncSIkd0HE+/uAgGpGv6GK12Lu+lUH7aLkK7rKbB2ARzJlvxyNgG4NHbr2e3xBXIBDf0Q7Qx7arRqQ95WvyNKVvTnA5aAsG3+1iupaleZNfsDx2crd1JarmkQiXBZGcMn07eoP9w9owuCdSj5sUqVzvZQIHoTL9ez9v/VuxQzdUlMxWj0yF5yo+qWBlDFq1q/OmlAR0A8R7q70X4Xjv5It4HOWSD9VMGPW6A+Scd25xV28JzMJqvv3Qz2WMRWgJ+aR455sgzmP/jc+BPTygt0uE8RyY5uAKxAQHYMyekucfn75+JbYKSAVecIh6ThoZCfgTUswhG6WAO3ejxfcdAMjbtC05xh8q1/kic2gzC2soJa2kdtNA9MXcz2UKXB63qRMMeGzgNeahOWVcI26MBbWfjAx6P3R33nYQQIYy3ayoi2Xk2weZmeL8JxZmTGxlu1R+9DXSRHNibiaXGJnzg2BTL7Y9I7pRypX+InrwboCtKWFXErsHZo3qBLPVJMd8cuOokxLP8ZVUIYksLJfgHE2ckPnLFjpMV5lxtZ7H+0SDG4WUrnic9ccBAXFf5GIlyBWu3lrcuUglle8e+lgjL+wSrFdROkCsvXEqJf6dfrI1T+KMphnX27ANnjWvix9XrCFL5+LCqVfeJYsCrZCjANH6iBIYhp9BZ+vJErWSEVd02hBSwrJ5M4xfJwTDuK0zddfU9UCz4sC+aMdi+UfoQU4LtTkZ2VrkJZGFxA7qQ/BY6v4NVsY/EG4hKO0v6Sv/JPUG31dDpXUoUd1PkL5jjBO5TDaHOgbPpy2QBF6FUydaosExL4d4TMghOPcUCfevBpAvgjstG7tg1qPTEqdxwMVICAhhYYVRo"}}}
setstate Ozmo950 2020-06-05 20:32:49 reportMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591381967896","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"1405437905","pieceIndex":43,"pieceValue":"XQAABAAQJwAAAABs/nyFC3vYRwMJIs3OAmyILIiE8UY2M6Cll8ITE1BDMfnp5lfGYas9vnZjahVwUUB+fi0/7wItTIQEtnEfFd0WXtxkWOAgPqBGcYkfVTkEtBFlDbm0hxxBbaXRg/enZh2DDeEae1mQOgs7HtZRr017QY9bpHFPjIwySSOTgGscXA+xPkqALPh3nbji/YnXWzCJFtNA1CX7YmdUXN8rhVIShzDC8o4ZNQUNwGhhpU662PW0BhmAL7oxuIA0fCor+VqFSMRF/SZ590vqfZBOiAA="}}}
setstate Ozmo950 2020-06-05 20:32:49 reportPos {"header":{"pri":1,"tzm":480,"ts":"1591381967884","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1405437905","chargePos":[{"x":120,"y":267,"a":-85}],"deebotPos":{"x":546,"y":-745,"a":119}}}}
setstate Ozmo950 2020-06-05 20:32:49 reportStats {"header":{"pri":1,"tzm":480,"ts":"1591381967884","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1405437905","type":"auto","stop":1,"mapCount":6,"area":3,"time":257,"start":"1591381716","content":"","stopReason":2}}}
edit:
Readings ergänzt.
Wie hast du deine set-Befehle rausbekommen? Plain in bumper oder sniffing vom Handytraffic?
Ja, so meinte ich das. Ist ja ganz schön viel u. durch die mapping-funktion(hat meiner nicht) äußerst unübersichtlich
ZitatWenn ich nichts mache kommt auch nichts.
Ich denke schon. Achte mal auf das onBattery. Womit es Zeit ist die Frage zu stellen. Was ist wirklich interessant zu sehen bzw. was will man überhaupt mit FHEM erreichen(außer Spaß haben).
- mein oberstes Ziel war vom ecovacs-server wegzukommen(stellen wir für Dich mal hinten an)
- den Bot per FHEM zu steuern(so weit sind wir f. den 950 auch noch nicht)
- SINNVOLLE Informationen in FHEM zu haben. Also das, was man sich nach Beendigung des Spieltriebs noch anguckt oder ggfs. auch logged)
Was ich da aus meiner Erfahrung u. bei den gegebenen Infos sagen kann:
Ladestand, lädt ja/nein, saugt ja/nein (mit Dauer), Geschwindigkeit(Saugstärke),error(code)
was ich nicht habe, aber durchaus interessant: trigger
ich hab dann noch, wo ich bei Dir nichts zu sehe: Lebensdauer Verbrauchsmaterial(Bürsten,Filter), Wassertank ja/nein, Wassermenge
Das wars dann aber eigentlich schon. Vielleicht noch was an Statistik zur Laufzeit....
Zu den Maps kann ich nicht viel sagen. Bestimmt interessant, welche Map/Raum wann befahren wurde
Siehst Du anderen Bedarf ?
ZitatDa die App nicht geht
Weil noch nicht probiert oder will nicht ?
Da es scheinbar bei Dir nicht die Redundanzen gibt, könntest Du die App nun probieren. Du musst ja nur das Zertifikat(wie auf GitHub beschrieben) ins Handy packen. Ich verspreche mir davon weitere readings(bzw. readingslist immer im Auge behalten)/-Inhalte. Insbesondere auch einen Ansatz für die Befehle.(neben /iot/attr/.... werden /iot/p2p/.... topics kommen). Für die Befehle kannst Du aber auch mal in die issues bei GitHub u. git gucken. Da gab es Logs, Diskussionen zum 950.
Ich bitte Beta mal um einen Vorschlag für einen Datenextrakt. Der schüttelt das mit links aus dem Ärmel.
Mein oberstes Ziel war,
- Cloudfree, vom ersten Tag (nunja, hat nicht ganz geklappt ;D )
- Einbindung in Fhem
- Taster zum starten (ok, man könnte sich auch bücken)
- Bisschen automatisieren
- Ein paar Statusinfos sind immer gut
Wegen der App, weil noch nicht probiert. Ich wollte erst wissen, wie es bei anderen ist und wie gesprächig der Bot ist.
Ok, dann gehts nun weiter mit der App :)
Mir scheint, wir ticken sehr ähnlich. 8)
ZitatCloudfree
ist jetzt ja schon erreicht. Die Verbindung ist tot(lokal umgeleitet).
ZitatOk, dann gehts nun weiter mit der App
Die funktioniert nun natürlich nur noch im (W)LAN.
ZitatIch wollte erst wissen, wie es bei anderen ist und wie gesprächig der Bot ist.
Du kannst ja auch erst weiter recherchieren. Wg. 950 kannst Du halt mit meinen Ergebnissen wenig anfangen. :'( Außer mal vergleichend gucken.
Ich hab mich mal weitergebildet u. Dir ein "Template" gebastelt. Einfach beim +Zeichen in der FHEM-Oberfläche ins Fenster kopieren u. execute klicken.
attr OZMO950 devicetopic bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
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
attr OZMO950 getList BatteryInfo:noArg GetBatteryInfo iot/p2p/GetBatteryInfo/helperbot/bumper/helperbot/$DEVICETOPIC/j
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) }
Ich hoffe das klappt. Kanns ja nicht testen.
Nabend, danke für die Arbeit, gerade getestet. Hab nur "OZMO950" zu "Ozmo950" geändert.
setstate Ozmo950 2020-06-06 22:02:53 BatteryState 98
setstate Ozmo950 2020-06-06 22:00:06 Charging 0
setstate Ozmo950 2020-06-06 22:03:48 CleaningArea 3
setstate Ozmo950 2020-06-06 22:03:48 CleaningMode auto
setstate Ozmo950 2020-06-06 22:04:54 Firmware 1.7.9
setstate Ozmo950 2020-06-06 22:04:54 Hardware 0.1.1
setstate Ozmo950 2020-06-06 22:03:48 LastStart 1591473610
setstate Ozmo950 2020-06-06 22:04:54 Speed 0
setstate Ozmo950 2020-06-06 21:56:03 Systemcode 1064
setstate Ozmo950 2020-06-06 22:04:54 Trigger button
setstate Ozmo950 2020-06-06 22:04:54 Version 0.0.1
setstate Ozmo950 2020-06-06 22:03:54 body_data_cleanState_id 122
setstate Ozmo950 2020-06-06 22:03:54 body_data_cleanState_motionState pause
setstate Ozmo950 2020-06-06 22:03:54 body_data_cleanState_router plan
setstate Ozmo950 2020-06-06 22:03:54 body_data_cleanState_type auto
setstate Ozmo950 2020-06-06 21:57:12 j
setstate Ozmo950 2020-06-06 21:56:02 onCachedMapInfo {"header":{"pri":1,"tzm":480,"ts":"1591473360971","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"enable":0,"info":[{"mid":"1180777719","status":0,"index":2,"using":0,"built":1,"name":""},{"mid":"409307405","status":0,"index":3,"using":1,"built":0,"name":""}]}}}
setstate Ozmo950 2020-06-06 22:05:46 onMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591473945100","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,1295764014,2499877879,4204053046,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,707705472,2686758486,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,2516952962,1295764014,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-06 21:56:02 onMapState {"header":{"pri":1,"tzm":480,"ts":"1591473360469","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"state":"building"}}}
setstate Ozmo950 2020-06-06 22:03:54 onMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591473833105","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"tid":"33197","totalCount":246,"traceStart":244,"pointCount":2,"traceValue":"XQAABAAKAAAAADAAFvlwgW5NlAbnZoAAAA=="}}}
setstate Ozmo950 2020-06-06 22:05:46 onMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591473945106","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceIndex":35,"pieceValue":"XQAABAAQJwAAAABuPkkBHIO7VspPkgKPRcFvrwk7ICUuoWF+2KmEh4f/HiNfDwRfzkaZAOUqbHM2SzsCys1Y+LtsDbN36MVd5HcR5dwpXTpZF2A5I3K7v5UuEDnsOWQGE8AgR3NN+zvUtn93apk++OAVq81B53mOdb/g71pQeQJcDQiz6shqccC9qIJem5vvibElpTNFsT7wXFSNtO3WSVuZATFw/xCVPZK3sahHorIGizL7sBKNyd6C3wvVvuTKYu8n+OibV2VHFQdVsAssHs8WpKQpHq5udxYbUMKFh0bJ9wVt5HeoUn+8kkSQiiTDkm4k5ojNHZm22V5RUot+m+2y7vWfqgPaIdd0cYyjB5YzoqgLgLvtYidCUS3bpCloZvX1oqetHgL/cuwkNeJgJvmwSuLu4WR/MX7vopzbLBMPKfemxJSdOd2faIw25fC64YiH7j2UviuZ3CO/Niraay3qjQXv+qSSRTw0SxFZ2L03mg1jdfmRrjZ4Hdw/6gvOMVdYIYAYYTPj3FutW/a3tk8RDlpfZyFZkp8lS5lD8jpbGpeOB9IcZiBbbYRFq+lGpr4aJeICx6MyrP1YdS3cwWa6NF4UYARtMGsXwRuP59pJwSe2DqhA9OjGvhYO2o54aSDJzX0Nyhzt71tMSZpZMOzTO2XLs5VPBlntLU/vERumFiVrvAQrnVCHKERsYFLxluoigkaVfNn9whFvhTho3xhFAxlarpJ8MESiUtyGgZCzNkz/cu1r/PVlsTUpJhIeDFTujUvXOn0istrPcWVndR6wnwz2FDPafOptNc4RcVQUHowGEwteNhFMzgkj4RcsiO5qwsqRsQA="}}}
setstate Ozmo950 2020-06-06 22:05:47 onPos {"header":{"pri":1,"tzm":480,"ts":"1591473946094","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"deebotPos":{"x":-2900,"y":-1046,"a":84,"invalid":0}}}}
setstate Ozmo950 2020-06-06 21:56:02 onRelocationState {"header":{"pri":1,"tzm":480,"ts":"1591473359867","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mode":"recover","state":"ok","isHasMap":1}}}
setstate Ozmo950 2020-06-06 21:56:02 onSched {"header":{"pri":1,"tzm":480,"ts":"1591473360973","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":[]}}
setstate Ozmo950 2020-06-06 22:04:54 reportMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591473892962","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"867933730","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,1295764014,4084319698,1483512012,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1191934485,3377126947,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1010895077,1295764014,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-06 22:04:54 reportMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591473892998","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"867933730","tid":"33197","totalCount":246,"traceStart":0,"pointCount":246,"traceValue":"XQAABADOBAAAAAIAH2xVanXpwEMp8ZsEnHPoy8EYPKJyQx8kKNcZGwA0IIxz8Nbn+ZisVFsjIVwSZh6hsWJFbx/V0k2YcxXDm9L8euw8mfY86aJ2UQ9DWMj3757MzWx/t7debXrw6wdxXK9F4nfVYRZw+vjV11lr+sxrdqMmmsgNMqrWjT18P2P4Pyt2qIXuqJTrRIGQOum0E07qYI4aNtvxbqCSimPkgtW8LaMX1uah4820VQtR2Hx20VSRggC9q0ftL5mPM4FjUYCPucAbMoUx4SyxCNTLa9Rh2X+kRBgZpruX5A1cAEFqWuM7mcHE47TnZnnTnvZszqQ39co2Osk50lWcq4aX4wTeygG5FLeWKJQtsEMe3aGyKdqpBCvvOru4Un5yEgjC69H9hUFxlQU+Oj9ywxMrU0RlrJyxYxbMd5E3GlDugue+bmt26xLkBiGjS6DoFE+33xXL/8goOaX2dNkNKkqmKFghCxsUDJu+Bwhx5uJU2CcgCPxmuQxzJ5INrjDC+E4n4sE0DYoUij7ORO0xDspSk4Hq8AFsGW6Fizri+HEgXr2/Kmn2u8qp69HnV6uhFcnH41itPViYlfcrIrpKxoIqPAW3osY8DgGBIijBr6NGWZKkJweluZ6b25sW0Y7d3cLP/ouslU9Yu9lS0Lr8dLVt3UeXRDtSAT2mx8EzlJ0mBduEV7YvB2zwLD9MFLh7lnAOoUtkM3Jwr6DIaJTs1FzdJSzd3FSPRsCEKYupioqp/Gl8ZOK2GbVEeBIE3UKNZLquiwagAzwGroUftIL8twoY/ofyw3F3vCHyhesicvX85zLZ0cvJe3xDfLpOYT6WcLMo8WnUhuE5EYMm5ri27CgPdT9iFayNLA=="}}}
setstate Ozmo950 2020-06-06 22:04:54 reportMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591473892971","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"867933730","pieceIndex":43,"pieceValue":"XQAABAAQJwAAAABtfoUiLVymd7uXuVRGCsmIFyrd8IvMEzXrGy+mWJN91qMyDpDoSaayR1ewTGG7BLvwsiJ+iKxLMsgpsrNN/pdp1Wm9McG2D+KWyXJNVJP8d58pPq1xWscIgO2LNRcGYz6DWXkr5tsEh6vTCYjR6zYXWY+cNiTrI6/cbaOU+MgcCDpuw2wiPuKYhTYpfEL1KHoanoKbyC8t1fc+qA0/XV5fJ/IzrFF3GHbX7WLLDHK4uRekXrjTcAWASQ7qAknrTN8dM3ZQIqLynWuISphOqb+VBDhnD517GhpTPs/ealQRvA8sra3AR6JbhPo2cwkxT86I8mO2J20UBlWeAA=="}}}
setstate Ozmo950 2020-06-06 22:04:54 reportPos {"header":{"pri":1,"tzm":480,"ts":"1591473892959","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"867933730","chargePos":[{"x":100,"y":250,"a":-97}],"deebotPos":{"x":873,"y":-497,"a":-152}}}}
setstate Ozmo950 2020-06-06 22:04:54 reportStats {"header":{"pri":1,"tzm":480,"ts":"1591473892957","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"867933730","type":"auto","stop":1,"mapCount":5,"area":3,"time":172,"start":"1591473610","content":"","stopReason":2}}}
Internals:
CID bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth
DEF bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth
DEVICETOPIC bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
FUUID 5eda5bf2-f33f-86cf-60c0-29e319834f250515
IODev myEcovacsClient
LASTInputDev myEcovacsClient
MSGCNT 5169
NAME Ozmo950
NR 314
STATE clean
TYPE MQTT2_DEVICE
myEcovacsClient_MSGCNT 5169
myEcovacsClient_TIME 2020-06-06 22:06:39
JSONMAP:
body_data_area CleaningArea
body_data_cid 0
body_data_code Systemcode
body_data_isCharging Charging
body_data_isLow 0
body_data_mode 0
body_data_speed Speed
body_data_start LastStart
body_data_state 0
body_data_time 0
body_data_trigger Trigger
body_data_type CleaningMode
body_data_value BatteryState
header_fwVer Firmware
header_hwVer Hardware
header_pri 0
header_ts 0
header_tzm 0
header_ver Version
OLDREADINGS:
READINGS:
2020-06-06 22:02:53 BatteryState 98
2020-06-06 22:06:19 Charging 1
2020-06-06 22:03:48 CleaningArea 3
2020-06-06 22:03:48 CleaningMode auto
2020-06-06 22:06:39 Firmware 1.7.9
2020-06-06 22:06:39 Hardware 0.1.1
2020-06-06 22:03:48 LastStart 1591473610
2020-06-06 22:06:21 Speed 0
2020-06-06 22:06:39 Systemcode 1064
2020-06-06 22:06:39 Trigger button
2020-06-06 22:06:39 Version 0.0.1
2020-06-06 22:03:54 body_data_cleanState_id 122
2020-06-06 22:03:54 body_data_cleanState_motionState pause
2020-06-06 22:03:54 body_data_cleanState_router plan
2020-06-06 22:03:54 body_data_cleanState_type auto
2020-06-06 21:57:12 j
2020-06-06 22:06:39 onCachedMapInfo {"header":{"pri":1,"tzm":480,"ts":"1591473997672","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"enable":0,"info":[{"mid":"1180777719","status":0,"index":2,"using":0,"built":1,"name":""},{"mid":"409307405","status":0,"index":3,"using":1,"built":0,"name":""}]}}}
2020-06-06 22:06:39 onMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591473997679","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,1295764014,993085281,3297354404,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,3112566266,1725028596,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,239731261,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014","type":"ol"}}}
2020-06-06 22:06:39 onMapState {"header":{"pri":1,"tzm":480,"ts":"1591473997198","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"state":"building"}}}
2020-06-06 22:06:39 onMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591473997677","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"tid":"368748","totalCount":0,"traceStart":0,"pointCount":0,"traceValue":""}}}
2020-06-06 22:06:39 onMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591473997683","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceIndex":43,"pieceValue":"XQAABAAQJwAAAABtfoURq1UrME+DohWpVZrbmwcxzplzX+I3F49Zw92ujgMRbLQUNGiywe1KOfPbv/gK4I+8xriiETA6Ef6FQbHFgcNnGRqMk8D0yxurFLpUPvmBe61pdfi7x92STFLGUOh0X4hEpDHSRBJZvY88w8OUIS0rYjpO5FJ6IPnaH7oQrPEN61Syy0sj1w7A5FS0syr6CVlhDBq406Nj/v8CgZ1faC8rqf27vgFIZf+wBZPHMDNTl9wZ4OO9p6S1KL1iUpSllDnwWb6oaDc4AcePmeMSbuYqz3bU0MpA5RJuz+52aAkMUVOOJ49I6u6Tx39rjYqklcWxFxHgQb7Wli6MZwA="}}}
2020-06-06 22:06:39 onPos {"header":{"pri":1,"tzm":480,"ts":"1591473997677","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"chargePos":[{"x":100,"y":250,"a":-100}],"deebotPos":{"x":100,"y":250,"a":79,"invalid":0},"mid":"409307405"}}}
2020-06-06 22:06:39 onRelocationState {"header":{"pri":1,"tzm":480,"ts":"1591473996627","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mode":"recover","state":"ok","isHasMap":1}}}
2020-06-06 22:06:39 onSched {"header":{"pri":1,"tzm":480,"ts":"1591473997674","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":[]}}
2020-06-06 22:04:54 reportMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591473892962","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"867933730","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,1295764014,4084319698,1483512012,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1191934485,3377126947,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1010895077,1295764014,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-06-06 22:04:54 reportMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591473892998","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"867933730","tid":"33197","totalCount":246,"traceStart":0,"pointCount":246,"traceValue":"XQAABADOBAAAAAIAH2xVanXpwEMp8ZsEnHPoy8EYPKJyQx8kKNcZGwA0IIxz8Nbn+ZisVFsjIVwSZh6hsWJFbx/V0k2YcxXDm9L8euw8mfY86aJ2UQ9DWMj3757MzWx/t7debXrw6wdxXK9F4nfVYRZw+vjV11lr+sxrdqMmmsgNMqrWjT18P2P4Pyt2qIXuqJTrRIGQOum0E07qYI4aNtvxbqCSimPkgtW8LaMX1uah4820VQtR2Hx20VSRggC9q0ftL5mPM4FjUYCPucAbMoUx4SyxCNTLa9Rh2X+kRBgZpruX5A1cAEFqWuM7mcHE47TnZnnTnvZszqQ39co2Osk50lWcq4aX4wTeygG5FLeWKJQtsEMe3aGyKdqpBCvvOru4Un5yEgjC69H9hUFxlQU+Oj9ywxMrU0RlrJyxYxbMd5E3GlDugue+bmt26xLkBiGjS6DoFE+33xXL/8goOaX2dNkNKkqmKFghCxsUDJu+Bwhx5uJU2CcgCPxmuQxzJ5INrjDC+E4n4sE0DYoUij7ORO0xDspSk4Hq8AFsGW6Fizri+HEgXr2/Kmn2u8qp69HnV6uhFcnH41itPViYlfcrIrpKxoIqPAW3osY8DgGBIijBr6NGWZKkJweluZ6b25sW0Y7d3cLP/ouslU9Yu9lS0Lr8dLVt3UeXRDtSAT2mx8EzlJ0mBduEV7YvB2zwLD9MFLh7lnAOoUtkM3Jwr6DIaJTs1FzdJSzd3FSPRsCEKYupioqp/Gl8ZOK2GbVEeBIE3UKNZLquiwagAzwGroUftIL8twoY/ofyw3F3vCHyhesicvX85zLZ0cvJe3xDfLpOYT6WcLMo8WnUhuE5EYMm5ri27CgPdT9iFayNLA=="}}}
2020-06-06 22:04:54 reportMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591473892971","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"867933730","pieceIndex":43,"pieceValue":"XQAABAAQJwAAAABtfoUiLVymd7uXuVRGCsmIFyrd8IvMEzXrGy+mWJN91qMyDpDoSaayR1ewTGG7BLvwsiJ+iKxLMsgpsrNN/pdp1Wm9McG2D+KWyXJNVJP8d58pPq1xWscIgO2LNRcGYz6DWXkr5tsEh6vTCYjR6zYXWY+cNiTrI6/cbaOU+MgcCDpuw2wiPuKYhTYpfEL1KHoanoKbyC8t1fc+qA0/XV5fJ/IzrFF3GHbX7WLLDHK4uRekXrjTcAWASQ7qAknrTN8dM3ZQIqLynWuISphOqb+VBDhnD517GhpTPs/ealQRvA8sra3AR6JbhPo2cwkxT86I8mO2J20UBlWeAA=="}}}
2020-06-06 22:04:54 reportPos {"header":{"pri":1,"tzm":480,"ts":"1591473892959","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"867933730","chargePos":[{"x":100,"y":250,"a":-97}],"deebotPos":{"x":873,"y":-497,"a":-152}}}}
2020-06-06 22:04:54 reportStats {"header":{"pri":1,"tzm":480,"ts":"1591473892957","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"867933730","type":"auto","stop":1,"mapCount":5,"area":3,"time":172,"start":"1591473610","content":"","stopReason":2}}}
Attributes:
IODev myEcovacsClient
autocreate 1
devicetopic bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
getList BatteryInfo:noArg GetBatteryInfo iot/p2p/GetBatteryInfo/helperbot/bumper/helperbot/$DEVICETOPIC/j
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
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) }
room Saugroboter
Im ganzen wird es jetzt schon klarer.
Ich habe jetzt ca.crt unter Android10 und Android5 probiert, Verbindungsfehler. So wie es aussieht, muss ich noch mehr Domains umleiten.
Hast du die App rennen? Kannst du mir sagen welche es sind? Im moment habe ich nur die 3 Standard umgeleitet.
edit:
Ah ne ich hatte schon 4 umgeleitet. In Pihole hatte ich noch diese "mq-ww.ecouser.net" mit vielen Hits, welche ich auch
zu Bumper umgeleitet habe.
edit2:
MQTT
Example Model: Deebot 600/900/901
The robot utilizes MQTT for control. On startup it connects to an MQTT broker (mq-{countrycode}.ecovacs.com) and subscribes to a p2p topic where commands are issued.
The app also connects to the MQTT broker and subscribes to a attr topic where the robot will periodically post status and location updates.
The app receives status updates, for example battery status or robot position information, periodically via the attr topic.
However, commands issued via the app/client are not published directly to the p2p topic that the robot subscribes to. When the app sends a command such as "Clean", this is sent via a Rest API to the server at portal-{countrycode}.ecouser.net.
The Rest API provided by portal-{countrycode}.ecouser.net receives the command and passes it to a "helper" bot that has permission to publish to the p2p topic the robot is subscribed to. The "helper" bot waits for a response to be published by the robot and then passes that response back to the server for the Rest API to send back as a response.
Bumper provides a simulated RestAPI and "helper" bot, performing the same function as the central server above.
Danach sieht meine 02-custom.conf jetzt so aus
address=/ecouser.net/192.168.178.40
address=/ecovacs.com/192.168.178.40
address=/ecovacs.net/192.168.178.40
address=/mq-ww.ecouser.net/192.168.178.40
address=/portal-ww.ecouser.net/192.168.178.40
Noch kein Erfolg...
Zitat2020-06-06 22:03:54 body_data_cleanState_id 122
2020-06-06 22:03:54 body_data_cleanState_motionState pause
2020-06-06 22:03:54 body_data_cleanState_router plan
2020-06-06 22:03:54 body_data_cleanState_type auto
Das war nicht geplant. ??? Den motionState würd ich als reading auch reinnehmen
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_cleanState_id:0 body_data_cleanState_motionState:CleaningState body_data_cleanState_router:0 body_data_cleanState_type:0
Zitat
Im ganzen wird es jetzt schon klarer.
Ja, schon schön übersichtlich die wesentlichen Infos. Hast Du mal das get probiert ? Ich erhoffe mir wenigstens eine Fehlermeldung, die die topic-Struktur bei Befehlen "offenlegt".
ZitatHast du die App rennen? Kannst du mir sagen welche es sind?
Ich hatte die App in einer Windows-Android-Emulation laufen und habe nur die 3 top-level-domains ecouser.net ecovacs.com ecovacs.net umgeleitet. schließt
Zitatmq-ww.ecouser.net
ja eigentlich ein ?! :-\ ???
Siehe oben, noch eine Ergänzung.
Ja, get funktioniert leider nicht.Timeout.
Timeout reading answer for iot/p2p/GetBatteryInfo/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j
ZitatTimeout
ist erwartet. kein neuer Eintrag unter readingslist ?
ZitatNoch kein Erfolg...
Dann schau mal in die bumper logs. Ich erinnere mich, dass zu meiner aktiven bumper-Zeit viel diskutiert wurde. Ging aber davon aus, dass Brian das gelöst hat.
Nabend.
Doch Readingslist wurde erweitert.
$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) }
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/p2p/GetBatteryInfo/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* j
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:\x5c\x24SYS/broker/version:.* version
Aktueller Stand der Readings
setstate Ozmo950 2020-06-06 23:31:36 Charging 1
setstate Ozmo950 2020-06-06 23:31:04 CleaningArea 0
setstate Ozmo950 2020-06-06 23:31:04 CleaningMode auto
setstate Ozmo950 2020-06-06 23:31:00 CleaningState working
setstate Ozmo950 2020-06-06 23:31:56 Firmware 1.7.9
setstate Ozmo950 2020-06-06 23:31:56 Hardware 0.1.1
setstate Ozmo950 2020-06-06 23:31:04 LastStart 1591478853
setstate Ozmo950 2020-06-06 23:31:38 Speed 0
setstate Ozmo950 2020-06-06 23:31:56 Systemcode 1064
setstate Ozmo950 2020-06-06 23:31:56 Trigger button
setstate Ozmo950 2020-06-06 23:31:56 Version 0.0.1
setstate Ozmo950 2020-06-06 23:27:22 body_data_enable 0
setstate Ozmo950 2020-06-06 23:27:22 header_fwVer 1.7.9
setstate Ozmo950 2020-06-06 23:27:22 header_hwVer 0.1.1
setstate Ozmo950 2020-06-06 23:27:22 header_pri 1
setstate Ozmo950 2020-06-06 23:27:22 header_ts 1591478840686
setstate Ozmo950 2020-06-06 23:27:22 header_tzm 480
setstate Ozmo950 2020-06-06 23:27:22 header_ver 0.0.1
setstate Ozmo950 2020-06-06 23:31:56 onCachedMapInfo {"header":{"pri":1,"tzm":480,"ts":"1591479114988","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"enable":0,"info":[{"mid":"1180777719","status":0,"index":2,"using":0,"built":1,"name":""},{"mid":"409307405","status":0,"index":3,"using":1,"built":0,"name":""}]}}}
setstate Ozmo950 2020-06-06 23:31:56 onMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591479114995","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,1295764014,993085281,3297354404,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,3112566266,1725028596,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,239731261,1295764014,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-06 23:31:56 onMapState {"header":{"pri":1,"tzm":480,"ts":"1591479114510","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"state":"building"}}}
setstate Ozmo950 2020-06-06 23:31:56 onMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591479114994","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"tid":"589177","totalCount":0,"traceStart":0,"pointCount":0,"traceValue":""}}}
setstate Ozmo950 2020-06-06 23:31:56 onMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591479114998","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceIndex":36,"pieceValue":"XQAABAAQJwAAAADr/JAPma0cu5FrsOjGhJtpHJwDkMRe9d4Scp4EhD7kfW1zr79Z2SKDqvzEKqWKvTCO8ctWVxBVvgYQeJDkb601bR7OjVf3IBK9psPOkEYTEN4Qi5OVc9GwiUpTuWdAMfVUihWUmSrGiQhCFCb7meIkjZB2DmC1dq4sYjJ58H0IM7jp4Hbh1y0DaDgCXDCm4+bZELmMtVghYhUjdaVargSnckQGSKzn9t2iLmudUYmjCq4DlEqb1UkbLdkAFtIA"}}}
setstate Ozmo950 2020-06-06 23:31:56 onPos {"header":{"pri":1,"tzm":480,"ts":"1591479114993","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"chargePos":[{"x":100,"y":350,"a":-99}],"deebotPos":{"x":100,"y":350,"a":80,"invalid":0},"mid":"409307405"}}}
setstate Ozmo950 2020-06-06 23:31:56 onRelocationState {"header":{"pri":1,"tzm":480,"ts":"1591479113926","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mode":"recover","state":"ok","isHasMap":1}}}
setstate Ozmo950 2020-06-06 23:31:56 onSched {"header":{"pri":1,"tzm":480,"ts":"1591479114990","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":[]}}
setstate Ozmo950 2020-06-06 23:31:14 reportMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591479073549","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"1388457782","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,1295764014,411578288,1330573709,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,3796217608,3544299830,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,239731261,1295764014,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-06 23:31:14 reportMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591479073576","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1388457782","tid":"422974","totalCount":80,"traceStart":0,"pointCount":80,"traceValue":"XQAABACQAQAAAAGAIKuTgZOwsCzi6ItvsUMTTOphCmm5jIAGH5DoTBN2Pb2RMZ0pOJBaqaVvoU1h8nOPjmKp7qEGvJWdzHoYG71v4WzM1uPPzSwN333SupyM9MkdXG9q/2lJY2JF6yRYD40czPlXcTVW95Odc6tuSTszta1fiBjqplViVDPIJm1I5jeI3hOSbTKxqn/Hoq82JUMsB6cPtMc34MX33tzn0x/kZTsTTlsNXpgfShO/MjdXIhsaqeN0W6jArRQFIQdsuk+qkhGn+QA="}}}
setstate Ozmo950 2020-06-06 23:31:14 reportMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591479073555","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"1388457782","pieceIndex":43,"pieceValue":"XQAABAAQJwAAAABtfoURq1UrME+DohWpVZrbmwcxzplzX+I3F49Zw92ujgMRbLQUNGiywe1KOfPbv/gK4I+8xriiETA6Ef6FQbHFgcNnGRqMk8D0yxurFLpUPvmBe61pdfi7x92STFLGUOh0X4hEpDHSRBJZvY88w8OUIS0rYjpO5FJ6IPnaH7oQrPEN61Syy0sj1w7A5FS0syr6CVlhDBq406Nj/v8CgZ1faC8rqf27vgFIZf+wBZPHMDNTl9wZ4OO9p6S1KL1iUpSllDnwWb6oaDc4AcePmeMSbuYqz3bU0MpA5RJuz+52aAkMUVOOJ49I6u6Tx39rjYqklcWxFxHgQb7Wli6MZwA="}}}
setstate Ozmo950 2020-06-06 23:31:14 reportPos {"header":{"pri":1,"tzm":480,"ts":"1591479073546","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1388457782","chargePos":[{"x":100,"y":250,"a":-100}],"deebotPos":{"x":-1807,"y":305,"a":-133}}}}
setstate Ozmo950 2020-06-06 23:31:14 reportStats {"header":{"pri":1,"tzm":480,"ts":"1591479073544","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1388457782","type":"auto","stop":1,"mapCount":5,"area":0,"time":70,"start":"1591478853","content":"","stopReason":2}}}
Internals:
CID bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth
DEF bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth
DEVICETOPIC bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
FUUID 5eda5bf2-f33f-86cf-60c0-29e319834f250515
IODev myEcovacsClient
LASTInputDev myEcovacsClient
MSGCNT 5417
NAME Ozmo950
NR 314
STATE clean
TYPE MQTT2_DEVICE
myEcovacsClient_MSGCNT 5417
myEcovacsClient_TIME 2020-06-06 23:31:56
JSONMAP:
body_data_area CleaningArea
body_data_cid 0
body_data_cleanState_id 0
body_data_cleanState_motionState CleaningState
body_data_cleanState_router 0
body_data_cleanState_type 0
body_data_code Systemcode
body_data_isCharging Charging
body_data_isLow 0
body_data_mode 0
body_data_speed Speed
body_data_start LastStart
body_data_state 0
body_data_time 0
body_data_trigger Trigger
body_data_type CleaningMode
body_data_value BatteryState
header_fwVer Firmware
header_hwVer Hardware
header_pri 0
header_ts 0
header_tzm 0
header_ver Version
OLDREADINGS:
READINGS:
2020-06-06 23:31:36 Charging 1
2020-06-06 23:31:04 CleaningArea 0
2020-06-06 23:31:04 CleaningMode auto
2020-06-06 23:31:00 CleaningState working
2020-06-06 23:31:56 Firmware 1.7.9
2020-06-06 23:31:56 Hardware 0.1.1
2020-06-06 23:31:04 LastStart 1591478853
2020-06-06 23:31:38 Speed 0
2020-06-06 23:31:56 Systemcode 1064
2020-06-06 23:31:56 Trigger button
2020-06-06 23:31:56 Version 0.0.1
2020-06-06 23:27:22 body_data_enable 0
2020-06-06 23:27:22 header_fwVer 1.7.9
2020-06-06 23:27:22 header_hwVer 0.1.1
2020-06-06 23:27:22 header_pri 1
2020-06-06 23:27:22 header_ts 1591478840686
2020-06-06 23:27:22 header_tzm 480
2020-06-06 23:27:22 header_ver 0.0.1
2020-06-06 23:31:56 onCachedMapInfo {"header":{"pri":1,"tzm":480,"ts":"1591479114988","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"enable":0,"info":[{"mid":"1180777719","status":0,"index":2,"using":0,"built":1,"name":""},{"mid":"409307405","status":0,"index":3,"using":1,"built":0,"name":""}]}}}
2020-06-06 23:31:56 onMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591479114995","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,1295764014,993085281,3297354404,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,3112566266,1725028596,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,239731261,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014","type":"ol"}}}
2020-06-06 23:31:56 onMapState {"header":{"pri":1,"tzm":480,"ts":"1591479114510","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"state":"building"}}}
2020-06-06 23:31:56 onMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591479114994","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"tid":"589177","totalCount":0,"traceStart":0,"pointCount":0,"traceValue":""}}}
2020-06-06 23:31:56 onMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591479114998","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceIndex":36,"pieceValue":"XQAABAAQJwAAAADr/JAPma0cu5FrsOjGhJtpHJwDkMRe9d4Scp4EhD7kfW1zr79Z2SKDqvzEKqWKvTCO8ctWVxBVvgYQeJDkb601bR7OjVf3IBK9psPOkEYTEN4Qi5OVc9GwiUpTuWdAMfVUihWUmSrGiQhCFCb7meIkjZB2DmC1dq4sYjJ58H0IM7jp4Hbh1y0DaDgCXDCm4+bZELmMtVghYhUjdaVargSnckQGSKzn9t2iLmudUYmjCq4DlEqb1UkbLdkAFtIA"}}}
2020-06-06 23:31:56 onPos {"header":{"pri":1,"tzm":480,"ts":"1591479114993","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"chargePos":[{"x":100,"y":350,"a":-99}],"deebotPos":{"x":100,"y":350,"a":80,"invalid":0},"mid":"409307405"}}}
2020-06-06 23:31:56 onRelocationState {"header":{"pri":1,"tzm":480,"ts":"1591479113926","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mode":"recover","state":"ok","isHasMap":1}}}
2020-06-06 23:31:56 onSched {"header":{"pri":1,"tzm":480,"ts":"1591479114990","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":[]}}
2020-06-06 23:31:14 reportMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591479073549","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"1388457782","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,1295764014,411578288,1330573709,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,3796217608,3544299830,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,239731261,1295764014,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-06-06 23:31:14 reportMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591479073576","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1388457782","tid":"422974","totalCount":80,"traceStart":0,"pointCount":80,"traceValue":"XQAABACQAQAAAAGAIKuTgZOwsCzi6ItvsUMTTOphCmm5jIAGH5DoTBN2Pb2RMZ0pOJBaqaVvoU1h8nOPjmKp7qEGvJWdzHoYG71v4WzM1uPPzSwN333SupyM9MkdXG9q/2lJY2JF6yRYD40czPlXcTVW95Odc6tuSTszta1fiBjqplViVDPIJm1I5jeI3hOSbTKxqn/Hoq82JUMsB6cPtMc34MX33tzn0x/kZTsTTlsNXpgfShO/MjdXIhsaqeN0W6jArRQFIQdsuk+qkhGn+QA="}}}
2020-06-06 23:31:14 reportMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591479073555","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"1388457782","pieceIndex":43,"pieceValue":"XQAABAAQJwAAAABtfoURq1UrME+DohWpVZrbmwcxzplzX+I3F49Zw92ujgMRbLQUNGiywe1KOfPbv/gK4I+8xriiETA6Ef6FQbHFgcNnGRqMk8D0yxurFLpUPvmBe61pdfi7x92STFLGUOh0X4hEpDHSRBJZvY88w8OUIS0rYjpO5FJ6IPnaH7oQrPEN61Syy0sj1w7A5FS0syr6CVlhDBq406Nj/v8CgZ1faC8rqf27vgFIZf+wBZPHMDNTl9wZ4OO9p6S1KL1iUpSllDnwWb6oaDc4AcePmeMSbuYqz3bU0MpA5RJuz+52aAkMUVOOJ49I6u6Tx39rjYqklcWxFxHgQb7Wli6MZwA="}}}
2020-06-06 23:31:14 reportPos {"header":{"pri":1,"tzm":480,"ts":"1591479073546","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1388457782","chargePos":[{"x":100,"y":250,"a":-100}],"deebotPos":{"x":-1807,"y":305,"a":-133}}}}
2020-06-06 23:31:14 reportStats {"header":{"pri":1,"tzm":480,"ts":"1591479073544","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1388457782","type":"auto","stop":1,"mapCount":5,"area":0,"time":70,"start":"1591478853","content":"","stopReason":2}}}
Attributes:
IODev myEcovacsClient
autocreate 1
devicetopic bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
getList BatteryInfo:noArg GetBatteryInfo iot/p2p/GetBatteryInfo/helperbot/bumper/helperbot/$DEVICETOPIC/j
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_cleanState_id:0 body_data_cleanState_motionState:CleaningState body_data_cleanState_router:0 body_data_cleanState_type:0
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) }
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/p2p/GetBatteryInfo/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* j
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:\x5c\x24SYS/broker/version:.* version
room Saugroboter
Ich habe bei Github gestöbert. Viele nutzen nur
iot/atr/+/.....
Ein Beispiel hier
https://github.com/mrbungle64/ecovacs-deebot.js/blob/master/library/ecovacsMQTT.js
this.client.on('connect', function () {
tools.envLog('[EcovacsMQTT] client connected');
this.subscribe('iot/atr/+/' + vacuum_did + '/' + vacuum_class + '/' + vacuum_resource + '/+', (error, granted) => {
if (!error) {
ecovacsMQTT.emit('ready', 'Client connected. Subscribe successful');
} else {
tools.envLog('[EcovacsMQTT] subscribe err: %s', error.toString());
}
});
});
Und ein anderes Beispiel hier
https://github.com/And3rsL/Deebotozmo/blob/master/deebotozmo/ecovacsiotmq.py
else:
_LOGGER.debug("EcoVacsMQTT - Connected with result code "+str(rc))
_LOGGER.debug("EcoVacsMQTT - Subscribing to all")
self.subscribe('iot/atr/+/' + self.vacuum['did'] + '/' + self.vacuum['class'] + '/' + self.vacuum['resource'] + '/+', qos=0)
self.ready_flag.set()
Für die App hatte ich noch keine Zeit.
Oh, die App funktioniert plötzlich (Android 5). Darüber kann sogar der Bumperstatus geöffnet werden.
Deebot wird als offline angezeigt. Model ist aber richtig.
edit:
Und nu wieder nich :D mal sehen wo der Wurm ist...
Dieses Phänomen hatte ich auch häufig. Hatte es aber auf die Win-Emulation geschoben.
Stell bitte mal das list vom mqtt2-client-device ein.
Internals:
BUF
DEF 192.168.178.40:8883
DeviceName 192.168.178.40:8883
FD 72
FUUID 5eda41c4-f33f-86cf-1f90-589bc22bbfaffcbc
NAME myEcovacsClient
NR 313
PARTIAL
SSL 1
STATE opened
TYPE MQTT2_CLIENT
WBCallback
clientId bb5d3df7-0ec5-4f38-b930-b6e0ed03b963@yna5xi/GMth
lastMsgTime 1591562232.82525
nextOpenDelay 5
READINGS:
2020-06-07 22:27:42 state opened
Attributes:
SSL 1
autocreate simple
clientId bb5d3df7-0ec5-4f38-b930-b6e0ed03b963@yna5xi/GMth
mqttVersion 3.1.1
room Saugroboter
username meine@geheimemail.de
edit:
Was mir einfällt. Nachdem in der App die Verbindung weg war und ich auf Bumper geklickt hatte,
wurde da sowas wie "bumper.ecovacs.net nicht erreichbar" angezeigt. Vielleicht ein DNS-Fehler seitens Bumper.
edit2:
Pihole hat mir die Adresse offenbart. " bumper.ecovacs.com"
edit3:
Beides im Browser funktioniert aber...mhhh
http://bumper.ecovacs.com:8007/
http://192.168.178.40:8007/
Beim list gings mir insbesondere um die subscription, aber die ist dann default=#
Hattest Du eigentlich Zertifikat(e) u./o. key(s) fürs SSL noch irgendwo hinkopiert ? Also auf dem FHEM-Rpi.
Zitatbumper.ecovacs.net
Da guckst Du besser in die bumper logs. Ich hatte in den Anfängen bumper immer mit debug-option in der Konsole laufen. Da kann man das "Geschehen" recht gut verfolgen. Aber die Logs sind auch recht informativ.
Zitatbumper.ecovacs.net
ist vermutlich der Server, mit dem Brian Infos von bumper in der App bereitstellt.
Ja, debug durchstöbere ich auch immer. Denke das hier könnte der Fehler sein. Als wenn der Apiserver immer aussteigt?
[2020-06-07 21:54:38,035] :: DEBUG :: confserver :: confserver :: log_all_requests :: 273 :: {"request": {"route_name": "portal_api_neng_getShareMsgs", "method": "POST", "path": "/api/neng/message/getShareMsgs", "query_string": "td=&u=fuid_tmpuser&cv=1.68.1&t=a&av=1.4.5", "raw_path": "/api/neng/message/getShareMsgs?td=&u=fuid_tmpuser&cv=1.68.1&t=a&av=1.4.5", "raw_headers": "(b'Content-Type', b'application/json'),(b'User-Agent', b'Dalvik/2.1.0 (Linux; U; Android 5.0; SM-G900F Build/LRX21T)'),(b'Host', b'portal-ww.ecouser.net'),(b'Connection', b'Keep-Alive'),(b'Accept-Encoding', b'gzip'),(b'Content-Length', b'197')", "body": "{'lang': 'de', 'defaultLang': 'en', 'auth': {'with': 'users', 'userid': 'fuid_tmpuser', 'realm': 'ecouser.net', 'token': 'us_50ec81508a434d979fa3e3ea6cc039ed', 'resource': 'GLB206aae1G6'}, 'beforets': 0, 'count': 1}"}, "response": {"response_body": "{'code': 0, 'data': {'hasNext': False, 'msgs': []}}", "status": "200"}}
[2020-06-07 21:54:38,095] :: DEBUG :: confserver :: confserver :: log_all_requests :: 278 :: Request path /Global_APPBuried/Global_BigDataDomainForwardAPI not found
[2020-06-07 21:54:38,096] :: DEBUG :: confserver :: confserver :: log_all_requests :: 290 :: {"request": {"route_name": "None", "method": "POST", "path": "/Global_APPBuried/Global_BigDataDomainForwardAPI", "query_string": "", "raw_path": "/Global_APPBuried/Global_BigDataDomainForwardAPI", "raw_headers": "(b'Content-Type', b'application/json; charset=utf-8'),(b'Content-Length', b'212'),(b'Host', b'bigdata-international.ecovacs.com'),(b'Connection', b'Keep-Alive'),(b'Accept-Encoding', b'gzip'),(b'User-Agent', b'okhttp/3.12.8')", "body": "{'header': {'data_category': 'Global-BigDataDomainForwardAPI', 'data_method': 'ADD', 'data_charset': 'utf-8', 'phone_timezone': 'GMT+2', 'data_encrypt': 'false'}, 'body': [{'app_country_code': 'DE', 'app_language_code': 'DE'}]}"}}
[2020-06-07 21:54:39,531] :: DEBUG :: confserver :: confserver :: log_all_requests :: 273 :: {"request": {"route_name": "portal_api_neng_hasUnreadMessage", "method": "POST", "path": "/api/neng/message/hasUnreadMsg", "query_string": "td=&u=fuid_tmpuser&cv=1.68.1&t=a&av=1.4.5", "raw_path": "/api/neng/message/hasUnreadMsg?td=&u=fuid_tmpuser&cv=1.68.1&t=a&av=1.4.5", "raw_headers": "(b'Content-Type', b'application/json'),(b'User-Agent', b'Dalvik/2.1.0 (Linux; U; Android 5.0; SM-G900F Build/LRX21T)'),(b'Host', b'portal-ww.ecouser.net'),(b'Connection', b'Keep-Alive'),(b'Accept-Encoding', b'gzip'),(b'Content-Length', b'154')", "body": "{'auth': {'with': 'users', 'userid': 'fuid_tmpuser', 'realm': 'ecouser.net', 'token': 'us_50ec81508a434d979fa3e3ea6cc039ed', 'resource': 'GLB206aae1G6'}, 'count': 20}"}, "response": {"response_body": "{'code': 0, 'data': {'hasUnRead': True}}", "status": "200"}}
[2020-06-07 21:54:39,531] :: DEBUG :: confserver :: confserver :: log_all_requests :: 273 :: {"request": {"route_name": "portal_api_dim_devmanager", "method": "POST", "path": "/api/dim/devmanager.do", "query_string": "td=HasUnreadMsg&u=fuid_tmpuser&cv=1.68.1&t=a&av=1.4.5", "raw_path": "/api/dim/devmanager.do?td=HasUnreadMsg&u=fuid_tmpuser&cv=1.68.1&t=a&av=1.4.5", "raw_headers": "(b'Content-Type', b'application/json'),(b'User-Agent', b'Dalvik/2.1.0 (Linux; U; Android 5.0; SM-G900F Build/LRX21T)'),(b'Host', b'portal-ww.ecouser.net'),(b'Connection', b'Keep-Alive'),(b'Accept-Encoding', b'gzip'),(b'Content-Length', b'174')", "body": "{'td': 'HasUnreadMsg', 'auth': {'with': 'users', 'userid': 'fuid_tmpuser', 'realm': 'ecouser.net', 'token': 'us_50ec81508a434d979fa3e3ea6cc039ed', 'resource': 'GLB206aae1G6'}, 'count': 20}"}, "response": {"response_body": "{'ret': 'ok', 'unRead': False}", "status": "200"}}
[2020-06-07 21:54:39,562] :: DEBUG :: confserver :: confserver :: log_all_requests :: 273 :: {"request": {"route_name": "v1_message_hasUnreadMsg", "method": "GET", "path": "/v1/private/DE/DE/b7718daa9116f2d81af7a81869d70fc4/global_e/1.4.5/google_play/1/message/hasUnreadMsg", "query_string": "uid=fuid_tmpuser&accessToken=ed36a0a8d65b4757a665b534e69de75b&requestId=794d14d69806505c90bd705a93f11995&authTimespan=1591559693119&authTimeZone=GMT%2B2&authAppkey=1520391301804&authSign=186e420f91abfc182d96d38dfe61cd5d", "raw_path": "/v1/private/DE/DE/b7718daa9116f2d81af7a81869d70fc4/global_e/1.4.5/google_play/1/message/hasUnreadMsg?uid=fuid_tmpuser&accessToken=ed36a0a8d65b4757a665b534e69de75b&requestId=794d14d69806505c90bd705a93f11995&authTimespan=1591559693119&authTimeZone=GMT%2B2&authAppkey=1520391301804&authSign=186e420f91abfc182d96d38dfe61cd5d", "raw_headers": "(b'Host', b'gl-de-api.ecovacs.com'),(b'Connection', b'Keep-Alive'),(b'Accept-Encoding', b'gzip'),(b'User-Agent', b'okhttp/3.12.8')", "body": "None"}, "response": {"response_body": "{'code': '0000', 'data': 'N', 'msg': '\u64cd\u4f5c\u6210\u529f', 'success': True, 'time': 1591552479562}", "status": "200"}}
[2020-06-07 21:54:39,671] :: DEBUG :: confserver :: confserver :: log_all_requests :: 278 :: Request path /Global_APPBuried/Global_BigDataDomainForwardAPI not found
[2020-06-07 21:54:39,671] :: DEBUG :: confserver :: confserver :: log_all_requests :: 290 :: {"request": {"route_name": "None", "method": "POST", "path": "/Global_APPBuried/Global_BigDataDomainForwardAPI", "query_string": "", "raw_path": "/Global_APPBuried/Global_BigDataDomainForwardAPI", "raw_headers": "(b'Content-Type', b'application/json; charset=utf-8'),(b'Content-Length', b'212'),(b'Host', b'bigdata-international.ecovacs.com'),(b'Connection', b'Keep-Alive'),(b'Accept-Encoding', b'gzip'),(b'User-Agent', b'okhttp/3.12.8')", "body": "{'header': {'data_category': 'Global-BigDataDomainForwardAPI', 'data_method': 'ADD', 'data_charset': 'utf-8', 'phone_timezone': 'GMT+2', 'data_encrypt': 'false'}, 'body': [{'app_country_code': 'DE', 'app_language_code': 'DE'}]}"}}
[2020-06-07 21:54:40,180] :: DEBUG :: confserver :: confserver :: log_all_requests :: 273 :: {"request": {"route_name": "portal_api_users_user", "method": "POST", "path": "/api/users/user.do", "query_string": "td=GetAuthCode&u=fuid_tmpuser&cv=1.68.1&t=a&av=1.4.5", "raw_path": "/api/users/user.do?td=GetAuthCode&u=fuid_tmpuser&cv=1.68.1&t=a&av=1.4.5", "raw_headers": "(b'Content-Type', b'application/json'),(b'User-Agent', b'Dalvik/2.1.0 (Linux; U; Android 5.0; SM-G900F Build/LRX21T)'),(b'Host', b'portal-ww.ecouser.net'),(b'Connection', b'Keep-Alive'),(b'Accept-Encoding', b'gzip'),(b'Content-Length', b'194')", "body": "{'todo': 'GetAuthCode', 'clientId': 'ecovacsForLiving', 'auth': {'with': 'users', 'userid': 'fuid_tmpuser', 'realm': 'ecouser.net', 'token': 'us_50ec81508a434d979fa3e3ea6cc039ed', 'resource': 'GLB206aae1G6'}}"}, "response": {"response_body": "{}", "status": "200"}}
[2020-06-07 21:54:40,493] :: DEBUG :: confserver :: confserver :: log_all_requests :: 273 :: {"request": {"route_name": "portal_api_iot_devmanager", "method": "POST", "path": "/api/iot/devmanager.do", "query_string": "mid=yna5xi&did=bb5d3df7-0ec5-4f38-b930-b6e0ed03b963&td=q&u=fuid_tmpuser&cv=1.68.1&t=a&av=1.4.5", "raw_path": "/api/iot/devmanager.do?mid=yna5xi&did=bb5d3df7-0ec5-4f38-b930-b6e0ed03b963&td=q&u=fuid_tmpuser&cv=1.68.1&t=a&av=1.4.5", "raw_headers": "(b'Content-Type', b'application/json'),(b'User-Agent', b'Dalvik/2.1.0 (Linux; U; Android 5.0; SM-G900F Build/LRX21T)'),(b'Host', b'portal-ww.ecouser.net'),(b'Connection', b'Keep-Alive'),(b'Accept-Encoding', b'gzip'),(b'Content-Length', b'298')", "body": "{'td': 'q', 'toId': 'bb5d3df7-0ec5-4f38-b930-b6e0ed03b963', 'toType': 'yna5xi', 'toRes': 'GMth', 'cmdName': 'GetWKVer', 'payloadType': 'j', 'auth': {'with': 'users', 'userid': 'fuid_tmpuser', 'realm': 'ecouser.net', 'token': 'us_50ec81508a434d979fa3e3ea6cc039ed', 'resource': 'GLB206aae1G6'}, 'payload': {'td': 'GetWKVer'}}"}, "response": {"response_body": "{'id': 'OYLZ', 'errno': 500, 'ret': 'fail', 'debug': 'wait for response timed out'}", "status": "200"}}
[2020-06-07 21:54:41,319] :: DEBUG :: confserver :: confserver :: log_all_requests :: 273 :: {"request": {"route_name": "v1_user_getUserAccountInfo", "method": "GET", "path": "/v1/private/DE/DE/b7718daa9116f2d81af7a81869d70fc4/global_e/1.4.5/google_play/1/user/getUserAccountInfo", "query_string": "uid=fuid_tmpuser&accessToken=ed36a0a8d65b4757a665b534e69de75b&requestId=7182951ac940a20d34cb609bf9e67aed&authTimespan=1591559694830&authTimeZone=GMT%2B2&authAppkey=1520391301804&authSign=dfacc563900f3083286618d1ddf939d6", "raw_path": "/v1/private/DE/DE/b7718daa9116f2d81af7a81869d70fc4/global_e/1.4.5/google_play/1/user/getUserAccountInfo?uid=fuid_tmpuser&accessToken=ed36a0a8d65b4757a665b534e69de75b&requestId=7182951ac940a20d34cb609bf9e67aed&authTimespan=1591559694830&authTimeZone=GMT%2B2&authAppkey=1520391301804&authSign=dfacc563900f3083286618d1ddf939d6", "raw_headers": "(b'Host', b'gl-de-api.ecovacs.com'),(b'Connection', b'Keep-Alive'),(b'Accept-Encoding', b'gzip'),(b'User-Agent', b'okhttp/3.12.8')", "body": "None"}, "response": {"response_body": "{'code': '0000', 'data': {'email': 'null@null.com', 'hasMobile': 'N', 'hasPassword': 'Y', 'uid': 'fuid_tmpuser', 'userName': 'fusername_tmpuser', 'obfuscatedMobile': None, 'mobile': None, 'loginName': 'fusername_tmpuser'}, 'msg': '\u64cd\u4f5c\u6210\u529f', 'time': 1591552481320}", "status": "200"}}
[2020-06-07 21:54:41,351] :: DEBUG :: confserver :: confserver :: log_all_requests :: 273 :: {"request": {"route_name": "v1_user_getUserMenuInfo", "method": "GET", "path": "/v1/private/DE/DE/b7718daa9116f2d81af7a81869d70fc4/global_e/1.4.5/google_play/1/user/getUserMenuInfo", "query_string": "uid=fuid_tmpuser&accessToken=ed36a0a8d65b4757a665b534e69de75b&requestId=771cd8c1b7e58d938ee7b1461b8844dd&authTimespan=1591559694851&authTimeZone=GMT%2B2&authAppkey=1520391301804&authSign=0be7fea6f90f8ca6f3f620f1dfabf7b1", "raw_path": "/v1/private/DE/DE/b7718daa9116f2d81af7a81869d70fc4/global_e/1.4.5/google_play/1/user/getUserMenuInfo?uid=fuid_tmpuser&accessToken=ed36a0a8d65b4757a665b534e69de75b&requestId=771cd8c1b7e58d938ee7b1461b8844dd&authTimespan=1591559694851&authTimeZone=GMT%2B2&authAppkey=1520391301804&authSign=0be7fea6f90f8ca6f3f620f1dfabf7b1", "raw_headers": "(b'Host', b'gl-de-api.ecovacs.com'),(b'Connection', b'Keep-Alive'),(b'Accept-Encoding', b'gzip'),(b'User-Agent', b'okhttp/3.12.8')", "body": "None"}, "response": {"response_body": "{'code': '0000', 'data': [{'menuItems': [{'clickAction': 1, 'clickUri': 'https://ecovacs.zendesk.com/hc/en-us', 'menuIconUrl': 'https://gl-us-pub.ecovacs.com/upload/global/2019/12/16/2019121603180741b73907046e742b80e8fe4a90fe2498.png', 'menuId': '20191216031849_4d744630f7ad2f5208a4b8051be61d10', 'menuName': 'Help & Feedback', 'paramsJson': ''}], 'menuPositionKey': 'A_FIRST'}, {'menuItems': [{'clickAction': 3, 'clickUri': 'robotShare', 'menuIconUrl': 'https://gl-us-pub.ecovacs.com/upload/global/2019/12/16/2019121603284185e632ec6c5da10bd82119d7047a1f9e.png', 'menuId': '20191216032853_5fac4cc9cbd0e166dfa951485d1d8cc4', 'menuName': 'Share Robot', 'paramsJson': ''}], 'menuPositionKey': 'B_SECOND'}, {'menuItems': [{'clickAction': 3, 'clickUri': 'config', 'menuIconUrl': 'https://gl-us-pub.ecovacs.com/upload/global/2019/12/16/201912160325324068da4e4a09b8c3973db162e84784d5.png', 'menuId': '20191216032545_ebea0fbb4cb02d9c2fec5bdf3371bc2d', 'menuName': 'Settings', 'paramsJson': ''}], 'menuPositionKey': 'C_THIRD'}, {'menuItems': [{'clickAction': 1, 'clickUri': 'https://bumper.ecovacs.com/', 'menuIconUrl': 'https://gl-us-pub.ecovacs.com/upload/global/2019/12/16/201912160325324068da4e4a09b8c3973db162e84784d5.png', 'menuId': '20191216032545_ebea0fbb4cb02d9c2fec5bdf3371bc2c', 'menuName': 'Bumper Status', 'paramsJson': ''}], 'menuPositionKey': 'D_FOURTH'}], 'msg': '\u64cd\u4f5c\u6210\u529f', 'success': True, 'time': 1591552481351}", "status": "200"}}
[2020-06-07 21:54:44,680] :: DEBUG :: confserver :: confserver :: log_all_requests :: 278 :: Request path /Global_APPBuried/Global_BigDataDomainForwardAPI not found
[2020-06-07 21:54:44,680] :: DEBUG :: confserver :: confserver :: log_all_requests :: 290 :: {"request": {"route_name": "None", "method": "POST", "path": "/Global_APPBuried/Global_BigDataDomainForwardAPI", "query_string": "", "raw_path": "/Global_APPBuried/Global_BigDataDomainForwardAPI", "raw_headers": "(b'Content-Type', b'application/json; charset=utf-8'),(b'Content-Length', b'212'),(b'Host', b'bigdata-international.ecovacs.com'),(b'Connection', b'Keep-Alive'),(b'Accept-Encoding', b'gzip'),(b'User-Agent', b'okhttp/3.12.8')", "body": "{'header': {'data_category': 'Global-BigDataDomainForwardAPI', 'data_method': 'ADD', 'data_charset': 'utf-8', 'phone_timezone': 'GMT+2', 'data_encrypt': 'false'}, 'body': [{'app_country_code': 'DE', 'app_language_code': 'DE'}]}"}}
[2020-06-07 21:54:45,227] :: DEBUG :: confserver :: confserver :: log_all_requests :: 278 :: Request path /favicon.ico not found
Ich habe keine Zertifikate zum Fhemserver kopiert. Nur zu Android.
ZitatIch habe keine Zertifikate zum Fhemserver kopiert. Nur zu Android.
Interessant(oder auch gerade nicht so wirklich für mich verständlich). FHEM braucht weder key, noch Zertifikat, um als client die messages zu empfangen. Das Handy aber schon ? :-\ Ich könnt wetten, dass ich damals kopiert hatte. Ich war ja den Weg gegangen, erst einmal mit mqtt.fx als Universal-mqtt-Tool die messages zu empfangen u. dort hatte ich das ca.crt für die SSL-Verbindung angegeben. Ich muss dann doch mal irgendwann wieder auf 0 zurück und mich mit dem heutigen Wissen Schritt-für-Schritt durch die Installation hangeln. ???
ZitatAls wenn der Apiserver immer aussteigt?
Das ist der confserver. Der wird zu Beginn für die Berechtigungsprüfung genutzt. Ich sah da jetzt nur 200er, also OK, Statuscodes. Ich bin da nicht wirklich eine Hilfe. :'( Ich kann mich nur daran erinnern, dass die App immer wieder Probleme hatte sich zu verbinden. Das lag aber damals bestimmt auch daran, dass es einen Mini-Bug in bumper gab, den ich dann mühsam gefunden hatte u. Brian es dann korrigiert hatte.
Ich habe Mqtt.fx ausprobiert. Ca.crt will es haben. Ohne geht es einfach nicht. User Credentials müssen angegeben werden, sind aber
völlig wahllos. z.B. s@d.net/123456. Kann also das Verhalten bestätigen.
Jetzt gerade habe ich dnsmasq.d/02-custom.conf wieder geändert.
#address=/ecouser.net/169.254.133.212
#address=/ecovacs.com/169.254.133.212
#address=/ecovacs.net/169.254.133.212
address=/ecouser.net/192.168.178.40
address=/ecovacs.com/192.168.178.40
address=/ecovacs.net/192.168.178.40
#address=/mq-ww.ecouser.net/192.168.178.40
#address=/portal-ww.ecouser.net/192.168.178.40
#address=/msg-ww.ecouser.net/192.168.178.40
#address=/gl-de-api.ecovacs.com/192.168.178.40
#address=/recommender.ecovacs.com/192.168.178.40
#address=/portal-ww.ecouser.net/192.168.178.40
address=/bumper.ecovacs.com/192.168.178.40
Also nur noch 4 Adressen aktiv. Danach wie immer sudo service pihole-FTL reload. Bumper gestartet. Unter Android5 bei der EcovacsApp
alle Daten gelöscht, Stop erzwingen und wieder gestartet. Bam.....läuft.... ;D Bot online, alles funktioniert. Als ich dann in Fhem MQTT2_CLIENT
aktivierte, wurde die App sofort rausgeschmissen.
Daher gibt es jetzt 2 Möglichkeiten. Beide zusammen vertragen sich nicht. Oder Beide müssen die gleichen User Credentials benutzen.
Ich versuche das nochmal zu reproduzieren.
Im Anhang die Logs
edit:
Auf dem Android5 Device kann ich die IP 192.168.178.40:8007 vom Bumper im Browser öffnen. http://bumper.ecovacs.com:8007/
funktioniert aber nicht???
Da sollte der Hund begraben sein...
Hab die Logs runtergeladen. Detach sie besser. Wer weiß was alles für Geheimnisse drin stehen.
ZitatIch habe Mqtt.fx ausprobiert. Ca.crt will es haben. Ohne geht es einfach nicht. User Credentials müssen angegeben werden, sind aber
völlig wahllos. z.B. s@d.net/123456. Kann also das Verhalten bestätigen.
Mir ist das gerade immer noch ein Rätsel. Nehmen wir es mal so hin. Bei den user-credentials war ich auch immer unsicher, was da nun wie genau sein muss.
Aber egal... ich schlage etwas anderes vor:
In den Logs stehen ja jetzt Befehle. :)
Wir machen mal einen Test. Wir nehmen das beliebte "Battery".
Zitat[2020-06-08 18:04:49,734] :: DEBUG :: helperbot :: mqttserver :: handle_helperbot_msg :: 366 :: Send Command - Topic: iot/p2p/getBattery/helperbot/bumper/helperbot/$DEVICETOPIC/q/qYEk/j - Message: {"header": {"ts": "1591632289765", "ver": "0.0.22", "pri": 2, "tzm": 120}}
(Blöd, dass der timestamp(ts) da drin steckt, aber Versuch macht kluch;qYEK ist ein randomized identifier. den hatte ich vorher schon in Deinen topics vermisst)
wenn Du das mit mqtt.fx publishst(also $DEVICETOPIC natürlich mit Deinen Daten ersetzt)
iot/p2p/getBattery/helperbot/bumper/helperbot/$DEVICETOPIC/q/qYEk/j {"header": {"ts": "1591632289765", "ver": "0.0.22", "pri": 2, "tzm": 120}}
bekommst Du eine Antwort ? Wenn nicht, mit einem annähernd aktuellen timestamp ?
Wenn es klappt, müsste das über FHEM mit
attr Ozmo950 getList BatteryState:noArg BatteryState iot/p2p/GetBattery/helperbot/bumper/helperbot/$DEVICETOPIC/q/1121/j {"header": {"ts": "1591632289765", "ver": "0.0.22", "pri": 2, "tzm": 120}}
und dann get Ozmo950 BatteryState auch klappen. :-\Oder es scheitert dann doch am fehlenden Zertifikat.
Hier ist der betreffende Bereich in Bumper.
[2020-06-08 22:00:06,362] :: DEBUG :: hbmqtt.broker.plugins.packet_logger_plugin :: logging :: on_mqtt_packet_received :: 34 :: bb5d3df7-0ec5-4f38-b930-b6e0ed03b963@yna5xi/GMth <-in-- PublishPacket(ts=2020-06-08 22:00:06.354968, fixed=MQTTFixedHeader(length=180, flags=0x0), variable=PublishVariableHeader(topic=iot/p2p/getBattery/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/qYEk/j {"header": {"ts": "1591632289765", "ver": "0.0.22", "pri": 2, "tzm": 120}}, packet_id=None), payload=PublishPayload(data="bytearray(b'')"))
[2020-06-08 22:00:06,365] :: DEBUG :: hbmqtt.mqtt.protocol.handler :: handler :: handle_publish :: 566 :: Message queue size: 1
[2020-06-08 22:00:06,368] :: DEBUG :: hbmqtt.mqtt.protocol.handler :: handler :: mqtt_deliver_next_message :: 465 :: Delivering message <hbmqtt.session.IncomingApplicationMessage object at 0x0000026B898DA840>
[2020-06-08 22:00:06,373] :: DEBUG :: hbmqtt.broker :: broker :: client_connected :: 484 :: bb5d3df7-0ec5-4f38-b930-b6e0ed03b963@yna5xi/GMth handling message delivery
[2020-06-08 22:00:06,378] :: DEBUG :: hbmqtt.broker :: broker :: _broadcast_loop :: 697 :: broadcasting {'session': Session(clientId=bb5d3df7-0ec5-4f38-b930-b6e0ed03b963@yna5xi/GMth, state=connected), 'topic': 'iot/p2p/getBattery/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/qYEk/j {"header": {"ts": "1591632289765", "ver": "0.0.22", "pri": 2, "tzm": 120}}', 'data': bytearray(b'')}
[2020-06-08 22:00:06,379] :: DEBUG :: hbmqtt.broker :: broker :: _broadcast_loop :: 707 :: broadcasting application message from (client id=bb5d3df7-0ec5-4f38-b930-b6e0ed03b963@yna5xi/GMth) on topic 'iot/p2p/getBattery/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/qYEk/j {"header": {"ts": "1591632289765", "ver": "0.0.22", "pri": 2, "tzm": 120}}' to (client id=helperbot@bumper/helperbot)
[2020-06-08 22:00:06,387] :: DEBUG :: hbmqtt.mqtt.protocol.handler :: handler :: mqtt_deliver_next_message :: 459 :: 0 message(s) available for delivery
[2020-06-08 22:00:06,395] :: DEBUG :: hbmqtt.broker.plugins.packet_logger_plugin :: logging :: on_mqtt_packet_sent :: 44 :: helperbot@bumper/helperbot -out-> PublishPacket(ts=2020-06-08 22:00:06.391153, fixed=MQTTFixedHeader(length=180, flags=0x0), variable=PublishVariableHeader(topic=iot/p2p/getBattery/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/qYEk/j {"header": {"ts": "1591632289765", "ver": "0.0.22", "pri": 2, "tzm": 120}}, packet_id=None), payload=PublishPayload(data="bytearray(b'')"))
[2020-06-08 22:00:06,404] :: DEBUG :: hbmqtt.client.plugins.packet_logger_plugin :: logging :: on_mqtt_packet_received :: 34 :: helperbot@bumper/helperbot <-in-- PublishPacket(ts=2020-06-08 22:00:06.400145, fixed=MQTTFixedHeader(length=180, flags=0x0), variable=PublishVariableHeader(topic=iot/p2p/getBattery/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/qYEk/j {"header": {"ts": "1591632289765", "ver": "0.0.22", "pri": 2, "tzm": 120}}, packet_id=None), payload=PublishPayload(data="bytearray(b'')"))
[2020-06-08 22:00:06,406] :: DEBUG :: hbmqtt.mqtt.protocol.handler :: handler :: handle_publish :: 566 :: Message queue size: 1
[2020-06-08 22:00:07,596] :: DEBUG :: hbmqtt.mqtt.protocol.handler :: client_handler :: handle_write_timeout :: 91 :: Scheduling Ping
Habe schon länger das Gefühl, das der Bot an der Ladestation im DeepSleep ist. Keine Ahnung, er reagiert nicht.
Erst wenn ich den Knopf drücke, ihn wegnehme oder per App. Ich denke, die App sendet per XMPP -->los arbeite. Dann
läuft der Rest per MQTT und XMPP simultan...Oder der MQTT Interval ist sehr lang. MHhh...
edit:
In Fhem Timeout. Folgendes Reading wird angelegt
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/p2p/GetBattery/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/1121/j:.* { json2nameValue($EVENT) }
edit2:
Jetzt wurde folgendes Reading angelegt
bb5d3df7_0ec5_4f38_b930_b6e0ed03b963_yna5xi_GMth:iot/atr/onSleep/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
Jetzt schläft er wohl. Kommt auch nix in Bumper rein. Kurz anheben ist wie wecken.
edit3:
So, ich hoffe der DNS-Konflikt ist nun intern gelöst. Habe alles nochmal sauber abgearbeitet. Und restart der Netzwerkgeräte
durchgeführt. Danach konnte ich auch wieder bumper.ecovacs.com auf allen Geräten aufrufen und anpingen.
Dann habe ich die App gestartet und ich konnte wieder zu Bumper connecten. Bot war wieder offline. Dann wieder
myEcovacsClient gelöscht, Bumper neugestartet und zack ist der Bot in der App Online. Das beißt sich.
So, Mensch...also wenn die Basics von Mqtt.fx bekannt sind....na dann klappt das auch ::)
Beispiel:
Bumper ist connected. Fhem nicht.
In Mqtt.fx im Publish den Pfad
iot/p2p/charge/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/aOdY/j
Und dann muss der Payload unten in das große Feld :P
{"body": {"data": {"act": "go"}}, "header": {"ts": "1591652941379", "ver": "0.0.22", "pri": 2, "tzm": 120}}
Und mein Bot spricht zu mir: "Ich werde gerade aufgeladen"
Juhu :) jetzt mal Start sniffen
edit:
Reinigung wird gestartet, juhu.
iot/p2p/clean/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/AlLo/j
{"body": {"data": {"act": "start", "type": "auto"}}, "header": {"ts": "1591655850268", "ver": "0.0.22", "pri": 2, "tzm": 120}}
Und Stop
{"body": {"data": {"act": "stop", "type": "auto"}}, "header": {"ts": "1591655850268", "ver": "0.0.22", "pri": 2, "tzm": 120}}
So nachdem meine Antwort durch einen IE-Absturz verloren ging, nochmal. >:(
Schön, dass es nun klappt. Ich war nach Deinem vorletzten Post mit Kopfschmerzen ins Bett gegangen wie ich Dir weiterhelfen kann, woran es liegt, dass App u. FHEM nicht gleichzeitig zu bumper connecten können. Ich hatte schon in Erwägung gezogen meinen Ersatz-Rpi mit der aktuellsten bumper-Version zu bestücken, um en detail nachvollziehen zu können, was da bei Dir vorgeht....
Zitatalso wenn die Basics von Mqtt.fx bekannt sind
Ja so ist das. Auch für mich war der bot der erste richtige Berührungspunkt mit MQTT. Ich hab den selben dummen Fehler in MQTT.fx gemacht. Aber man lernt schon ne ganze Menge.... ;)
ZitatBumper ist connected. Fhem nicht.
Du meinst die App ? Was in FHEM angekommen ist, muss ich dann ja nicht mehr fragen. >:(
Ich denke, dass wir nun mit 2 Dingen weitermachen sollten. Das Problem des gleichzeitigen Zugriffs auf bumper und die Zertifikat-Geschichte.
Ich komme mal zurück auf Post#17 (https://forum.fhem.de/index.php/topic,89898.msg1020388.html#msg1020388). Dort schrieb ich ja zur "User-Definition"
define myEcovacsClient MQTT2_CLIENT bumperIP:bumperMQTT-Port
attr myEcovacsClient clientId irgendwas@bumper/GLB19396e86
attr myEcovacsClient username hierhabichdenecovacsaccount
define OZMO MQTT2_DEVICE irgendwas_bumper_GLB19396e86
mit dem Hinweis
ZitatOb clientId u. username genauso aufgebaut sein MÜSSEN, kann ich nicht sagen. Der beschriebene Aufbau funktioniert jedenfalls. Das GLB19396e86 wird bei Euch vermutlich anders sein. Das findet Ihr über die bumper-Logs heraus.
In Deinem xmpp-Log findet sich(vermutlich aus der Anmeldung der App)
Zitat[2020-06-08 18:04:45,877] :: DEBUG :: xmppserver :: xmppserver :: _parse_data :: 706 :: from (192.168.178.35:45602 | fuid_tmpuser@ecouser.net/GLBbe7d18eG9) - <iq xmlns:ns0="com:sf" id="vkq2i-3" to="rl.ecorobot.net" type="set"><query><sf td="bind" dt="Android" token="" app="STQ" /></query></iq>
Damit man nun in den Logs eine Anmeldung aus FHEM einfacher finden kann, solltest Du so definieren
define myEcovacsClient MQTT2_CLIENT 192.168.178.40:8883
attr myEcovacsClient clientId fhemuser@bumper/GLBbe7d18eG9
attr myEcovacsClient username meine@geheimemail.de
define Ozmo950 MQTT2_DEVICE fhemuser_bumper_GLBbe7d18eG9
Vielleicht hilft das schon für die gleichzeitige Nutzung. Zumindest sieht man die Anmeldeversuche im xmpp-log besser u. möglicherweise warum sich die App dann ausklinkt.
Wie sieht es bei Dir mit Know-how zu Zertifikate-Installation auf dem Rpi aus ?
Ja, nachdem ich viel hin und her probiert habe, gebe ich dir recht.
Ich denke mein Fehler war eindeutig kein DNS-Fehler. Problem kommt einfach daher, das ich immer per Fhem
die clientID bb5d3df7-0ec5-4f38-b930-b6e0ed03b963@yna5xi/GMth vom Robo genommen habe.
Daher konnte ich auch ohne ca.crt die Statusmeldungen mitlesen. Insgesamt hat sich aber alles gebissen.
Jetzt kommt ihn Fhem nichts mehr rein. myEcovacsClient ist aber connected. Sowie auch mqtt.fx und die AndroidApp.
Daher gehe ich jetzt davon aus, Fhem braucht ca.crt. Toll wäre wenn man MQTT2_DEVICE oder MQTT2_CLIENT einen Pfad
vom ca.crt mitgeben könnte. Wie gehts da weiter? Muss ca.crt an lokaler Stelle von Fhem abgelegt werden. So kenne ich es
von den SSH-Certs.
Die Devices habe ich in Fhem nach deinem Vorschlag angelegt.
edit:
Nochmal zusammenfassend 3 Basiccommands mit mqtt.fx getestet. Gekürzt ohne header funktioniert.
Start
iot/p2p/clean/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/AlLo/j
{"body": {"data": {"act": "start", "type": "auto"}}}
Stop
iot/p2p/clean/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/AlLo/j
{"body": {"data": {"act": "stop", "type": "auto"}}}
Zurück zur Station
iot/p2p/charge/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/aOdY/j
{"body": {"data": {"act": "go"}}}
Hab jetzt nicht so viel Zeit. Daher nur kurz für Dich die Optionen:
ZitatToll wäre wenn man MQTT2_DEVICE oder MQTT2_CLIENT einen Pfad
vom ca.crt mitgeben könnte.
Das geht eben leider meines Wissens nicht, sondern wir müssen es "allgemein" im Rpi verfügbar machen. Hat den Vorteil, dass Du alle Befehle(set/get) später aus den readingslist ableiten kannst.
Das geht aber auch aus dem bumper-mqtt-Log. Ist halt nur unübersichtlicher. Wenn Du den etwas beschwerlicheren Weg(Befehlsanalyse) gehen willst könnten wir direkt auf die FHEM-mqtt2-Server-Variante umsteigen. Dafür ist nur(bin nicht ganz sicher)
ZitatMuss ca.crt an lokaler Stelle von Fhem abgelegt werden
die einfachere Vorgehensweise. Dann ist bumper useless u. alles läuft in FHEM. :)
Ok,
in Bezug auf deine Antwort und deinem Post hier https://forum.fhem.de/index.php/topic,103717.0.html
betreibe ich mal etwas Brainstorming ;D
Nabend,
so Bumper läuft nu eigentlich rock-solid auf Windows10. Nu kam ich nach Hause, zack Desktop an und alles läuft außer mal wieder die App ;D
Da haben die doch am 8ten eine neue App (V1.5.0) rausgebracht. Die ist wohl nicht mehr kompatibel... Downgrade auf 1.4.5 und alles wieder gut.
So, wie gesagt. Habe MQTT2_CLIENT und die MQTT2_DEVICE wie von dir empfohlen angelegt. Plus autocreate bei MQTT2_Client erweitert.
Nun legt MQTT2_DEVICE readingList satt an und man kann picken.
edit:
Die "subscribes" sind zwar immer mit helperbot zugepflastert. Aber man sieht schon ganz gut, wie es aussehen soll.
Hier nochmal ein list vom Ozmo950. Start,Stop und goCharging funktioniert so aus Fhem. Bumper läuft sauber. Handyapp auch. Sowie auch
MQTT.fx.
Internals:
CFGFN
CID fhemuser_bumper_GLBbe7d18eG9
DEF fhemuser_bumper_GLBbe7d18eG9
DEVICETOPIC Ozmo950
FUUID 5edff09c-f33f-86cf-6be4-109fdc00d79bf438
IODev myEcovacsClient
LASTInputDev myEcovacsClient
MSGCNT 855
NAME Ozmo950
NR 430
STATE goCharging
TYPE MQTT2_DEVICE
myEcovacsClient_MSGCNT 855
myEcovacsClient_TIME 2020-06-09 23:48:35
JSONMAP:
body_data_area CleaningArea
body_data_cid 0
body_data_cleanState_id 0
body_data_cleanState_motionState CleaningState
body_data_cleanState_router 0
body_data_cleanState_type 0
body_data_code Systemcode
body_data_isCharging Charging
body_data_isLow 0
body_data_mode 0
body_data_speed Speed
body_data_start LastStart
body_data_state 0
body_data_time 0
body_data_trigger Trigger
body_data_type CleaningMode
body_data_value BatteryState
header_fwVer Firmware
header_hwVer Hardware
header_pri 0
header_ts 0
header_tzm 0
header_ver Version
OLDREADINGS:
READINGS:
2020-06-09 23:48:10 body_code 0
2020-06-09 23:47:22 body_data_1 chargePos
2020-06-09 23:47:19 body_data_1_left 8558
2020-06-09 23:47:19 body_data_1_total 9000
2020-06-09 23:47:19 body_data_1_type sideBrush
2020-06-09 23:47:22 body_data_2 deebotPos
2020-06-09 23:47:19 body_data_2_left 17589
2020-06-09 23:47:19 body_data_2_total 18000
2020-06-09 23:47:19 body_data_2_type brush
2020-06-09 23:47:19 body_data_3 heap
2020-06-09 23:47:19 body_data_3_left 6789
2020-06-09 23:47:19 body_data_3_total 7200
2020-06-09 23:47:19 body_data_3_type heap
2020-06-09 23:48:09 body_data_act go
2020-06-09 23:47:18 body_data_amount 2
2020-06-09 23:47:58 body_data_area 0
2020-06-09 23:48:35 body_data_cellHeight 8
2020-06-09 23:48:35 body_data_cellWidth 8
2020-06-09 23:47:58 body_data_chargePos_1_a -96
2020-06-09 23:47:58 body_data_chargePos_1_x 108
2020-06-09 23:47:58 body_data_chargePos_1_y 335
2020-06-09 23:47:59 body_data_cid 194136254
2020-06-09 23:47:41 body_data_cleanState_id 122
2020-06-09 23:47:41 body_data_cleanState_motionState working
2020-06-09 23:47:41 body_data_cleanState_router plan
2020-06-09 23:47:41 body_data_cleanState_type auto
2020-06-09 23:47:22 body_data_connections 1
2020-06-09 23:47:58 body_data_content
2020-06-09 23:47:21 body_data_count 0
2020-06-09 23:48:27 body_data_deebotPos_a 79
2020-06-09 23:48:27 body_data_deebotPos_invalid 0
2020-06-09 23:48:27 body_data_deebotPos_x 93
2020-06-09 23:48:27 body_data_deebotPos_y 209
2020-06-09 23:47:22 body_data_enable 0
2020-06-09 23:47:19 body_data_end 8:0
2020-06-09 23:47:20 body_data_info_1_built 1
2020-06-09 23:47:20 body_data_info_1_index 2
2020-06-09 23:47:20 body_data_info_1_mid 409307405
2020-06-09 23:47:20 body_data_info_1_name
2020-06-09 23:47:20 body_data_info_1_status 0
2020-06-09 23:47:20 body_data_info_1_using 1
2020-06-09 23:48:29 body_data_isCharging 1
2020-06-09 23:47:18 body_data_isLow 0
2020-06-09 23:47:58 body_data_mapCount 8
2020-06-09 23:48:35 body_data_mid 409307405
2020-06-09 23:48:29 body_data_mode slot
2020-06-09 23:47:22 body_data_msid 12
2020-06-09 23:47:22 body_data_mssid 2
2020-06-09 23:48:35 body_data_pieceHeight 100
2020-06-09 23:48:35 body_data_pieceIndex 36
2020-06-09 23:48:35 body_data_pieceValue XQAABAAQJwAAAADr/JAmujyigNPJbSFEeQbKyFyrjitppePcZaXgADxVankXmL8cKu1pjNVYEqf5PZl3yd4m1GdyxDqeqYXjamWZwMijeMSN8XNRAf+5R86VwNWUbQxBq10VVFu6JBkCtsP3uDZJxq5SBPZfXm6hDfid1wbvk3c0/X9Ep6MAm3Aikl3dy/Il+kVS8LA4s0sVcd3UGMC+4Md1YAEq9f10SHmIvknteiQhlsVplwPbsMoygqP2eTr/HFurGD7BcRfkHLZRe6aK5wL1N/ns/e3sOxyhVLI1AGwDrR8uwKORkEVRLkqC64DEkoIQXlV5mNm4f4xZiMuVSrH8Fq6kvnDTqmLauO8hTjecpoZI3eM4VbVD5Ow0mapNP+xExsSrPE9gjxNZzdaghbdb1hSdJNBrOM38CnW1UcNa5j5t1+M5ELj0RDGqOKMLmhnvKbHNvky3ZusbYBw3yl0kvVSlgZgwnbaqOUCldZ27I+oUgnHWFFWa7Oui+89wijAaw6A=
2020-06-09 23:48:35 body_data_pieceWidth 100
2020-06-09 23:48:35 body_data_pixel 50
2020-06-09 23:47:59 body_data_pointCount 26
2020-06-09 23:48:31 body_data_speed 0
2020-06-09 23:47:58 body_data_start 1591739251
2020-06-09 23:48:31 body_data_state idle
2020-06-09 23:47:58 body_data_stop 1
2020-06-09 23:47:58 body_data_stopReason 2
2020-06-09 23:47:21 body_data_subsets_1_mssid 0
2020-06-09 23:47:21 body_data_subsets_2_mssid 1
2020-06-09 23:47:21 body_data_subsets_3_mssid 2
2020-06-09 23:47:22 body_data_subtype 0
2020-06-09 23:47:59 body_data_tid 830914
2020-06-09 23:47:58 body_data_time 24
2020-06-09 23:47:59 body_data_totalCount 26
2020-06-09 23:47:59 body_data_traceStart 0
2020-06-09 23:47:59 body_data_traceValue XQAABACCAAAAAAOANtGGvcJezzwkLihiISA0VDwc4Jpoc6X0KgIUs7uFm99WPdqpMDhqZDlBlf/EPjTeA8QeL5YN/8jK7vpjTnzvbbfuWh8/FcXdfrMm8Q==
2020-06-09 23:48:31 body_data_trigger app
2020-06-09 23:48:35 body_data_type ol
2020-06-09 23:48:35 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,1295764014,1230481819,312981242,1295764014,1295764014,1295764014,1295764014,1295764014,762056063,1190810510,3556018313,1295764014,1295764014,1295764014,1295764014,1295764014,1059354835,2987298699,3065753293,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014
2020-06-09 23:48:10 body_msg ok
2020-06-09 23:48:35 header_fwVer 1.7.9
2020-06-09 23:48:35 header_hwVer 0.1.1
2020-06-09 23:48:35 header_pri 1
2020-06-09 23:48:35 header_ts 1591739312221
2020-06-09 23:48:35 header_tzm 480
2020-06-09 23:48:35 header_ver 0.0.1
2020-06-09 23:48:09 state goCharging
Attributes:
IODev myEcovacsClient
autocreate 0
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_cleanState_id:0 body_data_cleanState_motionState:CleaningState body_data_cleanState_router:0 body_data_cleanState_type:0
readingList fhemuser_bumper_GLBbe7d18eG9:iot/atr/onSleep/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/atr/onChargeState/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getAdvancedMode/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/akVf/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getAdvancedMode/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/akVf/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getCleanInfo/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/rMjD/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMapState/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/pFeX/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getBattery/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/uzGw/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getCleanInfo/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/rMjD/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getChargeState/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/qLNp/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMapState/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/pFeX/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getStats/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/uExm/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getWaterInfo/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/RKYT/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getBattery/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/uzGw/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getChargeState/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/qLNp/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getStats/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/uExm/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getBlock/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/idRq/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getWaterInfo/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/RKYT/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getBreakPoint/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/BoQN/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getError/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/KdlE/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getBlock/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/idRq/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getRelocationState/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/NkfP/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getBreakPoint/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/BoQN/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getSleep/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/Wsau/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getSched/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/aijG/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getError/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/KdlE/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getRelocationState/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/NkfP/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getSleep/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/Wsau/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getSched/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/aijG/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getLifeSpan/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/BiRV/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getCachedMapInfo/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/Asme/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMajorMap/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/GJZN/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getChargeState/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/Lqsb/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getLifeSpan/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/BiRV/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getPos/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/fQCz/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getCachedMapInfo/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/Asme/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMajorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/GJZN/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getChargeState/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/Lqsb/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getPos/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/fQCz/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMinorMap/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/VtgE/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMinorMap/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/rShL/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMinorMap/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/EZJC/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMinorMap/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/yUaq/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMinorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/VtgE/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMinorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/rShL/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMinorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/EZJC/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMinorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/yUaq/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getCleanInfo/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/mhqw/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getPos/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/iPmJ/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMapTrace/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/rBJL/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getCleanInfo/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/mhqw/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMapSet/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/CVeG/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMapSet/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/RTHf/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getPos/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/iPmJ/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMapSet/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/cJIA/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMapTrace/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/rBJL/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMapSet/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/CVeG/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMapSet/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/RTHf/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/clean/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/TUSV/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMapSet/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/cJIA/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getChargeState/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/WwIx/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/atr/onCleanInfo/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getPos/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/SEKb/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/clean/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/TUSV/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMapSubSet/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/pcha/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getChargeState/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/WwIx/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMapSubSet/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/JnLy/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMapSubSet/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/UWKb/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getPos/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/SEKb/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMapSubSet/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/pcha/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMapSubSet/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/JnLy/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/atr/onMapTrace/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/getMapSubSet/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/UWKb/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/atr/reportStats/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/atr/onMajorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/atr/onMinorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/atr/onStats/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/atr/onPos/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/clean/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/AlLo/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/atr/reportPos/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/atr/reportMajorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/atr/reportMinorMap/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/atr/reportMapTrace/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/atr/onSpeed/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/clean/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/AlLo/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/charge/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/aOdY/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:iot/p2p/charge/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/helperbot/bumper/helperbot/p/aOdY/j:.* { json2nameValue($EVENT) }
setList startCleaning:noArg iot/p2p/clean/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/AlLo/j {"body": {"data": {"act": "start", "type": "auto"}}}
pauseCleaning:noArg iot/p2p/clean/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/AlLo/j {"body": {"data": {"act": "stop", "type": "auto"}}}
goCharging:noArg iot/p2p/charge/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/aOdY/j {"body": {"data": {"act": "go"}}}
edit:
Ich würde jetzt vorschlagen, das erst die Readings gesäubert werden, bevor wir auf die "Standalone Version" switchen.
Es gibt einige (denk ich), die lieber Bumper(n) wegen App. Und der Rest steht auf Hardcore Minimalismus.
Hier nochmal angepasster. Devicetopic gesetzt. Mit deiner readingsList passend zum Bot. Setlist von mir zum Helperbot.
Internals:
CFGFN
CID fhemuser_bumper_GLBbe7d18eG9
DEF fhemuser_bumper_GLBbe7d18eG9
DEVICETOPIC bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
FUUID 5edff09c-f33f-86cf-6be4-109fdc00d79bf438
IODev myEcovacsClient
LASTInputDev myEcovacsClient
MSGCNT 981
NAME Ozmo950
NR 430
STATE startCleaning
TYPE MQTT2_DEVICE
myEcovacsClient_MSGCNT 981
myEcovacsClient_TIME 2020-06-10 00:09:50
JSONMAP:
body_data_area CleaningArea
body_data_cid 0
body_data_cleanState_id 0
body_data_cleanState_motionState CleaningState
body_data_cleanState_router 0
body_data_cleanState_type 0
body_data_code Systemcode
body_data_isCharging Charging
body_data_isLow 0
body_data_mode 0
body_data_speed Speed
body_data_start LastStart
body_data_state 0
body_data_time 0
body_data_trigger Trigger
body_data_type CleaningMode
body_data_value BatteryState
header_fwVer Firmware
header_hwVer Hardware
header_pri 0
header_ts 0
header_tzm 0
header_ver Version
OLDREADINGS:
READINGS:
2020-06-10 00:09:47 Charging 0
2020-06-10 00:07:43 CleaningArea 0
2020-06-10 00:07:43 CleaningMode auto
2020-06-10 00:09:41 CleaningState working
2020-06-10 00:09:47 Firmware 1.7.9
2020-06-10 00:09:47 Hardware 0.1.1
2020-06-10 00:07:43 LastStart 1591740454
2020-06-10 00:08:27 Speed 0
2020-06-10 00:09:41 Trigger app
2020-06-10 00:09:47 Version 0.0.1
2020-06-10 00:09:50 onMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591740587571","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,1295764014,3777462003,2581981798,1295764014,1295764014,1295764014,1295764014,1295764014,762056063,3233230117,4073597134,1295764014,1295764014,1295764014,1295764014,1295764014,1059354835,2987298699,3065753293,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014","type":"ol"}}}
2020-06-10 00:09:41 onMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591740578572","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"tid":"60019","totalCount":0,"traceStart":0,"pointCount":0,"traceValue":""}}}
2020-06-10 00:09:50 onMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591740587576","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceIndex":36,"pieceValue":"XQAABAAQJwAAAADr/JAmujyigNPJbSFEeQbKyFyrjitppePcZaXgADxVankXmL8cKu1pjNVYEqg14C2p+yMLi5kNjOO9BAhZcjo2RpzmfcTd5kS5IRl0EevNfHlavj9cZmzSufqMfF0OzVVcoitRlOLq/2qWfLO9Q+PG1GN319b7l2+Px48Qm3Wily05Viufn2fjy3gDlTxZUjb8YHNLQ0g/miwHkN2tZhi17NDc06Bcb4aDWuMvf3MemAJo/VLwz3rxq48RucFlpGi3nPxcCtrRPOqf3MVyekIDSCPnRIUmJQcoQIGHDfNzuT2zQMOTmsIEcDHTDF/Nl7y7XkFsw2e1/A3wwBVlC2hYrLcQBm6PzToP7Mnj864F0UsSLjC2Etq32aGLaZ72Vi4BUt3K5MfaxGIq1UrMWtUqFA7yYU6i91uPqB9OAndCf6xVfQBYFrRWEHf2AgkCNHHDCESlolv8rHaStnkGS5gBcd72QY/lqh8LTGcRkwdELjnfd9vYiA=="}}}
2020-06-10 00:08:23 onPos {"header":{"pri":1,"tzm":480,"ts":"1591740500572","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"deebotPos":{"x":97,"y":205,"a":80,"invalid":0}}}}
2020-06-10 00:08:05 reportMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591740482238","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"2104098715","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,1295764014,3418474252,2037781630,1295764014,1295764014,1295764014,1295764014,1295764014,762056063,3414245836,3793518125,1295764014,1295764014,1295764014,1295764014,1295764014,1059354835,2987298699,3065753293,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-06-10 00:08:05 reportMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591740482254","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"2104098715","tid":"535552","totalCount":38,"traceStart":0,"pointCount":38,"traceValue":"XQAABAC+AAAAAAJ//DPpl9EmhKPjaHiJj+m7dRSRX6UyOsfBs3eAkUON90HNlNvzclsOCrKpNilFr2E/S6ql/2v8HiM8woWIaV6e9lUSvLva/p/yYmTGziqr2A0/dEoeOoGu0bOQbOMpvRCQ4cGJ3YxI0wrO"}}}
2020-06-10 00:08:05 reportMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591740482244","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"2104098715","pieceIndex":44,"pieceValue":"XQAABAAQJwAAAADn/IIPLMU8VPh/ykiO9Xcz6ugDG5QqOp9a7yUlUsR8ZkSBLf/bUDgMzA9mPEhtKK5CjKGUzkOSrE8cU2ig8R3KMbNUHtBAMLeYijfVxjTk/duDPFBq8II4n3IEgjqYnVZlPvpZt0LZFxVx6JXJBdp/WX+0Axz2H3YjwVAesxABto+7V15Vryqx"}}}
2020-06-10 00:08:05 reportPos {"header":{"pri":1,"tzm":480,"ts":"1591740482236","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"2104098715","chargePos":[{"x":107,"y":337,"a":-98}],"deebotPos":{"x":-909,"y":426,"a":142}}}}
2020-06-10 00:08:05 reportStats {"header":{"pri":1,"tzm":480,"ts":"1591740482235","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"2104098715","type":"auto","stop":1,"mapCount":8,"area":0,"time":27,"start":"1591740454","content":"","stopReason":2}}}
2020-06-10 00:09:40 state startCleaning
Attributes:
IODev myEcovacsClient
autocreate 0
devicetopic bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
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_cleanState_id:0 body_data_cleanState_motionState:CleaningState body_data_cleanState_router:0 body_data_cleanState_type:0
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) }
setList startCleaning:noArg iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/AlLo/j {"body": {"data": {"act": "start", "type": "auto"}}}
pauseCleaning:noArg iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/AlLo/j {"body": {"data": {"act": "stop", "type": "auto"}}}
goCharging:noArg iot/p2p/charge/helperbot/bumper/helperbot/$DEVICETOPIC/q/aOdY/j {"body": {"data": {"act": "go"}}}
funktioniert das jetzt ohne Zertifikat ? :-\
dann die readinglist um das ergänzen:
iot/p2p/charge/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/charge/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/clean/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getAdvancedMode/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getAdvancedMode/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getBattery/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getBattery/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getBlock/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getBreakPoint/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getBreakPoint/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getCachedMapInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getCachedMapInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getChargeState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getChargeState/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getCleanInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getCleanInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getError/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getError/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getLifeSpan/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getLifeSpan/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMajorMap/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMajorMap/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMapSet/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMapSet/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMapState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMapState/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMapSubSet/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMapSubSet/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMapTrace/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMapTrace/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMinorMap/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMinorMap/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getPos/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getPos/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getRelocationState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getRelocationState/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getSched/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getSched/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getSleep/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getSleep/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getStats/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getStats/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getWaterInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getWaterInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
Damit werden wir Blinden sehender. Aus helperbot/bumper/helperbot/$DEVICETOPIC werden wir die getlist ableiten können. Die responses($DEVICETOPIC/helperbot/bumper/helperbot/) werden uns die Info liefern, um neue Readings bzw. Ausschlüsse festzulegen.
Ja, das funktioniert ohne Zertifikat. Wahrscheinlich benötigt Bumper die nur für den Bot und die App.
Internals:
BUF
CFGFN
DEF 192.168.178.40:8883
DeviceName 192.168.178.40:8883
FD 35
FUUID 5edfedcd-f33f-86cf-a4d2-880214e1fca31d1b
NAME myEcovacsClient
NR 367
PARTIAL
SSL 1
STATE opened
TYPE MQTT2_CLIENT
WBCallback
clientId fhemuser@bumper/GLBbe7d18eG9
lastMsgTime 1591810823.05998
nextOpenDelay 5
READINGS:
2020-06-10 18:59:22 state opened
Attributes:
SSL 1
autocreate simple
clientId fhemuser@bumper/GLBbe7d18eG9
mqttVersion 3.1.1
room Saugroboter
username meine@geheimemail.de
So,
wenn ich den Deebot mit meinen 3 Kommandos (start,stop,zurück) bewege, kommt nix von deinen Subscribes rein.
Erst durchschalten in der App bewegt Bumper oder halt den Bot selber, etwas zu senden. Meine Subscribes und
dein jsonMap habe ich mal rausgenommen. Plus immer delete der alten Readings. Denke mal, es ist übersichtlicher.
Internals:
CFGFN
CID fhemuser_bumper_GLBbe7d18eG9
DEF fhemuser_bumper_GLBbe7d18eG9
DEVICETOPIC bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
FUUID 5edff09c-f33f-86cf-6be4-109fdc00d79bf438
IODev myEcovacsClient
LASTInputDev myEcovacsClient
MSGCNT 1568
NAME Ozmo950
NR 430
STATE pauseCleaning
TYPE MQTT2_DEVICE
myEcovacsClient_MSGCNT 1568
myEcovacsClient_TIME 2020-06-10 19:30:27
OLDREADINGS:
READINGS:
2020-06-10 19:30:27 body_code 0
2020-06-10 19:30:27 body_data_1 chargePos
2020-06-10 19:30:26 body_data_1_left 8554
2020-06-10 19:30:26 body_data_1_total 9000
2020-06-10 19:30:26 body_data_1_type sideBrush
2020-06-10 19:30:27 body_data_2 deebotPos
2020-06-10 19:30:26 body_data_2_left 17586
2020-06-10 19:30:26 body_data_2_total 18000
2020-06-10 19:30:26 body_data_2_type brush
2020-06-10 19:30:26 body_data_3 heap
2020-06-10 19:30:26 body_data_3_left 6786
2020-06-10 19:30:26 body_data_3_total 7200
2020-06-10 19:30:26 body_data_3_type heap
2020-06-10 19:27:40 body_data_act go
2020-06-10 19:30:26 body_data_amount 2
2020-06-10 19:30:26 body_data_area 0
2020-06-10 19:30:26 body_data_cellHeight 8
2020-06-10 19:30:26 body_data_cellWidth 8
2020-06-10 19:30:27 body_data_chargePos_1_a -97
2020-06-10 19:30:27 body_data_chargePos_1_x 118
2020-06-10 19:30:27 body_data_chargePos_1_y 333
2020-06-10 19:30:26 body_data_cid 111
2020-06-10 19:30:27 body_data_connections 1
2020-06-10 19:30:27 body_data_count 0
2020-06-10 19:30:27 body_data_deebotPos_a 82
2020-06-10 19:30:27 body_data_deebotPos_invalid 0
2020-06-10 19:30:27 body_data_deebotPos_x 118
2020-06-10 19:30:27 body_data_deebotPos_y 333
2020-06-10 19:30:26 body_data_enable 0
2020-06-10 19:30:26 body_data_end 8:0
2020-06-10 19:30:26 body_data_info_1_built 1
2020-06-10 19:30:26 body_data_info_1_index 2
2020-06-10 19:30:26 body_data_info_1_mid 409307405
2020-06-10 19:30:26 body_data_info_1_name
2020-06-10 19:30:26 body_data_info_1_status 0
2020-06-10 19:30:26 body_data_info_1_using 1
2020-06-10 19:30:27 body_data_isCharging 1
2020-06-10 19:30:26 body_data_isLow 0
2020-06-10 19:30:27 body_data_mid 409307405
2020-06-10 19:30:27 body_data_mode slot
2020-06-10 19:30:27 body_data_msid 12
2020-06-10 19:30:27 body_data_mssid 2
2020-06-10 19:30:26 body_data_pieceHeight 100
2020-06-10 19:30:26 body_data_pieceIndex 35
2020-06-10 19:30:26 body_data_pieceValue XQAABAAQJwAAAABuPkkBG5Jj06mOnZ67EibiIAx6ND8Co/RNltdjJ20Ac7fJ/IrQHDkh5rw12y8Q0w05dwEnu9bmNGIJ4nUFCIrFTGFyvnGRycU2VEh/NH7ZD9zsaTFsKM2q0XpfqAFCGIdrE3Ee/MATAuacaPQJrhkJsxiqtZO4NtvqVJVyGiE9u9LSotRkUQB40DVRzWOPyPIkEuptTt7oeIY4jopNzONTSHhcOUKgg6rxxf4pGdPPGnxF9E+H+G4PMVt03cgN1xB4iRTuE38AyMFdWLjiwKOrD9a9bR80+9Iw6ADvilOzMKL+LCvaT7ncrFoHMTor80MkvC2QWlQePPXZDX3Ez3CacCVU1ER7tWi6L4VnsxXc87J8y+vUzn2ug0q7sQFQglsxRF7olnEblwCh7EWZEOHSk3ib16yJJOcQs9bY9cYhCc4Vx0x0afVZJZYyyTJecdzqMU4bVys7QAPS6iq8htoQJEDetNl1j2h9259OTcsWNZGB7IyzkseVgrkwHBSrRaz3BdQROC4pWB7h0ZGIYY6Q+C+1zkdqGCOAvrqN9xuJcHf2TWb1+PR6eZ8yOO8f9pdOeH8tWUP8MUMbrIOoTpPppWs7ZOLS2fSFqVKQehir1aHMEf1CFR9oUI0qjtoogg1HZsBd/+dsyd89xq9WwgA+uCPP3QVWtCoOMLJSph5NBkgsueNpJbrmLYLFj1ntc4SDPP5L9N1RIR1PzG3/+FdmzCNlflFdYWflTkyv3hx9zSJjB0Q2bwKFVHDhs4Uw9ltLfOgQHBhTx6g25q8Oi26HewwZj+5vqrWoxbU4xwM0zqYHaqHlXn1M80TgS1NioGrm6jBTUAW2mSEAlJ6hWbgaAihWdNFq/do/CfWNA9NGoz00nYtr5nkge7EWIMRacg9i+V5LxOIb0S6YJr/Q/VaXbPjSqymFAbg6
2020-06-10 19:30:26 body_data_pieceWidth 100
2020-06-10 19:30:26 body_data_pixel 50
2020-06-10 19:30:27 body_data_pointCount 19
2020-06-10 19:30:26 body_data_start 22:0
2020-06-10 19:30:27 body_data_state idle
2020-06-10 19:30:27 body_data_subsets_1_mssid 0
2020-06-10 19:30:27 body_data_subsets_2_mssid 1
2020-06-10 19:30:27 body_data_subsets_3_mssid 2
2020-06-10 19:30:27 body_data_subtype 0
2020-06-10 19:30:27 body_data_tid 540333
2020-06-10 19:30:26 body_data_time 19
2020-06-10 19:30:27 body_data_totalCount 19
2020-06-10 19:30:27 body_data_traceStart 0
2020-06-10 19:30:27 body_data_traceValue XQAABABfAAAAAAT//DDn+4nUJRpy103eBpGqGpNx+AysXzxosWaqlmhAFRUTUsYR374VcFDDrULVC3MXw7WWhtb7XCrnDZYKWNY/
2020-06-10 19:30:27 body_data_trigger app
2020-06-10 19:30:27 body_data_type ar
2020-06-10 19:30:27 body_data_value 5400,-2000;5450,-100;5600,150;5750,200;6550,150;6400,0;6300,-300;6300,-3050;6100,-3150;5950,-3000;5650,-2900;5450,-2050;5400,-2000
2020-06-10 19:30:27 body_msg ok
2020-06-10 19:30:27 header_fwVer 1.7.9
2020-06-10 19:30:27 header_hwVer 0.1.1
2020-06-10 19:30:27 header_pri 1
2020-06-10 19:30:27 header_ts 1591810224203
2020-06-10 19:30:27 header_tzm 480
2020-06-10 19:30:27 header_ver 0.0.1
2020-06-10 19:25:54 state pauseCleaning
Attributes:
IODev myEcovacsClient
autocreate 0
devicetopic bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
readingList iot/p2p/charge/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/charge/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/clean/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getAdvancedMode/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getAdvancedMode/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getBattery/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getBattery/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getBlock/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getBreakPoint/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getBreakPoint/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getCachedMapInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getCachedMapInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getChargeState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getChargeState/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getCleanInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getCleanInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getError/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getError/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getLifeSpan/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getLifeSpan/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMajorMap/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMajorMap/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMapSet/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMapSet/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMapState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMapState/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMapSubSet/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMapSubSet/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMapTrace/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMapTrace/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMinorMap/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getMinorMap/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getPos/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getPos/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getRelocationState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getRelocationState/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getSched/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getSched/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getSleep/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getSleep/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getStats/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getStats/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getWaterInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* { json2nameValue($EVENT) }
iot/p2p/getWaterInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* { json2nameValue($EVENT) }
room Saugroboter
setList startCleaning:noArg iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/AlLo/j {"body": {"data": {"act": "start", "type": "auto"}}}
pauseCleaning:noArg iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/AlLo/j {"body": {"data": {"act": "stop", "type": "auto"}}}
goCharging:noArg iot/p2p/charge/helperbot/bumper/helperbot/$DEVICETOPIC/q/aOdY/j {"body": {"data": {"act": "go"}}}
ZitatJa, das funktioniert ohne Zertifikat.
Genau sowas wollte ich für eine Schritt-für-Schritt-Anleitung herausfinden ;)
Zitatwenn ich den Deebot mit meinen 3 Kommandos (start,stop,zurück) bewege, kommt nix von deinen Subscribes rein.
Schon klar. Das sind alles "gets" aus der App u. die responses des bots. Ein set Befehl löst nicht mehr als ein ok aus.
Wo sind die iot/attr/... geblieben ? ??? Das sind die topics, die der bot ohne Befehl, also nach Lust u. Laune raushaut.
Und das jsonMap ? Das brauchen wir doch auch.
Und natürlich(hatte ich vergessen ::)) müssen wieder readingnamen rein
iot/p2p/charge/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* charge_p
iot/p2p/clean/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* clean_p
iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* clean_q
iot/p2p/getAdvancedMode/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getAdvancedMode_p
iot/p2p/getAdvancedMode/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getAdvancedMode_q
iot/p2p/getBattery/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getBattery_p
iot/p2p/getBattery/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getBattery_q
iot/p2p/getBlock/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getBlock_p
iot/p2p/getBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getBlock_q
iot/p2p/getBreakPoint/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getBreakPoint_p
iot/p2p/getBreakPoint/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getBreakPoint_q
iot/p2p/getCachedMapInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getCachedMapInfo_p
iot/p2p/getCachedMapInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getCachedMapInfo_q
iot/p2p/getChargeState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getChargeState_p
iot/p2p/getChargeState/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getChargeState_q
iot/p2p/getCleanInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* CleanInfo_p
iot/p2p/getCleanInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* CleanInfo_q
iot/p2p/getError/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getError_p
iot/p2p/getError/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getError_q
iot/p2p/getLifeSpan/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getLifeSpan_p
iot/p2p/getLifeSpan/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getLifeSpan_q
iot/p2p/getMajorMap/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMajorMap_p
iot/p2p/getMajorMap/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getMajorMap_q
iot/p2p/getMapSet/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMapSet_p
iot/p2p/getMapSet/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getMapSet_q
iot/p2p/getMapState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMapState_p
iot/p2p/getMapState/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getMapState_q
iot/p2p/getMapSubSet/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMapSubSet_q
iot/p2p/getMapSubSet/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getMapSubSet_p
iot/p2p/getMapTrace/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMapTrace_q
iot/p2p/getMapTrace/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getMapTrace_p
iot/p2p/getMinorMap/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMinorMap_p
iot/p2p/getMinorMap/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getMinorMap_q
iot/p2p/getPos/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getPos_q
iot/p2p/getPos/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getPos_p
iot/p2p/getRelocationState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getRelocationState_p
iot/p2p/getRelocationState/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getRelocationState_q
iot/p2p/getSched/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getSched_q
iot/p2p/getSched/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getSched_p
iot/p2p/getSleep/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getSleep_p
iot/p2p/getSleep/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getSleep_q
iot/p2p/getStats/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getStats_p
iot/p2p/getStats/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getStats_q
iot/p2p/getWaterInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getWaterInfo_p
iot/p2p/getWaterInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getWaterInfo_q
Damit müsstest Du nochmal in die App...
So update
Internals:
CFGFN
CID fhemuser_bumper_GLBbe7d18eG9
DEF fhemuser_bumper_GLBbe7d18eG9
DEVICETOPIC bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
FUUID 5edff09c-f33f-86cf-6be4-109fdc00d79bf438
IODev myEcovacsClient
LASTInputDev myEcovacsClient
MSGCNT 2296
NAME Ozmo950
NR 430
STATE pauseCleaning
TYPE MQTT2_DEVICE
myEcovacsClient_MSGCNT 2296
myEcovacsClient_TIME 2020-06-10 21:57:50
JSONMAP:
body_data_area CleaningArea
body_data_cid 0
body_data_cleanState_id 0
body_data_cleanState_motionState CleaningState
body_data_cleanState_router 0
body_data_cleanState_type 0
body_data_code Systemcode
body_data_isCharging Charging
body_data_isLow 0
body_data_mode 0
body_data_speed Speed
body_data_start LastStart
body_data_state 0
body_data_time 0
body_data_trigger Trigger
body_data_type CleaningMode
body_data_value BatteryState
header_fwVer Firmware
header_hwVer Hardware
header_pri 0
header_ts 0
header_tzm 0
header_ver Version
OLDREADINGS:
READINGS:
2020-06-10 21:55:23 BatteryState 99
2020-06-10 21:57:15 Charging 1
2020-06-10 21:55:09 CleanInfo_p {"header":{"pri":1,"tzm":480,"ts":"1591818905979","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"trigger":"app","state":"clean","cleanState":{"id":"122","router":"plan","type":"auto","motionState":"working"}},"code":0,"msg":"ok"}}
2020-06-10 21:55:09 CleanInfo_q {"header": {"ts": "1591818909265", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:25 CleaningArea 0
2020-06-10 21:55:25 CleaningMode auto
2020-06-10 21:55:42 CleaningState pause
2020-06-10 21:57:47 Firmware 1.7.9
2020-06-10 21:57:47 Hardware 0.1.1
2020-06-10 21:55:25 LastStart 1591818921
2020-06-10 21:57:17 Speed 0
2020-06-10 21:57:47 Systemcode 1065
2020-06-10 21:57:47 Trigger app
2020-06-10 21:57:47 Version 0.0.1
2020-06-10 21:55:57 charge_p {"body": {"data": {"act": "go"}}, "header": {"ts": "1591818957441", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:43 clean_p {"header":{"pri":1,"tzm":480,"ts":"1591818939645","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok"}}
2020-06-10 21:55:42 clean_q {"body": {"data": {"act": "pause"}}, "header": {"ts": "1591818942949", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:06 getAdvancedMode_p {"header":{"pri":1,"tzm":480,"ts":"1591818903424","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"enable":1}}}
2020-06-10 21:55:06 getAdvancedMode_q {"header": {"ts": "1591818906679", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:07 getBattery_p {"header":{"pri":1,"tzm":480,"ts":"1591818903904","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"value":100,"isLow":0}}}
2020-06-10 21:55:07 getBattery_q {"header": {"ts": "1591818907095", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:07 getBlock_p {"header":{"pri":1,"tzm":480,"ts":"1591818904501","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"enable":0,"start":"22:0","end":"8:0"}}}
2020-06-10 21:55:07 getBlock_q {"header": {"ts": "1591818907115", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:07 getBreakPoint_p {"header":{"pri":1,"tzm":480,"ts":"1591818904554","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"enable":0},"code":0,"msg":"ok"}}
2020-06-10 21:55:07 getBreakPoint_q {"header": {"ts": "1591818907119", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:08 getCachedMapInfo_p {"header":{"pri":1,"tzm":480,"ts":"1591818905246","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"enable":0,"info":[{"mid":"409307405","index":2,"status":0,"using":1,"built":1,"name":""}]}}}
2020-06-10 21:55:08 getCachedMapInfo_q {"header": {"ts": "1591818907145", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:08 getChargeState_p {"header":{"pri":1,"tzm":480,"ts":"1591818905309","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"isCharging":0,"mode":"slot"}}}
2020-06-10 21:55:08 getChargeState_q {"header": {"ts": "1591818907570", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:08 getError_p {"header":{"pri":1,"tzm":480,"ts":"1591818904631","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"code":[0]}}}
2020-06-10 21:55:07 getError_q {"header": {"ts": "1591818907123", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:08 getLifeSpan_p {"header":{"pri":1,"tzm":480,"ts":"1591818905126","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":[{"type":"sideBrush","left":8554,"total":9000},{"type":"brush","left":17586,"total":18000},{"type":"heap","left":6786,"total":7200}]}}
2020-06-10 21:55:08 getLifeSpan_q {"body": {"data": ["brush", "sideBrush", "heap"]}, "header": {"ts": "1591818907140", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:08 getMajorMap_p {"header":{"pri":1,"tzm":480,"ts":"1591818905523","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","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,1295764014,3462536397,4027194052,1295764014,1295764014,1295764014,1295764014,1295764014,762056063,279370996,261404429,1295764014,1295764014,1295764014,1295764014,1295764014,1059354835,2987298699,3065753293,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014"}}}
2020-06-10 21:55:08 getMajorMap_q {"header": {"ts": "1591818907728", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:09 getMapSet_p {"header":{"pri":1,"tzm":480,"ts":"1591818906377","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"type":"mw","count":0,"mid":"409307405","subsets":[]}}}
2020-06-10 21:55:09 getMapSet_q {"body": {"data": {"mid": "409307405", "type": "mw"}}, "header": {"ts": "1591818909340", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:07 getMapState_p {"header":{"pri":1,"tzm":480,"ts":"1591818903850","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"state":"built"}}}
2020-06-10 21:55:07 getMapState_q {"header": {"ts": "1591818907091", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:10 getMapSubSet_p {"body": {"data": {"mid": "409307405", "msid": "18", "mssid": "2", "type": "ar"}}, "header": {"ts": "1591818910017", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:10 getMapSubSet_q {"header":{"pri":1,"tzm":480,"ts":"1591818906806","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"type":"ar","mssid":"2","value":"5400,-2000;5450,-100;5600,150;5750,200;6550,150;6400,0;6300,-300;6300,-3050;6100,-3150;5950,-3000;5650,-2900;5450,-2050;5400,-2000","subtype":"0","connections":"1","mid":"409307405"}}}
2020-06-10 21:55:09 getMapTrace_p {"body": {"data": {"pointCount": 200, "traceStart": 0}}, "header": {"ts": "1591818909279", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:09 getMapTrace_q {"header":{"pri":1,"tzm":480,"ts":"1591818906119","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"tid":"382808","totalCount":0,"traceStart":0,"pointCount":200}}}
2020-06-10 21:48:39 getMinorMap_p {"header":{"pri":1,"tzm":480,"ts":"1591818516388","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"mid":"409307405","pieceIndex":36,"pieceValue":"XQAABAAQJwAAAADr/JAPmaQ//IYS31S5lfNMb6XZcrnBUqDinD3ai/A/b03hv6urQfvuC6cwxENjqDLorsNc/kYBZzp8b5gPHNyc4SdNR5noSVwqll1COBDbtFQswD4p+8qkKQOgfplkG1txj0fTPhIpn1VeLFy7my4oAeMChXyE9ukvIdn6quWm6bZDO66lu3EWYC3qKLusFI5oOSdGgqkSDJCSJ4w7HvxFK5bdlbaKByWatNwsejWpp4Udgic7Q3tnQde316JYJjekaGZKJwyvUT0JezpYVqZnx3mx+NIdMD/TJnt86MGk8eDqve+hIJigLdwrPlfnb+Eb9GWd7lRfsXgNLW6R4A==","type":"ol"}}}
2020-06-10 21:48:39 getMinorMap_q {"body": {"data": {"mid": "409307405", "pieceIndex": 36, "type": "ol"}}, "header": {"ts": "1591818518083", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:09 getPos_p {"body": {"data": ["chargePos", "deebotPos"]}, "header": {"ts": "1591818909271", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:09 getPos_q {"header":{"pri":1,"tzm":480,"ts":"1591818906033","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"chargePos":[{"x":108,"y":328,"a":-97}],"deebotPos":{"x":108,"y":328,"a":82,"invalid":1}}}}
2020-06-10 21:55:08 getRelocationState_p {"header":{"pri":1,"tzm":480,"ts":"1591818904860","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":20003,"msg":"device do not support get,temporarily"}}
2020-06-10 21:55:08 getRelocationState_q {"header": {"ts": "1591818907127", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:08 getSched_p {"header": {"ts": "1591818907136", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:08 getSched_q {"header":{"pri":1,"tzm":480,"ts":"1591818904924","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":[]}}
2020-06-10 21:55:08 getSleep_p {"header":{"pri":1,"tzm":480,"ts":"1591818904773","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"enable":0}}}
2020-06-10 21:55:08 getSleep_q {"header": {"ts": "1591818907131", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:07 getStats_p {"header":{"pri":1,"tzm":480,"ts":"1591818904256","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"area":0,"time":30,"cid":"111","start":"1591818426","type":"auto"},"code":0,"msg":"ok"}}
2020-06-10 21:55:07 getStats_q {"header": {"ts": "1591818907105", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:55:07 getWaterInfo_p {"header":{"pri":1,"tzm":480,"ts":"1591818904194","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"enable":0,"amount":1}}}
2020-06-10 21:55:07 getWaterInfo_q {"header": {"ts": "1591818907110", "ver": "0.0.22", "pri": 2, "tzm": 120}}
2020-06-10 21:57:47 onCachedMapInfo {"header":{"pri":1,"tzm":480,"ts":"1591819064072","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"enable":0,"info":[{"mid":"409307405","status":0,"index":2,"using":1,"built":1,"name":""}]}}}
2020-06-10 21:57:50 onMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591819066913","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,1295764014,3462536397,4027194052,1295764014,1295764014,1295764014,1295764014,1295764014,762056063,279370996,261404429,1295764014,1295764014,1295764014,1295764014,1295764014,1059354835,2987298699,3065753293,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014","type":"ol"}}}
2020-06-10 21:57:47 onMapState {"header":{"pri":1,"tzm":480,"ts":"1591819063464","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"state":"built"}}}
2020-06-10 21:57:47 onMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591819064077","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"tid":"512776","totalCount":0,"traceStart":0,"pointCount":0,"traceValue":""}}}
2020-06-10 21:57:50 onMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591819066927","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceIndex":44,"pieceValue":"XQAABAAQJwAAAADn/IIPLMU8VPh/ykiO9Xcz6ugDG5QqOp9a7yUlUsR8ZkSBLf/bUDgMzA9mPEhtKK5CjKGUzkOSrE8cU2ig8R3KMbNUHtBAMLeYijfVxjTk/duDPFBq8II4n3IEgjqYnVZlPvpZt0LZFxVx6JXJBdp/WX+0Axz2H3YjwVAesxABto+7V15Vryqx"}}}
2020-06-10 21:57:47 onPos {"header":{"pri":1,"tzm":480,"ts":"1591819064077","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"chargePos":[{"x":108,"y":328,"a":-97}],"deebotPos":{"x":108,"y":328,"a":82,"invalid":1},"mid":"409307405"}}}
2020-06-10 21:57:47 onRelocationState {"header":{"pri":1,"tzm":480,"ts":"1591819061742","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mode":"recover","state":"fail","isHasMap":1}}}
2020-06-10 21:57:47 onSched {"header":{"pri":1,"tzm":480,"ts":"1591819064073","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":[]}}
2020-06-10 21:55:57 reportMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591818954081","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"1653121676","cid":"311590924","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,1295764014,1937656772,592513296,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,2238319027,314248433,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,1295764014","pieceWidth":100,"pieceHeight":100,"cellWidth":8,"cellHeight":8,"pixel":50}}}
2020-06-10 21:55:57 reportMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591818954103","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"311590924","tid":"175540","totalCount":12,"traceStart":0,"pointCount":12,"traceValue":"XQAABAA8AAAAAABonl2aUfy97UzwpR8yvaF9dG9DXR+YUmhpISDN7dlOmkA="}}}
2020-06-10 21:55:57 reportMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591818954089","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"1653121676","cid":"311590924","pieceIndex":36,"pieceValue":"XQAABAAQJwAAAAHpfHXOT3SPnzIzKOXFj78scxwISfySFXIyACX7z7cFWtKwc0Uyfk25oVMpj/dyIVTGHGsp3yvBb7aEWAA="}}}
2020-06-10 21:55:57 reportPos {"header":{"pri":1,"tzm":480,"ts":"1591818954076","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"311590924","deebotPos":{"x":-6,"y":451,"a":72}}}}
2020-06-10 21:55:57 reportStats {"header":{"pri":1,"tzm":480,"ts":"1591818954073","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"311590924","type":"auto","stop":1,"mapCount":4,"area":0,"time":19,"start":"1591818921","content":"","stopReason":2}}}
2020-06-10 21:47:39 state pauseCleaning
Attributes:
IODev myEcovacsClient
autocreate 0
devicetopic bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
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_cleanState_id:0 body_data_cleanState_motionState:CleaningState body_data_cleanState_router:0 body_data_cleanState_type:0
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/charge/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* charge_p
iot/p2p/clean/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* clean_p
iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* clean_q
iot/p2p/getAdvancedMode/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getAdvancedMode_p
iot/p2p/getAdvancedMode/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getAdvancedMode_q
iot/p2p/getBattery/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getBattery_p
iot/p2p/getBattery/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getBattery_q
iot/p2p/getBlock/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getBlock_p
iot/p2p/getBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getBlock_q
iot/p2p/getBreakPoint/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getBreakPoint_p
iot/p2p/getBreakPoint/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getBreakPoint_q
iot/p2p/getCachedMapInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getCachedMapInfo_p
iot/p2p/getCachedMapInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getCachedMapInfo_q
iot/p2p/getChargeState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getChargeState_p
iot/p2p/getChargeState/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getChargeState_q
iot/p2p/getCleanInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* CleanInfo_p
iot/p2p/getCleanInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* CleanInfo_q
iot/p2p/getError/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getError_p
iot/p2p/getError/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getError_q
iot/p2p/getLifeSpan/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getLifeSpan_p
iot/p2p/getLifeSpan/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getLifeSpan_q
iot/p2p/getMajorMap/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMajorMap_p
iot/p2p/getMajorMap/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getMajorMap_q
iot/p2p/getMapSet/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMapSet_p
iot/p2p/getMapSet/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getMapSet_q
iot/p2p/getMapState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMapState_p
iot/p2p/getMapState/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getMapState_q
iot/p2p/getMapSubSet/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMapSubSet_q
iot/p2p/getMapSubSet/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getMapSubSet_p
iot/p2p/getMapTrace/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMapTrace_q
iot/p2p/getMapTrace/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getMapTrace_p
iot/p2p/getMinorMap/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getMinorMap_p
iot/p2p/getMinorMap/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getMinorMap_q
iot/p2p/getPos/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getPos_q
iot/p2p/getPos/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getPos_p
iot/p2p/getRelocationState/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getRelocationState_p
iot/p2p/getRelocationState/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getRelocationState_q
iot/p2p/getSched/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getSched_q
iot/p2p/getSched/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getSched_p
iot/p2p/getSleep/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getSleep_p
iot/p2p/getSleep/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getSleep_q
iot/p2p/getStats/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getStats_p
iot/p2p/getStats/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getStats_q
iot/p2p/getWaterInfo/$DEVICETOPIC/helperbot/bumper/helperbot/p/[^/]+/j:.* getWaterInfo_p
iot/p2p/getWaterInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/[^/]+/j:.* getWaterInfo_q
room Saugroboter
setList startCleaning:noArg iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/AlLo/j {"body": {"data": {"act": "start", "type": "auto"}}}
pauseCleaning:noArg iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/AlLo/j {"body": {"data": {"act": "stop", "type": "auto"}}}
goCharging:noArg iot/p2p/charge/helperbot/bumper/helperbot/$DEVICETOPIC/q/aOdY/j {"body": {"data": {"act": "go"}}}
edit:
Bumper auf Raspi is irgendwie....doof. Beispiel, nicht alle benötigten Packte oder alte Version per "apt-get install python3-{packetname}"
Pip ist da schon besser. Hab es aber immer noch nicht am laufen ....
das sieht doch wieder aufgeräumter aus.
die queries(...._q) könnte man zusammenfassen. Ich seh da nix interessantes, zumal es zukünftig ja keine app gibt, sondern nur die FHEM-gets. Und da müsste man entscheiden, was man im 1. Schritt machen möchte: getBattery_q, getChargeState_q, getError_q, getLifeSpan_q, getSleep_q, getStats_q, getWaterInfo_q. Siehst Du mehr notwendige Info ?
Ich würd das dann wieder zusammenbasteln.
Ja, es kommen noch Infos dazu. Saugkraft ist ein Beispiel. Die muss ich noch raussuchen, plus ein paar andere.
Mal ein Beispiel für die Wasserdurchflussmenge für set
iot/p2p/getWaterInfo
"data":{"enable":0,"amount":2}}}
amount 1 = Niedrig
amount 2 = Mittel
amount 3 = Hoch
amount 4 = Sehr hoch
kannst Du mal testen, ob das an Mindestinformationen bei einem einfachen getrequest reicht.
attr Ozmo950 getList Battery:noarg BatteryState iot/p2p/getBattery/helperbot/bumper/helperbot/$DEVICETOPIC/q/2001/j {}
reading getBattery_p müsste sich (zumindest der timestamp) ändern, wenn Du get Ozmo950 Battery ausführst.
Es kommt zwar wie erwartet ein Timeout, aber es wird aktualisiert.
attr Ozmo950 getList Battery:noArg BatteryState iot/p2p/getBattery/helperbot/bumper/helperbot/$DEVICETOPIC/q/2001/j {}
2020-06-11 17:02:49 getBattery_p {"header":{"pri":1,"tzm":480,"ts":"1591887765751","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"value":100,"isLow":0}}}
2020-06-11 17:02:49 getBattery_q {}
prima, dann schieb ich Dir gleich mal einen 1. vollständigen Draft rein.
attr Ozmo950 devicetopic bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
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
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) }
attr Ozmo950 setList Cleaning:auto,border,spot,stop,pause,resume iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/1001/j {"body": {"data": {"act": "$EVTPART1", "type": "auto"}}}
Charging:noArg iot/p2p/charge/helperbot/bumper/helperbot/$DEVICETOPIC/q/1002/j {"body": {"data": {"act": "go"}}}
speed:strong,standard,quiet,max iot/p2p/setCleanSpeed/helperbot/bumper/helperbot/$DEVICETOPIC/q/1003/j {"body": {"data": {"act": "$EVTPART1"}}}
beep:noArg iot/p2p/PlaySound/helperbot/bumper/helperbot/$DEVICETOPIC/q/1004/j {}
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/getCleanSpeed/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 {}
Ich hoffe es sind nicht viele Fehler. :-\ :-[ Ist langsam arg unübersichtlich.
ZitatEs kommt zwar wie erwartet ein Timeout
Ja, der kommt immer, wenn der 2.Parameter des Befehls nicht mit einem reading der readingList matched. Da muss man dann am Ende gucken, wie man das in den Griff bekommt. :(
Ziel ist nun, dass alle requests in LastRequest landen. Ebenso die responses in LastResponse. Diese zusätzlich bei allen (vorerst) uninteressanten Befehlen aus der App in ..._p-readings. Die interessanten sollen zusätzlich konkrete readings befüllen. Das wird nicht komplett richtig funktionieren, weil sich manche readings(Variablenname aus dem Json) überschneiden. Ähnlich werden sich vor allen Dingen die sets falsch verhalten. Insbesondere beim Cleaning ist mir noch nicht klar, wie wir Befehle auto,spot,border gg. stop,pause,resume abgrenzen müssen.
Wenn autocreate etwas in readingList ablegt, dann hab ich das nicht bzw. noch falsch berücksichtigt. Ebenso sollten keine body_..../header_readings mehr auftauchen.
Have fun
Super, teste gleich. Kurze Frage zu autocreate. Das habe ich im MQTT2_DEVICE Ozmo950 deaktiviert.
Da sonst die readingList stetig erweitert wird. Und dann wieder nicht formatierte Readings auftauchen.
Würde ich dann aus lassen. Oder bestehst du auf autocreate 1?
Kannst es ja erst einmal aus lassen, um Übersicht zu haben. Irgendwann wieder einschalten, da so Fehler aufgedeckt werden. Wir sind dann fertig, wenn weder in der readinglist neue Einträge, noch unformatierte readings auftauchen.
Ok, ich schaue.
Zum Thema Spot. Das sieht so aus.
variable=PublishVariableHeader(topic=iot/atr/onStats/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j, packet_id=None), payload=PublishPayload(data='bytearray(b\'{"header":{"pri":1,"tzm":480,"ts":"1591904199527","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"area":1,"time":10,"cid":"111","start":"1591904189","type":"spotArea","content":"0,2"}}}
Area gibt den Spot an. Ich habe gerade 3 = 0,1,2. Also in Etwa so, klappt aber noch nicht
spotAreaCleaning:0,1,2 iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/1002/j {"body": {"data":{"area":$EVTPART1,"time":10,"cid":"111","start":"1591904189","type":"spotArea","content":"0,2"}}}
Frage zu der Zahl 1002. Die habe ich jetzt vergeben, da deine fortlaufend sind. Ist die frei oder sind die vererbt im subscribe?
edit:
Ja die Zahl, da brauch ich eine Erklärung dazu. Da sie wichtig ist.
playSound funktionert nicht, playSound1 funktioniert.
playSound:noArg iot/p2p/PlaySound/helperbot/bumper/helperbot/$DEVICETOPIC/q/1005/j {"body": {"data": {"count": 1, "sid": 30}}}
playSound1:noArg iot/p2p/playSound/helperbot/bumper/helperbot/$DEVICETOPIC/q/srtF/j {"body": {"data": {"count": 1, "sid": 30}}}
Audioausgabe ist "Ich bin hier".
ZitatIst die frei oder sind die vererbt im subscribe?
Die sind grundsätzlich frei. Wird beim request gesetzt und kommt dann bei der response zurück. Dient eigentlich der eindeutigen Zuordnung von response zu request. Meines Erachtens irrelevant. Ich hab die bewusst numerisch als zusätzliche Kennzeichnung gemacht. Liest sich irgendwie einfacher.
ZitatArea gibt den Spot an. Ich habe gerade 3 = 0,1,2.
Ich seh schon, ist dann doch alles ne nummer komplizierter als bei mir. Meiner kennt keine Areas. Ich muss ihn wie einen Hund zur area tragen u. dann starte ich spot-cleaning. ;D Die Größe der area kann ich vorher setzen: 1x1, 2x2, 3x2
(Ok, ich trage ihn nicht, mit FHEM fahre ihn hin. Das probieren wir dann am Schluss mit Deinem. Ist wie Spielzeugeisenbahn spielen. Die App kann das nicht. Edit: die Fb natürlich schon. Und besser :'()
Oben Ergänzung zu der Zahl. irgendwie doch wichtig?
Also zu der Area. Die hat er Bot gebaut. Wenn ich drauf gehe, ist die Karte in 3 Areas von ihm unterteilt.
Möglich das es noch mehr werden können. je nach Größe.
Ich kann dann eine klicken und die fährt er dann auch automatisch an.
Dann gibt es noch customArea. Da muss man dann in der App den Bereich markieren auf der Karte.
Durch ziehen mit dem Finger bildet sich dann eine Area. X,Y egal.
Zitatirgendwie doch wichtig?
Ähmmm
ZitatDie sind grundsätzlich frei. Wird beim request gesetzt und kommt dann bei der response zurück. Dient eigentlich der eindeutigen Zuordnung von response zu request. Meines Erachtens irrelevant. Ich hab die bewusst numerisch als zusätzliche Kennzeichnung gemacht. Liest sich irgendwie einfacher.
okey......es geht....GroßkleinSchreibung ::)
Abends werden die Augen immer kleiner... :) also ja, dann stimmt frei
playSound:noArg iot/p2p/playSound/helperbot/bumper/helperbot/$DEVICETOPIC/q/1005/j {"body": {"data": {"count": 1, "sid": 30}}}
So, optimierte setList.
spotArea funktioniert gut. Man könnte auch mehrere Spots kombinieren über "content". Ich habe erstmal feste Zahlen gesetzt.
{"body": {"data": {"act": "start", "content": "0,1,2", "type": "spotArea"}}}
customArea, würde vorschlagen, lassen wir weg.
Internals:
CFGFN
CID fhemuser_bumper_GLBbe7d18eG9
DEF fhemuser_bumper_GLBbe7d18eG9
DEVICETOPIC bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
FUUID 5edff09c-f33f-86cf-6be4-109fdc00d79bf438
IODev myEcovacsClient
LASTInputDev myEcovacsClient
MSGCNT 9152
NAME Ozmo950
NR 430
STATE ActualStatus: {"body": {"data": {"act": "go"}}}
TYPE MQTT2_DEVICE
myEcovacsClient_MSGCNT 9152
myEcovacsClient_TIME 2020-06-12 12:43:44
JSONMAP:
body_data_amount Water
body_data_area CleaningArea
body_data_cid 0
body_data_code Systemcode
body_data_enable SleepState
body_data_isCharging Charging
body_data_isLow 0
body_data_left Lifetime_total
body_data_mode 0
body_data_speed Speed
body_data_start LastStart
body_data_state 0
body_data_time 0
body_data_trigger Trigger
body_data_type CleaningMode
body_data_value BatteryState
header_fwVer Firmware
header_hwVer Hardware
header_pri 0
header_ts 0
header_tzm 0
header_ver Version
OLDREADINGS:
READINGS:
2020-06-12 12:41:32 BatteryState 99
2020-06-12 12:43:43 Charging 1
2020-06-12 12:41:41 CleaningArea 1
2020-06-12 12:41:41 CleaningMode spotArea
2020-06-12 12:43:44 Firmware 1.7.9
2020-06-12 12:43:44 Hardware 0.1.1
2020-06-12 12:42:56 LastRequest {"body": {"data": {"act": "go"}}}
2020-06-12 12:42:57 LastResponse {"header":{"pri":1,"tzm":480,"ts":"1591958573547","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok"}}
2020-06-12 12:41:41 LastStart 1591958443
2020-06-12 12:43:44 Speed 0
2020-06-12 12:43:44 Trigger app
2020-06-12 12:43:44 Version 0.0.1
2020-06-12 12:41:55 body_data_cid 1468221942
2020-06-12 12:40:52 body_data_cleanState_content 2
2020-06-12 12:40:52 body_data_cleanState_id 122
2020-06-12 12:40:52 body_data_cleanState_motionState working
2020-06-12 12:40:52 body_data_cleanState_router plan
2020-06-12 12:40:52 body_data_cleanState_type spotArea
2020-06-12 12:41:41 body_data_content 2
2020-06-12 12:41:55 body_data_mssid 2
2020-06-12 12:41:55 body_data_saOrder
2020-06-12 12:41:55 body_data_subType 0
2020-06-12 12:41:55 body_data_type ar
2020-06-12 12:41:55 body_data_value 5400,-2000;5450,-100;5600,150;5750,200;6550,150;6400,0;6300,-300;6300,-3050;6100,-3150;5950,-3000;5650,-2900;5450,-2050;5400,-2000
2020-06-12 12:41:55 header_fwVer 1.7.9
2020-06-12 12:41:55 header_hwVer 0.1.1
2020-06-12 12:41:55 header_pri 1
2020-06-12 12:41:55 header_ts 1591958511422
2020-06-12 12:41:55 header_tzm 480
2020-06-12 12:41:55 header_ver 0.0.1
2020-06-12 12:43:43 onMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591958620369","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,1295764014,229369830,4234561734,1295764014,1295764014,1295764014,1295764014,1295764014,4265112824,3773122295,4032897944,1295764014,1295764014,1295764014,1295764014,1295764014,1814140792,2014408815,2860435665,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014","type":"ol"}}}
2020-06-12 12:41:55 onMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591958511374","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"tid":"151438","totalCount":113,"traceStart":110,"pointCount":3,"traceValue":"XQAABAAPAAAAACkAgy4kBZUwIDxs0+EQAIpHAA=="}}}
2020-06-12 12:43:44 onMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591958620372","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceIndex":36,"pieceValue":"XQAABAAQJwAAAADr/JAPiKYid/UhxbsNr0+4I5Awja7FsNc1CVsu5hDM5pBqiz2XxVRQHIr39d5Vnk56J/DIkIsNM1C9Qch9UpduJ6v7wEwUVoHvsR2pXF31jBAJ1Lgo4/Q/+krmrv1JI/ytSKEunuJUxcG95W/LduWSM4YGW6qks0wBkNzxMA87KqgkVdXbbiyHWEDLoMpnuq/wEoUyLK82fKM7Wpl8yU3d/bGBVBHU/4v5RskiAd6SleRU4c9LnrBeNFarsVA5TVpIp4BWBIuK10rBSukw+Q1jhPTLxqGcScD8Vb//lcEA2/XyogYJpJoClkDsG0xcTKDqDhgkuf8vNIW/yfyRAwmEagF0zg2uI7ciPKceuYxOehxCml91MUfkEEvZEa5lG6WK0KdFx5noQk8WaDplc/ip+cQbGlFeToCzTvLpVOuKi4TxGzZPjR5W0F3RB92dv4o="}}}
2020-06-12 12:43:40 onPos {"header":{"pri":1,"tzm":480,"ts":"1591958617374","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"deebotPos":{"x":205,"y":215,"a":82,"invalid":0}}}}
2020-06-12 12:41:55 reportMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591958511394","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"1468221942","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,1295764014,3046533663,851547748,1295764014,1295764014,1295764014,1295764014,1295764014,2707922836,1968182298,2300312982,1295764014,1295764014,1295764014,1295764014,1295764014,4079716952,707369540,2019465932,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-06-12 12:41:55 reportMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591958511421","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1468221942","tid":"151438","totalCount":113,"traceStart":0,"pointCount":113,"traceValue":"XQAABAA1AgAAACu/wMAERV7XhR2hmxrJeIFeMTY2zdBDNmX8ROLE40p6uDoU7K5vRZ8JSoOJDbeGGxfZ1neVdDkfIJTmhY7+GgpBKfpqAIzuCla3IUMBPsxVBN7D1U4Scc3Pt4GzC3/uB6zD6lhkuHFguu8v1eNvOwFc2auPGGKKQiGrkBhE3g91Rz6UovqTlVzQ54nHQwM0j8P5+UmVRCHR3Ukup2oLp3DQ4hdQby9yIKiYhyPLSVqRswBT7ok38hncbg3UIu4ViFLIkN/YrvmhLK6krdlsOHVFgMjNN26tWbeaflSV4Y7I6e7RwebWH2BIMLQCxlFZJv3Tr8S6R0AcCvwu9o64Yx0eh8Xuh/sUEUZqlK/QXVynu80yOPhkebiyhHxdOg7tm5xO8rOOvhtS7ngcn1AAKgkIHoitxNIuewuYvriZdmd8UcQS/pP+fct8id2MFC3gWBPHxcJV6u+xOcwPYcvBK6uxIUhUtsUTc9ID/3b9PRSBVg=="}}}
2020-06-12 12:41:55 reportMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591958511406","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"1468221942","pieceIndex":44,"pieceValue":"XQAABAAQJwAAAADn/IIPLMU8VPh/ykiO9Xcz6ugDG7m8BAMjXhuwhDg3L5MjHvLK1laWSf5aiyRX2XjGqP8+FJFpi/YYM885p04IdIGUMywA4l/nbwhttHhdiPcfKsdAJd/zXwXqhEV4gnMBWuSXh7aAlANFQwg68FkT3gEHFxaWYtKt44PywLKOIJ3B5NrG9A=="}}}
2020-06-12 12:41:55 reportPos {"header":{"pri":1,"tzm":480,"ts":"1591958511392","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1468221942","chargePos":[{"x":217,"y":311,"a":-100}],"deebotPos":{"x":6083,"y":-2016,"a":-2}}}}
2020-06-12 12:41:55 reportStats {"header":{"pri":1,"tzm":480,"ts":"1591958511389","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1468221942","type":"spotArea","stop":1,"mapCount":8,"area":1,"time":69,"start":"1591958443","content":"2","stopReason":2}}}
2020-06-12 12:42:56 state 03_Charging
Attributes:
IODev myEcovacsClient
autocreate 1
devicetopic bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
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 {}
Speed1:noArg iot/p2p/setSpeed/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/TUfV/j {}
Speed:noArg iot/p2p/getSpeed/$DEVICETOPIC/helperbot/bumper/helperbot/g/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 {}
icon Botvac_VR200
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
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) }
fhemuser_bumper_GLBbe7d18eG9:iot/atr/reportMapSubSet/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
room Saugroboter
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 iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/1002/j {"body": {"data": {"act": "start", "content": "$EVTPART1", "type": "spotArea"}}}
03_Charging:noArg iot/p2p/charge/helperbot/bumper/helperbot/$DEVICETOPIC/q/1003/j {"body": {"data": {"act": "go"}}}
04_Speed:1000,0,1,2 iot/p2p/setSpeed/helperbot/bumper/helperbot/$DEVICETOPIC/q/1004/j {"body": {"data": {"speed": $EVTPART1}}}
05_SetWater:1,2,3,4 iot/p2p/setWaterInfo/helperbot/bumper/helperbot/$DEVICETOPIC/q/1005/j {"body": {"data": {"amount": $EVTPART1, "enable": 0}}}
06_PlaySound:noArg iot/p2p/playSound/helperbot/bumper/helperbot/$DEVICETOPIC/q/1006/j {"body": {"data": {"count": 1, "sid": 30}}}
stateFormat ActualStatus: LastRequest
die gets hast Du aber jetzt noch gar nicht ausprobiert, oder ? Mich wundern die body-,header-readings. Z.B. ist body_data_cid über die Jsonmap ausgeschlossen u. body_data_type müsste in einem reading CleaningMode erscheinen. War attr Jsonmap um 12:40/12:41 nicht gesetzt ?
Die gets hatte ich kurz durch. Nicht alle funktinonieren. Hier jetzt im Detail.
gelist
Battery = BatteryState 100
Charging = Charging 1
Cleaning = Timeout...
Error = Timeout
LifeSpan = Timeout
Schedule = etSched_p {"header":{"pri":1,"tzm":480,"ts":"1591979602645","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":[]}}
Sleep = SleepState 1
Speed = Timeout reading answer for HASH(0x4828788)
Statistic = Timeout...
Water = Water 4
edit:
setList erweitert.
Internals:
CFGFN
CID fhemuser_bumper_GLBbe7d18eG9
DEF fhemuser_bumper_GLBbe7d18eG9
DEVICETOPIC bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
FUUID 5edff09c-f33f-86cf-6be4-109fdc00d79bf438
IODev myEcovacsClient
LASTInputDev myEcovacsClient
MSGCNT 14733
NAME Ozmo950
NR 430
STATE ActualStatus: {"body": {"data": {"total": 10, "volume": 10}}, "header": {"tzm": 120}}
TYPE MQTT2_DEVICE
myEcovacsClient_MSGCNT 14733
myEcovacsClient_TIME 2020-06-12 18:04:51
JSONMAP:
body_data_amount Water
body_data_area CleaningArea
body_data_cid 0
body_data_code Systemcode
body_data_enable SleepState
body_data_isCharging Charging
body_data_isLow 0
body_data_left Lifetime_total
body_data_mode 0
body_data_speed Speed
body_data_start LastStart
body_data_state 0
body_data_time 0
body_data_trigger Trigger
body_data_type CleaningMode
body_data_value BatteryState
header_fwVer Firmware
header_hwVer Hardware
header_pri 0
header_ts 0
header_tzm 0
header_ver Version
OLDREADINGS:
READINGS:
2020-06-12 17:48:05 BatteryState 100
2020-06-12 17:48:10 Charging 1
2020-06-12 13:23:24 CleaningArea 20
2020-06-12 13:23:24 CleaningMode spotArea
2020-06-12 17:48:53 Firmware 1.7.9
2020-06-12 17:48:53 Hardware 0.1.1
2020-06-12 18:04:51 LastRequest {"body": {"data": {"total": 10, "volume": 10}}, "header": {"tzm": 120}}
2020-06-12 18:04:51 LastResponse {"header":{"pri":1,"tzm":480,"ts":"1591977888274","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok"}}
2020-06-12 13:23:24 LastStart 1591960002
2020-06-12 17:48:53 SleepState 0
2020-06-12 17:48:53 Speed 0
2020-06-12 13:24:15 Systemcode 1021
2020-06-12 17:48:09 Trigger app
2020-06-12 17:48:53 Version 0.0.1
2020-06-12 17:48:53 Water 4
2020-06-12 17:48:53 body_code 0
2020-06-12 17:48:07 body_data_1_left 8511
2020-06-12 17:48:07 body_data_1_total 9000
2020-06-12 17:48:07 body_data_1_type sideBrush
2020-06-12 17:48:07 body_data_2_left 17555
2020-06-12 17:48:07 body_data_2_total 18000
2020-06-12 17:48:07 body_data_2_type brush
2020-06-12 17:48:07 body_data_3_left 6755
2020-06-12 17:48:07 body_data_3_total 7200
2020-06-12 17:48:07 body_data_3_type heap
2020-06-12 13:24:15 body_data_cid 53069793
2020-06-12 13:06:52 body_data_cleanState_content 1
2020-06-12 13:06:52 body_data_cleanState_id 122
2020-06-12 13:06:52 body_data_cleanState_motionState working
2020-06-12 13:06:52 body_data_cleanState_router plan
2020-06-12 13:06:52 body_data_cleanState_type spotArea
2020-06-12 13:23:24 body_data_content 1
2020-06-12 13:24:15 body_data_mssid 1
2020-06-12 13:24:15 body_data_saOrder 1
2020-06-12 13:24:15 body_data_subType 0
2020-06-12 13:24:15 body_data_type ar
2020-06-12 13:24:15 body_data_value 300,-2000;300,-1800;650,-750;1100,-700;1250,-550;1300,-300;1500,-300;1600,-150;1800,-150;1900,0;2250,-50;2400,100;2300,250;2200,200;2250,400;2450,350;2450,-100;2600,-250;2750,0;3750,-50;4000,-400;4400,-400;4250,-400;4100,-600;3950,-600;3800,-750;3800,-1250;3900,-1350;4200,-1300;4300,-1400;4450,-1400;4550,-1600;4700,-1600;4650,-1700;4800,-1850;5100,-1800;5200,-1600;5500,-2750;5650,-3000;5400,-3200;5500,-3350;5200,-3450;5200,-4300;5400,-4450;5750,-4450;5750,-5600;4800,-5600;4700,-5450;4400,-5800;4400,-6100;4300,-5700;3900,-5700;3750,-5950;3750,-6250;3700,-6200;3100,-6250;2950,-6550;2550,-6500;2550,-3650;2450,-3550;2450,-3400;2550,-3450;2550,-3950;2700,-4100;2900,-4100;3050,-3950;3050,-3500;2900,-3350;3100,-3200;3150,-2900;2950,-2700;2700,-2950;2250,-2950;2150,-2400;800,-2350;500,-2150;350,-2150;300,-2000
2020-06-12 17:48:53 body_msg ok
2020-06-12 17:48:53 getAdvancedMode_p {"header":{"pri":1,"tzm":480,"ts":"1591976929430","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"enable":1}}}
2020-06-12 17:48:53 getBlock_p {"header":{"pri":1,"tzm":480,"ts":"1591976929616","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"enable":1,"start":"21:0","end":"7:0"}}}
2020-06-12 17:48:53 getBreakPoint_p {"header":{"pri":1,"tzm":480,"ts":"1591976929598","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"enable":1},"code":0,"msg":"ok"}}
2020-06-12 17:48:07 getCachedMapInfo_p {"header":{"pri":1,"tzm":480,"ts":"1591976883362","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"enable":0,"info":[{"mid":"409307405","index":2,"status":0,"using":1,"built":1,"name":""}]}}}
2020-06-12 17:48:07 getMajorMap_p {"header":{"pri":1,"tzm":480,"ts":"1591976883512","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","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,1295764014,1952812461,3807156320,1295764014,1295764014,1295764014,1295764014,1295764014,4027665616,3574850270,2438907905,1295764014,1295764014,1295764014,1295764014,1295764014,596305144,1146047133,2523234380,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014"}}}
2020-06-12 17:48:09 getMapSet_p {"header":{"pri":1,"tzm":480,"ts":"1591976885784","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"type":"mw","count":0,"mid":"409307405","subsets":[]}}}
2020-06-12 17:48:05 getMapState_p {"header":{"pri":1,"tzm":480,"ts":"1591976881786","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"state":"built"}}}
2020-06-12 17:48:10 getMapSubSet_p {"header":{"pri":1,"tzm":480,"ts":"1591976886567","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"type":"ar","mssid":"2","value":"5400,-2000;5450,-100;5600,150;5750,200;6550,150;6400,0;6300,-300;6300,-3050;6100,-3150;5950,-3000;5650,-2900;5450,-2050;5400,-2000","subtype":"0","connections":"1","mid":"409307405"}}}
2020-06-12 17:48:11 getMapTrace_p {"header":{"pri":1,"tzm":480,"ts":"1591976887808","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"tid":"315795","totalCount":1280,"traceStart":1200,"pointCount":80,"traceValue":"XQAABACQAQAAABmAhCo2HMY81PAwrlDLtCQFasittmFi/7aOGbWvXsEhsGzU0UzLqugvO+72clySO0bkhewZ5G9DZITbFX6zut0jI5jfMIdNnCc2a76uhTEmPZywTUCbgWe7m7gvhEzVIZoMPspwyCDy9Ffniohw0Sx3csX++PrDzAyiP38HR+tS6VMdmFh5MGt3Tt+5nWXSca9kv3DUdLmS5umkAqus0e5xVTuPhnqBM52g+PpZG1XuBe+tkhCd32obpdX1lynNm8iq5xJxL3DOecMoo88FycE3Dmmn5n8wOvGW5H0oczGdG0I+AODGXdRfnNpEwQ=="}}}
2020-06-12 17:48:08 getMinorMap_p {"header":{"pri":1,"tzm":480,"ts":"1591976885090","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"mid":"409307405","pieceIndex":44,"pieceValue":"XQAABAAQJwAAAADn/IIPLMU8VPh/ykiO9Xcz6ugDJueDrVOUyauBofqGxDw3yVnrXvSgyqA+TrGI01ksnKuZeOWTsdI0VIn0UNkL/5o21AiJ+LF9PJPRtXsr5TqPblch0F3DCI6YcHT/ZBaLt+zFK1WAFTz5mV5Hzv4aVuaCHb2HSJJFKYl3mrIpQojeJ/4A","type":"ol"}}}
2020-06-12 17:48:10 getPos_p {"header":{"pri":1,"tzm":480,"ts":"1591976886332","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"chargePos":[{"x":224,"y":306,"a":-99}],"deebotPos":{"x":224,"y":306,"a":80,"invalid":0}}}}
2020-06-12 17:48:06 getRelocationState_p {"header":{"pri":1,"tzm":480,"ts":"1591976882697","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":20003,"msg":"device do not support get,temporarily"}}
2020-06-12 17:48:07 getSched_p {"header":{"pri":1,"tzm":480,"ts":"1591976883311","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":[]}}
2020-06-12 17:48:05 getStats_p {"header":{"pri":1,"tzm":480,"ts":"1591976881978","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"area":20,"time":1047,"cid":"111","start":"1591960002","type":"spotArea","content":"1"},"code":0,"msg":"ok"}}
2020-06-12 13:24:15 header_fwVer 1.7.9
2020-06-12 13:24:15 header_hwVer 0.1.1
2020-06-12 13:24:15 header_pri 1
2020-06-12 13:24:15 header_ts 1591961051442
2020-06-12 13:24:15 header_tzm 480
2020-06-12 13:24:15 header_ver 0.0.1
2020-06-12 13:24:54 onMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591961091562","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,1295764014,1952812461,3807156320,1295764014,1295764014,1295764014,1295764014,1295764014,4027665616,3574850270,2438907905,1295764014,1295764014,1295764014,1295764014,1295764014,596305144,1146047133,2523234380,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014","type":"ol"}}}
2020-06-12 13:24:10 onMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591961048090","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"tid":"315795","totalCount":1280,"traceStart":1279,"pointCount":1,"traceValue":"XQAABAAFAAAAAFaAQA5wgAAAAA=="}}}
2020-06-12 13:24:55 onMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591961091568","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceIndex":35,"pieceValue":"XQAABAAQJwAAAABuPkkBG+yB68V/xnGuynyywX4rrPXMTR7XFMIrN1fOF0NIMA5z7X0wAqBanD3wnt8ApXLJc9R6Tup4VsqeQxsHuEZWNusmsQ6MuBQf0OlRX2QF5zFkJkaxHNVKxrVRDwrdQLAC3N8xbpRnAqGwFas0luqllxqWDDnnC+FAbwWIbECBUuk/0/O70orNibp8+REIzqVNjyy426BQ0+wuKvanGRzwBAQRy4DaND0y7vQYRKsyYaGMJt6MEiRraVvY7A7q8UszGP4nDqg1JWhYGB/1uwvoyRdKA5nw/jjw/ZRUWxPeYeuL26TuF233mnxbosU6TBtfdB25wlwi4W3SaWF02EHL+drFoxqTuXqaoLb0h02UDPCmWqxUSfIm1THyHJ/T20o2cilBv1Y/UZrAWphWp5lS3GRKJ06yX/2d7Y8UEShOYwiGgKmVQ2cEwesTqg02CdeAu2hHbh1c3tojaNtXmkrAW0StoXjwbbEAsbScbO+Ayd4CQb4Qo0vxBMrJej4hotIKODsupTymn1V/1tclEg+goH5h9583xQYHbuSmA7sDyjej8uO+eHxWmg0QIhFXtVr9UdojhK1KZMBWjbtwd7xfdggPGVV6y+iUd9ozVIseyi+8uPnADq3t4jXuqLSIuKArJtOikm/R46chUzNKgAmpgQ/IOacj4SnAqpjsoDdPdiPlIlXl6sVGIdjqr1SYaToUDJ/i/k+coWbBrb75pwnkKCxcgTYh72J1mSnSdIV1KpgdXEWrRmIgUz2e/wJdZDJEXjwFl60fSCfJZVZLzOPBibqTxs5Jw/01QcckNsPsjzsoXXZy3a+GMZ1cGydnmDcADn/JNgSghIdyx9v/AyLa69g0SK7Iq/QB4KBBC/ulgbCxrwxqqP7TPCwRPACIfsmIChnu4LyXUdIJVGxx8kh8Z3OLdR/hnK7hC61pj5+IyACfqolWEbDEgLp8yKCfYeM="}}}
2020-06-12 13:24:41 onPos {"header":{"pri":1,"tzm":480,"ts":"1591961078558","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"deebotPos":{"x":183,"y":117,"a":79,"invalid":0}}}}
2020-06-12 13:24:15 reportMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591961051272","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"53069793","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,1295764014,3398908715,461772479,1295764014,1295764014,1295764014,1295764014,1295764014,4125794899,1078559635,2866255765,1295764014,1295764014,1295764014,1295764014,1295764014,596305144,3437646504,2523234380,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-06-12 13:24:15 reportMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591961051437","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"53069793","tid":"315795","totalCount":1280,"traceStart":1200,"pointCount":80,"traceValue":"XQAABACQAQAAABmAhCo2HMY81PAwrlDLtCQFasittmFi/7aOGbWvXsEhsGzU0UzLqugvO+72clySO0bkhewZ5G9DZITbFX6zut0jI5jfMIdNnCc2a76uhTEmPZywTUCbgWe7m7gvhEzVIZoMPspwyCDy9Ffniohw0Sx3csX++PrDzAyiP38HR+tS6VMdmFh5MGt3Tt+5nWXSca9kv3DUdLmS5umkAqus0e5xVTuPhnqBM52g+PpZG1XuBe+tkhCd32obpdX1lynNm8iq5xJxL3DOecMoo88FycE3Dmmn5n8wOvGW5H0oczGdG0I+AODGXdRfnNpEwQ=="}}}
2020-06-12 13:24:15 reportMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591961051284","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"53069793","pieceIndex":44,"pieceValue":"XQAABAAQJwAAAADn/IIPLMU8VPh/ykiO9Xcz6ugDJueDrVOUyauBofqGxDw3yVnrXvSgyqA+TrGI01ksnKuZeOWTsdI0VIn0UNkL/5o21AiJ+LF9PJPRtXsr5TqPblch0F3DCI6YcHT/ZBaLt+zFK1WAFTz5mV5Hzv4aVuaCHb2HSJJFKYl3mrIpQojeJ/4A"}}}
2020-06-12 13:24:15 reportPos {"header":{"pri":1,"tzm":480,"ts":"1591961051271","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"53069793","chargePos":[{"x":222,"y":318,"a":-99}],"deebotPos":{"x":4251,"y":-2229,"a":-178}}}}
2020-06-12 13:24:15 reportStats {"header":{"pri":1,"tzm":480,"ts":"1591961051268","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"53069793","type":"spotArea","stop":1,"mapCount":8,"area":20,"time":1047,"start":"1591960002","content":"1","stopReason":1}}}
2020-06-12 18:04:51 state 10_SetVolume
2020-06-12 17:50:56 version HBMQTT version 0.9.5
Attributes:
IODev myEcovacsClient
autocreate 1
devicetopic bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
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 {}
Speed1:noArg iot/p2p/setSpeed/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/TUfV/j {}
Speed:noArg iot/p2p/getSpeed/$DEVICETOPIC/helperbot/bumper/helperbot/g/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 {}
icon Botvac_VR200
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
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) }
fhemuser_bumper_GLBbe7d18eG9:iot/atr/reportMapSubSet/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
fhemuser_bumper_GLBbe7d18eG9:HASH\x5c\x280x783fe50\x5c\x29:.* HASH_0x783fe50_
fhemuser_bumper_GLBbe7d18eG9:HASH\x5c\x280x7975330\x5c\x29:.* HASH_0x7975330_
fhemuser_bumper_GLBbe7d18eG9:HASH\x5c\x280x781ee30\x5c\x29:.* HASH_0x781ee30_
room Saugroboter
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 iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/1002/j {"body": {"data": {"act": "start", "content": "$EVTPART1", "type": "spotArea"}}}
03_Charging:noArg iot/p2p/charge/helperbot/bumper/helperbot/$DEVICETOPIC/q/1003/j {"body": {"data": {"act": "go"}}}
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_RestTime:noArg iot/p2p/setBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/1009/j {"body": {"data": {"end": "7:0", "start": "21:0"}}, "header": {"tzm": 120}}
10_SetVolume:0,1,2,3,4,5,6,7,8,9,10 iot/p2p/setVolume/helperbot/bumper/helperbot/$DEVICETOPIC/q/1010/j {"body": {"data": {"total": 10, "volume": $EVTPART1}}, "header": {"tzm": 120}}
11_PlaySound:noArg iot/p2p/playSound/helperbot/bumper/helperbot/$DEVICETOPIC/q/1011/j {"body": {"data": {"count": 1, "sid": 30}}}
stateFormat ActualStatus: LastRequest
wie gesagt, timeout ist unwichtig. Entscheidend ist die response, die am reading zu erkennen ist.
ZitatSpeed1:noArg iot/p2p/setSpeed/helperbot/bumper/helperbot/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/q/TUfV/j {}
Speed:noArg iot/p2p/getSpeed/$DEVICETOPIC/helperbot/bumper/helperbot/g/2004/j {}
Speed1 gehört in die Setlist.noch $DEVICETOPIC ggfs. eine Zahl anstatt TUfV einsetzen.
Bei Speed steht ein g anstatt dem q für query.
Dann könntest Du noch die jsonMap erweitern:
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
Den noch in die readingList
iot/atr/reportMapSubSet/$DEVICETOPIC/j:.* reportMapSubSet}
Ja sorry, nicht das du denkst das ich beratungsresistent bin...
das letze Post ging in die Hose. Hatte viel geschrieben. Dann
was vergessen und am Handy geändert...und nicht gemerkt das ich
was gelöscht habe. Dann wieder Infos vergessen... ;D und so weiter
Zitatdie gets hast Du aber jetzt noch gar nicht ausprobiert, oder ? Mich wundern die body-,header-readings. Z.B. ist body_data_cid über die Jsonmap ausgeschlossen u. body_data_type müsste in einem reading CleaningMode erscheinen. War attr Jsonmap um 12:40/12:41 nicht gesetzt ?
attr Jsonmap war um 12:40/12:41 gesetzt.
ZitatSpeed1 gehört in die Setlist.noch $DEVICETOPIC ggfs. eine Zahl anstatt TUfV einsetzen.
Bei Speed steht ein g anstatt dem q für query.
Danke, das habe ich übersehen...das "g" wurde durch die Browserkorrektur als unleserlich markiert. Geändert!
Speed1 hatte ich auch nur angelegt, da nach einem get "Speed = Timeout reading answer for HASH(0x4828788)" kam.
Auch keine Aktualisierung der Readings. Das fliegt auch wieder komplett raus. Leider besteht das Problem nach der
Änderung zu "q" immer noch.
Zitatwie gesagt, timeout ist unwichtig. Entscheidend ist die response, die am reading zu erkennen ist.
Ja stimmt, hatte ich auch so verstanden. Aber da alles in die Hose ging, wieder vergessen beim schreiben...
Hatte extra eine Tabelle angelegt und dann...naja.
jsonMap und readingsList werde ich erweitern wie von dir vorgeschlagen.
So, alle set/gets nochmal durchgebumpert
Internals:
CFGFN
CID fhemuser_bumper_GLBbe7d18eG9
DEF fhemuser_bumper_GLBbe7d18eG9
DEVICETOPIC bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
FUUID 5edff09c-f33f-86cf-6be4-109fdc00d79bf438
IODev myEcovacsClient
LASTInputDev myEcovacsClient
MSGCNT 15074
NAME Ozmo950
NR 430
STATE ActualStatus: {}
TYPE MQTT2_DEVICE
myEcovacsClient_MSGCNT 15074
myEcovacsClient_TIME 2020-06-12 22:42:05
JSONMAP:
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_amount Water
body_data_area CleaningArea
body_data_cid 0
body_data_code Systemcode
body_data_enable SleepState
body_data_isCharging Charging
body_data_isLow 0
body_data_left Lifetime_total
body_data_mode 0
body_data_speed Speed
body_data_start LastStart
body_data_state 0
body_data_time 0
body_data_trigger Trigger
body_data_type CleaningMode
body_data_value BatteryState
header_fwVer Firmware
header_hwVer Hardware
header_pri 0
header_ts 0
header_tzm 0
header_ver Version
OLDREADINGS:
READINGS:
2020-06-12 22:41:45 BatteryState 100
2020-06-12 22:41:49 Charging 1
2020-06-12 22:37:46 CleaningArea 0
2020-06-12 22:37:46 CleaningMode spotArea
2020-06-12 22:42:05 Firmware 1.7.9
2020-06-12 22:42:05 Hardware 0.1.1
2020-06-12 22:42:05 LastRequest {}
2020-06-12 22:42:05 LastResponse {"header":{"pri":1,"tzm":480,"ts":"1591994521888","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"trigger":"app","state":"idle"},"code":0,"msg":"ok"}}
2020-06-12 22:37:46 LastStart 1591994256
2020-06-12 22:41:43 Speed 0
2020-06-12 22:42:05 Trigger app
2020-06-12 22:42:05 Version 0.0.1
2020-06-12 22:42:05 body_code 0
2020-06-12 22:37:46 body_data_cleanState_content 2
2020-06-12 22:37:46 body_data_cleanState_id 122
2020-06-12 22:37:46 body_data_cleanState_motionState working
2020-06-12 22:37:46 body_data_cleanState_router plan
2020-06-12 22:37:46 body_data_cleanState_type spotArea
2020-06-12 22:37:46 body_data_content 2
2020-06-12 22:36:45 body_data_enable 0
2020-06-12 22:42:05 body_msg ok
2020-06-12 22:36:45 header_fwVer 1.7.9
2020-06-12 22:36:45 header_hwVer 0.1.1
2020-06-12 22:36:45 header_pri 1
2020-06-12 22:36:45 header_ts 1591994202235
2020-06-12 22:36:45 header_tzm 480
2020-06-12 22:36:45 header_ver 0.0.1
2020-06-12 22:41:46 onMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591994502792","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,1295764014,1859939931,1034759041,1295764014,1295764014,1295764014,1295764014,1295764014,1775326077,2435646723,678291419,1295764014,1295764014,1295764014,1295764014,1295764014,596305144,2813688968,2523234380,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014,1295764014","type":"ol"}}}
2020-06-12 22:38:13 onMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591994289797","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"tid":"276318","totalCount":63,"traceStart":62,"pointCount":1,"traceValue":"XQAABAAFAAAAAD8ARVgXhAAAAA=="}}}
2020-06-12 22:41:46 onMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591994502801","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceIndex":36,"pieceValue":"XQAABAAQJwAAAADr/JAPiKYid/UhxbsNr0+4I5Awja7FsNc1CVsu5hDM5pBqiz2XxVRQHIr39d5Vnk56J/DIkIsNM1C9Qch9Updunt6iundBIecZgCtityQ1QsZ7qI2eyFYcKQy76PdK8VdQwCclmMeh2995XybjGoelvGLMftSJef2DnhXiwQNsqr5Gkd76P+p8x5L3gEvwSWmCyWaEkZG6mzLyf5lfuMjFRG8oN4bmrdtyScQ5jslQhcrAkrusa9m5Z5ix933+BVUiGlFy3SU+r8wBonnzYJ0KBBbvkOXkduzBseM8ZHQxaJ3fD/fAZ44GZWFb4XKAU1S9jVdDD/FXgXdGpudqtAL8ZzFOB1x8yIKr3vJuk+Q6GXDbrRB3qov2MBsrKLAflBV2L8th5/zJX0QHL4p3Iw/vy+wDoq2CnNAtlqQwxqjkibj1GxMvf8CXawguPgBedUIadYTYEQEOC88rAA=="}}}
2020-06-12 22:41:41 onPos {"header":{"pri":1,"tzm":480,"ts":"1591994497789","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"deebotPos":{"x":218,"y":289,"a":85,"invalid":0}}}}
2020-06-12 22:38:13 reportMajorMap {"header":{"pri":1,"tzm":480,"ts":"1591994289564","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"1326511408","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,1295764014,607935604,1861593313,1295764014,1295764014,1295764014,1295764014,1295764014,4285911634,1918895027,3843414565,1295764014,1295764014,1295764014,1295764014,1295764014,596305144,1146047133,2523234380,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-06-12 22:38:13 reportMapSubSet {"header":{"pri":1,"tzm":480,"ts":"1591994289594","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1326511408","mssid":"2","type":"ar","value":"5400,-2000;5450,-100;5600,150;5750,200;6550,150;6400,0;6300,-300;6300,-3050;6100,-3150;5950,-3000;5650,-2900;5450,-2050;5400,-2000","subType":"0","saOrder":""}}}
2020-06-12 22:38:13 reportMapTrace {"header":{"pri":1,"tzm":480,"ts":"1591994289593","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1326511408","tid":"276318","totalCount":63,"traceStart":0,"pointCount":63,"traceValue":"XQAABAA7AQAAAH8/v2QD5BisJUOVaCNUwV1OCDL3AKP0JsJULQRopfTfLoLyw7YYcRm5Hnaywwh6mxAETuWFrFbBYuvUfi17FL64ilKT9e4dh8kvmtrPGT5FPlokk7go0jNzJ6FGUrYU2L+0csheyZ5BYyf5Yul2/oaDwipG1/p3ppVXWfy5NepaqZBBLrLKlmotKKvzixXe6rvIxUl5NCsQ1BhfHAu33HxJpg+94Ih1qvNdQjcgWH7dvWWWrd1BGgO1bfOQ92yl5lBROnIdSG2HWQ70jZjwszA="}}}
2020-06-12 22:38:13 reportMinorMap {"header":{"pri":1,"tzm":480,"ts":"1591994289576","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"1326511408","pieceIndex":44,"pieceValue":"XQAABAAQJwAAAADn/IIPLMU8VPh/ykiO9Xcz6ugDJueDrVOUyauBofqGxDw3yVnrXvSgyqA+TrGI01ksnKuZeOWTsdI0VIn0UNkL/5o21AiJ+LF9PJPRtXsr5TqPblch0F3DCI6YcHT/ZBaLt+zFK1WAFTz5mV5Hzv4aVuaCHb2HSJJFKYl3mrIpQojeJ/4A"}}}
2020-06-12 22:38:13 reportPos {"header":{"pri":1,"tzm":480,"ts":"1591994289560","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1326511408","chargePos":[{"x":225,"y":310,"a":-99}],"deebotPos":{"x":3830,"y":-1835,"a":-17}}}}
2020-06-12 22:38:13 reportStats {"header":{"pri":1,"tzm":480,"ts":"1591994289559","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1326511408","type":"spotArea","stop":1,"mapCount":8,"area":0,"time":33,"start":"1591994256","content":"2","stopReason":2}}}
2020-06-12 22:45:41 state 11_PlaySound
2020-06-12 22:36:39 version HBMQTT version 0.9.5
Attributes:
IODev myEcovacsClient
autocreate 1
devicetopic bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth
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 {}
icon Botvac_VR200
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
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
fhemuser_bumper_GLBbe7d18eG9:iot/atr/onSleep/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
room Saugroboter
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 iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/1002/j {"body": {"data": {"act": "start", "content": "$EVTPART1", "type": "spotArea"}}}
03_Charging:noArg iot/p2p/charge/helperbot/bumper/helperbot/$DEVICETOPIC/q/1003/j {"body": {"data": {"act": "go"}}}
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_RestTime:noArg iot/p2p/setBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/1009/j {"body": {"data": {"end": "7:0", "start": "21:0"}}, "header": {"tzm": 120}}
10_SetVolume:0,1,2,3,4,5,6,7,8,9,10 iot/p2p/setVolume/helperbot/bumper/helperbot/$DEVICETOPIC/q/1010/j {"body": {"data": {"total": 10, "volume": $EVTPART1}}, "header": {"tzm": 120}}
11_PlaySound:noArg iot/p2p/playSound/helperbot/bumper/helperbot/$DEVICETOPIC/q/1011/j {"body": {"data": {"count": 1, "sid": 30}}}
stateFormat ActualStatus: LastRequest
Hatten wir den noch nicht ? :-\
Zitatiot/atr/onSleep/bb5d3df7-0ec5-4f38-b930-b6e0ed03b963/yna5xi/GMth/j:.* { json2nameValue($EVENT) }
auch in die redingList
iot/atr/onSleep/$DEVICETOPIC/j:.* onSleep
zum gucken, was für Daten kommen.
Ich guck mal was bei Clean
stateinfo zurückkommt
Zitat":{"data":{"trigger":"app","state":"clean","cleanState":{"id":"122","router":"plan","type":"auto","motionState":"working"}},"code":0,"msg":"ok"}}
2020-06-10 21:55:09 CleanInfo_q {"header": {"ts": "1591818909265", "ver": "0.0.22", "pri": 2, "tzm": 120}}
Ich würd sagen ändern:
body_data_state:CleanInfo
neu:
body_msg:0 body_data_cleanState_content:0 body_data_cleanState_id:0 body_data_cleanState_motionState:MotionState body_data_cleanState_router:0 body_data_cleanState_type:CleanType body_data_content:0 body_code:0
Was ist denn
ZitatsetCarpertPressure
ein r zu viel ? :-\
ZitatJa sorry, nicht das du denkst das ich beratungsresistent bin...
Och... ;) Du bist halt im Spielfieber ;D
Die Grundlagen hast Du ja jetzt. Mach mal in Ruhe weiter. Ich kann zum 950er ja nix sagen. Die readings müssen beobachtet werden. Da schießen bestimmt payloads durcheinander. Da werden wir mit Perl arbeiten müssen.
Bei Fragen bin ich da. ;)
body_msg:0 body_data_cleanState_content:0 body_data_cleanState_id:0 body_data_cleanState_motionState:MotionState body_data_cleanState_router:0 body_data_cleanState_type:CleanType body_data_content:0 body_code:0
Damit komplett jsonMap ersetzen? Oder hinzufügen?
Zitatein r zu viel ? :-\
setCarpertPressure, bin mir sicher, das das richtig ist :D Der Bot hat Teppicherkennung. Der erhöht dann die Saugkraft. Joa, hat ein Chinese wohl gepennt ;D
beobachte ich nochmal.
Ja, Spieltrieb ::) das ist die letzen Tage etwas ausgeartet (Bumper,Bot, Install hier und da, Pihole, Fehlersuche...)
edit:
Und mal wieder ein edit. Hast du einen Tip, wie man in der setList, 2 set vereinigen könnte?
09_RestTimeStart:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0 iot/p2p/setBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/1009/j {"body": {"data": {"end": "7:0", "start": "$EVTPART1:0"}}, "header": {"tzm": 120}}
10_RestTimeEnd:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0 iot/p2p/setBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/1010/j {"body": {"data": {"end": "$EVTPART1:0", "start": "21:0"}}, "header": {"tzm": 120}}
z.B ein Textfield, welches schon Dummytext enthält. Oder 2 Dropdown hintereinander.
edit2:
Ok, eine Möglichkeit wäre
13_RestTimeEndStart:textField iot/p2p/setBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/1010/j {"body": {"data": {"end": "$EVTPART1:0", "start": "$EVTPART2:0"}}, "header": {"tzm": 120}}
Geht, nur nicht sehr elegant für den Leihen. Ein leeres Textfeld is doof.
Morjen,
ZitatDamit komplett jsonMap ersetzen? Oder hinzufügen?
Nur hinzufügen. Du hast jetzt den master. ;)
ZitatJa, Spieltrieb ::) das ist die letzen Tage etwas ausgeartet (Bumper,Bot, Install hier und da, Pihole, Fehlersuche...)
Ich schrieb doch schonmal: Ich glaub wir ticken sehr ähnlich: Im konkreten Fall: Erst ist man mit wenig zufrieden, wenn man dann aber die Möglichkeiten sieht und auch noch erfolgreich ist, ist man nicht mehr aufzuhalten. ;D ;D ;D
Zitatwie man in der setList, 2 set vereinigen könnte?
Leider auch nichts besseres. :-[ Wenn Du den select der h machen willst, ist 09_RestTimeStart:selectnumbers,0,1,23,0,lin chiquer.
Grundsätzlich würd ich mich nicht zu sehr an einzelnen Befehlen festbeißen. Erst einmal gucken, dass alle eintreffenden topics verarbeitet werden u. entweder konkrete readings erzeugen oder, sofern weniger wichtig, readings mit dem kompletten Inhalt. Keine Erweiterung der readingList durch autocreate und keine "generischen"(header_...-/body_...-readings) mehr erzeugt werden. Dann die get-topics, da in der Regel einfach, weil meist kein weiterer Parameter erforderlich. Zu guter Letzt dann die Setlist.
Wenn das dann vollständig steht, kann man sich an die Optimierungen machen. Das wird dann vermutlich auf Perlcode rauslaufen.
Ich glaub ich wage es mal, meinen Bot wg. neuer Firmware nach Hause telefonieren zu lassen....
Ok hinzufügen. Selectnumbers schau ich mir an.
Falls wer mitmachen will.
https://www.mydealz.de/deals/ecovacs-deebot-ozmo-950-saug-wischroboter-kompatibel-mit-alexa-fur-399-1603084
ZitatIch glaub ich wage es mal, meinen Bot wg. neuer Firmware nach Hause telefonieren zu lassen....
Das war relativ schmerzfrei.
pihole-Umleitungen kommentieren->pihole DNS resolver neu starten->bot aus/ein->app gestartet u. lief
zurück auf FHEM-mqtt2-Server: pihole-Umleitungen auskommentieren->pihole DNS resolver neu starten->bot aus/ein
firmware gabe es scheinbar keine Neue. Ich hatte gedacht, dass man für meinen mittlerweile auch evtl. auf json umgestellt hätte. :'(
Ich hab mich schon seit gestern Abend mit Bumper auf einem Pi beschäftigt.
Hänge immer noch bei dem Fehler
[2020-06-14 14:31:40,098] :: WARNING :: hbmqtt.client :: MQTT connection failed: ConnectionRefusedError(111, "Connect call failed ('192.168.178.42', 8883)")
[2020-06-14 14:31:40,099] :: WARNING :: hbmqtt.client :: Connection failed: ConnectException(ConnectionRefusedError(111, "Connect call failed ('192.168.178.42', 8883)"))
komischerweise funktioniert alles ;D Handy, Fhem, Bumper.... Hab mal ein "issue" eröffnet
https://github.com/bmartin5692/bumper/issues/98
Wie würdest du Bumper mit pipenv beim Systemstart laden? Script welches Bumper startet oder systemd?
Würde gerne einen Service erstellen, is wohl aber etwas kompliziert. Das funktioniert leider nicht
[Unit]
Description=Bumper
After=network.target
[Service]
User=user
Restart=always
Type=simple
WorkingDirectory=/opt/bumper-master
ExecStart=/usr/local/bin/pipenv run python3 -m /opt/bumper-master/bumper/plugins.py --listen 192.168.178.42 --announce 192.168.178.42 --timeout 60
[Install]
WantedBy=multi-user.target
ZitatWie würdest du Bumper mit pipenv beim Systemstart laden? Script welches Bumper startet oder systemd?
Würde gerne einen Service erstellen, is wohl aber etwas kompliziert. Das funktioniert leider nicht
Hatte ich so ähnlich. Ich hatte den user root genommen. Alles andere hatte mir immer Probleme bereitet. Der Start von der Konsole funktioniert bei Dir mit welchem User ?
Das war der Programmstart, wie ich ihn für systemd benutzt hatte
pipenv run python3 -m bumper --listen 192.168.xyz.ab
ooohooo, das geht endlich....und, der ConnectionRefusedError(111) is damit weg :)
Jun 14 17:09:18 raspberrypi systemd[1]: Started Bumper.
root@raspberrypi:/opt/bumper-master# systemctl status bumper
● bumper.service - Bumper
Loaded: loaded (/etc/systemd/system/bumper.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-06-14 17:09:18 BST; 1min 30s ago
Main PID: 3289 (python3)
Tasks: 1 (limit: 2200)
Memory: 19.4M
CGroup: /system.slice/bumper.service
└─3289 /root/.local/share/virtualenvs/bumper-master-vG6qCsde/bin/python3 -m bumper --listen 192.168.178.42 --announce 192.168.178.42
Jun 14 17:09:26 raspberrypi pipenv[3289]: [2020-06-14 17:09:26,194] :: INFO :: hbmqtt.broker :: Listener 'tls1': 1 connections acquired
Jun 14 17:09:26 raspberrypi pipenv[3289]: [2020-06-14 17:09:26,196] :: INFO :: hbmqtt.broker :: Connection from 192.168.178.42:58202 on listener 'tls1'
Jun 14 17:09:26 raspberrypi pipenv[3289]: [2020-06-14 17:09:26,204] :: INFO :: mqttserver :: Bumper Authentication Success - Helperbot: helperbot@bumper/helperbot
Jun 14 17:09:29 raspberrypi pipenv[3289]: [2020-06-14 17:09:29,539] :: INFO :: hbmqtt.broker :: Listener 'tls1': 2 connections acquired
Jun 14 17:09:29 raspberrypi pipenv[3289]: [2020-06-14 17:09:29,541] :: INFO :: hbmqtt.broker :: Connection from 192.168.178.24:55244 on listener 'tls1'
Jun 14 17:09:29 raspberrypi pipenv[3289]: [2020-06-14 17:09:29,566] :: INFO :: mqttserver :: Bumper Authentication Success - Bot - SN: E03312796B09HCBJ0091 - DID: bb5d3df7-0ec5-4f38-b930-b6e0ed03b963 - Class: yn
Jun 14 17:09:30 raspberrypi pipenv[3289]: [2020-06-14 17:09:30,450] :: INFO :: hbmqtt.broker :: Listener 'tls1': 3 connections acquired
Jun 14 17:09:30 raspberrypi pipenv[3289]: [2020-06-14 17:09:30,451] :: INFO :: hbmqtt.broker :: Connection from 192.168.178.66:39908 on listener 'tls1'
Jun 14 17:09:30 raspberrypi pipenv[3289]: [2020-06-14 17:09:30,541] :: INFO :: mqttserver :: Bumper Authentication Success - Client - Username: meine@geheimemail.de - ClientID: fhemuser@bumper/GLBbe7d18eG9
Jun 14 17:09:34 raspberrypi pipenv[3289]: [2020-06-14 17:09:34,490] :: INFO :: xmppserver :: client authenticated fuid_tmpuser
[Unit]
Description=Bumper
After=network.target
Wants=network.target
[Service]
User=root
Restart=always
Group=dialout
Type=simple
WorkingDirectory=/opt/bumper-master
ExecStart=pipenv run python3 -m bumper --listen 192.168.178.42 --announce 192.168.178.42
[Install]
WantedBy=multi-user.target
frag doch einfach ;D ;D ;D
Finally, Bumper ist nun umgezogen auf mein Pihole. Ein Pi weniger...
Nochmal zusammengefasst, wie ich es gemacht habe. Fhem mit Bumper und Pihole
Setup für Bumper auf einem Pi mit Pihole (als User root)
01. raspianOs headless einrichten
02. apt-get update && apt-get upgrade
03. Pihole für DNS umleiten installieren. Dafür gibt es viele Tuts.
04. Fritzbox einrichten wie in diesem Tut -> https://heikorichter.name/post/129/fritzbox-mit-pi-hole-und-dns-over-htttps/
05. 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
05. service pihole-FTL reload
06. DNS-Umleitung checken
ping ecouser.net
ping ecovacs.com
ping ecovacs.net
07. cd /opt
08. wget https://github.com/bmartin5692/bumper/archive/master.zip
09. unzip master.zip
10. cd bumper-master
11. apt-get install python3-pip
12. apt-get install pipenv
13. pip3 install -r requirements.txt
14. pipenv --three #nur zur Sicherheit
15. pipenv install
16. pipenv run python -m bumper --listen 192.168.178.6 --announce 192.168.178.6 # Zur Kontrolle, ob die Zertifikate erstellt werden.
17. bumper wieder beenden
18. nano /etc/systemd/system/bumper.service
[Unit]
Description=Bumper
After=network.target
Wants=network.target
[Service]
User=root
Restart=always
Group=dialout #ist wohl nicht notwendig, probiert es aus
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
19. systemctl enable bumper
20. systemctl start bumper
21. shutdown -r now
22. 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.
23. systemctl restart bumper
24. Klappt nix, mal den ganzen Fuhrpark neustarten. Fritzbox, Pihole, Bot,...
Jetzt der Rest in Fhem.
25. 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.
setstate myEcovacsClient opened
setstate myEcovacsClient 2020-06-14 20:13:51 state opened
26. Dann "set myEcovacsClient password 123456" # Passwort ist egal, Hauptsache es gibt ein Passwort ;D
27. 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 myEcovacsClient
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 Botvac_VR200
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 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 iot/p2p/clean/helperbot/bumper/helperbot/$DEVICETOPIC/q/1002/j {"body": {"data": {"act": "start", "content": "$EVTPART1", "type": "spotArea"}}}\
03_Charging:noArg iot/p2p/charge/helperbot/bumper/helperbot/$DEVICETOPIC/q/1003/j {"body": {"data": {"act": "go"}}}\
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:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0 iot/p2p/setBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/1009/j {"body": {"data": {"end": "7:0", "start": "$EVTPART1:0"}}, "header": {"tzm": 120}}\
10_RestTimeEnd:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0 iot/p2p/setBlock/helperbot/bumper/helperbot/$DEVICETOPIC/q/1010/j {"body": {"data": {"end": "$EVTPART1:0", "start": "21:0"}}, "header": {"tzm": 120}}\
11_SetVolume:0,1,2,3,4,5,6,7,8,9,10 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/1010/j {"body": {"data": {"end": "$EVTPART1:0", "start": "$EVTPART2:0"}}, "header": {"tzm": 120}}
attr Ozmo950 stateFormat ActualStatus: LastRequest
setstate Ozmo950 ActualStatus: {"body": {"data": {"count": 1, "sid": 30}}}
setstate Ozmo950 2020-06-14 18:19:31 BatteryState 100
setstate Ozmo950 2020-06-14 18:19:32 Charging 1
setstate Ozmo950 2020-06-13 17:09:53 CleaningArea 37
setstate Ozmo950 2020-06-13 17:09:53 CleaningMode auto
setstate Ozmo950 2020-06-14 18:19:32 Firmware 1.7.9
setstate Ozmo950 2020-06-14 18:19:32 Hardware 0.1.1
setstate Ozmo950 2020-06-14 18:27:20 LastRequest {"body": {"data": {"count": 1, "sid": 30}}}
setstate Ozmo950 2020-06-14 18:27:20 LastResponse {"header":{"pri":1,"tzm":480,"ts":"1592152035551","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok"}}
setstate Ozmo950 2020-06-13 17:09:53 LastStart 1592058899
setstate Ozmo950 2020-06-14 18:19:32 LifetimeBrush 17520
setstate Ozmo950 2020-06-14 18:19:32 LifetimeBrush_total 18000
setstate Ozmo950 2020-06-14 18:19:32 LifetimeHeap 6720
setstate Ozmo950 2020-06-14 18:19:32 LifetimeHeap_total 7200
setstate Ozmo950 2020-06-14 18:19:32 LifetimeSidebrush 8475
setstate Ozmo950 2020-06-14 18:19:32 LifetimeSidebrush_total 9000
setstate Ozmo950 2020-06-14 18:19:32 SleepState 1
setstate Ozmo950 2020-06-13 18:44:39 Speed 0
setstate Ozmo950 2020-06-13 17:11:06 Systemcode 1065
setstate Ozmo950 2020-06-14 18:19:32 Trigger alert
setstate Ozmo950 2020-06-14 18:19:32 Version 0.0.1
setstate Ozmo950 2020-06-14 18:19:31 Water 1
setstate Ozmo950 2020-06-14 18:19:32 body_code 0
setstate Ozmo950 2020-06-12 22:37:46 body_data_cleanState_content 2
setstate Ozmo950 2020-06-13 16:35:09 body_data_cleanState_id 122
setstate Ozmo950 2020-06-13 16:35:09 body_data_cleanState_motionState working
setstate Ozmo950 2020-06-13 16:35:09 body_data_cleanState_router plan
setstate Ozmo950 2020-06-13 16:35:09 body_data_cleanState_type auto
setstate Ozmo950 2020-06-12 22:37:46 body_data_content 2
setstate Ozmo950 2020-06-12 22:55:38 body_data_enable 1
setstate Ozmo950 2020-06-14 18:19:32 body_msg ok
setstate Ozmo950 2020-06-14 18:19:31 getAdvancedMode_p {"header":{"pri":1,"tzm":480,"ts":"1592151566969","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"enable":1}}}
setstate Ozmo950 2020-06-14 18:19:32 getBlock_p {"header":{"pri":1,"tzm":480,"ts":"1592151567474","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"enable":0,"start":"23:0","end":"7:0"}}}
setstate Ozmo950 2020-06-14 18:19:32 getBreakPoint_p {"header":{"pri":1,"tzm":480,"ts":"1592151567479","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"enable":0},"code":0,"msg":"ok"}}
setstate Ozmo950 2020-06-14 18:19:32 getCachedMapInfo_p {"header":{"pri":1,"tzm":480,"ts":"1592151567681","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"enable":0,"info":[{"mid":"409307405","index":2,"status":0,"using":1,"built":1,"name":""}]}}}
setstate Ozmo950 2020-06-14 18:19:32 getMajorMap_p {"header":{"pri":1,"tzm":480,"ts":"1592151567689","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","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,1703642311,1355739874,1295764014,1295764014,1295764014,1295764014,1295764014,2994777366,679929246,4193191154,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 Ozmo950 2020-06-14 18:19:32 getMapSet_p {"header":{"pri":1,"tzm":480,"ts":"1592151568251","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"type":"mw","count":0,"mid":"409307405","subsets":[]}}}
setstate Ozmo950 2020-06-14 18:19:31 getMapState_p {"header":{"pri":1,"tzm":480,"ts":"1592151567271","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"state":"built"}}}
setstate Ozmo950 2020-06-14 18:19:33 getMapSubSet_p {"header":{"pri":1,"tzm":480,"ts":"1592151568491","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"type":"ar","mssid":"3","value":"-500,-6350;;-500,-5900;;-400,-5800;;-200,-5700;;500,-5750;;700,-5650;;800,-5450;;800,-3550;;700,-3400;;700,-2900;;1000,-2650;;1550,-2650;;1700,-2800;;1650,-6500;;1550,-6600;;-250,-6550;;-450,-6350;;-500,-6350","subtype":"0","connections":"1","mid":"409307405"}}}
setstate Ozmo950 2020-06-14 18:19:34 getMapTrace_p {"header":{"pri":1,"tzm":480,"ts":"1592151570332","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"tid":"519052","totalCount":2489,"traceStart":2400,"pointCount":89,"traceValue":"XQAABAC9AQAAADKAGMpRgV0LOFX4AdqasXC8NY+4PDIum8BmaYgUF5DlFVQTF7emy3p8I5u/O5vvxxxpVO5Aaz0r41b0UFL8LJj0LTKST4IC47yl9FhVww/cTjDOjuHOIy3cqn9BpzFjKAZbHkN7Uow6YV5izqjSJpr6X5kK3CDikTVvIHm+DkQI8gr9Z5Qyl5MGoFch192M9HjSOwXubVq5I5eQu2seOBi3XC/kI07NvOXjVrOmGODcOsM4kiMAsKJ6y0tZQKLDJgHQmUHw1Ebv4V3tz8c5hJRCkaWi2+c7qcXeygNxiGRoFaoOrBSgtU5aLSB4STUZ1b5DVbD5TschAUpr02BpNw=="}}}
setstate Ozmo950 2020-06-14 18:19:32 getMinorMap_p {"header":{"pri":1,"tzm":480,"ts":"1592151567970","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"mid":"409307405","pieceIndex":44,"pieceValue":"XQAABAAQJwAAAADn/IIPLMU8VPh/ykiO9Xcz6uaP7LdQ4i9IBQytr6lgj/APmBGLaKJHzJkhgMX8Zq0SMtuOreFqeY2Q+FB2VB9XYRBUJ6lZNTkqp6y/DbXR/nwcyBIVhUchiSyp9UtkByStEQ/LtjUqfiJTTQ==","type":"ol"}}}
setstate Ozmo950 2020-06-14 18:19:32 getPos_p {"header":{"pri":1,"tzm":480,"ts":"1592151568325","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":{"chargePos":[{"x":242,"y":312,"a":-93}],"deebotPos":{"x":242,"y":312,"a":86,"invalid":0}}}}
setstate Ozmo950 2020-06-14 18:19:32 getRelocationState_p {"header":{"pri":1,"tzm":480,"ts":"1592151567487","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":20003,"msg":"device do not support get,temporarily"}}
setstate Ozmo950 2020-06-14 18:19:32 getSched_p {"header":{"pri":1,"tzm":480,"ts":"1592151567493","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"code":0,"msg":"ok","data":[]}}
setstate Ozmo950 2020-06-14 18:19:31 getStats_p {"header":{"pri":1,"tzm":480,"ts":"1592151567283","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"area":38,"time":2096,"cid":"111","start":"1592058899","type":"auto"},"code":0,"msg":"ok"}}
setstate Ozmo950 2020-06-12 22:55:38 header_fwVer 1.7.9
setstate Ozmo950 2020-06-12 22:55:38 header_hwVer 0.1.1
setstate Ozmo950 2020-06-12 22:55:38 header_pri 1
setstate Ozmo950 2020-06-12 22:55:38 header_ts 1591995334788
setstate Ozmo950 2020-06-12 22:55:38 header_tzm 480
setstate Ozmo950 2020-06-12 22:55:38 header_ver 0.0.1
setstate Ozmo950 2020-06-13 17:11:07 onCachedMapInfo {"header":{"pri":1,"tzm":480,"ts":"1592061063937","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"enable":0,"info":[{"mid":"409307405","status":0,"index":2,"using":1,"built":1,"name":""}]}}}
setstate Ozmo950 2020-06-13 17:11:09 onMajorMap {"header":{"pri":1,"tzm":480,"ts":"1592061065539","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,1703642311,1355739874,1295764014,1295764014,1295764014,1295764014,1295764014,2994777366,679929246,4193191154,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-13 17:09:57 onMapTrace {"header":{"pri":1,"tzm":480,"ts":"1592060993435","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"tid":"519052","totalCount":2489,"traceStart":2488,"pointCount":1,"traceValue":"XQAABAAFAAAAAEUAC9dyjMAAAA=="}}}
setstate Ozmo950 2020-06-13 17:11:09 onMinorMap {"header":{"pri":1,"tzm":480,"ts":"1592061065543","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","pieceIndex":28,"pieceValue":"XQAABAAQJwAAAABv/f//o7f/Rz5IFXI5QaHRQQfksME+saP4l8kci1MrH4gv+iCgl7RCpPp4vUxSZ5y5faBBZ8c0SSMD0SrRUU/pRdwo0auCSWPmyRCIvZiPlv1ufNRdTsNR0XQIL2mHXnXsvKV7AgdT5Yb/44pnE+ge2UUcVOD9XDjZG+8xytdblXeTxoiVamrz5VlM8MvQk9d4JJQYYwTHZhOBQbscckP4Uq1iSwbyRsQbK4BTuTNuNy6KDQlIYL6z1D+eHwE5OOfKPSWd+Q/1iShbVBQzQXMLwl6sbLuJed0f+U6ODe3x4bfqYpn0ufvu5eAc9T3GmMGg1Wp6PpJR1XXyeC66sE/xY+5KvfmH09CyUZAwdKs+uKeTYLBDVxGpNxamZrPXW5SWFFqdsMdravmniaBRaDlcuetGKA0noKnqT3W0iGAlfzPQn9+yj4VqtzX3/jMP/0w12m6tFHqDfdYRU/YMeORiYwtTlVaj+vE/DPSAUaImVA/CIF2RYYQyUeiWCYMwccxCUqqLAYl+dFmSMiwHAwjlprXfUtPheaRB/Y9WDcAWGIQbk2JkhZ/5c0FRlhHmOv40irkd6uc2S5SDyiqQ5FHVnCHtUT/syvTW7VIcfLsuc0X1q0vcFJuSauTuA5Sp/sIgyLVSWpfZBfxNZ5VHDagAFVcxS/ndldyZpn1W3qinX8WkD2BbP155fQ=="}}}
setstate Ozmo950 2020-06-13 17:10:56 onPos {"header":{"pri":1,"tzm":480,"ts":"1592061052162","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"deebotPos":{"x":225,"y":231,"a":83,"invalid":0}}}}
setstate Ozmo950 2020-06-13 17:11:07 onSched {"header":{"pri":1,"tzm":480,"ts":"1592061063938","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":[]}}
setstate Ozmo950 2020-06-13 18:30:02 onSleep {"header":{"pri":1,"tzm":480,"ts":"1592065798538","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"enable":1}}}
setstate Ozmo950 2020-06-13 17:10:09 reportMajorMap {"header":{"pri":1,"tzm":480,"ts":"1592060998370","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"1887750729","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,1004712689,3298657864,714912931,1295764014,1295764014,1295764014,1295764014,1295764014,524344138,4165917749,4031675645,1295764014,1295764014,1295764014,1295764014,1295764014,120121564,2378812396,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-12 22:38:13 reportMapSubSet {"header":{"pri":1,"tzm":480,"ts":"1591994289594","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1326511408","mssid":"2","type":"ar","value":"5400,-2000;;5450,-100;;5600,150;;5750,200;;6550,150;;6400,0;;6300,-300;;6300,-3050;;6100,-3150;;5950,-3000;;5650,-2900;;5450,-2050;;5400,-2000","subType":"0","saOrder":""}}}
setstate Ozmo950 2020-06-13 17:10:09 reportMapTrace {"header":{"pri":1,"tzm":480,"ts":"1592060998393","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1887750729","tid":"519052","totalCount":2489,"traceStart":2400,"pointCount":89,"traceValue":"XQAABAC9AQAAADKAGMpRgV0LOFX4AdqasXC8NY+4PDIum8BmaYgUF5DlFVQTF7emy3p8I5u/O5vvxxxpVO5Aaz0r41b0UFL8LJj0LTKST4IC47yl9FhVww/cTjDOjuHOIy3cqn9BpzFjKAZbHkN7Uow6YV5izqjSJpr6X5kK3CDikTVvIHm+DkQI8gr9Z5Qyl5MGoFch192M9HjSOwXubVq5I5eQu2seOBi3XC/kI07NvOXjVrOmGODcOsM4kiMAsKJ6y0tZQKLDJgHQmUHw1Ebv4V3tz8c5hJRCkaWi2+c7qcXeygNxiGRoFaoOrBSgtU5aLSB4STUZ1b5DVbD5TschAUpr02BpNw=="}}}
setstate Ozmo950 2020-06-13 17:10:09 reportMinorMap {"header":{"pri":1,"tzm":480,"ts":"1592060998375","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"mid":"409307405","cid":"1887750729","pieceIndex":44,"pieceValue":"XQAABAAQJwAAAADn/IIPLMU8VPh/ykiO9Xcz6uaP7LdQ4i9IBQytr6lgj/APmBGLaKJHzJkhgMX8Zq0SMtuOreFqeY2Q+FB2VB9XYRBUJ6lZNTkqp6y/DbXR/nwcyBIVhUchiSyp9UtkByStEQ/LtjUqfiJTTQ=="}}}
setstate Ozmo950 2020-06-13 17:10:09 reportPos {"header":{"pri":1,"tzm":480,"ts":"1592060998368","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1887750729","chargePos":[{"x":228,"y":315,"a":-95}],"deebotPos":{"x":1410,"y":-6377,"a":0}}}}
setstate Ozmo950 2020-06-13 17:10:09 reportStats {"header":{"pri":1,"tzm":480,"ts":"1592060998368","ver":"0.0.1","fwVer":"1.7.9","hwVer":"0.1.1"},"body":{"data":{"cid":"1887750729","type":"auto","stop":1,"mapCount":9,"area":37,"time":2096,"start":"1592058899","content":"","stopReason":1}}}
setstate Ozmo950 2020-06-14 18:27:20 state 12_PlaySound
setstate Ozmo950 2020-06-14 20:13:51 version HBMQTT version 0.9.5
Wenn ich etwas vergessen habe, aktualisiere ich es hier.
TOLL.
Was hältst Du davon das in einem neuen Thema Ecovacs Deebot 950 mit FHEM abzulegen ?
Und nicht vergessen: bumper wollen wir ja noch "wegschmeißen" u. durch FHEM ersetzen. ;)
Ja, kann ich anlegen. Welches Unterforum schlägst du vor? Weiter in "Sonstige Systeme", "MQTT",...
Thema würde ich allgemeiner halten, da ja mehr MQTT können. Oder noch allgemeiner, da dein
Bot nicht MQTT spricht.
Den Rest mit nur Fhem machen wir auch! Wollte nur erstmal die Grundversorgung herstellen.
Das das nur lief, wenn mein Pc läuft war echt nervig...
ZitatWelches Unterforum schlägst du vor?
Oh, vergessen zu schreiben. ::) Ich dachte an Codeschnipsel. Aber
Zitat"Sonstige Systeme", "MQTT",
ist auch OK. Hauptsache ein 950er-User findets über die SuFu. ;)
ZitatOder noch allgemeiner, da dein Bot nicht MQTT spricht.
Nönö, mach mal nur für den 950.
ZitatDas das nur lief, wenn mein Pc läuft war echt nervig...
Windoof war mir gar nicht mehr bewusst ;D
Ok, fertig.
Mit dem Deebot Ozmo 950 geht es hier weiter.
https://forum.fhem.de/index.php/topic,112149.0.html