Roomba Staubsaugerroboter

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

Vorheriges Thema - Nächstes Thema

the ratman

grüß euch!

ich bin ja eigentlich aus der neato-ecke. leider geht der d10 von denen so überhaupt gar nicht ... die firma entwickelt sich gerade zur witze bude.

jetzt frag ich mich, wies hier bei fhem mit roomba ausschaut. vor allem, weil ich lese, das dieses modul nicht mehr weiter entwickelt wird. ist die aussage noch aktuell, werden alle rooma's oder nur bestimmte unterstützt. und ja gibt's was anderes für fhem, wenn dieses modul wirklich am sterben ist?

und ja, wenn ich gleich dazu fragen darf, wie zufrieden ihr so mit euren irobots seit. wenn das wer mit neato vergleichen könnte ... würde mich nicht beschweren. ich nehm' auch gern jeden hinweis zu brauchbaren und aktuellen nicht chinesischen putzen, die fhem steuern kann. aber da sollten wir vielleicht dann nen eigenen fred machen für *g*
→do↑p!dnʇs↓shit←

Prof. Dr. Peter Henning

Das machen wir auch längst nicht mehr mit dem Modul, sondern über MQTT und eine Handvoll Hilfsroutinen.

LG

pah

the ratman

danke dir!
ich will nicht wieder so einfahren wie mit meinem ersten lg und dem neuen neato, drum darf ich noch nerven?

1) d.h. dann, dass die (alle?) roomba generell mqtt können und man nix routen, flashen, ... muss?
2) rennen die dinger auch, wenn sie nicht ins große, weite zwischennetz dürfen, sondern nur ins lokale netz?
→do↑p!dnʇs↓shit←

loetmeister

Hi,

mein E5 hat schon länger Internetverbot... d.h. per DHCP gibt es kein default gateway und DNS Server. Über FHEM lässt er sich steuern, über die App natürlich nicht mehr. Der e5 ist aber nicht so "schlau" - hat weniger Funktionen (keine reinigungskarten, etc.), ob das bei anderen Modellen auch problemlos klappt kann ich nicht sagen.
Bei Aussagen funktioniert "alles" und "generell" wäre ich vorsichtig... je nach firmware Version gab es auch hier im Thread schon größere Änderungen.

Gruß,
Thomas

the ratman

thx für die info.
naja, karten brauch ich auf jeden fall, nogo ebenfalls. ich will nicht immer permanentreinigungen machen, sondern immer nur kleine teile. das nervt weniger, wenn man mal zuhause ist *g*.
und meine holde vermisst derzeit gar bitterlich ihre teilreinigungen wie z.b. küche oder das "katzeneck" - das liegt aber daran, dass man bei neato derzeit keine 2 handys mit gleichen user zum steuern nehmen kann und deren seit 3 jahren versprochene apiv2 immer noch nicht existent ist um das ding per fhem zu steuern.

app brauch ich auch keine - dafür hab ich ja fhem, damit die steuerung intelligenter wird.
das ist derzeit mein problem #2: ich kann nicht mehr per fhem steuern und stelle fest, wie schön das war, wen der bot nach feiertagen und ab/an-wesenheit der bewohner fährt, nach offenen/geschlossenen türen verschiedenen reinigungsprogramme startet, usw.
→do↑p!dnʇs↓shit←

pschlaeppi

#440
Hallo zusammen,

Ich habe aktuell erfolgreich einen neuen Roomba s9 mittels MQTT2_CLIENT in FHEM integriert. Natürlich leider ohne Koordinaten um eine Map zu zeichnen.

Bereits früher hatte ich einen Roomba 980 Mit dem Modul von Torsten Pferdekämpfer integriert. Da ich grundsätzlich die Roombas nicht ins Internet kommunizieren lasse, ausser gerade zum in Betrieb nehmen, ist der 980 noch auf einem Firmware Stand der noch immer die Positionsdaten liefert, die ich selber in einen rudimentäre SVG Map anzeigen liess. Aktuell läuft diese Integration bei mir weiterhin klaglos. Ich möchte den nun gerne aber auch mit dem MQTT2_CLIENT in FHEM integrieren. Alle bisherigen Versuche sind fehlgeschlagen. Die Passwörter und BLID habe ich mittels dorita980 mit dem Java Script und npm run get-password-cloud. Dabei werden Passwörter und BLID beider Roombas ausgelesen. BLID und Passwort des Roomba 980 sind nach wie vor identisch zur ursprünglichen Installation. Ich habe diese für die Konfiguration genutzt.
- Betriebssystem: Ubuntu LTS 22.04 auf Intel-NUC
- Openssl Version: 3.0.2
- Roomba 980 Firmware Version: v2.4.6-3
- Die bestehende Installation mit dem Modul von Torsten Pferdekämpfer läuft auf einem separaten Raspberry und ist aktuell ausgeschaltet.
- Die Roomba App ist nicht aktiv und der Roomba 980 hat keinen Internet Zugang.

Event Log mit Client & Device auf Verbose 5:
2022.09.03 18:09:45 5 : HttpUtils url=https://192.168.x.y:8883/ NonBlocking via https
2022.09.03 18:09:45 4 : IP: 192.168.x.y -> 192.168.x.y
2022.09.03 18:09:45 4 : HttpUtils: 192.168.x.y: Connection refused (111)
2022-09-03 18:09:45 MQTT2_CLIENT Dobby.980.Client connect
2022.09.03 18:09:53 5 : HttpUtils url=https://192.168.x.y:8883/ NonBlocking via https
2022.09.03 18:09:53 4 : IP: 192.168.x.y -> 192.168.x.y
2022.09.03 18:09:59 5 : HttpUtils url=https://192.168.x.y:8883/ NonBlocking via https
2022.09.03 18:09:59 4 : IP: 192.168.x.y -> 192.168.x.y
2022.09.03 18:10:06 5 : HttpUtils url=https://192.168.x.y:8883/ NonBlocking via https
2022.09.03 18:10:06 4 : IP: 192.168.x.y -> 192.168.x.y
2022.09.03 18:10:14 5 : HttpUtils url=https://192.168.x.y:8883/ NonBlocking via https
2022.09.03 18:10:14 4 : IP: 192.168.x.y -> 192.168.x.y
2022.09.03 18:10:22 5 : HttpUtils url=https://192.168.x.y:8883/ NonBlocking via https
2022.09.03 18:10:22 4 : IP: 192.168.x.y -> 192.168.x.y


List des Client:
Internals:
   BUF       
   Clients    :MQTT2_DEVICE:MQTT_GENERIC_BRIDGE:
   ClientsKeepOrder 1
   DEF        192.168.x.y:8883
   DeviceName 192.168.x.y:8883
   FUUID      63136ebf-f33f-cace-b777-3954f18f5dfd2f13
   NAME       Dobby.980.Client
   NEXT_OPEN  1662233101.62816
   NR         189
   PARTIAL   
   SSL        1
   STATE      disconnected
   TYPE       MQTT2_CLIENT
   clientId   6##############0
   connecting 1
   devioLoglevel 5
   eventCount 12
   nextOpenDelay 5
   MatchList:
     1:MQTT2_DEVICE ^.
     2:MQTT_GENERIC_BRIDGE ^.
   READINGS:
     2022-09-03 21:24:56   state           disconnected
   sslargs:
     SSL_version SSLv23
Attributes:
   SSL        1
   autocreate no
   clientId   6##############0
   disconnectAfter 5
   group      10 MQTT2 Clients
   mqttVersion 3.1.1
   room       Roomba
   sortby     mqtt.cl.02
   sslargs    SSL_version:SSLv23
   username   6##############0
   verbose    5


List des Devices:
   Internals:
   CID        6##############0
   DEF        6##############0
   FUUID      63136ebf-f33f-cace-aac0-9a28b3ec055c31e6
   IODev      Dobby.980.Client
   NAME       Dobby.980
   NR         199
   STATE      ???
   TYPE       MQTT2_DEVICE
   READINGS:
     2022-09-03 17:11:59   IODev           Dobby.980.Client
Attributes:
   IODev      Dobby.980.Client
   alias      Dobby 980
   devicetopic 6##############0
   group      02 Dobby 980
   readingList $DEVICETOPIC:.* {roomba::reading($NAME,$EVENT)}
   room       Roomba
   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)}
maplist:noArg {roomba::setting($NAME,"local:cmMapList={listmaps('$NAME')}",$EVENT)}
mapdel {roomba::setting($NAME,"local:cmMapList={delmap('$NAME','$EVENT')}",$EVENT)}
   stateFormat cmPhaseE (battery %)


Was habe ich bisher versucht :
- CipherString von 2 auf 1 gesetzt
- In openssl.cnf ist  zusätzlich definiert: MinProtocol = TLSv1.2. Gleiches Verhalten wenn ich das auskommentiere
- bei Änderungen an /etc/ssl/openssl.cnf jeweils neu gebooted.
- Roomba 980 Batterie entfernt und Roomba Hardware Reset ausgeführt
- Port 1883 probiert, dann kommen dauernd connection refused Meldungen

Hat jemand allenfalls noch einen Tipp was ich versuchen könnte oder wo ich suchen müsste?

Herzlichen Dank für eure Unterstützung

Philipp

Jewe

Hallo zusammen,

hat jemand den iRobot Roomba i6158 erfolgreich eingerichtet, bzw. ist es bekannt ob der auch funktioniert ?

Danke, Jens

Prof. Dr. Peter Henning

@pschlaeppi:

Vlt. mal autocreate=simple setzen.

LG

pah

Jewe

Hey,

"NonBlocking via https" hatte ich auch. Nach dem ich den Timeout hochgesetzt habe ist das nun weg:

attr RoombaDGClient connectTimeout 6

Allerdings bekomme ich nun noch diese Meldungen im LOG:
2022.10.18 22:06:10 5: RoombaDGClient: received PUBLISH (0)(8)wifistat{"state":{"reported":{"signal":{"rssi":-42,"snr":47}}}}
2022.10.18 22:06:10 5: RoombaDGClient: dispatch autocreate=no\0003xxxxxxxxxxxxxxx0\000wifistat\000{"state":{"reported":{"signal":{"rssi":-42,"snr":47}}}}
2022.10.18 22:06:10 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{roomba::reading($NAME,$EVENT)}: Undefined subroutine &roomba::reading called at (eval 39541) line 1.

2022.10.18 22:06:15 5: RoombaDGClient: sending DISCONNECT (224)(0)
2022.10.18 22:06:15 5: DevIo_SimpleWrite RoombaDGClient: e000


Grüße, Jens

Prof. Dr. Peter Henning

Tja, wenn das Modul nicht ordentlich geladen wird, kann FHEM natürlich die Routine roomba::reading nicht finden. Steht doch alles in der Meldung...

LG

pah

Jewe

Hallo,
heute habe ich den iRobot Roomba i6158 erfolgreich in Betriebgenommen.

Allerding habe ich es nocht nicht ganz kapiert, wie das mit den Karten funktioneren soll. Wenn es funktioniert, wo wird die Karte gespeichert ?

LG, Jens

Miami

#446
Es ist mir gelungen, den iRobot Roomba s9+ (mit Absaugstation) in FHEM zu integrieren. Ich kann ihn Starten, Stoppen usw. aber an den Karten habe ich mich nicht versucht.

Ich habe mich dabei hauptsächlich an die Anleitung im FHEM Wiki gehalten:

  • Roboter mit der iRobot APP in Betrieb genommen
  • blid und password des Roboters habe ich mit der Anwendung Roomba980 aus der "iRobot cloud" ausgelesen (aus dem Roboter selber ging es nicht).
  • Den MQTT Client (heißt bei mir RoombaClient) angelegt und das Passwort gesetzt (set RoombaClient  password :1:xxxxxxxxxxxxxxxxxxxxxxxxxxxx)
    Dann konnte ich (für jeweils 5 Sekunden) eine Verbindung mit dem Roboter aufbauen.
  • Den Roboter (heißt bei mir Roomba) angelegt.
    Nun kamen schon nach jedem Verbinden des RoombaClient viele Daten vom Roboter in Roomba.
  • Die 99_RoombaUtils.pm vom Unterordner contrib in den Unterordner FHEM kopiert und FHEM neu gestartet, damit sie auch wirklich geladen ist.
  • Die Readingslist von Roomba angepasst und damit die Readings deutlich reduziert.
  • Sie setlist und webCmd um die Absaugung (evac) erweitert.
  • Ein at eingerichtet, um alle 15 min die Daten abzurufen.

So sieht das nun in der fhem.cfg bei mir aus. Vielleicht nutzt es ja anderen Anwendern, die x müssen natürlich durch die IP und die  blid ersetzt werden:
######################################################
# iRobot Roomba s9+
######################################################
define RoombaClient MQTT2_CLIENT 192.168.xxx.xxx:8883
attr RoombaClient SSL 1
attr RoombaClient autocreate no
attr RoombaClient clientId 6xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5
attr RoombaClient disconnectAfter 5
attr RoombaClient mqttVersion 3.1.1
attr RoombaClient room Roomba
attr RoombaClient sslargs SSL_version:SSLv23
attr RoombaClient username 6xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5
attr RoombaClient webCmd connect

define Roomba MQTT2_DEVICE 6xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5
attr Roomba userattr noMap:true,false
attr Roomba IODev RoombaClient
attr Roomba alias Roomba i9+
attr Roomba comment ohne RoombaTools:\
attr Roomba readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }
attr Roomba devicetopic 6xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5
attr Roomba icon vacuum_top
attr Roomba noMap true
attr Roomba readingList $DEVICETOPIC:.* {roomba::reading($NAME,$EVENT)}
attr Roomba room Roomba
attr Roomba setList start cmd {"command": "start", "time": 1, "initiator": "localApp"} \
dock cmd {"command": "dock", "time": 1, "initiator": "localApp"} \
resume cmd {"command": "resume", "time": 1, "initiator": "localApp"} \
pause cmd {"command": "pause", "time": 1, "initiator": "localApp"}\
evac cmd {"command": "evac", "time": 1, "initiator": "localApp"}
attr Roomba webCmd start:dock:resume:pause:evac

define RoombaUpdate at +*00:15 set RoombaClient connect
attr RoombaUpdate room Roomba


Ich danke allen, die an diesen Thema mitgearbeiten, allen voran Prof. Dr. Peter Henning, für die tolle Arbeit, die es auch mir ermöglicht hat dies nachzuvollziehen und umzusetzen.

rob

Zitat von: Miami am 21 Oktober 2022, 19:51:37
...Ein at eingerichtet, um alle 15 min die Daten abzurufen...

Falls für Dich von Interesse, gäbe es auch diese Alternative mit periodicCmd:
setlist im Roomba ergänzen um

update:noArg {fhem("set RoombaClient connect")}

dann das Attribut periodicCmd dem Roomba hinzufügen:
attr Roomba periodicCmd update:15
Dann brauchst kein extra at mehr ;)

VG
rob

Miami

Danke!
Deine Erläuterung habe ich verstanden.  :)
Ich meine, das wurde in diesen Tread zwar auch schon mal erwähnt, aber da hatte ich nicht verstanden, wo und was ich eingeben muss.
Ausprobiert habe ich es aber noch nicht. :-[

cbl

Weit vorne in diesem Thread wird über das gezielte Ansteuern von Zonen/Räumen geschrieben. Die da genannten Readings finde ich in meinem Braava Wischroboter sowie im Roomba I7 - auch nicht, wenn ich zeitweise auf "complex" im MQTT_CLIENT gehe.

Gibt es mittlerweile bei anderen eine etablierte Möglichkeit, über FHEM gezielt Reinigungszonen anzusteuern, die man zuvor (anders geht es wohl nicht) in der App definiert hat? Die App hat bei mir gewöhnlich keinen Internetzugang. Den hatte ich nur mal ganz zu Beginn aktiv, um die Geräte kennenzulernen.


Gruß
Christian