Mal wieder virtuelle Geräte - jetzt aber richtig!

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?

Probier doch mal anstatt dem Attribut „Bodenfeuchtigkeit“ das Attrbute „Luftfeuchtigkeit“ zu nehmen und änder die Bezeichnung dann im homee auf „Bodenfeuchte“.

Wenn Attribute nicht zur Verfügung stehen liegt es am Profil. Den Profilen sind bestimmte Attribute zugeordnet. Sind Attribute bei die nicht zum Profil passen, werde diese angezeigt aber stehen nicht zur aktiven Nutzung in den HG bereit.

Hallo Harry, hallo Micha,

danke für die entscheidenden Tipps! Muss man wissen, dass ein Attribut angeboten wird, aber dann nicht genutzt werden kann :wink: Ich habe jetzt „Luftfeuchtigkeit“ genutzt, nun funzt es!

Bis auf den Bodenfeuchtesensor bin ich mit der Bewässerungsanlage „Gardena-frei“ Yesss :slight_smile:
Besten Dank noch einmal
Joerch

1 „Gefällt mir“

Opensprinkler in Homee

Ich habe für meine automatisierte Gartenbewässerung den Opensprinkler (OS).
Das ist ein open source und web basiertes Beregnungs - Steuerungsgerät, an den auch eine Wasseruhr und ein Feuchtigkeitssensor angeschlossen werden können.

Alle Daten des OS können wohl über die http-API abgefragt werden.

Nun habe ich mir gerade eine Wasseruhr mit Impulsgeber zugelegt, die ich an den OS anschließe.
Nun möchte ich gerne Daten der Wasseruhr aus dem OS in meinem Homee ablesen.

Hat jemand eine Idee, wie ich das umsetzen könnte?

Die Wasseruhr ist diese:

Wenn es dir nur um ein geeignetes vhih Gerät geht, würde ich einen messenden Plug nehmen.
Damit könntest du die aktuelle Menge und die Gesamtmenge übertragen.

Ok eine Wasseruhr gibt es in NodeRed/iObroker.
Das versuche ich mal. Hatte mich vor einiger Zeit ein wenig eingelesen und „sogar“ meine Yamaha Anlage eingebunden.

Ja, mir genügt (zunächst) das Ablesen der aktuellen und der akkumulierten Durchflusswerte.

Die Wasserpumpe hängt an einem FibaroPlug, der prima den Stromverbrauch misst.
Ich möchte eine Notschaltung bei Wasserverlust (zuviel in kurzer Zeit) und Trockenlaufen (kein Wasser obwohl Pumpe läuft) einrichten.

Bitteschön.
HomeeEM.pdf (19,8 KB)
Solar_Stromzähler.pdf (31,0 KB)

Kann ich machen. Aber das ist jetzt nicht soooo spannend.
Reiche ich morgen nach.

1 „Gefällt mir“

Hier noch der Screenshot

Reicht dir das oder möchtest du etwas Spezielles sehen?

Hallo!
Ich bin noch ein ziemlicher noob in Sachen NodeRed und hoffe jemand kann mir helfen.
NodeRed läuft unter IOBroker auf einem Raspi. homee node funktioniert und hab mit Hilfe der Tutorialvideos von @Micha einen virtuellen Plug angelegt. Diesen kann ich durch einen manuellen Inject auch schalten und er reagiert auch in homee.

Nun zu meinem eigentlichen Problem bzw. Anliegen.
Ich möchte den virtuellen Plug durch den LG TV Ein/Aus schalten lassen.
Der IOBroker In reagiert schon richtig auf das Ein/Ausschalten des TV,
doch wie muss jetzt die Funktion geschrieben sein damit ich das Attribut des virtuellen Plug ändere?
Der IOBroker In liefert mir true/false.

Liefert dir der iobroker ein String oder ein Bool Wert ?
Du kannst das recht einfach machen.

If (msg.payload === true ){ xyz anschalten }
else if (msg.payload === false){ xyz ausschalten }

Den Wert für an und ausschalten des Plug hast ja schon m Inject zu stehen.

im debug steht mgs.payload boolean
also denke ich er übergibt mit true/false einen boolean wert

Bisher habe ich in einem function node folgendes stehen.

{if (msg.payload === "true" || msg.payload === true)
node.send{payload:{"attribute":{"id": 10,"value": 1}}}
else node.send{payload:{"attribute":{"id": 10,"value": 0}}}
return msg;}

Funktioniert aber so nicht. Fehler in Zeile 2.
Habe aber von der Syntax keine Ahnung und quäl mich durch diverse Anleitungen/Wikis/etc.