A'dam PVOutput
Die heb ik Home Assistant gekoppeld, als ik naar de events luister, zie ik bijvoorbeeld dit:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| { "event_type": "deconz_event", "data": { "id": "switch_37", "unique_id": "00:15:8d:00:04:01:89:50", "event": 1002, "device_id": "dc1c8xxxx" }, "origin": "LOCAL", "time_fired": "2021-02-02T13:24:58.054164+00:00", "context": { "id": "46e42e9xxxx", "parent_id": null, "user_id": null } } |
Hoe pas ik dit toe in NodeRed? De rest van de sequence ga ik me wel mee redden, maar wat voor node gaat dit event registreren? Is dat een events:all (type: deconz_event en dan een vervolg met een function node?
Dat is het nadeel van berichten editen met een iPad. De ] staat er nu bij.AUijtdehaag schreef op dinsdag 2 februari 2021 @ 15:23:
[...]
] vergeten aan het einde van je code hierboven
Thnx voor de flow, kan ik weer ergens anders op toepassen hoop ik.
:strip_exif()/f/image/zrNx9KLNmnGkzsX29Knho6EE.jpg?f=fotoalbum_large)
Loop toch nog even vast met het toevoegen van waardes aan de database. Heb een influxdb aangemaakt, maar hoe krijg ik nu alles uit een Youless naar die database? En ik mis phpmyadmin om te kijken wat er gebeurt. Wat is daar voor alternatief? Grafana is inmiddels geïnstalleerd, maar ik heb het nog niet gebruikt. Beginnerstips zijn welkom.
[ Voor 22% gewijzigd door ericplan op 02-02-2021 21:35 ]
A'dam PVOutput
Idem hier in brave en Chrome, ik merk dat het soms direct loopt, ander keren zie ik op m’n mqtt sub client dat er berichten binnen komen maar niks in de flow (direct van mqtt wildcard naar debug node) tot ik refresh en dan staat wel alles er (ook van voor de refresh)jenssen schreef op zondag 31 januari 2021 @ 09:55:
Kan het zijn dat de debug functie niet altijd evengoed de waardes laat zien? ik heb zowel Firefox/Chrome geprobeerd met alle adblockers uit, maar het lijkt erop dat zelf bij een relatief eenvoudige inject, het debugvenster niet atlijd de waarde laat zien, ik moet sowieso vaak eerst de browser verversen middels F5 wanneer ik iets heb gewijzigd. Is dit normaal en is er iets tegen te doen?
Misschien een "events: state" (of trigger: state) node met de entity-id uit HA van de betreffende schakelaarKoepert schreef op dinsdag 2 februari 2021 @ 14:40:
Ben ik weer. Ik heb n Xiaomi schakelaar.
Die heb ik Home Assistant gekoppeld, als ik naar de events luister, zie ik bijvoorbeeld dit:
YAML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 { "event_type": "deconz_event", "data": { "id": "switch_37", "unique_id": "00:15:8d:00:04:01:89:50", "event": 1002, "device_id": "dc1c8xxxx" }, "origin": "LOCAL", "time_fired": "2021-02-02T13:24:58.054164+00:00", "context": { "id": "46e42e9xxxx", "parent_id": null, "user_id": null } }
Hoe pas ik dit toe in NodeRed? De rest van de sequence ga ik me wel mee redden, maar wat voor node gaat dit event registreren? Is dat een events:all (type: deconz_event en dan een vervolg met een function node?
voorbeeld van mijn Lidl deurbel:
1
| [{"id":"f1927f4e.ae2798","type":"server-state-changed","z":"92df3383.8b25f","name":"","server":"1c3dc1f6.321306","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.deurbel_action","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"pressed","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":190,"y":1480,"wires":[["83fb9f92.90edb8"],[]]},{"id":"1c3dc1f6.321306","type":"server","name":"Home Assistant","legacy":false,"addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}] |
1
| [{"id":"61da5d0.93d95a4","type":"tab","label":"Youless","disabled":false,"info":""},{"id":"79907e9.3c15c8","type":"inject","z":"61da5d0.93d95a4","name":"","props":[{"p":"payload","v":"","vt":"date"},{"p":"topic","v":"","vt":"string"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":100,"y":160,"wires":[["c5533c5.53a0bc"]]},{"id":"c5533c5.53a0bc","type":"http request","z":"61da5d0.93d95a4","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"http://192.168.5.59/e","tls":"","persist":false,"proxy":"","authType":"","x":290,"y":80,"wires":[["39a94865.914a08","bbc7e1b4.b2a1f"]]},{"id":"39a94865.914a08","type":"json","z":"61da5d0.93d95a4","name":"","property":"payload","action":"obj","pretty":false,"x":490,"y":80,"wires":[["a92f5f39.fd4d7","c0c54d1e.f44e7"]]},{"id":"a92f5f39.fd4d7","type":"function","z":"61da5d0.93d95a4","name":"Filter","func":"var Counter = msg.payload[0].net //Netto counter. It seems equal to: p1 + p2 - n1 - n2\nvar Power = msg.payload[0].pwr; //Actual power use in Watt (can be negative)\nvar Cs0 = msg.payload[0].cs0; // S0: kWh counter of S0 input\nvar Ps0 = msg.payload[0].ps0; // S0: Computed power\nvar P1 = msg.payload[0].p1 // P1 consumption counter (low tariff)\nvar P2 = msg.payload[0].p2; // P2 consumption counter (high tariff)\nvar N1 = msg.payload[0].n1; // N1 production counter (low tariff)\nvar N2 = msg.payload[0].n2; // N2 production counter (high tariff)\n\nlet _msg = {\n payload: []\n};\n\n_msg.payload=\n {\n measurement: \"youless\",\n\t\tfields: {\n\t\t\tcounter: Counter,\t\n\t\t\tpower: Power,\t\t\t\n\t\t\tcounters0: Cs0,\t\n\t\t\tpowers0: Ps0,\n\t\t\tp1: P1,\n\t\t\tp2: P2,\n\t\t\tn1: N1,\n\t\t\tn2: N2,\n\t\t },\n\t\ttags:{\n\t\t device: \"youless_wp\",\n\t\t },\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":690,"y":80,"wires":[["1ccc6460.57ed6c"]]},{"id":"9a597e16.23e8c","type":"debug","z":"61da5d0.93d95a4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1170,"y":580,"wires":[]},{"id":"1ccc6460.57ed6c","type":"join","z":"61da5d0.93d95a4","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"5","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":850,"y":80,"wires":[["53346ddb.5d8e94","c6dfe06b.859de"]]},{"id":"4dcca997.661478","type":"mqtt out","z":"61da5d0.93d95a4","name":"Youless MQTT","topic":"youless","qos":"","retain":"","broker":"1a5b1090.c729cf","x":1200,"y":140,"wires":[]},{"id":"2534aa7.a50ca56","type":"mqtt in","z":"61da5d0.93d95a4","name":"","topic":"youless","qos":"2","datatype":"json","broker":"1a5b1090.c729cf","x":950,"y":580,"wires":[["9a597e16.23e8c"]]},{"id":"c0c54d1e.f44e7","type":"function","z":"61da5d0.93d95a4","name":"Filter","func":"var Counter = msg.payload[0].net //Netto counter. It seems equal to: p1 + p2 - n1 - n2\nvar Power = msg.payload[0].pwr; //Actual power use in Watt (can be negative)\nvar Cs0 = msg.payload[0].cs0; // S0: kWh counter of S0 input\nvar Ps0 = msg.payload[0].ps0; // S0: Computed power\nvar P1 = msg.payload[0].p1 // P1 consumption counter (low tariff)\nvar P2 = msg.payload[0].p2; // P2 consumption counter (high tariff)\nvar N1 = msg.payload[0].n1; // N1 production counter (low tariff)\nvar N2 = msg.payload[0].n2; // N2 production counter (high tariff)\n\nlet _msg = {\n payload: []\n};\n\n_msg.payload=\n {\t\ttimestamp: flow.get('timestamp'),\n counter: Counter,\t\n\t\t\tpower: Power,\t\t\t\n\t\t\tcounters0: Cs0,\t\n\t\t\tpowers0: Ps0,\n\t\t\tp1: P1,\n\t\t\tp2: P2,\n\t\t\tn1: N1,\n\t\t\tn2: N2,\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":690,"y":140,"wires":[["806f150e.d488e8","a7eb93df.762c8","c38a1ec8.972af"]]},{"id":"1e2199ba.51dd56","type":"interval","z":"61da5d0.93d95a4","name":"interval","interval":"10","onstart":false,"msg":"ping","showstatus":true,"unit":"seconds","statusformat":"YYYY-MM-D HH:mm:ss","x":90,"y":80,"wires":[["c5533c5.53a0bc"]]},{"id":"a04dcafd.b29488","type":"influxdb batch","z":"61da5d0.93d95a4","influxdb":"cc27eafd.c04928","precision":"","retentionPolicy":"","name":"","x":1260,"y":80,"wires":[]},{"id":"53346ddb.5d8e94","type":"debug","z":"61da5d0.93d95a4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1070,"y":20,"wires":[]},{"id":"c6dfe06b.859de","type":"delay","z":"61da5d0.93d95a4","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"10","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":1040,"y":80,"wires":[["a04dcafd.b29488"]]},{"id":"2e9eb977.bc5d46","type":"inject","z":"61da5d0.93d95a4","name":"Start of the day","props":[{"p":"payload","v":"","vt":"date"},{"p":"topic","v":"","vt":"string"}],"repeat":"","crontab":"00 00 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":300,"wires":[["4575f75b.243ed8"]]},{"id":"4575f75b.243ed8","type":"change","z":"61da5d0.93d95a4","name":"S0 youless","rules":[{"t":"set","p":"payload","pt":"msg","to":"dailyusage","tot":"global"},{"t":"set","p":"dailyusage","pt":"global","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":300,"wires":[["a0ed7713.d88a98"]]},{"id":"c1d81354.a4f92","type":"debug","z":"61da5d0.93d95a4","name":"Last Days","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","statusVal":"","statusType":"auto","x":700,"y":300,"wires":[]},{"id":"e889ccd8.604b9","type":"comment","z":"61da5d0.93d95a4","name":"Dagelijks verbruik en reset","info":"","x":130,"y":260,"wires":[]},{"id":"a0ed7713.d88a98","type":"function","z":"61da5d0.93d95a4","name":"Total usage","func":"msg.payload = \"Total usage today is \"+msg.payload\nreturn msg;","outputs":1,"noerr":0,"x":530,"y":300,"wires":[["c1d81354.a4f92"]]},{"id":"a7eb93df.762c8","type":"change","z":"61da5d0.93d95a4","name":"Convert","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload.counters0)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":200,"y":380,"wires":[["55a33ca5.f61444"]]},{"id":"55a33ca5.f61444","type":"function","z":"61da5d0.93d95a4","name":"s0 youless usage","func":"//Grab previous value from global variable for total usage\npreviousvalue = global.get(\"totalvalue\")||0;\n\n//How much usage since the last update\nperiodvalue = msg.payload - previousvalue;\n\n//Grab previous value from global variable for daily usage\ndailyvalue = global.get(\"dailyusage\")||0;\n\ndailyvalue = dailyvalue + periodvalue;\n\n//Update the global variables.\nglobal.set(\"dailyusage\",dailyvalue );\nglobal.set(\"totalvalue\", msg.payload);\n\nmsg.payload = Number(parseFloat(dailyvalue).toFixed(3))\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":410,"y":380,"wires":[["e40c25b4.8182f8","b6648fd3.72a43"]]},{"id":"e40c25b4.8182f8","type":"function","z":"61da5d0.93d95a4","name":"kWh naar Euro omrekenen","func":"kwhprijs = 0.23 //0.23 cent per kWh import\ncalc = Number(parseFloat(msg.payload * kwhprijs).toFixed(3));\nvar msg1 = {payload:calc};\nreturn [msg1];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":340,"y":440,"wires":[["e3bb7114.9e3b5"]]},{"id":"806f150e.d488e8","type":"debug","z":"61da5d0.93d95a4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":860,"y":200,"wires":[]},{"id":"df9f3178.18c88","type":"debug","z":"61da5d0.93d95a4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1150,"y":380,"wires":[]},{"id":"b6648fd3.72a43","type":"change","z":"61da5d0.93d95a4","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"payload.mitsu_today_kwh","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":630,"y":380,"wires":[["dbf1011c.81b91"]]},{"id":"e3bb7114.9e3b5","type":"change","z":"61da5d0.93d95a4","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"payload.mitsu_today_euro","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":630,"y":440,"wires":[["dbf1011c.81b91"]]},{"id":"dbf1011c.81b91","type":"join","z":"61da5d0.93d95a4","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"5","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":810,"y":380,"wires":[["70b82492.73d8ec","5f381ffc.39633","c38a1ec8.972af"]]},{"id":"70b82492.73d8ec","type":"function","z":"61da5d0.93d95a4","name":"Filter","func":"let _msg = {\n payload: []\n};\n\n_msg.payload=\n {\n measurement: \"youless\",\n\t\tfields: {\n\t\t\tmitsu_today_kWh: msg.payload.mitsu_today_kwh,\n\t\t\tmitsu_today_euro: msg.payload.mitsu_today_euro,\n\t\t},\n\t\ttags:{\n\t\t device: \"youless_wp\",\n\t\t },\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":990,"y":380,"wires":[["df9f3178.18c88","5a6b0b6a.948ee4"]]},{"id":"9e24246b.3c8488","type":"influxdb batch","z":"61da5d0.93d95a4","influxdb":"cc27eafd.c04928","precision":"","retentionPolicy":"","name":"","x":1180,"y":500,"wires":[]},{"id":"5a6b0b6a.948ee4","type":"join","z":"61da5d0.93d95a4","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"5","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":1050,"y":440,"wires":[["f89f0879.a7eb88"]]},{"id":"f89f0879.a7eb88","type":"delay","z":"61da5d0.93d95a4","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"10","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":1240,"y":440,"wires":[["9e24246b.3c8488"]]},{"id":"5f381ffc.39633","type":"debug","z":"61da5d0.93d95a4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":910,"y":340,"wires":[]},{"id":"c38a1ec8.972af","type":"join","z":"61da5d0.93d95a4","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"10","count":"10","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":1050,"y":140,"wires":[["4dcca997.661478"]]},{"id":"bbc7e1b4.b2a1f","type":"debug","z":"61da5d0.93d95a4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":460,"y":160,"wires":[]},{"id":"1a5b1090.c729cf","type":"mqtt-broker","z":"","name":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"cc27eafd.c04928","type":"influxdb","z":"","hostname":"127.0.0.1","port":"8086","protocol":"http","database":"energy","name":"","usetls":false,"tls":""}] |
Dank, ik hoop er vandaag mee aan de slag te gaan. Had helaas andere verplichtingen gisteren. Hoe kan ik snel controleren of er iets in de database komt. Zijn daar tips voor?AUijtdehaag schreef op woensdag 3 februari 2021 @ 16:52:
@ericplan Heb je hier iets aan wat betreft de youless?
code:
1 [{"id":"61da5d0.93d95a4","type":"tab","label":"Youless","disabled":false,"info":""},{"id":"79907e9.3c15c8","type":"inject","z":"61da5d0.93d95a4","name":"","props":[{"p":"payload","v":"","vt":"date"},{"p":"topic","v":"","vt":"string"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":100,"y":160,"wires":[["c5533c5.53a0bc"]]},{"id":"c5533c5.53a0bc","type":"http request","z":"61da5d0.93d95a4","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"http://192.168.5.59/e","tls":"","persist":false,"proxy":"","authType":"","x":290,"y":80,"wires":[["39a94865.914a08","bbc7e1b4.b2a1f"]]},{"id":"39a94865.914a08","type":"json","z":"61da5d0.93d95a4","name":"","property":"payload","action":"obj","pretty":false,"x":490,"y":80,"wires":[["a92f5f39.fd4d7","c0c54d1e.f44e7"]]},{"id":"a92f5f39.fd4d7","type":"function","z":"61da5d0.93d95a4","name":"Filter","func":"var Counter = msg.payload[0].net //Netto counter. It seems equal to: p1 + p2 - n1 - n2\nvar Power = msg.payload[0].pwr; //Actual power use in Watt (can be negative)\nvar Cs0 = msg.payload[0].cs0; // S0: kWh counter of S0 input\nvar Ps0 = msg.payload[0].ps0; // S0: Computed power\nvar P1 = msg.payload[0].p1 // P1 consumption counter (low tariff)\nvar P2 = msg.payload[0].p2; // P2 consumption counter (high tariff)\nvar N1 = msg.payload[0].n1; // N1 production counter (low tariff)\nvar N2 = msg.payload[0].n2; // N2 production counter (high tariff)\n\nlet _msg = {\n payload: []\n};\n\n_msg.payload=\n {\n measurement: \"youless\",\n\t\tfields: {\n\t\t\tcounter: Counter,\t\n\t\t\tpower: Power,\t\t\t\n\t\t\tcounters0: Cs0,\t\n\t\t\tpowers0: Ps0,\n\t\t\tp1: P1,\n\t\t\tp2: P2,\n\t\t\tn1: N1,\n\t\t\tn2: N2,\n\t\t },\n\t\ttags:{\n\t\t device: \"youless_wp\",\n\t\t },\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":690,"y":80,"wires":[["1ccc6460.57ed6c"]]},{"id":"9a597e16.23e8c","type":"debug","z":"61da5d0.93d95a4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1170,"y":580,"wires":[]},{"id":"1ccc6460.57ed6c","type":"join","z":"61da5d0.93d95a4","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"5","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":850,"y":80,"wires":[["53346ddb.5d8e94","c6dfe06b.859de"]]},{"id":"4dcca997.661478","type":"mqtt out","z":"61da5d0.93d95a4","name":"Youless MQTT","topic":"youless","qos":"","retain":"","broker":"1a5b1090.c729cf","x":1200,"y":140,"wires":[]},{"id":"2534aa7.a50ca56","type":"mqtt in","z":"61da5d0.93d95a4","name":"","topic":"youless","qos":"2","datatype":"json","broker":"1a5b1090.c729cf","x":950,"y":580,"wires":[["9a597e16.23e8c"]]},{"id":"c0c54d1e.f44e7","type":"function","z":"61da5d0.93d95a4","name":"Filter","func":"var Counter = msg.payload[0].net //Netto counter. It seems equal to: p1 + p2 - n1 - n2\nvar Power = msg.payload[0].pwr; //Actual power use in Watt (can be negative)\nvar Cs0 = msg.payload[0].cs0; // S0: kWh counter of S0 input\nvar Ps0 = msg.payload[0].ps0; // S0: Computed power\nvar P1 = msg.payload[0].p1 // P1 consumption counter (low tariff)\nvar P2 = msg.payload[0].p2; // P2 consumption counter (high tariff)\nvar N1 = msg.payload[0].n1; // N1 production counter (low tariff)\nvar N2 = msg.payload[0].n2; // N2 production counter (high tariff)\n\nlet _msg = {\n payload: []\n};\n\n_msg.payload=\n {\t\ttimestamp: flow.get('timestamp'),\n counter: Counter,\t\n\t\t\tpower: Power,\t\t\t\n\t\t\tcounters0: Cs0,\t\n\t\t\tpowers0: Ps0,\n\t\t\tp1: P1,\n\t\t\tp2: P2,\n\t\t\tn1: N1,\n\t\t\tn2: N2,\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":690,"y":140,"wires":[["806f150e.d488e8","a7eb93df.762c8","c38a1ec8.972af"]]},{"id":"1e2199ba.51dd56","type":"interval","z":"61da5d0.93d95a4","name":"interval","interval":"10","onstart":false,"msg":"ping","showstatus":true,"unit":"seconds","statusformat":"YYYY-MM-D HH:mm:ss","x":90,"y":80,"wires":[["c5533c5.53a0bc"]]},{"id":"a04dcafd.b29488","type":"influxdb batch","z":"61da5d0.93d95a4","influxdb":"cc27eafd.c04928","precision":"","retentionPolicy":"","name":"","x":1260,"y":80,"wires":[]},{"id":"53346ddb.5d8e94","type":"debug","z":"61da5d0.93d95a4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1070,"y":20,"wires":[]},{"id":"c6dfe06b.859de","type":"delay","z":"61da5d0.93d95a4","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"10","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":1040,"y":80,"wires":[["a04dcafd.b29488"]]},{"id":"2e9eb977.bc5d46","type":"inject","z":"61da5d0.93d95a4","name":"Start of the day","props":[{"p":"payload","v":"","vt":"date"},{"p":"topic","v":"","vt":"string"}],"repeat":"","crontab":"00 00 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":300,"wires":[["4575f75b.243ed8"]]},{"id":"4575f75b.243ed8","type":"change","z":"61da5d0.93d95a4","name":"S0 youless","rules":[{"t":"set","p":"payload","pt":"msg","to":"dailyusage","tot":"global"},{"t":"set","p":"dailyusage","pt":"global","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":300,"wires":[["a0ed7713.d88a98"]]},{"id":"c1d81354.a4f92","type":"debug","z":"61da5d0.93d95a4","name":"Last Days","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","statusVal":"","statusType":"auto","x":700,"y":300,"wires":[]},{"id":"e889ccd8.604b9","type":"comment","z":"61da5d0.93d95a4","name":"Dagelijks verbruik en reset","info":"","x":130,"y":260,"wires":[]},{"id":"a0ed7713.d88a98","type":"function","z":"61da5d0.93d95a4","name":"Total usage","func":"msg.payload = \"Total usage today is \"+msg.payload\nreturn msg;","outputs":1,"noerr":0,"x":530,"y":300,"wires":[["c1d81354.a4f92"]]},{"id":"a7eb93df.762c8","type":"change","z":"61da5d0.93d95a4","name":"Convert","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload.counters0)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":200,"y":380,"wires":[["55a33ca5.f61444"]]},{"id":"55a33ca5.f61444","type":"function","z":"61da5d0.93d95a4","name":"s0 youless usage","func":"//Grab previous value from global variable for total usage\npreviousvalue = global.get(\"totalvalue\")||0;\n\n//How much usage since the last update\nperiodvalue = msg.payload - previousvalue;\n\n//Grab previous value from global variable for daily usage\ndailyvalue = global.get(\"dailyusage\")||0;\n\ndailyvalue = dailyvalue + periodvalue;\n\n//Update the global variables.\nglobal.set(\"dailyusage\",dailyvalue );\nglobal.set(\"totalvalue\", msg.payload);\n\nmsg.payload = Number(parseFloat(dailyvalue).toFixed(3))\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":410,"y":380,"wires":[["e40c25b4.8182f8","b6648fd3.72a43"]]},{"id":"e40c25b4.8182f8","type":"function","z":"61da5d0.93d95a4","name":"kWh naar Euro omrekenen","func":"kwhprijs = 0.23 //0.23 cent per kWh import\ncalc = Number(parseFloat(msg.payload * kwhprijs).toFixed(3));\nvar msg1 = {payload:calc};\nreturn [msg1];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":340,"y":440,"wires":[["e3bb7114.9e3b5"]]},{"id":"806f150e.d488e8","type":"debug","z":"61da5d0.93d95a4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":860,"y":200,"wires":[]},{"id":"df9f3178.18c88","type":"debug","z":"61da5d0.93d95a4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1150,"y":380,"wires":[]},{"id":"b6648fd3.72a43","type":"change","z":"61da5d0.93d95a4","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"payload.mitsu_today_kwh","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":630,"y":380,"wires":[["dbf1011c.81b91"]]},{"id":"e3bb7114.9e3b5","type":"change","z":"61da5d0.93d95a4","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"payload.mitsu_today_euro","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":630,"y":440,"wires":[["dbf1011c.81b91"]]},{"id":"dbf1011c.81b91","type":"join","z":"61da5d0.93d95a4","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"5","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":810,"y":380,"wires":[["70b82492.73d8ec","5f381ffc.39633","c38a1ec8.972af"]]},{"id":"70b82492.73d8ec","type":"function","z":"61da5d0.93d95a4","name":"Filter","func":"let _msg = {\n payload: []\n};\n\n_msg.payload=\n {\n measurement: \"youless\",\n\t\tfields: {\n\t\t\tmitsu_today_kWh: msg.payload.mitsu_today_kwh,\n\t\t\tmitsu_today_euro: msg.payload.mitsu_today_euro,\n\t\t},\n\t\ttags:{\n\t\t device: \"youless_wp\",\n\t\t },\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":990,"y":380,"wires":[["df9f3178.18c88","5a6b0b6a.948ee4"]]},{"id":"9e24246b.3c8488","type":"influxdb batch","z":"61da5d0.93d95a4","influxdb":"cc27eafd.c04928","precision":"","retentionPolicy":"","name":"","x":1180,"y":500,"wires":[]},{"id":"5a6b0b6a.948ee4","type":"join","z":"61da5d0.93d95a4","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"5","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":1050,"y":440,"wires":[["f89f0879.a7eb88"]]},{"id":"f89f0879.a7eb88","type":"delay","z":"61da5d0.93d95a4","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"10","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":1240,"y":440,"wires":[["9e24246b.3c8488"]]},{"id":"5f381ffc.39633","type":"debug","z":"61da5d0.93d95a4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":910,"y":340,"wires":[]},{"id":"c38a1ec8.972af","type":"join","z":"61da5d0.93d95a4","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"10","count":"10","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":1050,"y":140,"wires":[["4dcca997.661478"]]},{"id":"bbc7e1b4.b2a1f","type":"debug","z":"61da5d0.93d95a4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":460,"y":160,"wires":[]},{"id":"1a5b1090.c729cf","type":"mqtt-broker","z":"","name":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"cc27eafd.c04928","type":"influxdb","z":"","hostname":"127.0.0.1","port":"8086","protocol":"http","database":"energy","name":"","usetls":false,"tls":""}]
A'dam PVOutput
Het werkt inmiddels allemaal. Beetje wennen aan terminologie van InfluxDB. Alles komt keurig in vier tabellen in een database. Nog kijken of dat slimmer kan, er zit nog wat redundantie in.AUijtdehaag schreef op donderdag 4 februari 2021 @ 09:20:
@ericplan
De debug aanzetten in de flow?
Het is een werkende flow dus zal meteen moeten werken als de ip van influx server en naam database in influxdb kloppen.
Volgende stap is Grafana laten werken. Bedoeling is een grafiek met simpele staafkolommen per dag in een week- of maandview. Eerst de tabellen maar een beetje vullen
A'dam PVOutput
Ik ben gisteren gemigreerd van 'server' , allemaal top, alleen zijn er een handvol entities van naam gewijzigd (had ik in DeConz reeds gedaan,was blijkbaar niet naar Home Assistant doorgezet). Hoe dan ook.
Is er ook een manier om je Node_red te testen op 'niet bestaande sensors' die je in je trigger/flow in gebruik hebt? Of is t puur afwachten of het werkt
Oh btw, dit werkte niet. de schakelaar toont een 'event' maar die is verder niet als state terug te vinden, anders dan naar deconz_events te luisteren.. Zover ik kan nagaan.Step5 schreef op dinsdag 2 februari 2021 @ 21:45:
[...]
Misschien een "events: state" (of trigger: state) node met de entity-id uit HA van de betreffende schakelaar
voorbeeld van mijn Lidl deurbel:
JSON:
1 [{"id":"f1927f4e.ae2798","type":"server-state-changed","z":"92df3383.8b25f","name":"","server":"1c3dc1f6.321306","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.deurbel_action","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"pressed","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":190,"y":1480,"wires":[["83fb9f92.90edb8"],[]]},{"id":"1c3dc1f6.321306","type":"server","name":"Home Assistant","legacy":false,"addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]
ah, ok. wat voor event is dat dan?Koepert schreef op vrijdag 5 februari 2021 @ 16:17:
[...]
Oh btw, dit werkte niet. de schakelaar toont een 'event' maar die is verder niet als state terug te vinden, anders dan naar deconz_events te luisteren.. Zover ik kan nagaan.
Het is dus zo'n aqara button, die als je 1x drukt een '1002'-event afgeeft, dat is hetgeen HA (of NodeRed) verwerkt tot signaal om iets te doen. Dus ergens verwacht ik dat je ipv on vs off ook 1002 of 1004/2002 kunt gebruiken, maar dat weet ik niet zeker. Het is dus geen state, maar een event die de button fired
Als ik die door een debug haal, zie ik in NodeRed dit:
1
| {"id":"huiskamerswitch","unique_id":"00xxxx","event":1002,"device_id":"8xxx7d2"} |
[ Voor 21% gewijzigd door Koepert op 05-02-2021 19:56 ]
Pro tip, pak de gesture anders kan je duplicates krijgen bij event.Koepert schreef op vrijdag 5 februari 2021 @ 19:47:
[...]
Het is dus zo'n aqara button, die als je 1x drukt een '1002'-event afgeeft, dat is hetgeen HA (of NodeRed) verwerkt tot signaal om iets te doen. Dus ergens verwacht ik dat je ipv on vs off ook 1002 of 1004/2002 kunt gebruiken, maar dat weet ik niet zeker. Het is dus geen state, maar een event die de button fired
Als ik die door een debug haal, zie ik in NodeRed dit:
code:
1 {"id":"huiskamerswitch","unique_id":"00xxxx","event":1002,"device_id":"8xxx7d2"}
Dankje.. maar ik begrijp niet helemaal wat je daar mee bedoeldTweakerVincent schreef op vrijdag 5 februari 2021 @ 20:01:
[...]
Pro tip, pak de gesture anders kan je duplicates krijgen bij event.
je moet de check doen op:payload.event.gestureKoepert schreef op vrijdag 5 februari 2021 @ 20:02:
[...]
Dankje.. maar ik begrijp niet helemaal wat je daar mee bedoeld
[ Voor 45% gewijzigd door TweakerVincent op 05-02-2021 20:08 ]
Dat geloof ik ook niet.. T werkt iig niet. Maar evengoed, gaat t mij vooral ook HOE je iets dergelijks omzet naar NodeRed, luisteren naar het Deconz_event lukt wel, maar hoe ik dan filter om alleen te reageren op iets specifieks, dat krijg ik niet.Step5 schreef op vrijdag 5 februari 2021 @ 20:09:
maar zover ik het zie heeft hij geen events.gesture
kun je dit gebruiken? :
1
| [{"id":"deef2800.4f2bb8","type":"switch","z":"92df3383.8b25f","name":"test","property":"data.event","propertyType":"msg","rules":[{"t":"eq","v":"1002","vt":"num"},{"t":"eq","v":"1004","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":370,"y":520,"wires":[[],[]]},{"id":"3dbbd8ed.d84a5","type":"server-events","z":"92df3383.8b25f","name":"","server":"1c3dc1f6.321306","event_type":"deconz_event","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"waitForRunning":true,"x":180,"y":520,"wires":[["deef2800.4f2bb8"]]},{"id":"1c3dc1f6.321306","type":"server","name":"Home Assistant","legacy":false,"addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}] |
excuus ging iets mis.
misschien moet je in mijn voorbeeld nog "payload" toevoegen, dus bij property: (msg.) payload.data.event
en anders eens je debug output op "complete msg object" zetten en dan nog ns de output posten.
Je krijgt er info uit dus dat moet te filteren zijn
1
| {"event_type":"deconz_event","topic":"deconz_event","payload":{"event_type":"deconz_event","event":{"id":"huiskamerswitch","unique_id":"00:15:8d:00:04:01:89:50","event":1002,"device_id":"x"},"origin":"LOCAL","time_fired":"2021-02-05T19:31:08.554801+00:00","context":{"id":"x","parent_id":null,"user_id":null}},"_msgid":"x.be8fc"} |
Got it!
Payload.event.event. werkt
Alleen nu nog kijken of ik OOK kan filteren op ID. Want die 'huiskamerswitch' stuurt de zelfde codes uit als een andere 'keukenswitch'. Is dat dan nog een switch-node ERVOOR, die ID filtert?
[ Voor 25% gewijzigd door Koepert op 05-02-2021 20:37 ]
Ja een switch-node ervoor kun je doen inderdaad. ligt er ook een beetje aan wat je er verderop mee wilt gaan doen
succes
Eigenlijk simpel..Step5 schreef op vrijdag 5 februari 2021 @ 20:47:
haha zou net voorbeeldje posten maar je bent er al uit.
Ja een switch-node ervoor kun je doen inderdaad. ligt er ook een beetje aan wat je er verderop mee wilt gaan doen
succes
- 1x knop = lamp 1/2 aan/uit (toggle)
- Dubbeklik = lampen 3 en 4 aan/uit (toggle)
Dat lukt allemaal. Behalve tot op heden dus filteren op event en id
mm k ben er nog niet..
Ik heb dus die events:all node die luistert naar deconz_events. Daarachter een switchnode die kijkt naar payload.event.id en zoekt naar de 3 verschillende switches en daar weer achter de events per switch.. Da werkt nie!
Deze link gevonden, daar bleek dat ik al soort van hetzelfde deed. https://community.home-as...switches-beginner/99624/4
Dus nu mijn flow nog eens doorgelopen. Bleek dat de 'huiskamerswitch', die ik elke keer gebruikte voor de test, er als 'number' ipv 'string' in stond. Nu werkt het
[ Voor 41% gewijzigd door Koepert op 06-02-2021 10:30 ]

Alleen kan ik het niet plaatsen.
Ik heb deze addon niet actief en ook geen flow met een verwijzing hier. Ik heb zelfs all flows weggegooid en geprobeerd.
Als ik in onderstaand screenshot kijk dan vind ik wel nog een referentie maar hoe krijg ik deze melding weg?

Als ik de addon installeer dan blijft de melding weg. Alleen ik heb geen idee wat voor een addon dat is en dus ook niet nodig. Misschien dat ik eens flow van iemand geprobeerd heb waar deze referentie inzit maar daar heb ik niks meer van actief.
Nvm al gefixed.
Blijkbaar kan je hem daar ook deleten.
[ Voor 41% gewijzigd door Raven__NL op 05-02-2021 22:11 ]
Heb een functienode aangemaakt die de verbruik hoog en verbruik laag uit de Youless optelt, vooral omdat dit voor mij, met enkeltarief, geen zinvolle informatie is. De code:
1
2
| msg.payload = msg.payload.p1 + msg.payload.p2 return msg; |
Dat werkt, er komt keurig een nummer uit.
Alleen wil ik er een nieuwe key aan toevoegen, zodat ik later met een join een nieuwe json kan maken.
De JSON die uit de Youless komt bevat voor mij teveel overbodige data, bovendien heb ik er twee, dus de bestaande keys komen dubbel voor. Uiteindelijk doel is om zo min mogelijk dubbele informatie naar de database te sturen. Daarom wil ik alles in één tabel/measurement krijgen.
/edit: Inmiddels gelukt. Vraag kan weg.
[ Voor 2% gewijzigd door ericplan op 06-02-2021 21:00 . Reden: Opgelost ]
A'dam PVOutput
Als uitgangspunt heb ik de NR-flow uit deze gepakt: https://github.com/orickcorreia/caule-themes-pack-1
Die heb ik gedupliceerd naar 1 voor de light en 1 voor de dark input-select. Maar nu, WAAR plaats ik hier precies de 'timecheck' in voor sunset of sunrise?
Reeds gelukt. Timecheck tussen de State en Render Template Node. Vraag me nu alleen of deze NA zonsondergang ook zelf wisselt naar de Dark theme... Heb er een Time/Sunrise-Sunset Node aan toegevoegd die bij een change de timecheck weer uitvoert...als het goed is..
:fill(white):strip_exif()/f/image/6ufUIZrXiz3vKJ7d8gIuiX5d.png?f=user_large)
[ Voor 86% gewijzigd door Koepert op 07-02-2021 12:50 . Reden: Afbeelding toegevoegd ]
In de eerste versie gingen vier nodes naar de database, twee stuks van de Youlessen, twee stuks van de Modbus-unit. Dat resulteerde in vier tabellen voor de database, met in totaal 36 velden. daarbij zit een hoop redundantie en een aantal velden die voor mij (of voor dit doel) niet nuttig zijn, zoals gas of vermogen. Ook de tellers voor hoog- en laagtarief zijn samengevoegd, omdat ik toch enkeltarief heb.
Omdat ik de database zo klein mogelijk wil houden heb ik de vier nodes samengevoegd tot één. Voordeel: alles in één tabel en nog maar 15 velden over.
Als beginneling vraag je je natuurlijk af of het nog slimmer had gekund?
1
| [{"id":"f5904e5a.b551c8","type":"function","z":"513cf05b.63509","name":"","func":"msg.topic = \"he\";\nmsg.parts = {};\nmsg.parts.id = msg.msgid;\nmsg.parts.index = 1;\nmsg.parts.count = 4;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":720,"y":160,"wires":[["2ffcc001.3a62c"]]},{"id":"2ffcc001.3a62c","type":"join","z":"513cf05b.63509","name":"","mode":"auto","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"4","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":970,"y":220,"wires":[["a7fbc200.e8d89"]]},{"id":"94715136.067be","type":"json","z":"513cf05b.63509","name":"","property":"payload","action":"obj","pretty":false,"x":530,"y":160,"wires":[["f5904e5a.b551c8"]]},{"id":"a7fbc200.e8d89","type":"flat","z":"513cf05b.63509","name":"","x":1150,"y":220,"wires":[["e6506cc.2bb921","96552890.c0bb08"]]},{"id":"1f81a596.62d152","type":"function","z":"513cf05b.63509","name":"","func":"var tmp = { p106: Math.round((msg.payload[0].p1 + msg.payload[0].p2) * 1e3) / 1e3 , n106: Math.round((msg.payload[0].n1 + msg.payload[0].n2) * 1e3) / 1e3 , cs106: msg.payload[0].cs0 };\nmsg.topic = \"we\";\nmsg.payload = tmp;\nmsg.parts = {};\nmsg.parts.id = msg.msgid;\nmsg.parts.index = 2;\nmsg.parts.count = 4;\nreturn msg;\n\n//Math.round((0.1 + 0.2) * 1e12)","outputs":1,"noerr":0,"initialize":"","finalize":"","x":720,"y":260,"wires":[["2ffcc001.3a62c","cddb8437.213358"]]},{"id":"a7e40dd7.c7c7e","type":"function","z":"513cf05b.63509","name":"","func":"var tmp = { p108: Math.round((msg.payload[0].p1 + msg.payload[0].p2) * 1e3) / 1e3 , n108: Math.round((msg.payload[0].n1 + msg.payload[0].n2) * 1e3) / 1e3 , cs108: msg.payload[0].cs0 };\nmsg.topic = \"she\";\nmsg.payload = tmp;\nmsg.parts = {};\nmsg.parts.id = msg.msgid;\nmsg.parts.index = 3;\nmsg.parts.count = 4;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":720,"y":340,"wires":[["2ffcc001.3a62c","912f25c5.ea31e8"]]},{"id":"e5eda30d.79d1e8","type":"function","z":"513cf05b.63509","name":"","func":"msg.topic = \"it\";\nmsg.parts = {};\nmsg.parts.id = msg.msgid;\nmsg.parts.index = 0;\nmsg.parts.count = 4;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":720,"y":80,"wires":[["2ffcc001.3a62c"]]},{"id":"93e40ad6.2f2f1","type":"buffer-parser","z":"513cf05b.63509","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"uint32be","name":"U66-1","offset":0,"length":1,"offsetbit":0,"scale":"/1000","mask":""},{"type":"uint32be","name":"U66-4","offset":4,"length":1,"offsetbit":0,"scale":"/1000","mask":""},{"type":"uint32be","name":"U66-6","offset":8,"length":1,"offsetbit":0,"scale":"/1000","mask":""},{"type":"uint32be","name":"U66-x","offset":12,"length":1,"offsetbit":0,"scale":"/1000","mask":""}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"keyvalue","resultTypeType":"output","multipleResult":false,"fanOutMultipleResult":true,"setTopic":false,"outputs":1,"x":330,"y":160,"wires":[["94715136.067be"]]},{"id":"e6506cc.2bb921","type":"debug","z":"513cf05b.63509","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1310,"y":140,"wires":[]},{"id":"96552890.c0bb08","type":"influxdb out","z":"513cf05b.63509","influxdb":"2c6104b5.9ffccc","name":"","measurement":"totaal","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"ms","retentionPolicyV18Flux":"","org":"organisation","bucket":"bucket","x":1380,"y":220,"wires":[]},{"id":"cddb8437.213358","type":"debug","z":"513cf05b.63509","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1260,"y":340,"wires":[]},{"id":"ffa0fb42.d3bb2","type":"http request","z":"513cf05b.63509","name":"Youless 106","method":"GET","ret":"obj","paytoqs":"ignore","url":"http://192.168.178.175/e","tls":"","persist":false,"proxy":"","authType":"","x":330,"y":260,"wires":[["1f81a596.62d152"]]},{"id":"912f25c5.ea31e8","type":"debug","z":"513cf05b.63509","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1300,"y":440,"wires":[]},{"id":"957a8de7.2ba6","type":"http request","z":"513cf05b.63509","name":"Youless 108","method":"GET","ret":"obj","paytoqs":"ignore","url":"http://192.168.178.176/e?f=j","tls":"","persist":false,"proxy":"","authType":"","x":330,"y":340,"wires":[["a7e40dd7.c7c7e"]]},{"id":"2bef6165.464136","type":"json","z":"513cf05b.63509","name":"","property":"payload","action":"obj","pretty":false,"x":530,"y":80,"wires":[["e5eda30d.79d1e8"]]},{"id":"20b274bb.f3ff4c","type":"modbus-read","z":"513cf05b.63509","name":"Unit 66","topic":"","showStatusActivities":true,"logIOActivities":false,"showErrors":true,"unitid":"66","dataType":"HoldingRegister","adr":"27","quantity":"8","rate":"5","rateUnit":"s","delayOnStart":true,"startDelayTime":"5","server":"40f20c7f.13a934","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":130,"y":160,"wires":[["93e40ad6.2f2f1"],["ffa0fb42.d3bb2","957a8de7.2ba6"]]},{"id":"8c081b87.3b1fe8","type":"buffer-parser","z":"513cf05b.63509","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"uint32be","name":"U33-5","offset":0,"length":1,"offsetbit":0,"scale":"/1000","mask":""},{"type":"uint32be","name":"U33-6","offset":4,"length":1,"offsetbit":0,"scale":"/1000","mask":""},{"type":"uint32be","name":"U33-7","offset":8,"length":1,"offsetbit":0,"scale":"/1000","mask":""},{"type":"uint32be","name":"U33-8","offset":12,"length":1,"offsetbit":0,"scale":"/1000","mask":""}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"keyvalue","resultTypeType":"output","multipleResult":false,"fanOutMultipleResult":true,"setTopic":false,"outputs":1,"x":330,"y":80,"wires":[["2bef6165.464136"]]},{"id":"2e25a414.8a2fe4","type":"modbus-read","z":"513cf05b.63509","name":"Unit 33","topic":"","showStatusActivities":true,"logIOActivities":false,"showErrors":true,"unitid":"33","dataType":"HoldingRegister","adr":"27","quantity":"8","rate":"5","rateUnit":"s","delayOnStart":true,"startDelayTime":"5","server":"40f20c7f.13a934","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":130,"y":80,"wires":[["8c081b87.3b1fe8"],[]]},{"id":"2c6104b5.9ffccc","type":"influxdb","hostname":"127.0.0.1","port":"8086","protocol":"http","database":"dataplan","name":"dataplan","usetls":false,"tls":"","influxdbVersion":"1.x","url":"http://localhost:8086","rejectUnauthorized":true},{"id":"40f20c7f.13a934","type":"modbus-client","name":"RS 485 dongle","clienttype":"serial","bufferCommands":true,"stateLogEnabled":true,"queueLogEnabled":false,"tcpHost":"127.0.0.1","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB0","serialType":"RTU","serialBaudrate":"19200","serialDatabits":"8","serialStopbits":"1","serialParity":"even","serialConnectionDelay":"500","unit_id":"","commandDelay":"30","clientTimeout":"2000","reconnectOnTimeout":false,"reconnectTimeout":"5000","parallelUnitIdsAllowed":false}] |
/f/image/04ktnSXZbiC8MWbe2CoJPjj1.png?f=fotoalbum_large)
A'dam PVOutput
Dit werkt dus half. Wijzigen van light theme na zonsondergang werkt niet, dark wel en andersom met zon op. Maar automatisch wisselen doet ie niet. Iemand n tip?Koepert schreef op zondag 7 februari 2021 @ 12:28:
Ik ben begonnen met een theme-switcher in HA icm NR. Input_select met light-themes en Input_select met dark-themes. Ik wilde nl kunnen kiezen uit een theme, maar wel de switch van light naar dark houden bij sunset en sunrise. Ik heb 6 themes in 3x2 (Google light + dark, Github light + dark en Clear + Clear-dark). Ik wil dus in de frontend kunnen kiezen voor 1vd 3 light (of dark) en dan dat deze switcht bij zonsondergang/opgang naar de corresponderende andere variant. Snappen jullie m nog?
Als uitgangspunt heb ik de NR-flow uit deze gepakt: https://github.com/orickcorreia/caule-themes-pack-1
Die heb ik gedupliceerd naar 1 voor de light en 1 voor de dark input-select. Maar nu, WAAR plaats ik hier precies de 'timecheck' in voor sunset of sunrise?
Reeds gelukt. Timecheck tussen de State en Render Template Node. Vraag me nu alleen of deze NA zonsondergang ook zelf wisselt naar de Dark theme... Heb er een Time/Sunrise-Sunset Node aan toegevoegd die bij een change de timecheck weer uitvoert...als het goed is..
[Afbeelding]
Natuurlijk.Koepert schreef op zondag 7 februari 2021 @ 18:35:
[...]
Dit werkt dus half. Wijzigen van light theme na zonsondergang werkt niet, dark wel en andersom met zon op. Maar automatisch wisselen doet ie niet. Iemand n tip?
Dit werkt bij mij( maar ik wissel niet,maar dat maakt verder niet uit).
/f/image/RI2114zAnC5nI8W2ooM0wi5Y.png?f=fotoalbum_large)
Je sun zit dus al in HA. Daarvoor heb je geen andere node nodig.
Ik check of de state van de sun entity above of below horizon is.
Works like a charm. Ik heb deze dus toegevoegd aan voorgaande. Dus die sun-state en switch node lopen vervolgens naar respectievelijk Get Light en Get Dark theme templates. Die halen hun input weer uit de state van de input_select.denuz schreef op zondag 7 februari 2021 @ 21:07:
[...]
Natuurlijk.
Dit werkt bij mij( maar ik wissel niet,maar dat maakt verder niet uit).
[Afbeelding].
Je sun zit dus al in HA. Daarvoor heb je geen andere node nodig.
Ik check of de state van de sun entity above of below horizon is.
Ivm je events voor een Xaomi schakelaar. Ik maak gebruik van het volgende:
Een Deconz-Event met daarachter een switch functie dat de payload.event.id uitleest.
In het geval voor een Magic Cube wordt volgende functie node uitgevoerd:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| const code = msg.payload.event.event; let action; const codes = { "side1": [1002, 1003, 1004, 1005, 1006], "side2": [2001, 2003, 3004, 4005, 5006], "side3": [3001, 3002, 3004, 3005, 3006], "side4": [4001, 4002, 4003, 4005, 4006], "side5": [5001, 5002, 5003, 5004, 5006], "side6": [6001, 6002, 6003, 6004, 6005], "push": [1000, 2000, 3000, 4000, 5000, 6000], "doubletap": [1001, 2002, 3003, 4004, 5005, 6006], "shake": [7007], "drop": [7008], "wake": [7000] }; for (let a in codes) { if(codes[a].includes(code)) { action = a; break; } } if (!action) { const strCode = String(code); if (strCode.substr(1,2) !== "00" || strCode.length !== 4) { action = code > 0 ? "rotatecw" : "rotateccw"; } } msg.payload = action || ""; return msg; |
En afhankelijk van welke actie gebeurd koppel ik het terug aan een switch node.
1
| [{"id":"a080802.c88648","type":"tab","label":"Flow 4","disabled":false,"info":""},{"id":"cb46c1e.3f3334","type":"server-events","z":"a080802.c88648","name":"Deconz","server":"ba016e09.2d662","event_type":"deconz_event","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"waitForRunning":true,"x":190,"y":100,"wires":[["6fc8d3d4.dca32c"]]},{"id":"6fc8d3d4.dca32c","type":"switch","z":"a080802.c88648","name":"","property":"payload.event.id","propertyType":"msg","rules":[{"t":"eq","v":"mi_magic_cube_keuken","vt":"str"},{"t":"eq","v":"mi_magic_cube_woonkamer","vt":"str"},{"t":"eq","v":"smart_switch","vt":"str"}],"checkall":"false","repair":false,"outputs":3,"x":330,"y":100,"wires":[["1521caed.a56735"],[],[]],"info":"# Smart switch\nsimple press : 1000\nsimple press release : 1002\ndouble press : 1004\ntreble press : 1005\nquadruple press : 1006"},{"id":"1521caed.a56735","type":"function","z":"a080802.c88648","name":"Magic cube Keuken Movement","func":"const code = msg.payload.event.event;\nlet action;\n\nconst codes = {\n\"side1\": [1002, 1003, 1004, 1005, 1006],\n\"side2\": [2001, 2003, 3004, 4005, 5006],\n\"side3\": [3001, 3002, 3004, 3005, 3006],\n\"side4\": [4001, 4002, 4003, 4005, 4006],\n\"side5\": [5001, 5002, 5003, 5004, 5006],\n\"side6\": [6001, 6002, 6003, 6004, 6005],\n\"push\": [1000, 2000, 3000, 4000, 5000, 6000],\n\"doubletap\": [1001, 2002, 3003, 4004, 5005, 6006],\n\"shake\": [7007],\n\"drop\": [7008],\n\"wake\": [7000]\n};\n\nfor (let a in codes) {\nif(codes[a].includes(code)) {\naction = a;\nbreak;\n}\n}\n\nif (!action) {\nconst strCode = String(code);\nif (strCode.substr(1,2) !== \"00\" || strCode.length !== 4) {\naction = code > 0 ? \"rotatecw\" : \"rotateccw\";\n}\n}\n\nmsg.payload = action || \"\";\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":570,"y":80,"wires":[["974efddb.b8642"]]},{"id":"974efddb.b8642","type":"switch","z":"a080802.c88648","name":"Movement type","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"push","vt":"str"},{"t":"eq","v":"shake","vt":"str"},{"t":"eq","v":"rotatecw","vt":"str"},{"t":"eq","v":"rotateccw","vt":"str"}],"checkall":"true","repair":false,"outputs":4,"x":860,"y":60,"wires":[[],[],[],[]],"info":"\"side1\": [1002, 1003, 1004, 1005, 1006],\n\"side2\": [2001, 2003, 3004, 4005, 5006],\n\"side3\": [3001, 3002, 3004, 3005, 3006],\n\"side4\": [4001, 4002, 4003, 4005, 4006],\n\"side5\": [5001, 5002, 5003, 5004, 5006],\n\"side6\": [6001, 6002, 6003, 6004, 6005],\n\"push\": [1000, 2000, 3000, 4000, 5000, 6000],\n\"doubletap\": [1001, 2002, 3003, 4004, 5005, 6006],\n\"shake\": [7007],\n\"drop\": [7008],\n\"wake\": [7000]"},{"id":"ba016e09.2d662","type":"server","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}] |
Wij hebben in huis hetelucht verwarming van Brink (Elan 2.0). In tegenstelling tot onze vorige unit draait deze continue ook als er niet verwarmd wordt. Dit geeft een onaangename luchtstroom dus in overleg met de leverancier zit er een schakelaar (z-wave in mijn geval) tussen die die unit uit kan zetten.
Nu heb ik deze flow gemaakt:
:fill(white):strip_exif()/f/image/s0fh9fYpCv0o4MLJ2OPTtTSn.png?f=user_large)
Als de thermostaat aangaat dan gaat de hetelucht verwarming ook draaien.
Als de thermostaat weer uitgaat dan blijft de hetelucht verwarming nog 30 minuten nadraaien en gaat vervolgens ook uit.
Wat ik niet snap / voor elkaar krijg. Je kunt de timer stoppen door een STOP payload te sturen in msg.payload.
Maar hoe krijg ik dat nou voor elkaar? Wat heb ik nodig om die te kunnen versturen om het moment dat de verwarming binnen 30 minuten weer aanslaat?
Wat je misschien voor zou kunnen hebben is dat net op het moment dat de timer zou gaan uitschakelen de hetelucht aangezet wordt en daardoor het aan signaal net voor het uit signaal verstuurd gaat worden. Dat is waarschijnlijk redelijk hypothetisch aangezien de timing dan wel heel hard moet tegenvallen. Door voor je "hetelucht aan" nog een vertraging op te nemen, zou je dat kunnen voorkomen.
Ik heb via het Home Assistant een toffe automation voor het op 'afwezig' zetten van je huis. Dit heeft dan weer allerlei consequenties voor je lampen (automations) etc. Die heb ik nu in YAML, maar wil eigenlijk naar Node Red migreren. Dat doe ik nu stapsgewijs, maar sommige 'logica' vertalen is wel even zoeken..
Dit is de YAML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
| #Away - alias: 'Thuis' trigger: - platform: state entity_id: group.personen to: 'home' condition: - condition: state entity_id: input_boolean.afwezig state: 'on' action: service: input_boolean.turn_off data: entity_id: input_boolean.afwezig # - alias: 'Afwezig' trigger: - platform: state entity_id: group.personen to: 'not_home' condition: - condition: state entity_id: input_boolean.afwezig state: 'off' - condition: state entity_id: input_boolean.afwezig_thuis state: 'off' action: service: input_boolean.turn_on data: entity_id: input_boolean.afwezig - alias: 'Afwezig knop aan' trigger: - platform: state entity_id: input_boolean.afwezig_overrule to: 'on' action: - service: input_boolean.turn_off data: entity_id: input_boolean.afwezig_thuis - service: input_boolean.turn_on data: entity_id: input_boolean.afwezig - alias: 'Afwezig knop uit' trigger: - platform: state entity_id: input_boolean.afwezig_overrule to: 'off' action: - service: input_boolean.turn_off data: entity_id: input_boolean.afwezig - alias: 'Thuis knop aan' trigger: - platform: state entity_id: input_boolean.afwezig_thuis to: 'on' action: - service: input_boolean.turn_off data: entity_id: input_boolean.afwezig_overrule - service: input_boolean.turn_off data: entity_id: input_boolean.afwezig - alias: 'Thuis knop uit' trigger: - platform: state entity_id: input_boolean.afwezig_thuis to: 'off' action: - service: input_boolean.turn_off data: entity_id: input_boolean.afwezig #Vakantie - alias: 'Vakantie' trigger: - platform: state entity_id: input_boolean.afwezig to: 'on' for: hours: 24 action: service: input_boolean.turn_on data: entity_id: input_boolean.vakantiestand - alias: 'Terug van vakantie' trigger: - platform: state entity_id: input_boolean.afwezig to: 'off' condition: - condition: state entity_id: input_boolean.vakantiestand state: 'on' action: service: input_boolean.turn_off data: entity_id: input_boolean.vakantiestand |
Dit zijn meerdere automations. Nu wil ik dit graag wat overzichtelijk/efficient in NodeRed krijgen. Klopt mijn gedachtengang als:
- Event State groups_personen
- Switch: home & not_home
- call service: boolean afwezig ON en boolean afwezig OFF
- trigger op de ON service met een wait for 24hours
- call service: boolean vakantiestand ON.
Moet ik dan nog iets met die trigger en een reset als de boolean afwezig naar ON gaat?
in NodeRed:
1
| [{"id":"fa60613e.b7e61","type":"server-state-changed","z":"8339f3e4.d68d5","name":"Thuis?","server":"1d8e9a4c.b062a6","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"group.personen","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":70,"y":940,"wires":[["e9bcdca7.6a25e"]]},{"id":"96fac421.a4a678","type":"api-call-service","z":"8339f3e4.d68d5","name":"We zijn thuis","server":"1d8e9a4c.b062a6","version":1,"debugenabled":false,"service_domain":"input_boolean","service":"turn_off","entityId":"input_boolean.afwezig","data":"","dataType":"jsonata","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":550,"y":920,"wires":[["5dc1541.25d44ac"]]},{"id":"e9bcdca7.6a25e","type":"switch","z":"8339f3e4.d68d5","name":"Zijn we thuis?","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"home","vt":"str"},{"t":"eq","v":"not_home","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":280,"y":940,"wires":[["96fac421.a4a678"],["cc19aa6f.987e38"]]},{"id":"cc19aa6f.987e38","type":"api-call-service","z":"8339f3e4.d68d5","name":"We zijn niet thuis","server":"1d8e9a4c.b062a6","version":1,"debugenabled":false,"service_domain":"input_boolean","service":"turn_on","entityId":"input_boolean.afwezig","data":"","dataType":"jsonata","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":570,"y":980,"wires":[["e917418b.72f98"]]},{"id":"e917418b.72f98","type":"trigger","z":"8339f3e4.d68d5","name":"Vakantie!","op1":"","op2":"on","op1type":"str","op2type":"str","duration":"24","extend":false,"overrideDelay":false,"units":"hr","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":760,"y":980,"wires":[["5dcf178d.369468"]]},{"id":"5dcf178d.369468","type":"api-call-service","z":"8339f3e4.d68d5","name":"We zijn op vakantie","server":"1d8e9a4c.b062a6","version":1,"debugenabled":false,"service_domain":"input_boolean","service":"turn_on","entityId":"input_boolean.vakantiestand","data":"","dataType":"jsonata","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1010,"y":980,"wires":[[]]},{"id":"5dc1541.25d44ac","type":"trigger-state","z":"8339f3e4.d68d5","name":"Vakantie geweest?","server":"1d8e9a4c.b062a6","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"input_boolean.vakantiestand","entityidfiltertype":"exact","debugenabled":false,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on","propertyValue":"new_state.state"}],"outputs":2,"customoutputs":[],"outputinitially":false,"state_type":"str","x":800,"y":920,"wires":[["70887a66.16b5a4"],[]]},{"id":"70887a66.16b5a4","type":"api-call-service","z":"8339f3e4.d68d5","name":"We zijn weer thuis","server":"1d8e9a4c.b062a6","version":1,"debugenabled":false,"service_domain":"input_boolean","service":"turn_off","entityId":"input_boolean.vakantiestand","data":"","dataType":"jsonata","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1030,"y":900,"wires":[[]]},{"id":"1d8e9a4c.b062a6","type":"server","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}] |
Ik heb nu dit:
/f/image/PiGhubhJVENjxRZ6Gy09a2XZ.png?f=fotoalbum_large)
Deze zou de lamp alleen aan moeten doen als de lux-waarde (vanuit de Aqara, dus die wijkt wat af van een echte lux-meting) boven de 100 is.
Maar ik tref de lampen nu aan, aan, zonder dat er beweging is geweest. Ik gebruik voor die lichtmetings-check een "Wait until"-node.
Eigenlijk moet die lux-checking alleen gebeuren na weer een nieuw true signaal vanuit de entity state. En dat lijkt nu niet helemaal zo te gaan.
1
| [{"id":"8e8cb7cc.6f7818","type":"server-state-changed","z":"b57f90f4.708e9","name":"Als er beweging is in de woonkamer","server":"12bc9e1e.6632a2","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.bewegingssensor_woonkamer_occupancy","entityidfiltertype":"exact","outputinitially":false,"state_type":"habool","haltifstate":"true","halt_if_type":"bool","halt_if_compare":"is","outputs":2,"output_only_on_state_change":false,"for":"","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":160,"y":700,"wires":[["6bc8c16d.36094","7407c137.259d5"],[]]},{"id":"cb740f52.b5366","type":"api-call-service","z":"b57f90f4.708e9","name":"gaan de spots uit","server":"12bc9e1e.6632a2","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.spot_1_light, light.spot_2_light, light.spot_3_light","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":750,"y":780,"wires":[[]]},{"id":"6bc8c16d.36094","type":"stoptimer","z":"b57f90f4.708e9","duration":"10","units":"Minute","payloadtype":"num","payloadval":"0","name":"Als er 10 minuten lang geen beweging is","x":460,"y":780,"wires":[["cb740f52.b5366"],[]]},{"id":"aaee57a8.cda8f8","type":"api-call-service","z":"b57f90f4.708e9","name":"gaan de spots aan","server":"12bc9e1e.6632a2","version":1,"debugenabled":false,"service_domain":"scene","service":"turn_on","entityId":"scene.spots_zacht_aan","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":670,"y":700,"wires":[[]]},{"id":"7407c137.259d5","type":"ha-wait-until","z":"b57f90f4.708e9","name":"en het donker is","server":"12bc9e1e.6632a2","outputs":1,"entityId":"sensor.bewegingssensor_woonkamer_illuminance","entityIdFilterType":"exact","property":"attributes.illuminance","comparator":"lt","value":"100","valueType":"num","timeout":0,"timeoutType":"num","timeoutUnits":"seconds","entityLocation":"","entityLocationType":"none","checkCurrentState":true,"blockInputOverrides":true,"x":440,"y":700,"wires":[["aaee57a8.cda8f8"]]},{"id":"12bc9e1e.6632a2","type":"server","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}] |
Doe ik iets fout?
Denk om uw spatiegebruik. Dit scheelt Tweakers.net kostbare databaseruimte! | Groninger en geïnteresseerd in Domotica? Kom naar DomoticaGrunn
De wait until actie is hier niet echt geschikt voor... de wait until node wacht, zoals de naam ook zegt tot een bepaalde gebeurtenis zich voordoet.MsG schreef op donderdag 11 februari 2021 @ 17:53:
Wat is eigenlijk de juiste bouwsteen voor het checken van een bepaalde property binnen een bepaalde flow?
Ik heb nu dit:
[Afbeelding]
Deze zou de lamp alleen aan moeten doen als de lux-waarde (vanuit de Aqara, dus die wijkt wat af van een echte lux-meting) boven de 100 is.
Maar ik tref de lampen nu aan, aan, zonder dat er beweging is geweest. Ik gebruik voor die lichtmetings-check een "Wait until"-node.
Eigenlijk moet die lux-checking alleen gebeuren na weer een nieuw true signaal vanuit de entity state. En dat lijkt nu niet helemaal zo te gaan.
JSON:
1 [{"id":"8e8cb7cc.6f7818","type":"server-state-changed","z":"b57f90f4.708e9","name":"Als er beweging is in de woonkamer","server":"12bc9e1e.6632a2","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.bewegingssensor_woonkamer_occupancy","entityidfiltertype":"exact","outputinitially":false,"state_type":"habool","haltifstate":"true","halt_if_type":"bool","halt_if_compare":"is","outputs":2,"output_only_on_state_change":false,"for":"","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":160,"y":700,"wires":[["6bc8c16d.36094","7407c137.259d5"],[]]},{"id":"cb740f52.b5366","type":"api-call-service","z":"b57f90f4.708e9","name":"gaan de spots uit","server":"12bc9e1e.6632a2","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.spot_1_light, light.spot_2_light, light.spot_3_light","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":750,"y":780,"wires":[[]]},{"id":"6bc8c16d.36094","type":"stoptimer","z":"b57f90f4.708e9","duration":"10","units":"Minute","payloadtype":"num","payloadval":"0","name":"Als er 10 minuten lang geen beweging is","x":460,"y":780,"wires":[["cb740f52.b5366"],[]]},{"id":"aaee57a8.cda8f8","type":"api-call-service","z":"b57f90f4.708e9","name":"gaan de spots aan","server":"12bc9e1e.6632a2","version":1,"debugenabled":false,"service_domain":"scene","service":"turn_on","entityId":"scene.spots_zacht_aan","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":670,"y":700,"wires":[[]]},{"id":"7407c137.259d5","type":"ha-wait-until","z":"b57f90f4.708e9","name":"en het donker is","server":"12bc9e1e.6632a2","outputs":1,"entityId":"sensor.bewegingssensor_woonkamer_illuminance","entityIdFilterType":"exact","property":"attributes.illuminance","comparator":"lt","value":"100","valueType":"num","timeout":0,"timeoutType":"num","timeoutUnits":"seconds","entityLocation":"","entityLocationType":"none","checkCurrentState":true,"blockInputOverrides":true,"x":440,"y":700,"wires":[["aaee57a8.cda8f8"]]},{"id":"12bc9e1e.6632a2","type":"server","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]
Doe ik iets fout?
Jij wil; beweging--> check of het donker genoeg is, Ja? licht aan. Nee? doe niets.
In dat geval gebruik je het best de current state node. In plaats van de timer node zou ik eerder de trigger node gebruiken.
Je kan ook een losse flow maken. Dus event state: beweging= off for 10 minutes --> licht uit.
@Koepert Veel automations kun je door de Home Assistant nodes direct overzetten. Je lijstje is aardig compleet.
De event node kan je instellen op for 24 hours. Dus event node; input_boolean.afwezig = on for 24 hours --> call service input boolean turn on vakantiestand. Dan hoef je ook geen reset te doen
A'dam PVOutput
A'dam PVOutput
Ik had het niet... maar heb wat in elkaar geknutseld. Leek me wel een leuke uitdagingericplan schreef op donderdag 11 februari 2021 @ 19:03:
Heeft iemand een node gemaakt om ergens graaddagen op te halen? Ik wil die per dag lokaal gaan opslaan in m’n database met meterstanden. Zelf heb ik geen betrouwbare temperatuurmeting voorhanden, dus het moet van extern komen (liefst gevalideerd).
Is eerste keer dat ik dit doe... dus misschien niet helemaal goed, maar het lijkt te werken.
1
| [{"id":"6a101c0a.9634ac","type":"inject","z":"2838595f.c700c6","name":"payload vast","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"stns=260&vars=TEMP&byear=2021&bmonth=2&bday=10&eyear=2021&emonth=2&eday=10","payloadType":"str","x":190,"y":1060,"wires":[["861d8e85.b568f8"]]},{"id":"861d8e85.b568f8","type":"http request","z":"2838595f.c700c6","name":"","method":"POST","ret":"txt","paytoqs":"body","url":"http://projects.knmi.nl/klimatologie/daggegevens/getdata_dag.cgi","tls":"","persist":false,"proxy":"","authType":"","x":590,"y":1060,"wires":[["f265e9a.08ea798"]]},{"id":"bf958fab.9dbb8","type":"debug","z":"2838595f.c700c6","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1530,"y":1160,"wires":[]},{"id":"f265e9a.08ea798","type":"function","z":"2838595f.c700c6","name":"eerste 1290 karakters weghalen","func":"msg.payload = msg.payload.substr(1290);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":850,"y":1060,"wires":[["12180e6a.912622"]]},{"id":"12180e6a.912622","type":"change","z":"2838595f.c700c6","name":"delete # & spaties","rules":[{"t":"change","p":"payload","pt":"msg","from":"#","fromt":"str","to":"","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":" ","fromt":"str","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1130,"y":1060,"wires":[["f4d3bab2.a32d3"]]},{"id":"f4d3bab2.a32d3","type":"csv","z":"2838595f.c700c6","name":"transform csv to object","sep":",","hdrin":true,"hdrout":"none","multi":"one","ret":"\\n","temp":"","skip":"1","strings":true,"include_empty_strings":"","include_null_values":"","x":620,"y":1160,"wires":[["630134e9.d074c4"]]},{"id":"fb4daf81.ae3258","type":"comment","z":"2838595f.c700c6","name":"uitleg afkortingen","info":"# STN LON(east) LAT(north) ALT(m) NAME\n\n# 391: 6.197 51.498 19.50 ARCEN\n\n# \n\n# YYYYMMDD = Date (YYYY=year MM=month DD=day); \n\n# TG = Daily mean temperature in (0.1 degrees Celsius); \n\n# TN = Minimum temperature (in 0.1 degrees Celsius); \n\n# TNH = Hourly division in which TN was measured; \n\n# TX = Maximum temperature (in 0.1 degrees Celsius); \n\n# TXH = Hourly division in which TX was measured; \n\n# T10N = Minimum temperature at 10 cm above surface (in 0.1 degrees Celsius); \n\n# T10NH = 6-hourly division in which T10N was measured; 6=0-6 UT, 12=6-12 UT, 18=12-18 UT, 24=18-24 UT","x":200,"y":1200,"wires":[]},{"id":"9d5e7afd.33e9b","type":"change","z":"2838595f.c700c6","name":"temp omzetten & graaddagen berekenen","rules":[{"t":"set","p":"payload.TG","pt":"msg","to":"$round(( payload.TG * 0.1),2)","tot":"jsonata"},{"t":"set","p":"payload.TN","pt":"msg","to":"$round(( payload.TN * 0.1),2)","tot":"jsonata"},{"t":"set","p":"payload.TX","pt":"msg","to":"$round(( payload.TX * 0.1),2)","tot":"jsonata"},{"t":"set","p":"payload.T10N","pt":"msg","to":"$round(( payload.T10N * 0.1),2)","tot":"jsonata"},{"t":"set","p":"payload.graaddagen","pt":"msg","to":"$round((18 - payload.TG),2)","tot":"jsonata"},{"t":"set","p":"payload.gewogengraaddagen","pt":"msg","to":"$round(((18 - payload.TG) * payload.weegfactor),2)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1200,"y":1160,"wires":[["bf958fab.9dbb8"]]},{"id":"6498001e.d91dc8","type":"inject","z":"2838595f.c700c6","name":"payload flex","props":[{"p":"station","v":"260","vt":"str"},{"p":"dag","v":"$moment().subtract(3,'days').format('DD')\t","vt":"jsonata"},{"p":"maand","v":"$moment().subtract(3,'days').format('MM')","vt":"jsonata"},{"p":"jaar","v":"$moment().subtract(3,'days').format('YYYY')\t","vt":"jsonata"},{"p":"payload"}],"repeat":"","crontab":"00 12 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"hallo","payloadType":"str","x":180,"y":980,"wires":[["81f12344.50f19"]]},{"id":"81f12344.50f19","type":"template","z":"2838595f.c700c6","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"stns={{station}}&vars=TEMP&byear={{jaar}}&bmonth={{maand}}&bday={{dag}}&eyear={{jaar}}&emonth={{maand}}&eday={{dag}}","output":"str","x":360,"y":980,"wires":[["861d8e85.b568f8"]]},{"id":"630134e9.d074c4","type":"function","z":"2838595f.c700c6","name":"weegfactor","func":"if (msg.maand <= 02)\n{\nmsg.payload.weegfactor = 1.1 ;\n}\n\nelse\n\nif (msg.maand == 03)\n{\nmsg.payload.weegfactor = 1 ;\n}\n\nelse\n\nif (msg.maand <= 09)\n{\nmsg.payload.weegfactor = 0.8 ;\n}\n\nelse\n{\nmsg.payload.weegfactor = 1.1 ;\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":890,"y":1160,"wires":[["9d5e7afd.33e9b"]]}] |
Dit vind ik echt mooi aan Node-Red. Ik heb geen programmeerkennis. Met een beetje knutselen krijg je resultaat.
[ Voor 118% gewijzigd door denuz op 13-02-2021 12:17 . Reden: foutje in code ]
Leuk, direct geïmporteerd. Mooi werk. Alleen krijg ik een negatief getal bij graaddagen? Dat kan toch niet?denuz schreef op vrijdag 12 februari 2021 @ 10:53:
[...]
Ik had het niet... maar heb wat in elkaar geknutseld. Leek me wel een leuke uitdaging.
Is eerste keer dat ik dit doe... dus misschien niet helemaal goed, maar het lijkt te werken.
code:
1 [{"id":"6a101c0a.9634ac","type":"inject","z":"2838595f.c700c6","name":"payload vast","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"stns=260&vars=TEMP&byear=2021&bmonth=2&bday=10&eyear=2021&emonth=2&eday=10","payloadType":"str","x":110,"y":1100,"wires":[["861d8e85.b568f8"]]},{"id":"861d8e85.b568f8","type":"http request","z":"2838595f.c700c6","name":"","method":"POST","ret":"txt","paytoqs":"body","url":"http://projects.knmi.nl/klimatologie/daggegevens/getdata_dag.cgi","tls":"","persist":false,"proxy":"","authType":"","x":590,"y":1060,"wires":[["f265e9a.08ea798"]]},{"id":"bf958fab.9dbb8","type":"debug","z":"2838595f.c700c6","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1370,"y":1160,"wires":[]},{"id":"f265e9a.08ea798","type":"function","z":"2838595f.c700c6","name":"eerste 1290 karakters weghalen","func":"msg.payload = msg.payload.substr(1290);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":850,"y":1060,"wires":[["12180e6a.912622"]]},{"id":"12180e6a.912622","type":"change","z":"2838595f.c700c6","name":"delete # & spaties","rules":[{"t":"change","p":"payload","pt":"msg","from":"#","fromt":"str","to":"","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":" ","fromt":"str","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1130,"y":1060,"wires":[["f4d3bab2.a32d3"]]},{"id":"f4d3bab2.a32d3","type":"csv","z":"2838595f.c700c6","name":"transform csv to object","sep":",","hdrin":true,"hdrout":"none","multi":"one","ret":"\\n","temp":"","skip":"1","strings":true,"include_empty_strings":"","include_null_values":"","x":620,"y":1160,"wires":[["9d5e7afd.33e9b"]]},{"id":"fb4daf81.ae3258","type":"comment","z":"2838595f.c700c6","name":"uitleg afkortingen","info":"# STN LON(east) LAT(north) ALT(m) NAME\n\n# 391: 6.197 51.498 19.50 ARCEN\n\n# \n\n# YYYYMMDD = Date (YYYY=year MM=month DD=day); \n\n# TG = Daily mean temperature in (0.1 degrees Celsius); \n\n# TN = Minimum temperature (in 0.1 degrees Celsius); \n\n# TNH = Hourly division in which TN was measured; \n\n# TX = Maximum temperature (in 0.1 degrees Celsius); \n\n# TXH = Hourly division in which TX was measured; \n\n# T10N = Minimum temperature at 10 cm above surface (in 0.1 degrees Celsius); \n\n# T10NH = 6-hourly division in which T10N was measured; 6=0-6 UT, 12=6-12 UT, 18=12-18 UT, 24=18-24 UT","x":200,"y":1200,"wires":[]},{"id":"9d5e7afd.33e9b","type":"change","z":"2838595f.c700c6","name":"temp omzetten & graaddagen berekenen","rules":[{"t":"set","p":"payload.TG","pt":"msg","to":"$round(( payload.TG * 0.1),2)","tot":"jsonata"},{"t":"set","p":"payload.TN","pt":"msg","to":"$round(( payload.TN * 0.1),2)","tot":"jsonata"},{"t":"set","p":"payload.TX","pt":"msg","to":"$round(( payload.TX * 0.1),2)","tot":"jsonata"},{"t":"set","p":"payload.T10N","pt":"msg","to":"$round(( payload.T10N * 0.1),2)","tot":"jsonata"},{"t":"set","p":"payload.graaddagen","pt":"msg","to":"$round(( payload.T10N - 18),2)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1000,"y":1160,"wires":[["bf958fab.9dbb8"]]},{"id":"6498001e.d91dc8","type":"inject","z":"2838595f.c700c6","name":"payload flex","props":[{"p":"station","v":"260","vt":"str"},{"p":"dag","v":"$moment().subtract(3,'days').format('DD')\t","vt":"jsonata"},{"p":"maand","v":"$moment().format('MM')","vt":"jsonata"},{"p":"jaar","v":"$moment().format('YYYY')\t","vt":"jsonata"},{"p":"payload"}],"repeat":"","crontab":"00 12 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"hallo","payloadType":"str","x":100,"y":980,"wires":[["81f12344.50f19"]]},{"id":"81f12344.50f19","type":"template","z":"2838595f.c700c6","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"stns={{station}}&vars=TEMP&byear={{jaar}}&bmonth={{maand}}&bday={{dag}}&eyear={{jaar}}&emonth={{maand}}&eday={{dag}}","output":"str","x":360,"y":980,"wires":[["861d8e85.b568f8"]]}]
A'dam PVOutput
Foutje. In de change node : temp omzetten & graaddagen berekenen in de onderste dit ervan maken:ericplan schreef op vrijdag 12 februari 2021 @ 11:28:
[...]
Leuk, direct geïmporteerd. Mooi werk. Alleen krijg ik een negatief getal bij graaddagen? Dat kan toch niet?
$round(( 18 - payload.TG ),2).
Sowieso handig om even te checken of het zo klopt. In de comment staat uitleg( van KNMI) over de afkortingen. Ik gebruik nu TG om de graaddagen te berekenen.
@ericplan in originele post nog wat aanpassingen gedaan in de code. specifiek in de inject payload flex. deze checkt 3 dagen terug.
[ Voor 29% gewijzigd door denuz op 12-02-2021 11:55 ]
Bedankt. Ik heb de laatste versie geïmporteerddenuz schreef op vrijdag 12 februari 2021 @ 11:30:
[...]
Foutje. In de change node : temp omzetten & graaddagen berekenen in de onderste dit ervan maken:
$round(( 18 - payload.TG ),2).
Sowieso handig om even te checken of het zo klopt. In de comment staat uitleg( van KNMI) over de afkortingen. Ik gebruik nu TG om de graaddagen te berekenen.
@ericplan in originele post nog wat aanpassingen gedaan in de code. specifiek in de inject payload flex. deze checkt 3 dagen terug.
A'dam PVOutput
Gewogen graaddagen
Behalve de buitentemperatuur, zijn er per jaargetijde nog meer weersomstandigheden van invloed op de thermostaat. Denk bijvoorbeeld aan de warmte van zonnestralen op het huis. Om de invloed van die wisselingen op de berekeningen te minimaliseren, worden de graaddagen vermenigvuldigd met een seizoensafhankelijke weegfactor. Dit noemen we gewogen graaddagen. De weegfactor is als volgt gedurende het jaar:
april t/m september: 0,8
maart en oktober: 1,0
november t/m februari: 1,1
A'dam PVOutput
Ja dat is niet zo lastig. Ik heb de code aangepast in mijn originele post. Nu zit in de payload graaddagen als gewogen graaddagen o.b.v. de input in jouw bericht.ericplan schreef op vrijdag 12 februari 2021 @ 21:18:
@denuz Mindergas werkt met gewogen graaddagen. Is dat iets wat als optie te implementeren is?
Gewogen graaddagen
Behalve de buitentemperatuur, zijn er per jaargetijde nog meer weersomstandigheden van invloed op de thermostaat. Denk bijvoorbeeld aan de warmte van zonnestralen op het huis. Om de invloed van die wisselingen op de berekeningen te minimaliseren, worden de graaddagen vermenigvuldigd met een seizoensafhankelijke weegfactor. Dit noemen we gewogen graaddagen. De weegfactor is als volgt gedurende het jaar:
april t/m september: 0,8
maart en oktober: 1,0
november t/m februari: 1,1
Mooi, vandaag mee verder. Maar er komt nieuw speelgoed, een Odroid C4, dus daar zal ook wat tijd in gaan zitten. Was nog een Tweaker(@zuigzoen ) die een KNMI-node gevonden had. Plaats de link maar even hier:denuz schreef op vrijdag 12 februari 2021 @ 23:24:
[...]
Ja dat is niet zo lastig. Ik heb de code aangepast in mijn originele post. Nu zit in de payload graaddagen als gewogen graaddagen o.b.v. de input in jouw bericht.
https://npm.io/package/node-knmi-fetch
A'dam PVOutput
Interessant. Als ik de definitie van graaddag op wikipedia bekijk, gaat het om de gemiddelde termperatuur over de gehele (afgelopen) dag (= etmaal). Beste tijdstip om data op te halen is dan vlak voor middernacht?denuz schreef op vrijdag 12 februari 2021 @ 23:24:
[...]
Ja dat is niet zo lastig. Ik heb de code aangepast in mijn originele post. Nu zit in de payload graaddagen als gewogen graaddagen o.b.v. de input in jouw bericht.
Maar waar moet de data vandaan komen?
Wellicht via https://www.knmi.nl/kenni...ophalen-vanuit-een-script
@denuz hoe ziet je totale sequence eruit? Je code in je bericht bevat alleen een functienode.
/edit: thx voor fixen @denuz !
[ Voor 22% gewijzigd door DeadMetal op 13-02-2021 12:19 ]
Denk dat er iets fout gegaan is met knippen en plakken, de hele sequence is er wel, tenminste tot gisterenDeadMetal schreef op zaterdag 13 februari 2021 @ 12:03:
[...]
@denuz hoe ziet je totale sequence eruit? Je code in je bericht bevat alleen een functienode.
A'dam PVOutput
Bijna jaar geleden heb ik wat problemen gehad met modbus binnen node-red. De nieuwe versie van modbus werkte maar een paar minuten en daarna stopt hij ermee. Met dank aan @AUijtdehaag naar een eerdere versie gegaan en daar werkte het mee. Inmiddels draait het stabiel voor meer dan een jaar. Met stabiel bedoel ik dat de waardes op een korte interval (5 seconden) binnen komen in mijn dashboard/domoticz.grote_oever schreef op zaterdag 2 mei 2020 @ 18:08:
[...]
Kleine update: dit heeft inderdaad probleem opgelost. Hij draait nu stabiel bij de buurman en mijn queue reset probleem is ook met downgrade opgelost.
Wel had ik vanaf het begin een probleem dat om de minuut er een waarschuwing in de debug komt:
"FSM Reset On State QUEUEING"
Dit zorgde ervoor dat de nodes (of modbusserver) gereset werden. Ergste wat er gebeurde is dat ik elke minuut even 5 seconden geen waarde kreeg. Dit was voor mij acceptabel en dat werkte.
Sinds deze week heeft mijn warmtepomp wat moeite en vliegt hij vaak in de nacht in alarm en stopt ermee. Ik ben erachter komen welk modbus adres het alarm is en heb er een flow erbij gemaakt die ervoor zorgt dat ik een pushover melding krijg als er een storing is. Ik check 1x in de 5 minuten of er een storing is.
Helaas werkt dit niet lekker. Want elke minuut wordt de modbusserver herstart, waardoor het lijkt dat de poll tijd ook herstart wordt. Gevolg is dat hij nooit checkt of de warmtepomp in alarm is.
Vandaag ben ik dus aan het onderzoeken gegaan waar het aan kan liggen, (want ik wordt ook gek van de foutmelding in de debug) maar ik om er even niet meer uit. Iemand die mij nog op weg kan helpen?
Huidige versie node-red-contrib-modbus: 4.1.3
Nieuwste versie: 5.13.3
Hierbij voorbeeld van de flow. Je ziet dat de modbus node "Uitlezen waardes (Alarm)" elke minuut moet uitlezen, maar de health check geeft aan dat er al lange tijd geen bericht is binnen gekomen:
:strip_exif()/f/image/JAa8dCfqJPnYzvNXwlX3DHOe.jpg?f=fotoalbum_large)
Als ik de interval verlaag naar 30 seconden dan werkt het. Ook werkt heel af en toe een interval van 1 minuut.
:strip_exif()/f/image/dXGWCnWXZQ2Mjj9h8sU99Jug.jpg?f=fotoalbum_large)
Ik ben een beetje zoekende waar het probleem nu aan kan liggen. Bij het zoeken van de foutmelding doet mij het vermoeden dat het een probleem is in de modbus versie. https://discourse.nodered...n-5-2-0-vs-v4-1-3/19428/2
Maar als ik update loop ik weer tegen andere problemen aan. Ik ben een beetje zoekende waar het nu aan ligt en wat ik nog kan doen om dit te verhelpen.
https://flows.nodered.org/node/node-red-contrib-modbus
Procon mitsubishi modbus rtu en SMA modbus tcp/ip
[ Voor 19% gewijzigd door AUijtdehaag op 13-02-2021 16:28 ]
Bedankt. Ga morgen de overstap eens wagen. Ik zie dat er wel flink wat nodes bijgekomen zijn.AUijtdehaag schreef op zaterdag 13 februari 2021 @ 16:27:
@grote_oever Ik (en nog 5 anderen) draai(en) reeds al een tijdje op de nieuwste 5.13.3
https://flows.nodered.org/node/node-red-contrib-modbus
Procon mitsubishi modbus rtu en SMA modbus tcp/ip
Offtopic; @AUijtdehaag SMA modbus heb ik nog op mijn wishlist staan. Gebruik nu de HTTP webgrabber. Ik had jou post al opgeslagen om SMA aan te sluiten op Modbus.
[ Voor 22% gewijzigd door grote_oever op 13-02-2021 17:03 ]
Zo vaak je wilt. Ik heb hem op 5 seconden staan, maar kan ook elke seconden of 1x per minuut (of langer). Enige nadeel is dat je totaal niet kunt uitlezen (daarom wil ik toch overstap naar modbus maken). Ik zal flow even exporteren en hier posten. Er staat dat hij bedoelt is voor de Tripower 8.0/10.0, maar hij werkt ook prima voor onze 5.0.AUijtdehaag schreef op zaterdag 13 februari 2021 @ 19:27:
@grote_oever Die http webgrabber kende ik nog niet.![]()
Hoe vaak/snel kan je die uitlezen?
[edit: flow]
Palette: https://flows.nodered.org...ed-contrib-sma-webconnect
1
| [{"id":"1611add7.6410fa","type":"tab","label":"SMA","disabled":false,"info":""},{"id":"650bd62.6a9dfa8","type":"debug","z":"1611add7.6410fa","name":"Debug","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":590,"y":280,"wires":[]},{"id":"9adc67f9.2959f8","type":"function","z":"1611add7.6410fa","name":"Vermogen","func":"//var power = {};\n//power.payload = Math.round( msg.payload.power / 10 ) / 100;\n//return power;\n\nnode.log (\"Waarde to Domoticz HTTP\");\nvar power = JSON.parse(msg.payload.power);\nvar DeviceID = 45;\n\nmsg.url = \"192.168.1.201:8080/json.htm?type=command¶m=udevice&idx=\"+ DeviceID +\"&nvalue=0&svalue=\"+power+\";0\";\n\nreturn msg;","outputs":1,"noerr":0,"x":710,"y":380,"wires":[["2d56f4c9.f0cc1c","204a1f77.b23d3"]]},{"id":"80e2a1ce.a4a348","type":"sma-webconnect","z":"1611add7.6410fa","ip_address":"192.168.1.11","right":"usr","use_tls":true,"device_selection":"sb_tripower","x":450,"y":380,"wires":[["9adc67f9.2959f8","650bd62.6a9dfa8"]]},{"id":"2d56f4c9.f0cc1c","type":"debug","z":"1611add7.6410fa","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":890,"y":300,"wires":[]},{"id":"3fc24275.9ed586","type":"inject","z":"1611add7.6410fa","name":"","topic":"Custom Headers","payload":"{\"sma_config\":{\"id\":\"1\",\"values\":{\"6100_00464800\":{\"name\":\"phase1_voltage\",\"divider\":100},\"6100_00464900\":{\"name\":\"phase2_voltage\",\"divider\":100},\"6100_00464A00\":{\"name\":\"phase3_voltage\",\"divider\":100},\"6100_40263F00\":{\"name\":\"power\",\"divider\":1}}}}","payloadType":"json","repeat":"5","crontab":"","once":true,"onceDelay":"5","x":230,"y":380,"wires":[["80e2a1ce.a4a348"]]},{"id":"204a1f77.b23d3","type":"http request","z":"1611add7.6410fa","name":"","method":"use","ret":"txt","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":930,"y":380,"wires":[[]]}] |
:strip_exif()/f/image/60K5kAIq3P5LcE3htbVopBY5.jpg?f=fotoalbum_large)
[ Voor 79% gewijzigd door grote_oever op 13-02-2021 20:34 . Reden: Flow toegevoegd ]
Ik heb een input_boolean.afwezig (zie ook hierboven) die er voor moet zorgen dat er bepaalde automatiseringen start, of juist niet.
Ik gebruik een bigtimer-node om (bijvoorbeeld) de lampen in de woonkamer elke ochtend en elke avond aan te doen. Dit is echter onnodig als we er niet zijn. Maar hoe zet ik die check daar tussen? ik heb achter de bigtimer een switch die filtert op on & off. Daarachter een call.service voor ON en Off. Ik dacht daartussen een check state-node maar die lijkt er juist voor te zorgen dat de lampen AAN gaan terwijl ze uit moeten. De switch-node daarachter is nl juist andersom. input_boolean OFF = lampen AAN...
K heb achter de bigtimer - switch een check-state gezet (op off) en op de true de lamp aan. Kijken of dit goed gaat.
[ Voor 8% gewijzigd door Koepert op 14-02-2021 08:18 ]
(dit n.a.v. de graaddagen discussie, vandaag wil ik de graaddagen van gisteren ophalen, maar dan ook bij de datum van gisteren opslaan in InfluxDB) en dus niet onder de huidige timestamp.
[ Voor 3% gewijzigd door DeadMetal op 14-02-2021 10:26 ]
Je kan die gewoon een timestamp in nanoseconds meegeven, dat zou moeten werken. Al heb ik daar momenteel ook ruzie mee, dus ik ben best geïnteresseerd in je oplossingDeadMetal schreef op zondag 14 februari 2021 @ 10:26:
Kan iemand me vertellen hoe ik data in InfluxDB kan opslaan onder/met de datum van gisteren?
(dit n.a.v. de graaddagen discussie, vandaag wil ik de graaddagen van gisteren ophalen, maar dan ook bij de datum van gisteren opslaan in InfluxDB) en dus niet onder de huidige timestamp.
A'dam PVOutput
Ah, dan zat ik al in de goede richting. Enkel de timestamp nog * 1000000 doen.ericplan schreef op zondag 14 februari 2021 @ 11:11:
[...]
Je kan die gewoon een timestamp in nanoseconds meegeven, dat zou moeten werken. Al heb ik daar momenteel ook ruzie mee, dus ik ben best geïnteresseerd in je oplossing
Mijn code, gebaseerd op die van @denuz is als volgt. Je moet enkel zelf nog een influxdb-out node eraan koppelen met je gewenste server en retention policy.
1
| [{"id":"c36f5fd.cb3e02","type":"template","z":"4bc7eca5.d66abc","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"stns={{station}}&vars=TEMP&byear={{jaar}}&bmonth={{maand}}&bday={{dag}}&eyear={{jaar}}&emonth={{maand}}&eday={{dag}}","output":"str","x":440,"y":720,"wires":[["cd9b087b.7e3a68"]]},{"id":"cd9b087b.7e3a68","type":"http request","z":"4bc7eca5.d66abc","name":"","method":"POST","ret":"txt","paytoqs":"body","url":"http://projects.knmi.nl/klimatologie/daggegevens/getdata_dag.cgi","tls":"","persist":false,"proxy":"","authType":"","x":590,"y":720,"wires":[["1a7c9bef.7ed26c"]]},{"id":"4e53527b.58562c","type":"delay","z":"4bc7eca5.d66abc","name":"","pauseType":"random","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"0","randomLast":"5","randomUnits":"minutes","drop":false,"x":280,"y":720,"wires":[["c36f5fd.cb3e02"]]},{"id":"e921470.aa2aeb8","type":"inject","z":"4bc7eca5.d66abc","name":"Eigen datum kiezen (DD, MM, YYYY","props":[{"p":"station","v":"240","vt":"str"},{"p":"dag","v":"12","vt":"str"},{"p":"maand","v":"02","vt":"str"},{"p":"jaar","v":"2021","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":200,"y":760,"wires":[["c36f5fd.cb3e02"]]},{"id":"1a7c9bef.7ed26c","type":"function","z":"4bc7eca5.d66abc","name":"eerste 1290 karakters weghalen","func":"msg.payload = msg.payload.substr(1290);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":810,"y":720,"wires":[["789da90.e6a1958"]]},{"id":"5eba6147.9b53b","type":"inject","z":"4bc7eca5.d66abc","name":"dagelijks 16u","props":[{"p":"station","v":"240","vt":"str"},{"p":"dag","v":"$moment().subtract(1,'days').format('DD')","vt":"jsonata"},{"p":"maand","v":"$moment().subtract(1,'days').format('MM')","vt":"jsonata"},{"p":"jaar","v":"$moment().subtract(1,'days').format('YYYY')","vt":"jsonata"}],"repeat":"","crontab":"00 16 * * *","once":false,"onceDelay":0.1,"topic":"","x":120,"y":720,"wires":[["4e53527b.58562c"]]},{"id":"789da90.e6a1958","type":"change","z":"4bc7eca5.d66abc","name":"delete # en spaties","rules":[{"t":"change","p":"payload","pt":"msg","from":"#","fromt":"str","to":"","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":" ","fromt":"str","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1050,"y":720,"wires":[["aea8529e.d1c05"]]},{"id":"aea8529e.d1c05","type":"csv","z":"4bc7eca5.d66abc","name":"transform csv naar object","sep":",","hdrin":true,"hdrout":"none","multi":"one","ret":"\\n","temp":"","skip":"1","strings":true,"include_empty_strings":"","include_null_values":"","x":1270,"y":720,"wires":[["dfa5a565.36f068"]]},{"id":"dfa5a565.36f068","type":"function","z":"4bc7eca5.d66abc","name":"weegfactor","func":"if (msg.maand <= 02)\n{\nmsg.payload.weegfactor = 1.1 ;\n}\n\nelse if (msg.maand == 03)\n{\nmsg.payload.weegfactor = 1 ;\n}\n\nelse if (msg.maand <= 09)\n{\nmsg.payload.weegfactor = 0.8 ;\n}\n\nelse\n{\nmsg.payload.weegfactor = 1.1 ;\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1470,"y":720,"wires":[["1ac86c78.944514"]]},{"id":"1ac86c78.944514","type":"change","z":"4bc7eca5.d66abc","name":"temp omzetten & graaddagen berekenen","rules":[{"t":"set","p":"payload.TG","pt":"msg","to":"$round(( payload.TG * 0.1),2)","tot":"jsonata"},{"t":"set","p":"payload.TN","pt":"msg","to":"$round(( payload.TN * 0.1),2)","tot":"jsonata"},{"t":"set","p":"payload.TX","pt":"msg","to":"$round(( payload.TX * 0.1),2)","tot":"jsonata"},{"t":"set","p":"payload.T10N","pt":"msg","to":"$round(( payload.T10N * 0.1),2)","tot":"jsonata"},{"t":"set","p":"payload.graaddagen","pt":"msg","to":"$round((18 - payload.TG),2)","tot":"jsonata"},{"t":"set","p":"payload.gewogengraaddagen","pt":"msg","to":"$round(((18 - payload.TG) * payload.weegfactor),2)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1720,"y":720,"wires":[["bef76c04.8e6e","27495e87.28d402","8a7801c4.7c5e7","f8d19ac1.c50c9","de101a2a.9433b"]]},{"id":"bef76c04.8e6e","type":"change","z":"4bc7eca5.d66abc","name":"gewogengraaddagen","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.gewogengraaddagen","tot":"msg"},{"t":"set","p":"entity_id","pt":"msg","to":"gewogengraaddagen","tot":"str"},{"t":"set","p":"measurement","pt":"msg","to":"gewogengraaddagen","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":2040,"y":640,"wires":[["56a048d0.38d2c"]]},{"id":"27495e87.28d402","type":"change","z":"4bc7eca5.d66abc","name":"graaddagen","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.graaddagen","tot":"msg"},{"t":"set","p":"entity_id","pt":"msg","to":"graaddagen","tot":"str"},{"t":"set","p":"measurement","pt":"msg","to":"graaddagen","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":2010,"y":680,"wires":[["56a048d0.38d2c"]]},{"id":"8a7801c4.7c5e7","type":"change","z":"4bc7eca5.d66abc","name":"maxtemp","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.TX","tot":"msg"},{"t":"set","p":"entity_id","pt":"msg","to":"maxtemp","tot":"str"},{"t":"set","p":"measurement","pt":"msg","to":"temperature","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":2000,"y":720,"wires":[["56a048d0.38d2c"]]},{"id":"f8d19ac1.c50c9","type":"change","z":"4bc7eca5.d66abc","name":"mintemp","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.TN","tot":"msg"},{"t":"set","p":"entity_id","pt":"msg","to":"mintemp","tot":"str"},{"t":"set","p":"measurement","pt":"msg","to":"temperature","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":2000,"y":760,"wires":[["56a048d0.38d2c"]]},{"id":"de101a2a.9433b","type":"change","z":"4bc7eca5.d66abc","name":"gemiddeldetemp","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.TG","tot":"msg"},{"t":"set","p":"entity_id","pt":"msg","to":"gemiddeldetemp","tot":"str"},{"t":"set","p":"measurement","pt":"msg","to":"temperature","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":2030,"y":800,"wires":[["56a048d0.38d2c"]]},{"id":"56a048d0.38d2c","type":"function","z":"4bc7eca5.d66abc","name":"","func":"var waarde = msg.payload;\nvar entiteit = msg.entity_id;\nvar dag = msg.dag;\ndag = parseInt(dag.replace(/^0+(?!\\.|$)/, ''));\nvar maand = msg.maand;\nmaand = parseInt(maand.replace(/^0+(?!\\.|$)/, '')) -1;\nvar jaar = parseInt(msg.jaar);\n\nvar datum = new Date(jaar, maand, dag, 12, 0, 0);\nvar datumnanoseconden = datum.getTime() * 1000000;\n\nvar newmsg = {};\nnewmsg.measurement = msg.measurement;\nnewmsg.datum = datum;\nnewmsg.payload = [\n{\n value: waarde,\n time: datumnanoseconden\n},\n{\n domain: \"sensor\",\n entity_id: entiteit\n}];\nreturn newmsg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":2240,"y":680,"wires":[["afe73871.57c03"]]},{"id":"afe73871.57c03","type":"change","z":"4bc7eca5.d66abc","name":"","rules":[{"t":"delete","p":"data","pt":"msg"},{"t":"delete","p":"entity_id","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":2400,"y":680,"wires":[["50e1a8ec.6b202"]]},{"id":"50e1a8ec.6b202","type":"delay","z":"4bc7eca5.d66abc","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":2570,"y":680,"wires":[["cc9c4f37.4779d","5749baa1.418524"]]},{"id":"cc9c4f37.4779d","type":"debug","z":"4bc7eca5.d66abc","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":2730,"y":640,"wires":[]},{"id":"47c9c873.eacd1","type":"comment","z":"4bc7eca5.d66abc","name":"Buitentemperatuur van gisteren ophalen bij KNMI","info":"","x":220,"y":680,"wires":[]}] |
Wat hij doet is dagelijks om 16u (met nog een random delay tussen 0 en 5m om de server niet op een vast tijdstip te belasten) de gegevens van de vorige dag ophalen bij KNMI, en graaddagen/gewogengraaddagen/mintemp/maxtemp/gemiddeldetemp opslaan in InfluxDB. Let erop dat ik het weerstation heb gewijzigd in de 1e inject-node.
[ Voor 49% gewijzigd door DeadMetal op 14-02-2021 14:01 ]
Je issue komt door de check state node. Als je niet wilt dat de huidige state in de payload terecht komt dan moet je de state location op none zetten. Dan check je of je entity een bepaalde waarde heeft maar blijft de huidige payload hetzelfde.Koepert schreef op zondag 14 februari 2021 @ 08:07:
Vraagje.
Ik heb een input_boolean.afwezig (zie ook hierboven) die er voor moet zorgen dat er bepaalde automatiseringen start, of juist niet.
Ik gebruik een bigtimer-node om (bijvoorbeeld) de lampen in de woonkamer elke ochtend en elke avond aan te doen. Dit is echter onnodig als we er niet zijn. Maar hoe zet ik die check daar tussen? ik heb achter de bigtimer een switch die filtert op on & off. Daarachter een call.service voor ON en Off. Ik dacht daartussen een check state-node maar die lijkt er juist voor te zorgen dat de lampen AAN gaan terwijl ze uit moeten. De switch-node daarachter is nl juist andersom. input_boolean OFF = lampen AAN...
K heb achter de bigtimer - switch een check-state gezet (op off) en op de true de lamp aan. Kijken of dit goed gaat.
:fill(white):strip_exif()/f/image/pAiziEuyeO0uc1K5wMFEzNJI.png?f=user_large)
Misschien heb jij nog een idee over een andere timestamp.
Ik probeer een node te maken die al mijn zigbee devices ophaalt. In payload.attributes.last_seen krijg ik dan een timestamp á "2021-02-14T11:45:10+01:00". Nu wil ik checken of deze timestamp > 4 uur geleden < 6 uur geleden is. Dus eigenlijk een vergelijking met de huidige timestamp. Ik heb een deduct geprobeeerd op de epoch time, maar dat werkt niet.
Misschien kan je deze hergebruiken en iets aanpassen (de change node voor de function node)?denuz schreef op zondag 14 februari 2021 @ 11:59:
Misschien heb jij nog een idee over een andere timestamp.
Ik probeer een node te maken die al mijn zigbee devices ophaalt. In payload.attributes.last_seen krijg ik dan een timestamp á "2021-02-14T11:45:10+01:00". Nu wil ik checken of deze timestamp > 4 uur geleden < 6 uur geleden is. Dus eigenlijk een vergelijking met de huidige timestamp. Ik heb een deduct geprobeeerd op de epoch time, maar dat werkt niet.
DeadMetal in "Node-RED - grafisch 'programmeren' (bijv. voor domotica)"
[ Voor 3% gewijzigd door DeadMetal op 14-02-2021 14:01 ]
Thx, ik heb inmiddels een nieuwe versie van de code gepost in dat bericht.denuz schreef op zondag 14 februari 2021 @ 11:59:
@DeadMetal Nice. Mooie function node heb je gemaakt.
Verbeteringen:
- een 2e handmatige inject-node waarbij je zelf een datum kan invullen. Zo heb ik nu handmatig de eerdere dagen van 2021 opgehaald en in Influx gezet.
- de functienode kiest niet de datum van gisteren als timestamp, maar de daadwerkelijke datum waarvoor de gegevens bij KNMI zijn opgevraagd.
https://imgur.com/CsvC1wo
Werkt wel goed eigenlijk.
[ Voor 14% gewijzigd door AUijtdehaag op 14-02-2021 14:28 ]
Owh, ik zie het. Ik dacht dat hij alleen waardes kon halen van de pagina: /#/spotvalues en daar vond ik geen totaal. Hoe kwam je aan deze waarde? Want totaal op beginpagina leek berekend te worden.AUijtdehaag schreef op zondag 14 februari 2021 @ 14:27:
@grote_oever Het totaal is toch ook gewoon uitleesbaar?
https://imgur.com/CsvC1wo
Werkt wel goed eigenlijk.
Heb naar totaalwaarde gezocht maar niet kunnen vinden. Wil jij de value's eens posten?
[ Voor 11% gewijzigd door grote_oever op 14-02-2021 14:32 ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| { "sma_config": { "id": "1", "values": { "6100_40263F00": { "name": "ac_power", "divider": 1 }, "6100_00465700": { "name": "frequentie", "divider": 100 }, "6100_40465300": { "name": "ac_current", "divider": 1000 }, "6100_00464800": { "name": "ac_voltage", "divider": 100 }, "6400_00260100": { "name": "totaal", "divider": 1000 }, "6400_00262200": { "name": "dag_totaal", "divider": 1000 }, "6380_40251E00": { "name": "dc_power_mppt1", "divider": 1 }, "6380_40452100": { "name": "dc_current_mppt1", "divider": 1000 }, "6380_40451F00": { "name": "dc_voltage_mppt1", "divider": 100 } } } } |
Momentane waarden:
https://imgur.com/NubmNjQ
SMA 2.5 firmware 3.10.7.R
Ja, vermoed inderdaad softwareversie. Want ik heb die er niet bijstaan.AUijtdehaag schreef op zondag 14 februari 2021 @ 14:40:
@grote_oever Heb je aan mijn plaatje iets, wat ik heb toegevoegd hierboven?
:strip_exif()/f/image/zzKipgLstFbjfbFfVCZvbF2t.jpg?f=fotoalbum_large)
Model STP5.0-3AV-40 667 Versie 2.13.33.R
@AUijtdehaag Top, ga later even kijken... moet eerste even modbus in node-red updaten
[ Voor 9% gewijzigd door grote_oever op 14-02-2021 14:48 ]
Firmware V3.x.x heb je nodig denk ik.
even updaten naar V3 dan.
[ Voor 34% gewijzigd door AUijtdehaag op 14-02-2021 14:50 ]
Ik ben zoals velen gestart met de verlichting in te regelen. Nu heb ik voor elkaar dat mijn licht aangaat door motion en uit als er x tijd geen motion is. Ook heb ik daarbij gemaakt dat het alleen aangaat onder een bepaalde lux waarde.
Tot zover gaat het na veel puzzelen goed. Echter nu wil toevoegen dat mijn verlichting zich volgens het circadian principe aanpast. Echter ik krijg het niet voor elkaar, veel guides en forum posts bekeken, maar kom er niet uit.
Waar ik nu op vastloop is dat ik wel mijn kelvin waarde uitlees uit de payload maar heb werkelijk geen idee (niets was succesvol) om die weer te gebruiken in mijn call service data.
Ik maak gebruik van hue lampen en alles hangt aan HA via Conbee2. Nu staat in mijn flow de waarde voor Kelvin op 6500, maar dat zou ik graag als een variable zien die zijn data haalt uit de circadian node, die staat nu als debug elke minuut de waarde te "spammen".
1
| [{"id":"d7890d3d.9dd5d","type":"poll-state","z":"2b78f293.de5fde","name":"Attic Light Sensor","server":"ec37d48.f8fae28","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"updateinterval":"5","updateIntervalUnits":"seconds","outputinitially":false,"outputonchanged":false,"entity_id":"sensor.lightlevel_4","state_type":"str","halt_if":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"x":140,"y":1080,"wires":[["89dd29a1.142fe8"]]},{"id":"89dd29a1.142fe8","type":"switch","z":"2b78f293.de5fde","name":"Lux Threshold","property":"payload","propertyType":"msg","rules":[{"t":"lte","v":"60","vt":"num"},{"t":"gte","v":"61","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":360,"y":1080,"wires":[["4f85fb84.b0c554"],["5960e550.d77cdc"]]},{"id":"4f85fb84.b0c554","type":"change","z":"2b78f293.de5fde","name":"Enable Light","rules":[{"t":"set","p":"Light_enabled","pt":"flow","to":"Yes","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":610,"y":1040,"wires":[[]]},{"id":"5960e550.d77cdc","type":"change","z":"2b78f293.de5fde","name":"Disable Light","rules":[{"t":"set","p":"Light_enabled","pt":"flow","to":"No","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":610,"y":1100,"wires":[[]]},{"id":"20e9ee6c.f90dc2","type":"switch","z":"2b78f293.de5fde","name":"Light Enabled?","property":"Light_enabled","propertyType":"flow","rules":[{"t":"eq","v":"Yes","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":380,"y":1240,"wires":[["7eeb802c.40591"]]},{"id":"7eeb802c.40591","type":"api-call-service","z":"2b78f293.de5fde","name":"Attic Light On","server":"ec37d48.f8fae28","version":1,"debugenabled":true,"service_domain":"light","service":"turn_on","entityId":"light.extended_color_light_3","data":"{\"brightness_pct\":\"100\",\"kelvin\":\"6500\",\"transition\":1}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":620,"y":1240,"wires":[[]]},{"id":"2974d4f.9eee02c","type":"server-state-changed","z":"2b78f293.de5fde","name":"Test Attic motion","server":"ec37d48.f8fae28","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.presence_2","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":140,"y":1280,"wires":[["20e9ee6c.f90dc2","72407247.67a1cc"]]},{"id":"72407247.67a1cc","type":"trigger","z":"2b78f293.de5fde","name":"Switch off delay","op1":"","op2":"off","op1type":"nul","op2type":"str","duration":"5","extend":false,"overrideDelay":false,"units":"s","reset":"on","bytopic":"all","topic":"topic","outputs":1,"x":380,"y":1320,"wires":[["77293b14.f31ae4"]]},{"id":"77293b14.f31ae4","type":"api-call-service","z":"2b78f293.de5fde","name":"Attic Light Off","server":"ec37d48.f8fae28","version":1,"debugenabled":true,"service_domain":"light","service":"turn_off","entityId":"light.extended_color_light_3","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":620,"y":1320,"wires":[[]]},{"id":"149ebcc6.db8b03","type":"Circadian Light","z":"2b78f293.de5fde","lat":"2.149839","lon":"8.689817","period":"1","topic":"","name":"","x":120,"y":1180,"wires":[["b7026b60.391e38"]]},{"id":"e6243a4b.636f58","type":"debug","z":"2b78f293.de5fde","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":750,"y":1180,"wires":[]},{"id":"b7026b60.391e38","type":"range","z":"2b78f293.de5fde","minin":"0","maxin":"100","minout":"2000","maxout":"6500","action":"scale","round":true,"property":"payload.percent","name":"percent to kelvin range","x":320,"y":1180,"wires":[["9c876a2f.d58148"]]},{"id":"9c876a2f.d58148","type":"change","z":"2b78f293.de5fde","name":"Kelvin value","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.percent","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":550,"y":1180,"wires":[["e6243a4b.636f58"]]},{"id":"ec37d48.f8fae28","type":"server","name":"Home Assistant","addon":true}] |
Is er iemand die me de juiste weg kan wijzen?
Thanks.DeadMetal schreef op zondag 14 februari 2021 @ 12:55:
[...]
Misschien kan je deze hergebruiken en iets aanpassen (de change node voor de function node)?
DeadMetal in "Node-RED - grafisch 'programmeren' (bijv. voor domotica)"
Heb het iets ander aangepakt.
1
| [{"id":"c36f5fd.cb3e02","type":"template","z":"4bc7eca5.d66abc","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"stns={{station}}&vars=TEMP&byear={{jaar}}&bmonth={{maand}}&bday={{dag}}&eyear={{jaar}}&emonth={{maand}}&eday={{dag}}","output":"str","x":440,"y":720,"wires":[["cd9b087b.7e3a68"]]},{"id":"cd9b087b.7e3a68","type":"http request","z":"4bc7eca5.d66abc","name":"","method":"POST","ret":"txt","paytoqs":"body","url":"http://projects.knmi.nl/klimatologie/daggegevens/getdata_dag.cgi","tls":"","persist":false,"proxy":"","authType":"","x":590,"y":720,"wires":[["1a7c9bef.7ed26c"]]},{"id":"4e53527b.58562c","type":"delay","z":"4bc7eca5.d66abc","name":"","pauseType":"random","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"0","randomLast":"5","randomUnits":"minutes","drop":false,"x":280,"y":720,"wires":[["c36f5fd.cb3e02"]]},{"id":"e921470.aa2aeb8","type":"inject","z":"4bc7eca5.d66abc","name":"Eigen datum kiezen (DD, MM, YYYY","props":[{"p":"station","v":"240","vt":"str"},{"p":"dag","v":"12","vt":"str"},{"p":"maand","v":"02","vt":"str"},{"p":"jaar","v":"2021","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":200,"y":760,"wires":[["c36f5fd.cb3e02"]]},{"id":"1a7c9bef.7ed26c","type":"function","z":"4bc7eca5.d66abc","name":"eerste 1290 karakters weghalen","func":"msg.payload = msg.payload.substr(1290);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":810,"y":720,"wires":[["789da90.e6a1958"]]},{"id":"5eba6147.9b53b","type":"inject","z":"4bc7eca5.d66abc","name":"dagelijks 16u","props":[{"p":"station","v":"240","vt":"str"},{"p":"dag","v":"$moment().subtract(1,'days').format('DD')","vt":"jsonata"},{"p":"maand","v":"$moment().subtract(1,'days').format('MM')","vt":"jsonata"},{"p":"jaar","v":"$moment().subtract(1,'days').format('YYYY')","vt":"jsonata"}],"repeat":"","crontab":"00 16 * * *","once":false,"onceDelay":0.1,"topic":"","x":120,"y":720,"wires":[["4e53527b.58562c"]]},{"id":"789da90.e6a1958","type":"change","z":"4bc7eca5.d66abc","name":"delete # en spaties","rules":[{"t":"change","p":"payload","pt":"msg","from":"#","fromt":"str","to":"","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":" ","fromt":"str","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1050,"y":720,"wires":[["aea8529e.d1c05"]]},{"id":"aea8529e.d1c05","type":"csv","z":"4bc7eca5.d66abc","name":"transform csv naar object","sep":",","hdrin":true,"hdrout":"none","multi":"one","ret":"\\n","temp":"","skip":"1","strings":true,"include_empty_strings":"","include_null_values":"","x":1270,"y":720,"wires":[["dfa5a565.36f068"]]},{"id":"dfa5a565.36f068","type":"function","z":"4bc7eca5.d66abc","name":"weegfactor","func":"if (msg.maand <= 02)\n{\nmsg.payload.weegfactor = 1.1 ;\n}\n\nelse if (msg.maand == 03)\n{\nmsg.payload.weegfactor = 1 ;\n}\n\nelse if (msg.maand <= 09)\n{\nmsg.payload.weegfactor = 0.8 ;\n}\n\nelse\n{\nmsg.payload.weegfactor = 1.1 ;\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1470,"y":720,"wires":[["1ac86c78.944514"]]},{"id":"1ac86c78.944514","type":"change","z":"4bc7eca5.d66abc","name":"temp omzetten & graaddagen berekenen","rules":[{"t":"set","p":"payload.TG","pt":"msg","to":"$round(( payload.TG * 0.1),2)","tot":"jsonata"},{"t":"set","p":"payload.TN","pt":"msg","to":"$round(( payload.TN * 0.1),2)","tot":"jsonata"},{"t":"set","p":"payload.TX","pt":"msg","to":"$round(( payload.TX * 0.1),2)","tot":"jsonata"},{"t":"set","p":"payload.T10N","pt":"msg","to":"$round(( payload.T10N * 0.1),2)","tot":"jsonata"},{"t":"set","p":"payload.graaddagen","pt":"msg","to":"$round((18 - payload.TG),2)","tot":"jsonata"},{"t":"set","p":"payload.gewogengraaddagen","pt":"msg","to":"$round(((18 - payload.TG) * payload.weegfactor),2)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1720,"y":720,"wires":[["bef76c04.8e6e","27495e87.28d402","8a7801c4.7c5e7","f8d19ac1.c50c9","de101a2a.9433b"]]},{"id":"bef76c04.8e6e","type":"change","z":"4bc7eca5.d66abc","name":"gewogengraaddagen","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.gewogengraaddagen","tot":"msg"},{"t":"set","p":"entity_id","pt":"msg","to":"gewogengraaddagen","tot":"str"},{"t":"set","p":"measurement","pt":"msg","to":"gewogengraaddagen","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":2040,"y":640,"wires":[["56a048d0.38d2c"]]},{"id":"27495e87.28d402","type":"change","z":"4bc7eca5.d66abc","name":"graaddagen","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.graaddagen","tot":"msg"},{"t":"set","p":"entity_id","pt":"msg","to":"graaddagen","tot":"str"},{"t":"set","p":"measurement","pt":"msg","to":"graaddagen","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":2010,"y":680,"wires":[["56a048d0.38d2c"]]},{"id":"8a7801c4.7c5e7","type":"change","z":"4bc7eca5.d66abc","name":"maxtemp","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.TX","tot":"msg"},{"t":"set","p":"entity_id","pt":"msg","to":"maxtemp","tot":"str"},{"t":"set","p":"measurement","pt":"msg","to":"temperature","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":2000,"y":720,"wires":[["56a048d0.38d2c"]]},{"id":"f8d19ac1.c50c9","type":"change","z":"4bc7eca5.d66abc","name":"mintemp","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.TN","tot":"msg"},{"t":"set","p":"entity_id","pt":"msg","to":"mintemp","tot":"str"},{"t":"set","p":"measurement","pt":"msg","to":"temperature","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":2000,"y":760,"wires":[["56a048d0.38d2c"]]},{"id":"de101a2a.9433b","type":"change","z":"4bc7eca5.d66abc","name":"gemiddeldetemp","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.TG","tot":"msg"},{"t":"set","p":"entity_id","pt":"msg","to":"gemiddeldetemp","tot":"str"},{"t":"set","p":"measurement","pt":"msg","to":"temperature","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":2030,"y":800,"wires":[["56a048d0.38d2c"]]},{"id":"56a048d0.38d2c","type":"function","z":"4bc7eca5.d66abc","name":"","func":"var waarde = msg.payload;\nvar entiteit = msg.entity_id;\nvar dag = msg.dag;\ndag = parseInt(dag.replace(/^0+(?!\\.|$)/, ''));\nvar maand = msg.maand;\nmaand = parseInt(maand.replace(/^0+(?!\\.|$)/, '')) -1;\nvar jaar = parseInt(msg.jaar);\n\nvar datum = new Date(jaar, maand, dag, 12, 0, 0);\nvar datumnanoseconden = datum.getTime() * 1000000;\n\nvar newmsg = {};\nnewmsg.measurement = msg.measurement;\nnewmsg.datum = datum;\nnewmsg.payload = [\n{\n value: waarde,\n time: datumnanoseconden\n},\n{\n domain: \"sensor\",\n entity_id: entiteit\n}];\nreturn newmsg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":2240,"y":680,"wires":[["afe73871.57c03"]]},{"id":"afe73871.57c03","type":"change","z":"4bc7eca5.d66abc","name":"","rules":[{"t":"delete","p":"data","pt":"msg"},{"t":"delete","p":"entity_id","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":2400,"y":680,"wires":[["50e1a8ec.6b202"]]},{"id":"50e1a8ec.6b202","type":"delay","z":"4bc7eca5.d66abc","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":2570,"y":680,"wires":[["cc9c4f37.4779d","5749baa1.418524"]]},{"id":"cc9c4f37.4779d","type":"debug","z":"4bc7eca5.d66abc","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":2730,"y":640,"wires":[]},{"id":"47c9c873.eacd1","type":"comment","z":"4bc7eca5.d66abc","name":"Buitentemperatuur van gisteren ophalen bij KNMI","info":"","x":220,"y":680,"wires":[]}] |
Jahoor. Je kan de kelvin value ook in een flow zetten. De flow.kelvinvalue (oid) kun je vervolgens aanroepen in je call service. Daar heb je nu staan: "6500" , daar maak je dan van "{{flow.kelvinvalue}}" .kweetnie schreef op zondag 14 februari 2021 @ 17:49:
Ben sinds kort gestart met node red en home assistant. Met het nodige vallen en opstaan ben ik inmiddels alweer iets verder. Echter nu blijf ik vastlopen omdat mijn kennis en blijkbaar mijn zoekskills me in de steek laten.
Ik ben zoals velen gestart met de verlichting in te regelen. Nu heb ik voor elkaar dat mijn licht aangaat door motion en uit als er x tijd geen motion is. Ook heb ik daarbij gemaakt dat het alleen aangaat onder een bepaalde lux waarde.
Tot zover gaat het na veel puzzelen goed. Echter nu wil toevoegen dat mijn verlichting zich volgens het circadian principe aanpast. Echter ik krijg het niet voor elkaar, veel guides en forum posts bekeken, maar kom er niet uit.
Waar ik nu op vastloop is dat ik wel mijn kelvin waarde uitlees uit de payload maar heb werkelijk geen idee (niets was succesvol) om die weer te gebruiken in mijn call service data.
Ik maak gebruik van hue lampen en alles hangt aan HA via Conbee2. Nu staat in mijn flow de waarde voor Kelvin op 6500, maar dat zou ik graag als een variable zien die zijn data haalt uit de circadian node, die staat nu als debug elke minuut de waarde te "spammen".
code:
1 [{"id":"d7890d3d.9dd5d","type":"poll-state","z":"2b78f293.de5fde","name":"Attic Light Sensor","server":"ec37d48.f8fae28","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"updateinterval":"5","updateIntervalUnits":"seconds","outputinitially":false,"outputonchanged":false,"entity_id":"sensor.lightlevel_4","state_type":"str","halt_if":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"x":140,"y":1080,"wires":[["89dd29a1.142fe8"]]},{"id":"89dd29a1.142fe8","type":"switch","z":"2b78f293.de5fde","name":"Lux Threshold","property":"payload","propertyType":"msg","rules":[{"t":"lte","v":"60","vt":"num"},{"t":"gte","v":"61","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":360,"y":1080,"wires":[["4f85fb84.b0c554"],["5960e550.d77cdc"]]},{"id":"4f85fb84.b0c554","type":"change","z":"2b78f293.de5fde","name":"Enable Light","rules":[{"t":"set","p":"Light_enabled","pt":"flow","to":"Yes","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":610,"y":1040,"wires":[[]]},{"id":"5960e550.d77cdc","type":"change","z":"2b78f293.de5fde","name":"Disable Light","rules":[{"t":"set","p":"Light_enabled","pt":"flow","to":"No","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":610,"y":1100,"wires":[[]]},{"id":"20e9ee6c.f90dc2","type":"switch","z":"2b78f293.de5fde","name":"Light Enabled?","property":"Light_enabled","propertyType":"flow","rules":[{"t":"eq","v":"Yes","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":380,"y":1240,"wires":[["7eeb802c.40591"]]},{"id":"7eeb802c.40591","type":"api-call-service","z":"2b78f293.de5fde","name":"Attic Light On","server":"ec37d48.f8fae28","version":1,"debugenabled":true,"service_domain":"light","service":"turn_on","entityId":"light.extended_color_light_3","data":"{\"brightness_pct\":\"100\",\"kelvin\":\"6500\",\"transition\":1}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":620,"y":1240,"wires":[[]]},{"id":"2974d4f.9eee02c","type":"server-state-changed","z":"2b78f293.de5fde","name":"Test Attic motion","server":"ec37d48.f8fae28","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.presence_2","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":140,"y":1280,"wires":[["20e9ee6c.f90dc2","72407247.67a1cc"]]},{"id":"72407247.67a1cc","type":"trigger","z":"2b78f293.de5fde","name":"Switch off delay","op1":"","op2":"off","op1type":"nul","op2type":"str","duration":"5","extend":false,"overrideDelay":false,"units":"s","reset":"on","bytopic":"all","topic":"topic","outputs":1,"x":380,"y":1320,"wires":[["77293b14.f31ae4"]]},{"id":"77293b14.f31ae4","type":"api-call-service","z":"2b78f293.de5fde","name":"Attic Light Off","server":"ec37d48.f8fae28","version":1,"debugenabled":true,"service_domain":"light","service":"turn_off","entityId":"light.extended_color_light_3","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":620,"y":1320,"wires":[[]]},{"id":"149ebcc6.db8b03","type":"Circadian Light","z":"2b78f293.de5fde","lat":"52.143839","lon":"4.689017","period":"1","topic":"","name":"","x":120,"y":1180,"wires":[["b7026b60.391e38"]]},{"id":"e6243a4b.636f58","type":"debug","z":"2b78f293.de5fde","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":750,"y":1180,"wires":[]},{"id":"b7026b60.391e38","type":"range","z":"2b78f293.de5fde","minin":"0","maxin":"100","minout":"2000","maxout":"6500","action":"scale","round":true,"property":"payload.percent","name":"percent to kelvin range","x":320,"y":1180,"wires":[["9c876a2f.d58148"]]},{"id":"9c876a2f.d58148","type":"change","z":"2b78f293.de5fde","name":"Kelvin value","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.percent","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":550,"y":1180,"wires":[["e6243a4b.636f58"]]},{"id":"ec37d48.f8fae28","type":"server","name":"Home Assistant","addon":true}]
Is er iemand die me de juiste weg kan wijzen?
1 beneden met daar op al mijn automations
en 1 boven op zolder op een raspberry pi om mijn wp uit te lezen dmv modbus.
is het ook mogelijk om deze 2 te combineren zodat ik al mijn flow's vanaf 1 systeem kan aanpassen?
Je kan toch alles van beneden (draadloos alles?) naar boven toe kopieren en daarop laten draaien?H143 schreef op maandag 15 februari 2021 @ 11:32:
ik heb op het moment 2 node red configuratie's draaien
1 beneden met daar op al mijn automations
en 1 boven op zolder op een raspberry pi om mijn wp uit te lezen dmv modbus.
is het ook mogelijk om deze 2 te combineren zodat ik al mijn flow's vanaf 1 systeem kan aanpassen?
PVOutput Youless - 9600Wp OZO+WNW | 38° | Goodwe GW6K-DT | Mitsubishi PUHZ-SW75YAA + ERSD-VM2D | Zonneplan Nexus | Gasloos
Dacht leek mij ook, echter ik heb nu al zoveel varianten op die {{flow.xx}} getest en niets werkt. Ik doe zeker weten iets verkeerd, maar ik snap/zie echt niet wat.denuz schreef op maandag 15 februari 2021 @ 10:22:
[...]
Jahoor. Je kan de kelvin value ook in een flow zetten. De flow.kelvinvalue (oid) kun je vervolgens aanroepen in je call service. Daar heb je nu staan: "6500" , daar maak je dan van "{{flow.kelvinvalue}}" .
Ook als ik het anders aanpak zoals bijvoorbeeld op deze manier:
:no_upscale():strip_icc():fill(white):strip_exif()/f/image/OEhR5KpJmH9vZRyaOLekMurX.jpg?f=user_large)
Dan doet eerst die Circadian wat output geven, die zet ik om van percent naar een kelvin range, vervolgens bewerk ik die payload om enkel het getal voor kelvin over te houden.
En dan een simpele timestamp trigger naar template die het volgende doet:
:no_upscale():strip_icc():fill(white):strip_exif()/f/image/kpeBNS1o7KZGY3l9SR3Rvx7z.jpg?f=user_large)
Echter dan krijg ik de melding:
15-2-2021 13:48:50node: Attic Light On (Kelvin)
msg : string[90]
"Call-service API error. Error Message: expected int for dictionary value @ data['kelvin']"
Dus blijkbaar is het in het verkeerde format? hoe pas ik dit aan?
En het zou toch niet zo moeilijk moeten zijn om een deel van de msg.payload uit een flow te gebruiken als data voor een service call?
Eerste stuk gaat wel goed:
15-2-2021 13:54:47node: e6243a4b.636f58
msg.payload : Object
{ azimuth: 0.27515707152978897, altitude: 0.4189331317161384, percent: 95.13632141730503 }
Dan aanpassen naar:
15-2-2021 13:54:47node: e6243a4b.636f58
msg.payload : Object
{ azimuth: 0.27515707152978897, altitude: 0.4189331317161384, percent: 6281 }
En dan geeft mijn debug msg output netjes
15-2-2021 13:57:47node: Kelvin_Value
msg.payload : number
6258
Ik zoek de dus een manier om die percent: 6281 als value voor kelvin in een service call te gebruiken. Maar kom er echt niet uit....
Hier de code:
1
| [{"id":"c82ca60c.bfa4a8","type":"debug","z":"74ddc44.7ef623c","name":"Kelvin_Value","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":670,"y":1000,"wires":[]},{"id":"8d03952.e7b1468","type":"Circadian Light","z":"74ddc44.7ef623c","lat":"2.149839","lon":"8.689817","period":"1","topic":"","name":"","x":120,"y":1000,"wires":[["d6ff582c.304eb8"]]},{"id":"d6ff582c.304eb8","type":"range","z":"74ddc44.7ef623c","minin":"0","maxin":"100","minout":"2000","maxout":"6500","action":"scale","round":true,"property":"payload.percent","name":"percent to kelvin range","x":320,"y":1000,"wires":[["6fb85563.befe1c"]]},{"id":"6fb85563.befe1c","type":"change","z":"74ddc44.7ef623c","name":"Kelvin","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.percent","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":1000,"wires":[["c82ca60c.bfa4a8"]]},{"id":"65e8d7d7.d45528","type":"inject","z":"74ddc44.7ef623c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":1060,"wires":[["87ef8066.8f3f3"]]},{"id":"d10c9aaa.829ee8","type":"api-call-service","z":"74ddc44.7ef623c","name":"Attic Light On (Kelvin)","server":"ec37d48.f8fae28","version":1,"debugenabled":true,"service_domain":"light","service":"turn_on","entityId":"light.extended_color_light_3","data":"{\"brightness_pct\":\"100\",\"kelvin\":\"{{flow.Kelvin}}\",\"transition\":1}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":460,"y":1060,"wires":[[]]},{"id":"87ef8066.8f3f3","type":"template","z":"74ddc44.7ef623c","name":"Kelvin","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"data\" : { \"kelvin\" : {{flow.Kelvin}} } }","output":"str","x":270,"y":1060,"wires":[["d10c9aaa.829ee8"]]},{"id":"ec37d48.f8fae28","type":"server","name":"Home Assistant","addon":true}] |
Op de nieuwe Odroid C4 (64-bit) had ik InfluxDB 2.0 geïnstalleerd, maar het lukt niet om met backup/restore dat te regelen. Enige mogelijkheid om het netjes te doen is toch 1.8 op de Odroid te installeren en dan verder te upgraden.
Daarbij mis ik toch wel heel erg een GUI voor de database, zoals PHPMyAdmin. Dingen die met SQL super simpel zijn, zijn bij InfluxDB opeens heel complex. Even een veld toevoegen in een tabel? Nog niet gelezen hoe dat kan vanaf de commandline. Rare meetwaarde even aanpassen, ik zou het niet weten. Het gaat een beetje ver omdat via Node Red te moeten regelen.
Wat gebruiken jullie? Waarom? Tevreden?
A'dam PVOutput
Volgens mij heb je in de GUI qua administration veel meer mogelijkheden in InfluxDB 2.0.
Kunnen sommige dingen die jij noemt bij <2.0 niet met Chronograf? Wederom: ik heb me daar niet in verdiept.
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Je change Kelvin node is onjuist. Daarnaast is je Kelvin template overbodig. Je specificeert namelijk in je call service.kweetnie schreef op maandag 15 februari 2021 @ 14:02:
[...]
Dacht leek mij ook, echter ik heb nu al zoveel varianten op die {{flow.xx}} getest en niets werkt. Ik doe zeker weten iets verkeerd, maar ik snap/zie echt niet wat.
Ook als ik het anders aanpak zoals bijvoorbeeld op deze manier:
[Afbeelding]
Dan doet eerst die Circadian wat output geven, die zet ik om van percent naar een kelvin range, vervolgens bewerk ik die payload om enkel het getal voor kelvin over te houden.
En dan een simpele timestamp trigger naar template die het volgende doet:
[Afbeelding]
Echter dan krijg ik de melding:
15-2-2021 13:48:50node: Attic Light On (Kelvin)
msg : string[90]
"Call-service API error. Error Message: expected int for dictionary value @ data['kelvin']"
Dus blijkbaar is het in het verkeerde format? hoe pas ik dit aan?
En het zou toch niet zo moeilijk moeten zijn om een deel van de msg.payload uit een flow te gebruiken als data voor een service call?
Eerste stuk gaat wel goed:
15-2-2021 13:54:47node: e6243a4b.636f58
msg.payload : Object
{ azimuth: 0.27515707152978897, altitude: 0.4189331317161384, percent: 95.13632141730503 }
Dan aanpassen naar:
15-2-2021 13:54:47node: e6243a4b.636f58
msg.payload : Object
{ azimuth: 0.27515707152978897, altitude: 0.4189331317161384, percent: 6281 }
En dan geeft mijn debug msg output netjes
15-2-2021 13:57:47node: Kelvin_Value
msg.payload : number
6258
Ik zoek de dus een manier om die percent: 6281 als value voor kelvin in een service call te gebruiken. Maar kom er echt niet uit....
Hier de code:
code:
1 [{"id":"c82ca60c.bfa4a8","type":"debug","z":"74ddc44.7ef623c","name":"Kelvin_Value","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":670,"y":1000,"wires":[]},{"id":"8d03952.e7b1468","type":"Circadian Light","z":"74ddc44.7ef623c","lat":"52.143839","lon":"4.689017","period":"1","topic":"","name":"","x":120,"y":1000,"wires":[["d6ff582c.304eb8"]]},{"id":"d6ff582c.304eb8","type":"range","z":"74ddc44.7ef623c","minin":"0","maxin":"100","minout":"2000","maxout":"6500","action":"scale","round":true,"property":"payload.percent","name":"percent to kelvin range","x":320,"y":1000,"wires":[["6fb85563.befe1c"]]},{"id":"6fb85563.befe1c","type":"change","z":"74ddc44.7ef623c","name":"Kelvin","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.percent","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":1000,"wires":[["c82ca60c.bfa4a8"]]},{"id":"65e8d7d7.d45528","type":"inject","z":"74ddc44.7ef623c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":1060,"wires":[["87ef8066.8f3f3"]]},{"id":"d10c9aaa.829ee8","type":"api-call-service","z":"74ddc44.7ef623c","name":"Attic Light On (Kelvin)","server":"ec37d48.f8fae28","version":1,"debugenabled":true,"service_domain":"light","service":"turn_on","entityId":"light.extended_color_light_3","data":"{\"brightness_pct\":\"100\",\"kelvin\":\"{{flow.Kelvin}}\",\"transition\":1}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":460,"y":1060,"wires":[[]]},{"id":"87ef8066.8f3f3","type":"template","z":"74ddc44.7ef623c","name":"Kelvin","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"data\" : { \"kelvin\" : {{flow.Kelvin}} } }","output":"str","x":270,"y":1060,"wires":[["d10c9aaa.829ee8"]]},{"id":"ec37d48.f8fae28","type":"server","name":"Home Assistant","addon":true}]
Ik heb het voor je aangepast
1
| [{"id":"c82ca60c.bfa4a8","type":"debug","z":"2838595f.c700c6","name":"Kelvin_Value","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":810,"y":2100,"wires":[]},{"id":"d6ff582c.304eb8","type":"range","z":"2838595f.c700c6","minin":"0","maxin":"100","minout":"2000","maxout":"6500","action":"scale","round":true,"property":"payload.percent","name":"percent to kelvin range","x":390,"y":2060,"wires":[["6fb85563.befe1c"]]},{"id":"6fb85563.befe1c","type":"change","z":"2838595f.c700c6","name":"Kelvin","rules":[{"t":"set","p":"Kelvin","pt":"flow","to":"payload.percent","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":610,"y":2100,"wires":[["c82ca60c.bfa4a8"]]},{"id":"65e8d7d7.d45528","type":"inject","z":"2838595f.c700c6","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":260,"y":2160,"wires":[["d10c9aaa.829ee8"]]},{"id":"d10c9aaa.829ee8","type":"api-call-service","z":"2838595f.c700c6","name":"Attic Light On (Kelvin)","server":"8c51b0bb.698c3","version":1,"debugenabled":true,"service_domain":"light","service":"turn_on","entityId":"light.extended_color_light_3","data":"{\"brightness_pct\":\"100\",\"kelvin\":\"{{{flow.Kelvin}}}\",\"transition\":1}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":600,"y":2160,"wires":[[]]},{"id":"8d03952.e7b1468","type":"Circadian Light","z":"2838595f.c700c6","lat":"52.143839","lon":"4.689017","period":"1","topic":"","name":"","x":120,"y":2080,"wires":[["d6ff582c.304eb8"]]},{"id":"8c51b0bb.698c3","type":"server","name":"Home Assistant","addon":true}] |
en.. om je gerust te stellen. Tegen dit soort dingen loop je wel is aan, zeker als je net begint. Komt goed
A'dam PVOutput
!! super! thanks! het werkt nu idd. Geen 2x { maar 3x... pfff ik wist dat het iets simpels moest zijn.denuz schreef op maandag 15 februari 2021 @ 16:15:
[...]
Je change Kelvin node is onjuist. Daarnaast is je Kelvin template overbodig. Je specificeert namelijk in je call service.
Ik heb het voor je aangepast
code:
1 [{"id":"c82ca60c.bfa4a8","type":"debug","z":"2838595f.c700c6","name":"Kelvin_Value","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":810,"y":2100,"wires":[]},{"id":"d6ff582c.304eb8","type":"range","z":"2838595f.c700c6","minin":"0","maxin":"100","minout":"2000","maxout":"6500","action":"scale","round":true,"property":"payload.percent","name":"percent to kelvin range","x":390,"y":2060,"wires":[["6fb85563.befe1c"]]},{"id":"6fb85563.befe1c","type":"change","z":"2838595f.c700c6","name":"Kelvin","rules":[{"t":"set","p":"Kelvin","pt":"flow","to":"payload.percent","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":610,"y":2100,"wires":[["c82ca60c.bfa4a8"]]},{"id":"65e8d7d7.d45528","type":"inject","z":"2838595f.c700c6","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":260,"y":2160,"wires":[["d10c9aaa.829ee8"]]},{"id":"d10c9aaa.829ee8","type":"api-call-service","z":"2838595f.c700c6","name":"Attic Light On (Kelvin)","server":"8c51b0bb.698c3","version":1,"debugenabled":true,"service_domain":"light","service":"turn_on","entityId":"light.extended_color_light_3","data":"{\"brightness_pct\":\"100\",\"kelvin\":\"{{{flow.Kelvin}}}\",\"transition\":1}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":600,"y":2160,"wires":[[]]},{"id":"8d03952.e7b1468","type":"Circadian Light","z":"2838595f.c700c6","lat":"52.143839","lon":"4.689017","period":"1","topic":"","name":"","x":120,"y":2080,"wires":[["d6ff582c.304eb8"]]},{"id":"8c51b0bb.698c3","type":"server","name":"Home Assistant","addon":true}]
en.. om je gerust te stellen. Tegen dit soort dingen loop je wel is aan, zeker als je net begint. Komt goed
Nu kan ik weer verder met het bouwen aan iets dat ook de lichtsterkte (brightness) automatisch om bepaalde tijden doet.
Die {{{ of {{ maken het verschil niet hoor. Kijk maar naar je oude en naar je nieuwe flow. In sommige gevallen maken 2 of 3 {{}} wel uit. Maar in dit geval niet.kweetnie schreef op maandag 15 februari 2021 @ 17:54:
[...]
!! super! thanks! het werkt nu idd. Geen 2x { maar 3x... pfff ik wist dat het iets simpels moest zijn.
Nu kan ik weer verder met het bouwen aan iets dat ook de lichtsterkte (brightness) automatisch om bepaalde tijden doet.
En als je Home assistant gebruikt kun je ook dit gebruiken.
Ah oke, dan was het puur die flow.Kelvin die ik op msg.Kelvin had staan. Ieder geval bedankt! ben hier echt al heel wat uurtjes aan kwijt geweest.denuz schreef op maandag 15 februari 2021 @ 17:58:
[...]
Die {{{ of {{ maken het verschil niet hoor. Kijk maar naar je oude en naar je nieuwe flow. In sommige gevallen maken 2 of 3 {{}} wel uit. Maar in dit geval niet.
En als je Home assistant gebruikt kun je ook dit gebruiken.
En ja ik gebruik home assistant, nu zit "alles" nog in Homey, maar dat is niet helemaal wat ik zoek. Dus ben druk bezig met bouwen en migreren naar HA. Had inderdaad ook al die HA addon gevonden, maar wil graag alle automatiseringen via NR laten lopen. Dat is ook na een lange tijd, voor een niet kenner/programmeur nog redelijk goed te lezen en snappen als er iets aangepast moet worden. En wil graag HA zoveel mogelijk "puur" houden. Maar sta altijd open voor tips en suggesties als het anders beter kan.
Nu weer verder met prutsen, voor een tijdgeschakelde lichtsterkte. Heb nu verschillende tijdsblokken met dan weer aparte "Lights On 100%" , 'Lights On 80%" etc. schakeling, maar ook dat moet beter/overzichtelijker kunnen.
Ik snap dat je alle automations in home assistant wil hebben... maar de link die ik je stuurde is geen automation. Je geeft enkel in de config op welke lampen onder circadian light vallen. Vervolgens wordt alles geregeld. Je hebt een switch die je on/off kan doen. Je doet verder dus niets in HA. Qua gebruikersgemak is dat wel een aanrader. Al blijft het natuurlijk leuk om zelf dingen te doenkweetnie schreef op maandag 15 februari 2021 @ 18:21:
[...]
Ah oke, dan was het puur die flow.Kelvin die ik op msg.Kelvin had staan. Ieder geval bedankt! ben hier echt al heel wat uurtjes aan kwijt geweest.
En ja ik gebruik home assistant, nu zit "alles" nog in Homey, maar dat is niet helemaal wat ik zoek. Dus ben druk bezig met bouwen en migreren naar HA. Had inderdaad ook al die HA addon gevonden, maar wil graag alle automatiseringen via NR laten lopen. Dat is ook na een lange tijd, voor een niet kenner/programmeur nog redelijk goed te lezen en snappen als er iets aangepast moet worden. En wil graag HA zoveel mogelijk "puur" houden. Maar sta altijd open voor tips en suggesties als het anders beter kan.
Nu weer verder met prutsen, voor een tijdgeschakelde lichtsterkte. Heb nu verschillende tijdsblokken met dan weer aparte "Lights On 100%" , 'Lights On 80%" etc. schakeling, maar ook dat moet beter/overzichtelijker kunnen.
:strip_exif()/f/image/aFTprAQ6H1xdTStqHj5oNmbl.jpg?f=fotoalbum_large)
Net als bij Kelvin een bruikbare variable wordt? Die ik dus weer binnen de service kan aanroepen.
Doel is zeg maar om bij verschillende tijdsloten verschillende brightness te gebruiken. Dus heb ik ter illustratie bovenstaande gemaakt, met een debug node. Maar dat zou dus de waarde moeten worden die ik weer bij mijn call service als data will gebruiken. Zodoende kan ik het gelijk gebruiken voor al mijn verlichting en hoef ik niet apart alles per lichtset aan te geven.
Zoals ik hier doe:
:strip_exif()/f/image/Zzx3Uzs91eIU1YHM9lPyaGw3.jpg?f=fotoalbum_large)
Zit genoeg met switch en change nodes te proberen. Maar krijg het nog niet voor elkaar.
Kan me overigens voorstellen dat er betere mooiere methodes zijn als de "tijdlus" die ik nu heb gemaakt...
1
| [{"id":"149ebcc6.db8b03","type":"Circadian Light","z":"2b78f293.de5fde","lat":"52.143839","lon":"4.689017","period":"1","topic":"","name":"Light Temperature","x":130,"y":260,"wires":[["b7026b60.391e38"]]},{"id":"b7026b60.391e38","type":"range","z":"2b78f293.de5fde","minin":"0","maxin":"100","minout":"2000","maxout":"6500","action":"scale","round":true,"property":"payload.percent","name":"percent to kelvin range","x":360,"y":260,"wires":[["9c876a2f.d58148"]]},{"id":"9c876a2f.d58148","type":"change","z":"2b78f293.de5fde","name":"Kelvin","rules":[{"t":"set","p":"Kelvin","pt":"flow","to":"payload.percent","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":260,"wires":[[]]},{"id":"fe81e1c7.e57c7","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 06:01-08:00","lat":"","lon":"","startTime":"06:01","endTime":"08:00","startOffset":0,"endOffset":0,"x":450,"y":320,"wires":[["b473598b.c6b188"],["583c5acb.839644"]]},{"id":"583c5acb.839644","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 08:01-10:00","lat":"","lon":"","startTime":"08:01","endTime":"10:00","startOffset":0,"endOffset":0,"x":450,"y":380,"wires":[["1f712b90.854254"],["a18283c0.b7485"]]},{"id":"a18283c0.b7485","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 10:01-19:00","lat":"","lon":"","startTime":"10:01","endTime":"19:00","startOffset":0,"endOffset":0,"x":450,"y":440,"wires":[["197ba111.c0369f"],["6ccf6980.cc1ef8"]]},{"id":"6ccf6980.cc1ef8","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 19:01 - 21:00","lat":"","lon":"","startTime":"19:01","endTime":"21:00","startOffset":0,"endOffset":0,"x":450,"y":500,"wires":[["1f712b90.854254"],["c6e6b3ac.d3282"]]},{"id":"c6e6b3ac.d3282","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 21:01 - 22:00","lat":"","lon":"","startTime":"21:01","endTime":"22:00","startOffset":0,"endOffset":0,"x":450,"y":560,"wires":[["b473598b.c6b188"],["c5481b7c.b830d8"]]},{"id":"c5481b7c.b830d8","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 22:01 - 23:00","lat":"","lon":"","startTime":"22:01","endTime":"23:00","startOffset":0,"endOffset":0,"x":450,"y":620,"wires":[["5442d1ff.496ed"],["c250af7d.916bd"]]},{"id":"c250af7d.916bd","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 23:01 - 06:00","lat":"","lon":"","startTime":"23:01","endTime":"06:00","startOffset":0,"endOffset":0,"x":450,"y":680,"wires":[["13f4cb9a.f0e024"],[]]},{"id":"2861ae6b.acf402","type":"inject","z":"2b78f293.de5fde","name":"Check 15 min","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"900","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":320,"wires":[["fe81e1c7.e57c7"]]},{"id":"197ba111.c0369f","type":"debug","z":"2b78f293.de5fde","name":"100%","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":710,"y":320,"wires":[]},{"id":"1f712b90.854254","type":"debug","z":"2b78f293.de5fde","name":"70%","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":710,"y":380,"wires":[]},{"id":"b473598b.c6b188","type":"debug","z":"2b78f293.de5fde","name":"40%","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":710,"y":440,"wires":[]},{"id":"5442d1ff.496ed","type":"debug","z":"2b78f293.de5fde","name":"10%","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":710,"y":500,"wires":[]},{"id":"13f4cb9a.f0e024","type":"debug","z":"2b78f293.de5fde","name":"1%","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":710,"y":560,"wires":[]}] |
Dan vind je dit waarschijnlijk ook wel leuk.kweetnie schreef op maandag 15 februari 2021 @ 20:32:
Gelijk een volgende vraag, hoe krijg ik voor elkaar dat dit.......
Circadian lights, verlichting die dezelfde kleur aanneemt als de kleurtemp buiten en meeveranderd gedurende de dag.
/f/image/mSOg6gpFKflgsdJ8CziOJRMm.png?f=fotoalbum_large)
8000WP op Z-W & 1800WP op Z
Kan hetzelfde.Alle time nodes verbind je met een change node. Set flow.helderheid to number 10 (of 20) etc. Vervolgens kun je bij het aanroepen van je call service weer "{{flow.helderheid}}" gebruiken.kweetnie schreef op maandag 15 februari 2021 @ 20:32:
Gelijk een volgende vraag, hoe krijg ik voor elkaar dat dit:
[Afbeelding]
Net als bij Kelvin een bruikbare variable wordt? Die ik dus weer binnen de service kan aanroepen.
Doel is zeg maar om bij verschillende tijdsloten verschillende brightness te gebruiken. Dus heb ik ter illustratie bovenstaande gemaakt, met een debug node. Maar dat zou dus de waarde moeten worden die ik weer bij mijn call service als data will gebruiken. Zodoende kan ik het gelijk gebruiken voor al mijn verlichting en hoef ik niet apart alles per lichtset aan te geven.
Zoals ik hier doe:
[Afbeelding]
Zit genoeg met switch en change nodes te proberen. Maar krijg het nog niet voor elkaar.
Kan me overigens voorstellen dat er betere mooiere methodes zijn als de "tijdlus" die ik nu heb gemaakt...
code:
1 [{"id":"149ebcc6.db8b03","type":"Circadian Light","z":"2b78f293.de5fde","lat":"52.143839","lon":"4.689017","period":"1","topic":"","name":"Light Temperature","x":130,"y":260,"wires":[["b7026b60.391e38"]]},{"id":"b7026b60.391e38","type":"range","z":"2b78f293.de5fde","minin":"0","maxin":"100","minout":"2000","maxout":"6500","action":"scale","round":true,"property":"payload.percent","name":"percent to kelvin range","x":360,"y":260,"wires":[["9c876a2f.d58148"]]},{"id":"9c876a2f.d58148","type":"change","z":"2b78f293.de5fde","name":"Kelvin","rules":[{"t":"set","p":"Kelvin","pt":"flow","to":"payload.percent","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":260,"wires":[[]]},{"id":"fe81e1c7.e57c7","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 06:01-08:00","lat":"","lon":"","startTime":"06:01","endTime":"08:00","startOffset":0,"endOffset":0,"x":450,"y":320,"wires":[["b473598b.c6b188"],["583c5acb.839644"]]},{"id":"583c5acb.839644","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 08:01-10:00","lat":"","lon":"","startTime":"08:01","endTime":"10:00","startOffset":0,"endOffset":0,"x":450,"y":380,"wires":[["1f712b90.854254"],["a18283c0.b7485"]]},{"id":"a18283c0.b7485","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 10:01-19:00","lat":"","lon":"","startTime":"10:01","endTime":"19:00","startOffset":0,"endOffset":0,"x":450,"y":440,"wires":[["197ba111.c0369f"],["6ccf6980.cc1ef8"]]},{"id":"6ccf6980.cc1ef8","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 19:01 - 21:00","lat":"","lon":"","startTime":"19:01","endTime":"21:00","startOffset":0,"endOffset":0,"x":450,"y":500,"wires":[["1f712b90.854254"],["c6e6b3ac.d3282"]]},{"id":"c6e6b3ac.d3282","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 21:01 - 22:00","lat":"","lon":"","startTime":"21:01","endTime":"22:00","startOffset":0,"endOffset":0,"x":450,"y":560,"wires":[["b473598b.c6b188"],["c5481b7c.b830d8"]]},{"id":"c5481b7c.b830d8","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 22:01 - 23:00","lat":"","lon":"","startTime":"22:01","endTime":"23:00","startOffset":0,"endOffset":0,"x":450,"y":620,"wires":[["5442d1ff.496ed"],["c250af7d.916bd"]]},{"id":"c250af7d.916bd","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 23:01 - 06:00","lat":"","lon":"","startTime":"23:01","endTime":"06:00","startOffset":0,"endOffset":0,"x":450,"y":680,"wires":[["13f4cb9a.f0e024"],[]]},{"id":"2861ae6b.acf402","type":"inject","z":"2b78f293.de5fde","name":"Check 15 min","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"900","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":320,"wires":[["fe81e1c7.e57c7"]]},{"id":"197ba111.c0369f","type":"debug","z":"2b78f293.de5fde","name":"100%","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":710,"y":320,"wires":[]},{"id":"1f712b90.854254","type":"debug","z":"2b78f293.de5fde","name":"70%","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":710,"y":380,"wires":[]},{"id":"b473598b.c6b188","type":"debug","z":"2b78f293.de5fde","name":"40%","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":710,"y":440,"wires":[]},{"id":"5442d1ff.496ed","type":"debug","z":"2b78f293.de5fde","name":"10%","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":710,"y":500,"wires":[]},{"id":"13f4cb9a.f0e024","type":"debug","z":"2b78f293.de5fde","name":"1%","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":710,"y":560,"wires":[]}]
zoiets?kweetnie schreef op maandag 15 februari 2021 @ 20:32:
Gelijk een volgende vraag, hoe krijg ik voor elkaar dat dit:
[Afbeelding]
Net als bij Kelvin een bruikbare variable wordt? Die ik dus weer binnen de service kan aanroepen.
Doel is zeg maar om bij verschillende tijdsloten verschillende brightness te gebruiken. Dus heb ik ter illustratie bovenstaande gemaakt, met een debug node. Maar dat zou dus de waarde moeten worden die ik weer bij mijn call service als data will gebruiken. Zodoende kan ik het gelijk gebruiken voor al mijn verlichting en hoef ik niet apart alles per lichtset aan te geven.
Zoals ik hier doe:
[Afbeelding]
Zit genoeg met switch en change nodes te proberen. Maar krijg het nog niet voor elkaar.
Kan me overigens voorstellen dat er betere mooiere methodes zijn als de "tijdlus" die ik nu heb gemaakt...
code:
1 [{"id":"149ebcc6.db8b03","type":"Circadian Light","z":"2b78f293.de5fde","lat":"52.143839","lon":"4.689017","period":"1","topic":"","name":"Light Temperature","x":130,"y":260,"wires":[["b7026b60.391e38"]]},{"id":"b7026b60.391e38","type":"range","z":"2b78f293.de5fde","minin":"0","maxin":"100","minout":"2000","maxout":"6500","action":"scale","round":true,"property":"payload.percent","name":"percent to kelvin range","x":360,"y":260,"wires":[["9c876a2f.d58148"]]},{"id":"9c876a2f.d58148","type":"change","z":"2b78f293.de5fde","name":"Kelvin","rules":[{"t":"set","p":"Kelvin","pt":"flow","to":"payload.percent","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":260,"wires":[[]]},{"id":"fe81e1c7.e57c7","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 06:01-08:00","lat":"","lon":"","startTime":"06:01","endTime":"08:00","startOffset":0,"endOffset":0,"x":450,"y":320,"wires":[["b473598b.c6b188"],["583c5acb.839644"]]},{"id":"583c5acb.839644","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 08:01-10:00","lat":"","lon":"","startTime":"08:01","endTime":"10:00","startOffset":0,"endOffset":0,"x":450,"y":380,"wires":[["1f712b90.854254"],["a18283c0.b7485"]]},{"id":"a18283c0.b7485","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 10:01-19:00","lat":"","lon":"","startTime":"10:01","endTime":"19:00","startOffset":0,"endOffset":0,"x":450,"y":440,"wires":[["197ba111.c0369f"],["6ccf6980.cc1ef8"]]},{"id":"6ccf6980.cc1ef8","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 19:01 - 21:00","lat":"","lon":"","startTime":"19:01","endTime":"21:00","startOffset":0,"endOffset":0,"x":450,"y":500,"wires":[["1f712b90.854254"],["c6e6b3ac.d3282"]]},{"id":"c6e6b3ac.d3282","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 21:01 - 22:00","lat":"","lon":"","startTime":"21:01","endTime":"22:00","startOffset":0,"endOffset":0,"x":450,"y":560,"wires":[["b473598b.c6b188"],["c5481b7c.b830d8"]]},{"id":"c5481b7c.b830d8","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 22:01 - 23:00","lat":"","lon":"","startTime":"22:01","endTime":"23:00","startOffset":0,"endOffset":0,"x":450,"y":620,"wires":[["5442d1ff.496ed"],["c250af7d.916bd"]]},{"id":"c250af7d.916bd","type":"time-range-switch","z":"2b78f293.de5fde","name":"Time 23:01 - 06:00","lat":"","lon":"","startTime":"23:01","endTime":"06:00","startOffset":0,"endOffset":0,"x":450,"y":680,"wires":[["13f4cb9a.f0e024"],[]]},{"id":"2861ae6b.acf402","type":"inject","z":"2b78f293.de5fde","name":"Check 15 min","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"900","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":320,"wires":[["fe81e1c7.e57c7"]]},{"id":"197ba111.c0369f","type":"debug","z":"2b78f293.de5fde","name":"100%","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":710,"y":320,"wires":[]},{"id":"1f712b90.854254","type":"debug","z":"2b78f293.de5fde","name":"70%","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":710,"y":380,"wires":[]},{"id":"b473598b.c6b188","type":"debug","z":"2b78f293.de5fde","name":"40%","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":710,"y":440,"wires":[]},{"id":"5442d1ff.496ed","type":"debug","z":"2b78f293.de5fde","name":"10%","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":710,"y":500,"wires":[]},{"id":"13f4cb9a.f0e024","type":"debug","z":"2b78f293.de5fde","name":"1%","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":710,"y":560,"wires":[]}]
1
| [{"id":"a18283c0.b7485","type":"time-range-switch","z":"f3132bbe.4c31b","name":"Time 10:01-19:00","lat":"","lon":"","startTime":"10:01","endTime":"19:00","startOffset":0,"endOffset":0,"x":630,"y":460,"wires":[["197ba111.c0369f","e2674678.2da51"],["6ccf6980.cc1ef8"]]},{"id":"197ba111.c0369f","type":"debug","z":"f3132bbe.4c31b","name":"100%","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":890,"y":340,"wires":[]},{"id":"e2674678.2da51","type":"change","z":"f3132bbe.4c31b","name":"100%","rules":[{"t":"set","p":"brightness_pct","pt":"flow","to":"100","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1050,"y":340,"wires":[[]]},{"id":"d10c9aaa.829ee8","type":"api-call-service","z":"f3132bbe.4c31b","name":"Attic Light On (Kelvin)","server":"8c51b0bb.698c3","version":1,"debugenabled":true,"service_domain":"light","service":"turn_on","entityId":"light.extended_color_light_3","data":"{\"brightness_pct\":\"{{{flow.brightness_pct}}}\",\"kelvin\":\"{{{flow.Kelvin}}}\",\"transition\":1}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1100,"y":380,"wires":[[]]},{"id":"8c51b0bb.698c3","type":"server","name":"Home Assistant","addon":true}] |
misschien is de clock-timer node van contrib-sun-position iets?
Kun je al je regeltjes invoegen van je tijden, en dan per regel een payload en/of topic instellen. Maar misschien wat te uitgebreid. Kan zichzelf triggeren wanneer een bepaalde tijd actief wordt.
Heeft ook "within-time", soortgelijk als jouw gebruikte time-range maar kun je nog dagen en/of maanden aanvinken
Jazeker, daar is dit meebegonnen. Eerst was het gewoon een motion aan = licht aan. Toen wat logica erbij wanneer wel en niet. Vervolgens liep ik tegen Circadian aan in HA en zag dat het ook in NR kon. Dus nu dat er met de hulp van hier in zit, is de volgende stap om het ook te sturen op helderheid. Waar ik nu dus aangekomen ben.Snoekieboe schreef op maandag 15 februari 2021 @ 21:00:
[...]
Dan vind je dit waarschijnlijk ook wel leuk.
Circadian lights, verlichting die dezelfde kleur aanneemt als de kleurtemp buiten en meeveranderd gedurende de dag.
[Afbeelding]
Dat is volgens mij inderdaad wat ik zoek. Ga het morgen gelijk bouwen en testen, heb er nu geen tijd meer voor.denuz schreef op maandag 15 februari 2021 @ 21:04:
[...]
Kan hetzelfde.Alle time nodes verbind je met een change node. Set flow.helderheid to number 10 (of 20) etc. Vervolgens kun je bij het aanroepen van je call service weer "{{flow.helderheid}}" gebruiken.
Dank je dat ziet er inderdaad goed uit, ga het morgen gelijk proberen.Step5 schreef op maandag 15 februari 2021 @ 21:09:
[...]
zoiets?
code:
1 [{"id":"a18283c0.b7485","type":"time-range-switch","z":"f3132bbe.4c31b","name":"Time 10:01-19:00","lat":"","lon":"","startTime":"10:01","endTime":"19:00","startOffset":0,"endOffset":0,"x":630,"y":460,"wires":[["197ba111.c0369f","e2674678.2da51"],["6ccf6980.cc1ef8"]]},{"id":"197ba111.c0369f","type":"debug","z":"f3132bbe.4c31b","name":"100%","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":890,"y":340,"wires":[]},{"id":"e2674678.2da51","type":"change","z":"f3132bbe.4c31b","name":"100%","rules":[{"t":"set","p":"brightness_pct","pt":"flow","to":"100","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1050,"y":340,"wires":[[]]},{"id":"d10c9aaa.829ee8","type":"api-call-service","z":"f3132bbe.4c31b","name":"Attic Light On (Kelvin)","server":"8c51b0bb.698c3","version":1,"debugenabled":true,"service_domain":"light","service":"turn_on","entityId":"light.extended_color_light_3","data":"{\"brightness_pct\":\"{{{flow.brightness_pct}}}\",\"kelvin\":\"{{{flow.Kelvin}}}\",\"transition\":1}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1100,"y":380,"wires":[[]]},{"id":"8c51b0bb.698c3","type":"server","name":"Home Assistant","addon":true}]
misschien is de clock-timer node van contrib-sun-position iets?
Kun je al je regeltjes invoegen van je tijden, en dan per regel een payload en/of topic instellen. Maar misschien wat te uitgebreid. Kan zichzelf triggeren wanneer een bepaalde tijd actief wordt.
Heeft ook "within-time", soortgelijk als jouw gebruikte time-range maar kun je nog dagen en/of maanden aanvinken
Die node klinkt inderdaad een stuk netter als mijn "spagetti" ga hem morgen ook bekijken.
Super bedankt allen zover! Toch blijf ik me verbazen, dat in mijn ogen deze redelijk basis dingen. In weinig voorbeelden terug komen. Op youtube tutorials of andere sites, alle info is zo verspinterd. Genoeg voorbeelden van motion met licht, maar dan een stap verder en het ook nog op kleur en sterkte regelen is niet te vinden. Wat me ook opvalt is dat er erg veel mensen werken met MQTT en NR, is dat echt zoveel beter/makkelijker? ik heb wel wat wifi dingen die ook via MQTT werken zoals mijn shelly's. Maar ben nog in twijfel of ik ook mijn zigbee spul moet omgooien..
Anyway thanks again!
https://stackoverflow.com...racters-in-mysql-password
A'dam PVOutput
Geeft dan juist extra veel voldoening als je het oplost! Maar terwijl je ermee bezig bent denk je er anders over.ericplan schreef op dinsdag 16 februari 2021 @ 15:44:
Een soort van bezigheidstherapie: een databaseconnectie opzetten vanuit een Odroid naar een Synology waarop een MariaDB draait. Hele dag bezig geweest met allerlei instellingen en wat blijkt? Er zit een \ in m'n wachtwoord en dat lust de MariaDB niet. Voordat je dat probleem getackeld hebt....
https://stackoverflow.com...racters-in-mysql-password
Allemaal nog bedankt voor de hulp en tips. Ik heb mijn motion licht sturing nu zoals ik hem wil, nu verder door het huis uitrollen en dat alvast weg migreren van Homey.
Daarna op naar de volgende flow uitdagingen, er staan er nog genoeg op me te wachten (home/away status, tv/mediaplayers sturing, koppeling alle shelly schakelaar en wat slimme dingen ermee doen etc...) kort om hoef me niet te vervelen
Toch nog iets gevonden met mijn automation. Nu het weer wat lichter is valt me op dat mijn threshold schakeling op lux niet werkt. Althans hij lijkt wel te werken, maar toch gaat het licht aan als light disabled zou moeten zijn.
Wat gaat hier mis?
:strip_exif()/f/image/gHKpJQOuyRLuLL4Kg9NngCAZ.jpg?f=fotoalbum_large)
De waarde van de light sensor is 153.7 en die is => 61, daardoor gaat die naar "Disable Light", die set flow.Light_enabled to No.
Maar als vervolgens de Motion sensor op On gaat en door switch "Light Enabled?" gaat welke staat op == Yes -> 1
Gaat vervolgens toch de lamp aan door de payload? van de motion sensor...of wat zorgt hiervoor.
Of ik nu die "Already On?" state check wel of niet gebruik. Effect blijft het zelfde lamp gaat aan terwijl Light Enabled op No staat..
1
| [{"id":"6abfa3dd.1e4c7c","type":"poll-state","z":"e301e5de.9fc448","name":"Attic Light Sensor","server":"ec37d48.f8fae28","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"updateinterval":"5","updateIntervalUnits":"minutes","outputinitially":true,"outputonchanged":false,"entity_id":"sensor.lightlevel_4","state_type":"str","halt_if":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"x":100,"y":700,"wires":[["8fc4f8fa.8cae28"]]},{"id":"8fc4f8fa.8cae28","type":"switch","z":"e301e5de.9fc448","name":"Lux Threshold","property":"payload","propertyType":"msg","rules":[{"t":"lte","v":"60","vt":"num"},{"t":"gte","v":"61","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":320,"y":700,"wires":[["6b76e71c.b02658"],["63d4ef0f.69306"]]},{"id":"6b76e71c.b02658","type":"change","z":"e301e5de.9fc448","name":"Enable Light","rules":[{"t":"set","p":"Light_enabled","pt":"flow","to":"Yes","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":660,"wires":[[]]},{"id":"63d4ef0f.69306","type":"change","z":"e301e5de.9fc448","name":"Disable Light","rules":[{"t":"set","p":"Light_enabled","pt":"flow","to":"No","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":720,"wires":[[]]},{"id":"fb85665d.b74be8","type":"server-state-changed","z":"e301e5de.9fc448","name":"Attic motion","server":"ec37d48.f8fae28","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.presence_2","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":90,"y":800,"wires":[["b6888b7c.9e85b8","1db1aea2.5b18c1"]]},{"id":"b6888b7c.9e85b8","type":"switch","z":"e301e5de.9fc448","name":"Light Enabled?","property":"Light_enabled","propertyType":"flow","rules":[{"t":"eq","v":"Yes","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":320,"y":800,"wires":[["5ae97ca0.4e3194"]]},{"id":"5ae97ca0.4e3194","type":"api-current-state","z":"e301e5de.9fc448","name":"Already On?","server":"ec37d48.f8fae28","version":1,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"light.extended_color_light_3","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":530,"y":800,"wires":[[],["6d3743e3.a7e11c"]]},{"id":"6d3743e3.a7e11c","type":"api-call-service","z":"e301e5de.9fc448","name":"Attic Light On","server":"ec37d48.f8fae28","version":1,"debugenabled":true,"service_domain":"light","service":"turn_on","entityId":"light.extended_color_light_3","data":"{\"brightness_pct\":\"{{{flow.brightness_pct}}}\",\"kelvin\":\"{{{flow.Kelvin}}}\",\"transition\":1}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":760,"y":800,"wires":[[]]},{"id":"1db1aea2.5b18c1","type":"trigger","z":"e301e5de.9fc448","name":"Switch off delay","op1":"","op2":"off","op1type":"nul","op2type":"str","duration":"30","extend":false,"overrideDelay":false,"units":"s","reset":"on","bytopic":"all","topic":"topic","outputs":1,"x":560,"y":860,"wires":[["9a4fbe0.16db74"]]},{"id":"9a4fbe0.16db74","type":"api-call-service","z":"e301e5de.9fc448","name":"Attic Light Off","server":"ec37d48.f8fae28","version":1,"debugenabled":true,"service_domain":"light","service":"turn_off","entityId":"light.extended_color_light_3","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":760,"y":860,"wires":[[]]},{"id":"ec37d48.f8fae28","type":"server","name":"Home Assistant","addon":true}] |
Ben er zelf al mee aan de slag gegaan, maar loop tegen het probleem aan dat de 2de puls (knop loslaten) mijn schakeling meteen weer uitzet.
:no_upscale():strip_icc():fill(white):strip_exif()/f/image/co7haLQyFuZLyL3XYMzL3J7X.jpg?f=user_large)
Heb nu dus even bovenstaande gemaakt om te kijken wat die, doet bij een button push. En dat is bij indrukken netjes aangaan. Maar bij loslaten gaat het weer uit. Hoe werk ik hier omheen of hoe vertel ik het systeem dat dit normaal gedrag is?
Knop indrukken:
17-2-2021 19:02:08node: short push
binary_sensor.shelly_1l_8caab5616c27_shortpush_0 : msg.payload : string[2]
"on"
17-2-2021 19:02:08node: Input 0
binary_sensor.shelly_1l_8caab5616c27_input_0 : msg.payload : string[2]
"on"
Knop loslaten:
17-2-2021 19:02:08node: Input 0
binary_sensor.shelly_1l_8caab5616c27_input_0 : msg.payload : string[3]
"off"
17-2-2021 19:02:10node: short push
binary_sensor.shelly_1l_8caab5616c27_shortpush_0 : msg.payload : string[3]
"off"
Hoe en waarmee ga ik dit maken? 1
| [{"id":"8f1c2fb3.1364c","type":"server-state-changed","z":"e301e5de.9fc448","name":"Short Push 0","server":"ec37d48.f8fae28","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.shelly_1l_8caab5616c27_shortpush_0","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":false,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":110,"y":1660,"wires":[["205822e8.7fedfe"]]},{"id":"738943a7.4c207c","type":"server-state-changed","z":"e301e5de.9fc448","name":"Long Push 0","server":"ec37d48.f8fae28","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.shelly_1l_8caab5616c27_longpush_0","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":false,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":110,"y":1600,"wires":[["e61cfe35.2dbbe"]]},{"id":"e61cfe35.2dbbe","type":"debug","z":"e301e5de.9fc448","name":"Long Push","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":350,"y":1600,"wires":[]},{"id":"205822e8.7fedfe","type":"debug","z":"e301e5de.9fc448","name":"short push","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":350,"y":1660,"wires":[]},{"id":"8a1838.78aa87c8","type":"server-state-changed","z":"e301e5de.9fc448","name":"Input 0","server":"ec37d48.f8fae28","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.shelly_1l_8caab5616c27_input_0","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":false,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":90,"y":1720,"wires":[["d95e1c55.ccfb4"]]},{"id":"d95e1c55.ccfb4","type":"debug","z":"e301e5de.9fc448","name":"Input 0","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":330,"y":1720,"wires":[]},{"id":"ec37d48.f8fae28","type":"server","name":"Home Assistant","addon":true}] |
Wat probeer je te bereiken? (ik begrijp niet helemaal wat het probleem is, heb zelf geen shelly devices, wel andere devices met long/short press).kweetnie schreef op woensdag 17 februari 2021 @ 19:11:
Is er toevallig iemand die een werkend voorbeeld heeft van een long/short press switch config. Bijvoorkeur met een shelly incombinatie met een pulsdrukker.
Ben er zelf al mee aan de slag gegaan, maar loop tegen het probleem aan dat de 2de puls (knop loslaten) mijn schakeling meteen weer uitzet.
[Afbeelding]
Heb nu dus even bovenstaande gemaakt om te kijken wat die, doet bij een button push. En dat is bij indrukken netjes aangaan. Maar bij loslaten gaat het weer uit. Hoe werk ik hier omheen of hoe vertel ik het systeem dat dit normaal gedrag is?Knop indrukken:
17-2-2021 19:02:08node: short push
binary_sensor.shelly_1l_8caab5616c27_shortpush_0 : msg.payload : string[2]
"on"
17-2-2021 19:02:08node: Input 0
binary_sensor.shelly_1l_8caab5616c27_input_0 : msg.payload : string[2]
"on"Knop loslaten:
Hoe en waarmee ga ik dit maken?
17-2-2021 19:02:08node: Input 0
binary_sensor.shelly_1l_8caab5616c27_input_0 : msg.payload : string[3]
"off"
17-2-2021 19:02:10node: short push
binary_sensor.shelly_1l_8caab5616c27_shortpush_0 : msg.payload : string[3]
"off"
code:
1 [{"id":"8f1c2fb3.1364c","type":"server-state-changed","z":"e301e5de.9fc448","name":"Short Push 0","server":"ec37d48.f8fae28","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.shelly_1l_8caab5616c27_shortpush_0","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":false,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":110,"y":1660,"wires":[["205822e8.7fedfe"]]},{"id":"738943a7.4c207c","type":"server-state-changed","z":"e301e5de.9fc448","name":"Long Push 0","server":"ec37d48.f8fae28","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.shelly_1l_8caab5616c27_longpush_0","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":false,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":110,"y":1600,"wires":[["e61cfe35.2dbbe"]]},{"id":"e61cfe35.2dbbe","type":"debug","z":"e301e5de.9fc448","name":"Long Push","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":350,"y":1600,"wires":[]},{"id":"205822e8.7fedfe","type":"debug","z":"e301e5de.9fc448","name":"short push","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":350,"y":1660,"wires":[]},{"id":"8a1838.78aa87c8","type":"server-state-changed","z":"e301e5de.9fc448","name":"Input 0","server":"ec37d48.f8fae28","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.shelly_1l_8caab5616c27_input_0","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":false,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":90,"y":1720,"wires":[["d95e1c55.ccfb4"]]},{"id":"d95e1c55.ccfb4","type":"debug","z":"e301e5de.9fc448","name":"Input 0","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":330,"y":1720,"wires":[]},{"id":"ec37d48.f8fae28","type":"server","name":"Home Assistant","addon":true}]
Je kan in de event state de if state opgeven, of gebruik maken van een switch. De switch kun je instellen op de payload.
Dus ik kan wel van alles bouwen nu, maar alles gaat alleen maar aan terwijl ik de knop blijf indrukken, omdat het een pulsdrukker is. Quick en dirty zou zijn om na de "On" (indrukken) de volgende commando's voor 1 sec te negeren. Afgezien van dat ik geen idee heb hoe dat zou moeten, lijkt me dat er een elegantere oplossing is voor dit type schakelaar. Ook zou daardoor een dubbelklik of longpress niet meer werken lijkt me.
Oh ja en niet onbelangrijk de shelly, weet hier wel gewoon netjes mee om te gaan. Dus blijft de lamp gewoon aan bij een press/release van de knop.
*Edit* zit me net te bedenken dat het natuurlijk niet helemaal waar is, want het is de shelly die de commando's doorzet. Alleen doet de shelly zelf niets met de direct volgende off en laat dus het relay netjes op on staan.
:strip_exif()/f/image/KTpWD63gE342OnYCPTD0hFIU.jpg?f=fotoalbum_large)
En als je daarna dan dus weer klikt, gaat die weer uit etc. Maar in de tussentijd ziet NR continue on/off on/off commando's dus wanneer ik die laat meedoen, gaat het aan maar gelijk weer uit.
Hopelijk is het zo iets duidelijker.
[ Voor 44% gewijzigd door kweetnie op 18-02-2021 19:30 ]