Mal wieder virtuelle Geräte - jetzt aber richtig!

OK - Im Anhang der ganze Flow in JSON. Wie immer mit der „fake“ PDF extension.
Hue_THampp.json.pdf (73,6 KB)

Hier der Flow für die Hue FB als vhih.

VG

Hi,

habe auch eine Frage. Habe mir von gledopto ein Ambilight zugelegt. Das habe ich auch bereits im iobroker implementiert. Auch einen flow mit etwas Suche bei euch angelegt. Funktioniert auch zum Teil. Was ich nicht richtig hinbekomme, sind die TV Szenen. HIer habe ich ur heraus gelesen das es hochgezählt werden muss. Beginnend bei : 80000000000000000000000000000000 und dann 81000000000000000000000000000000 usw… DAs wird in homee jedoch nicht richtig übernommen. Ich habe es als Dimmwert eingestellt, aber irgendwie mache ich etwas falsch. Bin aber auch extremer Anfänger. für eine Idee wäre ich sehr dankbar.
LED strip TV ambilieght.txt.pdf (9,3 KB)

Wieviele Szenen gibt es denn ?

1 „Gefällt mir“

Fernsehen 3, beginnend bei 8000… bis 82000…
Musik 3, beginnend bei 83000… bis 85000…
Ambiente beginnen bei 86000… bis 97000…

okay aber wieviele beinhaltet denn Fernsehen?
Kannst du mal den Payload vom iobroker Level einstellen ?

6.3.2022, 12:42:00node: Statemsg : error

„Error: connect ECONNREFUSED 192.168.178.57:5005“

6.3.2022, 12:42:00node: ae6b60ce.44743msg : string[40]

„Unexpected token E in JSON at position 0“

6.3.2022, 12:42:15node: Statemsg : error

„Error: connect ECONNREFUSED 192.168.178.57:5005“

6.3.2022, 12:42:15node: ae6b60ce.44743msg : string[40]

„Unexpected token E in JSON at position 0“

6.3.2022, 12:42:30node: Statemsg : error

„Error: connect ECONNREFUSED 192.168.178.57:5005“

6.3.2022, 12:42:30node: ae6b60ce.44743msg : string[40]

"Unexpected token E in JSON at posi

Fernsehen hat drei Szenen

Ich würde das etwas umbauen und nur mit den drei Szenen arbeiten.
Der Payload bringt mich nicht weiter.
Dein scene-data liefert doch etwas und das meine ich.
Einfach nen Debug dran hängen und schauen was er liefert wenn du die Szene einstellst.

Edit: mit dem Dimmlevel kannst du ja nicht wirklich genau einstellen.
:rofl:

korrigiert

6.3.2022, 13:02:51node: c9c7a71f.ffb648tuya/0/bff049b02f35934de3pc6c/25 : msg.payload : string[32]

„81000000000000000000000000000000“

6.3.2022, 13:02:53node: c9c7a71f.ffb648tuya/0/bff049b02f35934de3pc6c/25 : msg.payload : string[32]

„82000000000000000000000000000000“

6.3.2022, 13:02:55node: Statemsg : error

„Error: connect ECONNREFUSED 192.168.178.57:5005“

6.3.2022, 13:02:55node: ae6b60ce.44743msg : string[40]

„Unexpected token E in JSON at position 0“

6.3.2022, 13:02:56node: c9c7a71f.ffb648tuya/0/bff049b02f35934de3pc6c/25 : msg.payload : string[32]

„80000000000000000000000000000000“

6.3.2022, 13:03:10node: Statemsg : error

„Error: connect ECONNREFUSED 192.168.178.57:5005“

das steht bei den Objektdaten zu dem Szenen Wert:

{
„type“: „state“,
„common“: {
„type“: „string“,
„read“: true,
„write“: true,
„name“: „scene_data“,
„role“: „text“
},
„native“: {},
„from“: „system.adapter.tuya.0“,
„user“: „system.user.admin“,
„ts“: 1646507371986,
„_id“: „tuya.0.bff049b02f35934de3pc6c.25“,
„acl“: {
„object“: 1636,
„state“: 1636,
„owner“: „system.user.admin“,
„ownerGroup“: „system.group.administrator“
}
}

Wenn ich das richtig sehe, dann sind die ersten zwei stellen deines Value entscheidend.
Also Sollte der Wert dann auf die ersten zwei stellen reduziert werden.
Somit liegt dann also dein Slider im Bereich von 80-100.

Korrekt. Von 80 bis 97

Aber es muss irgendwie als große Zahl zurückgeliefert werden

[
    {
        "id": "d3906e60.96d4",
        "type": "homeeDevice",
        "z": "e92f9430.a6cd58",
        "virtual-homee": "",
        "name": "LED strip TV",
        "nodeId": "16",
        "showNodeId": true,
        "profile": "1002",
        "icon": "nodeicon_tv",
        "attributes": [
            {
                "instance": 0,
                "minimum": 0,
                "maximum": 1,
                "current_value": 0,
                "target_value": 0,
                "last_value": 0,
                "unit": "n%2Fa",
                "step_value": 1,
                "editable": 1,
                "state": 1,
                "last_changed": 1572944008,
                "changed_by": 1,
                "changed_by_id": 0,
                "based_on": 1,
                "data": "",
                "type": 1,
                "id": "160",
                "node_id": "16"
            },
            {
                "type": 2,
                "state": 1,
                "instance": 0,
                "minimum": 0,
                "maximum": 1000,
                "current_value": 0,
                "target_value": 0,
                "last_value": 0,
                "data": "",
                "name": "",
                "unit": "%25",
                "step_value": 1,
                "editable": 1,
                "last_changed": 1646564312,
                "changed_by": 1,
                "changed_by_id": 0,
                "based_on": 1,
                "options": [],
                "id": "161",
                "node_id": "16"
            },
            {
                "type": 2,
                "state": 1,
                "instance": 1,
                "minimum": 80,
                "maximum": 100,
                "current_value": 80,
                "target_value": 0,
                "last_value": 0,
                "data": "",
                "name": "Szene",
                "unit": "",
                "step_value": 1,
                "editable": 1,
                "last_changed": 1646564337,
                "changed_by": 1,
                "changed_by_id": 0,
                "based_on": 1,
                "options": [],
                "id": "162",
                "node_id": "16"
            }
        ],
        "statusTemplate": "",
        "x": 750,
        "y": 240,
        "wires": [
            [
                "42651e79.b56f3",
                "5659a4d6.9f1ffc",
                "1182a81d.67cd68"
            ]
        ]
    },
    {
        "id": "42651e79.b56f3",
        "type": "function",
        "z": "e92f9430.a6cd58",
        "name": "LED strip TV Ein/Aus von homee",
        "func": "if (msg.payload.attributeId == 160)\n{\nif (msg.payload.targetValue === 0) {\n    return [{\n        payload:false}];\n}\nif (msg.payload.targetValue == 1) {\n    return [{\n        payload:true}];\n}\n}",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 1060,
        "y": 200,
        "wires": [
            [
                "cc6e7768.e67988"
            ]
        ]
    },
    {
        "id": "cc6e7768.e67988",
        "type": "ioBroker out",
        "z": "e92f9430.a6cd58",
        "name": "switch_led",
        "topic": "tuya.0.bff049b02f35934de3pc6c.20",
        "ack": "false",
        "autoCreate": "false",
        "stateName": "",
        "role": "",
        "payloadType": "",
        "readonly": "",
        "stateUnit": "",
        "stateMin": "",
        "stateMax": "",
        "x": 1310,
        "y": 200,
        "wires": []
    },
    {
        "id": "df0d3064.f2d38",
        "type": "ioBroker in",
        "z": "e92f9430.a6cd58",
        "name": "switch_led",
        "topic": "tuya.0.bff049b02f35934de3pc6c.20",
        "payloadType": "value",
        "onlyack": "",
        "func": "all",
        "gap": "",
        "fireOnStart": "false",
        "x": 140,
        "y": 200,
        "wires": [
            [
                "ca95da54.a798b8"
            ]
        ]
    },
    {
        "id": "ca95da54.a798b8",
        "type": "function",
        "z": "e92f9430.a6cd58",
        "name": "LED strip TV Ein/Aus nach homee",
        "func": "if (msg.payload == 'false') {\n    return [{\n        payload:{\"attribute\":{\"id\":160,\"value\":0}}}];\n}\n\nif (msg.payload == 'true') {\n    return [{\n        payload:{\"attribute\":{\"id\":160,\"value\":1}}}];\n}",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 460,
        "y": 200,
        "wires": [
            [
                "d3906e60.96d4"
            ]
        ]
    },
    {
        "id": "5659a4d6.9f1ffc",
        "type": "function",
        "z": "e92f9430.a6cd58",
        "name": "LED strip TV Level von homee",
        "func": "if (msg.payload.attributeId == 161)\n{\n    return [{\n        payload:msg.payload.targetValue}];\n}",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 1050,
        "y": 280,
        "wires": [
            [
                "b6d1405d.45ce7"
            ]
        ]
    },
    {
        "id": "b6d1405d.45ce7",
        "type": "ioBroker out",
        "z": "e92f9430.a6cd58",
        "name": "bright_value",
        "topic": "tuya.0.bff049b02f35934de3pc6c.22",
        "ack": "false",
        "autoCreate": "false",
        "stateName": "",
        "role": "",
        "payloadType": "",
        "readonly": "",
        "stateUnit": "",
        "stateMin": "",
        "stateMax": "",
        "x": 1290,
        "y": 280,
        "wires": []
    },
    {
        "id": "8a31448f.eadbf8",
        "type": "ioBroker in",
        "z": "e92f9430.a6cd58",
        "name": "bright_value",
        "topic": "tuya.0.bff049b02f35934de3pc6c.22",
        "payloadType": "value",
        "onlyack": "",
        "func": "all",
        "gap": "",
        "fireOnStart": "false",
        "x": 150,
        "y": 280,
        "wires": [
            [
                "8dd5e657.6e1cd8"
            ]
        ]
    },
    {
        "id": "8dd5e657.6e1cd8",
        "type": "function",
        "z": "e92f9430.a6cd58",
        "name": "LED strip TV Level nach homee",
        "func": "var Level = Number(msg.payload);\nmsg.payload = {\"attribute\":{\"id\":161,\"value\":Level}};\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 470,
        "y": 280,
        "wires": [
            [
                "d3906e60.96d4"
            ]
        ]
    },
    {
        "id": "25cfdd08.084112",
        "type": "ioBroker in",
        "z": "e92f9430.a6cd58",
        "name": "scene_data",
        "topic": "tuya.0.bff049b02f35934de3pc6c.25",
        "payloadType": "value",
        "onlyack": "",
        "func": "all",
        "gap": "",
        "fireOnStart": "false",
        "x": 150,
        "y": 400,
        "wires": [
            [
                "3a1a93ab.15b84c"
            ]
        ]
    },
    {
        "id": "3a1a93ab.15b84c",
        "type": "function",
        "z": "e92f9430.a6cd58",
        "name": "LED strip TV szenen Level nach homee",
        "func": "var Level = Number(msg.payload.slice(0,2));\nmsg.payload = {\"attribute\":{\"id\":162,\"value\":Level}};\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 500,
        "y": 400,
        "wires": [
            [
                "d3906e60.96d4"
            ]
        ]
    },
    {
        "id": "1182a81d.67cd68",
        "type": "function",
        "z": "e92f9430.a6cd58",
        "name": "LED strip TV szene von homee",
        "func": "if (msg.payload.attributeId == 162)\n{\n    return [{\n        payload:String(msg.payload.targetValue)+\"000000000000000000000000000000\"}];\n}",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 1050,
        "y": 400,
        "wires": [
            [
                "196ce6f9.7f2059"
            ]
        ]
    },
    {
        "id": "196ce6f9.7f2059",
        "type": "ioBroker out",
        "z": "e92f9430.a6cd58",
        "name": "scene_data",
        "topic": "tuya.0.bff049b02f35934de3pc6c.25",
        "ack": "false",
        "autoCreate": "false",
        "stateName": "",
        "role": "",
        "payloadType": "",
        "readonly": "",
        "stateUnit": "",
        "stateMin": "",
        "stateMax": "",
        "x": 1290,
        "y": 400,
        "wires": []
    }
]

Schau mal ob es damit klappt.
Habe das Gerät und die Szene angepasst.

1 „Gefällt mir“

Super es hat geklappt. Vielen Dank

1 „Gefällt mir“

Hallo Leute,

ich habe vor ca. 3 Wochen angefangen, mich (ohne jegliche Vorkenntnisse im Programmieren), in das Thema Node-Red einzuarbeiten, da ich meine Klein-PV-Anlage visualisieren wollte.

Kurz zu meiner Konfiguration:

  • 600Wp Klein PV an Sonoff PowR2 (tasmota) > MQTT
  • EBZ-DD3 > digitaler Zweirichtungszähler mit optischem Ausgang (der EBZ gibt den aktuellen Bezug als positiven Wert wieder, eine eventuelle Einspeisung als negativen Wert, jeweils phasensaldiert)
  • USB-Lesekopf für ebenjenen
  • Raspberry Pi 3
  • influx-Datenbank für das Aufsummieren der PV-Tageszählerwerte

MIt etwas fachlicher Unterstützung eines Arbeitskollegen habe ich mich recht gut ins Thema einfuchsen können und doch Einiges zustande gebracht. Für andere wäre das vermutlich eine Arbeitsleistung von 2 Tagen gewesen, aber für mich Frischling waren es dann doch einige Wochen gelegentlicher Arbeit.

Krönen wollte ich das Ganze zuletzt mit der Simulation eines Hommee Energiemanager via hih, was grundsätzlich auch geklappt hat. Vielen Dank für diese tolle Entwicklung und die entsprechende Erweiterung für NodeRed.
Zwei Fragen dazu sind dennoch offen und ich hoffe, ihr könnt mir helfen:

Parameter / Attribute
Hierzu habe ich auf Github den Energiemanager mit allen Attributen gefunden und möchte an dieser Stelle sichergehen, dass ich deren Definition richtig verstanden habe.

280=Seriennummer (ist klar) > muss hier etwas eingetragen werden?
281=Software Revision (ist klar) > muss hier etwas eingetragen werden?
282=Strombezug Netz > ist auch klar > aktuelle Situation am Zähler
283=Stromeinspeisung Netz > ist auch klar > aktuelle Situation am Zähler
284=Stromlast Verbrauch > entspricht Hausverbrauch (also Bezug/Einspeisung + PV-Produktion)
285=Strombezug Batterie > aktuelle Entladeleistung (zukünftig relevant)
286=Stromeinspeisung Batterie > aktuelle Ladeleistung (zukünftig relevant)
287=Energiespeicher > SOC Batteriespeicher
288=Strom PV > aktuelle Produktionsleistung
289=Gesamtenergielast = Zählerstand Bezug + Gesamtzähler PV-Produktion - Zählerstand Einspeisung
290=Gesamtenergieerzeugung = Gesamtzähler PV-Produktion
291=Gesamtenergiebezug Netz = Zählerstand Bezug
292=Gesamtenergieeintrag Netz = Zählerstand Einspeisung
293=Gespeicherte Gesamtenergie = Zählerstand gespeicherte kWh aus Speicher
294=Wiederhergestellte Gesamtenergie = Zählerstand verbrauchte kWh aus Speicher

Ist das so korrekt?
Gibt es eine Vorgabe, in welchen Intervallen diese Werte an den virt. EM übergeben werden müssen? Derzeit übergebe ich 282, 283, 284 und 288 alle 10 Sekunden, 289, 290, 291 und 292 alle 60 Minuten.
280 und 281 sind ja quasi einmalig drin und mangels Batteriespeicher übergebe ich diesbezüglich gar keine Werte.

Visualisierung
Als ich mir anfangs einen EM zum testen selbst hingebastelt habe (damals noch nur mit den Attributen Bezug, Einspeisung, PV-Produktion), hatte ich in der App nach einem knappen Tag die nette Visualisierung mit dem Haus und der Sonne und den Energieflüssen. Ihr wisst schon.
Als das alles soweit funktionierte habe ich den kompletten EM mit allen Attributen gebastelt und die Werte Stück für Stück errechnet und übergeben. Aber die Visualisierung kam beim „neuen“ EM nie wieder.
Weiß jemand, woran das liegt? Was sind die Voraussetzungen, damit die Visualisierung erscheint?

Danke für eure Zeit und sorry für so viel Text. Ich hoffe, ich kann damit in Zukunft noch dem ein oder anderen ein wenig die Angst nehmen und bei derartigen Projekten helfen.

Anbei drei Bilder (da ist noch ein abgespeckter EM zu sehen). Falls mehr gewünscht ist, oder jemand den Flow haben möchte, einfach Bescheid geben. Teile es natürlich gern.



5 „Gefällt mir“

Hallo community,

kann niemand etwas zu meinen Fragen aus dem obigen Post sagen?
Vielleicht sind sie ja in der Textflut untergegangen.
Daher nochmal in aller Kürze:

  • Definition der Attribute so korrekt?
  • Gibt es zu den zeitlichen Intervallen, mit denen die Werte an den virt. Energiemanager übergeben werden müssen, Vorgaben, oder bin ich da frei?
  • Visualisierung (Energieflüsse etc.) in der App: unter welchen Voraussetzungen erscheint diese?

Danke vorab und Gruß,
lumpi

Hallo zusammen,

ich habe folgendes Problem und jemand von Euch vielleicht eine Idee dazu:

In meinem virtuellem Homee-Device habe ich folgende Attribute:

Diese werden auch durch den Flow sauber befüllt. Im Homee (also in der der App kommen die Werte auch alle an, aber für die Bodenfeuchte kommt keine Bezeichnung mit und damit kann ich den Wert auch nicht weiterverarbeiten.

Ich habe jetzt unter Bearbeiten im Homee die Bezeichnung manuell eingetragen:

…aber in Homeegrammen kann ich auf den Wert trotzdem nicht zugreifen:

Hat jemand eine Idee?

Besten Dank
Joerch

Tut mir leid, das dir niemand deine Fragen beantworten kann und ich kann dir leider auch nicht weiter helfen, aber an deinem Angebot des Flows wäre ich interessiert :wink: Kannst du auch mal ein Screenshot vom simulierten Energiemanager in der homee-Oberfläche einstellen?