homee in Verbindung mit MQTT: homeeToMqtt

MQTT direkt in homee fände ich cool und wäre auch nicht beleidigt.
Syslog und ein paar mehr Infos aus der homee würde mich in der Fehleranalyse echt nach vorne bringen.

Syslog benutzen wir hier bei der Ferrari electronic, meinem Arbeitgeber in unseren Gateways mit sehr viel Output sehr erfolgreich. UDP basiert lässt sich syslog einfach als fire and forget Protokoll implementieren. MQTT und SYSLOG kann man dann, muss aber nicht konfiguriert werden. Der Normalnutzer braucht es nicht und die extrem User müssen sich dann halt damit auseinandersetzen.

1 „Gefällt mir“

Zu dem homee Problem.
Nach meiner Erfahrung, ist die Größe des homee Backups ein guter Indikator.
Ist das Backup wesentlich größer als 600k (bei mir sind es ca. 100 Devices) läuft was im system schief.

Den Effekt habe ich aber mit homeeToMqtt nicht. Mit dem Node-Red plugin von Stephan aber sehr wohl. Wobei ich nicht behaupten möchte, das es am Plugin liegt. Das habe ich noch nicht im Detail untersucht und Stephan hat laut Quelle auch Maßnahmen getroffen ein mehrfaches einloggen zu verhindern. Bei scheint aber nach dem Stilllegen des Plugins Ruhe zu sein.

Zumindest kann es nicht Schaden, beide Programme mal einzeln laufen zu lassen und den Speicherverbrauch via Backup zu checken.

Ansonsten gilt, homeeToMqtt ist auch frisch und es gibt noch keine Langzeiterfahrung.

Ciao
Gido

@Baschtl

Edit2: verstehe ich nicht :wink:

Habt einen slack Channel zur Koordinierung oder ist das ein Typo?

Ich weiss allerdings nicht wie ich das Like von @Tobias auf meine Aussage oben, dass es am coolsten wäre, wenn homee direkt MQTT-Messages publishen könnte, werten soll. Vielleicht, dass die homees das schon auf der Roadmap haben? @Timo: Klärt uns auf - das wäre auch für @gido fair, der ja viel Zeit und Herzblut in diesen Proof-of-Concept steckt.

Ich persönlich bin auf jeden Fall MQTT Fan, aber leider gibt es dazu derzeit keine Pläne :frowning:

Danke für die Aussage…

Ja, kenne ich schon (ich bin regelmässig vor meinen Backups wieder am Aus- und wieder Einloggen).

Ja wir haben ein public slack wo man sich etwas austauschen kann;

Ich kann nur sagen, super Arbeit!!! Hab das jetzt eine Woche laufen und keine Problem. MQTT Daten werden von mir in Node-Red verarbeitet. Jetzt am Wochenende habe ich einige Geräte aus dem homee exkludiert und wieder in die Hue und Tradfri Bridge eingebunden, welche wiederum mit Node-Red verbunden sind. Homee dient so langsam nur noch als “dumme” Bridge für Zwave/Enocean Geräte. Es lassen sich deutlich mehr Use Cases und deutlich mehr Funktionen in Node-Red abbilden. Derzeit bin ich am Bau des Dashboards.

Das kann ich jedem nur Empfehlen.

1 „Gefällt mir“

Hi,
danke für das Lob.

Bei der Idee mit der Verdummung von homee habe ich mich auch schon erwischt.
Ich gebe aber den neuen Z-Wave Stack eine Chance.
Baust du dein Dashboard auf Node-Red Basis?

Ist auch nett um den homee zu ioBroker zu holen. damit ist dann auch vieles möglich :slight_smile:

@uvex

Solltest du das geschafft haben, wäre ich über Hilfe deinerseits dankbar.

IoBroker ist genial, genialer wäre es noch wenn ich die Daten von homee als Datensätze in IoBroker hatte…

Komm mit dem mqtt nicht wirklich klar - bzw. habe besser gesagt keine Ahnung wie man da vorgehen muss. Es gibt zwar einen Adapter -… und dann?

Ja, baue die Dashboards mit “node-red-dashboard”. Damit kann ich alles realisieren und wie ich das möchte. Time series gehen bei mir in influxdb. Stichwort Sprüche. Ich habe mir jetzt noch den ConBee besorgt. Der spielt unteranderem auch die Firmware anderer Devices auf und unterstützt unteranderem auch Xiaomi Sensoren und co.

Ich möchte endlich vom dem Polling weg, da ist mit deCONZ und Websocket die perfekte Möglichkeit auf Sensor Events in nahezu Realtime zu reagieren. Hue Bridge und co. benötigt ja Polling… Endlich kann ich dann auch die ESP32 per MQTT mit einbinden :slight_smile:

Zwave habe ich nur für Plugs, die werde ich wohl wie es ausschaut mit Wifi Plugs ersetzen.

1 „Gefällt mir“

Ich schaue mal das ich dir da ne kleine Anleitung baue.
Damit hättest du dann deine Datensätze in iobroker und homee wäre endlich wirklich Smart und keine halbgare Sache wo mal wieder seit Wochen nichts passiert.

2 „Gefällt mir“

Ey das wäre genial- es hört sich so an, als ob du das schon am laufen hast.

Darauf warte ich schon die ganze Zeit … also wenn du da Infos hast wie es geht - wäre ich dir sehr sehr dankbar dafür :wink::+1:

Bitte für alle zugänglich machen :wink:

2 „Gefällt mir“

Hier mal mein minimal Setup um den Xiaomi Vacuum via MQTT mit Hilfe von IOBroker an Node-RED anzubinden. Dieser ist dann wiederum als Wemo Schalter in der homee eingebunden.



und in Node-RED

[
    {
        "id": "69dd22c3.4d38ac",
        "type": "tab",
        "label": "Xiaomi",
        "disabled": false,
        "info": ""
    },
    {
        "id": "de7bb555.cd27e8",
        "type": "inject",
        "z": "69dd22c3.4d38ac",
        "name": "Xiaomi 0 find",
        "topic": "mihome-vacuum/0/control/find/set",
        "payload": "true",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 170,
        "y": 100,
        "wires": [
            [
                "2b14e7e5.e953b8"
            ]
        ]
    },
    {
        "id": "2b14e7e5.e953b8",
        "type": "mqtt out",
        "z": "69dd22c3.4d38ac",
        "name": "",
        "topic": "",
        "qos": "",
        "retain": "",
        "broker": "504010af.ff61a",
        "x": 552.0000190734863,
        "y": 92.3333568572998,
        "wires": []
    },
    {
        "id": "2e8f763.b970e8a",
        "type": "wemo-emulator",
        "z": "69dd22c3.4d38ac",
        "name": "XiaomiVaccum1",
        "friendlyName": "Xiaomi Vacuum Cleaner Basement",
        "serial": "1",
        "port": "40001",
        "onTopic": "mihome-vacuum/0/control/start/set",
        "onPayload": "true",
        "offTopic": "mihome-vacuum/0/control/pause/set",
        "offPayload": "true",
        "x": 200,
        "y": 400,
        "wires": [
            [
                "2b14e7e5.e953b8",
                "56e9b14f.f67bf"
            ]
        ]
    },
    {
        "id": "e0e7b529.a7e238",
        "type": "inject",
        "z": "69dd22c3.4d38ac",
        "name": "Xiaomi 0 fan_control 40",
        "topic": "mihome-vacuum/0/control/fan_power/set",
        "payload": "40",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 200,
        "y": 140,
        "wires": [
            [
                "2b14e7e5.e953b8"
            ]
        ]
    },
    {
        "id": "a7257387.0818c",
        "type": "inject",
        "z": "69dd22c3.4d38ac",
        "name": "Xiaomi 0 home",
        "topic": "mihome-vacuum/0/control/home/set",
        "payload": "true",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 180,
        "y": 180,
        "wires": [
            [
                "2b14e7e5.e953b8"
            ]
        ]
    },
    {
        "id": "665698cc.7caae8",
        "type": "inject",
        "z": "69dd22c3.4d38ac",
        "name": "Xiaomi 0 pause",
        "topic": "mihome-vacuum/0/control/pause/set",
        "payload": "true",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 180,
        "y": 220,
        "wires": [
            [
                "2b14e7e5.e953b8"
            ]
        ]
    },
    {
        "id": "2d8accdf.1e9f94",
        "type": "inject",
        "z": "69dd22c3.4d38ac",
        "name": "Xiaomi 0 start",
        "topic": "mihome-vacuum/0/control/start/set",
        "payload": "true",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 170,
        "y": 260,
        "wires": [
            [
                "2b14e7e5.e953b8"
            ]
        ]
    },
    {
        "id": "56e9b14f.f67bf",
        "type": "debug",
        "z": "69dd22c3.4d38ac",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 540,
        "y": 400,
        "wires": []
    },
    {
        "id": "504010af.ff61a",
        "type": "mqtt-broker",
        "z": "",
        "name": "",
        "broker": "localhost",
        "port": "1883",
        "clientid": "",
        "usetls": false,
        "compatmode": true,
        "keepalive": "60",
        "cleansession": true,
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": ""
    }
]

Hier homeeToMqtt mit Node-RED:

[
    {
        "id": "d1afdabe.79e0a8",
        "type": "mqtt out",
        "z": "71e613df.12327c",
        "name": "",
        "topic": "",
        "qos": "",
        "retain": "",
        "broker": "504010af.ff61a",
        "x": 710,
        "y": 620,
        "wires": []
    },
    {
        "id": "4ee4a3ad.01fd1c",
        "type": "inject",
        "z": "71e613df.12327c",
        "name": "Büro Gang ein",
        "topic": "homee/devices/set/200/attributes/1051",
        "payload": "1",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": "",
        "x": 470,
        "y": 600,
        "wires": [
            [
                "d1afdabe.79e0a8"
            ]
        ]
    },
    {
        "id": "2beedd77.59c1f2",
        "type": "inject",
        "z": "71e613df.12327c",
        "name": "Büro Gang aus",
        "topic": "homee/devices/set/200/attributes/1051",
        "payload": "0",
        "payloadType": "str",
        "repeat": "",
        "crontab": "",
        "once": false,
        "x": 480,
        "y": 640,
        "wires": [
            [
                "d1afdabe.79e0a8"
            ]
        ]
    },
    {
        "id": "504010af.ff61a",
        "type": "mqtt-broker",
        "z": "",
        "name": "",
        "broker": "localhost",
        "port": "1883",
        "clientid": "",
        "usetls": false,
        "compatmode": true,
        "keepalive": "60",
        "cleansession": true,
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": ""
    }
]

Hier mal ein Flow zum loggen aller eingehenden MQTT Nachrichten:

[
    {
        "id": "b75d84ce.01e5d8",
        "type": "mqtt in",
        "z": "71e613df.12327c",
        "name": "",
        "topic": "#",
        "qos": "2",
        "broker": "504010af.ff61a",
        "x": 90,
        "y": 100,
        "wires": [
            [
                "b5b3fe30.c209"
            ]
        ]
    },
    {
        "id": "d18c8e56.1bd12",
        "type": "debug",
        "z": "71e613df.12327c",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 588,
        "y": 106,
        "wires": []
    },
    {
        "id": "b5b3fe30.c209",
        "type": "switch",
        "z": "71e613df.12327c",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "cont",
                "v": "{",
                "vt": "str"
            },
            {
                "t": "else"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 250,
        "y": 100,
        "wires": [
            [
                "e218d27.73bce3"
            ],
            [
                "d18c8e56.1bd12"
            ]
        ]
    },
    {
        "id": "e218d27.73bce3",
        "type": "json",
        "z": "71e613df.12327c",
        "name": "",
        "property": "payload",
        "action": "",
        "pretty": false,
        "x": 410,
        "y": 77,
        "wires": [
            [
                "d18c8e56.1bd12"
            ]
        ]
    },
    {
        "id": "504010af.ff61a",
        "type": "mqtt-broker",
        "z": "",
        "name": "",
        "broker": "localhost",
        "port": "1883",
        "clientid": "",
        "usetls": false,
        "compatmode": true,
        "keepalive": "60",
        "cleansession": true,
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": ""
    }
]

Und hier alle homeeToMqtt Nachrichten in eine InfluxDB kippen.
InfluxDb: iot; User:iot; Pw:iot;
Der “Switch” filtert alle Temperaturnachrichten und schreibt sie nach Debug.

[
    {
        "id": "5dfc6bb4.e52534",
        "type": "mqtt in",
        "z": "31c0f069.6e0ff",
        "name": "",
        "topic": "homee/devices/status/#",
        "qos": "2",
        "broker": "504010af.ff61a",
        "x": 222,
        "y": 480,
        "wires": [
            [
                "bcb26a10.481348"
            ]
        ]
    },
    {
        "id": "ebe394cd.94d2f8",
        "type": "function",
        "z": "31c0f069.6e0ff",
        "name": "",
        "func": "var tokens = msg.topic.split(\"/\");\nif(!msg.payload.unit) {\n    msg.payload.unit='n/a'\n}\nmsg.url =\"http://ds1515.fritz.box:8086/write?u=iot;p=iot;db=iot\";\nmsg.payload = msg.payload.name.replace(/\\s+/g, '_') + \",type=\" + msg.payload.typeString + \",unit=\" + msg.payload.unit + \" value=\" + msg.payload.data;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 570,
        "y": 482,
        "wires": [
            [
                "af0c03c1.c3ea6"
            ]
        ]
    },
    {
        "id": "af0c03c1.c3ea6",
        "type": "http request",
        "z": "31c0f069.6e0ff",
        "name": "",
        "method": "POST",
        "ret": "txt",
        "url": "",
        "tls": "",
        "x": 763.9999885559082,
        "y": 482.00002098083496,
        "wires": [
            []
        ]
    },
    {
        "id": "bcb26a10.481348",
        "type": "json",
        "z": "31c0f069.6e0ff",
        "name": "",
        "pretty": "false",
        "x": 409.00000381469727,
        "y": 482,
        "wires": [
            [
                "ea5108c5.9b2c88",
                "ebe394cd.94d2f8"
            ]
        ]
    },
    {
        "id": "645d413.15e80c",
        "type": "debug",
        "z": "31c0f069.6e0ff",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload.name",
        "x": 784.4999923706055,
        "y": 535.9999942779541,
        "wires": []
    },
    {
        "id": "ea5108c5.9b2c88",
        "type": "switch",
        "z": "31c0f069.6e0ff",
        "name": "",
        "property": "payload.type",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "5",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 569.519889831543,
        "y": 535.7528324127197,
        "wires": [
            [
                "645d413.15e80c"
            ]
        ]
    },
    {
        "id": "504010af.ff61a",
        "type": "mqtt-broker",
        "z": "",
        "name": "",
        "broker": "localhost",
        "port": "1883",
        "clientid": "",
        "usetls": false,
        "compatmode": true,
        "keepalive": "60",
        "cleansession": true,
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": ""
    }
]

Na da ist doch schon der Ansatz . Kannst das ganze genau so wie bei dem ersten Beispiel machen dann sind die homee States usw komplett unter iobroker mit mqtt verfügbar.

Ich bin erst morgen wieder am Rechner wenn das nicht reicht kann ich das schnell noch posten

Nein das reicht schon noch die Tage, wenn du Zeit hast…

Das heißt ich brauch das Node red homee Plugin… habe ich das richtig verstanden, oder das mqtt2homee?

Du siehst, So ganz schnall ich das noch nicht :see_no_evil:

Von daher wäre ich dir über ne kleine Anleitung dankbar…

Danke @guido für deinen Post…

Sieht bei meinem Xiaomi Vacuum aber nicht so kompliziert aus, bzw nutze nur Wemo in Verbindung mit homee und Xiaomi.

Das ist zur Zeit alles mit homeeToMqtt gelöst.
Die Idee dahinter ist alle Komponenten im heimischen IOT System (homee, ESP8266 mit Tasmota Firmware, IOBroker,…) pushen irgendwie ihre Stati nach MQTT und ein Service der alle MQTT Nachrichten empfängt (Homebridge, IOBroker, Node-RED, …) kümmert sich um die Verarbeitung.
Da hier jeder Sender und Empfänger sein kann, kann man dann lustige Sachen bauen.
Ein Knoten im Kopf ist dann vorprogrammiert.
Mein IOBroker macht derzeit nur eine Sache, nämlich XIAOMI nach MQTT und umgekehrt zu übersetzen. Gesteuert wir mit Node-RED

Das Ganze läuft derzeit auf einen Nanopi Air mit homeean.
Aber seit gewarnt, da kann man schon Zeit verbraten.
Die breite Unterstützung von irgendwelchen Geräten in Homebridge, IOBroker oder Node-RED macht es dann auch wieder interessant. Beschäftigen muss sich aber damit intensiv und es bestimmt nicht Plug und Play. Es soll ja nur keiner sagen man hätte ihn nicht gewarnt :wink:

Wenn du nur Node-RED an homeean brauchst ist wahrscheinlich @stfnhmplr plugin die bessere Wahl.

CIao
Gido

Moin, bei mir soll allesamt in iobroker zusammenlaufen, sprich ich hätte einfach gerne die States von homee in Iobroker, ob ich dann mit nodred oder blocky etc. weiterarbeite muss man sehen.

Wäre nicht der erste Knoten, den ich im Kopf hätte …:wink: