• musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
BazemanKM schreef op maandag 24 oktober 2022 @ 10:45:
[...]

Ik ben zelf verder gegaan, maar het werkt nog niet.

Uit Domoticz:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
    "Battery" : 255,
    "LastUpdate" : "2022-10-24 10:39:30",
    "LevelActions" : "||||||||||",
    "LevelNames" : "Uit|Auto|1|2|3|4|5|6|7|8|9",
    "LevelOffHidden" : "false",
    "RSSI" : 12,
    "SelectorStyle" : "1",
    "description" : "",
    "dtype" : "Light/Switch",
    "hwid" : "16",
    "id" : "0001426D",
    "idx" : 541,
    "name" : "Luchtververser",
    "nvalue" : 2,
    "stype" : "Switch",
    "svalue1" : "100",
    "switchType" : "Selector",
    "unit" : 1
}

svalue1 = 100, dus dat zou dan fan stand 9 moeten worden.

Mijn flow:
code:
1
[{"id":"1bec2846.4029b8","type":"tab","label":"Luchtververser","disabled":false,"info":""},{"id":"92af5d9e.d6b11","type":"mqtt in","z":"1bec2846.4029b8","name":"Domoticz Luchtververser","topic":"domoticz/out/541/","qos":"2","datatype":"auto","broker":"4d2ff189.666908","nl":false,"rap":false,"x":150,"y":200,"wires":[["a6e7acbe.f6401"]]},{"id":"a6e7acbe.f6401","type":"json","z":"1bec2846.4029b8","name":"","property":"payload","action":"","pretty":false,"x":370,"y":200,"wires":[["b6d70fc0.f6db5"]]},{"id":"cb50b45d.9a4e28","type":"mqtt out","z":"1bec2846.4029b8","name":"MQTT Lucht ververser","topic":"zigbee2mqtt/Luchtververser/set/","qos":"2","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"4d2ff189.666908","x":1060,"y":220,"wires":[]},{"id":"b6d70fc0.f6db5","type":"switch","z":"1bec2846.4029b8","name":"","property":"payload.svalue1","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"str"},{"t":"eq","v":"10","vt":"str"},{"t":"eq","v":"20","vt":"str"},{"t":"eq","v":"30","vt":"str"},{"t":"eq","v":"40","vt":"str"},{"t":"eq","v":"50","vt":"str"},{"t":"eq","v":"60","vt":"str"},{"t":"eq","v":"70","vt":"str"},{"t":"eq","v":"80","vt":"str"},{"t":"eq","v":"90","vt":"str"},{"t":"eq","v":"100","vt":"str"}],"checkall":"true","repair":false,"outputs":11,"x":530,"y":200,"wires":[["84ae7545.8ffa28"],["881d8691.c06168"],["19ce1141.d3d9ef"],["62faf9e6.ef52b8"],["5ff40353.feecbc"],["27c0f93.50b5306"],["76c5ca57.250ad4"],["dbddd75e.ec73d8"],["15badd72.2f72a3"],["b3344efa.f3137"],["a0d9040d.0eb0c8"]]},{"id":"881d8691.c06168","type":"function","z":"1bec2846.4029b8","name":"auto","func":"msg.payload = {\"fan_mode\": auto}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":60,"wires":[["cb50b45d.9a4e28"]]},{"id":"19ce1141.d3d9ef","type":"function","z":"1bec2846.4029b8","name":"1","func":"msg.payload = {\"fan_mode\": 1}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":100,"wires":[["cb50b45d.9a4e28"]]},{"id":"62faf9e6.ef52b8","type":"function","z":"1bec2846.4029b8","name":"2","func":"msg.payload = {\"fan_mode\": 2}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":140,"wires":[["cb50b45d.9a4e28"]]},{"id":"5ff40353.feecbc","type":"function","z":"1bec2846.4029b8","name":"3","func":"msg.payload = {\"fan_mode\": 3}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":180,"wires":[["cb50b45d.9a4e28"]]},{"id":"27c0f93.50b5306","type":"function","z":"1bec2846.4029b8","name":"4","func":"msg.payload = {\"fan_mode\": 4}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":220,"wires":[["cb50b45d.9a4e28"]]},{"id":"76c5ca57.250ad4","type":"function","z":"1bec2846.4029b8","name":"5","func":"msg.payload = {\"fan_mode\": 5}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":260,"wires":[["cb50b45d.9a4e28"]]},{"id":"dbddd75e.ec73d8","type":"function","z":"1bec2846.4029b8","name":"6","func":"msg.payload = {\"fan_mode\": 6}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":300,"wires":[["cb50b45d.9a4e28"]]},{"id":"15badd72.2f72a3","type":"function","z":"1bec2846.4029b8","name":"7","func":"msg.payload = {\"fan_mode\": 7}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":340,"wires":[["cb50b45d.9a4e28"]]},{"id":"b3344efa.f3137","type":"function","z":"1bec2846.4029b8","name":"8","func":"msg.payload = {\"fan_mode\": 8}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":380,"wires":[["cb50b45d.9a4e28"]]},{"id":"a0d9040d.0eb0c8","type":"function","z":"1bec2846.4029b8","name":"9","func":"msg.payload = {\"fan_mode\": 9}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":420,"wires":[["cb50b45d.9a4e28"]]},{"id":"8381b23d.4aaae","type":"comment","z":"1bec2846.4029b8","name":"","info":"","x":150,"y":60,"wires":[]},{"id":"84ae7545.8ffa28","type":"function","z":"1bec2846.4029b8","name":"off","func":"msg.payload = {\"fan_mode\": off}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":20,"wires":[[]]},{"id":"4d2ff189.666908","type":"mqtt-broker","name":"192.168.2.4","broker":"192.168.2.4","port":"1883","clientid":"","usetls":false,"verifyservercert":true,"protocolVersion":"4","keepalive":"15","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"sessionExpiry":""}]


Wie kan mij helpen om de juiste stand vanuit Domoticz naar Zigbee2MQTT te krijgen?
Het eerste wat me opviel was dit:

https://tweakers.net/i/K3b-CFWGUU57FxAX9uNjBSaSKaU=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/rl72TZLYE2M9SqVKHNy1a58N.jpg?f=user_large

Misschien dat je "off" (en al die andere ook) tussen quotes moet zetten, maar weet niet wat je Luchtververser verwacht wat dat betreft.

Als je wilt testen kun je een inject node direct voor je MQTT Lucht ververser node plaatsen met in die inject node handmatig ingevulde data. Dan ben je niet afhankelijk van de werking van die switch en function nodes.

Over die function nodes gesproken. Je kunt hiervoor ook gewoon change nodes gebruiken.
Of die switch en 11 function nodes samenvoegen tot 1 function node ("svalue to fan mode")

Weet je trouwens zeker dat je geen svalue1 waarden kunt krijgen zoals 33, 56, of 78, etc?

Feel free to Buy me a coffee


  • BazemanKM
  • Registratie: Januari 2008
  • Laatst online: 22:12
musicpixel schreef op maandag 24 oktober 2022 @ 13:32:
[...]


Het eerste wat me opviel was dit:

[Afbeelding]

Misschien dat je "off" (en al die andere ook) tussen quotes moet zetten, maar weet niet wat je Luchtververser verwacht wat dat betreft.

Als je wilt testen kun je een inject node direct voor je MQTT Lucht ververser node plaatsen met in die inject node handmatig ingevulde data. Dan ben je niet afhankelijk van de werking van die switch en function nodes.

Over die function nodes gesproken. Je kunt hiervoor ook gewoon change nodes gebruiken.
Of die switch en 11 function nodes samenvoegen tot 1 function node ("svalue to fan mode")

Weet je trouwens zeker dat je geen svalue1 waarden kunt krijgen zoals 33, 56, of 78, etc?
Ik zal off even tussen de aanhalingstekens zetten.
svalue1 waarden vanuit Domoticz zijn 0,10,20,30,40,50,60.70,80,90 en 100. Die reeks zal moeten corresponderen met een set commando van: off,auto,1,2,3,4,5,6,7,8,9

  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
@BazemanKM Ik zie nu dat je ook nog een lijntje van de "off" function node naar de MQTT Luchtververser node vergeten bent...

Feel free to Buy me a coffee


  • BazemanKM
  • Registratie: Januari 2008
  • Laatst online: 22:12
musicpixel schreef op maandag 24 oktober 2022 @ 14:32:
@BazemanKM Ik zie nu dat je ook nog een lijntje van de "off" function node naar de MQTT Luchtververser node vergeten bent...
En ik was nog meer dingetjes vergeten en een / te veel bij de in node, maar hij doet het nu, dus ik deel hem even:
code:
1
[{"id":"1bec2846.4029b8","type":"tab","label":"Luchtververser","disabled":false,"info":""},{"id":"92af5d9e.d6b11","type":"mqtt in","z":"1bec2846.4029b8","name":"Domoticz Luchtververser","topic":"domoticz/out/541","qos":"2","datatype":"auto","broker":"4d2ff189.666908","nl":false,"rap":false,"x":150,"y":200,"wires":[["a6e7acbe.f6401"]]},{"id":"a6e7acbe.f6401","type":"json","z":"1bec2846.4029b8","name":"","property":"payload","action":"","pretty":false,"x":370,"y":200,"wires":[["b6d70fc0.f6db5"]]},{"id":"cb50b45d.9a4e28","type":"mqtt out","z":"1bec2846.4029b8","name":"MQTT Lucht ververser","topic":"zigbee2mqtt/Luchtververser/set","qos":"2","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"4d2ff189.666908","x":1060,"y":220,"wires":[]},{"id":"b6d70fc0.f6db5","type":"switch","z":"1bec2846.4029b8","name":"","property":"payload.svalue1","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"str"},{"t":"eq","v":"10","vt":"str"},{"t":"eq","v":"20","vt":"str"},{"t":"eq","v":"30","vt":"str"},{"t":"eq","v":"40","vt":"str"},{"t":"eq","v":"50","vt":"str"},{"t":"eq","v":"60","vt":"str"},{"t":"eq","v":"70","vt":"str"},{"t":"eq","v":"80","vt":"str"},{"t":"eq","v":"90","vt":"str"},{"t":"eq","v":"100","vt":"str"}],"checkall":"true","repair":false,"outputs":11,"x":530,"y":200,"wires":[["84ae7545.8ffa28"],["881d8691.c06168"],["19ce1141.d3d9ef"],["62faf9e6.ef52b8"],["5ff40353.feecbc"],["27c0f93.50b5306"],["76c5ca57.250ad4"],["dbddd75e.ec73d8"],["15badd72.2f72a3"],["b3344efa.f3137"],["a0d9040d.0eb0c8"]]},{"id":"881d8691.c06168","type":"function","z":"1bec2846.4029b8","name":"auto","func":"msg.payload = {\"fan_mode\": \"auto\"}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":60,"wires":[["cb50b45d.9a4e28"]]},{"id":"19ce1141.d3d9ef","type":"function","z":"1bec2846.4029b8","name":"1","func":"msg.payload = {\"fan_mode\": \"1\"}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":100,"wires":[["cb50b45d.9a4e28"]]},{"id":"62faf9e6.ef52b8","type":"function","z":"1bec2846.4029b8","name":"2","func":"msg.payload = {\"fan_mode\": \"2\"}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":140,"wires":[["cb50b45d.9a4e28"]]},{"id":"5ff40353.feecbc","type":"function","z":"1bec2846.4029b8","name":"3","func":"msg.payload = {\"fan_mode\": \"3\"}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":180,"wires":[["cb50b45d.9a4e28"]]},{"id":"27c0f93.50b5306","type":"function","z":"1bec2846.4029b8","name":"4","func":"msg.payload = {\"fan_mode\": \"4\"}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":220,"wires":[["cb50b45d.9a4e28"]]},{"id":"76c5ca57.250ad4","type":"function","z":"1bec2846.4029b8","name":"5","func":"msg.payload = {\"fan_mode\": \"5\"}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":260,"wires":[["cb50b45d.9a4e28"]]},{"id":"dbddd75e.ec73d8","type":"function","z":"1bec2846.4029b8","name":"6","func":"msg.payload = {\"fan_mode\": \"6\"}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":300,"wires":[["cb50b45d.9a4e28"]]},{"id":"15badd72.2f72a3","type":"function","z":"1bec2846.4029b8","name":"7","func":"msg.payload = {\"fan_mode\": \"7\"}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":340,"wires":[["cb50b45d.9a4e28"]]},{"id":"b3344efa.f3137","type":"function","z":"1bec2846.4029b8","name":"8","func":"msg.payload = {\"fan_mode\": \"8\"}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":380,"wires":[["cb50b45d.9a4e28"]]},{"id":"a0d9040d.0eb0c8","type":"function","z":"1bec2846.4029b8","name":"9","func":"msg.payload = {\"fan_mode\": \"9\"}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":420,"wires":[["cb50b45d.9a4e28"]]},{"id":"8381b23d.4aaae","type":"comment","z":"1bec2846.4029b8","name":"https://www.zigbee2mqtt.io/devices/E2007.html#ikea-e2007","info":"https://www.zigbee2mqtt.io/devices/E2007.html#ikea-e2007","x":250,"y":60,"wires":[]},{"id":"84ae7545.8ffa28","type":"function","z":"1bec2846.4029b8","name":"off","func":"msg.payload = {\"fan_mode\": \"off\"}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":20,"wires":[["cb50b45d.9a4e28"]]},{"id":"4d2ff189.666908","type":"mqtt-broker","name":"192.168.2.4","broker":"192.168.2.4","port":"1883","clientid":"","usetls":false,"verifyservercert":true,"protocolVersion":"4","keepalive":"15","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"sessionExpiry":""}]





  • etienne001
  • Registratie: September 2005
  • Laatst online: 12:50
@musicpixel

Ik ben even lekker aan het prutsen met je opzet.
Het eerste gedeelte is helemaal helder, lekker gemakkelijk met die inject nodes om het e.e.a. te testen!
Ik heb deze inderdaad in een apart flowtabblad geplaatst om zo meer overzicht en rust te creëren in de verschillende flows.

Waarom die light.eettafel nog steeds zo heet is mij een raadsel, deze naam staat wel goed in deCONZ.

Die tekstbalk met dat ballonnetje Buitenverlichting heeft eigenlijk geen functie toch, dat is puur voor jezelf dat je overzicht krijgt?

Het 2e gedeelte begrijp ik voor een gedeelte als ik eerlijk ben.
Je kunt dus die 3 buttons (verlichting UIT/Deel/Alles) gaan toepassen achter diversen sturingen die je wilt gaan maken, of doe je dit dan met hetgeen wat je beschrijft:
In de subflow staat een switch node die obv het commando ($commando, de $ staat voor een environment variabele, of property) bepaalt wat er moet gebeuren.

Of ga je met het commando die input aansturen die voor de commando switch hebt geplaatst?
En waar is die output dan eventueel voor bedoeld?

Die junction wist ik niet maar dat is echt een genot om te zien, zoveel minder lijnen die overal doorheen gaan!!

  • Henri2500
  • Registratie: Mei 2022
  • Laatst online: 26-03 09:02
Wie helpt me even in de goede richting:

Ik wil van een entiteit binnen HA 1x per dag de waarde naar mijn database sturen (Influx-DB), dit moet op een specifieke tijd. Hoe krijg ik dit voor elkaar in een Node-Red flow?

  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
etienne001 schreef op maandag 24 oktober 2022 @ 21:17:
@musicpixel

Waarom die light.eettafel nog steeds zo heet is mij een raadsel, deze naam staat wel goed in deCONZ.
Ik gebruik zelf geen deCONZ maar Zigbee2MQTT, maar heb zelf wel eens gehad dat een entiteit nog niet zichtbaar was in NodeRed. Even NodeRed herstarten loste dat toen op.
Check ook even de naam in Home Assistant. Misschien dat ie daar verkeerd staat?
Die tekstbalk met dat ballonnetje Buitenverlichting heeft eigenlijk geen functie toch, dat is puur voor jezelf dat je overzicht krijgt?
Yep, dat is een comment node. Gewoon voor de duidelijkheid.

[Voor 6% gewijzigd door musicpixel op 25-10-2022 12:05]

Feel free to Buy me a coffee


  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
etienne001 schreef op maandag 24 oktober 2022 @ 21:17:
@musicpixel

Het 2e gedeelte begrijp ik voor een gedeelte als ik eerlijk ben.
Je kunt dus die 3 buttons (verlichting UIT/Deel/Alles) gaan toepassen achter diversen sturingen die je wilt gaan maken, of doe je dit dan met hetgeen wat je beschrijft:
In de subflow staat een switch node die obv het commando ($commando, de $ staat voor een environment variabele, of property) bepaalt wat er moet gebeuren.

Of ga je met het commando die input aansturen die voor de commando switch hebt geplaatst?
En waar is die output dan eventueel voor bedoeld?
Okee, ik zal het proberen te verduidelijken met onderstaande afbeelding:



Bovenin zie je de inject node gevolgd door de subflow-node.

Je zou je kunnen voorstellen dat je in plaats van de subflow node (bruin) ook alle nodes in het grote blauwe kader zou kunnen plaatsen. Door echter van de nodes in het blauwe kader een subflow te maken worden je andere automatiseringen overzichtelijker en kun je het eenvoudiger hergebruiken in andere automatiseringen.

De subflow node (bruin) heeft een input en een output, dat zijn de bolletjes links en rechts waar je je lijntjes aan kunt vastknopen. Dat deze subflow node dat heeft komt omdat ik dat heb aangegeven in de instellingen van de subflow zelf (groen). Je kunt ook meer outputs opgeven, dan krijgt de subflow node meer bolletjes aan de rechterkant. Bij nul outputs heb je geen bolletje aan de rechterkant en kun je daar dus geen opvolgende nodes aan koppelen.
Deze input en output(s) worden gebruikt voor het doorgeven van het msg object binnen je automatisering. Deze messages zijn de basis van Node Red.
Onze subflow maakt echter geen gebruik van het msg object en geeft deze gewoon ongewijzigd door aan de volgende node (als deze er zou zijn). Daarom dus wel een input en output. Zonder input kan niet want dan kan je m niet in je automatisering opnemen, zonder output zou kunnen, maar dan kun je er geen node meer achteraan zetten.

Nu heb ik de subflow zo gemaakt dat ie drie verschillende lichtinstellingen (commando) aan kan: UIT, DEEL en ALLES. Dit werkt als volgt:
Allereerst moet ik in de subflow aangeven dat er een commando kan worden gegeven (paars). Overigens kun je voor "commando" ook een andere naam gebruiken als je dat mooier vindt, bijvoorbeeld "scene" of "lichtinstelling", maar dat terzijde.
Zodra ik dit in de properties (environment variables) van de subflow heb ingesteld (paars), kan ik bij de subflow node (bruin) dit commando invullen (rood). De waarde die ik daar invul (rood) kan ik vervolgens in de subflow weer oproepen onder de naam "commando".
Dit oproepen doe ik in de switch node (geel) en omdat het een "environment variable" is moet ik een $ kiezen bij property (geel kader)
Die switch node zorgt er vervolgens voor dat de juiste set van call-service nodes worden aangeroepen afhankelijk van of ik in het rode kader UIT, DEEL of ALLES heb ingevuld. In het voorbeeld is dit DEEL.

Kort gezegd: als je de subflow node (bruin) in een automatisering plaatst zeg je dus eigenlijk: voer alle nodes in de subflow (blauw kader) uit waarbij de environment variabele $commando gelijk is aan de ingestelde waarde (rood)

In de andere van je automatiseringen gebruiken we dus straks lux, sunset, tijd, aanwezigheid etc om uiteindelijk je verlichting aan te sturen met die subflow(node) ipv alle losse lamp-nodes.

Feel free to Buy me a coffee


  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
Henri2500 schreef op maandag 24 oktober 2022 @ 21:48:
Wie helpt me even in de goede richting:

Ik wil van een entiteit binnen HA 1x per dag de waarde naar mijn database sturen (Influx-DB), dit moet op een specifieke tijd. Hoe krijg ik dit voor elkaar in een Node-Red flow?
Als iets 1x per dag moet dan kun je dit best met een "inject" node (repeat optie helemaal onderaan in de instellingen) doen.
Entiteit ophalen: "current state" node
Naar influx-db schrijven: "influxdb out" node. Deze laatste heb ik zelf nog geen ervaring mee, maar er zal vast het nodige op internet te vinden zijn.

Feel free to Buy me a coffee


  • etienne001
  • Registratie: September 2005
  • Laatst online: 12:50
@musicpixel Wat een rust geeft deze werkwijze.
Alles is overzichtelijk en zeer gemakkelijk dat je dus kunst sturen van tabblad naar subtabblad...

Ik ben direct aan de slag gegaan; resultaat tot nu (en werkend _/-\o_ );


Je moet toch echt Buy me a coffee eens gaan fixen hoor, de eerste kannen koffie wil ik je wel schenken ;)

  • Henri2500
  • Registratie: Mei 2022
  • Laatst online: 26-03 09:02
musicpixel schreef op dinsdag 25 oktober 2022 @ 13:20:
[...]


Als iets 1x per dag moet dan kun je dit best met een "inject" node (repeat optie helemaal onderaan in de instellingen) doen.
Entiteit ophalen: "current state" node
Naar influx-db schrijven: "influxdb out" node. Deze laatste heb ik zelf nog geen ervaring mee, maar er zal vast het nodige op internet te vinden zijn.
Dat gaat me lukken! Dank! _/-\o_

  • denuz
  • Registratie: Augustus 2006
  • Laatst online: 22:47
@musicpixel Wat is het voordeel van subflows t.o.v. link-out/in?

Ik heb een aantal keer geprobeerd subflows toe te passen maar zag er niet het voordeel van.
Overzichtelijkheid is immers ook perceptie :)

  • Hari-Bo
  • Registratie: Juli 2003
  • Laatst online: 22:37

Hari-Bo

F5 addict

Sinds vorige week ben ik overgestapt van Fibaro HC2 naar Home Assistant met Node Red. Momenteel heb ik een flow gemaakt welke als er een beweging gedetecteerd wordt de verlichting inschakelt en na 5 minuten bij geen beweging weer uit. Omdat de garage een grotere ruimte is dan 1 bewegingsensor dekt heb ik er twee geplaatst. En nu loop ik tegen een punt aan als 1 van de twee als statement off heeft wordt de verlichting logischerwijs uitgeschakeld. Hoe kan ik ervoor zorgen dat beide devices bij statement off pas een counter mag lopen? Ik had al gekeken naar de AND node en vermoed dat hier de oplossing zit, maar ik kom er zelf niet uit.



Als je het in Node-Red wilt oplossen verwijs ik je toch naar het Node-Red topic => verplaatst

[Voor 5% gewijzigd door septillion op 26-10-2022 18:12]


  • Koppensneller
  • Registratie: April 2002
  • Laatst online: 17:37

Koppensneller

winterrrrrr

Hari-Bo schreef op woensdag 26 oktober 2022 @ 14:17:
Sinds vorige week ben ik overgestapt van Fibaro HC2 naar Home Assistant met Node Red. Momenteel heb ik een flow gemaakt welke als er een beweging gedetecteerd wordt de verlichting inschakelt en na 5 minuten bij geen beweging weer uit. Omdat de garage een grotere ruimte is dan 1 bewegingsensor dekt heb ik er twee geplaatst. En nu loop ik tegen een punt aan als 1 van de twee als statement off heeft wordt de verlichting logischerwijs uitgeschakeld. Hoe kan ik ervoor zorgen dat beide devices bij statement off pas een counter mag lopen? Ik had al gekeken naar de AND node en vermoed dat hier de oplossing zit, maar ik kom er zelf niet uit.

[Afbeelding]
Er schiet me een oplossing buiten NodeRED te binnen: maak in HA een light group (onder Settings -> Helpers) en baseer daar je off-trigger op.

  • Nat-Water
  • Registratie: December 2013
  • Nu online
Hari-Bo schreef op woensdag 26 oktober 2022 @ 14:17:
Sinds vorige week ben ik overgestapt van Fibaro HC2 naar Home Assistant met Node Red. Momenteel heb ik een flow gemaakt welke als er een beweging gedetecteerd wordt de verlichting inschakelt en na 5 minuten bij geen beweging weer uit. Omdat de garage een grotere ruimte is dan 1 bewegingsensor dekt heb ik er twee geplaatst. En nu loop ik tegen een punt aan als 1 van de twee als statement off heeft wordt de verlichting logischerwijs uitgeschakeld. Hoe kan ik ervoor zorgen dat beide devices bij statement off pas een counter mag lopen? Ik had al gekeken naar de AND node en vermoed dat hier de oplossing zit, maar ik kom er zelf niet uit.

[Afbeelding]
1e wat me te binnen schiet, even snel gemaakt. Laat de flow de status van de andere sensor checken.



Er zit in jouw model (en die van mij) geen check of na die 5 minuten of er wel beweging is. Misschien een extra check met een loop inbouwen oid.

Ik gebruik zelf trouwens altijd stoptimers en niet delays. Geen idee waarom.

[Voor 7% gewijzigd door Nat-Water op 26-10-2022 14:36]

Balls have got to be one of the oldest toys. They've been round for a long time.
Gloria patri furnituribus In nomine IKEA!


  • Hari-Bo
  • Registratie: Juli 2003
  • Laatst online: 22:37

Hari-Bo

F5 addict

Nat-Water schreef op woensdag 26 oktober 2022 @ 14:31:
[...]


1e wat me te binnen schiet, even snel gemaakt. Laat de flow de status van de andere sensor checken.

[Afbeelding]

Er zit in jouw model (en die van mij) geen check of na die 5 minuten of er wel beweging is. Misschien een extra check met een loop inbouwen oid.

Ik gebruik zelf trouwens altijd stoptimers en niet delays. Geen idee waarom eigenlijk.
Maar dan heb je toch nog steeds als de beweging enkel gedetecteerd wordt met device y en niet x dat de 5 minuten off timer wordt getriggerd?

  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
denuz schreef op dinsdag 25 oktober 2022 @ 17:35:
@musicpixel Wat is het voordeel van subflows t.o.v. link-out/in?

Ik heb een aantal keer geprobeerd subflows toe te passen maar zag er niet het voordeel van.
Overzichtelijkheid is immers ook perceptie :)
Goeie vraag. Het was al lang geleden dat ik dit had uitgezocht dus moest even denken...

Ik kwam toendertijd deze uitleg pagina tegen in de Node Red docs, maar die moet je wel een aantal keer lezen om het te kunnen begrijpen.

Ik had dus maar geexperimenteerd. Helaas had ik mijn experiment niet bewaard, dus even een nieuwe gemaakt (bij B heb ik even een paar nodes geselecteerd zodat de -normaal verborgen- stippellijntjes zichtbaar zijn):



En de subflow:

https://tweakers.net/i/z3BUDoC57Mk2cKNleBOhq7iDq_Y=/800x/filters:strip_icc():strip_exif()/f/image/eQvcNI8zNjaFzLYirGBpX9BB.jpg?f=fotoalbum_large

code:
1
[{"id":"e1767c442b3f0240","type":"subflow","name":"Subflow Test","info":"","category":"","in":[{"x":260,"y":160,"wires":[{"id":"06616be7e5d27b1d"}]}],"out":[{"x":540,"y":160,"wires":[{"id":"06616be7e5d27b1d","port":0}]}],"env":[],"meta":{},"color":"#DDAA99"},{"id":"06616be7e5d27b1d","type":"counter","z":"e1767c442b3f0240","name":"","init":"0","step":"1","lower":"","upper":"","mode":"increment","outputs":"1","x":400,"y":160,"wires":[[]]},{"id":"a05e8d3c14555c12","type":"subflow:e1767c442b3f0240","z":"3f6fad2b472f7ffc","name":"","x":510,"y":200,"wires":[["460589838b2fe823"]]},{"id":"32036f41199ad539","type":"inject","z":"3f6fad2b472f7ffc","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":280,"y":200,"wires":[["a05e8d3c14555c12"]]},{"id":"460589838b2fe823","type":"debug","z":"3f6fad2b472f7ffc","name":"count","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"count","targetType":"msg","statusVal":"","statusType":"auto","x":730,"y":200,"wires":[]},{"id":"fa86a869a554a7c2","type":"subflow:e1767c442b3f0240","z":"3f6fad2b472f7ffc","name":"","x":510,"y":280,"wires":[["df688999b2345168"]]},{"id":"a8f0329a4a26b6f0","type":"inject","z":"3f6fad2b472f7ffc","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":280,"y":280,"wires":[["fa86a869a554a7c2"]]},{"id":"df688999b2345168","type":"debug","z":"3f6fad2b472f7ffc","name":"count","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"count","targetType":"msg","statusVal":"","statusType":"auto","x":730,"y":280,"wires":[]},{"id":"e68b68b408586fe1","type":"inject","z":"3f6fad2b472f7ffc","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":280,"y":460,"wires":[["147fd5df97d1e1e4"]]},{"id":"7c17719b91a100d5","type":"inject","z":"3f6fad2b472f7ffc","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":280,"y":540,"wires":[["b652e7a002d062e7"]]},{"id":"147fd5df97d1e1e4","type":"link out","z":"3f6fad2b472f7ffc","name":"link out 2","mode":"link","links":["6a2bdf802f2a3e61"],"x":405,"y":460,"wires":[]},{"id":"d598a043e7406547","type":"link in","z":"3f6fad2b472f7ffc","name":"link in 2","links":[],"x":845,"y":460,"wires":[["970372ec0e75465a"]]},{"id":"970372ec0e75465a","type":"debug","z":"3f6fad2b472f7ffc","name":"count","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"count","targetType":"msg","statusVal":"","statusType":"auto","x":970,"y":460,"wires":[]},{"id":"b6056a91e35bb337","type":"link in","z":"3f6fad2b472f7ffc","name":"link in 3","links":[],"x":845,"y":540,"wires":[["c30b61f8ee4ffd8e"]]},{"id":"c30b61f8ee4ffd8e","type":"debug","z":"3f6fad2b472f7ffc","name":"count","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"count","targetType":"msg","statusVal":"","statusType":"auto","x":970,"y":540,"wires":[]},{"id":"b652e7a002d062e7","type":"link out","z":"3f6fad2b472f7ffc","name":"link out 3","mode":"link","links":["6a2bdf802f2a3e61"],"x":405,"y":540,"wires":[]},{"id":"57130793dc895c67","type":"comment","z":"3f6fad2b472f7ffc","name":"A) Subflow (= vgl met Function)","info":"","x":330,"y":140,"wires":[]},{"id":"f3a3cc2440f29491","type":"comment","z":"3f6fad2b472f7ffc","name":"B) Link in/out (=vgl met Goto)","info":"","x":320,"y":400,"wires":[]},{"id":"aebbc63d194f43d1","type":"link call","z":"3f6fad2b472f7ffc","name":"link call","links":["12b1f5c4a5e5ff4e"],"linkType":"static","timeout":"30","x":520,"y":700,"wires":[["690b61099e7a6015"]]},{"id":"701f128b7d29a724","type":"inject","z":"3f6fad2b472f7ffc","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":280,"y":700,"wires":[["aebbc63d194f43d1"]]},{"id":"429da2fb1db111fc","type":"link call","z":"3f6fad2b472f7ffc","name":"link call","links":["12b1f5c4a5e5ff4e"],"linkType":"static","timeout":"30","x":520,"y":760,"wires":[["83bec61fd5885da1"]]},{"id":"314ad2382605d51e","type":"inject","z":"3f6fad2b472f7ffc","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":280,"y":760,"wires":[["429da2fb1db111fc"]]},{"id":"690b61099e7a6015","type":"debug","z":"3f6fad2b472f7ffc","name":"count","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"count","targetType":"msg","statusVal":"","statusType":"auto","x":730,"y":700,"wires":[]},{"id":"83bec61fd5885da1","type":"debug","z":"3f6fad2b472f7ffc","name":"count","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"count","targetType":"msg","statusVal":"","statusType":"auto","x":730,"y":760,"wires":[]},{"id":"448fc43c94ae41b8","type":"comment","z":"3f6fad2b472f7ffc","name":"C) Link in + Link call (=vgl met Goto+Return)","info":"","x":370,"y":640,"wires":[]},{"id":"7cd4062aebce9aa7","type":"group","z":"3f6fad2b472f7ffc","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["17804de883810d27","6a2bdf802f2a3e61","9a01f475dbf5f47b"],"x":454,"y":459,"w":332,"h":82},{"id":"17804de883810d27","type":"counter","z":"3f6fad2b472f7ffc","g":"7cd4062aebce9aa7","name":"","init":"0","step":"1","lower":null,"upper":null,"mode":"increment","outputs":"1","x":620,"y":500,"wires":[["9a01f475dbf5f47b"]]},{"id":"6a2bdf802f2a3e61","type":"link in","z":"3f6fad2b472f7ffc","g":"7cd4062aebce9aa7","name":"link in 1","links":["147fd5df97d1e1e4","b652e7a002d062e7"],"x":495,"y":500,"wires":[["17804de883810d27"]]},{"id":"9a01f475dbf5f47b","type":"link out","z":"3f6fad2b472f7ffc","g":"7cd4062aebce9aa7","name":"link out 1","mode":"link","links":["d598a043e7406547","b6056a91e35bb337"],"x":745,"y":500,"wires":[]},{"id":"14ac406c5777c33b","type":"group","z":"3f6fad2b472f7ffc","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["7148071c3410329e","12b1f5c4a5e5ff4e","707f1d385b045315"],"x":454,"y":819,"w":332,"h":82},{"id":"7148071c3410329e","type":"counter","z":"3f6fad2b472f7ffc","g":"14ac406c5777c33b","name":"","init":"0","step":"1","lower":null,"upper":null,"mode":"increment","outputs":"1","x":620,"y":860,"wires":[["707f1d385b045315"]]},{"id":"12b1f5c4a5e5ff4e","type":"link in","z":"3f6fad2b472f7ffc","g":"14ac406c5777c33b","name":"link in for link call","links":[],"x":495,"y":860,"wires":[["7148071c3410329e"]]},{"id":"707f1d385b045315","type":"link out","z":"3f6fad2b472f7ffc","g":"14ac406c5777c33b","name":"link out 4","mode":"return","links":[],"x":745,"y":860,"wires":[]}]


Wat doet dit: iedere keer als je op een inject node drukt, dan wordt een counter opgehoogd (msg.count) en in het debug window getoond.

De ene counter is echter niet de andere counter:

A. Deze twee automatiseringen zijn compleet van elkaar gescheiden. Elk van de subflow nodes heeft z'n eigen counter. Als je op de inject nodes drukt kun je zien dat ze onafhankelijk van elkaar worden opgehoogd. De twee subflow nodes delen dus niets met elkaar.

B. Ipv een subflow hebben we nu in het kader dezelfde nodes als in de subflow. Stel je voor dat elke inject node een compleet verschillende automatisering is. Ze zouden zelfs op een compleet ander flow-tabblad kunnen staan. Ook de nodes in het kader zouden op een ander flow-tabblad kunnen staan.
Wat er nu gebeurt is dat als je op de inject nodes klikt er een counter wordt opgehoogd. Echter is het één en dezelfde counter. Tevens zie je dat de debug melding dubbel verschijnt omdat in het rechter deel van de automatisering bij de link-out node weer gesplitst wordt naar twee link-in nodes. De bovenste automatisering (inject node) gaat dus verder in zowel de bovenste als de onderste automatisering (debug nodes) en andersom. Het is maar de vraag of dit gewenst is.

C. In plaats van de Link Out nodes van B heb ik nu link call nodes gebruikt en een link out node met 'return' instelling. De link call node lijkt in eerste instantie op de subflow node, maar de werking is gelijk aan B. Net als bij B is er nu maar 1 counter en diezelfde counter wordt opgehoogd met zowel de bovenste als de onderste inject node.

Wat betekent dit nu: als je Link nodes gebruikt om functionaliteit te hergebruiken loop je de kans dat je raar gedrag krijgt omdat de data van de hergebruikte nodes tussen de link-in en link-out gedeeld is tussen de verschillende flows die er gebruik van maken. Als je er niet bedacht op bent kan het erg lastig zijn om te vinden waar dat rare gedrag vandaan komt.

Voor de programmeurs onder ons: een Subflow is vergelijkbaar met een "function", link nodes zijn vergelijkbaar met een "goto". En als het goed is heb je als programmeur geleerd om goto niet (of zo min mogeljik) te gebruiken ;) .

Ik zou dus altijd subflows aanraden, tenzij je expliciet gebruik wilt maken van de mogelijkheid van gedeelde data, of iets anders wilt doen wat niet kan met een subflow.

Als je link nodes alleen gebruikt op één flow-tabblad om je automatisering wat leesbaarder te maken dan kun je dat nog wel doen want dan heb je het overzicht nog.

Ook kun je link nodes gebruiken IN een subflow, maar waar je dan rekening mee moet houden is dat je niet van buiten de subflow kunt linken naar een link-in IN je subflow. Eigenlijk is de subflow namelijk een subflow *template* (een definitie dus) en wanneer je subflow nodes in je automatisering plaatst zijn deze een *instance* en dus allemaal op zichzelf staand -alsof er een kopietje van de subflow wordt gemaakt zodra je een subflow node plaatst- waardoor het onduidelijk is naar welke subflow node dan gelinkt moet worden.

Er zijn nog meer voor/nadelen aan elk, maar dit is wel de belangrijkste.

[Voor 4% gewijzigd door musicpixel op 26-10-2022 14:46]

Feel free to Buy me a coffee


  • Hari-Bo
  • Registratie: Juli 2003
  • Laatst online: 22:37

Hari-Bo

F5 addict

Nat-Water schreef op woensdag 26 oktober 2022 @ 14:39:
[...]


Stel, je bent in je garage bezig. Je loopt even weg, beide bewegingsdetecties slaan uit. Dan gaat na 5 minuten sowieso de lampen uit, ookal ben je binnen 5 minuten weer terug. Hij gaat daarna wel weer aan, maar je krijgt een knipper.
Ik wil dat juist voorkomen vandaar dat ik pas de licht uit status wil als beide sensoren niets meer detecteren. Maar de oplossing van @Koppensneller lijkt de juiste richting te zijn, ik heb nu een virtual device aangemaakt welke pas van status veranderd (on/off) als beide onderliggende entiteiten dezelfde status hebben. Dat is wat ik zocht, bedankt! :)

  • rorie
  • Registratie: Maart 2007
  • Laatst online: 22:26
Hari-Bo schreef op woensdag 26 oktober 2022 @ 14:17:
Sinds vorige week ben ik overgestapt van Fibaro HC2 naar Home Assistant met Node Red. Momenteel heb ik een flow gemaakt welke als er een beweging gedetecteerd wordt de verlichting inschakelt en na 5 minuten bij geen beweging weer uit. Omdat de garage een grotere ruimte is dan 1 bewegingsensor dekt heb ik er twee geplaatst. En nu loop ik tegen een punt aan als 1 van de twee als statement off heeft wordt de verlichting logischerwijs uitgeschakeld. Hoe kan ik ervoor zorgen dat beide devices bij statement off pas een counter mag lopen? Ik had al gekeken naar de AND node en vermoed dat hier de oplossing zit, maar ik kom er zelf niet uit.

[Afbeelding]
State van beide sensoren bijhouden in een flow varianele, wanneer je nu een off krijgt van een van de sensoren kan je checken of de andere ook off is, zo ja timer starten.

  • Kenhas
  • Registratie: Oktober 2006
  • Laatst online: 14:07
Hari-Bo schreef op woensdag 26 oktober 2022 @ 14:42:
[...]


Ik wil dat juist voorkomen vandaar dat ik pas de licht uit status wil als beide sensoren niets meer detecteren. Maar de oplossing van @Koppensneller lijkt de juiste richting te zijn, ik heb nu een virtual device aangemaakt welke pas van status veranderd (on/off) als beide onderliggende entiteiten dezelfde status hebben. Dat is wat ik zocht, bedankt! :)
Ik dacht om een timer helper aan te maken in Home Assistant. Bij beweging wordt de timer gestart. Bij iedere volgende beweging wordt de timer herstart. Beetje rekening houden met de time out van de sensoren om de juiste duur te bepalen.

  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
etienne001 schreef op dinsdag 25 oktober 2022 @ 16:21:
@musicpixel Wat een rust geeft deze werkwijze.
Alles is overzichtelijk en zeer gemakkelijk dat je dus kunst sturen van tabblad naar subtabblad...

Ik ben direct aan de slag gegaan; resultaat tot nu (en werkend _/-\o_ );
[Afbeelding]
Het kwartje is gevallen zie ik... je bent goed bezig :) .

Dit is een mooi moment om aan te geven wat ik bedoelde met aparte of gescheiden flows/automatiseringen.



code:
1
[{"id":"accffdd21f013a63","type":"subflow","name":"Verlichting","info":"","category":"","in":[{"x":60,"y":420,"wires":[{"id":"b7c40334d5f2eca6"}]}],"out":[{"x":180,"y":320,"wires":[{"id":"accffdd21f013a63","port":0}]}],"env":[{"name":"commando","type":"str","value":""}],"meta":{},"color":"#DDAA99"},{"id":"a788ddc03455f3f9","type":"api-call-service","z":"accffdd21f013a63","name":"Eettafel aan 40%","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"light","service":"turn_on","areaId":[],"deviceId":[],"entityId":["light.dimmable_light_11"],"data":"{\"brightness_pct\":40}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":630,"y":900,"wires":[[]]},{"id":"2ee38e58915bf547","type":"api-call-service","z":"accffdd21f013a63","name":"Eettafel uit","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"light","service":"turn_off","areaId":[],"deviceId":[],"entityId":["light.dimmable_light_11"],"data":"","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":610,"y":120,"wires":[[]]},{"id":"5fa0a168b18d9a3e","type":"api-call-service","z":"accffdd21f013a63","name":"Lamp bank aan 50%","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"light","service":"turn_on","areaId":[],"deviceId":[],"entityId":["light.staande_lamp"],"data":"{\"brightness_pct\":50}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":640,"y":940,"wires":[[]]},{"id":"45f9d9e83d26cd60","type":"api-call-service","z":"accffdd21f013a63","name":"hanglamp aan 30%","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"light","service":"turn_on","areaId":[],"deviceId":[],"entityId":["light.hanglamp"],"data":"{\"brightness_pct\":35}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":630,"y":980,"wires":[[]]},{"id":"ca82e204bbe4d8bc","type":"api-call-service","z":"accffdd21f013a63","name":"staand onder aan 10%","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"light","service":"turn_on","areaId":[],"deviceId":[],"entityId":["light.staande_lamp_onder"],"data":"{\"brightness_pct\":10, \"color_temp\":450}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":640,"y":1020,"wires":[[]]},{"id":"f98657b675b6d81c","type":"api-call-service","z":"accffdd21f013a63","name":"Staand midden aan 10%","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"light","service":"turn_on","areaId":[],"deviceId":[],"entityId":["light.staande_lamp_midden"],"data":"{\"brightness_pct\":10, \"color_temp\":450}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":650,"y":1060,"wires":[[]]},{"id":"3c94056296507418","type":"api-call-service","z":"accffdd21f013a63","name":"Staand boven aan 10%","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"light","service":"turn_on","areaId":[],"deviceId":[],"entityId":["light.staande_lamp_boven"],"data":"{\"brightness_pct\":10, \"color_temp\":450}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":650,"y":1100,"wires":[[]]},{"id":"293f3b7ea28c30df","type":"api-call-service","z":"accffdd21f013a63","name":"Lamp bank uit","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"light","service":"turn_off","areaId":[],"deviceId":[],"entityId":["light.staande_lamp"],"data":"","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":620,"y":160,"wires":[[]]},{"id":"2172790bface3403","type":"api-call-service","z":"accffdd21f013a63","name":"hanglamp uit","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"light","service":"turn_off","areaId":[],"deviceId":[],"entityId":["light.hanglamp"],"data":"","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":610,"y":200,"wires":[[]]},{"id":"9dafde403ca16fac","type":"api-call-service","z":"accffdd21f013a63","name":"staand onder uit","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"light","service":"turn_off","areaId":[],"deviceId":[],"entityId":["light.staande_lamp_onder"],"data":"","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":620,"y":240,"wires":[[]]},{"id":"c2c32d5e0265b547","type":"api-call-service","z":"accffdd21f013a63","name":"Staand midden uit","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"light","service":"turn_off","areaId":[],"deviceId":[],"entityId":["light.staande_lamp_midden"],"data":"","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":630,"y":280,"wires":[[]]},{"id":"0ab4f926b7b35f71","type":"api-call-service","z":"accffdd21f013a63","name":"Staand boven uit","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"light","service":"turn_off","areaId":[],"deviceId":[],"entityId":["light.staande_lamp_boven"],"data":"","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":630,"y":320,"wires":[[]]},{"id":"6dd03296ee69fdfc","type":"api-call-service","z":"accffdd21f013a63","name":"TVkast aan 1%","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"light","service":"turn_on","areaId":[],"deviceId":[],"entityId":["light.dimmable_light_14"],"data":"{\"brightness_pct\":1}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":620,"y":1140,"wires":[[]]},{"id":"1a3e6846c3aa0ec8","type":"api-call-service","z":"accffdd21f013a63","name":"TVkast uit","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"light","service":"turn_off","areaId":[],"deviceId":[],"entityId":["light.dimmable_light_14"],"data":"","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":600,"y":360,"wires":[[]]},{"id":"9aed318b25a1e7a8","type":"api-call-service","z":"accffdd21f013a63","name":"Keukenkastjes uit","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"light","service":"turn_off","areaId":[],"deviceId":[],"entityId":["light.dimmable_light_13"],"data":"","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":630,"y":80,"wires":[[]]},{"id":"c51064055325ebb1","type":"api-call-service","z":"accffdd21f013a63","name":"Staande lamp onder","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"homeassistant","service":"turn_on","areaId":[],"deviceId":[],"entityId":["light.staande_lamp_onder"],"data":"{\"brightness_pct\":25}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":640,"y":700,"wires":[[]]},{"id":"f62d5edd1c6c7296","type":"api-call-service","z":"accffdd21f013a63","name":"turn on eettafel","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"homeassistant","service":"turn_on","areaId":[],"deviceId":[],"entityId":["light.dimmable_light_11"],"data":"{\"brightness_pct\":30}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":620,"y":740,"wires":[[]]},{"id":"50c1de1a27b16f69","type":"api-call-service","z":"accffdd21f013a63","name":"Staande lamp midden","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"homeassistant","service":"turn_on","areaId":[],"deviceId":[],"entityId":["light.staande_lamp_midden"],"data":"{\"brightness_pct\":25}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":640,"y":660,"wires":[[]]},{"id":"0fe1e88e7054ee5b","type":"api-call-service","z":"accffdd21f013a63","name":"Staande lamp boven","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"homeassistant","service":"turn_on","areaId":[],"deviceId":[],"entityId":["light.staande_lamp_boven"],"data":"{\"brightness_pct\":25}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":640,"y":620,"wires":[[]]},{"id":"b194220949a2a262","type":"api-call-service","z":"accffdd21f013a63","name":"Hanglamp","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"homeassistant","service":"turn_on","areaId":[],"deviceId":[],"entityId":["light.hanglamp"],"data":"{\"brightness_pct\":25}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":610,"y":580,"wires":[[]]},{"id":"098c98bc786ad7ee","type":"api-call-service","z":"accffdd21f013a63","name":"Bij bank","server":"1942d160.7834af","version":5,"debugenabled":false,"domain":"homeassistant","service":"turn_on","areaId":[],"deviceId":[],"entityId":["light.staande_lamp"],"data":"{\"brightness_pct\":25}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":600,"y":540,"wires":[[]]},{"id":"ef0272e2d7054f1c","type":"comment","z":"accffdd21f013a63","name":"ALLES = alles aan","info":"","x":630,"y":860,"wires":[]},{"id":"67038fe1f9f29adf","type":"comment","z":"accffdd21f013a63","name":"UIT = alles uit","info":"","x":610,"y":40,"wires":[]},{"id":"9bd8bf833b898b65","type":"comment","z":"accffdd21f013a63","name":"DEEL = gedeelte aan","info":"","x":640,"y":500,"wires":[]},{"id":"b7c40334d5f2eca6","type":"switch","z":"accffdd21f013a63","name":"commando","property":"commando","propertyType":"env","rules":[{"t":"eq","v":"UIT","vt":"str"},{"t":"eq","v":"DEEL","vt":"str"},{"t":"eq","v":"ALLES","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":210,"y":420,"wires":[["7df9d08a6952e35b"],["8248fca648b08cdc"],["7814efea2628fa35"]]},{"id":"7df9d08a6952e35b","type":"junction","z":"accffdd21f013a63","x":380,"y":180,"wires":[["9aed318b25a1e7a8","2ee38e58915bf547","293f3b7ea28c30df","2172790bface3403","9dafde403ca16fac","c2c32d5e0265b547","0ab4f926b7b35f71","1a3e6846c3aa0ec8"]]},{"id":"8248fca648b08cdc","type":"junction","z":"accffdd21f013a63","x":380,"y":600,"wires":[["098c98bc786ad7ee","b194220949a2a262","0fe1e88e7054ee5b","50c1de1a27b16f69","c51064055325ebb1","f62d5edd1c6c7296"]]},{"id":"7814efea2628fa35","type":"junction","z":"accffdd21f013a63","x":360,"y":980,"wires":[["a788ddc03455f3f9","5fa0a168b18d9a3e","45f9d9e83d26cd60","ca82e204bbe4d8bc","f98657b675b6d81c","3c94056296507418","6dd03296ee69fdfc"]]},{"id":"1ffefcef0ec19d5f","type":"server-state-changed","z":"bc20754c1c4f24d8","name":"Alarmsysteem","server":"1942d160.7834af","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.openclose_17","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,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":130,"y":700,"wires":[["1862fa5d9093a77a"]]},{"id":"1862fa5d9093a77a","type":"switch","z":"bc20754c1c4f24d8","name":"aan- of uitgezet?","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":350,"y":700,"wires":[["a088908a27401d92"],["28f91b10b96a2df4"]]},{"id":"a088908a27401d92","type":"subflow:accffdd21f013a63","z":"bc20754c1c4f24d8","name":"Verlichting UIT","env":[{"name":"commando","value":"UIT","type":"str"}],"x":600,"y":700,"wires":[[]]},{"id":"735e0747b40f6639","type":"comment","z":"bc20754c1c4f24d8","name":"Als we gaan slapen en alarm aan zetten, dan verlichting uit","info":"","x":730,"y":660,"wires":[]},{"id":"28f91b10b96a2df4","type":"api-current-state","z":"bc20754c1c4f24d8","name":"Lux","server":"1942d160.7834af","version":3,"outputs":1,"halt_if":"","halt_if_type":"num","halt_if_compare":"is","entity_id":"sensor.lightlevel_16","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":0,"forType":"num","forUnits":"minutes","x":570,"y":800,"wires":[["455cf81b94438d26"]]},{"id":"3834402347f60294","type":"subflow:accffdd21f013a63","z":"bc20754c1c4f24d8","name":"Verlichting ALLES","env":[{"name":"commando","value":"ALLES","type":"str"}],"x":1030,"y":800,"wires":[[]]},{"id":"cf8a484969c2700b","type":"comment","z":"bc20754c1c4f24d8","name":"Als het 's ochtends nog donker is en alarm wordt uitgezet, dan licht aan","info":"","x":770,"y":760,"wires":[]},{"id":"2fb65e7ada471f7d","type":"server-state-changed","z":"bc20754c1c4f24d8","name":"Lux meter","server":"1942d160.7834af","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.lightlevel_16","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,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":120,"y":940,"wires":[["34acb0d55939afd9"]]},{"id":"34acb0d55939afd9","type":"switch","z":"bc20754c1c4f24d8","name":">= 50?","property":"payload","propertyType":"msg","rules":[{"t":"gte","v":"50","vt":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":300,"y":940,"wires":[["9432fa7a34dba757"],["994006431d671999"]]},{"id":"9432fa7a34dba757","type":"subflow:accffdd21f013a63","z":"bc20754c1c4f24d8","name":"Verlichting UIT","env":[{"name":"commando","value":"UIT","type":"str"}],"x":500,"y":940,"wires":[[]]},{"id":"455cf81b94438d26","type":"switch","z":"bc20754c1c4f24d8","name":"< 50?","property":"payload","propertyType":"msg","rules":[{"t":"lt","v":"50","vt":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":770,"y":800,"wires":[["3834402347f60294"],[]]},{"id":"d79bf37f10c40b22","type":"comment","z":"bc20754c1c4f24d8","name":"Als het licht genoeg is, doe dan het licht uit","info":"","x":580,"y":900,"wires":[]},{"id":"994006431d671999","type":"api-current-state","z":"bc20754c1c4f24d8","name":"Alarmstatus","server":"1942d160.7834af","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"binary_sensor.openclose_17","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":0,"forType":"num","forUnits":"minutes","x":490,"y":1060,"wires":[["aa5dcb60150f18ac"]]},{"id":"0ee59a71efda6a3c","type":"api-current-state","z":"bc20754c1c4f24d8","name":"Iemand thuis","server":"1942d160.7834af","version":3,"outputs":2,"halt_if":"true","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.someone_home","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":490,"y":1120,"wires":[[],["7cb05c10e132c44b"]]},{"id":"aa5dcb60150f18ac","type":"switch","z":"bc20754c1c4f24d8","name":"aan/uit?","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":680,"y":1060,"wires":[["0ee59a71efda6a3c"],[]]},{"id":"780c276e1945bc7c","type":"subflow:accffdd21f013a63","z":"bc20754c1c4f24d8","name":"Verlichting DEEL","env":[{"name":"commando","value":"DEEL","type":"str"}],"x":910,"y":1120,"wires":[[]]},{"id":"7cb05c10e132c44b","type":"switch","z":"bc20754c1c4f24d8","name":"ja/nee?","property":"payload","propertyType":"msg","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":700,"y":1120,"wires":[[],["780c276e1945bc7c"]]},{"id":"128e59fc1871c3c9","type":"comment","z":"bc20754c1c4f24d8","name":"Als het donker wordt, doe dan het licht deels aan als het alarm aan is en er niemand thuis is","info":"","x":730,"y":1020,"wires":[]},{"id":"1942d160.7834af","type":"server","name":"Home Assistant","version":2,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30}]

(kunnen fouten in zitten, heb niet kunnen testen)

Niet helemaal hetzelfde qua functionaliteit als je automatisering die je had gepost, maar gaat even om het idee.

Wat betreft die splitsing: ik heb nu de trigger nodes "Alarmsysteem" en "Lux meter" helemaal van elkaar losgetrokken. Er zijn nu ook geen kruisende lijnen meer.

Daarnaast heb ik een aantal "current state" nodes vervangen door een "switch" node. In principe kan jouw methode ook, maar ik vind het persoonlijk prettig om een scheiding te hebben tussen "waarde opvragen" en "keuze maken obv waarde". Tevens is het zo dat de "event: state" nodes (Alarmsysteem en Lux meter) al de waarde uitspugen en deze hoeft dus niet opnieuw opgevraagd te worden met een current state node.
In het onderste deel van mijn voorbeeld zou het bijv weer compacter zijn om geen switch nodes te gebruiken.

Daarnaast nog commentaar toegevoegd.

Vroeg me nog wel af:

* Volgens mij is het altijd zo dat als het alarm wordt aan of uitgezet er ook iemand thuis is, dus die check zou dan niet nodig zijn. Tenzij de schoonmaakster het alarm bedient en niet geregistreerd wordt als weg/thuis.
* Heb je ook een motion sensor? Het lijkt er nu op dat je 's ochtends in het donker op zoek moet naar het alarm om het uit te zetten en dat dan pas het licht aan gaat. Zou mooi zijn als het licht toch alvast (minimaal?) aan gaat...
* Waar heb je je lux meter hangen? In dezelfde kamer als de lampen? Want dan zou het wel eens niet goed kunnen werken.
Je moet toch echt Buy me a coffee eens gaan fixen hoor, de eerste kannen koffie wil ik je wel schenken ;)
Omdat je het zo lief vraagt... ;) zie mijn signature onder elke post. Voel je niet verpllicht!

Feel free to Buy me a coffee


  • etienne001
  • Registratie: September 2005
  • Laatst online: 12:50
@musicpixel Dit lijkt er tot nu toe heel goed uit te zien, wat een mooie en duidelijke uitleg weer.
Als ik zo kijk is deze flow velen malen beter leesbaar als hetgeen ik had opgesteld.

De logica die ik had is dat echt alles met elkaar verbonden moest zijn, zoals ik het nu zie en begrijp is dat totaal niet het geval zolang het maar op hetzelfde flowblad staat.

De verlichting i.c.m. het alarm werkt, ik zal morgen de werking even testen als er niemand thuis is en of de deel verlichting dan nog netjes inschakelt.
Daarnaast zal ik die morgen eerst op het gemak even aanpassen, in de huidige vorm blijft de verlichting de hele nacht branden totdat het weer licht wordt (bij bijvoorbeeld weekendje weg).

Over het algemeen zijn wij thuis als het alarm wordt ingeschakeld, het kan incidenteel voorkomen dat één van de kinderen even aankomt als wij een weekendje weg zijn o.i.d.
Ik heb geen motion sensor, we hebben boven en beneden een bedienpaneel v.h. alarmsysteem.
De luxmeter ligt in de vensterbank achter het gordijn, wanneer de verlichting in de woonkamer aan is en de gordijnen nog open zijn dan geeft deze netjes 1 lux aan.

Ohja en laat de koffie smaken :P

  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
etienne001 schreef op woensdag 26 oktober 2022 @ 22:30:
@musicpixel Dit lijkt er tot nu toe heel goed uit te zien, wat een mooie en duidelijke uitleg weer.
Als ik zo kijk is deze flow velen malen beter leesbaar als hetgeen ik had opgesteld.

De logica die ik had is dat echt alles met elkaar verbonden moest zijn, zoals ik het nu zie en begrijp is dat totaal niet het geval zolang het maar op hetzelfde flowblad staat.
Hoeft zelfs niet op hetzelfde flow-blad. Ik heb zelf voor elke ruimte een apart flow-blad. En wat daar niet onder past een apart tabblad ("Climate" zou een voorbeeld kunnen zijn)
De verlichting i.c.m. het alarm werkt, ik zal morgen de werking even testen als er niemand thuis is en of de deel verlichting dan nog netjes inschakelt.
Daarnaast zal ik die morgen eerst op het gemak even aanpassen, in de huidige vorm blijft de verlichting de hele nacht branden totdat het weer licht wordt (bij bijvoorbeeld weekendje weg).
Had nog niet alle automatiseringen uit je lijstje gemaakt hoor. Dacht dat je dat nu wel zelf kon proberen.

Als licht om middernacht uit moet zou ik het zoiets doen:
Inject (iedere dag om 0:00) -> Niemand thuis? -> Licht uit
Over het algemeen zijn wij thuis als het alarm wordt ingeschakeld, het kan incidenteel voorkomen dat één van de kinderen even aankomt als wij een weekendje weg zijn o.i.d.
Je zou kunnen overwegen om een "vakantie/extended away"-modus te maken in de vorm van een input_helper in HA. Die je zet je dan aan als je langer weggaat. Of laat je automatisch aanschakelen als iedereen meer dan zeg 24 uur weg is. Op basis van die modus kun je dan weer dingen anders laten reageren.
Ik heb geen motion sensor, we hebben boven en beneden een bedienpaneel v.h. alarmsysteem.
De luxmeter ligt in de vensterbank achter het gordijn, wanneer de verlichting in de woonkamer aan is en de gordijnen nog open zijn dan geeft deze netjes 1 lux aan.
Mag ik vragen welke lux meter je hebt? Ben nog op zoek naar eentje.
Ohja en laat de koffie smaken :P
Thanks, dat gaat lukken! :)

Feel free to Buy me a coffee


  • etienne001
  • Registratie: September 2005
  • Laatst online: 12:50
@musicpixel

Die laatste stukjes puzzel lukt me wel om te leggen!! Echt super bedankt voor je tijd, en zeer duidelijke uitleg _/-\o_

Ik maak gebruiken van een Xiaomi Mi Light lux sensortje op basis van zigbee.
Dingetje werkt op zich prima hoor.

  • amarok
  • Registratie: Januari 2009
  • Laatst online: 13-03 21:12
Excuus, verkeerde topic!

[Voor 95% gewijzigd door amarok op 27-10-2022 12:41. Reden: verkeerde topic]


  • Hari-Bo
  • Registratie: Juli 2003
  • Laatst online: 22:37

Hari-Bo

F5 addict

rorie schreef op woensdag 26 oktober 2022 @ 16:12:
[...]


State van beide sensoren bijhouden in een flow varianele, wanneer je nu een off krijgt van een van de sensoren kan je checken of de andere ook off is, zo ja timer starten.
Ik ben totaal nieuw met node red en probeer de basis onder de knie te krijgen, maar kan je wat uitgebreidere info delen over deze oplossing of een artikel? Want als ik simpelweg google op flow variable node-red kom ik niet uit op artikelen die ik kan gebruiken voor deze mogelijke optie.

  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
Hari-Bo schreef op donderdag 27 oktober 2022 @ 15:00:
[...]


Ik ben totaal nieuw met node red en probeer de basis onder de knie te krijgen, maar kan je wat uitgebreidere info delen over deze oplossing of een artikel? Want als ik simpelweg google op flow variable node-red kom ik niet uit op artikelen die ik kan gebruiken voor deze mogelijke optie.
Ik zou geen flow variabelen gebruiken om de state van alle sensoren bij te houden. Je kunt beter gewoon de state opvragen met een "current state" node zodra je de check gaat uitvoeren.

Dat gezegd hebbende.... ik heb ook even naar je oorspronkelijke post gekeken, en ik denk dat je daar nog iets in mist.
Sowieso zou ik eerst testen met 1 motion sensor, en die 2e pas toevoegen als alles met 1 helemaal werkt.
Zoals je 'm nu hebt gaat het licht ALTIJD uit na 5 min. Ook als er nog beweging is op 1 of beide sensoren. Dat komt omdat de "delay" en "uit" nodes altijd uitgevoerd worden.

Overigens ben ik -getriggerd door jouw vraag- bezig met een subflow node die meerdere sensors ondersteunt. Die werkt zonder de group functionaliteit in HA. Ik heb er namelijk hier 3 in de woonkamer door de onhandige vorm van de ruimte, en de flow die ik had was nogal rommelig.
Hier alvast een preview van het gebruik van die subflow. Code volgt later, maar zou voor jouw flow zeker even kijken naar die reset (msg.reset). Ik heb trouwens eerder in dit topic al eens een flow voor een bewegingssensor gedeeld, maar dan moet je even zoeken ;)



En aangezien je beginner bent: lees even een week of 2 terug in dit topic. Heb daar de nodige dingen voor beginners uitgelegd. O.a. over inject en debug nodes en subflows.

Feel free to Buy me a coffee


  • Hari-Bo
  • Registratie: Juli 2003
  • Laatst online: 22:37

Hari-Bo

F5 addict

@musicpixel Maar als ik de helper met een state node = off met daarin for 5 minutes zet met daarna een delay, dan moet toch de helper 5 minuten in deze staat staan? Zodra een beweging gedetecteerd wordt op 1 van de onderliggende beweginsensoren wordt de status weer gewijzigd naar on.

Even een brainfairt, als ik een stoptimer node gebruik en dan een extra payload meegeef als critirium niet wordt bereikt dan stop. En ik richt het in zoals onderstaande, dan behaal ik toch ook het gewenste resultaat? werkt niet



Ik begrijp de potentie van node-red maar vergelijken met basis yaml op mijn fibaro is de leercurve wel een stuk hoger voor relatief simpele automatisering wat ik wil realiseren. :(

EDIT:

Een delay is zodra deze getriggerd wordt niet meer tegen te houden en wordt ook niet gereset.
Maar in de state node kan je ook aangeven dat een entiteit x periode bepaalde status moet hebben, daarvoor kan ik het dan toch inzetten?

Dan maak ik een helper entiteit aan met de motion detection op false als vereiste van beide beweging sensoren. Zodra er dan geen beweging is veranderd de status van de helper. Dan moet deze status 5 minuten aangehouden worden en dan pas wordt de rest van de flow getriggerd?



Dan zou ik op onderstaande flow uitkomen;

[Voor 101% gewijzigd door Hari-Bo op 28-10-2022 09:10]


  • maartend
  • Registratie: Augustus 2002
  • Laatst online: 21:12
Ok. Ik draai NR op Home Assitant. En krijg nu een zooi meldingen over options die zijn verwijderd ; Darkmode ong. En er staat dat ik dat moet verwijderen in de settings dacht ik. Maar dara wordt het niet eens in benoemd. Waar ga ik fout?

  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
@Hari-Bo Laten we even aan het begin beginnen ;-)

Een motion sensor stuurt een "on" zodra er beweging gedetecteerd wordt.
Vervolgens is er een cooldown periode (die verschilt per sensor, Hue is bijv 10 sec, Ikea is zelfs instelbaar) en tijdens die periode worden er geen signalen gestuurd.
Als na de cooldown er nog steeds beweging is dan wordt er niets gestuurd, maar blijft de status wel "on"
Als er geen beweging meer is, dan wordt er een "off" gestuurd.

Dat betekent dus:
"on" -> lamp aan
"off" -> delay -> lamp uit
maar ook:
"on" -> reset delay node (de delay moet gestopt worden als er na een off weer een on komt, want anders gaat het licht uit terwijl er beweging is)

Kijk even of je hier iets mee kunt... moet nu eerst verder met andere dingen ;-)
Dit is voor een enkele sensor trouwens, nog niet een dubbele.

[Voor 3% gewijzigd door musicpixel op 28-10-2022 09:52]

Feel free to Buy me a coffee


  • Hari-Bo
  • Registratie: Juli 2003
  • Laatst online: 22:37

Hari-Bo

F5 addict

@musicpixel Dank voor de toelichting. Met wat prutswerk lijk ik nu verder te komen :)



Als ik het goed heb gelezen heb ik nu de volgende flow;
  1. beweging voorin of werkbank > on
  2. daarna een controle staat lamp aan? ja, geef sein aan stoptimer welke gaat aftellen 5 minuten. nee, schakel lamp in.
  3. lamp ingeschakeld, geef sein aan stoptimer.
  4. stoptimer 5 minuten bereikt? schakel licht uit.
Zodra de status van 1 van de sensoren wijzigt krijgt de stoptimer wel/niet een reset. Of maak ik nu wederom een denkfout? :+

[Voor 5% gewijzigd door Hari-Bo op 28-10-2022 11:08]


  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
@Hari-Bo Kun je je flow even delen?
Hamburger menu rechtsboven -> Export en dan hier tussen [ code ] tags zetten.
Dan kan ik even meekijken. Ik heb m compleet anders, maar dat betekent niet dat een andere manier niet kan.

Feel free to Buy me a coffee


  • Hari-Bo
  • Registratie: Juli 2003
  • Laatst online: 22:37

Hari-Bo

F5 addict

@musicpixel Dit is de json van de flow

[Voor 98% gewijzigd door Hari-Bo op 28-10-2022 20:24]


  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
@Hari-Bo Ik denk dat er iets is mis gegaan met die code. Dit is geen json namelijk.

Feel free to Buy me a coffee


  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
@Hari-Bo Ik zit nog eens het plaatje van je flow te bekijken en het valt me op dat je waarschijnlijk niets doet met het "off" signaal van je sensors. Dus ik denk dat je idd een denkfout maakt.

Ik raad je aan om gewoon eerst eens met één sensor te testen wat die voor signalen geeft als er
- nieuwe beweging gedetecteerd wordt
- blijvende beweging is
- geen beweging meer gedetecteerd wordt.

Zoiets dus met een "events:state" node voor je sensor en een debug node erachter:

https://tweakers.net/i/PBadYIAfXhZtpycP6ASnP0aDKMI=/800x/filters:strip_icc():strip_exif()/f/image/Oghb2YV0M4iQ5Fnas2mCqwKs.jpg?f=fotoalbum_large

Welke sensor heb je eigenlijk?

Feel free to Buy me a coffee


  • Hari-Bo
  • Registratie: Juli 2003
  • Laatst online: 22:37

Hari-Bo

F5 addict

musicpixel schreef op zaterdag 29 oktober 2022 @ 12:47:
@Hari-Bo Ik zit nog eens het plaatje van je flow te bekijken en het valt me op dat je waarschijnlijk niets doet met het "off" signaal van je sensors. Dus ik denk dat je idd een denkfout maakt.

Ik raad je aan om gewoon eerst eens met één sensor te testen wat die voor signalen geeft als er
- nieuwe beweging gedetecteerd wordt
- blijvende beweging is
- geen beweging meer gedetecteerd wordt.

Zoiets dus met een "events:state" node voor je sensor en een debug node erachter:

[Afbeelding]

Welke sensor heb je eigenlijk?
Toch lijkt het wel het gewenste effect te hebben, want zodra er een beweging wordt gedetecteerd geeft deze de status on en dan wordt de stoptimer weer gereset. Dan heb ik niet de status off nodig, want zodra de timer is verlopen door geen nieuwe on status meer dan gaat de verlichting uit, en dat is precies wat ik wil als er geen activiteit meer is.

stoptimer
Sends the msg through the first output after the set timer duration. If a new msg is received before the timer has ended, it will replace the existing msg and the timer will be restarted,

Ik heb een Fibaro motion sensor FGMS001.

  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
Hari-Bo schreef op zaterdag 29 oktober 2022 @ 14:23:
[...]


Toch lijkt het wel het gewenste effect te hebben, want zodra er een beweging wordt gedetecteerd geeft deze de status on en dan wordt de stoptimer weer gereset. Dan heb ik niet de status off nodig, want zodra de timer is verlopen door geen nieuwe on status meer dan gaat de verlichting uit, en dat is precies wat ik wil als er geen activiteit meer is.

stoptimer
Sends the msg through the first output after the set timer duration. If a new msg is received before the timer has ended, it will replace the existing msg and the timer will be restarted,

Ik heb een Fibaro motion sensor FGMS001.
Weet je zeker dat je meerdere on statussen achter elkaar krijgt zonder een off status ertussen? Alle motion sensors die ik heb getest geven 1x een on en dan 1x een off, etc. Nooit meer on statussen achter elkaar zonder een off ertussen.

Feel free to Buy me a coffee


  • Hari-Bo
  • Registratie: Juli 2003
  • Laatst online: 22:37

Hari-Bo

F5 addict

musicpixel schreef op zaterdag 29 oktober 2022 @ 14:37:
[...]


Weet je zeker dat je meerdere on statussen achter elkaar krijgt zonder een off status ertussen? Alle motion sensors die ik heb getest geven 1x een on en dan 1x een off, etc. Nooit meer on statussen achter elkaar zonder een off ertussen.
Ik ben vanavond weer thuis zal dan weer even hobbyen in de garage, maar dan zou ik desnoods de off status ook aan de flow kunnen koppelen. Veranderd de status on/off dan starten flow en na 5 minuten geen veranderende status licht uit.

Update:
Gisteren avond een paar uur in de garage geweest en het werkt precies zoals ik wilde. Misschien wat onorthodox, maar als het mijn wens vervult ben ik tevreden. :)

[Voor 12% gewijzigd door Hari-Bo op 31-10-2022 17:35]

Goedemorgen,

Ik heb n Scrape sensor die data van NL Alert scrapet (scrapt? Scraped?) Dat komt er dan uit met als data.new_state.attributes.melding de melding.

Meest recent:
Brand met veel rook, Forepark Den Haag. Als u last van rook heeft: ga naar binnen, sluit ramen en deuren, zet ventilatie uit. Nadere informatie en updates op haaglandenveilig.nl
Kan ik ook ergens in Node Red filteren dat ik alleen de melding doorstuur (of in een sensor steek, of in elk geval dus filter) als bijvoorbeeld Drenthe benoemd is? (Of een andere value, Plaatsnaam, of url https://twitter.com/VRDrenthe)

Ik dacht met de function node te kunnen filteren.. maar hoe verander ik deze = naar "Contains" (want dat is vast geen woord (als functie)

[quote]
if (msg.payload[0] = "Drenthe") {
return [null, msg];
} else {
return [msg, null];
}
[/quote]



Dit lijkt te werken:
if (msg.payload[0].includes("https://twitter.com/VRDrenthe")) {
return [null, msg];
} else {
return [msg, null];
}

[Voor 27% gewijzigd door Koepert op 04-11-2022 09:22]


  • Hari-Bo
  • Registratie: Juli 2003
  • Laatst online: 22:37

Hari-Bo

F5 addict

Misschien dat iemand hier iets aan heeft, ik heb enkele Greenwave GWPN1 stekkerblokken. Maar ipv dat deze het huidige verbruik uitlezen en per x interval het verbruik bijwerken hebben deze apparaten een afwijkend gedrag. Het verbruik is 0 > daadwerkelijk verbruik > 0, op 1 of andere manier leest deze het niet constant uit. Ook met opnieuw uitlezen van de settings krijg ik het niet geregeld.

Maar ik wilde wel dat na 5 minuten onder een bepaalde grenswaarde het stekkerblok uitgeschakeld wordt, maar met een standaard flow trigger je snel het effent door bovenstaand gedrag.

Dus ik heb het nu omgedraaid en een keepalive gemaakt.
  1. Is het verbruik onder 20 watt false dan volgende stap
  2. Staat het apparaat ingeschakeld dan volgende stap
  3. 1e keer start timer, daarna reset 5 minuten timer
  4. Zodra reset niet optreed dan apparaat uitschakelen

  • habbekrats
  • Registratie: December 2002
  • Laatst online: 18:40
Zijn er meer mensen die problemen hebben met de laatste update van nodered ism met homeassistant ?

Ik draai de laatste versie van HA Home Assistant 2022.11.2 Supervisor 2022.10.2 Operating System 9.3 Frontend-versie: 20221108.0 -

Ik draai nu weer Nodered 13.4.0 als ik update naar de laatste 13.5.2 werkt de zaak niet meer, alle indentity's van HA zijn rood.
De log staat ook vol met fouten Error: Invalid server config

Ik ga straks als ik weer thuis ben de nieuwe er weer op zetten en onderstaande tip testen
https://lightrun.com/answ...ig-when-upgrading-to-1350

http://www.pvoutput.org/list.jsp?id=46229&sid=42168


  • Cafun
  • Registratie: Maart 2002
  • Laatst online: 21-03 11:04
habbekrats schreef op zondag 13 november 2022 @ 10:35:
Zijn er meer mensen die problemen hebben met de laatste update van nodered ism met homeassistant ?
Nee hoor, geen problemen. Ik had redelijk snel de update geïnstalleerd en geen problemen.
Ik hoop jij nu ook niet meer?

  • habbekrats
  • Registratie: December 2002
  • Laatst online: 18:40
Cafun schreef op zondag 4 december 2022 @ 15:54:
[...]


Nee hoor, geen problemen. Ik had redelijk snel de update geïnstalleerd en geen problemen.
Ik hoop jij nu ook niet meer?
nee na het vinkje zetten “Using the Home Assistant Add-on” in de configuratie node werkt het weer als een zonnetje. Alleen vreemd dat het daarvoor altijd werkte.

http://www.pvoutput.org/list.jsp?id=46229&sid=42168

Ik ben iets aan t proberen dat A) niet werkt en B) Vast makkelijker kan.

Ik heb 6 sensoren. Daily Energy Peak, Daily Energy Offpeak, kosten peak en kosten offpeak en gas + kosten gas. Nu wil ik dagelijks een bericht sturen: Vandaag is er zoveel gas en zoveel stroom verbruikt..

Ik dacht dat dit zou werken.. maar in t weekend (alleen Offpeak) krijg ik een verbruik van 0 euro, dus pakt hij ergens de verkeerde waarden, en als ik de gas er tijdelijk afhaal vult hij deze toch in, omdat mijn join alleen 3 waarden uitspuugt, maar niet selectief op of t Gas of peak of offpeak is. Hoe kan ik dit verbeteren?


code:
1
[{"id":"6e7e2aad1e081aeb","type":"inject","z":"809aa730.579b5","name":"Energiekosten","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"58 23 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":160,"y":1820,"wires":[["25677ec870b92fda","f0a0b84328b0765c","2cab1f8e1aec0f8e","780b546dee245f4c","3a824433e1741454","3dad8993eae00ca3"]]},{"id":"25677ec870b92fda","type":"api-current-state","z":"809aa730.579b5","name":"Energy offpeak","server":"1d8e9a4c.b062a6","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.daily_energy_offpeak","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"offpeak","valueType":"str"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":400,"y":1860,"wires":[["47b769c5.cb0e28"]]},{"id":"3a824433e1741454","type":"api-current-state","z":"809aa730.579b5","name":"Gas ","server":"1d8e9a4c.b062a6","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.daily_gas","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"gas","valueType":"str"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":370,"y":2000,"wires":[["a29fc79a770afb3d"]]},{"id":"6a8656d0652159dc","type":"function","z":"809aa730.579b5","name":"Berekening kosten Energie Laag","func":"var formatVerbruik = msg.payload.offpeak\nvar formatTarief = msg.payload.low_tariff;\nvar formatTotaal = (formatVerbruik * formatTarief).toFixed(2)\nmsg.payload = {\n    Totaal: formatTotaal\n}\nreturn msg.payload;\n\n\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":850,"y":1880,"wires":[["e39eae7acc347041"]]},{"id":"2cab1f8e1aec0f8e","type":"api-current-state","z":"809aa730.579b5","name":"Energy Hoog tarief","server":"1d8e9a4c.b062a6","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.energy_high_tariff","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"high_tariff","valueType":"str"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":390,"y":1780,"wires":[["244d9ece68d13206"]]},{"id":"3dad8993eae00ca3","type":"api-current-state","z":"809aa730.579b5","name":"Gas tarief","server":"1d8e9a4c.b062a6","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.gas_tariff","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"gas_tariff","valueType":"str"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":380,"y":2060,"wires":[["a29fc79a770afb3d"]]},{"id":"f0a0b84328b0765c","type":"api-current-state","z":"809aa730.579b5","name":"Energy Laag tarief","server":"1d8e9a4c.b062a6","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.energy_low_tariff","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"low_tariff","valueType":"str"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":410,"y":1920,"wires":[["47b769c5.cb0e28"]]},{"id":"780b546dee245f4c","type":"api-current-state","z":"809aa730.579b5","name":"Energy peak","server":"1d8e9a4c.b062a6","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.daily_energy_peak","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"peak","valueType":"str"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":370,"y":1720,"wires":[["244d9ece68d13206"]]},{"id":"47b769c5.cb0e28","type":"join","z":"809aa730.579b5","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":630,"y":1880,"wires":[["6a8656d0652159dc"]]},{"id":"a29fc79a770afb3d","type":"join","z":"809aa730.579b5","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":570,"y":2020,"wires":[["0b43b599b574003a"]]},{"id":"0b43b599b574003a","type":"function","z":"809aa730.579b5","name":"Berekening kosten Gas","func":"var formatVerbruik = msg.payload.gas\nvar formatTarief = msg.payload.gas_tariff;\nvar formatTotaal = (formatVerbruik * formatTarief).toFixed(2)\nmsg.payload = {\n    Totaal: formatTotaal\n}\nreturn msg.payload;\n\n\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":770,"y":2020,"wires":[["e39eae7acc347041"]]},{"id":"244d9ece68d13206","type":"join","z":"809aa730.579b5","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":590,"y":1740,"wires":[["cc900a26c90b9420"]]},{"id":"cc900a26c90b9420","type":"function","z":"809aa730.579b5","name":"Berekening kosten Energie Hoog","func":"var formatVerbruik = msg.payload.peak\nvar formatTarief = msg.payload.high_tariff;\nvar formatTotaal = (formatVerbruik * formatTarief).toFixed(2)\nmsg.payload = {\n    Totaal: formatTotaal\n}\nreturn msg.payload;\n\n\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":820,"y":1740,"wires":[["e39eae7acc347041"]]},{"id":"e39eae7acc347041","type":"join","z":"809aa730.579b5","name":"","mode":"custom","build":"array","property":"Totaal","propertyType":"msg","key":"_msgid","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"3","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1110,"y":1880,"wires":[["f76db7bd7f66df1d","64be69c08ecba344"]]},{"id":"b1caca083da7db7f","type":"template","z":"809aa730.579b5","name":"Gecombineerd Bericht Tarieven","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Vandaag is € {{Gas}} aan Gas gebruikt en € {{Stroom}} aan Stroom","output":"str","x":1710,"y":1880,"wires":[["522efd44a6ec0e67","d123dd41e0db1e69"]]},{"id":"f76db7bd7f66df1d","type":"function","z":"809aa730.579b5","name":"Berekening kosten Energie Laag","func":"var formatGas = msg.Totaal[2]\nvar formatStroom_Laag = msg.Totaal[0]\nvar formatStroom_Hoog = msg.Totaal[1]\nvar formatStroom = (formatStroom_Laag * formatStroom_Hoog).toFixed(2)\nmsg.payload = {\n    Gas: formatGas,\n    Stroom: formatStroom\n}\nreturn msg.payload;\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1390,"y":1880,"wires":[["b1caca083da7db7f"]]},{"id":"1d8e9a4c.b062a6","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]

  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
Koepert schreef op maandag 5 december 2022 @ 08:18:
Ik ben iets aan t proberen dat A) niet werkt en B) Vast makkelijker kan.

Ik heb 6 sensoren. Daily Energy Peak, Daily Energy Offpeak, kosten peak en kosten offpeak en gas + kosten gas. Nu wil ik dagelijks een bericht sturen: Vandaag is er zoveel gas en zoveel stroom verbruikt..

Ik dacht dat dit zou werken.. maar in t weekend (alleen Offpeak) krijg ik een verbruik van 0 euro, dus pakt hij ergens de verkeerde waarden, en als ik de gas er tijdelijk afhaal vult hij deze toch in, omdat mijn join alleen 3 waarden uitspuugt, maar niet selectief op of t Gas of peak of offpeak is. Hoe kan ik dit verbeteren?


code:
1
[{"id":"6e7e2aad1e081aeb","type":"inject","z":"809aa730.579b5","name":"Energiekosten","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"58 23 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":160,"y":1820,"wires":[["25677ec870b92fda","f0a0b84328b0765c","2cab1f8e1aec0f8e","780b546dee245f4c","3a824433e1741454","3dad8993eae00ca3"]]},{"id":"25677ec870b92fda","type":"api-current-state","z":"809aa730.579b5","name":"Energy offpeak","server":"1d8e9a4c.b062a6","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.daily_energy_offpeak","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"offpeak","valueType":"str"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":400,"y":1860,"wires":[["47b769c5.cb0e28"]]},{"id":"3a824433e1741454","type":"api-current-state","z":"809aa730.579b5","name":"Gas ","server":"1d8e9a4c.b062a6","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.daily_gas","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"gas","valueType":"str"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":370,"y":2000,"wires":[["a29fc79a770afb3d"]]},{"id":"6a8656d0652159dc","type":"function","z":"809aa730.579b5","name":"Berekening kosten Energie Laag","func":"var formatVerbruik = msg.payload.offpeak\nvar formatTarief = msg.payload.low_tariff;\nvar formatTotaal = (formatVerbruik * formatTarief).toFixed(2)\nmsg.payload = {\n    Totaal: formatTotaal\n}\nreturn msg.payload;\n\n\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":850,"y":1880,"wires":[["e39eae7acc347041"]]},{"id":"2cab1f8e1aec0f8e","type":"api-current-state","z":"809aa730.579b5","name":"Energy Hoog tarief","server":"1d8e9a4c.b062a6","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.energy_high_tariff","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"high_tariff","valueType":"str"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":390,"y":1780,"wires":[["244d9ece68d13206"]]},{"id":"3dad8993eae00ca3","type":"api-current-state","z":"809aa730.579b5","name":"Gas tarief","server":"1d8e9a4c.b062a6","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.gas_tariff","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"gas_tariff","valueType":"str"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":380,"y":2060,"wires":[["a29fc79a770afb3d"]]},{"id":"f0a0b84328b0765c","type":"api-current-state","z":"809aa730.579b5","name":"Energy Laag tarief","server":"1d8e9a4c.b062a6","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.energy_low_tariff","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"low_tariff","valueType":"str"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":410,"y":1920,"wires":[["47b769c5.cb0e28"]]},{"id":"780b546dee245f4c","type":"api-current-state","z":"809aa730.579b5","name":"Energy peak","server":"1d8e9a4c.b062a6","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.daily_energy_peak","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"peak","valueType":"str"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":370,"y":1720,"wires":[["244d9ece68d13206"]]},{"id":"47b769c5.cb0e28","type":"join","z":"809aa730.579b5","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":630,"y":1880,"wires":[["6a8656d0652159dc"]]},{"id":"a29fc79a770afb3d","type":"join","z":"809aa730.579b5","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":570,"y":2020,"wires":[["0b43b599b574003a"]]},{"id":"0b43b599b574003a","type":"function","z":"809aa730.579b5","name":"Berekening kosten Gas","func":"var formatVerbruik = msg.payload.gas\nvar formatTarief = msg.payload.gas_tariff;\nvar formatTotaal = (formatVerbruik * formatTarief).toFixed(2)\nmsg.payload = {\n    Totaal: formatTotaal\n}\nreturn msg.payload;\n\n\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":770,"y":2020,"wires":[["e39eae7acc347041"]]},{"id":"244d9ece68d13206","type":"join","z":"809aa730.579b5","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":590,"y":1740,"wires":[["cc900a26c90b9420"]]},{"id":"cc900a26c90b9420","type":"function","z":"809aa730.579b5","name":"Berekening kosten Energie Hoog","func":"var formatVerbruik = msg.payload.peak\nvar formatTarief = msg.payload.high_tariff;\nvar formatTotaal = (formatVerbruik * formatTarief).toFixed(2)\nmsg.payload = {\n    Totaal: formatTotaal\n}\nreturn msg.payload;\n\n\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":820,"y":1740,"wires":[["e39eae7acc347041"]]},{"id":"e39eae7acc347041","type":"join","z":"809aa730.579b5","name":"","mode":"custom","build":"array","property":"Totaal","propertyType":"msg","key":"_msgid","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"3","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1110,"y":1880,"wires":[["f76db7bd7f66df1d","64be69c08ecba344"]]},{"id":"b1caca083da7db7f","type":"template","z":"809aa730.579b5","name":"Gecombineerd Bericht Tarieven","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Vandaag is € {{Gas}} aan Gas gebruikt en € {{Stroom}} aan Stroom","output":"str","x":1710,"y":1880,"wires":[["522efd44a6ec0e67","d123dd41e0db1e69"]]},{"id":"f76db7bd7f66df1d","type":"function","z":"809aa730.579b5","name":"Berekening kosten Energie Laag","func":"var formatGas = msg.Totaal[2]\nvar formatStroom_Laag = msg.Totaal[0]\nvar formatStroom_Hoog = msg.Totaal[1]\nvar formatStroom = (formatStroom_Laag * formatStroom_Hoog).toFixed(2)\nmsg.payload = {\n    Gas: formatGas,\n    Stroom: formatStroom\n}\nreturn msg.payload;\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1390,"y":1880,"wires":[["b1caca083da7db7f"]]},{"id":"1d8e9a4c.b062a6","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]
Ik zie in je meest rechtse function node in ieder geval al dit staan:
code:
1
var formatStroom = (formatStroom_Laag * formatStroom_Hoog).toFixed(2)


Volgens mij moet je optellen ipv vermenigvuldigen?

Overigens vind ik de naamgeving van je variabelen wat verwarrend. "format" staat bij mij altijd voor iets wat al als tekst geformatteerd is om als bericht te tonen ;)

Verder zou ik zelf waarschijnlijk al die joins enzo in een function node omzetten. Je kunt gewoon bij de entities in HA vanuit een function node. Voorbeeld:
code:
1
2
3
4
5
6
7
8
9
// get access to all HA entities
const entities = global.get('homeassistant').homeAssistant.states;

// get state of light
var light_state = entities['light.backgarden_light_kitchendoor'].state;

msg.payload = light_state;

return msg;


Dus uiteindelijk 1 function node om alle waarden op te halen en de nodige berekeningen te maken, waarna je die formatteert met je template node.

Feel free to Buy me a coffee

Dankjewel

Ik ga er ff mee stoeien.. Stomme fout van die * ipv + trouwens....

En ik snap dat je dat dan verwarrend vindt, eerlijk gezegd.. dacht ik dat t noodzakelijk was .. Nog veel te leren dus :P

  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
Koepert schreef op maandag 5 december 2022 @ 09:36:
Dankjewel

Ik ga er ff mee stoeien.. Stomme fout van die * ipv + trouwens....

En ik snap dat je dat dan verwarrend vindt, eerlijk gezegd.. dacht ik dat t noodzakelijk was .. Nog veel te leren dus :P
Het is allemaal Javascript, dus als je googlet op "javascript var" dan vind je een heleboel info. Zelfde voor andere javascript keywords/functions.

Die variabelenaam achter "var" kun je dus helemaal zelf kiezen.

Zelf voeg ik er altijd wat aan toe om verschillende "versies" (string, getal, geformatteerd) van dezelfde variabele uit elkaar te houden.

Als je aan de slag gaat heb je mogelijk ook parseInt of parseFloat nodig om een string/tekst om te zetten naar een getal zodat je er mee kunt rekenen.

Feel free to Buy me a coffee

musicpixel schreef op maandag 5 december 2022 @ 09:47:
[...]


Het is allemaal Javascript, dus als je googlet op "javascript var" dan vind je een heleboel info. Zelfde voor andere javascript keywords/functions.

Die variabelenaam achter "var" kun je dus helemaal zelf kiezen.

Zelf voeg ik er altijd wat aan toe om verschillende "versies" (string, getal, geformatteerd) van dezelfde variabele uit elkaar te houden.

Als je aan de slag gaat heb je mogelijk ook parseInt of parseFloat nodig om een string/tekst om te zetten naar een getal zodat je er mee kunt rekenen.
Hij is er idd aanmerkelijk makkelijker van geworden..

code:
1
[{"id":"64be69c08ecba344","type":"debug","z":"809aa730.579b5","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1130,"y":2160,"wires":[]},{"id":"4cd3caac5e81c0b6","type":"function","z":"809aa730.579b5","name":"Get Energy","func":"// get access to all HA entities\nconst entities = global.get('homeassistant').homeAssistant.states;\n\n// get states\nvar gas_price = (entities['sensor.daily_gas'].state * entities['sensor.gas_tariff'].state).toFixed(2);\nvar peak_price = (entities['sensor.daily_energy_peak'].state * entities['sensor.energy_high_tariff'].state).toFixed(2);\nvar offpeak_price = (entities['sensor.daily_energy_offpeak'].state * entities['sensor.energy_low_tariff'].state).toFixed(2);\n\nmsg.payload = {\n    Gas: gas_price,\n    Peak: peak_price,\n    Offpeak: offpeak_price\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":490,"y":2160,"wires":[["ded69f4009a5cea2"]]},{"id":"5b450e8b5e881294","type":"inject","z":"809aa730.579b5","name":"Energiekosten","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"58 23 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":2160,"wires":[["4cd3caac5e81c0b6"]]},{"id":"ded69f4009a5cea2","type":"template","z":"809aa730.579b5","name":"Gecombineerd Bericht Tarieven","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Vandaag is € {{payload.Gas}} aan Gas gebruikt en € {{payload.Peak}} aan Piek en € {{payload.Offpeak}} aan Dal Stroom","output":"str","x":790,"y":2160,"wires":[["64be69c08ecba344"]]}]

  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
Koepert schreef op maandag 5 december 2022 @ 09:50:
[...]


Hij is er idd aanmerkelijk makkelijker van geworden..

code:
1
[{"id":"64be69c08ecba344","type":"debug","z":"809aa730.579b5","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1130,"y":2160,"wires":[]},{"id":"4cd3caac5e81c0b6","type":"function","z":"809aa730.579b5","name":"Get Energy","func":"// get access to all HA entities\nconst entities = global.get('homeassistant').homeAssistant.states;\n\n// get states\nvar gas_price = (entities['sensor.daily_gas'].state * entities['sensor.gas_tariff'].state).toFixed(2);\nvar peak_price = (entities['sensor.daily_energy_peak'].state * entities['sensor.energy_high_tariff'].state).toFixed(2);\nvar offpeak_price = (entities['sensor.daily_energy_offpeak'].state * entities['sensor.energy_low_tariff'].state).toFixed(2);\n\nmsg.payload = {\n    Gas: gas_price,\n    Peak: peak_price,\n    Offpeak: offpeak_price\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":490,"y":2160,"wires":[["ded69f4009a5cea2"]]},{"id":"5b450e8b5e881294","type":"inject","z":"809aa730.579b5","name":"Energiekosten","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"58 23 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":2160,"wires":[["4cd3caac5e81c0b6"]]},{"id":"ded69f4009a5cea2","type":"template","z":"809aa730.579b5","name":"Gecombineerd Bericht Tarieven","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Vandaag is € {{payload.Gas}} aan Gas gebruikt en € {{payload.Peak}} aan Piek en € {{payload.Offpeak}} aan Dal Stroom","output":"str","x":790,"y":2160,"wires":[["64be69c08ecba344"]]}]
Dat kun je wel zeggen ja ;)

En hoewel jouw oplossing niet fout is en prima zal werken, nog even een kleine suggestie: ik maak er zelf altijd een gewoonte van om eerst alle entities te verzamelen en er dan pas mee te gaan rekenen. Dat maakt het vaak wat overzichtelijker (maar wel wat langere code).
Voorbeeld (voor alleen gas):

code:
1
2
3
4
5
6
// get entity states for gas and electricity
var daily_gas = entities['sensor.daily_gas'].state;
var gas_tariff = entities['sensor.gas_tariff'].state;

// calculate costs
var gas_price = (daily_gas * gas_tariff).toFixed(2);


Je hebt zo het verzamelen van de gegevens los gehaald van de daadwerkelijke berekening en het wordt wat leesbaarder.

Feel free to Buy me a coffee

musicpixel schreef op maandag 5 december 2022 @ 10:00:
[...]


Dat kun je wel zeggen ja ;)

En hoewel jouw oplossing niet fout is en prima zal werken, nog even een kleine suggestie: ik maak er zelf altijd een gewoonte van om eerst alle entities te verzamelen en er dan pas mee te gaan rekenen. Dat maakt het vaak wat overzichtelijker (maar wel wat langere code).
Voorbeeld (voor alleen gas):

code:
1
2
3
4
5
6
// get entity states for gas and electricity
var daily_gas = entities['sensor.daily_gas'].state;
var gas_tariff = entities['sensor.gas_tariff'].state;

// calculate costs
var gas_price = (daily_gas * gas_tariff).toFixed(2);


Je hebt zo het verzamelen van de gegevens los gehaald van de daadwerkelijke berekening en het wordt wat leesbaarder.
Was ik toevallig mee bezig idd, met dezelfde reden. Ging me nu alleen ff om de werken, functioneert dat wat ik wilde.. Antwoord: ja :)

  • MikeyMan
  • Registratie: Februari 2003
  • Laatst online: 22:40

MikeyMan

Vidi, Vici, Veni

Meer algemeen vraagje... Ik kan inmiddels best een beetje knutselen met NR. Zit wel een beetje vast in het grafische aspect. Zodra het programmeerwerk wordt, loop ik snel een beetje vast.

Wil nu bijvoorbeeld twee verschillende bronnen combineren in een function node. Maar dan heb je dus twee keer een binnenkomende msg.payload.

Wat is een handige manier om deze in dezelfde function node te kunnen aanroepen?
@MikeyMan Daar is de "join"-node toch voor? Of ik begrijp je vraag niet

  • MikeyMan
  • Registratie: Februari 2003
  • Laatst online: 22:40

MikeyMan

Vidi, Vici, Veni

lolgast schreef op maandag 5 december 2022 @ 10:13:
@MikeyMan Daar is de "join"-node toch voor? Of ik begrijp je vraag niet
Liep daar in de knoop met de naamgeving van de verschillende stukken data, gezien er wat overlap in zat.. Maar zal daar nog eens naar kijken.

  • MikeyMan
  • Registratie: Februari 2003
  • Laatst online: 22:40

MikeyMan

Vidi, Vici, Veni

lolgast schreef op maandag 5 december 2022 @ 10:13:
@MikeyMan Daar is de "join"-node toch voor? Of ik begrijp je vraag niet
Liep daar in de knoop met de naamgeving van de verschillende stukken data, gezien er wat overlap in zat.. Maar zal daar nog eens naar kijken.

edit:

Payloads zien er dan als volgt uit:


Met wisselend topic, met dezelfde info... Misschien denk ik er te moeilijk over hoor... :/

[Voor 6% gewijzigd door MikeyMan op 05-12-2022 10:20]


  • MikeyMan
  • Registratie: Februari 2003
  • Laatst online: 22:40

MikeyMan

Vidi, Vici, Veni

@lolgast inmiddels een stukje verder.

msg.payload["domoticz/out/Verlichtingssensor achterkant"].svalue1 heet het ding in volledigheid. Lelijk, maar krijg het zo wel voor elkaar om de informatie te ontsluiten.

Volgende uitdaging... Hoe krijg ik met 1 function node, twee signalen uitgestuurd. Heb nu dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var measure = parseFloat(msg.payload["domoticz/out/Verlichtingssensor achterkant"].svalue1);
var setpoint = parseFloat('25000' );
var roomtemp = msg.payload["domoticz/out/Woonkamer"];

if (measure >= setpoint && roomtemp >= '20.5')
{
   msg.payload = { "command": "switchlight", "idx": 499, "switchcmd": "Off" }; //Off = Down
   msg.payload = { "command": "switchlight", "idx": 500, "switchcmd": "Off" }; //Off = Down
}

else
{
   msg.payload = { "command": "switchlight", "idx": 499, "switchcmd": "On" }; //On = Up
   msg.payload = { "command": "switchlight", "idx": 500, "switchcmd": "On" }; //On = Up
}

return msg;


Ik zou verwachten dat de twee payloads met dezelfde staat naar twee IDX-en zou moeten versturen.
Maar dat is niet zoals ik het in Domoticz zie verschijnen... Ze wijken af... 499 gaat aan en 500 gaat uit. :?

Any thoughts?
MikeyMan schreef op dinsdag 6 december 2022 @ 14:12:
@lolgast inmiddels een stukje verder.

msg.payload["domoticz/out/Verlichtingssensor achterkant"].svalue1 heet het ding in volledigheid. Lelijk, maar krijg het zo wel voor elkaar om de informatie te ontsluiten.

Volgende uitdaging... Hoe krijg ik met 1 function node, twee signalen uitgestuurd. Heb nu dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var measure = parseFloat(msg.payload["domoticz/out/Verlichtingssensor achterkant"].svalue1);
var setpoint = parseFloat('25000' );
var roomtemp = msg.payload["domoticz/out/Woonkamer"];

if (measure >= setpoint && roomtemp >= '20.5')
{
   msg.payload = { "command": "switchlight", "idx": 499, "switchcmd": "Off" }; //Off = Down
   msg.payload = { "command": "switchlight", "idx": 500, "switchcmd": "Off" }; //Off = Down
}

else
{
   msg.payload = { "command": "switchlight", "idx": 499, "switchcmd": "On" }; //On = Up
   msg.payload = { "command": "switchlight", "idx": 500, "switchcmd": "On" }; //On = Up
}

return msg;


Ik zou verwachten dat de twee payloads met dezelfde staat naar twee IDX-en zou moeten versturen.
Maar dat is niet zoals ik het in Domoticz zie verschijnen... Ze wijken af... 499 gaat aan en 500 gaat uit. :?

Any thoughts?
Kun je dat niet oplossen door je function Node 2 outputs te geven? 1 voor de 499 en 1 voor de 500?

  • MikeyMan
  • Registratie: Februari 2003
  • Laatst online: 22:40

MikeyMan

Vidi, Vici, Veni

Koepert schreef op dinsdag 6 december 2022 @ 14:47:
[...]


Kun je dat niet oplossen door je function Node 2 outputs te geven? 1 voor de 499 en 1 voor de 500?
En dan de msg.payload hernoemen?

  • MikeyMan
  • Registratie: Februari 2003
  • Laatst online: 22:40

MikeyMan

Vidi, Vici, Veni

Ja denk dat het zoiets moet zijn.

'Grafisch' programmeren noemen ze dat :P
Of de functie node.send()

  • MikeyMan
  • Registratie: Februari 2003
  • Laatst online: 22:40

MikeyMan

Vidi, Vici, Veni

@Koepert Held!

Zag pas later dat er een bolletje bij komt als je er twee outputs van maakt.

Heb nu dit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var measure = parseFloat(msg.payload["domoticz/out/Verlichtingssensor achterkant"].svalue1);
var setpoint = parseFloat('25000' );
var roomtemp = msg.payload["domoticz/out/Woonkamer"];
let msg1 = {};
let msg2 = {};

if (measure >= setpoint && roomtemp >= '20.5')
{
    msg1.payload = { "command": "switchlight", "idx": 499, "switchcmd": "Off" }; //Off = Down
    msg2.payload = { "command": "switchlight", "idx": 500, "switchcmd": "Off" }; //Off = Down
}

else
{
    msg1.payload = { "command": "switchlight", "idx": 499, "switchcmd": "On" }; //On = Up
    msg2.payload = { "command": "switchlight", "idx": 500, "switchcmd": "On" }; //On = Up
}

return [msg1,msg2];


Lijkt te werken.
musicpixel schreef op maandag 5 december 2022 @ 10:00:
[...]


Dat kun je wel zeggen ja ;)

En hoewel jouw oplossing niet fout is en prima zal werken, nog even een kleine suggestie: ik maak er zelf altijd een gewoonte van om eerst alle entities te verzamelen en er dan pas mee te gaan rekenen. Dat maakt het vaak wat overzichtelijker (maar wel wat langere code).
Voorbeeld (voor alleen gas):

code:
1
2
3
4
5
6
// get entity states for gas and electricity
var daily_gas = entities['sensor.daily_gas'].state;
var gas_tariff = entities['sensor.gas_tariff'].state;

// calculate costs
var gas_price = (daily_gas * gas_tariff).toFixed(2);


Je hebt zo het verzamelen van de gegevens los gehaald van de daadwerkelijke berekening en het wordt wat leesbaarder.
Hier op terugkomend. Ik wilde deze uitbreiden met het totaal van low en high tariff.. maar dat gaat niet goed.. Dit werkt niet:

code:
1
2
3
4
5
// calculate costs
var gas_price = (daily_gas * gas_tariff).toFixed(2);
var offpeak_price = (daily_offpeak * offpeak_tariff).toFixed(2);
var peak_price = (daily_peak * peak_tariff).toFixed(2);
var total_price = (offpeak_price + peak_price).toFixed(2);



Dit laatste total_price gaat stuk op toFixed.. maar wat is het juiste hier? Haal ik het helemaal weg is het resultaat namelijk 1.780.00.. Ik dacht, peak en offpeak zijn al ingekort, dus t zou niet hoeven, maar zo werkt t dus niet..


Wellicht niet t mooist..maar zo opgelost:

code:
1
var energy_price = ((daily_offpeak * offpeak_tariff) + (daily_peak * peak_tariff)).toFixed(2);

[Voor 5% gewijzigd door Koepert op 11-12-2022 11:15. Reden: Fixed..kinda]


  • Puller
  • Registratie: Februari 2019
  • Laatst online: 11-12-2022
Hari-Bo schreef op woensdag 26 oktober 2022 @ 14:17:
Sinds vorige week ben ik overgestapt van Fibaro HC2 naar Home Assistant met Node Red. Momenteel heb ik een flow gemaakt welke als er een beweging gedetecteerd wordt de verlichting inschakelt en na 5 minuten bij geen beweging weer uit. Omdat de garage een grotere ruimte is dan 1 bewegingsensor dekt heb ik er twee geplaatst. En nu loop ik tegen een punt aan als 1 van de twee als statement off heeft wordt de verlichting logischerwijs uitgeschakeld. Hoe kan ik ervoor zorgen dat beide devices bij statement off pas een counter mag lopen? Ik had al gekeken naar de AND node en vermoed dat hier de oplossing zit, maar ik kom er zelf niet uit.

[Afbeelding]

[mbr]Als je het in Node-Red wilt oplossen verwijs ik je toch naar het Node-Red topic => verplaatst[/mbr]
Volgens mij is dit heel simpel te doen met de standaard trigger node




  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
Koepert schreef op zondag 11 december 2022 @ 10:53:
[...]


Hier op terugkomend. Ik wilde deze uitbreiden met het totaal van low en high tariff.. maar dat gaat niet goed.. Dit werkt niet:

code:
1
2
3
4
5
// calculate costs
var gas_price = (daily_gas * gas_tariff).toFixed(2);
var offpeak_price = (daily_offpeak * offpeak_tariff).toFixed(2);
var peak_price = (daily_peak * peak_tariff).toFixed(2);
var total_price = (offpeak_price + peak_price).toFixed(2);



Dit laatste total_price gaat stuk op toFixed.. maar wat is het juiste hier? Haal ik het helemaal weg is het resultaat namelijk 1.780.00.. Ik dacht, peak en offpeak zijn al ingekort, dus t zou niet hoeven, maar zo werkt t dus niet..
De reden dat dit niet lukt is omdat toFixed van een getal een string (tekst dus) maakt.
Als je toFixed hebt gebruikt kun je er daarna dus beter niet meer mee rekenen, want stel dat:

offpeak_price = "123.45" en peak_price = "345.67"
dan zorgt de regel
var total_price = (offpeak_price + peak_price).toFixed(2);
ervoor dat het zo wordt:
var total_price = ("123.45" + "345.67").toFixed(2);
oftewel:
var total_price = ("123.45345.67").toFixed(2);

En dat vindt toFixed niet fijn en is ook niet wat je wilt.
Je kunt toFixed dus beter pas op het allerlaatste moment gebruiken, ook omdat je daarmee cijfers achter de komma weggooit.


Wat beter is, is de toFixed (dat de getallen formatteert) los halen van de berekeningen, dus:

code:
1
2
3
4
5
6
7
8
9
10
// calculate costs
var gas_price = daily_gas * gas_tariff;
var offpeak_price = daily_offpeak * offpeak_tariff;
var peak_price = daily_peak * peak_tariff;
var total_price = offpeak_price + peak_price;

var format_gas_price = gas_price.toFixed(2);
var format_offpeak_price = offpeak_price.toFixed(2);
var format_peak_price = peak_price.toFixed(2);
var format_total_price = total_price.toFixed(2);


En daar komt dus die "format" weer tevoorschijn waar we het eerder over hadden. Dat staat voor "geformatteerde tekst". Ik gebruik ook vaak de afkorting fmt ipv format.

Het is belangrijk om altijd in de gaten te houden of je met getallen of tekst (strings) aan het werken bent!

Feel free to Buy me a coffee


  • Wachten...
  • Registratie: Januari 2008
  • Laatst online: 22:40
Weet iemand hoe ik ervoor kan zorgen dat er maar 1 notifiatie wordt verstuurd, todat de waarde zich in een andere output bevindt?

Ik lees hier namelijk een CO2 waarde uit, die ik in vier verschillende waardes heb verdeeld, met 4 verschillende output notificatie berichten. Deze staan allemaal in een "switch node", zoals hieronder.
  • 400 tot 800 >> bericht: Ventileren niet noodzakelijk
  • 800 tot 1000 >> bericht: Ramen op winterstand
  • 1000 tot 1200 >> bericht: Ramen op zonderstand
  • 1200 tot 2000 >> bericht: Volledig ventileren
Stel de waarde is nu 600, dan krijg ik de melding "ventileren niet noodzakelijk", maar als deze waarde later geupdate wordt naar 650, dan krijg ik deze melding weer. Ik wil dat ik pas een notificatie krijg, zodra hij van output veranderd. dus naar bijvoorbeeld 800 tot 1000, met de bijbehorende notificatie.

Iemand enig idee hoe ik dit voor elkaar kan krijgen?

Als je dit kunt lezen, dan werkt mij Signature!


  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
Wachten... schreef op maandag 12 december 2022 @ 16:33:
Weet iemand hoe ik ervoor kan zorgen dat er maar 1 notifiatie wordt verstuurd, todat de waarde zich in een andere output bevindt?

Ik lees hier namelijk een CO2 waarde uit, die ik in vier verschillende waardes heb verdeeld, met 4 verschillende output notificatie berichten. Deze staan allemaal in een "switch node", zoals hieronder.
  • 400 tot 800 >> bericht: Ventileren niet noodzakelijk
  • 800 tot 1000 >> bericht: Ramen op winterstand
  • 1000 tot 1200 >> bericht: Ramen op zonderstand
  • 1200 tot 2000 >> bericht: Volledig ventileren
Stel de waarde is nu 600, dan krijg ik de melding "ventileren niet noodzakelijk", maar als deze waarde later geupdate wordt naar 650, dan krijg ik deze melding weer. Ik wil dat ik pas een notificatie krijg, zodra hij van output veranderd. dus naar bijvoorbeeld 800 tot 1000, met de bijbehorende notificatie.

Iemand enig idee hoe ik dit voor elkaar kan krijgen?
Ik heb dit nooit gedaan, maar eerste waar ik aan denk is het volgende:

In plaats van direct het bericht te sturen, zou je voor iedere range in de switchnode een waarde kunnen zetten.

Dus een change node achter iedere switch output met daarin msg.ventilatiestand = 1 of 2 of 3 of 4, afhankelijk van de range.

Deze change nodes komen dan samen in een filter node, die reageert op de msg.ventilatiestand en alleen een waarde doorlaat als ie verandert.

Ipv die switch en change nodes zou je ook een function node kunnen toepassen.

Feel free to Buy me a coffee


  • Wachten...
  • Registratie: Januari 2008
  • Laatst online: 22:40
musicpixel schreef op maandag 12 december 2022 @ 17:03:
[...]


Ik heb dit nooit gedaan, maar eerste waar ik aan denk is het volgende:

In plaats van direct het bericht te sturen, zou je voor iedere range in de switchnode een waarde kunnen zetten.

Dus een change node achter iedere switch output met daarin msg.ventilatiestand = 1 of 2 of 3 of 4, afhankelijk van de range.

Deze change nodes komen dan samen in een filter node, die reageert op de msg.ventilatiestand en alleen een waarde doorlaat als ie verandert.

Ipv die switch en change nodes zou je ook een function node kunnen toepassen.
Pfoeh, Ik heb ook al zitten denken aan dit soort dingen, maar het maakt het er niet echt mooier op. Ik had gehoopt op "hetzelfde bericht" te kunnen blokkeren, tot er een ander bericht binnen komt.

Het wordt dan toch nog even verder zoeken. Maar je idee is verder niet gek als ik niks anders kan vinden.

Als je dit kunt lezen, dan werkt mij Signature!


  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
Wachten... schreef op maandag 12 december 2022 @ 17:40:
[...]


Pfoeh, Ik heb ook al zitten denken aan dit soort dingen, maar het maakt het er niet echt mooier op. Ik had gehoopt op "hetzelfde bericht" te kunnen blokkeren, tot er een ander bericht binnen komt.

Het wordt dan toch nog even verder zoeken. Maar je idee is verder niet gek als ik niks anders kan vinden.
Ipv msg.ventilatiestand zou je ook msg.bericht kunnen doen natuurlijk.

Wat ook nog kan is van die ventilatiestand een input_helper maken. En dan zodra die input_helper verandert een bericht sturen. Dan zouden het 2 losse automatiseringen worden:
1. Zet helper ventilatiestand obv co2 waarde
2. Zodra helper ventilatiestand wijzigt, stuur dan bericht.

Voordeel van splitsen is dat je ook een andere trigger dan co2 waarde kunt gebruiken om een ventilatiemelding te sturen. Gewoon de helper aanpassen en het bericht wordt gestuurd.

Feel free to Buy me a coffee


  • d-vine
  • Registratie: Augustus 2006
  • Laatst online: 21:27
Wachten... schreef op maandag 12 december 2022 @ 16:33:
Weet iemand hoe ik ervoor kan zorgen dat er maar 1 notifiatie wordt verstuurd, todat de waarde zich in een andere output bevindt?

Ik lees hier namelijk een CO2 waarde uit, die ik in vier verschillende waardes heb verdeeld, met 4 verschillende output notificatie berichten. Deze staan allemaal in een "switch node", zoals hieronder.
  • 400 tot 800 >> bericht: Ventileren niet noodzakelijk
  • 800 tot 1000 >> bericht: Ramen op winterstand
  • 1000 tot 1200 >> bericht: Ramen op zonderstand
  • 1200 tot 2000 >> bericht: Volledig ventileren
Stel de waarde is nu 600, dan krijg ik de melding "ventileren niet noodzakelijk", maar als deze waarde later geupdate wordt naar 650, dan krijg ik deze melding weer. Ik wil dat ik pas een notificatie krijg, zodra hij van output veranderd. dus naar bijvoorbeeld 800 tot 1000, met de bijbehorende notificatie.

Iemand enig idee hoe ik dit voor elkaar kan krijgen?
Ik heb nog een oude test flow die soort gelijk doet maar dan wel bij 1 waarde
deze output stuurt maar 1x een "false" melding als deze boven de 18 komt.
en maar 1x een "true" als deze onder de 18 komt

Misschien helpt het om het zelf uit te breiden.

code:
1
[{"id":"6c94d676f967559e","type":"inject","z":"f063b237843182c4","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"60.67","payloadType":"num","x":770,"y":160,"wires":[["731bdba266bb67f3"]]},{"id":"00adf111f7fc6a9d","type":"debug","z":"f063b237843182c4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1290,"y":180,"wires":[]},{"id":"4736cd8d1fe028a7","type":"inject","z":"f063b237843182c4","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"19.02","payloadType":"num","x":770,"y":200,"wires":[["731bdba266bb67f3"]]},{"id":"4fb214c39fc60a4d","type":"inject","z":"f063b237843182c4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"17.03","payloadType":"num","x":770,"y":240,"wires":[["731bdba266bb67f3"]]},{"id":"2133b67e44f7c2f2","type":"inject","z":"f063b237843182c4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1","payloadType":"num","x":770,"y":280,"wires":[["731bdba266bb67f3"]]},{"id":"731bdba266bb67f3","type":"change","z":"f063b237843182c4","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload < 18 ? true : false","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":944,"y":180,"wires":[["1af17a574c9d4920"]]},{"id":"1af17a574c9d4920","type":"rbe","z":"f063b237843182c4","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":false,"property":"payload","topi":"topic","x":1122,"y":180,"wires":[["00adf111f7fc6a9d"]]}]


@Wachten... Mijn oplossing zou zijn om een extra value mee te geven, msg.stand ofzo, met 1, 2, 3 of 4. Daarna een RBE-node die filtert op diezelfde msg.stand. Dan block je alles totdat er een andere msg.stand waarde voorbij komt

Edit:
Ik zie nu @d-vine z’n oplossing en volgens mij is die ‘filter’-node de nieuwe RBE. Dus min of meer hetzelfde concept qua oplossingsrichting inderdaad

[Voor 26% gewijzigd door lolgast op 12-12-2022 19:36]


  • Wachten...
  • Registratie: Januari 2008
  • Laatst online: 22:40
d-vine schreef op maandag 12 december 2022 @ 19:22:
[...]


Ik heb nog een oude test flow die soort gelijk doet maar dan wel bij 1 waarde
deze output stuurt maar 1x een "false" melding als deze boven de 18 komt.
en maar 1x een "true" als deze onder de 18 komt

Misschien helpt het om het zelf uit te breiden.

code:
1
[{"id":"6c94d676f967559e","type":"inject","z":"f063b237843182c4","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"60.67","payloadType":"num","x":770,"y":160,"wires":[["731bdba266bb67f3"]]},{"id":"00adf111f7fc6a9d","type":"debug","z":"f063b237843182c4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1290,"y":180,"wires":[]},{"id":"4736cd8d1fe028a7","type":"inject","z":"f063b237843182c4","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"19.02","payloadType":"num","x":770,"y":200,"wires":[["731bdba266bb67f3"]]},{"id":"4fb214c39fc60a4d","type":"inject","z":"f063b237843182c4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"17.03","payloadType":"num","x":770,"y":240,"wires":[["731bdba266bb67f3"]]},{"id":"2133b67e44f7c2f2","type":"inject","z":"f063b237843182c4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1","payloadType":"num","x":770,"y":280,"wires":[["731bdba266bb67f3"]]},{"id":"731bdba266bb67f3","type":"change","z":"f063b237843182c4","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload < 18 ? true : false","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":944,"y":180,"wires":[["1af17a574c9d4920"]]},{"id":"1af17a574c9d4920","type":"rbe","z":"f063b237843182c4","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":false,"property":"payload","topi":"topic","x":1122,"y":180,"wires":[["00adf111f7fc6a9d"]]}]


[Afbeelding]
Dank je, ik ga deze eens even importeren en bekijken.

@lolgast dit is ook een beetje wat @musicpixel zei. Dus als bovenstaande niet, dan kan ik altijd terug vallen op de andere optie.

Als je dit kunt lezen, dan werkt mij Signature!


  • musicpixel
  • Registratie: Juni 2011
  • Laatst online: 20:30
@Wachten...

Dit is wat ik in mijn laatste bericht bedoelde met die input_number helper erbij:



code:
1
[{"id":"676e1cb6d8b08afe","type":"inject","z":"6298cecd99089b1c","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"600","payloadType":"num","x":170,"y":200,"wires":[["a2d322376a5e95ba"]]},{"id":"959119313e59907a","type":"inject","z":"6298cecd99089b1c","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"650","payloadType":"num","x":170,"y":240,"wires":[["a2d322376a5e95ba"]]},{"id":"72f9bb2d9e3f494f","type":"inject","z":"6298cecd99089b1c","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"900","payloadType":"num","x":170,"y":300,"wires":[["a2d322376a5e95ba"]]},{"id":"8daef5ac9b4e6ddf","type":"inject","z":"6298cecd99089b1c","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1100","payloadType":"num","x":170,"y":360,"wires":[["a2d322376a5e95ba"]]},{"id":"2306f7a8a9c14cab","type":"inject","z":"6298cecd99089b1c","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1500","payloadType":"num","x":170,"y":420,"wires":[["a2d322376a5e95ba"]]},{"id":"a2d322376a5e95ba","type":"switch","z":"6298cecd99089b1c","name":"","property":"payload","propertyType":"msg","rules":[{"t":"btwn","v":"400","vt":"num","v2":"799","v2t":"num"},{"t":"btwn","v":"800","vt":"num","v2":"999","v2t":"num"},{"t":"btwn","v":"1000","vt":"num","v2":"1199","v2t":"num"},{"t":"btwn","v":"1200","vt":"num","v2":"2000","v2t":"num"}],"checkall":"true","repair":false,"outputs":4,"x":430,"y":280,"wires":[["156159eeb5f479a2"],["9fbca45e74a0bc70"],["d3e454dacc78860a"],["7bff36e2d534f97a"]]},{"id":"156159eeb5f479a2","type":"api-call-service","z":"6298cecd99089b1c","name":"Ventilatie 0","server":"2065350e.86a40a","version":5,"debugenabled":false,"domain":"input_number","service":"set_value","areaId":[],"deviceId":[],"entityId":["input_number.test_ventilatiestand"],"data":"{\"value\":0}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":650,"y":220,"wires":[[]]},{"id":"9fbca45e74a0bc70","type":"api-call-service","z":"6298cecd99089b1c","name":"Ventilatie 1","server":"2065350e.86a40a","version":5,"debugenabled":false,"domain":"input_number","service":"set_value","areaId":[],"deviceId":[],"entityId":["input_number.test_ventilatiestand"],"data":"{\"value\":1}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":650,"y":260,"wires":[[]]},{"id":"d3e454dacc78860a","type":"api-call-service","z":"6298cecd99089b1c","name":"Ventilatie 2","server":"2065350e.86a40a","version":5,"debugenabled":false,"domain":"input_number","service":"set_value","areaId":[],"deviceId":[],"entityId":["input_number.test_ventilatiestand"],"data":"{\"value\":2}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":650,"y":300,"wires":[[]]},{"id":"7bff36e2d534f97a","type":"api-call-service","z":"6298cecd99089b1c","name":"Ventilatie 3","server":"2065350e.86a40a","version":5,"debugenabled":false,"domain":"input_number","service":"set_value","areaId":[],"deviceId":[],"entityId":["input_number.test_ventilatiestand"],"data":"{\"value\":3}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":650,"y":340,"wires":[[]]},{"id":"2fc2e7fe5ff64e11","type":"server-state-changed","z":"6298cecd99089b1c","name":"Ventilatiestand wijzigt","server":"2065350e.86a40a","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_number.test_ventilatiestand","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,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":200,"y":600,"wires":[["13ef3e470a69ed3b"]]},{"id":"13ef3e470a69ed3b","type":"switch","z":"6298cecd99089b1c","name":"Stand","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"eq","v":"1","vt":"num"},{"t":"eq","v":"2","vt":"num"},{"t":"eq","v":"3","vt":"num"}],"checkall":"true","repair":false,"outputs":4,"x":430,"y":600,"wires":[["8b12b169cb87a0ee"],["6e7c868ac10598b3"],["40ac7e0ee4eca29b"],["6c86a677134c0881"]]},{"id":"8b12b169cb87a0ee","type":"debug","z":"6298cecd99089b1c","name":"Ventileren niet noodzakelijk","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":700,"y":540,"wires":[]},{"id":"6e7c868ac10598b3","type":"debug","z":"6298cecd99089b1c","name":"Ramen op winterstand","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":680,"y":580,"wires":[]},{"id":"40ac7e0ee4eca29b","type":"debug","z":"6298cecd99089b1c","name":"Ramen op zomerstand","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":680,"y":620,"wires":[]},{"id":"6c86a677134c0881","type":"debug","z":"6298cecd99089b1c","name":"Volledig ventileren","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":670,"y":660,"wires":[]},{"id":"2065350e.86a40a","type":"server","name":"Home Assistant","version":4,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m"}]

Feel free to Buy me a coffee


  • shades
  • Registratie: September 2001
  • Laatst online: 21-03 08:05

shades

huh ?

musicpixel schreef op dinsdag 13 december 2022 @ 14:44:
@Wachten...

Dit is wat ik in mijn laatste bericht bedoelde met die input_number helper erbij:

[Afbeelding]

code:
1
[{"id":"676e1cb6d8b08afe","type":"inject","z":"6298cecd99089b1c","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"600","payloadType":"num","x":170,"y":200,"wires":[["a2d322376a5e95ba"]]},{"id":"959119313e59907a","type":"inject","z":"6298cecd99089b1c","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"650","payloadType":"num","x":170,"y":240,"wires":[["a2d322376a5e95ba"]]},{"id":"72f9bb2d9e3f494f","type":"inject","z":"6298cecd99089b1c","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"900","payloadType":"num","x":170,"y":300,"wires":[["a2d322376a5e95ba"]]},{"id":"8daef5ac9b4e6ddf","type":"inject","z":"6298cecd99089b1c","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1100","payloadType":"num","x":170,"y":360,"wires":[["a2d322376a5e95ba"]]},{"id":"2306f7a8a9c14cab","type":"inject","z":"6298cecd99089b1c","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1500","payloadType":"num","x":170,"y":420,"wires":[["a2d322376a5e95ba"]]},{"id":"a2d322376a5e95ba","type":"switch","z":"6298cecd99089b1c","name":"","property":"payload","propertyType":"msg","rules":[{"t":"btwn","v":"400","vt":"num","v2":"799","v2t":"num"},{"t":"btwn","v":"800","vt":"num","v2":"999","v2t":"num"},{"t":"btwn","v":"1000","vt":"num","v2":"1199","v2t":"num"},{"t":"btwn","v":"1200","vt":"num","v2":"2000","v2t":"num"}],"checkall":"true","repair":false,"outputs":4,"x":430,"y":280,"wires":[["156159eeb5f479a2"],["9fbca45e74a0bc70"],["d3e454dacc78860a"],["7bff36e2d534f97a"]]},{"id":"156159eeb5f479a2","type":"api-call-service","z":"6298cecd99089b1c","name":"Ventilatie 0","server":"2065350e.86a40a","version":5,"debugenabled":false,"domain":"input_number","service":"set_value","areaId":[],"deviceId":[],"entityId":["input_number.test_ventilatiestand"],"data":"{\"value\":0}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":650,"y":220,"wires":[[]]},{"id":"9fbca45e74a0bc70","type":"api-call-service","z":"6298cecd99089b1c","name":"Ventilatie 1","server":"2065350e.86a40a","version":5,"debugenabled":false,"domain":"input_number","service":"set_value","areaId":[],"deviceId":[],"entityId":["input_number.test_ventilatiestand"],"data":"{\"value\":1}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":650,"y":260,"wires":[[]]},{"id":"d3e454dacc78860a","type":"api-call-service","z":"6298cecd99089b1c","name":"Ventilatie 2","server":"2065350e.86a40a","version":5,"debugenabled":false,"domain":"input_number","service":"set_value","areaId":[],"deviceId":[],"entityId":["input_number.test_ventilatiestand"],"data":"{\"value\":2}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":650,"y":300,"wires":[[]]},{"id":"7bff36e2d534f97a","type":"api-call-service","z":"6298cecd99089b1c","name":"Ventilatie 3","server":"2065350e.86a40a","version":5,"debugenabled":false,"domain":"input_number","service":"set_value","areaId":[],"deviceId":[],"entityId":["input_number.test_ventilatiestand"],"data":"{\"value\":3}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":650,"y":340,"wires":[[]]},{"id":"2fc2e7fe5ff64e11","type":"server-state-changed","z":"6298cecd99089b1c","name":"Ventilatiestand wijzigt","server":"2065350e.86a40a","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_number.test_ventilatiestand","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,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":200,"y":600,"wires":[["13ef3e470a69ed3b"]]},{"id":"13ef3e470a69ed3b","type":"switch","z":"6298cecd99089b1c","name":"Stand","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"eq","v":"1","vt":"num"},{"t":"eq","v":"2","vt":"num"},{"t":"eq","v":"3","vt":"num"}],"checkall":"true","repair":false,"outputs":4,"x":430,"y":600,"wires":[["8b12b169cb87a0ee"],["6e7c868ac10598b3"],["40ac7e0ee4eca29b"],["6c86a677134c0881"]]},{"id":"8b12b169cb87a0ee","type":"debug","z":"6298cecd99089b1c","name":"Ventileren niet noodzakelijk","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":700,"y":540,"wires":[]},{"id":"6e7c868ac10598b3","type":"debug","z":"6298cecd99089b1c","name":"Ramen op winterstand","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":680,"y":580,"wires":[]},{"id":"40ac7e0ee4eca29b","type":"debug","z":"6298cecd99089b1c","name":"Ramen op zomerstand","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":680,"y":620,"wires":[]},{"id":"6c86a677134c0881","type":"debug","z":"6298cecd99089b1c","name":"Volledig ventileren","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":670,"y":660,"wires":[]},{"id":"2065350e.86a40a","type":"server","name":"Home Assistant","version":4,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m"}]
Ingewikkeld jongens... Omdat ik gestoord werd van de herrie van mijn WTW en de het energie verbruik van dat ding te temperen heb ik de volgende flow gemaakt - soortgelijk is volgens mij makkelijk te projecteren op jouw situatie:



Je pollt gewoon per sensor en bouwt een hysteresis in. Of denk ik nu te simpel ? Anyhow - deze flow werkt zeer goed.

https://k1600gt.nl

Die is voor mij wel iets te simpel ja, mijn ventilator voor de badkamer werkt(e) zo. Hij heeft volgens mij extra optimalisaties gehad maar ik zit op mijn mobieltje momenteel
lolgast in "Node-RED - grafisch 'programmeren' (bijv. voor domotica)"

[Voor 7% gewijzigd door lolgast op 13-12-2022 18:50]

Van de week trouwens mijn RFID lezer voor mijn dochter afgerond. Wellicht heeft iemand wat aan de JS code, want ik zie het weinig gebruikt worden en icm met een 'switch-node' was dit een mengelmoes van draadjes geworden:

JSON:
1
[{"id":"3b8f8a3004c8ec1b","type":"api-call-service","z":"2fb3d79d.70e468","name":"","server":"5c0abd7f.7b22a4","version":5,"debugenabled":false,"domain":"","service":"","areaId":[],"deviceId":[],"entityId":[],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":780,"y":480,"wires":[[]]},{"id":"5977e7acd97c8829","type":"function","z":"2fb3d79d.70e468","name":"function 1","func":"function getCard() {\n    // Kanaal bepalen a.d.v. binary\n    let card  = 0\n    switch (msg.payload) {\n        case '91-60-FB-09': card = 1; break;\n        case '21-1D-FF-47': card = 2; break;\n        case '81-69-E2-09': card = 3; break;\n        case '13-E5-E0-11': card = 4; break;\n        case '71-F7-49-09': card = 5; break;\n        case '81-80-0E-09': card = 6; break;\n        case 'A3-05-D4-4D': card = 7; break;\n        case '13-EF-BA-11': card = 8; break;\n        case '60-E7-58-53': card = 9; break;\n        case '80-53-B8-53': card = 10; break;\n        case '3A-4C-7D-16': card = 11; break;\n        case '53-47-4F-34': card = 12; break;\n    }\n    return card\n}\n\nlet card = getCard()\n\nmsg.payload = {\n    \"domain\": \"media_player\",\n    \"service\": \"\",\n    \"target\": { \"entity_id\": \"media_player.woonkamer\" },\n    \"data\": \"\"\n}\n\nif (card === 1) {\n    // Frozen playlist\n    msg.payload.service = \"play_media\"\n    msg.payload.data = { \"media_content_type\": \"playlist\", \"media_content_id\": \"https://open.spotify.com/playlist/7L0FFNmcWxg8V4Zlp4MbPq\" }\n}\nif (card === 2) {\n    // Disney playlist\n    msg.payload.service = \"play_media\"\n    msg.payload.data = { \"media_content_type\": \"playlist\", \"media_content_id\": \"https://open.spotify.com/playlist/37i9dQZF1DXbcZUQ66mVM3\" }\n}\nif (card === 3) {\n    // Kygo playlist\n    msg.payload.service = \"play_media\"\n    msg.payload.data = { \"media_content_type\": \"playlist\", \"media_content_id\": \"https://open.spotify.com/playlist/37i9dQZF1DX60EDqDORwwI\" }\n}\nif (card === 4) {\n    // K3 playlist\n    msg.payload.service = \"play_media\"\n    msg.payload.data = {\n        \"media_content_type\": \"playlist\", \"media_content_id\": \"https://open.spotify.com/album/6KdKeqVEwzEgb30gwlFChi?si=tLgMvTkDQqOeu4MgCZ5Gbg\" }\n}\nif (card === 5) {\n    // Parov Stelar playlist\n    msg.payload.service = \"play_media\"\n    msg.payload.data = {\n        \"media_content_type\": \"playlist\", \"media_content_id\": \"https://open.spotify.com/playlist/37i9dQZF1DZ06evO3ALAcw?si=8b002d478ef04537\" }\n}\nif (card === 7) {\n    msg.payload.service = \"media_next_track\"\n}\nif (card === 8) {\n    msg.payload.service = \"media_previous_track\"\n}\nif (card === 9) {\n    msg.payload.service = \"volume_up\"\n}\nif (card === 10) {\n    msg.payload.service = \"volume_down\"\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":480,"wires":[["3b8f8a3004c8ec1b"]]},{"id":"d50d9c6ecbaf894b","type":"mqtt in","z":"2fb3d79d.70e468","name":"","topic":"rfid-music/tag","qos":"2","datatype":"auto-detect","broker":"84ab78a.2580c88","nl":false,"rap":true,"rh":0,"inputs":0,"x":220,"y":480,"wires":[["5977e7acd97c8829"]]},{"id":"0a5aebb3477d7d10","type":"inject","z":"2fb3d79d.70e468","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"81-69-E2-09","payloadType":"str","x":230,"y":430,"wires":[["5977e7acd97c8829"]]}]



Ik heb het bewust op deze manier gedaan, want het komt de leesbaarheid vwb de kaartjes in mijn ogen ten goede. De ESP code heeft dezelfde 'card'-nummers gedefinieerd, dus als er eentje kwijt is, is het vrij eenvoudig om te achterhalen welke dat is geweest om hem te vervangen.
Uit interesse he.. Ik gebruik dan NodeRed als Addon binnen Home Assistant OS, maar dat zou voor het antwoord niet uit moeten maken denk ik..

Hoe hebben jullie flows ingedeeld om deze overzichtelijk te houden? Dus de 'tabbladen' zogezegd.. Ik ben redelijk basic begonnen, maar merk nu soms wel er tegenaan te lopen dat ik even niet meer weet waar iets stond, of waar ik t kwijt zou willen.

Mijn tabs:
  • Verlichting: Duh
  • Trash: Mijn afval-gerelateerde automations (wat eigenlijk 2 zijn)
  • HomeAssistant: alle Home Assistant gerelateerde automations (Update meldingen etc)
  • Statussen: Heeft wel wat overlap met de HA: Back-up Jobs, tempsensoren (primitieve brandsignalering), NZBGET status, Inktniveau printer, etc
  • Meldingen: Ook deze heeft overlap: Meldingen vanuit sensorstatussen: Er is Post, garagedeur staat open, etc
  • Medicijnen: Alle flows met medicatie (melding, ;'verbruiken' medicatie, 'aanvullen' voorraad, etc
  • Was & Droog : Duh
  • Remote control: een shitload aan acties aan MQTT publicaties gekoppeld om zo in HA onze KPN remote, Sony remote & Kodi remote te kunnen gebruiken via een IR-blaster
  • F1: een zooi aan APIcalls die samen een F1`dash vullen
  • Kerstflow: Staat 1 maand van het jaar AAN, de rest uit
  • Testflow: staat UIT, maar voor alle automations die ik getest heb, nu niet gebruik, maar wel interessant vind om te houden.. Veel junk dus.
Nu heb ik op zich geen klachten over mn indeling, maar soms denk ik wel eens.. kan het handiger.. Per "room" is niet echt n optie, veel overlap

[Voor 4% gewijzigd door Koepert op 22-12-2022 15:54]

Ik heb:
Verlichting
MQTT (alles wat MQTT als input heeft en niet onder andere tabs valt
Notificatie - location based
Notificatie - event based
System - Alles API gerelateerd

  • anboni
  • Registratie: Maart 2004
  • Laatst online: 22:16
Ik wil een flow bouwen om mijn elektriciteitverbruik te sturen (EV laden, in eerste instantie). Daarbij wil ik wat vrij uitgebreide condities inbouwen, ik denk dan aan:
- Om middernacht vaststellen hoeveel uur de auto nodig heeft om op gewenste SoC te komen;
- Vanuit m'n nordpool integratie uitlezen welke uren de goedkoopste zijn;
- Een array oid vullen met voor ieder uur een 0 of 1 voor wel of niet opladen in dat uur.

Ik denk dat ik dit allemaal prima in fuction nodes kan doen, en de nodige persistente variabelen in context.global opslaan. Ik vraag me alleen af of er nog elegantere manieren zijn om dit te doen in NR, zonder volledig terug te vallen op js.

(ik draai NR op HA op een RPi, als dat uitmaakt)

https://www.socialcooling.com/


  • MausX
  • Registratie: Maart 2019
  • Laatst online: 02-01 17:33
Ik ben in het bezit van een Homey en ben in Node red een dashboard aan het bouwen voor een ipad aan de muur, via het dashboard kan ik alle apparaten aansturen, echter wil ik dat de status van een schakelaar op het dashboard veranderd als ik de fysieke schakelaar van een lamp aan/uit zet, dat zal vast eenvoudig zijn maar ik zie het even niet, graag jullie hulp
Is er ook een manier om dit voor elkaar te krijgen?

JSON:
1
2
3
4
5
6
7
8
9
10
11
12
13
{
    "title": "Update ",
    "message": "🆙Er is een update. {{payload.Name}} {{payload.Available}} is beschikbaar🆙",
    "data": {
        "actions": [
            {
                "action": "URI",
                "uri": "{{msg.url}}",
                "title": "Releasenotes"
            }
        ]
    }
}


Waarbij de uri dus een variable is uit een msg. Bovenstaande manier levert iig GEEN werkende URL op :P

  • Wachten...
  • Registratie: Januari 2008
  • Laatst online: 22:40
Weet iemand toevallig hoe ik een lamp kan dimmer t.o.v. de huidige status?

Ik wil mijn bewegingssensoren iets beter gaan configureren door ze eerst iets te dimmen voordat ze daadwerkelijk uit gaan.

Ik kan uiteraard de brightness_step_pct gebruiken, echter dimt hij dan gewoon dat daadwerkelijk instelde percentage. Ik wil dat de lampen altijd 50% gaan dimmen t.o.v. de huidige status. Dit wil ik omdat ik ook settings heb waarbij de lampen maar 10% gaan branden bij beweging. Dus als ik dan de brightness_step_pct 50% gebruik, dan gaat de lamp alsnog uit.

Als je dit kunt lezen, dan werkt mij Signature!

@Wachten... Hoe stuur je je lampen aan? HomeAssistant node? MQTT node?

Alles kan, maar afhankelijk van de koppeling is het eenvoudig of ‘lastiger’

  • Wachten...
  • Registratie: Januari 2008
  • Laatst online: 22:40
lolgast schreef op dinsdag 3 januari 2023 @ 22:26:
@Wachten... Hoe stuur je je lampen aan? HomeAssistant node? MQTT node?

Alles kan, maar afhankelijk van de koppeling is het eenvoudig of ‘lastiger’
Het zijn Hue lampen, en ik gebruik nodered binnen Home Assistant

Als je dit kunt lezen, dan werkt mij Signature!


  • Tarquin
  • Registratie: Januari 2002
  • Laatst online: 26-03 15:42
Wachten... schreef op dinsdag 3 januari 2023 @ 20:52:
Weet iemand toevallig hoe ik een lamp kan dimmer t.o.v. de huidige status?

Ik wil mijn bewegingssensoren iets beter gaan configureren door ze eerst iets te dimmen voordat ze daadwerkelijk uit gaan.

Ik kan uiteraard de brightness_step_pct gebruiken, echter dimt hij dan gewoon dat daadwerkelijk instelde percentage. Ik wil dat de lampen altijd 50% gaan dimmen t.o.v. de huidige status. Dit wil ik omdat ik ook settings heb waarbij de lampen maar 10% gaan branden bij beweging. Dus als ik dan de brightness_step_pct 50% gebruik, dan gaat de lamp alsnog uit.
Nee, dat gaat 'm niet worden. Hij rekent met absolute stappen en percentages. Als je dit wilt moet je bijhouden waar de lamp op staat en zelf het gewenste percentage uitrekenen.

Ik zou het zelf proberen met een combinatie van triggers en reset-generators.
Als je bv 2x beweging krijgt, of beweging overdag, gaat hij naar 100%. En die triggeren dan ook dat de lamp eerst een 10% message krijgt en daarna uit gaat.
's nachts gaan ze in een andere modus en gaan ze naar 50% en daarna meteen uit,

  • JoepW
  • Registratie: Juli 2007
  • Laatst online: 15:18

JoepW

iRacer & Home Assistant

lolgast schreef op dinsdag 3 januari 2023 @ 22:26:
@Wachten... Hoe stuur je je lampen aan? HomeAssistant node? MQTT node?

Alles kan, maar afhankelijk van de koppeling is het eenvoudig of ‘lastiger’
Hue lampen die met Z2M draaien op HA aansturen via NodeRed vond ik toch echt niet lekker werken. Dus ik heb Nodered mede daarom links laten liggen.

iRacing Profiel -|- Mijn RaceRig -|- Mijn stream

JoepW schreef op woensdag 4 januari 2023 @ 09:39:
[...]

Hue lampen die met Z2M draaien op HA aansturen via NodeRed vond ik toch echt niet lekker werken. Dus ik heb Nodered mede daarom links laten liggen.
Wat gaat er mis dan? Want ik draai dus wel zo, en dat werkt prima (doe er niet hele spannende dingen mee, dat moet ik toegeven)

  • denuz
  • Registratie: Augustus 2006
  • Laatst online: 22:47
Wachten... schreef op dinsdag 3 januari 2023 @ 20:52:
Weet iemand toevallig hoe ik een lamp kan dimmer t.o.v. de huidige status?

Ik wil mijn bewegingssensoren iets beter gaan configureren door ze eerst iets te dimmen voordat ze daadwerkelijk uit gaan.

Ik kan uiteraard de brightness_step_pct gebruiken, echter dimt hij dan gewoon dat daadwerkelijk instelde percentage. Ik wil dat de lampen altijd 50% gaan dimmen t.o.v. de huidige status. Dit wil ik omdat ik ook settings heb waarbij de lampen maar 10% gaan branden bij beweging. Dus als ik dan de brightness_step_pct 50% gebruik, dan gaat de lamp alsnog uit.
Je kan in de call service van je lamp de huidige brightness ophalen, delen door 2.

Voorbeeld:
JSON:
1
2
3
4
5
6
{
  "brightness": $max([
    $entities("light.zolder_kantoor").attributes.brightness /2,
    5
  ])
}

In dit geval heb ik als minimum 5 meegegeven, anders kan het gebeuren dat de lamp direct uitgaat.

Het kan natuurlijk ook op andere manieren, hangt er een beetje vanaf wat je huidige flow is. Volgens mij waren hier laatst wat voorbeelden gedeeld met subflows.

Heb zelf geen Hue lampen, maar wel verschillende anderen merken. Als je de node-red integratie gebruikt stuur je de lampen op dezelfde manier aan als via automations via Home Assistant. Daar zit geen verschil tussen, voor zover ik weet.

  • Wachten...
  • Registratie: Januari 2008
  • Laatst online: 22:40
denuz schreef op woensdag 4 januari 2023 @ 10:08:
[...]

Je kan in de call service van je lamp de huidige brightness ophalen, delen door 2.

Voorbeeld:
JSON:
1
2
3
4
5
6
{
  "brightness": $max([
    $entities("light.zolder_kantoor").attributes.brightness /2,
    5
  ])
}

In dit geval heb ik als minimum 5 meegegeven, anders kan het gebeuren dat de lamp direct uitgaat.

Het kan natuurlijk ook op andere manieren, hangt er een beetje vanaf wat je huidige flow is. Volgens mij waren hier laatst wat voorbeelden gedeeld met subflows.

Heb zelf geen Hue lampen, maar wel verschillende anderen merken. Als je de node-red integratie gebruikt stuur je de lampen op dezelfde manier aan als via automations via Home Assistant. Daar zit geen verschil tussen, voor zover ik weet.
Dank voor je reactie, Ik neem aan dat ik deze in een function node moet plaatsen en dan voor de call service node?

Ik werk nooit met JSON files verder, want ik heb mezelf dat nooit aangeleerd (geen tijd voor helaas, door veel teveel hobby`s
Tarquin schreef op woensdag 4 januari 2023 @ 09:38:
[...]


Nee, dat gaat 'm niet worden. Hij rekent met absolute stappen en percentages. Als je dit wilt moet je bijhouden waar de lamp op staat en zelf het gewenste percentage uitrekenen.

Ik zou het zelf proberen met een combinatie van triggers en reset-generators.
Als je bv 2x beweging krijgt, of beweging overdag, gaat hij naar 100%. En die triggeren dan ook dat de lamp eerst een 10% message krijgt en daarna uit gaat.
's nachts gaan ze in een andere modus en gaan ze naar 50% en daarna meteen uit,
Ik weet dus dat er meerdere mensen zijn die dit doen, want ik heb het in het verleden wel vaker ergens voorbij zien komen met ongeveer de manier zoals @denuz aangeeft. Al zou ik het liever willen kunnen zonder de function node te hoeven gebruiken, maar dat zal helaas niet gaan.
JoepW schreef op woensdag 4 januari 2023 @ 09:39:
[...]

Hue lampen die met Z2M draaien op HA aansturen via NodeRed vond ik toch echt niet lekker werken. Dus ik heb Nodered mede daarom links laten liggen.
Ik deel deze ervaring niet. Ik loop heus wel eens een keer tegen wat aan, maar gelukkig hebben @denuz , @musicpixel , @Koepert mij geregeld geholpen, waardoor ik verder kon.

Als je dit kunt lezen, dan werkt mij Signature!


  • denuz
  • Registratie: Augustus 2006
  • Laatst online: 22:47
Wachten... schreef op woensdag 4 januari 2023 @ 10:43:
[...]


Dank voor je reactie, Ik neem aan dat ik deze in een function node moet plaatsen en dan voor de call service node?

Ik werk nooit met JSON files verder, want ik heb mezelf dat nooit aangeleerd (geen tijd voor helaas, door veel teveel hobby`s
[...]


Ik weet dus dat er meerdere mensen zijn die dit doen, want ik heb het in het verleden wel vaker ergens voorbij zien komen met ongeveer de manier zoals @denuz aangeeft. Al zou ik het liever willen kunnen zonder de function node te hoeven gebruiken, maar dat zal helaas niet gaan.
[...]


Ik deel deze ervaring niet. Ik loop heus wel eens een keer tegen wat aan, maar gelukkig hebben @denuz , @musicpixel , @Koepert mij geregeld geholpen, waardoor ik verder kon.
Nee, niet in de function node.
Kan direct in de service call.

  • Wachten...
  • Registratie: Januari 2008
  • Laatst online: 22:40
denuz schreef op woensdag 4 januari 2023 @ 10:52:
[...]


Nee, niet in de function node.
Kan direct in de service call.
[Afbeelding]
Ik kwam er inderdaad achter dat hij direct daarin kon.
Ik ga hem nu even testen.....


@denuz Ik krijg alleen een error | EDIT: Nog even testen, maar ik denk dat ik het probleem gevonden heb. Ik had "service" nog op "turn_off" staan. Ik ga het nu testen met "turn_on". Helaas werkt het nog steeds niet. Dezelfde error als hieronder.

code:
1
{    "brightness": $max([    $entities("light.gang_group").attributes.brightness /2,        5    ])}


[Voor 37% gewijzigd door Wachten... op 04-01-2023 11:04]

Als je dit kunt lezen, dan werkt mij Signature!


  • denuz
  • Registratie: Augustus 2006
  • Laatst online: 22:47
Wachten... schreef op woensdag 4 januari 2023 @ 10:58:
[...]


Ik kwam er inderdaad achter dat hij direct daarin kon.
Ik ga hem nu even testen.....


@denuz Ik krijg alleen een error | EDIT: Nog even testen, maar ik denk dat ik het probleem gevonden heb. Ik had "service" nog op "turn_off" staan. Ik ga het nu testen met "turn_on". Helaas werkt het nog steeds niet. Dezelfde error als hieronder.

code:
1
{    "brightness": $max([    $entities("light.gang_group").attributes.brightness /2,        5    ])}


[Afbeelding]
Ik denk dat je nu de service aanroept light.turn_off.

Dan kan je niets meegeven. Je wil de lamp niet uitdoen toch? Je wil hem dimmen.

  • Wachten...
  • Registratie: Januari 2008
  • Laatst online: 22:40
denuz schreef op woensdag 4 januari 2023 @ 11:06:
[...]

Ik denk dat je nu de service aanroept light.turn_off.

Dan kan je niets meegeven. Je wil de lamp niet uitdoen toch? Je wil hem dimmen.
Ja dit heb ik gewijzigd, maar ik ontvang nog steeds dezelfde error. (alleen staat de "name" nog niet goed, maar dit heeft er geen invloed op).


[Voor 5% gewijzigd door Wachten... op 04-01-2023 11:08]

Als je dit kunt lezen, dan werkt mij Signature!


  • denuz
  • Registratie: Augustus 2006
  • Laatst online: 22:47
Wachten... schreef op woensdag 4 januari 2023 @ 11:07:
[...]


Ja dit heb ik gewijzigd, maar ik ontvang nog steeds dezelfde error. (alleen staat de "name" nog niet goed, maar dit heeft er geen invloed op).


[Afbeelding]

  • Wachten...
  • Registratie: Januari 2008
  • Laatst online: 22:40
Dat is dan al direct wat ik bedoel met dat ik niet zoveel begrijp van JSON.
Ik zag bij de tekens {} JSON staan, en aangezien jij het over JSON had, dacht ik dat ik die moest hebben.

Wat is het verschil met de J dan die ik nu heb geselecteerd (en nu werkt hij overigens, dus dank je).

Als je dit kunt lezen, dan werkt mij Signature!


  • Wachten...
  • Registratie: Januari 2008
  • Laatst online: 22:40
@denuz, moet overigens dit stuk erin staan

code:
1
 $entities("light.gang_group


Want ik moet het voor best wat sensoren gaan toepassen. Misschien zit ik ernaast hoor, maar de entity wordt toch al aangeroepen in het "entity" vakje? Dit scheelt namelijk aardig wat aanpassen en eventuele fouten met het kopieren naar andere sensoren/flows.

Als je dit kunt lezen, dan werkt mij Signature!


  • JoepW
  • Registratie: Juli 2007
  • Laatst online: 15:18

JoepW

iRacer & Home Assistant

Koepert schreef op woensdag 4 januari 2023 @ 09:55:
[...]


Wat gaat er mis dan? Want ik draai dus wel zo, en dat werkt prima (doe er niet hele spannende dingen mee, dat moet ik toegeven)
Wachten... schreef op woensdag 4 januari 2023 @ 11:13:
[...]


Dat is dan al direct wat ik bedoel met dat ik niet zoveel begrijp van JSON.
Ik zag bij de tekens {} JSON staan, en aangezien jij het over JSON had, dacht ik dat ik die moest hebben.

Wat is het verschil met de J dan die ik nu heb geselecteerd (en nu werkt hij overigens, dus dank je).
Zoals de laatste post aangeeft. Ook ik werd niet wijs uit de mee te sturen attributen.

iRacing Profiel -|- Mijn RaceRig -|- Mijn stream


  • denuz
  • Registratie: Augustus 2006
  • Laatst online: 22:47
Wachten... schreef op woensdag 4 januari 2023 @ 11:18:
@denuz, moet overigens dit stuk erin staan

code:
1
 $entities("light.gang_group


Want ik moet het voor best wat sensoren gaan toepassen. Misschien zit ik ernaast hoor, maar de entity wordt toch al aangeroepen in het "entity" vakje? Dit scheelt namelijk aardig wat aanpassen en eventuele fouten met het kopieren naar andere sensoren/flows.
Ja dat gedeelte moet wel onder brightness staan. Dan haalt ie de huidige brightness op en deelt ie deze door 2. De waarde die er uit komt stelt ie in.

De entity id kun je trouwens ook opgeven in de JSONata. Dat hoeft niet perse in de call service.

Voorbeeld:
code:
1
2
3
4
5
6
7
{
    "entity_id":"light.gang_group",
  "brightness": $max([
    $entities("light.gang_group").attributes.brightness /2,
    5
  ])
}

Mocht je de entity al eeder in de flow beschikbaar hebben (bijvoorbeeld ergens al een change node). Dan kan je het ook als volgt doen:
code:
1
2
3
4
5
6
7
{
    "entity_id": $.'topic',
  "brightness": $max([
    $entities($.'topic').attributes.brightness /2,
    5
  ])
}

Nu ga ik ervanuit dat je entity_id beschikbaar is in msg.topic.
Je kan meedere kanten op, nogmaals e.e.a. afhankelijk wat je al eerder in de flow hebt en wat je zelf handig vind :)

  • rorie
  • Registratie: Maart 2007
  • Laatst online: 22:26
Mensen, als fanatieke Node-RED gebruiker ben ik opzoek naar een manier om zijn Nest thermostaat uit te lezen. De meeste pluings die ik hiervoor kan vinden zijn vaak al erg oud en niet onderhouden. Een andere oplossing zou het rechtstreeks aanspreken van de REST API van google zijn, ook daar zijn niet heel veel voorbeelden van te vinden.

Dus mijn vraag aan jullie, hoe lees je nou het beste je nest thermostaat uit via Node_RED?

  • Zendur77
  • Registratie: December 2014
  • Laatst online: 26-03 20:46
rorie schreef op maandag 16 januari 2023 @ 15:08:
Dus mijn vraag aan jullie, hoe lees je nou het beste je nest thermostaat uit via Node_RED?
Als je ook Home Assistant gebruikt zou je daar je node uit kunnen halen. Met de instructie van home assitant heb ik onlangs de Nest thermostaat weten te koppelen met Home Assistant en Node Red.

  • Kaspers
  • Registratie: Juni 2004
  • Laatst online: 26-03 11:14
Op die manier zou ik 't ook doen. Er zit veel meer dev capaciteit achter die home-assistant integraties, in vergelijking met de 'modules' die je kunt binnen node-red.
Pagina: 1 ... 27 28 29 Laatste


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee