NEWS
Nulleinspeisung mit Tibber Puls und opendtu
-
Hallo,
ich weiß das es wahrscheinlich schon sehr viele beitrage zu diesem Thema gibt, ich hoffe allerdings trotzdem das sich jemand meinem Problem annehmen möchte oder mir den schups in die richtige Richtung gibt.
Ich habe nun schon sehr viele Skripte und Anleitungen in blockly und node red getestet aber nichts zum laufen bekommen
mein Setup:
Tibber Puls (in node red habe ich die Tibber api schon installiert und eingerichtet)
OpenDTU / HM-1600
Node red / Blocklyich hätte gerne eine einfaches script mit dem ich das ganze zum laufen bekomme und anhand dessen verstehe wie es funktioniert.
ich freue mich und hoffe auf antworten
vielen Dank
liebe grüße
-
@mashpony sagte in Nulleinspeisung mit Tibber Puls und opendtu:
Ich habe nun schon sehr viele Skripte und Anleitungen in blockly und node red getestet aber nichts zum laufen bekommen
Dann zeig mal die Ansätze, damit potentielle Helfer darauf aufbauen können.
-
gerne
ein node red an dem ich mich immer wieder spiele ist zb dieses:
[ { "id": "da8ec46371f0db9b", "type": "tab", "label": "Flow 1", "disabled": false, "info": "", "env": [] }, { "id": "ef6c3ce925d406a5", "type": "mqtt out", "z": "da8ec46371f0db9b", "name": "WR MQTT", "topic": "solar/116484658617/cmd/limit_nonpersistent_absolute", "qos": "", "retain": "", "respTopic": "", "contentType": "", "userProps": "", "correl": "", "expiry": "", "broker": "87b2d138566ff5cc", "x": 910, "y": 160, "wires": [] }, { "id": "dd099805a5d7f908", "type": "inject", "z": "da8ec46371f0db9b", "name": "alle 10 sekunden", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "10", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 370, "y": 80, "wires": [ [ "bc06481a7c421b2c" ] ] }, { "id": "bc06481a7c421b2c", "type": "function", "z": "da8ec46371f0db9b", "name": "Berechnung für WR Limit", "func": "// MAX generation of the inverter Watts\nvar maxPower = 1600;\n\n// Get current power limit or default\nvar power = context.get('power') || maxPower;\npower += msg.payload;\n\n// clamp power between 0 and max\nif (power > maxPower) power = maxPower;\nif (power < 0) power = 1;\n\n\n// store current powerlimit and update message\ncontext.set('power', power);\nmsg.payload = power;\n\nreturn msg;", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 650, "y": 160, "wires": [ [ "ef6c3ce925d406a5" ] ] }, { "id": "8e35940b3495969d", "type": "tibber-feed", "z": "da8ec46371f0db9b", "name": "daheim", "active": true, "apiEndpointRef": "acaea9118c2d1751", "homeId": "XXXXXXXXXXX", "timestamp": false, "power": "1", "lastMeterConsumption": false, "accumulatedConsumption": false, "accumulatedProduction": false, "accumulatedConsumptionLastHour": false, "accumulatedProductionLastHour": false, "accumulatedCost": false, "accumulatedReward": false, "currency": false, "minPower": false, "averagePower": false, "maxPower": false, "powerProduction": false, "minPowerProduction": false, "maxPowerProduction": false, "lastMeterProduction": false, "powerFactor": false, "voltagePhase1": false, "voltagePhase2": false, "voltagePhase3": false, "currentL1": false, "currentL2": false, "currentL3": false, "signalStrength": false, "x": 330, "y": 160, "wires": [ [ "bc06481a7c421b2c" ] ] }, { "id": "87b2d138566ff5cc", "type": "mqtt-broker", "name": "", "broker": "opendtu", "port": "1883", "clientid": "", "autoConnect": true, "usetls": false, "protocolVersion": "4", "keepalive": "60", "cleansession": true, "autoUnsubscribe": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "birthMsg": {}, "closeTopic": "", "closeQos": "0", "closePayload": "", "closeMsg": {}, "willTopic": "", "willQos": "0", "willPayload": "", "willMsg": {}, "userProps": "", "sessionExpiry": "" }, { "id": "acaea9118c2d1751", "type": "tibber-api-endpoint", "queryUrl": "https://api.tibber.com/v1-beta/gql", "feedConnectionTimeout": "30", "feedTimeout": "60", "queryRequestTimeout": "30", "name": "XXXXXXX" } ]
ich bin mir allerdings nicht sicher ob ich den richtigen Tibber node dafür gewählt habe.
-
okay
also mit meinem Shelly habe ich es jetzt hinbekommen auch wenn das etwas umständlich ist wegen dem addieren der 3 Phasen.
[ { "id": "7bf3afac51a18e13", "type": "tab", "label": "PVNull", "disabled": false, "info": "", "env": [] }, { "id": "2dacc22b5419c832", "type": "mqtt out", "z": "7bf3afac51a18e13", "name": "WR MQTT", "topic": "solar/116484658617/cmd/limit_nonpersistent_absolute", "qos": "", "retain": "", "respTopic": "", "contentType": "", "userProps": "", "correl": "", "expiry": "", "broker": "87b2d138566ff5cc", "x": 1410, "y": 280, "wires": [] }, { "id": "018ba02f54239b1e", "type": "inject", "z": "7bf3afac51a18e13", "name": "alle 10 sekunden", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "10", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 130, "y": 280, "wires": [ [ "b6808f9bf8e46e84" ] ] }, { "id": "992140f008964c0e", "type": "function", "z": "7bf3afac51a18e13", "name": "Berechnung für WR Limit", "func": "// MAX generation of the inverter Watts\nvar maxPower = 1600;\n\n// Get current power limit or default\nvar power = context.get('power') || maxPower;\npower += msg.payload;\n\n// clamp power between 0 and max\nif (power > maxPower) power = maxPower;\nif (power < 10) power = 1;\n\n\n// store current powerlimit and update message\ncontext.set('power', power);\nmsg.payload = power;\n\nreturn msg;", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1050, "y": 360, "wires": [ [ "cfc7a51cd2515e7c", "2dacc22b5419c832" ] ] }, { "id": "b6808f9bf8e46e84", "type": "shelly-gen1", "z": "7bf3afac51a18e13", "hostname": "192.168.1.54", "description": "Shelly Wohnung", "mode": "polling", "server": "", "outputmode": "event", "uploadretryinterval": 5000, "pollinginterval": "1000", "pollstatus": false, "getstatusoncommand": true, "devicetype": "Measure", "outputs": 2, "x": 340, "y": 420, "wires": [ [ "ee18e34a4514e7ec", "d38b40647d27b12f", "3df2e3c3fca50f91", "457a4a19b2bc1313" ], [ "ee18e34a4514e7ec" ] ], "outputLabels": [ "ou1 ", "ou2" ] }, { "id": "cfc7a51cd2515e7c", "type": "debug", "z": "7bf3afac51a18e13", "name": "debug 92", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1400, "y": 440, "wires": [] }, { "id": "ee18e34a4514e7ec", "type": "debug", "z": "7bf3afac51a18e13", "name": "debug 93", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 600, "y": 460, "wires": [] }, { "id": "d38b40647d27b12f", "type": "change", "z": "7bf3afac51a18e13", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "status.emeters[0].power", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 630, "y": 540, "wires": [ [ "07ae2369fe461fbe" ] ] }, { "id": "3df2e3c3fca50f91", "type": "change", "z": "7bf3afac51a18e13", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "status.emeters[1].power", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 630, "y": 620, "wires": [ [ "bf7144a4e29d4279" ] ] }, { "id": "457a4a19b2bc1313", "type": "change", "z": "7bf3afac51a18e13", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "status.emeters[2].power", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 630, "y": 700, "wires": [ [ "64441cb4c466b694" ] ] }, { "id": "a244a31c5bcbea91", "type": "join", "z": "7bf3afac51a18e13", "name": "", "mode": "custom", "build": "object", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": "\\n", "joinerType": "str", "accumulate": true, "timeout": "", "count": "3", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 1090, "y": 640, "wires": [ [ "add94d9ab1b506bd" ] ] }, { "id": "3ceea4dfeb31a8e4", "type": "debug", "z": "7bf3afac51a18e13", "name": "", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1510, "y": 840, "wires": [] }, { "id": "add94d9ab1b506bd", "type": "change", "z": "7bf3afac51a18e13", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "payload.L1 + payload.L2 +payload.L3", "tot": "jsonata" }, { "t": "set", "p": "topic", "pt": "msg", "to": "Summe von L1,L2,L3", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1290, "y": 640, "wires": [ [ "3ceea4dfeb31a8e4", "992140f008964c0e" ] ] }, { "id": "64441cb4c466b694", "type": "change", "z": "7bf3afac51a18e13", "name": "topic: L3", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "L3", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 900, "y": 700, "wires": [ [ "a244a31c5bcbea91" ] ] }, { "id": "bf7144a4e29d4279", "type": "change", "z": "7bf3afac51a18e13", "name": "topic: L2", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "L2", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 900, "y": 640, "wires": [ [ "a244a31c5bcbea91" ] ] }, { "id": "07ae2369fe461fbe", "type": "change", "z": "7bf3afac51a18e13", "name": "topic: L1", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "L1", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 900, "y": 580, "wires": [ [ "a244a31c5bcbea91" ] ] }, { "id": "87b2d138566ff5cc", "type": "mqtt-broker", "name": "", "broker": "192.168.1.2", "port": "1883", "clientid": "", "autoConnect": true, "usetls": false, "protocolVersion": "4", "keepalive": "60", "cleansession": true, "autoUnsubscribe": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "birthMsg": {}, "closeTopic": "", "closeQos": "0", "closePayload": "", "closeMsg": {}, "willTopic": "", "willQos": "0", "willPayload": "", "willMsg": {}, "userProps": "", "sessionExpiry": "" } ]
Was mir jetzt noch fehlt ist die info wie ich an Daten in dem Tibber query komme.
Wenn ich ein Debug an den Tibber Node hänge kommt folgendes zurück:{"responseMessage":"GraphQL queries must be strings.","httpCode":400,"statusCode":400,"statusMessage":"Bad Request"}
wenn mir das jemand verraten könnte
-
Geil ich habe es hinbekommen
[ { "id": "7bf3afac51a18e13", "type": "tab", "label": "PVNull", "disabled": false, "info": "", "env": [] }, { "id": "2dacc22b5419c832", "type": "mqtt out", "z": "7bf3afac51a18e13", "name": "WR MQTT", "topic": "solar/116484658617/cmd/limit_nonpersistent_absolute", "qos": "", "retain": "", "respTopic": "", "contentType": "", "userProps": "", "correl": "", "expiry": "", "broker": "87b2d138566ff5cc", "x": 1370, "y": 300, "wires": [] }, { "id": "992140f008964c0e", "type": "function", "z": "7bf3afac51a18e13", "name": "Berechnung für WR Limit", "func": "// MAX generation of the inverter Watts\nvar maxPower = 1600;\n\n// Get current power limit or default\nvar power = context.get('power') || maxPower;\npower += msg.payload;\n\n// clamp power between 0 and max\nif (power > maxPower) power = maxPower;\nif (power < 10) power = 1;\n\n\n// store current powerlimit and update message\ncontext.set('power', power);\nmsg.payload = power;\n\nreturn msg;", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1070, "y": 300, "wires": [ [ "cfc7a51cd2515e7c", "2dacc22b5419c832" ] ] }, { "id": "cfc7a51cd2515e7c", "type": "debug", "z": "7bf3afac51a18e13", "name": "WR Wert", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1360, "y": 220, "wires": [] }, { "id": "7c9607b020e57be9", "type": "tibber-feed", "z": "7bf3afXXXXXXXXXXX", "name": "B4D", "active": true, "apiEndpointRef": "acaea9118c2d1751", "homeId": "6453fa8f-XXXXXXXXXXX", "timestamp": false, "power": "1", "lastMeterConsumption": false, "accumulatedConsumption": false, "accumulatedProduction": false, "accumulatedConsumptionLastHour": false, "accumulatedProductionLastHour": false, "accumulatedCost": false, "accumulatedReward": false, "currency": false, "minPower": false, "averagePower": false, "maxPower": false, "powerProduction": false, "minPowerProduction": false, "maxPowerProduction": false, "lastMeterProduction": false, "powerFactor": false, "voltagePhase1": false, "voltagePhase2": false, "voltagePhase3": false, "currentL1": false, "currentL2": false, "currentL3": false, "signalStrength": false, "x": 190, "y": 300, "wires": [ [ "303c3a9e684e3aca", "727ade03c58e2d2b" ] ] }, { "id": "303c3a9e684e3aca", "type": "debug", "z": "7bf3afac51a18e13", "name": "Tibber output", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 440, "y": 220, "wires": [] }, { "id": "f2cca6ecae7ad5fc", "type": "debug", "z": "7bf3afac51a18e13", "name": "Tibber output payload", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 740, "y": 220, "wires": [] }, { "id": "727ade03c58e2d2b", "type": "change", "z": "7bf3afac51a18e13", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "payload.power", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 450, "y": 300, "wires": [ [ "f2cca6ecae7ad5fc", "52b31c00780196ab" ] ] }, { "id": "52b31c00780196ab", "type": "delay", "z": "7bf3afac51a18e13", "name": "", "pauseType": "rate", "timeout": "10", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "10", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": true, "allowrate": false, "outputs": 1, "x": 750, "y": 300, "wires": [ [ "992140f008964c0e", "aed44dec4557ee97" ] ] }, { "id": "aed44dec4557ee97", "type": "debug", "z": "7bf3afac51a18e13", "name": "nach delay", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1030, "y": 220, "wires": [] }, { "id": "87b2d138566ff5cc", "type": "mqtt-broker", "name": "", "broker": "192.168.1.2", "port": "1883", "clientid": "", "autoConnect": true, "usetls": false, "protocolVersion": "4", "keepalive": "60", "cleansession": true, "autoUnsubscribe": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "birthMsg": {}, "closeTopic": "", "closeQos": "0", "closePayload": "", "closeMsg": {}, "willTopic": "", "willQos": "0", "willPayload": "", "willMsg": {}, "userProps": "", "sessionExpiry": "" }, { "id": "acaea9118c2d1751", "type": "tibber-api-endpoint", "queryUrl": "https://api.tibber.com/v1-beta/gql", "feedConnectionTimeout": "30", "feedTimeout": "60", "queryRequestTimeout": "30", "name": "B4D" } ]
also ich gehe davon aus das es geht - testen kann ich es jetzt ohne sonne natürlich nicht...
Step zwei das script zu stoppen nach Sonnenuntergang und mit Sonnenaufgang zu starten
-
@mashpony
ich musste nochmal das ganze etwas optimieren.Der Tibber node unterteilt die leistungswerte in +. und -
Deswegen die Funktion um Einspeisung vom Bezug abzuziehen.Hinten habe ich mit dem deadband das ganze noch etwas geglättet das es nicht immer wie wild regelt.
außerdem ist der WR jetzt nach unten auf 10% limitiert.[ { "id": "7bf3afac51a18e13", "type": "tab", "label": "PVNull", "disabled": false, "info": "", "env": [] }, { "id": "2dacc22b5419c832", "type": "mqtt out", "z": "7bf3afac51a18e13", "name": "WR MQTT", "topic": "solar/116484658617/cmd/limit_nonpersistent_absolute", "qos": "", "retain": "", "respTopic": "", "contentType": "", "userProps": "", "correl": "", "expiry": "", "broker": "87b2d138566ff5cc", "x": 1910, "y": 300, "wires": [] }, { "id": "992140f008964c0e", "type": "function", "z": "7bf3afac51a18e13", "name": "Berechnung für WR Limit", "func": "// MAX generation of the inverter Watts\nvar maxPower = 1600;\n\n// Get current power limit or default\nvar power = context.get('power') || maxPower;\npower += msg.payload;\n\n// clamp power between 0 and max\nif (power > maxPower) power = maxPower;\nif (power > 0) power = power + 150;\nif (power < 10) power = 160;\n\n// Wenn keine Werte vom Zähler kommen dann 600 W\n//if (power == 0) power = 1600;\n\n// store current powerlimit and update message\ncontext.set('power', power);\nmsg.payload = power;\n\nreturn msg;", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1430, "y": 300, "wires": [ [ "cfc7a51cd2515e7c", "50883943a3e33578" ] ] }, { "id": "cfc7a51cd2515e7c", "type": "debug", "z": "7bf3afac51a18e13", "name": "WR Wert", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1680, "y": 220, "wires": [] }, { "id": "7c9607b020e57be9", "type": "tibber-feed", "z": "7bf3afac51a18e13", "name": "B4D", "active": true, "apiEndpointRef": "acaea9XXXXXXXXXX", "homeId": "6453fa8f-XXXXXXXXXXXXX", "timestamp": false, "power": true, "lastMeterConsumption": false, "accumulatedConsumption": false, "accumulatedProduction": false, "accumulatedConsumptionLastHour": false, "accumulatedProductionLastHour": false, "accumulatedCost": false, "accumulatedReward": false, "currency": false, "minPower": false, "averagePower": false, "maxPower": false, "powerProduction": true, "minPowerProduction": false, "maxPowerProduction": false, "lastMeterProduction": false, "powerFactor": false, "voltagePhase1": false, "voltagePhase2": false, "voltagePhase3": false, "currentL1": false, "currentL2": false, "currentL3": false, "signalStrength": false, "x": 50, "y": 300, "wires": [ [ "303c3a9e684e3aca", "acd3b41ba56f0995" ] ] }, { "id": "303c3a9e684e3aca", "type": "debug", "z": "7bf3afac51a18e13", "name": "Tibber output", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 260, "y": 220, "wires": [] }, { "id": "f2cca6ecae7ad5fc", "type": "debug", "z": "7bf3afac51a18e13", "name": "Tibber positiv", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "positiv", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 640, "y": 220, "wires": [] }, { "id": "727ade03c58e2d2b", "type": "change", "z": "7bf3afac51a18e13", "name": "Positiv", "rules": [ { "t": "set", "p": "positiv", "pt": "msg", "to": "payload.power", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 430, "y": 300, "wires": [ [ "f2cca6ecae7ad5fc", "e957d8fb0f0bd489" ] ] }, { "id": "52b31c00780196ab", "type": "delay", "z": "7bf3afac51a18e13", "name": "", "pauseType": "rate", "timeout": "10", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "10", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": true, "allowrate": false, "outputs": 1, "x": 1110, "y": 300, "wires": [ [ "992140f008964c0e", "aed44dec4557ee97" ] ] }, { "id": "aed44dec4557ee97", "type": "debug", "z": "7bf3afac51a18e13", "name": "nach delay", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1390, "y": 220, "wires": [] }, { "id": "50883943a3e33578", "type": "rbe", "z": "7bf3afac51a18e13", "name": "", "func": "deadband", "gap": "30", "start": "", "inout": "out", "septopics": true, "property": "payload", "topi": "topic", "x": 1690, "y": 300, "wires": [ [ "2dacc22b5419c832", "fb6e2a22c5dd3e5f" ] ] }, { "id": "fb6e2a22c5dd3e5f", "type": "debug", "z": "7bf3afac51a18e13", "name": "nach Filter", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1910, "y": 220, "wires": [] }, { "id": "acd3b41ba56f0995", "type": "time-switch", "z": "7bf3afac51a18e13", "name": "zeitschaltung", "lat": "48.1492455", "lon": "12.0148575", "startTime": "sunrise", "endTime": "sunset", "startOffset": 0, "endOffset": 0, "x": 250, "y": 300, "wires": [ [ "727ade03c58e2d2b" ], [] ] }, { "id": "779a354a9c204395", "type": "inject", "z": "7bf3afac51a18e13", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "00 22 * * *", "once": false, "onceDelay": 0.1, "topic": "", "payload": "1600", "payloadType": "num", "x": 1370, "y": 360, "wires": [ [ "50883943a3e33578" ] ] }, { "id": "e957d8fb0f0bd489", "type": "change", "z": "7bf3afac51a18e13", "name": "Negativ", "rules": [ { "t": "set", "p": "negativ", "pt": "msg", "to": "payload.powerProduction", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 620, "y": 300, "wires": [ [ "7576e3b12206f405", "cac94db4ac79fe23" ] ] }, { "id": "7576e3b12206f405", "type": "debug", "z": "7bf3afac51a18e13", "name": "Tibber - negativ", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "negativ", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 840, "y": 400, "wires": [] }, { "id": "6f770f0a3305a631", "type": "debug", "z": "7bf3afac51a18e13", "name": "nach rechner", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1070, "y": 360, "wires": [] }, { "id": "cac94db4ac79fe23", "type": "change", "z": "7bf3afac51a18e13", "name": "Suptrahieren", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "msg.positiv - msg.negativ", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 830, "y": 300, "wires": [ [ "52b31c00780196ab", "6f770f0a3305a631" ] ] }, { "id": "87b2d138566ff5cc", "type": "mqtt-broker", "name": "", "broker": "192.168.1.2", "port": "1883", "clientid": "", "autoConnect": true, "usetls": false, "protocolVersion": "4", "keepalive": "60", "cleansession": true, "autoUnsubscribe": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "birthMsg": {}, "closeTopic": "", "closeQos": "0", "closePayload": "", "closeMsg": {}, "willTopic": "", "willQos": "0", "willPayload": "", "willMsg": {}, "userProps": "", "sessionExpiry": "" }, { "id": "acaea9118c2d1751", "type": "tibber-api-endpoint", "queryUrl": "https://api.tibber.com/v1-beta/gql", "feedConnectionTimeout": "30", "feedTimeout": "60", "queryRequestTimeout": "30", "name": "B4D" } ]