Community

Mal wieder virtuelle Geräte - jetzt aber richtig!

Shelly-Dimmer2 in node-red unter ioBroker (nach michas Vorlage aus Github):

[
    {
        "id": "210f91d6.7cb1ee",
        "type": "homeeDevice",
        "z": "c6b752e9.23414",
        "virtual-homee": "",
        "name": "Esszimmer 1",
        "nodeId": "1530",
        "showNodeId": true,
        "profile": "11",
        "icon": "nodeicon_bulb",
        "attributes": "[{\"id\":1530,\"node_id\":1530,\"instance\":0,\"minimum\":0,\"maximum\":1,\"current_value\":0,\"target_value\":0,\"last_value\":0,\"unit\":\"\",\"step_value\":1,\"editable\":1,\"type\":1,\"state\":1,\"last_changed\":12345555,\"changed_by\":1,\"changed_by_id\":0,\"based_on\":1,\"data\":\"\"},{\"id\":1531,\"node_id\":1530,\"instance\":0,\"minimum\":0,\"maximum\":100,\"current_value\":0,\"target_value\":0,\"last_value\":0,\"unit\":\"%25\",\"step_value\":1,\"editable\":1,\"type\":2,\"state\":1,\"last_changed\":12345555,\"changed_by\":1,\"changed_by_id\":0,\"based_on\":1,\"data\":\"\"},{\"id\":1532,\"node_id\":1530,\"instance\":0,\"minimum\":0,\"maximum\":3000,\"current_value\":0,\"target_value\":0,\"last_value\":0,\"unit\":\"W\",\"step_value\":0.5,\"editable\":0,\"type\":3,\"state\":1,\"last_changed\":1572619585,\"changed_by\":1,\"changed_by_id\":0,\"based_on\":1,\"data\":\"\"},{\"id\":1533,\"node_id\":1530,\"instance\":0,\"minimum\":0,\"maximum\":50000,\"current_value\":0,\"target_value\":0,\"last_value\":0,\"unit\":\"kWh\",\"step_value\":1,\"editable\":0,\"type\":4,\"state\":1,\"last_changed\":1572807225,\"changed_by\":1,\"changed_by_id\":0,\"based_on\":1,\"data\":\"\"}]",
        "x": 640,
        "y": 800,
        "wires": [
            [
                "df8aae35.445e8",
                "e16ab0c1.46a01"
            ]
        ]
    },
    {
        "id": "c49a628e.1e268",
        "type": "ioBroker in",
        "z": "c6b752e9.23414",
        "name": "Essz Lampe 1 Status",
        "topic": "shelly.0.SHDM-2#E09806950DF0#1.lights.Switch",
        "payloadType": "value",
        "onlyack": "",
        "func": "rbe",
        "gap": "",
        "x": 140,
        "y": 800,
        "wires": [
            [
                "7bfb35a4.8095cc"
            ]
        ]
    },
    {
        "id": "47432df4.200864",
        "type": "ioBroker in",
        "z": "c6b752e9.23414",
        "name": "Essz Lampe 1 Power",
        "topic": "shelly.0.SHDM-2#E09806950DF0#1.lights.Power",
        "payloadType": "value",
        "onlyack": "",
        "func": "all",
        "gap": "",
        "x": 140,
        "y": 920,
        "wires": [
            [
                "87c8e404.35c6a8"
            ]
        ]
    },
    {
        "id": "ba704e73.98119",
        "type": "ioBroker in",
        "z": "c6b752e9.23414",
        "name": "Essz Lampe 1 Energy",
        "topic": "shelly.0.SHDM-2#E09806950DF0#1.lights.Energy",
        "payloadType": "value",
        "onlyack": false,
        "func": "all",
        "gap": "",
        "x": 140,
        "y": 980,
        "wires": [
            [
                "4aa2f068.7802a"
            ]
        ]
    },
    {
        "id": "87c8e404.35c6a8",
        "type": "function",
        "z": "c6b752e9.23414",
        "name": "Verbrauch",
        "func": "var power = parseFloat(msg.payload);\nmsg.payload = {\"attribute\":{\"id\":1532, \"value\": power}};\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 390,
        "y": 920,
        "wires": [
            [
                "210f91d6.7cb1ee"
            ]
        ]
    },
    {
        "id": "4aa2f068.7802a",
        "type": "function",
        "z": "c6b752e9.23414",
        "name": "Gesamt",
        "func": "var energy = parseFloat(msg.payload);\nmsg.payload = {\"attribute\":{\"id\":1533, \"value\": energy}};\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 380,
        "y": 980,
        "wires": [
            [
                "210f91d6.7cb1ee"
            ]
        ]
    },
    {
        "id": "7bfb35a4.8095cc",
        "type": "function",
        "z": "c6b752e9.23414",
        "name": "On/Off",
        "func": "if (msg.payload === \"true\"){var status =1}\nif (msg.payload === \"false\"){var status =0}\n\nnode.send({payload:{\"attribute\":{\"id\":1530,\"value\":status}}})",
        "outputs": 1,
        "noerr": 0,
        "x": 370,
        "y": 800,
        "wires": [
            [
                "210f91d6.7cb1ee"
            ]
        ]
    },
    {
        "id": "3059057d.ac789a",
        "type": "ioBroker in",
        "z": "c6b752e9.23414",
        "name": "Essz Lampe 1 Dimmer",
        "topic": "shelly.0.SHDM-2#E09806950DF0#1.lights.brightness",
        "payloadType": "value",
        "onlyack": "",
        "func": "rbe",
        "gap": "",
        "x": 140,
        "y": 860,
        "wires": [
            [
                "d9e570c8.182dc"
            ]
        ]
    },
    {
        "id": "d9e570c8.182dc",
        "type": "function",
        "z": "c6b752e9.23414",
        "name": "Dimmer",
        "func": "var dimmer = parseInt(msg.payload);\nmsg.payload = {\"attribute\":{\"id\":1531, \"value\": dimmer}};\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 380,
        "y": 860,
        "wires": [
            [
                "210f91d6.7cb1ee"
            ]
        ]
    },
    {
        "id": "10a0bfa1.bb79f",
        "type": "ioBroker out",
        "z": "c6b752e9.23414",
        "name": "Lampe 1 schalten",
        "topic": "shelly.0.SHDM-2#E09806950DF0#1.lights.Switch",
        "ack": "false",
        "autoCreate": "false",
        "x": 1210,
        "y": 800,
        "wires": []
    },
    {
        "id": "df8aae35.445e8",
        "type": "function",
        "z": "c6b752e9.23414",
        "name": "Homee schaltet Dimmer 1 On/Off",
        "func": "if (msg.payload.attributeId === 1530 && msg.payload.targetValue === 1){node.send({payload:'true'})}\nif (msg.payload.attributeId === 1530 && msg.payload.targetValue === 0){node.send({payload:'false'})}",
        "outputs": 1,
        "noerr": 0,
        "x": 960,
        "y": 800,
        "wires": [
            [
                "10a0bfa1.bb79f"
            ]
        ]
    },
    {
        "id": "e16ab0c1.46a01",
        "type": "function",
        "z": "c6b752e9.23414",
        "name": "Homee dimmt Dimmer 1",
        "func": "var tava  = msg.payload.targetValue;\nif (msg.payload.attributeId === 1531){node.send({payload:parseFloat(tava)})}\n",
        "outputs": 1,
        "noerr": 0,
        "x": 930,
        "y": 860,
        "wires": [
            [
                "bb0b4fde.f04be"
            ]
        ]
    },
    {
        "id": "bb0b4fde.f04be",
        "type": "ioBroker out",
        "z": "c6b752e9.23414",
        "name": "Lampe 1 dimmen",
        "topic": "shelly.0.SHDM-2#E09806950DF0#1.lights.brightness",
        "ack": "false",
        "autoCreate": "false",
        "x": 1210,
        "y": 860,
        "wires": []
    }
]
5 Like

Sagtmal…
Wir nutzen hier ja nun fast alle die iobroker node-red Konfiguration.

Spricht eigentlich etwas dagegen node-red unter hass.io laufen zu lassen?
Finde die Visualisierungsmöglichkeiten für ein zusätzliches Dashboard dort irgendwie schöner.

Das geht genau so gut, es gibt auch einige bei „uns“ die hass.io nutzen.

Oder Du setzt dich mit der ioborker VIS auseinander.
Ich bin damit auch mittlerweile super zufrieden.

1 Like

Ich auch!

Danke euch.
Ja VIS fand ich eigentlich nicht schlecht. Aber für jedes Endgerät eine eigene Visualisierung zu bauen fand ich recht mühsam…

Wenn du erstmal ein Grundlayout mit Inhalten hast, geht das recht einfach.

Sehe ich auch wie @Sofasportler, für die Geräte je nach Funktion einmal ein Widget erstellen. Dann ist es nur noch bisschen Fleißarbeit, kopieren und anpassen.

Ich habe ja nun einen virtuellen homee erfolgreich im Node-red unter iobroker aufgesetzt.

Aber jetzt habe ich gerade ein großes Brett vorm Kopf: wie kann ich denn die Geräte ansprechen, die in meinem realen Homee über „zWave“ verbunden sind?

Die ID und NODE-ID kann ich ja über den Debug-Node am homee-API-Knoten auslesen. Jetzt muss ich ja irgendwie über diese Infos z.B. einen Fibaro-Switch schalten können. Kann mir bitte mal jemand einen Schubs gegen, welchen Node ich dafür nehme? Danke!

Das geht über den put Befehl

Put:/nodes/000/attributes/000?target_value=1
oder 0

1 Like

Vielen Dank, Micha! Das war es!

Jetzt schaltet der Busch-Jäger Friends of Hue Switch den Shelly Dimmer! Weltklasse und es wird immer besser…

Moin Zusammen,

ich habe heute morgen meine Node-Red Palette auf 0.6.0 gepatched. Jetzt bekomme ich bei der „Standardanweisung“ :

var devices = attributes.filter(attribute => ((attribute.type === 3)||(attribute.type === 999)) && ((attribute.current_value > 0) ))//.map(a => a.current_value).reduce((a,c) => a+c);

folgende Fehlermeldung:

TypeError: Cannot read property ‚filter‘ of undefined

Was hat sich hier geändert? Wie kann ich das korrigieren?

Ich habe das in zig Funktionen drin und ale laufen auf Fehler :frowning:

Grüße
Carsten

Der globale Context sprich:

const attributes = global.get(‚homee.attributes‘);
const nodes = global.get(‚homee.nodes‘);

war nicht mehr verfügbar. Ursache ein neuer Parameter in der API (oder einer der mir noch nie aufgefallen ist)

Aber sonst hab ich keinen großen Vorteil erkennen können.
Ich hab allerdings noch nicht versucht die Homee Geräte in die Vis oder aber in Hass.io zu bekommen und auch noch keinen Plan wie…

Ins vis bekommst du sie über iobroker. Damit (iobroker) hab ich jetzt begonnen und finde es leichter, damit umzugehen, als mit hass. Mit blockly kann man sich Szenen und Steuerungen selbst geräteübergreifend zusammenbauen und es ist logischer als eine Programmiersprache, da visuell über Bausteine gearbeitet wird.
Vis wird meine nächste Baustelle…so ganz steige ich da noch nicht durch…muss erst wieder die YouTube Uni besuchen. :wink:

3 Like

Über das Problem der neuen Option zum Global Context war ich auch gestolpert. Hatte Stefan angefragt. Lt. seiner Aussage sollte es per Default angehakt sein, aber scheinbar funktioniert es beim Update nicht sauber. Er wollte einen Hinweis in seinem Wiki aufnehmen.

Moin moin, kann man eigentlich so eine Auswahl mit einer beliebigen Liste darstellen? In meinem Fall, was die Lüftung machen soll: Auto, Aus, Kühlen, Heizen,…

Hat sonst jemand eine Idee wie man am besten so eine Auswahl darstellt über NR im homee?

Danke schon mal vorab!

Für alle, die sich auch damit herumschlagen, die Firmware/Software von Geräten aus ioB/NR nach hih zu bringen, hier die Lösung.
Dank der Vorarbeit von @mwr87 und mit tatkräftiger Unterstützung von @stfnhmplr habe ich es hinbekommen.
Voraussetzung ist node-red-contrib-homee in Version 0.6.0.
grafik
Die Version hole ich mir mit einem „ioBroker in“.
Der Trick ist dann, die payload nach data zu schieben:

var firmware = msg.payload;

return {
    payload: {"attribute": {"id": 121, "value": 0, "data": firmware}}
}

Im hih device wird es so konfiguriert:

{
        "id": 121,
        "node_id": 120,
        "instance": 0,
        "minimum": 0,
        "maximum": 0,
        "current_value": 0,
        "target_value": 0,
        "last_value": 0,
        "unit": "text",
        "step_value": 1,
        "editable": 0,
        "type": 44,
        "state": 1,
        "last_changed": 1573711842,
        "changed_by": 1,
        "changed_by_id": 0,
        "based_on": 1,
        "data": ""
    }

Nicht wundern, wenn es am device in NR nur mit „0 text“ angezeigt wird, da wird halt nur der value ausgegeben und nicht data.
Dafür sieht es in homee dann so aus:
grafik

Die String Übergabe funktioniert auf jeden Fall neben den types 44 (Firmware) und 45 (Software) auch mit dem type 216 (Programm). Damit lasse ich von meiner Therme das Heizprogramm anzeigen:
grafik
Weitere types die das unterstützen habe ich noch nicht gefunden, können aber gerne hier gepostet werden.

6 Like

Könntest du evtl über einen Dimmwert realisieren :thinking:

Hi, ja ist auf jeden fall eine Lösung, so hatte ich es auch von der Vorlage aus dem git für Sonos übernommen. Allerdings halt kur numerische Werte oder wie kann ich die verschiedenen Status anzeigen?

Hier bei der Bose Anlage hätte ich auch lieber das was hinter den Presets sind angezeigt und weniger die Nummer selber. Sind diese Werteauswahl so hard kodiert im homee oder lassen die sich wie auch immer ändern?