Hallo und Roomba-Flow

Hallo Gemeinde,

ich bin der Neue… :wink:
Kurz zu mir, ich bin nach einem Defekt an meinem Fibaro HC2 auf homee umgestiegen, weil mir die, durch die zusätzlichen Würfel, möglichen Geräte gut gefallen haben.
Ich hätte mehr recherchieren sollen - aber das vielleicht mal in einem anderen Thread…
Da es bei homee mit Bordmitteln ja nichteinmal möglich ist, zwei Werte miteinander zu vergleichen, kam ich um Node Red ohnehin nicht herum, also habe ich in diesem Zuge auch noch ioBroker aufgesetzt. An dieser Stelle Danke an @Micha
Da Node Red und ioBroker nun einmal da waren, braucht man ja auch ein Projekt, um sich an die Materie heranzutasten.
Da es offenbar noch nix in Richtung Roomba zu geben scheint, habe ich damit mal angefangen.
Ich habe nur einen e5, mit Absicht, weil er meines Wissens keine Karten anlegt.
Der „spuckt“ aber sicher auch nicht soviele Infos aus, wie der ioBroker-Adapter erfassen könnte.
Da ginge noch viel mehr, die Frage ist nur, ist das auch sinnvoll.
Als Node Red Anfänger habe ich natürlich bei anderen Flows „geborgt“, also nicht meckern wenn euch Sachen bekannt vorkommen. Ob alles 100pro richtig ist, kann ich auch nicht garantieren. :wink:
Es ist eher ein Anfang, als völlig ausgereift.
Viel Spaß damit…

Der Schalter 1 startet die Reinigung (Ein), bzw. schickt den roomba zurück nach Hause (Aus).
Der Rest ich sicher selbsterklärend…

[
    {
        "id": "4ec44aab.defa54",
        "type": "tab",
        "label": "Saugroboter",
        "disabled": false,
        "info": ""
    },
    {
        "id": "1821f3f2.19f014",
        "type": "homeeDevice",
        "z": "4ec44aab.defa54",
        "virtual-homee": "",
        "name": "Saugroboter",
        "nodeId": "55",
        "showNodeId": false,
        "profile": "19",
        "icon": "nodeicon_ventilationsystem",
        "attributes": [
            {
                "instance": 0,
                "minimum": 0,
                "maximum": 1,
                "current_value": 0,
                "target_value": 0,
                "last_value": 0,
                "unit": "Reinigung",
                "step_value": 1,
                "editable": 1,
                "state": 1,
                "last_changed": 12345555,
                "changed_by": 1,
                "changed_by_id": 0,
                "based_on": 1,
                "data": "",
                "id": 550,
                "type": 1,
                "node_id": 55
            },
            {
                "instance": 2,
                "minimum": 0,
                "maximum": 1,
                "current_value": 1,
                "target_value": 1,
                "last_value": 1,
                "unit": "Ladevorgang",
                "step_value": 1,
                "editable": 1,
                "state": 1,
                "last_changed": 12345555,
                "changed_by": 1,
                "changed_by_id": 0,
                "based_on": 1,
                "data": "",
                "id": 551,
                "type": 1,
                "node_id": 55
            },
            {
                "instance": 0,
                "minimum": 0,
                "maximum": 100,
                "current_value": 100,
                "target_value": 100,
                "last_value": 100,
                "unit": "%25",
                "step_value": 1,
                "editable": 0,
                "state": 1,
                "last_changed": 1573711842,
                "changed_by": 1,
                "changed_by_id": 0,
                "based_on": 1,
                "data": "",
                "id": 560,
                "type": 8,
                "node_id": 55
            },
            {
                "instance": 0,
                "minimum": 0,
                "maximum": 4,
                "current_value": 3,
                "target_value": 3,
                "last_value": 4,
                "unit": "n%2Fa",
                "step_value": 1,
                "editable": 0,
                "state": 1,
                "last_changed": 1572634009,
                "changed_by": 1,
                "changed_by_id": 0,
                "based_on": 4,
                "data": "",
                "node": "[Circular ~.node]",
                "id": 561,
                "type": 33,
                "node_id": 55
            },
            {
                "state": 1,
                "instance": 4,
                "minimum": 0,
                "maximum": 1,
                "current_value": 0,
                "target_value": 0,
                "last_value": 0,
                "data": "",
                "unit": "Fehler",
                "step_value": 1,
                "editable": 1,
                "last_changed": 1602253984,
                "changed_by": 1,
                "changed_by_id": 0,
                "based_on": 1,
                "options": [],
                "id": 564,
                "type": 1,
                "node_id": 55
            },
            {
                "state": 1,
                "instance": 3,
                "minimum": 0,
                "maximum": 1,
                "current_value": 0,
                "target_value": 0,
                "last_value": 0,
                "data": "",
                "unit": "Leeren",
                "step_value": 1,
                "editable": 1,
                "last_changed": 1602253984,
                "changed_by": 1,
                "changed_by_id": 0,
                "based_on": 1,
                "options": [],
                "id": 563,
                "type": 1,
                "node_id": 55
            }
        ],
        "statusTemplate": "",
        "x": 660,
        "y": 280,
        "wires": [
            [
                "3f2c2e35.7cb6a2"
            ]
        ]
    },
    {
        "id": "35b7c389.fc92dc",
        "type": "ioBroker in",
        "z": "4ec44aab.defa54",
        "name": "Battery status",
        "topic": "roomba.0.states.battery",
        "payloadType": "value",
        "onlyack": "",
        "func": "rbe",
        "gap": "",
        "x": 190,
        "y": 280,
        "wires": [
            [
                "5eeea742.9d3f58"
            ]
        ]
    },
    {
        "id": "4c47580.2012f28",
        "type": "ioBroker in",
        "z": "4ec44aab.defa54",
        "name": "State whether bin status is full",
        "topic": "roomba.0.states.binFull",
        "payloadType": "value",
        "onlyack": "",
        "func": "rbe",
        "gap": "",
        "fireOnStart": "true",
        "x": 140,
        "y": 220,
        "wires": [
            [
                "2d2d6e16.37a6d2"
            ]
        ]
    },
    {
        "id": "41264f96.c6008",
        "type": "ioBroker in",
        "z": "4ec44aab.defa54",
        "name": "Wifi RSSI",
        "topic": "roomba.0.states.signal",
        "payloadType": "value",
        "onlyack": "",
        "func": "rbe",
        "gap": "",
        "x": 200,
        "y": 340,
        "wires": [
            [
                "27355e41.15a7f2"
            ]
        ]
    },
    {
        "id": "8d9bfd80.26bd3",
        "type": "function",
        "z": "4ec44aab.defa54",
        "name": "Set Running",
        "func": "var value = msg.payload;\nif (value === \"run\") {\n   value = 1\n}\nelse if (value !== \"run\") {\n    value = 0\n}\nmsg.payload = {\"attribute\":{ \"id\":550, \"value\": value}};\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 370,
        "y": 100,
        "wires": [
            [
                "1821f3f2.19f014"
            ]
        ]
    },
    {
        "id": "2d2d6e16.37a6d2",
        "type": "function",
        "z": "4ec44aab.defa54",
        "name": "Set bin full",
        "func": "var value = msg.payload;\nif (value === \"false\") {\n   value = 0\n}\nelse if (value === \"true\") {\n    value = 1\n}\nmsg.payload = {\"attribute\":{ \"id\":563, \"value\": value}};\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 370,
        "y": 220,
        "wires": [
            [
                "1821f3f2.19f014"
            ]
        ]
    },
    {
        "id": "5eeea742.9d3f58",
        "type": "function",
        "z": "4ec44aab.defa54",
        "name": "Set Battery level",
        "func": "var level = parseInt(msg.payload);\nmsg.payload = {\"attribute\":{ \"id\": 560, \"value\": level}};\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 380,
        "y": 280,
        "wires": [
            [
                "1821f3f2.19f014"
            ]
        ]
    },
    {
        "id": "27355e41.15a7f2",
        "type": "function",
        "z": "4ec44aab.defa54",
        "name": "Set Link Quality",
        "func": "var level=parseInt(msg.payload);\n\n// Verbindungsqualität von dbm in 0-4 umrechnen\nif (level > 90) {\n   level = 4\n}\nelse if (level > 60) {\n    level = 3\n}\nelse if (level > 30) {\n    level = 2\n}\nelse if (level > 10) {\n    level = 1\n}\nelse {\n    level = 0\n}\nmsg.payload = {\"attribute\":{ \"id\":561, \"value\": level}};\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 380,
        "y": 340,
        "wires": [
            [
                "1821f3f2.19f014"
            ]
        ]
    },
    {
        "id": "3f2c2e35.7cb6a2",
        "type": "switch",
        "z": "4ec44aab.defa54",
        "name": "ID?",
        "property": "payload.attributeId",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "550",
                "vt": "num"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 650,
        "y": 380,
        "wires": [
            [
                "ae37db2b.02e458"
            ]
        ]
    },
    {
        "id": "da6e5059.f8649",
        "type": "ioBroker in",
        "z": "4ec44aab.defa54",
        "name": "Vacuum state",
        "topic": "roomba.0.states.status",
        "payloadType": "value",
        "onlyack": "",
        "func": "rbe",
        "gap": "",
        "fireOnStart": "true",
        "x": 190,
        "y": 100,
        "wires": [
            [
                "8d9bfd80.26bd3",
                "f945f73b.23b38",
                "308e5d6a.d62a8a"
            ]
        ]
    },
    {
        "id": "d6907b58.363928",
        "type": "comment",
        "z": "4ec44aab.defa54",
        "name": "Node 55",
        "info": "",
        "x": 620,
        "y": 240,
        "wires": []
    },
    {
        "id": "ae37db2b.02e458",
        "type": "switch",
        "z": "4ec44aab.defa54",
        "name": "Control Cleaner",
        "property": "payload.targetValue",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "0",
                "vt": "num"
            },
            {
                "t": "eq",
                "v": "1",
                "vt": "num"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 820,
        "y": 360,
        "wires": [
            [
                "5cc2edea.85f72c"
            ],
            [
                "ab80be48.f722"
            ]
        ]
    },
    {
        "id": "ab80be48.f722",
        "type": "ioBroker out",
        "z": "4ec44aab.defa54",
        "name": "Start a cleaning process",
        "topic": "roomba.0.commands.start",
        "ack": "false",
        "autoCreate": "false",
        "stateName": "",
        "role": "",
        "stateUnit": "",
        "stateMin": "",
        "stateMax": "",
        "x": 1070,
        "y": 360,
        "wires": []
    },
    {
        "id": "5cc2edea.85f72c",
        "type": "ioBroker out",
        "z": "4ec44aab.defa54",
        "name": "Send the robot to the docking station",
        "topic": "roomba.0.commands.dock",
        "ack": "false",
        "autoCreate": "false",
        "stateName": "",
        "role": "",
        "stateUnit": "",
        "stateMin": "",
        "stateMax": "",
        "x": 1110,
        "y": 320,
        "wires": []
    },
    {
        "id": "f945f73b.23b38",
        "type": "function",
        "z": "4ec44aab.defa54",
        "name": "Set Loading",
        "func": "var value = msg.payload;\nif (value === \"charge\") {\n   value = 1\n}\nelse if (value !== \"charge\") {\n    value = 0\n}\nmsg.payload = {\"attribute\":{ \"id\":551, \"value\": value}};\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 370,
        "y": 40,
        "wires": [
            [
                "1821f3f2.19f014"
            ]
        ]
    },
    {
        "id": "308e5d6a.d62a8a",
        "type": "function",
        "z": "4ec44aab.defa54",
        "name": "set Stuck",
        "func": "var value = msg.payload;\nif (value === \"stuck\") {\n   value = 1\n}\nelse if (value !== \"stuck\") {\n    value = 0\n}\nmsg.payload = {\"attribute\":{ \"id\":564, \"value\": value}};\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 360,
        "y": 160,
        "wires": [
            [
                "1821f3f2.19f014"
            ]
        ]
    }
]

Grüße…

4 Like

Ich bekomme den iobroker Adapter einfach nicht installiert.
Kann mir das einer verständlich erklären?
Bin da kompletter Neuling und habe absolut keine Ahnung.

Ich bekomme immer folgende Fehler, wenn ich IP,Passwort und Nutername in den Adapter eingebe:

host.buanet-iobroker1	2020-10-09 21:08:40.948	info	Restart adapter system.adapter.roomba.0 because enabled
host.buanet-iobroker1	2020-10-09 21:08:40.947	info	instance system.adapter.roomba.0 terminated with code 0 (NO_ERROR)
roomba.0	2020-10-09 21:08:40.435	info	(621) Terminated (NO_ERROR): Without reason
roomba.0	2020-10-09 21:08:40.434	info	(621) terminating
roomba.0	2020-10-09 21:08:40.432	warn	(621) Unknown error! Please see debug log for details.
roomba.0	2020-10-09 21:08:40.431	info	(621) Roomba Connection closed.
roomba.0	2020-10-09 21:08:40.430	warn	(621) Connection lost! Roomba offline.
roomba.0	2020-10-09 21:08:40.420	info	(621) Adapter stopped und unloaded.
roomba.0	2020-10-09 21:08:40.419	error	at TLSWrap.onStreamRead (internal/stream_base_commons.js:188:23)
roomba.0	2020-10-09 21:08:40.419	error	at TLSSocket.Readable.push (_stream_readable.js:214:10)
roomba.0	2020-10-09 21:08:40.419	error	at readableAddChunk (_stream_readable.js:273:9)
roomba.0	2020-10-09 21:08:40.419	error	at addChunk (_stream_readable.js:298:12)
roomba.0	2020-10-09 21:08:40.419	error	at TLSSocket.emit (events.js:314:20)
roomba.0	2020-10-09 21:08:40.419	error	at TLSSocket.ondata (_stream_readable.js:719:22)
roomba.0	2020-10-09 21:08:40.419	error	at Writable.write (/opt/iobroker/node_modules/readable-stream/lib/_stream_writable.js:334:11)
roomba.0	2020-10-09 21:08:40.419	error	at writeOrBuffer (/opt/iobroker/node_modules/readable-stream/lib/_stream_writable.js:417:5)
roomba.0	2020-10-09 21:08:40.419	error	at doWrite (/opt/iobroker/node_modules/readable-stream/lib/_stream_writable.js:428:64)
roomba.0	2020-10-09 21:08:40.419	error	at Writable.writable._write (/opt/iobroker/node_modules/mqtt/lib/client.js:302:5)
roomba.0	2020-10-09 21:08:40.419	error	at work (/opt/iobroker/node_modules/mqtt/lib/client.js:292:12)
roomba.0	2020-10-09 21:08:40.419	error	at MqttClient._handlePacket (/opt/iobroker/node_modules/mqtt/lib/client.js:350:12)
roomba.0	2020-10-09 21:08:40.419	error	at MqttClient._handleConnack (/opt/iobroker/node_modules/mqtt/lib/client.js:920:15)
roomba.0	2020-10-09 21:08:40.419	error	(621) Error: Connection refused: Not authorized
roomba.0	2020-10-09 21:08:40.417	error	(621) uncaught exception: Connection refused: Not authorized
roomba.0	2020-10-09 21:08:36.429	info	(621) Connecting to Roomba (192.168.178.33)..
roomba.0	2020-10-09 21:08:36.383	info	(621) starting. Version 1.1.1 in /opt/iobroker/node_modules/iobroker.roomba, node: v12.19.0, js-controller: 3.1.6
host.buanet-iobroker1	2020-10-09 21:08:34.756	info	instance system.adapter.roomba.0 started with pid 621
host.buanet-iobroker1	2020-10-09 21:08:32.264	info	instance system.adapter.roomba.0 terminated with code 11 (ADAPTER_REQUESTED_TERMINATION)
roomba.0	2020-10-09 21:08:31.751	info	(606) Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason
roomba.0	2020-10-09 21:08:31.750	info	(606) terminating
roomba.0	2020-10-09 21:08:31.749	info	(606) Adapter stopped und unloaded.
roomba.0	2020-10-09 21:08:31.748	info	(606) Got terminate signal TERMINATE_YOURSELF
host.buanet-iobroker1	2020-10-09 21:08:31.746	info	stopInstance system.adapter.roomba.0 send kill signal
host.buanet-iobroker1	2020-10-09 21:08:31.745	info	stopInstance system.adapter.roomba.0 (force=false, process=true)

Liebe Grüße

Hallo TK1,

wenn Du Zugangsdaten in die Instanz des Adapters eingibst, muss diese ja schon installiert sein.
Auf der Seite wo die Zugangsdaten eingegben werden müssen, steht beschrieben, wie das Verfahren funktioniert:

Fülle die Anmeldeinformationen für die Authentifizierung des Roomba aus oder folge den nachfolgenden Schritten.
ACHTUNG: Die Anmeldeinformationen sind nicht die gleichen wie die der Smartphone-App!

Stelle sicher, dass dieser Adapter gestartet ist.
Stelle sicher, dass der Roomba auf der Home-Base steht und eingeschaltet ist.
Drücke und halte die HOME-Taste auf dem Roomba, bis eine kurze Serie von Tönen abgespielt wird (etwa 2 Sekunden).
Taste loslassen und das Roomba WLAN-Licht leuchtet auf.
Wieder hierher kommen und den Button "IP & Zugangsdaten abrufen" drücken.

Das Log lässt auch auf falsche Zugangsdaten schließen:

Viel Erfolg

in der Adapterkonfiguration bekomme ich nun folgenden Status:

 Status:

    Verbinde zum Adapter..
    Verbunden zum Adapter. Lade Zugangsdaten..
    Lade Zugangsdaten..
    Zugangsdaten konnten nicht geladen werden! Folge der Anleitung und versuche es nochmal. ({"errno":"EADDRINUSE","code":"EADDRINUSE","syscall":"bind","address":"0.0.0.0","port":5678})
    Lade IP Adresse..
    IP Adresse konnte nicht geladen werden! (bind EADDRINUSE 0.0.0.0:5678)


Was bedeutet das?
Danke und liebe Grüße

Hast Du das beschriebene Prozedere WIRKLICH befolgt?

Falls ja:
Befinden sich ioBroker und roomba im gleichen Subnetz?
Verhindert irgendetwas, z.Bsp. eine Firewall, die Kommunikation (Port: 5678 UDP) ioBroker<->roomba?
Wie ist dein ioBroker mit dem Netzwerk verbunden? WLAN?
Ist in deinem WLAN evtl. „Client Isolation“ aktiviert? (nur ein Schuß ins Blaue…)

Da eine verlässliche Hilfe zu geben ist leider extrem schwierig…

Das bedeutet ja im Klartext, dass der roomba gefunden wird, meine Tipps die Kommunikation betreffend werden also nix bringen, der roomba ist wohl eher nicht freigeschaltet.
Befolge die beschriebene Prozedur genauestens.

Noch 'ne Frage ganz am Rande, dein roomba ist schon in der Liste der unterstützten Geräte, oder?
Supported Roomba’s

1 Like

Ich denke, dass ich das mache, es aber einfach nicht funktionieren will.

Ja, ist ein 980.

Danke für deine Hilfe, aber ich habe absolut keine Ahnung was ich machen muss.
Werde das iobrocker, NodeRed Zeug wohl sein lassen und hoffen, dass homee irgendwann mal meine Geräte Unterstützt.

Liebe Grüße

Ist denn die Firmware des roomba aktuell?
lt. Kompatibilitätsliste wird dein Gerät erst ab v2.4.6-3 unterstützt

Ja, hat die Softwareversion 2.14.13-119 :man_shrugging:

Da ist doch irgendwas faul, die Version gibt’s lt. Release Notes gar nicht…
https://support.irobot.de/app/answers/detail/a_id/15155/~/roomba%C2%AE-900-serie-software-ver%C3%B6ffentlichungshinweise?cc=de&session=L2F2LzEvdGltZS8xNjAyMzMyNjA5L2dlbi8xNjAyMzMyNjA5L3NpZC9mVXl2NG4wSmRjdG5jTlJLVVpHTVJoRGpZWkp4eDN0ZTMlN0U3WVpjR0xjSkl5M3VaX2dldE9YMUtOOW0yeFJGVDk1RU1NclY0UWtoR2NsYjZfSXc4a2ZWYTlQdUwxeTlfbDhKa001V1RSNF9vZHV1WWVYVkhGOGZqZyUyMSUyMQ%3D%3D

Edit: Ob die Liste wirklich aktuell gehalten wird, weiß ich natürlich nicht.

Keine Ahnung :man_shrugging:

Das wird mit in der App angezeigt.

Aha, 2.4… nicht 2.14… :wink:
Egal, versuch mal so an die Zugangsdaten zu kommen -> https://github.com/koalazak/dorita980#how-to-get-your-usernameblid-and-password
Ggf. funktioniert das wohl bei Parallelzugriffen manchmal nicht?!?
Im Zweifel einfach mal die Apps wirklich beenden, die auf den roomba zugreifen.

Du scheinst mit deinem Problem nicht alleine, hier gibt’s noch jede Menge Lesestoff dazu…

Edit: Das verlinkte Forum wäre auch der richtige Ort, für dein Problem. Dort erreichst Du auch „Zefau“, den Entwickler des roomba-Adapters. Wenn der nicht helfen kann, wer dann…?

klassicher Tippfehler :smiley:

Wo gebe ich den Befehl ein?

or docker run command:

docker run -it node sh -c "npm install -g dorita980 && get-roomba-password <robotIP>"

Liebe Grüße

Warum als Docker? Installiere das NPM doch nativ und führe dann den Befehl aus…

Wenn du mir jetzt noch sagst was das bedeutet, dann mach ich das :smiley: sorry ich habe absolut keine Ahnung und das ist mein erster Versuch. Ich versuche zwar viel im Netz zu lesen, aber vieles verstehe ich einfach noch nicht.

Der erste graue Kasten…

Bitte sei mir nicht böse, aber wie war es Dir möglich ioBroker zu installieren?

Es gibt gefühlte 1000 Möglichkeiten ioBroker zu installieren, als Dockercontainer unter diversesten Systemen, nativ auf Linux, Windows oder auf angebissenem Obst und und und…
und nur Du weißt was Du gemacht hast. :wink: