Roomba Staubsaugerroboter

Begonnen von Prof. Dr. Peter Henning, 10 September 2020, 16:40:34

Vorheriges Thema - Nächstes Thema

Dracolein

Zitat von: Sturi2011 am 03 Oktober 2020, 16:20:14
Hallo,

das Passwort musst du im MQTT2_Client eintragen. Da gibt es oben ein Dropdown Conect usw.

Gruß Andreas

Moin,

habe gestern zur Sicherheit nochmal mein gesamtes FHEM System geupdated. Seither habe ich in Deinem besagten Dropdown eine Auswahlmöglichkeit "connect" (die ich vorher nicht hatte) und habe dort das Passwort eingetragen; übrigens sehr kryptisch, mag das stimmen? (Der Doppelpunkt am Anfang gehört dazu!)
2020-10-04 08:18:18 MQTT2_CLIENT RoombaFegerClient connect :1:151***********WnO

Eine Verbindung stellt sich leider nicht her ,wobei ich mich frage, ob der Roomba dafür in irgend einem bestimmten Status stehen muss?
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Sturi2011

#106
Hallo,

einen bestimmten Status benötigt er nicht,
Eine aktuelle Firmware aus der App solltest
du ihm schon verpasst haben...

Das Passwort soll kryptisch sein....die Leerzeichen
gehören allerdings nicht dazu.


Gruß Andreas

Dracolein

Roboter-Software: 2.4.6-3 (Roomba 980), lt App ist das der neueste Stand  ???
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Sturi2011

Hallo,

dann stelle mal verbose 5 ein und poste die Logs.
Ich komme allerdings erst morgen dazu weiter zu
lesen - mein großer hat heute Konfirmation.

Gruß Andreas

Dracolein

#109
Zitat2020.10.04 10:02:18 5: HttpUtils url=https://192.168.178.21:8883/
2020.10.04 10:02:18 4: IP: 192.168.178.21 -> 192.168.178.21
2020.10.04 10:02:19 4: HttpUtils: https://192.168.178.21:8883/: Can't connect(2) to https://192.168.178.21:8883:  SSL connect attempt failed error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small

trotz

CipherString = DEFAULT@SECLEVEL=1

und alternativ

#CipherString = DEFAULT@SECLEVEL=1

Reicht es die genannte Datei zu editieren, oder muss danach zusätzlich noch etwas restarted werden o.ä.?
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Sturi2011

Hallo,

wie heißt es so schön - reboot tut gut.
Wenn es dei dir im Docker Container
läuft vorher ein comit - sonst sind die
Änderungen flöten.

Gruß Andreas

Dracolein

oh my godness  ;D ;D ;D
ZitatSTATE opened

Zitat
2020.10.04 12:58:23 1: 192.168.178.21:8883 disconnected, waiting to reappear (RoombaFegerClient)
2020.10.04 12:59:01 1: 192.168.178.21:8883 reappeared (RoombaFegerClient)
2020.10.04 12:59:01 2: autocreate: define MQTT2_3145*********40 MQTT2_DEVICE 31***********40 RoombaFegerClient
2020.10.04 12:59:01 2: autocreate: define FileLog_MQTT2_31*******40 FileLog ./log/MQTT2_31********740-%Y.log MQTT2_31*********740
2020.10.04 12:59:51 5: RoombaFegerClient: received PUBLISH (0)(8)wifistat{"state":{"reported":{"signal":{"rssi":-39,"snr":50}}}}
2020.10.04 12:59:51 5: RoombaFegerClient: dispatch autocreate=simple\00031*********740\000wifistat\000{"state":{"reported":{"signal":{"rssi":-39,"snr":50}}}}

Läuft  8)
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Prof. Dr. Peter Henning

#112
OK, langsam nehmen auch die Karten etwas Form an.

Zunächst einmal anbei meine Datei mit dem "Spezialcode", sowie ein Listing eines meiner Roboter

Internals:
   CID        3...0
   DEF        3...0
   DEVICETOPIC 3...0
   FUUID      5f5e176a-f33f-a726-7839-10b15519c0efcc9f
   IODev      RoombaFegerClient
   LASTInputDev RoombaFegerClient
   MSGCNT     15009
   NAME       RoombaFeger
   NR         122
   RoombaFegerClient_MSGCNT 15009
   RoombaFegerClient_TIME 2020-10-04 12:16:53
   STATE      Charging (100 %)
   TYPE       MQTT2_DEVICE
   READINGS:
     2020-10-04 12:16:50   audioActive     0
     2020-10-04 12:16:50   battery         100
     2020-10-04 12:16:51   cmArea          37.3 m²
     2020-10-04 12:16:50   cmBinFull       0
     2020-10-04 12:16:51   cmCycle         none
     2020-10-04 12:16:51   cmError         None
     2020-10-04 12:16:51   cmErrorD        Kein Fehler
     2020-10-04 12:16:51   cmExpire        Never
     2020-10-04 12:16:51   cmInitiator     localApp
     2020-10-04 12:16:51   cmNotReady      0
     2020-10-04 12:16:51   cmPhase         charge
     2020-10-04 12:16:51   cmPhaseD        Wird geladen
     2020-10-04 12:16:51   cmPhaseE        Charging
     2020-10-04 12:16:51   cmTime          57 min
     2020-10-04 12:16:51   lastCommand     resume
     2020-10-04 12:16:51   lastCommandInitiator localApp
     2020-10-04 11:11:00   position        (-513,-22)
     2020-10-04 11:11:00   positionTheta   49
     2020-10-04 12:16:51   progWeek        [Sun:none,Mon:none,Tue:none,Wed:none,Thu:none,Fri:none,Sat:none]
     2020-10-04 12:16:51   sBinPause       true
     2020-10-04 12:16:51   sCarpetBoost    false
     2020-10-04 12:16:51   sOpenOnly       false
     2020-10-04 12:16:51   sSchedHold      false
     2020-10-04 12:16:51   sTwoPass        false
     2020-10-04 12:16:51   sVacHigh        false
     2020-10-04 12:16:53   signalRSSI      -51
     2020-10-04 11:10:20   state           NoAutoPasses
Attributes:
   IODev      RoombaFegerClient
   devicetopic 3...0
   readingList $DEVICETOPIC:.*  {roomba::reading($NAME,$EVENT)}
   room       Haus
   setList    start:noArg {roomba::command($NAME,"start",$EVENT)}
stop:noArg {roomba::command($NAME,"stop",$EVENT)}
dock:noArg {roomba::command($NAME,"dock",$EVENT)}
resume:noArg {roomba::command($NAME,"resume",$EVENT)}
pause:noArg {roomba::command($NAME,"pause",$EVENT)}
CarpetBoost:true,false {roomba::setting($NAME,"carpetBoost",$EVENT)}
TwoPass:true,false {roomba::setting($NAME,"twoPass",$EVENT)}
NoAutoPasses:true,false {roomba::setting($NAME,"noAutoPasses",$EVENT)}
NoPP:true,false {roomba::setting($NAME,"noPP",$EVENT)}
VacHigh:true,false {roomba::setting($NAME,"vacHigh",$EVENT)}
BinPause:true,false {roomba::setting($NAME,"binPause",$EVENT)}
OpenOnly:true,false {roomba::setting($NAME,"openOnly",$EVENT)}
ProgHold:true,false {roomba::setting($NAME,"schedHold",$EVENT)}
ProgSun:time {roomba::setsched($NAME,0,$EVENT)}
ProgMon:time {roomba::setsched($NAME,1,$EVENT)}
ProgTue:time {roomba::setsched($NAME,2,$EVENT)}
ProgWed:time {roomba::setsched($NAME,3,$EVENT)}
ProgThu:time {roomba::setsched($NAME,4,$EVENT)}
ProgFri:time {roomba::setsched($NAME,5,$EVENT)}
ProgSat:time {roomba::setsched($NAME,6,$EVENT)}

   startdir   east
   startx     1100
   starty     120
   stateFormat cmPhaseE (battery %)
   userattr   startdir:north,west,south,east startx starty
   webCmd     start:pause:resume:stop:dock


Also mit ganz einfacher readingList und klar definierter setList. Die Attribute für Startpunkt und Startrichtung sind im Moment noch bedeutungslost - sie definieren später die Ausrichtung der Karte. Programmierung und Setzen von Optionen funktioniert problemlos (wobei ich immer noch nicht weiß, was noPP bedeuten soll...)

Es werden sehr viel weniger Readings angelegt, als beim per autocreate erzeugten Device - das mach m.E. mehr Sinn.

Zusätzlich mache ich tagsüber alle 5 Minuten einen Connect - es kann ja sein, dass jemand die Kiste per App gestartet hat.

Bei den Karten eliminiere ich inzwischen alle Wegpunkte, bei denen sich der Fahrwinkel nicht ändert (macht dann nur noch so 2500 Punkte bei einem Lauf). Diese Punkte können abgefragt werden durch {Dumper($defs{'RoombaFeger'}->{helper})}. Anbei die Grafik einer Fahrt duch 2 Räume im Erdgeschoss. Mittels eines Graham Scan-Verfahrens lässt sich schnell die konvexe Hülle der Fahrtpunkte ermitteln (Rote Linie, sehr viel weniger Punkte), die muss ich jetzt nur noch automatisch an die "theoretische" Hüllkurve anpassen. Beziehungsweise in diesem Geschoss an 4 verschiedene Hüllkurven, da Küche, Garderob und Gästebad nicht immer gesaugt werden.

Als problematisch erweist sich die ziemlich ungenaue Messung.

LG

pah

Dracolein

Aus Interesse: welches Ziel verfolgst Du mit den Karten?
Nach 2 Jahren Roomba kann ich der Karte als Reinigungsergebnis keinen Mehrwert abnehmen. Selbst die Kartierung in Zonen nutzen wir nicht.

Mein persönliches Ziel ist die Einbindung beider Roboter, sodass ich im Idealfall am Ende eine definierte Ablaufkette in FHEM habe, die z.B. mitten in der Nacht durchläuft und das gesamte Erdgeschoss erst saugt und dann durchwischt.:
1.) Licht in Küche, Esszimmer, Wohnzimmer einschalten
2.) Roomba 980 starten und nach Ende (=Status: Dock/Charging)
3.) Nach Ende Braava starten und nach Ende (=Status: Dock/Chariging)
4.) Licht wieder ausschalten
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Prof. Dr. Peter Henning

Erstens interessiert mich das mathematisch.
Zweitens ist wohl in einem der nächsten Firmware-Updates die Möglichkeit drin, gezielt bestimmte Zonen anzusteuern.
Und drittens hat das mit den Karten, wenn es funktioniert, einen hohen WAF. Wo die Kiste gereinigt hat, ist dabei eher egal - aber die Frage, wo sie gerade saugt, und wo man sie hinbewegen möchte, ist sehr interessant.

Wischen fällt hier flach - nagelneues geöltes Eichenparkett. Also 2x Roomba, kein Braava

LG

pah

Dracolein

Klare Aussage, ist verstanden.

Vielleicht ist der Braava zukünftig von einem kompetenteren User wie mir hier einzubringen. Ich finde derzeit keine Möglichkeit (Google), irgendeine Verbindung zu ermöglichen.

Auf Dein Parkett bin ich neidisch, wobei die rund 40qm Fliesen hier recht praktisch sind: 2 eigene Kinder, 1 Hund und seit dem Frühjahr täglich 3 Tageskinder bei meiner Frau, hinterlassen in Summe zum Feierabend regelmäßig Arbeit für beide Roboter. Momentan starten wir die Geräte abends manuell nacheinander. Morgens ist dann alles frisch sauber, bevor die Terrorzwerge von vorn beginnen  ;D
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Prof. Dr. Peter Henning

#116
ZitatAuf Dein Parkett bin ich neidisch
Nicht doch. Haben wir auch erst machen lassen, nachdem das jüngste von 3 Kindern in absehbarer Zeit das Studium beenden und ausziehen wird. Komm Zeit, komm Luxus.

Und warum sollte der Braava anders funktionieren, als der Roomba? Was sagt er denn bei einem Verbindungsversuch mit einem MQTT2_CLIENT? Kann man ein Passwort holen?

LG

pah

Dracolein

Ich war bisher nicht im Stande, eine clientID irgendeines Roboters zu erhalten. Die clientID des Roombas samt Passwort erhielt ich über das Roomba980 Modul.
Über selbiges Modul versuchte ich den Braava zu erreichen, aber das Teil reagiert nicht auf Tastenkombinationen jeglicher Art, um in einen Sende-/Empfangsmodus versetzt zu werden.

Interessant ist folgende Beobachtung in der iRobot-App unter Braava --> Robotereinstellungen --> WLAN Einstellungen --> Details:
Zitat
Netzwerkname
Signalstärke
Sicherheitszyp
IP Adresse
...
...
Verbindungsstatus: Der Roboter kommuniziert mit dem MQTT-Broker
...
Dieses Detail ist im Roomba 980 innerhalb der gleichen App nicht erwähnt.

Während ich dies schreibe habe ich folgendes auf meinem raspberry gemacht:


git clone https://github.com/koalazak/dorita980.git
cd dorita980
npm install
npm run getpassword 192.168.178.51

Make sure your Roomba is on the Home Base and powered on. Then press and hold the HOME button on your roomba until it plays a series of tones (about 2 seconds). Release the button and your Roomba will flash WIFI light. Then wait...
========>
Good job!


Ich habe den Braava Homebutton ca 5 Sekunden gedrückt, dann gab es ähnlich dem Roomba einen Ton und in der Konsole:
Zitat
(node:10977) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
Robot Data:
{ ver: '3',
  hostname: 'iRobot-54F4**********0F9',
  robotname: 'Braava jet',
  robotid: '54F***********F9',
  ip: '192.168.178.51',
  mac: '50:******F:D8',
  sw: 'sanmarino+3.10.8+sanmarino-release-rt320+11',
  sku: 'm613440',
  nc: 0,
  proto: 'mqtt',
  cap:
   { edge: 0,
     maps: 3,
     pmaps: 4,
     tHold: 1,
     tLine: 2,
     area: 1,
     eco: 1,
     multiPass: 2,
     pose: 1,
     team: 1,
     pp: 0,
     '5ghz': 1,
     prov: 3,
     sched: 1,
     svcConf: 1,
     ota: 2,
     log: 2,
     tileScan: 1 },
  blid: '54F************0F9' }
Password=> :1:16*********KgnT <= Yes, all this string.
Use this credentials in dorita980 lib :)

8)

Copy & Paste Deiner Setlist in Teilen:

start:noArg cmd {"command": "start", "time": 1, "initiator": "localApp"}
stop:noArg cmd  {"command": "stop", "time": 1, "initiator": "localApp"}
dock:noArg cmd  {"command": "dock", "time": 1, "initiator": "localApp"}
resume:noArg cmd  {"command": "resume", "time": 1, "initiator": "localApp"}
pause:noArg cmd  {"command": "pause", "time": 1, "initiator": "localApp"}

funktioniert aus FHEM heraus super.


Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Dracolein

Guten Morgen zusammen,

mir fällt auf, dass meine Geräte - wenn MQTT2_Client = opened - im Sekundentakt nur auf den folgenden Readings Aktualisierungen erhalten.
Zitatstate_reported_signal_noise -90 2020-10-05 10:12:17
state_reported_signal_rssi  -68 2020-10-05 10:12:17
state_reported_signal_snr  22  2020-10-05 10:12:17
während
Zitatstate
unverändert bleibt. Dort ändert sich das Reading nur beim senden eines Befehlts aus FHEM heraus.
Wenn ich die Roboter per App steuere, kriegt FHEM davon derzeit nichts mit ?
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Prof. Dr. Peter Henning

Richtig. Es scheint keine Möglichkeit zu geben, die gegenwärtigen Settings aktiv abzufragen. Und weil der Roboter den FHEM Client nicht aufwecken kann, habe ich mit einem kleinen separaten DOIF dafür gesorgt, dass (nur tagsüber und wenn nicht sowieso connected) alle 5 Minuten ein automatischer Connect von FHEM mit dem Roboter gemacht wird. Also spätestens nach 5 Minuten bekommt FHEM das mit - und erhält dann auch regelmäßig die Positionsdaten und die Netzwerkdaten.

Und ja: Ich finde das mit dem sekündlich aktualisierten RSSi auch grenzwertig, habe es darum bis auf ein Reading auch unterdrückt. Aber das ist nunmal der Kram, der vom Roboter kommt - verhindern kann man den wohl eher nicht.

LG

pah