Deebot Slim 2 - Integration möglich!

Begonnen von retikulum, 02 August 2018, 12:05:11

Vorheriges Thema - Nächstes Thema

KölnSolar

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
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

KölnSolar

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
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

KölnSolar

#17
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
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Beta-User

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?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

KölnSolar

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
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

KölnSolar

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.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Beta-User

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...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

KölnSolar

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
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

justme1968

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.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

KölnSolar

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
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

schwatter

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

KölnSolar

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
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

schwatter

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...

KölnSolar

#28
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).
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

schwatter

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.