Dat klinkt opzich wel als snel genoeg. Mijn verlichting bij thuiskomst/weggaan schakelt door de deur op-/van het slot te halen. Ik zie het alleen niet zitten om mijn controller daar mee te belasten denk ik
Ik was ook niet van plan om elke seconde de UniFi controller te raadplegen
Elke minuut (of misschien zelfs elke 5 min) is vaak zat. Zet ik de presence mooi in een global (dank @Tsurany ) en dan kan ik het ook in andere flows gebruiken.
Ik slaag er maar niet in om de interne verbindings URL werkende te krijgen op het WIFI SSID.lolgast schreef op woensdag 13 mei 2020 @ 10:19:
Ik gebruik de Home Assistant app. Dat werkt hier echt super goed (beide met iPhones). Zeker sinds die app een 'interne URL' setting heeft en hij dus weet dat wanneer je met een bepaalde SSID verbonden bent, je thuis bent.
Bij wifi SSID vul ik de naam van het thuisnetwerk in.
Nadien vul ik bij interne verbindings URL: https://{local.ip}:8123 in.
Kan jij me soms aanwijzen wat ik verkeerd doe?
Misschien beter om die vraag te stellen in het HA topic:roynolf schreef op donderdag 14 mei 2020 @ 09:07:
[...]
Ik slaag er maar niet in om de interne verbindings URL werkende te krijgen op het WIFI SSID.
Bij wifi SSID vul ik de naam van het thuisnetwerk in.
Nadien vul ik bij interne verbindings URL: https://{local.ip}:8123 in.
Kan jij me soms aanwijzen wat ik verkeerd doe?
Home Assistant: Open source Python3 home automation - deel 2
Ik heb deze in gebruik.Verwijderd schreef op zaterdag 16 mei 2020 @ 11:29:
heeft er iemand nbrowser werkend in node-red?
https://hub.docker.com/r/mukowman/nodered-nbrowser-docker
Ik heb niet alles gelezen in dit topic, dus als het al eerder is gevraagd..mijn excuses.
Ik heb een paar simpele zaken gedaan in Node-Red maar veel verder kom ik dan niet.
Als ik dan ga zoeken in fora dan loop ik tegen het volgende aan :
Je komt de meest prachtige flows tegen, maar iedere stap die in de flow wordt getoond heeft een icoontje, die waarschijnlijk weergeeft wat de functie is, en een beschrijving door de ontwerper zelf. Maar hoe kom je er nu achter welke functie is gebruikt. Ik weet namelijk niet wat ieder icoontje betekent.
Ik heb een paar simpele zaken gedaan in Node-Red maar veel verder kom ik dan niet.
Als ik dan ga zoeken in fora dan loop ik tegen het volgende aan :
Je komt de meest prachtige flows tegen, maar iedere stap die in de flow wordt getoond heeft een icoontje, die waarschijnlijk weergeeft wat de functie is, en een beschrijving door de ontwerper zelf. Maar hoe kom je er nu achter welke functie is gebruikt. Ik weet namelijk niet wat ieder icoontje betekent.
@Nieuwsgier Meestal kun je letterlijk de flow importeren, dat is de brij met informatie die we hier in de code-blokken plakken. Dan heb je gewoon de flow met alle nodes in je eigen NR-omgeving en kun je alles aanklikken en zien wat het is en hoe het ingesteld staat.
Alleen naar een screenshot kijken geeft wel een globaal beeld, maar veel nodes hebben aanvullende code of instellingen in zich die je niet op de screenshot ziet. Dus zelfs als je wel het icoontje van een node herkent heb je er nog steeds niet heel veel aan. Vandaar dat we de flows delen
Dit geldt overigens niet alleen voor fora. Als je in de flow-bibliotheek op nodered.org kijkt zie je onder de screenshot ook de importeercode van de flow. Kijk maar eens bij een willekeurige flow.
Alleen naar een screenshot kijken geeft wel een globaal beeld, maar veel nodes hebben aanvullende code of instellingen in zich die je niet op de screenshot ziet. Dus zelfs als je wel het icoontje van een node herkent heb je er nog steeds niet heel veel aan. Vandaar dat we de flows delen
Dit geldt overigens niet alleen voor fora. Als je in de flow-bibliotheek op nodered.org kijkt zie je onder de screenshot ook de importeercode van de flow. Kijk maar eens bij een willekeurige flow.
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Het gaat mij er vooral om dat je een flow kunt "lezen" , en dat je dus kunt achterhalen welke functies zijn gebruikt. Als je importeerd weet je nog niet welke functies zijn gebruikt toch ?
Je kunt de functie(node)s toch openklikken?Nieuwsgier schreef op zaterdag 16 mei 2020 @ 19:02:
Het gaat mij er vooral om dat je een flow kunt "lezen" , en dat je dus kunt achterhalen welke functies zijn gebruikt. Als je importeerd weet je nog niet welke functies zijn gebruikt toch ?
Zie nu pas dat de tekst bovenaan dan overeenkomt met de funtieRaider095 schreef op zaterdag 16 mei 2020 @ 19:20:
[...]
Je kunt de functie(node)s toch openklikken?
Dank je
Ik zou je aanraden heel deze playlist te bekijken, het omvat alle standaard nodes en het gebruik in de praktijk. Ik ben zelf vrij actief op het node-red forum en merk regelmatig dat mensen niet op de hoogte zijn van "standaard" beschikbare functies en dan het wiel opnieuw uitvinden. 99 van de 100x kan een flow veel makkelijker en korter dan je denkt.Nieuwsgier schreef op zaterdag 16 mei 2020 @ 19:38:
[...]
Zie nu pas dat de tekst bovenaan dan overeenkomt met de funtie![]()
![]()
![]()
Dank je
Als je echt in node-red zit, dan zou ik ook zeker aanraden om jezelf te verdiepen in JSONata, enorm krachtig in het manipuleren van objecten en arrays (ala xpath/xlst maar dan voor json), wat op zijn beurt een flow weer korter kan maken met een enkele change node.
yeah
(ff crosspst van domoticz topic)
https://github.com/mr4hughz/Toon-Rooted-Node-Red-Zwave
https://github.com/mr4hughz/Toon-Rooted-Node-Red-Zwave
[ Voor 16% gewijzigd door vso op 20-05-2020 14:35 ]
Tja vanalles
ik probeer al sinds een lange tijd mijn rolluiken met bepaalde condities uit home assistant te automatiseren.
Ik wil dat met regen, als de temperatuur hoger is als 24 graden en als het harder waait als 40 km/h de rolluiken te sluiten en als het hier niet meer aan voldoet om ze weer te openen.
Regen haal ik met de buienalarm plugin (sensor.buienalarm_precipitation) op en temperatuur(sensor.br_temperature) en wind (sensor.br_wind_speed) met buienradar.
Nu heb ik 3 flows gemaakt maar dit werkt natuurlijk niet goed, gisteren was het b.v warmer als 24 graden en dan sluiten de rolluiken, maar aangezien het niet regende gingen ze weer open, en dit gebeurde wel 20x.
nu denk ik dat ik dit met een function moet oplossen met if then else statement, alleen heb ik voor voorbeelden gezocht om me op weg te helpen maar deze kan ik niet vinden. Iemand hier die hier iets meer van weet?
Edit: toch nog wat gevonden heb nu de volgende function:
hier zou als msg open of close uit moeten komen dus ik heb na deze functie een switch gehangen met open en close en deze dan aan de rolluiken open / close flow gehangen. Helaas werkt dit ook niet
Edit 2:
heb de function werkend gekregen door eest de state node van home assistant in node red te zetten van regen, wind en temperatuur en deze dan verbinden met de volgende function code:
Hierna een switch met open en close naar de open/close flows die ik al had.
Alleen klopt volgens mij de if statement dan nog niet, heb volgens mij nog steeds hetzelfde probleem als in mijn originele post als het warmer is dan 24 graden zal ie sluiten en het regent niet zal ie weer openen terwijl het wel te warm is. programmeren is voor mij al bijna 20 jaar geleden dus ben het wat verleerd.
Iemand hier nog tips in of is het zo wel goed?
Ik wil dat met regen, als de temperatuur hoger is als 24 graden en als het harder waait als 40 km/h de rolluiken te sluiten en als het hier niet meer aan voldoet om ze weer te openen.
Regen haal ik met de buienalarm plugin (sensor.buienalarm_precipitation) op en temperatuur(sensor.br_temperature) en wind (sensor.br_wind_speed) met buienradar.
Nu heb ik 3 flows gemaakt maar dit werkt natuurlijk niet goed, gisteren was het b.v warmer als 24 graden en dan sluiten de rolluiken, maar aangezien het niet regende gingen ze weer open, en dit gebeurde wel 20x.
nu denk ik dat ik dit met een function moet oplossen met if then else statement, alleen heb ik voor voorbeelden gezocht om me op weg te helpen maar deze kan ik niet vinden. Iemand hier die hier iets meer van weet?
Edit: toch nog wat gevonden heb nu de volgende function:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| const states = global.get('homeassistant').homeAssistant.states; const rain = states["sensor.buienalarm_precipitation"].state; const temp = states["sensor.br_temperature_2"].state; const wind = states["sensor.br_wind_speed_2"].state; if ((rain < 0.1) || (temp <= 24) || (wind <= 40)) { msg.payload = close; } else { msg.payload = open; } return msg; |
hier zou als msg open of close uit moeten komen dus ik heb na deze functie een switch gehangen met open en close en deze dan aan de rolluiken open / close flow gehangen. Helaas werkt dit ook niet
Edit 2:
heb de function werkend gekregen door eest de state node van home assistant in node red te zetten van regen, wind en temperatuur en deze dan verbinden met de volgende function code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| const states = global.get('homeassistant').homeAssistant.states; const rain = states["sensor.buienalarm_precipitation"].state; const temp = states["sensor.br_temperature_2"].state; const wind = states["sensor.br_wind_speed_2"].state; if ((rain > 0.1) || (temp >= 24) || (wind >= 40)) { msg.payload = "close"; } else if ((rain < 0.1) || (temp <= 24) || (wind <= 40)) { msg.payload = "open"; } return msg; |
Hierna een switch met open en close naar de open/close flows die ik al had.
Alleen klopt volgens mij de if statement dan nog niet, heb volgens mij nog steeds hetzelfde probleem als in mijn originele post als het warmer is dan 24 graden zal ie sluiten en het regent niet zal ie weer openen terwijl het wel te warm is. programmeren is voor mij al bijna 20 jaar geleden dus ben het wat verleerd.
Iemand hier nog tips in of is het zo wel goed?
[ Voor 51% gewijzigd door TheMystery op 23-05-2020 13:24 ]
Ik ben naar precies hetzelfde opzoek. Ik wil mijn home assistant automations overzetten naar node-red, maar ik loop ook vast op eigenlijk simpele zaken als een soort van "and" functie.TheMystery schreef op zaterdag 23 mei 2020 @ 10:29:
ik probeer al sinds een lange tijd mijn rolluiken met bepaalde condities uit home assistant te automatiseren.
Ik wil dat met regen, als de temperatuur hoger is als 24 graden en als het harder waait als 40 km/h de rolluiken te sluiten en als het hier niet meer aan voldoet om ze weer te openen.
Regen haal ik met de buienalarm plugin (sensor.buienalarm_precipitation) op en temperatuur(sensor.br_temperature) en wind (sensor.br_wind_speed) met buienradar.
Nu heb ik 3 flows gemaakt maar dit werkt natuurlijk niet goed, gisteren was het b.v warmer als 24 graden en dan sluiten de rolluiken, maar aangezien het niet regende gingen ze weer open, en dit gebeurde wel 20x.
nu denk ik dat ik dit met een function moet oplossen met if then else statement, alleen heb ik voor voorbeelden gezocht om me op weg te helpen maar deze kan ik niet vinden. Iemand hier die hier iets meer van weet?
Edit: toch nog wat gevonden heb nu de volgende function:
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 const states = global.get('homeassistant').homeAssistant.states; const rain = states["sensor.buienalarm_precipitation"].state; const temp = states["sensor.br_temperature_2"].state; const wind = states["sensor.br_wind_speed_2"].state; if ((rain < 0.1) || (temp <= 24) || (wind <= 40)) { msg.payload = close; } else { msg.payload = open; } return msg;
hier zou als msg open of close uit moeten komen dus ik heb na deze functie een switch gehangen met open en close en deze dan aan de rolluiken open / close flow gehangen. Helaas werkt dit ook niet
Edit 2:
heb de function werkend gekregen door eest de state node van home assistant in node red te zetten van regen, wind en temperatuur en deze dan verbinden met de volgende function code:
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 const states = global.get('homeassistant').homeAssistant.states; const rain = states["sensor.buienalarm_precipitation"].state; const temp = states["sensor.br_temperature_2"].state; const wind = states["sensor.br_wind_speed_2"].state; if ((rain > 0.1) || (temp >= 24) || (wind >= 40)) { msg.payload = "close"; } else if ((rain < 0.1) || (temp <= 24) || (wind <= 40)) { msg.payload = "open"; } return msg;
Hierna een switch met open en close naar de open/close flows die ik al had.
Alleen klopt volgens mij de if statement dan nog niet, heb volgens mij nog steeds hetzelfde probleem als in mijn originele post als het warmer is dan 24 graden zal ie sluiten en het regent niet zal ie weer openen terwijl het wel te warm is. programmeren is voor mij al bijna 20 jaar geleden dus ben het wat verleerd.
Iemand hier nog tips in of is het zo wel goed?
Eigenlijk wil ik 3 of 4 variabelen inlezen en als die aan voorwaarden voldoen de lampen aan doen.
Waar ik op uit kwam was om de variabelen in te lezen in node-red en er flow-variabelen van te maken en die in een function node te vergelijken en de output terug te sturen naar home assistant.
Ik kwam ook een "merge" node tegen. Deze combineert meerde signalen in arrays maar helaas alleen als de signalen tegelijk getriggered worden. Dus als 1 signaal verandert neemt hij de andere niet meer mee in de output
[ Voor 3% gewijzigd door Mich op 23-05-2020 13:51 ]
Weet je zeker dat de waarden juist uit HA gehaald worden? Al getest met een debug node?TheMystery schreef op zaterdag 23 mei 2020 @ 10:29:
Alleen klopt volgens mij de if statement dan nog niet, heb volgens mij nog steeds hetzelfde probleem als in mijn originele post als het warmer is dan 24 graden zal ie sluiten en het regent niet zal ie weer openen terwijl het wel te warm is. programmeren is voor mij al bijna 20 jaar geleden dus ben het wat verleerd.
Iemand hier nog tips in of is het zo wel goed?
Wat ik zou doen is een function node gebruiken om de waarden op te halen en in een payload te zetten. Dan in een tweede node deze waarden om zetten naar een open/close situatie en als payload uitsturen. Dan kan je heel makkelijk een debugger achter je beide nodes hangen om je functie te debuggen.
Daarnaast zit je code wat vreemd in elkaar. Je hebt een if statement die checkt of een van de drie waarden boven een grenswaarde ligt met een else if om te checken of een van die drie waarden onder een grenswaarde ligt. Die "else if" wordt enkel geraakt als alle drie de waarden onder de grenswaarde liggen, waarom zou je dan nog een extra controle uitvoeren? Gewoon vervangen door een "else" statement zonder if conditie.
Je kan hier inderdaad variabelen van maken die los van elkaar gezet worden. Vervolgens heb je een timer die de drie variabelen uitleest en er logica op los laat via een simpele JavaScript.Mich schreef op zaterdag 23 mei 2020 @ 13:49:
Ik ben naar precies hetzelfde opzoek. Ik wil mijn home assistant automations overzetten naar node-red, maar ik loop ook vast op eigenlijk simpele zaken als een soort van "and" functie.
Eigenlijk wil ik 3 of 4 variabelen inlezen en als die aan voorwaarden voldoen de lampen aan doen.
Waar ik op uit kwam was om de variabelen in te lezen in node-red en er flow-variabelen van te maken en die in een function node te vergelijken en de output terug te sturen naar home assistant.
Ik kwam ook een "merge" node tegen. Deze combineert meerde signalen in arrays maar helaas alleen als de signalen tegelijk getriggered worden. Dus als 1 signaal verandert neemt hij de andere niet meer mee in de output
code:
1
2
3
4
5
6
7
8
9
10
11
12
| var1 = flow.get(["var1"]); var2 = flow.get(["var2"]); var3 = flow.get(["var3"]); if (var1 = <<>> and var2 = <<>> and var3 = <<>>) { true; } else { false; }; |
[ Voor 31% gewijzigd door Tsurany op 23-05-2020 14:53 ]
SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N
Ja waardes komen er goed uit heb ik met debug getest, dus waardes krijg ik er wel uit, het lukt me alleen niet om het te programmeren zoals ik wil. Lukt me alleen om naar 1 waarde te kijken. Probleem is dat de rolluiken de hele tijd open en dicht gaan omdat 1 waarde hem sluit en andere weer opent.Tsurany schreef op zaterdag 23 mei 2020 @ 14:48:
[...]
Weet je zeker dat de waarden juist uit HA gehaald worden? Al getest met een debug node?
Wat ik zou doen is een function node gebruiken om de waarden op te halen en in een payload te zetten. Dan in een tweede node deze waarden om zetten naar een open/close situatie en als payload uitsturen. Dan kan je heel makkelijk een debugger achter je beide nodes hangen om je functie te debuggen.
Daarnaast zit je code wat vreemd in elkaar. Je hebt een if statement die checkt of een van de drie waarden boven een grenswaarde ligt met een else if om te checken of een van die drie waarden onder een grenswaarde ligt. Die "else if" wordt enkel geraakt als alle drie de waarden onder de grenswaarde liggen, waarom zou je dan nog een extra controle uitvoeren? Gewoon vervangen door een "else" statement zonder if conditie.
Ik had eerst een else alleen met debuggen kwam er niets uit, en met een else If werkte het wel, wat ik ook raar vond.
Het enige wat mij zo 1,2,3 opvalt, maar dat zou niet direct het probleem mogen zijn, is dat je zowel >= 24 als <= 24 gebruikt. Dat zou >=24 en <24 of >24 en <= 24 moeten zijn
Klopt had de formule even snel omgedraaid om te testen, normaal zou alleen else al moeten werken namelijk.Raider095 schreef op zaterdag 23 mei 2020 @ 20:10:
Het enige wat mij zo 1,2,3 opvalt, maar dat zou niet direct het probleem mogen zijn, is dat je zowel >= 24 als <= 24 gebruikt. Dat zou >=24 en <24 of >24 en <= 24 moeten zijn
Maar zie dat ik bij eerste voorbeeld kleiner dan ipv groter dan gebruikt heb, dus daar ging mijn test waarschijnlijk fout.
Edit:
Nog snel even getest en dat was het idd, dus werkende code is
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| const states = global.get('homeassistant').homeAssistant.states; const rain = states["sensor.buienalarm_precipitation"].state; const temp = states["sensor.br_temperature_2"].state; const wind = states["sensor.br_wind_speed_2"].state; if ((rain > 0.1) || (temp >= 24) || (wind >= 40)) { msg.payload = "close"; } else { msg.payload = "open"; } return msg; |
Heb het even getest met een debug, als ik de temperatuur op 25 zet dan gaat deze naar close, zet ik de wind op 45 is deze close, zet in de wind terug naar 20 dan blijft het close omdat de temperatuur nog te hoog is. Dus nu zouden mijn rolluiken niet zo vaak op en neer meer mogen gaan
[ Voor 42% gewijzigd door TheMystery op 23-05-2020 20:58 ]
@TheMystery ik probeer mee te denken, maar begrijp nog niet helemaal wanneer je het rolluik omlaag wil hebben. Want in je laatste code gaat hij omlaag bij hitte OF regen OF veel wind.
Maar ik zou denken dat je normaal gesproken een rolluik naar beneden wil hebben bij hitte, maar juist niet bij veel wind (i.v.m. beschadigen). En een zonnescherm of screen juist niet omlaag bij regen. Doet regen er voor een rolluik toe?
En wil je niet kijken naar de verwachte max. temperatuur voor vandaag i.p.v. de huidige temperatuur? Ik bedoel: als het op een dag 30+ graden gaat worden, wil je het rolluik misschien al omlaag hebben/houden vanaf zonsopgang (o.i.d) en niet pas vanaf het moment dat buiten eenmaal de 24 graden aangetikt is.
Maar ik zou denken dat je normaal gesproken een rolluik naar beneden wil hebben bij hitte, maar juist niet bij veel wind (i.v.m. beschadigen). En een zonnescherm of screen juist niet omlaag bij regen. Doet regen er voor een rolluik toe?
En wil je niet kijken naar de verwachte max. temperatuur voor vandaag i.p.v. de huidige temperatuur? Ik bedoel: als het op een dag 30+ graden gaat worden, wil je het rolluik misschien al omlaag hebben/houden vanaf zonsopgang (o.i.d) en niet pas vanaf het moment dat buiten eenmaal de 24 graden aangetikt is.
[ Voor 27% gewijzigd door DeadMetal op 24-05-2020 09:54 ]
Ik zal me ook eens melden.
Heb een aantal hele simpele flows in elkaar kunnen zetten en ben nu bezig met een iets uitgebreidere flow.
Het idee is vrij simpel, zodra er een commando binnen komt in Telegram moet Node-Red daar op reageren en dat datums van de containers doorgeven.
Ondanks dat het ongetwijfeld efficiënter kan werkt dit voor mij prima, het enige wat ik graag zou willen (en waar ik dus niet uitkom) is het sorteren van de datums.
Dit is de flow zelf:
Iemand een suggestie of idee hoe ik de data na de join kan sorteren?
Heb een aantal hele simpele flows in elkaar kunnen zetten en ben nu bezig met een iets uitgebreidere flow.
Het idee is vrij simpel, zodra er een commando binnen komt in Telegram moet Node-Red daar op reageren en dat datums van de containers doorgeven.
Ondanks dat het ongetwijfeld efficiënter kan werkt dit voor mij prima, het enige wat ik graag zou willen (en waar ik dus niet uitkom) is het sorteren van de datums.
Dit is de flow zelf:
code:
1
| [{"id":"39baa218.c4d536","type":"telegram command","z":"2fc90dbf.fe8da2","name":"","command":"/container@bot","bot":"","strict":false,"hasresponse":true,"x":80,"y":360,"wires":[["4097a26.8cb785c","401211a5.735ce8","3bd16e6b.af89e2"],[]]},{"id":"4097a26.8cb785c","type":"api-current-state","z":"2fc90dbf.fe8da2","name":"Haal datum GFT op","server":"","version":1,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":true,"entity_id":"sensor.afvalinfo_gft","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":450,"y":300,"wires":[["4b850ce4.621cc4"]]},{"id":"401211a5.735ce8","type":"api-current-state","z":"2fc90dbf.fe8da2","name":"Haal datum papier op","server":"","version":1,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"sensor.afvalinfo_papier","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":460,"y":360,"wires":[["aaefdb58.bd3c2"]]},{"id":"3bd16e6b.af89e2","type":"api-current-state","z":"2fc90dbf.fe8da2","name":"Haal datum plastic op","server":"","version":1,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"sensor.afvalinfo_pbd","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":460,"y":420,"wires":[["8f824bbf.52ac1"]]},{"id":"b00fac2f.99b368","type":"join","z":"2fc90dbf.fe8da2","name":"Voeg samen","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"3","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":890,"y":360,"wires":[["9861f5ba.a77ea8"]]},{"id":"4b850ce4.621cc4","type":"function","z":"2fc90dbf.fe8da2","name":"Geef label mee","func":"msg.topic = \"gft\"\nreturn msg;","outputs":1,"noerr":0,"x":680,"y":300,"wires":[["b00fac2f.99b368"]]},{"id":"aaefdb58.bd3c2","type":"function","z":"2fc90dbf.fe8da2","name":"Geef label mee","func":"msg.topic = \"papier\"\nreturn msg;","outputs":1,"noerr":0,"x":680,"y":360,"wires":[["b00fac2f.99b368"]]},{"id":"8f824bbf.52ac1","type":"function","z":"2fc90dbf.fe8da2","name":"Geef label mee","func":"msg.topic = \"pbd\"\nreturn msg;","outputs":1,"noerr":0,"x":680,"y":420,"wires":[["b00fac2f.99b368"]]},{"id":"9861f5ba.a77ea8","type":"function","z":"2fc90dbf.fe8da2","name":"Maak telegram","func":"msg.payload = {\n chatId : 0,\n type : 'message',\n content : '*Container!*\\r\\nGFT: '+msg.payload.gft+'\\r\\nPapier: '+msg.payload.papier+'\\r\\nPlastic: '+msg.payload.pbd+''\n}\nmsg.payload.options = {parse_mode : \"Markdown\"};\nreturn msg;","outputs":1,"noerr":0,"x":1060,"y":360,"wires":[["3ed977b3.ace45"]]},{"id":"3ed977b3.ace45","type":"telegram sender","z":"2fc90dbf.fe8da2","name":"Verstuur Telegram","bot":"","x":1250,"y":360,"wires":[[]]},{"id":"750a356e.149d04","type":"telegram command","z":"2fc90dbf.fe8da2","name":"","command":"/container","bot":"","strict":false,"hasresponse":true,"x":60,"y":400,"wires":[["4097a26.8cb785c","401211a5.735ce8","3bd16e6b.af89e2"],[]]}] |
Iemand een suggestie of idee hoe ik de data na de join kan sorteren?
Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!
Voor het toevoegen van een msg.topic kan je ook een change-node gebruiken, dat scheelt weer wat functienodes. NR heeft een sort-node, is die bruikbaar na de join-node? Dan blijft enkel nog de uitdaging over om na sorteren ze in te goede volgorde toe te voegen aan je bericht.Toppe schreef op zondag 24 mei 2020 @ 10:56:
Ik zal me ook eens melden.
Heb een aantal hele simpele flows in elkaar kunnen zetten en ben nu bezig met een iets uitgebreidere flow.
Het idee is vrij simpel, zodra er een commando binnen komt in Telegram moet Node-Red daar op reageren en dat datums van de containers doorgeven.
Ondanks dat het ongetwijfeld efficiënter kan werkt dit voor mij prima, het enige wat ik graag zou willen (en waar ik dus niet uitkom) is het sorteren van de datums.
Iemand een suggestie of idee hoe ik de data na de join kan sorteren?
Ik gebruik trouwens de Afvalbeheer integratie van HA (via HACS). En daardoor allemaal in de GUI van HA in te zien. En in NR heb ik elke ochtend een check of een van de containers vandaag ("sensor.vandaag") geleegd wordt. Zo ja, dan ontvang ik een bericht via Telegram.
[ Voor 3% gewijzigd door DeadMetal op 24-05-2020 11:46 ]
Dat heb ik ook wel, alleen vrouwlief weigert HA te gebruiken en wilt het allemaal simpel houden. Een commando via Telegram ziet ze opzich nog wel zitten en dus kwam ik uit op deze constructieDeadMetal schreef op zondag 24 mei 2020 @ 11:43:
[...]
Voor het toevoegen van een msg.topic kan je ook een change-node gebruiken, dat scheelt weer wat functienodes. NR heeft een sort-node, is die bruikbaar na de join-node? Dan blijft enkel nog de uitdaging over om na sorteren ze in te goede volgorde toe te voegen aan je bericht.
Ik gebruik trouwens de Afvalbeheer integratie van HA (via HACS). En daardoor allemaal in de GUI van HA in te zien. En in NR heb ik elke ochtend een check of een van de containers vandaag ("sensor.vandaag") geleegd wordt. Zo ja, dan ontvang ik een bericht via Telegram.
Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!
Klopt, wil ze dicht bij hitte, regen en wind.DeadMetal schreef op zondag 24 mei 2020 @ 09:27:
@TheMystery ik probeer mee te denken, maar begrijp nog niet helemaal wanneer je het rolluik omlaag wil hebben. Want in je laatste code gaat hij omlaag bij hitte OF regen OF veel wind.
Maar ik zou denken dat je normaal gesproken een rolluik naar beneden wil hebben bij hitte, maar juist niet bij veel wind (i.v.m. beschadigen). En een zonnescherm of screen juist niet omlaag bij regen. Doet regen er voor een rolluik toe?
En wil je niet kijken naar de verwachte max. temperatuur voor vandaag i.p.v. de huidige temperatuur? Ik bedoel: als het op een dag 30+ graden gaat worden, wil je het rolluik misschien al omlaag hebben/houden vanaf zonsopgang (o.i.d) en niet pas vanaf het moment dat buiten eenmaal de 24 graden aangetikt is.
Ik wil ze bij wind dicht omdat ik anders wel eens last heb dat mijn hor eruit waait en bij de buren ligt, en ik heb stevige rolluiken dus die kunnen dat wel hebben.
Bij regen dicht zodat mijn houten kozijnen niet nat worden en langer meegaan.
Goed idee voor de verwachte temperatuur die ga ik er misschien nog in verwerken.
Wat een beetje onhandig is aan de Buienradar-integration in HA, is dat je de verwachting voor de volgende dagen kan zien, en het huidige weer, maar niet de verwachte maximum temperatuur voor later vandaag.TheMystery schreef op zondag 24 mei 2020 @ 12:20:
[...]
Goed idee voor de verwachte temperatuur die ga ik er misschien nog in verwerken.
Ik gebruik momenteel daarom de Darksky-module in NR, dan kan je het wel uitlezen via:
'data.daily.data[0].temperatureHigh'. Helaas heeft Apple Darksky opgekocht en zal die API eind dit jaar ophouden te bestaan. Mogelijk kan je nu al geen nieuwe API-key voor Darksky meer aanvragen.
Een alternatief: dagelijks NR om 23.59u in HA bij Buienradar kijken wat de verwachte maxtemp voor de volgende dag is, en die opslaan in een NR global variabele.
Als volgt:
code:
1
| [{"id":"19428a98.aa574d","type":"inject","z":"9a51dd22.996408","name":"Temperatuur morgen opslaan","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"59 23 * * *","once":false,"onceDelay":0.1,"x":270,"y":320,"wires":[["2454740b.0ffac4"]]},{"id":"2454740b.0ffac4","type":"api-current-state","z":"9a51dd22.996408","name":"Weersverwachting ophalen","server":"2df28887.b05ab8","version":1,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"weather.schiphol","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":540,"y":320,"wires":[["b6584b33.6bf9"]]},{"id":"b6584b33.6bf9","type":"change","z":"9a51dd22.996408","name":"","rules":[{"t":"set","p":"maxtemperatuur","pt":"global","to":"data.attributes.forecast[0].temperature","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":320,"wires":[[]]},{"id":"2df28887.b05ab8","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}] |
Zodat je die waarde de volgende dag in je automation voor het rolluik kan gebruiken.
@DeadMetal aangezien jij ook Telegram gebruikt: Weet jij of (en hoe) je een bericht in Telegram kan verwijderen? Ik wil mijn eigen commando's verwijderen en alleen de response laten staan...
Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!
Dan kun je nog een trigger node gebruiken die je 1x per x minuten laat triggeren en zolang de condities nog gelden niet open doen.TheMystery schreef op zaterdag 23 mei 2020 @ 20:45:
[...]
Dus nu zouden mijn rolluiken niet zo vaak op en neer meer mogen gaan
Er is ook een buienradar node voor node-red met 1/5/10/30/60 minuten updates per locatie, je zou ook nog api.met.no kunnen gebruiken, die heeft data per 6 uur tijdsloten.DeadMetal schreef op zondag 24 mei 2020 @ 12:33:
[...]
Wat een beetje onhandig is aan de Buienradar-integration in HA, is dat je de verwachting voor de volgende dagen kan zien, en het huidige weer, maar niet de verwachte maximum temperatuur voor later vandaag.
[ Voor 43% gewijzigd door z1rconium op 24-05-2020 15:46 ]
Op je telefoon? Een bericht lang indrukken en dan op het prullenbak-icoon tikken?Toppe schreef op zondag 24 mei 2020 @ 14:39:
@DeadMetal aangezien jij ook Telegram gebruikt: Weet jij of (en hoe) je een bericht in Telegram kan verwijderen? Ik wil mijn eigen commando's verwijderen en alleen de response laten staan...
Commands kan je niet verwijderen, alleen response messages.
[ Voor 8% gewijzigd door z1rconium op 24-05-2020 15:49 ]
DeadMetal schreef op zondag 24 mei 2020 @ 15:46:
[...]
Op je telefoon? Een bericht lang indrukken en dan op het prullenbak-icoon tikken?
Die weet ik, maar vanuit de API moet het mogelijk zijn om berichten te verwijderen. Maar antwoord is al gegevenz1rconium schreef op zondag 24 mei 2020 @ 15:49:
Commands kan je niet verwijderen, alleen response messages.
Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!
Toevallig was ik hier van de week ook mee bezig. Leuk om te zien hoe jij nu ook probeert om de zonwering niet zo vaak op en neer te laten gaan. Ik doe het ook met het weer maar is voor mij ook nog wel een uitdaging hoe ik zon/regen en wind combineer. Heb zelf een node ertussen die het gemiddelde/max uitrekent, dus bij mij zou hij nooit elk minuut op en neergaan maar in het ergste geval wel elke 20 min... Helaas is het nu slecht weer maar deze week hoop ik te zien of hij beetje doet wat ik wilTheMystery schreef op zaterdag 23 mei 2020 @ 20:45:
[...]
Heb het even getest met een debug, als ik de temperatuur op 25 zet dan gaat deze naar close, zet ik de wind op 45 is deze close, zet in de wind terug naar 20 dan blijft het close omdat de temperatuur nog te hoog is. Dus nu zouden mijn rolluiken niet zo vaak op en neer meer mogen gaan
:strip_exif()/f/image/lngZ5GA39PhcBmMWVLXuhcHJ.jpg?f=fotoalbum_large)
Dit is wat ik eerst eigenlijk ook had 3 aparte inputs, hierdoor zal hij vaker op en neer gaan. Maar aangezien je het gemiddelde berekend op 20 min zal het niet zo erg zijn als bij mij idd.FrankJ91 schreef op zondag 24 mei 2020 @ 20:56:
[...]
Toevallig was ik hier van de week ook mee bezig. Leuk om te zien hoe jij nu ook probeert om de zonwering niet zo vaak op en neer te laten gaan. Ik doe het ook met het weer maar is voor mij ook nog wel een uitdaging hoe ik zon/regen en wind combineer. Heb zelf een node ertussen die het gemiddelde/max uitrekent, dus bij mij zou hij nooit elk minuut op en neergaan maar in het ergste geval wel elke 20 min... Helaas is het nu slecht weer maar deze week hoop ik te zien of hij beetje doet wat ik wil
[Afbeelding]
Inderdaad. Zou ook nog kunnen werken met timeSinceChangedMs. Dan controleer je of de state in een bepaalde tijd al niet is aangepast in Hass door de flow of handmatig.TheMystery schreef op zondag 24 mei 2020 @ 21:13:
[...]
Dit is wat ik eerst eigenlijk ook had 3 aparte inputs, hierdoor zal hij vaker op en neer gaan. Maar aangezien je het gemiddelde berekend op 20 min zal het niet zo erg zijn als bij mij idd.
Ik ben bezig om een flow te maken om Netflix te bedienen.
Ik heb een Logitech Harmony Hub + remote, chromecast en op mijn mobiel app Netflix.
De Chromecast zit rechtstreeks in een netwerkreceiver. (Denon AVR-X2500H)
Netflix wordt gecast via chromecast op mijn tv.
Met hulp van tweaker Jeltel heb ik nu deze flow
My lukt het maar om 2 commando's (play & pause) te starten.
Maar in pagina https://www.home-assistant.io/integrations/emulated_roku/ lees ik dat je wel 12 commando's kunt zenden.
In de flow zie ik dat er wordt verwezen naar chromecast, niet naar een roku remote.
Lukt dit alleen als je een roku device hebt? Wel heb ik integratie EmulatedRoku & Roku geinstalleerd en activiteit Roku toegevoegd aan mijn Harmony remote.
Met welke setup (of Node-Red node) kan ik andere commando's starten?
Ik heb een Logitech Harmony Hub + remote, chromecast en op mijn mobiel app Netflix.
De Chromecast zit rechtstreeks in een netwerkreceiver. (Denon AVR-X2500H)
Netflix wordt gecast via chromecast op mijn tv.
Met hulp van tweaker Jeltel heb ik nu deze flow
code:
1
| [{"id":"96a4962b.a947c8","type":"server-events","z":"37aa64e6.42a41c","name":"Harmony Roku Command","server":"9f19cfb7.40b16","event_type":"roku_command","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"x":150,"y":700,"wires":[["fccdd23d.edeea"]]},{"id":"fccdd23d.edeea","type":"switch","z":"37aa64e6.42a41c","name":"Home Assistant","property":"payload.event.source_name","propertyType":"msg","rules":[{"t":"eq","v":"Home Assistant","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":360,"y":700,"wires":[["af0b7639.5d6b98"]]},{"id":"af0b7639.5d6b98","type":"switch","z":"37aa64e6.42a41c","name":"Key?","property":"payload.event.key","propertyType":"msg","rules":[{"t":"eq","v":"Play","vt":"str"},{"t":"eq","v":"Pause","vt":"str"},{"t":"eq","v":"Right","vt":"str"},{"t":"eq","v":"Left","vt":"str"},{"t":"eq","v":"Down","vt":"str"}],"checkall":"true","repair":false,"outputs":5,"x":510,"y":700,"wires":[["2795958f.d9e0ca"],["2795958f.d9e0ca"],["50301b2a.0acd74"],["863956b7.05e1b8"],["e32bffb1.4d26c"]]},{"id":"2795958f.d9e0ca","type":"api-call-service","z":"37aa64e6.42a41c","name":"Tsunami Play/Pause","server":"9f19cfb7.40b16","version":1,"debugenabled":false,"service_domain":"media_player","service":"media_play_pause","entityId":"media_player.tsunami","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":760,"y":620,"wires":[[]]},{"id":"50301b2a.0acd74","type":"api-call-service","z":"37aa64e6.42a41c","name":"Tsunami Next","server":"9f19cfb7.40b16","version":1,"debugenabled":false,"service_domain":"media_player","service":"media_next_track","entityId":"media_player.tsunami","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":740,"y":680,"wires":[[]]},{"id":"863956b7.05e1b8","type":"api-call-service","z":"37aa64e6.42a41c","name":"Tsunami Previous","server":"9f19cfb7.40b16","version":1,"debugenabled":false,"service_domain":"media_player","service":"media_previous_track","entityId":"media_player.tsunami","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":750,"y":740,"wires":[[]]},{"id":"e32bffb1.4d26c","type":"api-call-service","z":"37aa64e6.42a41c","name":"Tsunami Stop","server":"9f19cfb7.40b16","version":1,"debugenabled":false,"service_domain":"media_player","service":"media_stop","entityId":"media_player.tsunami","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":740,"y":800,"wires":[[]]},{"id":"19206214.b6051e","type":"comment","z":"37aa64e6.42a41c","name":"Control Playback Tsunami from Harmony","info":"","x":200,"y":620,"wires":[]},{"id":"9f19cfb7.40b16","type":"server","z":"","name":"Home Assistant"}] |
My lukt het maar om 2 commando's (play & pause) te starten.
Maar in pagina https://www.home-assistant.io/integrations/emulated_roku/ lees ik dat je wel 12 commando's kunt zenden.
In de flow zie ik dat er wordt verwezen naar chromecast, niet naar een roku remote.
Lukt dit alleen als je een roku device hebt? Wel heb ik integratie EmulatedRoku & Roku geinstalleerd en activiteit Roku toegevoegd aan mijn Harmony remote.
Met welke setup (of Node-Red node) kan ik andere commando's starten?
In mijn speurtocht naar een eenvoudige flow voor mijn bewegings melder (Ikea Tradfri dingetje)
kwam ik vooral nogal omslachtige dingen tegen met gates etc om te bepalen of er gereageerd moet worden op de detectie, bijvoorbeeld alleen actie als het donker is
dus zelf maar aan het prutsen gegaan om zo eenvoudig mogelijk een flow te maken en die met jullie te delen
ik gebruik deze nu een paar dagen met volle tevredenheid
Doel:
schakel lamp aan door bewegings detectie, schakel alleen als het donker is en ga na 2 minuten weer uit
klein detail de lamp kan ook fysiek geschakeld worden omdat het een Shelly 2.5 betreft, dit geeft een extra check in de aan en uit lijn die zou je er eventueel nog uit kunnen halen
additioneel component: ben erg goed te spreken over de light scheduler addon deze hebben ook een filter waar ik in deze flow dankbaar gebruik van maak om het eenvoudig te houden
Screenshot:
/f/image/Yct8M6p39yOFa7MD5oHu52aF.png?f=fotoalbum_large)
De "Stop if light On" en "Stop if light Off" zijn er dus ivm met manual override
ben ik bezig in de meterkast zoals elke tweaker regelmatig
moet de lamp niet na 2 minuten weer uitgaan (en heeft het sowieso geen zin om bericht te sturen)
De "Only When Dark" node betreft de LS Filter die een tijdschema / agenda heeft voor het globale time window dat deze mag werken en tevens de only when dark optie zodat hij rekening houd met de geolocatie en dus de zon stand
Wellicht heeft iemand er iets aan, success
, op en aanmerkingen worden gewaardeerd
kwam ik vooral nogal omslachtige dingen tegen met gates etc om te bepalen of er gereageerd moet worden op de detectie, bijvoorbeeld alleen actie als het donker is
dus zelf maar aan het prutsen gegaan om zo eenvoudig mogelijk een flow te maken en die met jullie te delen
ik gebruik deze nu een paar dagen met volle tevredenheid
Doel:
schakel lamp aan door bewegings detectie, schakel alleen als het donker is en ga na 2 minuten weer uit
klein detail de lamp kan ook fysiek geschakeld worden omdat het een Shelly 2.5 betreft, dit geeft een extra check in de aan en uit lijn die zou je er eventueel nog uit kunnen halen
additioneel component: ben erg goed te spreken over de light scheduler addon deze hebben ook een filter waar ik in deze flow dankbaar gebruik van maak om het eenvoudig te houden
Screenshot:
/f/image/Yct8M6p39yOFa7MD5oHu52aF.png?f=fotoalbum_large)
De "Stop if light On" en "Stop if light Off" zijn er dus ivm met manual override
ben ik bezig in de meterkast zoals elke tweaker regelmatig
moet de lamp niet na 2 minuten weer uitgaan (en heeft het sowieso geen zin om bericht te sturen)
De "Only When Dark" node betreft de LS Filter die een tijdschema / agenda heeft voor het globale time window dat deze mag werken en tevens de only when dark optie zodat hij rekening houd met de geolocatie en dus de zon stand
code:
1
| [{"id":"bae38a96.1a6048","type":"tab","label":"Motion","disabled":false,"info":""},{"id":"53b0ab77.e2c674","type":"light-scheduler-filter","z":"bae38a96.1a6048","settings":"116171b3.74bfce","events":"[{\"start\":{\"dow\":1,\"mod\":1260},\"end\":{\"dow\":2,\"mod\":0}},{\"start\":{\"dow\":1,\"mod\":0},\"end\":{\"dow\":1,\"mod\":285}},{\"start\":{\"dow\":2,\"mod\":1260},\"end\":{\"dow\":3,\"mod\":0}},{\"start\":{\"dow\":2,\"mod\":0},\"end\":{\"dow\":2,\"mod\":285}},{\"start\":{\"dow\":3,\"mod\":0},\"end\":{\"dow\":3,\"mod\":285}},{\"start\":{\"dow\":4,\"mod\":0},\"end\":{\"dow\":4,\"mod\":285}},{\"start\":{\"dow\":5,\"mod\":0},\"end\":{\"dow\":5,\"mod\":285}},{\"start\":{\"dow\":6,\"mod\":0},\"end\":{\"dow\":6,\"mod\":285}},{\"start\":{\"dow\":0,\"mod\":0},\"end\":{\"dow\":0,\"mod\":285}},{\"start\":{\"dow\":3,\"mod\":1260},\"end\":{\"dow\":4,\"mod\":0}},{\"start\":{\"dow\":4,\"mod\":1260},\"end\":{\"dow\":5,\"mod\":0}},{\"start\":{\"dow\":5,\"mod\":1260},\"end\":{\"dow\":6,\"mod\":0}},{\"start\":{\"dow\":6,\"mod\":1260},\"end\":{\"dow\":0,\"mod\":0}},{\"start\":{\"dow\":0,\"mod\":1260},\"end\":{\"dow\":1,\"mod\":60}}]","name":"Only when dark","onlyWhenDark":true,"scheduleRndMax":0,"sunElevationThreshold":"-5","sunShowElevationInStatus":false,"x":300,"y":100,"wires":[["9d99f38e.d3654"],[]]},{"id":"cea6052c.fea4d8","type":"server-state-changed","z":"bae38a96.1a6048","name":"Motion Hal","server":"6326bb9a.98a074","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.0x680ae2fffefb1058_occupancy","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"on","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":false,"x":120,"y":100,"wires":[["53b0ab77.e2c674"],[]]},{"id":"aae30670.40ea08","type":"stoptimer","z":"bae38a96.1a6048","duration":"2","units":"Minute","payloadtype":"str","payloadval":"off","name":"","x":500,"y":140,"wires":[[],["fe9a7403.771938"]]},{"id":"381880b9.834b6","type":"api-call-service","z":"bae38a96.1a6048","name":"Hal lamp On","server":"6326bb9a.98a074","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.shelly_hal_light_1","data":"","dataType":"json","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":830,"y":40,"wires":[[]]},{"id":"62b921e1.23236","type":"api-call-service","z":"bae38a96.1a6048","name":"Hal Lamp Off","server":"6326bb9a.98a074","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.shelly_hal_light_1","data":"","dataType":"json","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":850,"y":140,"wires":[[]]},{"id":"9d99f38e.d3654","type":"api-current-state","z":"bae38a96.1a6048","name":"Stop if light ON","server":"6326bb9a.98a074","version":1,"outputs":2,"halt_if":"ON","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"light.shelly_hal_light_1","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":500,"y":40,"wires":[[],["381880b9.834b6","aae30670.40ea08"]]},{"id":"fe9a7403.771938","type":"api-current-state","z":"bae38a96.1a6048","name":"Stop if light Off","server":"6326bb9a.98a074","version":1,"outputs":2,"halt_if":"OFF","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"light.shelly_hal_light_1","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":680,"y":140,"wires":[[],["62b921e1.23236"]]},{"id":"77da922a.3a6d9c","type":"comment","z":"bae38a96.1a6048","name":"Hallway pressence / motion actions","info":"# Hallway pressence / motion actions\n\nWhen motion is detected > check schedule if dark or time window is active.\n\ncheck if the light is already on (maybe manually by switching)\n\nif off? > then turn On and start timer.\n\nAt timer end > check if off (maybe manually)\nIf On > turn off","x":180,"y":40,"wires":[]},{"id":"116171b3.74bfce","type":"light-scheduler-settings","z":"","name":"Enschede","latitude":"52.2156666","longitude":"6.8906664000000005"},{"id":"6326bb9a.98a074","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}] |
Wellicht heeft iemand er iets aan, success
een mening is zo sterk als de som van zijn argumenten
Verwijderd
zit je op linux?CAD-tekenaar schreef op maandag 25 mei 2020 @ 19:52:
Met welke setup (of Node-Red node) kan ik andere commando's starten?
Indien ja: https://www.npmjs.com/package/harmonyHubCLI
is dus command line interface voor de harmony hub.
Je maakt het gewenste commando en bewaart het als een uitvoerbaar script.
In node red voeg je de exec node toe en linkt die naar de plaats waar je het script opsloeg.
Bedankt voor je bericht. Gaat dit werken in app Netflix?Verwijderd schreef op dinsdag 26 mei 2020 @ 20:46:
[...]
zit je op linux?
Indien ja: https://www.npmjs.com/package/harmonyHubCLI
is dus command line interface voor de harmony hub.
Je maakt het gewenste commando en bewaart het als een uitvoerbaar script.
In node red voeg je de exec node toe en linkt die naar de plaats waar je het script opsloeg.
Ik cast Netflix van mijn telefoon via chromecast naar mijn tv. En heb ik integratie Roku nog nodig?
(Ik heb geen Roku tv/device)
Wellicht een random vraag, maar ik ben benieuwd of node-red ook samen kan werken met boekhoudprogramma's. Mijn idee is namelijk dat wanneer klant x een factuur betaald heeft dat dan de toegang tot een online service automatisch een maand verlengd wordt. Anders zou ik de service handmatig aan/uit moeten schakelen 
edit:
opgelost
edit:
opgelost
[ Voor 3% gewijzigd door AOC op 27-05-2020 13:54 ]
De vraag is of jouw boekhoudpakket kan integreren met andere applicaties.Waterkoker schreef op woensdag 27 mei 2020 @ 13:09:
Wellicht een random vraag, maar ik ben benieuwd of node-red ook samen kan werken met boekhoudprogramma's. Mijn idee is namelijk dat wanneer klant x een factuur betaald heeft dat dan de toegang tot een online service automatisch een maand verlengd wordt. Anders zou ik de service handmatig aan/uit moeten schakelen
SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N
@Tsurany toevallig net Moneybird geprobeerd waar je m.b.v. een bearer token gebruik kan maken van de api. Ben er nu achter dat je met deze token kan inloggen op moneybird m.b.v. node-red. Als je direct je facturenoverzicht opent kan je met behulp van een html node bepaalde classes met content binnenhalen. Dus als persoon x = betaald dan start flow. Het is mogelijk en relatief makkelijk 
Nu de vraag of een dergelijke connectie mbv een token wel veilig is binnen node-red? Node-red en de vps server heb ik wel beveiligd
Nu de vraag of een dergelijke connectie mbv een token wel veilig is binnen node-red? Node-red en de vps server heb ik wel beveiligd
[ Voor 14% gewijzigd door AOC op 27-05-2020 13:55 ]
M.i. wel zolang je uiteraard niet de code van je flow en daarmee dat token met anderen deelt.Waterkoker schreef op woensdag 27 mei 2020 @ 13:54:
@Tsurany Nu de vraag of een dergelijke connectie mbv een token wel veilig is binnen node-red? Node-red en de vps server heb ik wel beveiligd
NR slaat zijn eigen gegevens m.i. niet encrypted op, dus zorg er ook voor dat niemand bij de inhoud van het systeem kan waar NR op draait.
@DeadMetal mn vps heb ik met fail2ban en keyfile auth beveiligd. Verder node-red ook een auth ingesteld. Met mijn kennis hoop ik in ieder geval dat dit genoeg is
Ik gebruik Moneybird niet, maar wellicht hebben ze ook nog de mogelijkheid om per api-key de rechten in te stellen. Bijv. dat NR dus enkel gegevens mag ophalen/uitlezen, maar geen bewerkingen mag doen.Waterkoker schreef op woensdag 27 mei 2020 @ 15:10:
@DeadMetal mn vps heb ik met fail2ban en keyfile auth beveiligd. Verder node-red ook een auth ingesteld. Met mijn kennis hoop ik in ieder geval dat dit genoeg is
Wellicht een hele domme vraag:
Ik heb een flow gemaakt die de airco uitzet als het raam open gaat. Nu zou ik graag een soort "bedenktijd" voor willen hebben: Als het raam binnen 2 minuten weer dicht gaat, stop het script.
Geprobeerd met een delay en dat werkt natuurlijk niet... Iemand die mij een zetje in de juiste richtingg kan geven?
Ik heb een flow gemaakt die de airco uitzet als het raam open gaat. Nu zou ik graag een soort "bedenktijd" voor willen hebben: Als het raam binnen 2 minuten weer dicht gaat, stop het script.
Geprobeerd met een delay en dat werkt natuurlijk niet... Iemand die mij een zetje in de juiste richtingg kan geven?
Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!
Meerdere mogelijkheden, je zou een counter kunnen pakken met een traffic light en b.v. iedere minuut een inject. Je kunt ook gewoon een delay gebruiken, maar daarvoor zouden we iets meer info van je huidige flow moeten weten.Toppe schreef op woensdag 27 mei 2020 @ 20:15:
Wellicht een hele domme vraag:
Ik heb een flow gemaakt die de airco uitzet als het raam open gaat. Nu zou ik graag een soort "bedenktijd" voor willen hebben: Als het raam binnen 2 minuten weer dicht gaat, stop het script.
Geprobeerd met een delay en dat werkt natuurlijk niet... Iemand die mij een zetje in de juiste richtingg kan geven?
Dit is de flow zelf. De rechter "Telegram reply" kan je vergeten, die had daar niet moeten staan.CerielTjuh schreef op woensdag 27 mei 2020 @ 20:25:
[...]
Meerdere mogelijkheden, je zou een counter kunnen pakken met een traffic light en b.v. iedere minuut een inject. Je kunt ook gewoon een delay gebruiken, maar daarvoor zouden we iets meer info van je huidige flow moeten weten.
/f/image/mzTTyRqaGJXzAptfZ0zwsSLZ.png?f=fotoalbum_large)
[ Voor 6% gewijzigd door Toppe op 27-05-2020 20:29 ]
Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!
Je kunt hiervoor een trigger node gebruiken. De trigger node kun je laten cancelen als het raam weer dicht gaat. Laat maar weten als je voorbeeld nodig hebt, dan deel ik wel wat.Toppe schreef op woensdag 27 mei 2020 @ 20:28:
[...]
Dit is de flow zelf. De rechter "Telegram reply" kan je vergeten, die had daar niet moeten staan.
[Afbeelding]
Ik heb dit eens getest, maar krijg er alleen de waarde sunny uit, werkt dit bij jou wel?DeadMetal schreef op zondag 24 mei 2020 @ 12:33:
[...]
Wat een beetje onhandig is aan de Buienradar-integration in HA, is dat je de verwachting voor de volgende dagen kan zien, en het huidige weer, maar niet de verwachte maximum temperatuur voor later vandaag.
Ik gebruik momenteel daarom de Darksky-module in NR, dan kan je het wel uitlezen via:
'data.daily.data[0].temperatureHigh'. Helaas heeft Apple Darksky opgekocht en zal die API eind dit jaar ophouden te bestaan. Mogelijk kan je nu al geen nieuwe API-key voor Darksky meer aanvragen.
Een alternatief: dagelijks NR om 23.59u in HA bij Buienradar kijken wat de verwachte maxtemp voor de volgende dag is, en die opslaan in een NR global variabele.
Als volgt:
code:
1 [{"id":"19428a98.aa574d","type":"inject","z":"9a51dd22.996408","name":"Temperatuur morgen opslaan","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"59 23 * * *","once":false,"onceDelay":0.1,"x":270,"y":320,"wires":[["2454740b.0ffac4"]]},{"id":"2454740b.0ffac4","type":"api-current-state","z":"9a51dd22.996408","name":"Weersverwachting ophalen","server":"2df28887.b05ab8","version":1,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"weather.schiphol","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":540,"y":320,"wires":[["b6584b33.6bf9"]]},{"id":"b6584b33.6bf9","type":"change","z":"9a51dd22.996408","name":"","rules":[{"t":"set","p":"maxtemperatuur","pt":"global","to":"data.attributes.forecast[0].temperature","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":320,"wires":[[]]},{"id":"2df28887.b05ab8","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]
Zodat je die waarde de volgende dag in je automation voor het rolluik kan gebruiken.
Dan gebruik je denk ik een debug node op de msg.payload? Mijn code pakt een andere waarde, (msg.)data.attributes.forecast[0].temperature en stopt die in global.maxtemperatuur variabeleTheMystery schreef op donderdag 28 mei 2020 @ 08:15:
[...]
Ik heb dit eens getest, maar krijg er alleen de waarde sunny uit, werkt dit bij jou wel?
Ga in het zijpaneel eens naar het context-tab en druk op het refresh-icoon bij 'global', dan zou je dit moeten zien:
:fill(white):strip_exif()/f/image/77OXaEdzHQCcQBCuuhH2tmdD.png?f=user_large)
Je kan vervolgens op elke willekeurige plek in NR die waarde opvragen en er wat mee doen, bijv. in een switch node.
Ja klopt, via de context tab zie ik wel de juiste waarde.DeadMetal schreef op donderdag 28 mei 2020 @ 08:19:
[...]
Dan gebruik je denk ik een debug node op de msg.payload? Mijn code pakt een andere waarde, (msg.)data.attributes.forecast[0].temperature en stopt die in global.maxtemperatuur variabele
Ga in het zijpaneel eens naar het context-tab en druk op het refresh-icoon bij 'global', dan zou je dit moeten zien:
[Afbeelding]
Je kan vervolgens op elke willekeurige plek in NR die waarde opvragen en er wat mee doen, bijv. in een switch node.
Bedankt weer wat geleerd.
edit:
en ik neem aan dan zo in mijn script verwerken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| const states = global.get('homeassistant').homeAssistant.states; const rain = states["sensor.buienalarm_precipitation"].state; const temp = states["sensor.br_temperature_2"].state; const wind = states["sensor.br_wind_speed_2"].state; const maxtemp = global.maxtemperatuur; if ((rain > 0.1) || (temp >= 24) || (wind >= 40) || (maxtemp >= 26)) { msg.payload = "close"; } else { msg.payload = "open"; } return msg; |
[ Voor 23% gewijzigd door TheMystery op 28-05-2020 08:35 ]
Het werkt! Had er al eerder naar zitten kijken maar vroeg me af hoe je hem kon resetten, maar de sensor in mijn flow kan ook uitsturen bij false (dicht). Even verbinden en een reset:true in de payload mee sturen en je bent klaardenuz schreef op woensdag 27 mei 2020 @ 21:34:
[...]
Je kunt hiervoor een trigger node gebruiken. De trigger node kun je laten cancelen als het raam weer dicht gaat. Laat maar weten als je voorbeeld nodig hebt, dan deel ik wel wat.
Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!
De trigger kan resetten o.b.v. iedere payload. Als de sensor dus false uitstuurt bij dicht dan kun je bij de trigger onder; Reset the trigger if: msg.payload equals false invullen.Toppe schreef op donderdag 28 mei 2020 @ 17:04:
[...]
Het werkt! Had er al eerder naar zitten kijken maar vroeg me af hoe je hem kon resetten, maar de sensor in mijn flow kan ook uitsturen bij false (dicht). Even verbinden en een reset:true in de payload mee sturen en je bent klaar
Hmmm dat kan ook inderdaad. Nu heb ik gewoon de tweede output van de zelfde sensor gebruikt. Werkt ook zoals het moetdenuz schreef op donderdag 28 mei 2020 @ 17:18:
[...]
De trigger kan resetten o.b.v. iedere payload. Als de sensor dus false uitstuurt bij dicht dan kun je bij de trigger onder; Reset the trigger if: msg.payload equals false invullen.
Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!
Wat is eigenlijk je 'trigger' om deze functie uit te voeren? Ik bedacht me ineens: als dat bijv. elke 10 minuten is, dan wil je niet dat hij vlak na middernacht al omlaag gaat, puur omdat het de volgende dag een warme dag gaat worden.TheMystery schreef op donderdag 28 mei 2020 @ 08:29:
[...]
Ja klopt, via de context tab zie ik wel de juiste waarde.
Bedankt weer wat geleerd.
edit:
en ik neem aan dan zo in mijn script verwerken:
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 const states = global.get('homeassistant').homeAssistant.states; const rain = states["sensor.buienalarm_precipitation"].state; const temp = states["sensor.br_temperature_2"].state; const wind = states["sensor.br_wind_speed_2"].state; const maxtemp = global.maxtemperatuur; if ((rain > 0.1) || (temp >= 24) || (wind >= 40) || (maxtemp >= 26)) { msg.payload = "close"; } else { msg.payload = "open"; } return msg;
Da's dan weer het nadeel van functienodes, het geheel wordt weinig leesbaar. Misschien valt er wat met een traffic-light te doen, maar daar heb ik zelf geen ervaring mee.
Ik heb nu ingesteld dat doordeweeks de rolluiken om 9 omhoog gaan en om 18:30 omlaag, weekend 11 uur omhoog.DeadMetal schreef op zaterdag 30 mei 2020 @ 09:04:
[...]
Wat is eigenlijk je 'trigger' om deze functie uit te voeren? Ik bedacht me ineens: als dat bijv. elke 10 minuten is, dan wil je niet dat hij vlak na middernacht al omlaag gaat, puur omdat het de volgende dag een warme dag gaat worden.
Da's dan weer het nadeel van functienodes, het geheel wordt weinig leesbaar. Misschien valt er wat met een traffic-light te doen, maar daar heb ik zelf geen ervaring mee.
In de weerflow mogen de rolluiken alleen binnen dit window omhoog / omlaag gaan.
:strip_exif()/f/image/d4J2Uw26ima6H3gn44GogR8V.jpg?f=fotoalbum_large)
je zou eventueel nog wat van die timers en time filters kunnen vervangen met LS Filter zodat je 1 "agenda" hebt voor een hele week indelingTheMystery schreef op zaterdag 30 mei 2020 @ 09:23:
[...]
Ik heb nu ingesteld dat doordeweeks de rolluiken om 9 omhoog gaan en om 18:30 omlaag, weekend 11 uur omhoog.
In de weerflow mogen de rolluiken alleen binnen dit window omhoog / omlaag gaan.
[Afbeelding]
kun je voor meer dingen gebruiken dan alleen lampen
https://flows.nodered.org...d-contrib-light-scheduler
ikgebruik hem ook bv voor mijn motion detector dat deze alleen binnen bepaalde time windows reageerd maar in de winter maanden ook inde ochtend etc ipv alleen in de avond ...sky is the limit en ruimte de flow lekker op
een mening is zo sterk als de som van zijn argumenten
Ik zit weer eens te spelen met hassio en wil eigenlijk dat home assistant in kan schatten of ik thuis slaap. Dat gaat niet met telefoons of BT trackers ofzo, maar ik wil trilsensors (van Xiaomi) en PIRs (idem) gebruiken.
Mijn idee was om een variabele elke dag om 2300 te zetten. "ik_ben_thuis = False" .
Als ik dan 3x/5x/10x een PIR of tril-sensor activeer gooi ik die variable op True.
Dit heeft dan invloed over of mijn espresso 's ochtends aangaat, danwel de boiler, etc etc etc.
Ik doe de aanname dat als ik om 2300 thuis ben ik thuis slaap
.
Zijn hier standaard scenario's / handige dingen voor of is dit helemaal zelf bouwen? (dat laatste is prima, maar ik verbaas me soms over de kant en klaar dingen bij hassio)
Mijn idee was om een variabele elke dag om 2300 te zetten. "ik_ben_thuis = False" .
Als ik dan 3x/5x/10x een PIR of tril-sensor activeer gooi ik die variable op True.
Dit heeft dan invloed over of mijn espresso 's ochtends aangaat, danwel de boiler, etc etc etc.
Ik doe de aanname dat als ik om 2300 thuis ben ik thuis slaap
Zijn hier standaard scenario's / handige dingen voor of is dit helemaal zelf bouwen? (dat laatste is prima, maar ik verbaas me soms over de kant en klaar dingen bij hassio)
Alles is te maken.Boudewijn schreef op zaterdag 30 mei 2020 @ 22:06:
Zijn hier standaard scenario's / handige dingen voor of is dit helemaal zelf bouwen? (dat laatste is prima, maar ik verbaas me soms over de kant en klaar dingen bij hassio)
>Mijn idee was om een variabele elke dag om 2300 te zetten. "ik_ben_thuis = False" .
>Als ik dan 3x/5x/10x een PIR of tril-sensor activeer gooi ik die variable op True.
Of je leest de arp tabel van je router; if mac in tabel, dan thuis.
Ik heb zelf geen ervaring met HA (anders dan dat ik het waardeloos vond om bij elke verandering in je config de boel te moeten herstarten) en heb alles in node-red. Ik kan me voorstellen dat je niet de enige bent die "presence" wil weten en daar iets mee wil doen, lijkt me dat HA dat kan.
Ik heb een raar of grappig probleem met big-timer
Alle tijden die ik node-red zie zijn UTC tijden. Ik weet niet of ik hier wat aan kan doen, ik heb het niet kunnen vinden. Dus dit is mijn uitgangspunt.
Als ik in Big-Timer wil triggeren op een On-time en Off-time, dan moet ik of 2 uur verschil meerekenen of ik moet de "Man UTC" instelling op 2 zetten.
Als ik deze op 2 zet, maar vervolgens wil triggeren op Sunset, dan pakt hij de tijd van Sunset op mijn GPS locatie plus 2 uur.
Nu is dit wel weer te corrigeren maar mijn vraag is ik heel Node-Red gewoon op UTC+2 kan laten werken.
Alle tijden die ik node-red zie zijn UTC tijden. Ik weet niet of ik hier wat aan kan doen, ik heb het niet kunnen vinden. Dus dit is mijn uitgangspunt.
Als ik in Big-Timer wil triggeren op een On-time en Off-time, dan moet ik of 2 uur verschil meerekenen of ik moet de "Man UTC" instelling op 2 zetten.
Als ik deze op 2 zet, maar vervolgens wil triggeren op Sunset, dan pakt hij de tijd van Sunset op mijn GPS locatie plus 2 uur.
Nu is dit wel weer te corrigeren maar mijn vraag is ik heel Node-Red gewoon op UTC+2 kan laten werken.
Ik heb idd docker en had het in mijn docker-compose file staan. Maar blijkbaar verkeerdThinkPadd schreef op maandag 1 juni 2020 @ 19:33:
@Mich Waar draait je Node-RED? Ik heb hetzelfde gehad, bij mij bleek dat ik de parameter TZ=Europe/Amsterdam vergeten mee was te geven aan de Docker container waar Node-RED bij mij in draait.
Fout:
code:
1
2
| environment: - TZ='Europe/Amsterdam' |
Goed:
code:
1
2
| environment: - TZ=Europe/Amsterdam |
Al mijn dockers maar even aanpassen
[ Voor 3% gewijzigd door Mich op 01-06-2020 20:13 ]
/f/image/IE5D5wzz6PFlodBttyAAjX8B.png?f=fotoalbum_large)
Mijn eerste "serieuze" automatisering van Home Assistant overgezet naar Node-Red: lampen in de woonkamer in of uitschakelen.
Ik weet het aantal Lux in de kamer. Als deze waarde lager is dan 60 lux gaan de lampen aan. Gebeurt dit overdag (winter + bewolkt) maar komt later de zon en stijgt de lichtsterkte naar boven de 100 gaan de lampen weer uit. Om te voorkomen dat hij aan-uit-aan-uit gaat heb ik een filter er tussen zitten die een gemiddelde maakt van de laatste 3 gemeten waarden.
Tevens schakelt hij op tijd. Op het moment dat er nog beweging is of de TV staat nog aan wordt er een uur bij de tijd opgeteld.
De lampen, beweging en licht meting komen via Zwave2MQTT. Ik twijfel nog of ik ze niet rechtstreeks via MQTT inlees en aanstuur. Dan gaat het over minder schijven heen.
(edit, ik heb nog work in progress. De eindtijd verlengen moet eigenlijk eenmalig gebeuren net voor de big-timer afloopt, anders gaat hij begin de avond gelijk een uur er bij optellen
[ Voor 7% gewijzigd door Mich op 02-06-2020 19:52 ]
Je kunt het nog "gelikter" maken dmv een range node zodat je lampen feller/zachter gaan tussen de 60 en 100 (brightness 0-max), dus hoe donkerder het worder hoe feller de lampen (mits je lampen dat ondersteunen uiteraard)Mich schreef op dinsdag 2 juni 2020 @ 19:50:
Als deze waarde lager is dan 60 lux gaan de lampen aan. Gebeurt dit overdag (winter + bewolkt) maar komt later de zon en stijgt de lichtsterkte naar boven de 100 gaan de lampen weer uit. Om te voorkomen dat hij aan-uit-aan-uit gaat heb ik een filter er tussen zitten die een gemiddelde maakt van de laatste 3 gemeten waarden.
[ Voor 3% gewijzigd door z1rconium op 03-06-2020 07:28 ]
Met welk device meet je de lux?Mich schreef op dinsdag 2 juni 2020 @ 19:50:
[Afbeelding]
Mijn eerste "serieuze" automatisering van Home Assistant overgezet naar Node-Red: lampen in de woonkamer in of uitschakelen.
Ik weet het aantal Lux in de kamer. Als deze waarde lager is dan 60 lux gaan de lampen aan. Gebeurt dit overdag (winter + bewolkt) maar komt later de zon en stijgt de lichtsterkte naar boven de 100 gaan de lampen weer uit. Om te voorkomen dat hij aan-uit-aan-uit gaat heb ik een filter er tussen zitten die een gemiddelde maakt van de laatste 3 gemeten waarden.
Tevens schakelt hij op tijd. Op het moment dat er nog beweging is of de TV staat nog aan wordt er een uur bij de tijd opgeteld.
De lampen, beweging en licht meting komen via Zwave2MQTT. Ik twijfel nog of ik ze niet rechtstreeks via MQTT inlees en aanstuur. Dan gaat het over minder schijven heen.
(edit, ik heb nog work in progress. De eindtijd verlengen moet eigenlijk eenmalig gebeuren net voor de big-timer afloopt, anders gaat hij begin de avond gelijk een uur er bij optellen)
Ik ben opzoek naar een betrouwbare zigbee sensor die lux meet onafhankelijk van beweging.
Ik heb goede ervaring met de xiaomi mijia smart home light sensor, icm deconz:CAD-tekenaar schreef op woensdag 3 juni 2020 @ 09:10:
Met welk device meet je de lux?
Ik ben opzoek naar een betrouwbare zigbee sensor die lux meet onafhankelijk van beweging.
:strip_exif()/f/image/Lc09N64VAUei97Kr1p9bmG3t.png?f=user_large)
Dank voor de tip! Deze wil ik ook gebruiken voor tuin- en kamerverlichting! Nu mijn Node-Red flow aanpassen voor deze sensor, want mijn huidige flow i.c.m. sensor.daylight (van deCONZ) werkt niet.Kaspers schreef op woensdag 3 juni 2020 @ 11:18:
[...]
Ik heb goede ervaring met de xiaomi mijia smart home light sensor, icm deconz:
[Afbeelding]
Hoi, ben ook aan het experimenten met Node-Red (koppeling met nora en Domoticz). Ik gebruik het voornamelijk om mijn Milight-lampen (mix van RGB en RGBWW) aan te sturen.
Ik loop tegen 2 dingen aan, die ik echt niet voor elkaar krijg :
- Aanleveren van kamertemperatuur (svalue1) vanuit Domoticz (krijgt ie weer van een gehackte toon) naar Google Home (via Nora). Ik krijg de inhoud van MQTT netjes binnen, maar de Thermostaat node (nora) pakt dit niet op. Ik moet dit op één of andere manier vertalen. Ik vermoed dat ik iets mis qua Function Node.
- Aansturen van RGBWW Milight ampen in Domoticz. RGB lukt prima, aan en uitzetten (+ brightness) ook, maar ik krijg de RGBWW functie niet aan de praat. Wederom zal mijn Function Node niet kloppen.
Dit is mijn flow (id's etc eruit).
Ik loop tegen 2 dingen aan, die ik echt niet voor elkaar krijg :
- Aanleveren van kamertemperatuur (svalue1) vanuit Domoticz (krijgt ie weer van een gehackte toon) naar Google Home (via Nora). Ik krijg de inhoud van MQTT netjes binnen, maar de Thermostaat node (nora) pakt dit niet op. Ik moet dit op één of andere manier vertalen. Ik vermoed dat ik iets mis qua Function Node.
- Aansturen van RGBWW Milight ampen in Domoticz. RGB lukt prima, aan en uitzetten (+ brightness) ook, maar ik krijg de RGBWW functie niet aan de praat. Wederom zal mijn Function Node niet kloppen.
Dit is mijn flow (id's etc eruit).
Dit is wat MQTT aanlevert op de domoticz/out node voor de Thermostaat :[{"id":"aa1afef9.7784b","type":"tab","label":"Inactive","disabled":false,"info":""},{"id":"20477061.33175","type":"mqtt in","z":"aa1afef9.7784b","name":"","topic":"domoticz/out","qos":"2","datatype":"auto","broker":"","x":150,"y":240,"wires":[["fdd9aaef.0ae8f8","b605a4f4.fb0038"]]},{"id":"fdd9aaef.0ae8f8","type":"json","z":"aa1afef9.7784b","name":"","property":"payload","action":"","pretty":false,"x":330,"y":240,"wires":[["baf1d0cf.23d79"]]},{"id":"baf1d0cf.23d79","type":"switch","z":"aa1afef9.7784b","name":"","property":"payload.switchType","propertyType":"msg","rules":[{"t":"cont","v":"On/Off","vt":"str"},{"t":"eq","v":"Dimmer","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":470,"y":240,"wires":[[],["1e2300b2.f88f4f"]]},{"id":"1e2300b2.f88f4f","type":"function","z":"aa1afef9.7784b","name":"Function Dimmer","func":"msg.topic = msg.payload.idx\nvar brightness = msg.payload.svalue1\nif (msg.payload.nvalue === 1)\n{\n msg.payload = 100\n}\nelse if (msg.payload.nvalue === 0)\n{\n msg.payload = 0\n}\nelse if (msg.payload.nvalue === 2)\n{\n msg.payload = brightness\n}\n return msg;\n\n","outputs":1,"noerr":0,"x":650,"y":240,"wires":[["2ab9db1d.abf834"]]},{"id":"2ab9db1d.abf834","type":"switch","z":"aa1afef9.7784b","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"17","vt":"str"},{"t":"eq","v":"18","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":850,"y":240,"wires":[[],["cc136cdd.e5aed"]]},{"id":"43c300ef.6fbf","type":"function","z":"aa1afef9.7784b","name":"Function out Dimmer","func":"var idx = parseInt(msg.topic)\nvar brightness = msg.payload\nif ( msg.payload === 0 )\n{\nmsg.payload = { \"command\": \"switchlight\", \"idx\": idx, \"switchcmd\": \"Off\" };\nreturn [msg, null]\n}\nelse\n{\nmsg.payload = { \"command\": \"switchlight\", \"idx\": idx, \"switchcmd\": \"Set Level\", \"level\": brightness };\nreturn [null, msg]\n}\n\n\n","outputs":2,"noerr":0,"x":1500,"y":240,"wires":[["309e00b4.9941d"],["309e00b4.9941d"]]},{"id":"309e00b4.9941d","type":"json","z":"aa1afef9.7784b","name":"","property":"payload","action":"","pretty":false,"x":1690,"y":240,"wires":[["6d3f863a.8cfec8"]]},{"id":"6d3f863a.8cfec8","type":"mqtt out","z":"aa1afef9.7784b","name":"","topic":"domoticz/in","qos":"","retain":"","broker":"","x":1910,"y":240,"wires":[]},{"id":"cc136cdd.e5aed","type":"nora-light","z":"aa1afef9.7784b","devicename":"Schemerlampen","lightcolor":true,"brightnesscontrol":true,"turnonwhenbrightnesschanges":true,"passthru":false,"statepayload":false,"brightnessoverride":"100","roomhint":"Woonkamer","name":"Schemerlampen","nora":"","topic":"17","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1140,"y":240,"wires":[["43c300ef.6fbf"]]},{"id":"6bb7f995.cacfa8","type":"nora-light","z":"aa1afef9.7784b","devicename":"Stalampen","lightcolor":true,"brightnesscontrol":true,"turnonwhenbrightnesschanges":true,"passthru":false,"statepayload":false,"brightnessoverride":"100","roomhint":"Woonkamer","name":"Stalampen","nora":"","topic":"18","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1150,"y":300,"wires":[["43c300ef.6fbf"]]},{"id":"61fbb44.70dbc4c","type":"nora-thermostat","z":"aa1afef9.7784b","devicename":"Thermostaat","roomhint":"Woonkamer","name":"Thermostaat","modes":"off,heat,heatcool,on,auto","unit":"C","topic":"46","passthru":false,"commandOnly":false,"queryOnly":false,"bufferRangeCelsius":"","nora":"","x":1150,"y":420,"wires":[["ac7e7d83.ff948"]]},{"id":"ac7e7d83.ff948","type":"function","z":"aa1afef9.7784b","name":"Function Thermostaat","func":"var idx = parseInt(msg.topic)\n{\nmsg.payload = { \"idx\": idx, \"svalue\": (msg.payload.setpoint.toString())};\nreturn msg\n}","outputs":1,"noerr":0,"x":1500,"y":420,"wires":[["dfd91eeb.91414"]]},{"id":"dfd91eeb.91414","type":"json","z":"aa1afef9.7784b","name":"","property":"payload","action":"","pretty":false,"x":1690,"y":420,"wires":[["6d3f863a.8cfec8"]]},{"id":"13845ec1.328431","type":"debug","z":"aa1afef9.7784b","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1130,"y":540,"wires":[]},{"id":"b605a4f4.fb0038","type":"json","z":"aa1afef9.7784b","name":"","property":"payload","action":"","pretty":false,"x":330,"y":420,"wires":[["eec0ac96.9347e"]]},{"id":"eec0ac96.9347e","type":"switch","z":"aa1afef9.7784b","name":"","property":"payload.idx","propertyType":"msg","rules":[{"t":"eq","v":"45","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":490,"y":420,"wires":[["b368f9d7.a852d8"]]},{"id":"b368f9d7.a852d8","type":"change","z":"aa1afef9.7784b","name":"","rules":[{"t":"set","p":"svalue1","pt":"msg","to":"temperature","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":720,"y":420,"wires":[["13845ec1.328431"]]}]
Kan iemand me op weg helpen? Ik ben geen programmeerwonder.domoticz/out {
"Battery" : 255,
"RSSI" : 12,
"description" : "",
"dtype" : "Temp",
"hwid" : "7",
"id" : "82045",
"idx" : 45,
"name" : "ToonTemperature",
"nvalue" : 0,
"stype" : "LaCrosse TX3",
"svalue1" : "22.84",
"unit" : 1
}
[ Voor 3% gewijzigd door EquiNox op 03-06-2020 13:49 ]
@CAD-tekenaar @Kaspers Ik gebruik de Aqara motion sensor, die meet naast beweging ook lichtsterkte: pricewatch: Aqara Motion Sensor
Klopt het dat deze alleen lux meet bij beweging?Heronimo schreef op woensdag 3 juni 2020 @ 16:18:
@CAD-tekenaar @Kaspers Ik gebruik de Aqara motion sensor, die meet naast beweging ook lichtsterkte: pricewatch: Aqara Motion Sensor
Bij beweging of na 50 tot 60 minuten. Althans als je zigbee2mqtt gebruikt, ik weet niet hoe dat bij andere software gaat. Zie ook:CAD-tekenaar schreef op woensdag 3 juni 2020 @ 16:42:
[...]
Klopt het dat deze alleen lux meet bij beweging?
https://github.com/Koenkk/zigbee2mqtt/issues/827
Gevonden in een ander forum:Heronimo schreef op woensdag 3 juni 2020 @ 16:45:
[...]
Bij beweging of na 50 tot 60 minuten. Althans als je zigbee2mqtt gebruikt, ik weet niet hoe dat bij andere software gaat. Zie ook:
https://github.com/Koenkk/zigbee2mqtt/issues/827
https://gathering.tweaker...message/61853408#61853408
De Smart ligth sensor zou het beter doen!
Ligt dus een beetje aan je toepassing. Ik gebruik ze primair voor beweging. En de licht niveaus zijn goed genoeg om de verlichting mee te schakelen omdat hij dus regelmatig update als er iemand in de kamer aanwezig is.CAD-tekenaar schreef op woensdag 3 juni 2020 @ 16:46:
[...]
Gevonden in een ander forum:
https://gathering.tweaker...message/61853408#61853408
De Smart ligth sensor zou het beter doen!
Ik gebruik de Hue motion sensor. Die meet ook lux, onafhankelijk van beweging
Die van mij is van fibaro maar het is met zwave communicatie. Hij meet onafhankelijk van beweging en grote schommelingen zoals een Wolk voor de zon of bedekken met je hand stuurt hij direct door.CAD-tekenaar schreef op woensdag 3 juni 2020 @ 09:10:
[...]
Met welk device meet je de lux?
Ik ben opzoek naar een betrouwbare zigbee sensor die lux meet onafhankelijk van beweging.
Een motion sensor voor 35 euro? Da's me iets te prijzig.lolgast schreef op woensdag 3 juni 2020 @ 17:07:
Ik gebruik de Hue motion sensor. Die meet ook lux, onafhankelijk van beweging
Wie heeft er ervaring met de grafiek node(s) .. best een irritant stukje software ..
ik zou de x en y as om willen draaien maar dat vind de software niet "grappig"
ik zou de x en y as om willen draaien maar dat vind de software niet "grappig"
[ Voor 32% gewijzigd door vso op 03-06-2020 21:21 ]
Tja vanalles
Hij werkt wel goedCAD-tekenaar schreef op woensdag 3 juni 2020 @ 21:15:
[...]
Een motion sensor voor 35 euro? Da's me iets te prijzig.
Zonder gekkigheid, ik ben wel echt heel tevreden over die sensor. Hij rapporteert lux bij wijzigingen, niet eens in de zoveel tijd. Beweging is ook snel te detecteren en vanuit de Hue app kun je de gevoeligheid instellen
Irritant ja en nee, hij verwacht een specifiek formaat en dat is niet voor iedereen even simpel.vso schreef op woensdag 3 juni 2020 @ 21:21:
Wie heeft er ervaring met de grafiek node(s) .. best een irritant stukje software ..
ik zou de x en y as om willen draaien maar dat vind de software niet "grappig"
De 'x' accepteert alleen een timestamp (ISO8601 of epoch), geen andere waarden.
En ook al heb je geen labels of series, je moet ze meesturen met een lege array anders werkt het niet.
Zie documentatie. Als je x/y wilt omdraaien dan kun je dat met "non-timeseries data" doen.
Eens, ik heb het er ook aan uitgegeven, lux rapporteert ie 1x per 5 minuten, en batterij gaat meer dan een jaar mee, werkt goed.lolgast schreef op donderdag 4 juni 2020 @ 08:09:
[...]
Hij werkt wel goed
Zonder gekkigheid, ik ben wel echt heel tevreden over die sensor. Hij rapporteert lux bij wijzigingen, niet eens in de zoveel tijd. Beweging is ook snel te detecteren en vanuit de Hue app kun je de gevoeligheid instellen
[ Voor 30% gewijzigd door z1rconium op 04-06-2020 09:09 ]
ik had de documentatie gezien moest alleen ff de frustatie uiten ..z1rconium schreef op donderdag 4 juni 2020 @ 09:00:
[...]
Irritant ja en nee, hij verwacht een specifiek formaat en dat is niet voor iedereen even simpel.
De 'x' accepteert alleen een timestamp (ISO8601 of epoch), geen andere waarden.
En ook al heb je geen labels of series, je moet ze meesturen met een lege array anders werkt het niet.
Zie documentatie. Als je x/y wilt omdraaien dan kun je dat met "non-timeseries data" doen.
Ik ben nu de RRD data uit een Eneco Toon aan het trekken .. en in een grafiek aan het stoppen, hoewel het werkt is het resultaat niet echt om over naar huis te schrijven, maar dit ligt aan de Toon niet aan NR
Tja vanalles
Hier alvast wat info over de aankomende NR versie:
https://discourse.nodered...1-0-beta-1-released/27761
https://discourse.nodered...1-0-beta-1-released/27761
Ik loop nu al een aantal keer aan tegen onderstaand probleem en ik vind weet voorlopig geen raad.
Ik wil een notificatie ontvangen wanneer iemand zich langer dan 2 minuten in een 'zone' (Home Assistant) bevindt.
Daarvoor heb ik volgende flow opgezet:
/f/image/HT106FtaHCeIPvU9buv7d0nc.png?f=fotoalbum_large)
Ik trigger deze flow bij een statusverandering (lees zoneverandering). Ik stockeer deze waarde in een flow variabele. Nadien wacht ik 2 minuten en vraag ik de huidige status op. Deze stockeer ik nadien een nieuwe variabele om nadien via een functie node beide tegen elkaar af te wegen. Indien gelijk wordt een notificatie verzonden. Tot hier gaat het conceptueel goed
Alleen zie je op bovenstaande flow dat de persoon na 2 minuten in een nieuwe zone zit terwijl dit niet het geval is als ik de history controleer:
:fill(white):strip_exif()/f/image/1iR79MFE2BcPBcHRpzGFByZK.png?f=user_large)
Hier zie je duidelijk dat de status veranderde om 17:18 en nadien niet meer. Toch geeft de huidige zonestatus nog altijd een 'oudere' waarde aan. Lopen jullie ook wel eens tegen dit probleem aan? Zoja, bestaat hiervoor een oplossing?
Ik wil een notificatie ontvangen wanneer iemand zich langer dan 2 minuten in een 'zone' (Home Assistant) bevindt.
Daarvoor heb ik volgende flow opgezet:
/f/image/HT106FtaHCeIPvU9buv7d0nc.png?f=fotoalbum_large)
Ik trigger deze flow bij een statusverandering (lees zoneverandering). Ik stockeer deze waarde in een flow variabele. Nadien wacht ik 2 minuten en vraag ik de huidige status op. Deze stockeer ik nadien een nieuwe variabele om nadien via een functie node beide tegen elkaar af te wegen. Indien gelijk wordt een notificatie verzonden. Tot hier gaat het conceptueel goed
Alleen zie je op bovenstaande flow dat de persoon na 2 minuten in een nieuwe zone zit terwijl dit niet het geval is als ik de history controleer:
:fill(white):strip_exif()/f/image/1iR79MFE2BcPBcHRpzGFByZK.png?f=user_large)
Hier zie je duidelijk dat de status veranderde om 17:18 en nadien niet meer. Toch geeft de huidige zonestatus nog altijd een 'oudere' waarde aan. Lopen jullie ook wel eens tegen dit probleem aan? Zoja, bestaat hiervoor een oplossing?
Probeer een trigger node (trigger & block) .. dan kan je op een bepaalde voorwaarde het originele bericht doorsturenroynolf schreef op donderdag 4 juni 2020 @ 17:38:
Ik loop nu al een aantal keer aan tegen onderstaand probleem en ik vind weet voorlopig geen raad.
Ik wil een notificatie ontvangen wanneer iemand zich langer dan 2 minuten in een 'zone' (Home Assistant) bevindt.
Daarvoor heb ik volgende flow opgezet:
[Afbeelding]
Ik trigger deze flow bij een statusverandering (lees zoneverandering). Ik stockeer deze waarde in een flow variabele. Nadien wacht ik 2 minuten en vraag ik de huidige status op. Deze stockeer ik nadien een nieuwe variabele om nadien via een functie node beide tegen elkaar af te wegen. Indien gelijk wordt een notificatie verzonden. Tot hier gaat het conceptueel goed![]()
Alleen zie je op bovenstaande flow dat de persoon na 2 minuten in een nieuwe zone zit terwijl dit niet het geval is als ik de history controleer:
[Afbeelding]
Hier zie je duidelijk dat de status veranderde om 17:18 en nadien niet meer. Toch geeft de huidige zonestatus nog altijd een 'oudere' waarde aan. Lopen jullie ook wel eens tegen dit probleem aan? Zoja, bestaat hiervoor een oplossing?
bouw anders een test flow waarbij je de waardes zelf injecteert .. iets verandert wellicht in de flow. ? gokje
Tja vanalles
Zeker niet gebruiken voor je huidige productie flowsDeadMetal schreef op donderdag 4 juni 2020 @ 14:27:
Hier alvast wat info over de aankomende NR versie:
https://discourse.nodered...1-0-beta-1-released/27761
Voor de mensen die nodered gebruiken icm home-assistant (node-red-contrib-home-assistant-websocket):
Ik heb een generieke subflow gemaakt waarmee je kunt controleren of een entity_id in een afgelopen periode geactiveerd is geweest (dit mogen ook groepen van entities zijn):
:fill(white):strip_exif()/f/image/P2Om0GCZh3dQ7IKJAjq6xblB.png?f=user_large)
Ik gebruik het in mijn flows veelvuldig om te controleren of ergens beweging is geweest in de afgelopen periode.
De parameters zijn:
:fill(white):strip_exif()/f/image/0aGI9fDSZ4cQdkSWblFWeAKu.png?f=user_large)
de 'relativetime' is op te geven als in seconden/minuten/uren/dagen etc.
Na activatie wordt in de node-status weergegeven wat de uitkomst is:
/f/image/iuyZoucb6W5v1mMko2sI1rvC.png?f=fotoalbum_large)
De subflow ziet er als volgt uit:
/f/image/cvJUznK3zLeXtn2w52xerbFT.png?f=fotoalbum_large)
source:
Na importeren komt de subflow beschikbaar in je palette:
:fill(white):strip_exif()/f/image/DXTUkWUhWq9kgBVkokEZvEX0.png?f=user_large)
Ontzettend handig bijvoorbeeld bij het automatisch uitschakelen van verlichting, wanneer er geen beweging heeft plaatsgevonden in het afgelopen half uur:
/f/image/93J4F8qYSfhBnWcbJTpobu5K.png?f=fotoalbum_large)
En wanneer er wel beweging heeft plaatsgevonden -> delay 30 minuten -> probeer 't opnieuw.
Of:
/f/image/jcbU7ieXLknw92HvsjAbBoy1.png?f=fotoalbum_large)
Wanneer er in de afgelopen 4 uur geen beweging is geconstateerd in de woonkamer, geef bij binnenkomst in de keuken via TextToSpeech (Alexa) een gesproken notificatie welke afvalcontainers vandaag bij de weg gezet moeten worden (dus dit gebeurt meestal 's ochtends wanneer je opstaat en de keuken inloopt).
Ik heb een generieke subflow gemaakt waarmee je kunt controleren of een entity_id in een afgelopen periode geactiveerd is geweest (dit mogen ook groepen van entities zijn):
:fill(white):strip_exif()/f/image/P2Om0GCZh3dQ7IKJAjq6xblB.png?f=user_large)
Ik gebruik het in mijn flows veelvuldig om te controleren of ergens beweging is geweest in de afgelopen periode.
De parameters zijn:
:fill(white):strip_exif()/f/image/0aGI9fDSZ4cQdkSWblFWeAKu.png?f=user_large)
de 'relativetime' is op te geven als in seconden/minuten/uren/dagen etc.
Na activatie wordt in de node-status weergegeven wat de uitkomst is:
/f/image/iuyZoucb6W5v1mMko2sI1rvC.png?f=fotoalbum_large)
De subflow ziet er als volgt uit:
/f/image/cvJUznK3zLeXtn2w52xerbFT.png?f=fotoalbum_large)
source:
code:
1
| [{"id":"60676910.580098","type":"subflow","name":"Presence in relativetime","info":"","category":"motion","in":[{"x":80,"y":180,"wires":[{"id":"29525032.f74a38"}]}],"out":[{"x":1220,"y":160,"wires":[{"id":"7d32cad1.bc7eb4","port":0}]},{"x":1220,"y":220,"wires":[{"id":"7d32cad1.bc7eb4","port":1}]}],"env":[{"name":"relativetime","type":"str","value":"60 minutes"},{"name":"entity_id","type":"str","value":""}],"color":"#D8BFD8","outputLabels":["Yes","No"],"status":{"x":1620,"y":180,"wires":[{"id":"65c7a45f.e02fcc","port":0},{"id":"dd35b249.ca2678","port":0}]}},{"id":"a8b703aa.8ed528","type":"api-get-history","z":"60676910.580098","name":"get motion history of entity with relativetime","server":"3467b66e.566902","startdate":"","enddate":"","entityid":"{{ entity_id }}","entityidtype":"is","useRelativeTime":true,"relativeTime":"{{ relativetime }}","flatten":false,"output_type":"array","output_location_type":"msg","output_location":"data","x":480,"y":180,"wires":[["944cc8a7.2ab958"]]},{"id":"944cc8a7.2ab958","type":"change","z":"60676910.580098","name":"Get most recent datetime when state = on","rules":[{"t":"set","p":"state_on_datetime","pt":"msg","to":"data[0][state='on'][-1].last_updated","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":850,"y":180,"wires":[["7d32cad1.bc7eb4"]]},{"id":"7d32cad1.bc7eb4","type":"switch","z":"60676910.580098","name":"motion?","property":"state_on_datetime","propertyType":"msg","rules":[{"t":"nnull"},{"t":"null"}],"checkall":"true","repair":false,"outputs":2,"x":1100,"y":180,"wires":[["fc1d3f58.2280f8"],["b291a48a.085488"]]},{"id":"29525032.f74a38","type":"change","z":"60676910.580098","name":"set input vars","rules":[{"t":"delete","p":"payload","pt":"msg"},{"t":"set","p":"relativetime","pt":"msg","to":"relativetime","tot":"env"},{"t":"set","p":"entity_id","pt":"msg","to":"entity_id","tot":"env"}],"action":"","property":"","from":"","to":"","reg":false,"x":200,"y":180,"wires":[["a8b703aa.8ed528"]]},{"id":"65c7a45f.e02fcc","type":"template","z":"60676910.580098","name":"set status payload","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Yes, {{ diff }} minutes ago.","output":"str","x":1490,"y":160,"wires":[[]]},{"id":"76434c25.ba383c","type":"api-get-history","z":"60676910.580098","name":"get motion history of entity without relativetime","server":"3467b66e.566902","startdate":"","enddate":"","entityid":"{{ entity_id }}","entityidtype":"is","useRelativeTime":false,"relativeTime":"","flatten":false,"output_type":"array","output_location_type":"msg","output_location":"data","x":590,"y":240,"wires":[["38366ea2.ef0152"]]},{"id":"38366ea2.ef0152","type":"change","z":"60676910.580098","name":"Get most recent datetime when state = on","rules":[{"t":"set","p":"state_on_datetime","pt":"msg","to":"data[0][state='on'][-1].last_updated","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":990,"y":240,"wires":[["b2119c46.df255"]]},{"id":"dd35b249.ca2678","type":"template","z":"60676910.580098","name":"set status payload","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"No, last presence was {{ diff }} minutes ago.","output":"str","x":1490,"y":200,"wires":[[]]},{"id":"b291a48a.085488","type":"change","z":"60676910.580098","name":"delete relativetime parameters","rules":[{"t":"delete","p":"relativetime","pt":"msg"},{"t":"delete","p":"startdate","pt":"msg"},{"t":"delete","p":"enddate","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":250,"y":240,"wires":[["76434c25.ba383c"]]},{"id":"fc1d3f58.2280f8","type":"function","z":"60676910.580098","name":"calculate diff","func":"// format strin to date\nmsg.state_on_datetime = Date.parse(msg.state_on_datetime);\nvar currentDate = new Date();\n\nvar timeDiff = Math.abs(msg.state_on_datetime - currentDate);\ntimeDiff = timeDiff / 1000 / 60; //from miliseconds, to seconds, to minutes\nmsg.diff = Number(timeDiff.toFixed(0)); //afronden naar hele minuten\n\nreturn msg;","outputs":1,"noerr":0,"x":1290,"y":100,"wires":[["65c7a45f.e02fcc"]]},{"id":"b2119c46.df255","type":"function","z":"60676910.580098","name":"calculate diff","func":"// format strin to date\nmsg.state_on_datetime = Date.parse(msg.state_on_datetime);\nvar currentDate = new Date();\n\nvar timeDiff = Math.abs(msg.state_on_datetime - currentDate);\ntimeDiff = timeDiff / 1000 / 60; //from miliseconds, to seconds, to minutes\nmsg.diff = Number(timeDiff.toFixed(0)); //afronden naar hele minuten\n\nreturn msg;","outputs":1,"noerr":0,"x":1270,"y":260,"wires":[["dd35b249.ca2678"]]},{"id":"3467b66e.566902","type":"server","z":"","name":"Home Assistant","legacy":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true}] |
Na importeren komt de subflow beschikbaar in je palette:
:fill(white):strip_exif()/f/image/DXTUkWUhWq9kgBVkokEZvEX0.png?f=user_large)
Ontzettend handig bijvoorbeeld bij het automatisch uitschakelen van verlichting, wanneer er geen beweging heeft plaatsgevonden in het afgelopen half uur:
/f/image/93J4F8qYSfhBnWcbJTpobu5K.png?f=fotoalbum_large)
En wanneer er wel beweging heeft plaatsgevonden -> delay 30 minuten -> probeer 't opnieuw.
Of:
/f/image/jcbU7ieXLknw92HvsjAbBoy1.png?f=fotoalbum_large)
Wanneer er in de afgelopen 4 uur geen beweging is geconstateerd in de woonkamer, geef bij binnenkomst in de keuken via TextToSpeech (Alexa) een gesproken notificatie welke afvalcontainers vandaag bij de weg gezet moeten worden (dus dit gebeurt meestal 's ochtends wanneer je opstaat en de keuken inloopt).
[ Voor 8% gewijzigd door Kaspers op 05-06-2020 10:47 ]
Ondertussen lekker aan de hobby met Node-Red en het werkt erg prettig moet ik toegeven.
Dit is mijn flow die ik gebruik om de verlichting van de trap te schakelen aan de hand van de hoeveelheid lux. Ook dit werkt lekker. Echter wil ik ook het licht kunnen aanzetten en dan gewoon de trap op en aflopen zonder dat hij aangaat. Dit lukt me (nog) niet.
Bij "Status verlichting" zou ik iets van een true/false resultaat willen 'opslaan' en dan bij "Schakel trap uit" eerst willen kijken of dit true is. Zo ja, dan niet uitschakelen.
/f/image/G1UHVnoBKbfLG2Hy6VQGYJcw.png?f=fotoalbum_large)
Het plaatsen van de "Status verlichting" voor het uitschakelen is natuurlijk geen optie omdat het licht altijd aanstaat op dat moment
Iemand nog tips?
Dit is mijn flow die ik gebruik om de verlichting van de trap te schakelen aan de hand van de hoeveelheid lux. Ook dit werkt lekker. Echter wil ik ook het licht kunnen aanzetten en dan gewoon de trap op en aflopen zonder dat hij aangaat. Dit lukt me (nog) niet.
Bij "Status verlichting" zou ik iets van een true/false resultaat willen 'opslaan' en dan bij "Schakel trap uit" eerst willen kijken of dit true is. Zo ja, dan niet uitschakelen.
/f/image/G1UHVnoBKbfLG2Hy6VQGYJcw.png?f=fotoalbum_large)
Het plaatsen van de "Status verlichting" voor het uitschakelen is natuurlijk geen optie omdat het licht altijd aanstaat op dat moment
Iemand nog tips?
Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!
@Toppe
Ik gebruik;
:strip_exif()/f/image/n0tSXK0SGSgJsGqpzncyv1vJ.jpg?f=fotoalbum_large)
een true/false (helper) om input van de bewegingssensor door te geven. Indien deze op false staat, dan wordt er niets doorgegeven (geen on/off).
Indien deze op true staat dan natuurlijk wel.
In de switch zit enkel on/off.
Ik gebruik;
:strip_exif()/f/image/n0tSXK0SGSgJsGqpzncyv1vJ.jpg?f=fotoalbum_large)
een true/false (helper) om input van de bewegingssensor door te geven. Indien deze op false staat, dan wordt er niets doorgegeven (geen on/off).
Indien deze op true staat dan natuurlijk wel.
In de switch zit enkel on/off.
Gebruik je zwave? Want ik heb mijn Zwave Bewegingsmelder zo geprogrammeerd dat hij na 6 seconde weer uitschakelt. Soms staan we wat langer op de trap en dan schakelt hij niet uit via het off commando van de melder.denuz schreef op zaterdag 6 juni 2020 @ 16:12:
@Toppe
Ik gebruik;
[Afbeelding]
een true/false (helper) om input van de bewegingssensor door te geven. Indien deze op false staat, dan wordt er niets doorgegeven (geen on/off).
Indien deze op true staat dan natuurlijk wel.
In de switch zit enkel on/off.
Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!
Nope, enkel zigbee.Toppe schreef op zaterdag 6 juni 2020 @ 16:33:
[...]
Gebruik je zwave? Want ik heb mijn Zwave Bewegingsmelder zo geprogrammeerd dat hij na 6 seconde weer uitschakelt. Soms staan we wat langer op de trap en dan schakelt hij niet uit via het off commando van de melder.
Maar in je node schakelt de trapverlichting uit op basis van de bewegingssensor?
Klopt, ik zie nu ook wat jij bedoeld door het aanmaken van een helper in HA. Ik wil het alleen proberen op te lossen zonder gebruik te maken van een helper. Ergens ga ik er vanuit dat een schakeling zoals deze wel zou moeten kunnen... Alleen hoe?denuz schreef op zaterdag 6 juni 2020 @ 17:03:
[...]
Nope, enkel zigbee.
Maar in je node schakelt de trapverlichting uit op basis van de bewegingssensor?
Edit:
Ik ben er uit. Je kan data opslaan via een functie, ik doe dit bij beide statussen:
code:
1
| flow.set("lighton", 'true'); |
Vervolgens roep ik hem aan bij het uitschakelen:
code:
1
2
3
| var lightStatus = flow.get("lighton"); msg.payload = lightStatus return msg; |
En dan met een switch kijken of het true of false is. Misschien niet de mooiste manier, maar werkt wel.
/f/image/SDQR0puQ6CFtVXEiKl1sugvK.png?f=fotoalbum_large)
[ Voor 44% gewijzigd door Toppe op 06-06-2020 19:17 ]
Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!
Wat probeer je precies te doen? Dat als je handmatig de lamp aan hebt gezet, deze niet automatisch (na geen beweging) uitgaat?Toppe schreef op zaterdag 6 juni 2020 @ 14:33:
Ondertussen lekker aan de hobby met Node-Red en het werkt erg prettig moet ik toegeven.
Dit is mijn flow die ik gebruik om de verlichting van de trap te schakelen aan de hand van de hoeveelheid lux. Ook dit werkt lekker. Echter wil ik ook het licht kunnen aanzetten en dan gewoon de trap op en aflopen zonder dat hij aangaat. Dit lukt me (nog) niet.
Bij "Status verlichting" zou ik iets van een true/false resultaat willen 'opslaan' en dan bij "Schakel trap uit" eerst willen kijken of dit true is. Zo ja, dan niet uitschakelen.
[Afbeelding]
Het plaatsen van de "Status verlichting" voor het uitschakelen is natuurlijk geen optie omdat het licht altijd aanstaat op dat moment
Iemand nog tips?
Yes, maar ondertussen gelukt!pelt schreef op zaterdag 6 juni 2020 @ 19:38:
[...]
Wat probeer je precies te doen? Dat als je handmatig de lamp aan hebt gezet, deze niet automatisch (na geen beweging) uitgaat?
Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!
Ik vind het wel een mooie oplossing!Toppe schreef op zaterdag 6 juni 2020 @ 19:00:
Edit:
Ik ben er uit. Je kan data opslaan via een functie, ik doe dit bij beide statussen:
code:
1 flow.set("lighton", 'true');
Vervolgens roep ik hem aan bij het uitschakelen:
code:
1 2 3 var lightStatus = flow.get("lighton"); msg.payload = lightStatus return msg;
Mocht je het met een node willen oplossen, dan kun je de change node gebruiken:
/f/image/n5mubDZpCkvr5iHZoxVbqTqM.png?f=fotoalbum_large)
Morgen maar eens naar kijken, dit staat natuurlijk iets netterKaspers schreef op zaterdag 6 juni 2020 @ 20:37:
[...]
Ik vind het wel een mooie oplossing!
Mocht je het met een node willen oplossen, dan kun je de change node gebruiken:
[Afbeelding]
Zo, dit is ondertussen de flow die ik gebruik. Werkt erg prettig
/f/image/6GAL03HWFM3qiakgspy3JDvl.png?f=fotoalbum_large)
Edit:
Van "Lux naar helderheid" tot en met "Creeer template" nu in een subflow gestopt waardoor ik hem aanhouding kan hergebruiken
Ook maar meteen even een scriptje gemaakt die de airco aan zet als het verbruik de dag er voor minder is geweest dan 0.400kW. Nu nog alleen even kijken welke waarde nou exact past bij een dag 0 verbruik
/f/image/Fzj71ypLcne0lL5LtpMJ61jR.png?f=fotoalbum_large)
[ Voor 55% gewijzigd door Toppe op 07-06-2020 14:15 ]
Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!
Voor mijn badkamer afzuiging wil ik een flow maken die iedere 10 minuten een berekening maken die het gemiddelde van de luchtvochtigheid berekend.
Maar ik krijg het niet voor elkaar.
De berekening is als volgt iedere 10 minuten gemiddelde_lv= gemiddelde lv * .9 + luchtvochtigheid * 0.1
Dit is voor mij de perfecte manier.
Ik deed het in home assistant op deze manier
Maar nu krijg ik het dus niet voor elkaar. Ik moet ook zeggen dat ik geen code kan schrijven.
Ik heb nu het volgende.
Maar ik krijg het niet voor elkaar.
De berekening is als volgt iedere 10 minuten gemiddelde_lv= gemiddelde lv * .9 + luchtvochtigheid * 0.1
Dit is voor mij de perfecte manier.
Ik deed het in home assistant op deze manier
code:
1
| {{ (float(states.variable.gemiddelde.state) * 0.9 + float(states.sensor.thermometer_douche_2.state) * 0.1) | round(2) }}' |
Maar nu krijg ik het dus niet voor elkaar. Ik moet ook zeggen dat ik geen code kan schrijven.
Ik heb nu het volgende.
code:
1
| [{"id":"92f37412.e70bc8","type":"function","z":"e1c8b6b6.94701","name":"","func":"const entities = global.get('homeassistant').homeAssistant.states;\nconst humidity = entities[\"sensor.thermometer_douche_2\"].state;\n\n// msg.payload = Math.float(msg.payload) * 0.9 + Math.float(humidity) * 0.1) | round(2)\nmsg.payload = Math.round(2) msg.payload * 0.9 + humidity * 0.1\nreturn msg;","outputs":1,"noerr":4,"x":310,"y":260,"wires":[["697f40f.18f624"]]}] |
:fill(white):strip_exif()/f/image/xZjFd71HJpnYWq7ORWZi483C.png?f=user_large)
@Toppe dit hele stuk kun je door een enkele node vervangen: de range node. Bijkomend voordeel is dat je omzetting van lux naar helderheid dan compleet vloeiend gaat, in plaats van de 5 stappen die je nu hebt
@Jovink538 Ik begrijp je code niet helemaal, maar ik ben dan ook zelf een beginner qua javascript.
Even je code los hier, zodat niemand het eerst in NR hoeft te importeren:
code:
1
2
3
4
5
| const entities = global.get('homeassistant').homeAssistant.states; const humidity = entities["sensor.thermometer_douche_2"].state; msg.payload = Math.round(2) msg.payload * 0.9 + humidity * 0.1 return msg; |
Opmerkingen/vragen van mijn kant:
- Waarom gebruik je als type de const? Dit zijn waardes die steeds wijzigen, dus dan gebruik je gewoon var.
- entities["sensor.thermometer_douche_2"].state; weet je zeker dat je hiermee direct in javascript een waarde op kan halen uit HA
Volgens mij dien je die gewoon eerst op te halen met een HA-node en kun je de waarde vervolgens als flow.douche bewaren en gebruiken in je javascript.
- Je gaat rekenen met msg.payload (die doe je maal 0.9), maar bevat msg.payload wel een waarde waarmee je aan de slag wil gaan? Je hebt nu niet je hele flow gepost, dus dat kan ik niet controleren.
- Math.round(2) hiermee geef je aan dat het getal 2 moet worden afgerond naar een geheel getal. 2 dus
- Je berekening klopt niet omdat er tussen 2 en msg.payload gewoon een spatie staat en geen bewerking (plus, min, delen, vermenigvuldigen).
- Je berekening klopt verder niet, omdat je geen haakjes gebruikt. Als we even het getal twee vergeten staat er nu: de waarde van msg.payload maal 0,9. Bij de uitkomst van die berekening tellen we de waarde van humidity op. Uiteindelijk vermenigvuldigen we de uitkomst daarvan met 0,1. Dat is niet wat je wilt natuurlijk.
code:
1
| Math.round((msg.payload * 0.9) + (humidity * 0.1)); |
Dan wordt eerst msg.payload * 0.9 gedaan. Daarbij wordt de uitkomst van humidity * 0.1 opgeteld en het geheel wordt afgerond naar een geheel getal. Als jij er dan voor zorgt dat msg.payload en humidity de juiste waarde bevatten heb je wat je wilt.
[ Voor 71% gewijzigd door Gizz op 11-06-2020 09:58 ]
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Als beginnende node red gebruiker probeer ik met een trigger mijn verlichting automatisch na 5 minuten geen beweging uitt te schakelen. Wat ik ook probeer, ik krijg de trigger niet ge reset, dus mijn lampen gaan gewoon uit na 5 minuten. Er zijn twee opties om hem te resetten, msg.reset is set of msg.payload equals ....
Wat moet ik nu precies naar deze trigger sturen om hem te resetten bij beweging zodatt er opnieuw 5 minuten gewacht word met het uitschakelen van de verlichting?
Wat moet ik nu precies naar deze trigger sturen om hem te resetten bij beweging zodatt er opnieuw 5 minuten gewacht word met het uitschakelen van de verlichting?
Leuke vraag!rorie schreef op donderdag 11 juni 2020 @ 12:28:
Als beginnende node red gebruiker probeer ik met een trigger mijn verlichting automatisch na 5 minuten geen beweging uitt te schakelen. Wat ik ook probeer, ik krijg de trigger niet ge reset, dus mijn lampen gaan gewoon uit na 5 minuten. Er zijn twee opties om hem te resetten, msg.reset is set of msg.payload equals ....
Wat moet ik nu precies naar deze trigger sturen om hem te resetten bij beweging zodatt er opnieuw 5 minuten gewacht word met het uitschakelen van de verlichting?
Maak je gebruik van een koppeling met home-assistant?
Hier een simpele flow die je probleem oplost:
/f/image/PiBET8GgvaFw0rvBnqajfe0V.png?f=fotoalbum_large)
node 1: geeft 'true' bij beweging en 'false' wanneer er geen beweging meer is. De meeste sensoren geven een 'false' na een minuut of 2.
node 2: bij true -> controleer of het licht uit is (dit mag je ook overslaan), zoja, schakel het licht aan.
node 2: bij false -> voeg evt nog een extra delay toe, controleer of er nog steeds geen beweging is en schakel vervolgens het ligt uit.
code:
code:
1
| [{"id":"39ac2b6f.29965c","type":"tab","label":"Flow 3","disabled":false,"info":""},{"id":"183dc889.14e707","type":"switch","z":"39ac2b6f.29965c","name":"switch true / false","property":"payload","propertyType":"msg","rules":[{"t":"true"},{"t":"false"}],"checkall":"false","repair":false,"outputs":2,"x":350,"y":460,"wires":[["a5a331de.ddd6"],["afac6024.2b471"]]},{"id":"9a42f0e3.4896b","type":"api-current-state","z":"39ac2b6f.29965c","name":"presence off?","server":"3467b66e.566902","version":1,"outputs":2,"halt_if":"true","halt_if_type":"bool","halt_if_compare":"is","override_topic":false,"entity_id":"{{ presence_group }}","state_type":"habool","state_location":"","override_payload":"none","entity_location":"","override_data":"none","blockInputOverrides":true,"x":680,"y":480,"wires":[[],["e7e93b68.b6486"]]},{"id":"afac6024.2b471","type":"delay","z":"39ac2b6f.29965c","name":"delay","pauseType":"delayv","timeout":"2","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":530,"y":480,"wires":[["9a42f0e3.4896b"]]},{"id":"eb5fd00.2e2c7b","type":"api-call-service","z":"39ac2b6f.29965c","name":"Turn on light","server":"3467b66e.566902","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"{{ light_id }}","data":"","dataType":"json","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":900,"y":440,"wires":[[]]},{"id":"e7e93b68.b6486","type":"api-call-service","z":"39ac2b6f.29965c","name":"Turn off light","server":"3467b66e.566902","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"{{ light_id }}","data":"","dataType":"json","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":900,"y":480,"wires":[[]]},{"id":"a5a331de.ddd6","type":"api-current-state","z":"39ac2b6f.29965c","name":"light is off","server":"3467b66e.566902","version":1,"outputs":2,"halt_if":"false","halt_if_type":"bool","halt_if_compare":"is","override_topic":false,"entity_id":"{{ light_id }}","state_type":"habool","state_location":"","override_payload":"none","entity_location":"","override_data":"none","blockInputOverrides":true,"x":550,"y":440,"wires":[["eb5fd00.2e2c7b"],[]]},{"id":"e68e7202.56193","type":"server-state-changed","z":"39ac2b6f.29965c","name":"beweging true / false","server":"3467b66e.566902","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.voorkamer","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"x":140,"y":460,"wires":[["183dc889.14e707"]]},{"id":"3467b66e.566902","type":"server","z":"","name":"Home Assistant","legacy":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true}] |
Ik heb bovenstaande flow verwerkt in een generiek component, genaamd 'light controller':
/f/image/QXkDbwmh1Bm6xFXfoU6IWSGd.png?f=fotoalbum_large)
Met als inputvariabelen:
:fill(white):strip_exif()/f/image/8RrZxHdltXxSgLttFmEYTPs3.png?f=user_large)
Deze is ontzettend handig, om een aantal bewegingssensoren mee af te vangen:
/f/image/ca1SD5aMES54eCAodvbS7poB.png?f=fotoalbum_large)
Wat maakt 'm zo handig?
- Je hoeft allen maar mee te geven:
- Wel of niet schakelen op basis van lichtintensiteit (is een aparte subflow)
- Eventuele extra delay, wanneer de delay van je sensor niet genoeg is
- De bewegingssensor (of group)
- Het te schakelen licht
- Statusinfo wanneer de subflow is aangeroepen, dus geen extra debugging nodig bij problemen
code:
1
| [{"id":"695eb103.49e1f","type":"subflow","name":"Determine if dark enough","info":"","category":"","in":[{"x":40,"y":100,"wires":[{"id":"92aaf773.7f48f8"}]}],"out":[{"x":840,"y":120,"wires":[{"id":"92aaf773.7f48f8","port":0},{"id":"c49ea579.0f7608","port":0}]},{"x":840,"y":240,"wires":[{"id":"c49ea579.0f7608","port":1}]}],"env":[],"status":{"x":1160,"y":140,"wires":[{"id":"ef770083.398a58","port":0},{"id":"ae9a3461.602f8","port":0},{"id":"1f55dbb4.4e2b6c","port":0}]}},{"id":"92aaf773.7f48f8","type":"api-current-state","z":"695eb103.49e1f","name":"Lights keukenlichten = on","server":"3467b66e.566902","version":1,"outputs":2,"halt_if":"true","halt_if_type":"bool","halt_if_compare":"is","override_topic":true,"entity_id":"light.keukenlichten","state_type":"habool","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":true,"x":240,"y":100,"wires":[["8cb2b525.c4f548","ef770083.398a58"],["c49ea579.0f7608"]]},{"id":"8cb2b525.c4f548","type":"debug","z":"695eb103.49e1f","name":"Darktest: Woonkamerkeuken on, then it's dark enough","active":true,"tosidebar":true,"console":true,"tostatus":false,"complete":"payload","targetType":"msg","x":600,"y":40,"wires":[]},{"id":"86fb562c.fcbe3","type":"inject","z":"695eb103.49e1f","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":40,"wires":[["92aaf773.7f48f8"]]},{"id":"fa63901d.52a118","type":"debug","z":"695eb103.49e1f","name":"Not dark enough, it's:","active":true,"tosidebar":true,"console":true,"tostatus":false,"complete":"payload","targetType":"msg","x":990,"y":300,"wires":[]},{"id":"f8f3e4d3.5acd1","type":"debug","z":"695eb103.49e1f","name":"Yes, it's dark, it's:","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":970,"y":60,"wires":[]},{"id":"c49ea579.0f7608","type":"api-current-state","z":"695eb103.49e1f","name":"light sensor < 20 lux","server":"3467b66e.566902","version":1,"outputs":2,"halt_if":"20","halt_if_type":"num","halt_if_compare":"lt","override_topic":false,"entity_id":"sensor.light_sensor","state_type":"num","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":true,"x":540,"y":160,"wires":[["f8f3e4d3.5acd1","ae9a3461.602f8"],["fa63901d.52a118","1f55dbb4.4e2b6c"]]},{"id":"ef770083.398a58","type":"template","z":"695eb103.49e1f","name":"set status playload","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Yes, because keukenlichten are on.","output":"str","x":650,"y":80,"wires":[[]]},{"id":"ae9a3461.602f8","type":"template","z":"695eb103.49e1f","name":"set status playload","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Yes, light sensor reports {{ payload }} lux.","output":"str","x":910,"y":160,"wires":[[]]},{"id":"1f55dbb4.4e2b6c","type":"template","z":"695eb103.49e1f","name":"set status playload","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"No, light sensor reports {{ payload }} lux.","output":"str","x":910,"y":200,"wires":[[]]},{"id":"90d094a4.a05138","type":"subflow","name":"light controller","info":"Light controller\n\nGenerieke oplossing om lichten aan te sturen.\n\nInput: \n- msg.payload met true (aan) of false (uit), doorgegeven vanuit aanroepende flow\n- welk licht te schakelen (env var, via subflow properties)\n- welke presence group van toepassing is (bij delay) (env var, via subflow properties)\n- wel of niet rekening houden met lichtintensiteit woonkamer (env var, via subflow properties)\n\n\nOutput: geen\n\nSchakelt vervolgens licht aan of uit, rekening houdend met wel of geen (extra) delay, en wel of geen test of het donker genoeg is.","category":"","in":[{"x":40,"y":220,"wires":[{"id":"22fc151a.f9f8a2"}]}],"out":[],"env":[{"name":"only_when_dark","type":"bool","value":"true"},{"name":"milliseconds_extra_timeout","type":"num","value":"0"},{"name":"presence_group","type":"str","value":""},{"name":"light_id","type":"str","value":""}],"color":"#3FADB5","inputLabels":["dit is input"],"icon":"node-red/light.svg","status":{"x":1780,"y":260,"wires":[{"id":"ee8b9aec.bc2ee","port":0},{"id":"3e2f1759.7d32a","port":0},{"id":"d661175f.6577c","port":0},{"id":"8bf7e2ca.b5d3c","port":0},{"id":"bf3ab24d.222998","port":0},{"id":"44e1b50.562bbcc","port":0}]}},{"id":"1015c829.976668","type":"api-current-state","z":"90d094a4.a05138","name":"presence off?","server":"3467b66e.566902","version":1,"outputs":2,"halt_if":"true","halt_if_type":"bool","halt_if_compare":"is","override_topic":false,"entity_id":"{{ presence_group }}","state_type":"habool","state_location":"","override_payload":"none","entity_location":"","override_data":"none","blockInputOverrides":true,"x":1220,"y":300,"wires":[[],["3800f6c7.119a8a"]]},{"id":"ce4a3102.f9c868","type":"delay","z":"90d094a4.a05138","name":"delay","pauseType":"delayv","timeout":"2","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":930,"y":300,"wires":[["1015c829.976668"]]},{"id":"91b29c29.40cb08","type":"switch","z":"90d094a4.a05138","name":"payload","property":"payload","propertyType":"msg","rules":[{"t":"true"},{"t":"false"},{"t":"else"}],"checkall":"false","repair":false,"outputs":3,"x":340,"y":220,"wires":[["b83028c4.edaee8"],["baab00c1.02c99","ce4a3102.f9c868"],["44e1b50.562bbcc"]]},{"id":"22fc151a.f9f8a2","type":"change","z":"90d094a4.a05138","name":"set variables","rules":[{"t":"set","p":"only_when_dark","pt":"msg","to":"only_when_dark","tot":"env"},{"t":"set","p":"delay","pt":"msg","to":"milliseconds_extra_timeout","tot":"env"},{"t":"set","p":"presence_group","pt":"msg","to":"presence_group","tot":"env"},{"t":"set","p":"light_id","pt":"msg","to":"light_id","tot":"env"}],"action":"","property":"","from":"","to":"","reg":false,"x":170,"y":220,"wires":[["91b29c29.40cb08","172b39e1.9fbe36"]]},{"id":"9184912c.59e618","type":"debug","z":"90d094a4.a05138","name":"Turn on:","active":true,"tosidebar":true,"console":true,"tostatus":true,"complete":"payload.data.entity_id","targetType":"msg","x":1590,"y":140,"wires":[]},{"id":"ba3b76af.e6193","type":"debug","z":"90d094a4.a05138","name":"No presence anymore. Turn off:","active":true,"tosidebar":true,"console":true,"tostatus":true,"complete":"payload.data.entity_id","targetType":"msg","x":1660,"y":340,"wires":[]},{"id":"9a3f1f42.0e4c58","type":"api-call-service","z":"90d094a4.a05138","name":"Turn on light","server":"3467b66e.566902","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"{{ light_id }}","data":"","dataType":"json","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":1410,"y":100,"wires":[["9184912c.59e618","3e2f1759.7d32a"]]},{"id":"3800f6c7.119a8a","type":"api-call-service","z":"90d094a4.a05138","name":"Turn off light","server":"3467b66e.566902","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"{{ light_id }}","data":"","dataType":"json","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":1420,"y":300,"wires":[["ba3b76af.e6193","ee8b9aec.bc2ee"]]},{"id":"5f86dd27.b47884","type":"subflow:695eb103.49e1f","z":"90d094a4.a05138","name":"","env":[],"x":1160,"y":140,"wires":[["9a3f1f42.0e4c58"],["8bf7e2ca.b5d3c"]]},{"id":"4f9c634f.04db94","type":"switch","z":"90d094a4.a05138","name":"only when dark?","property":"only_when_dark","propertyType":"msg","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":890,"y":180,"wires":[["5f86dd27.b47884"],["9a3f1f42.0e4c58"]]},{"id":"ee8b9aec.bc2ee","type":"template","z":"90d094a4.a05138","name":"fill payload","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Turned off {{ payload.data.entity_id }}.","output":"str","x":1590,"y":300,"wires":[[]]},{"id":"3e2f1759.7d32a","type":"template","z":"90d094a4.a05138","name":"fill payload","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Turned on {{ payload.data.entity_id }}.","output":"str","x":1590,"y":100,"wires":[[]]},{"id":"172b39e1.9fbe36","type":"debug","z":"90d094a4.a05138","name":"Light controller called for presence_group:","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"presence_group","targetType":"msg","x":430,"y":140,"wires":[]},{"id":"9b771c28.177f7","type":"debug","z":"90d094a4.a05138","name":"Only when dark?","active":true,"tosidebar":true,"console":true,"tostatus":true,"complete":"only_when_dark","targetType":"msg","x":900,"y":140,"wires":[]},{"id":"baab00c1.02c99","type":"switch","z":"90d094a4.a05138","name":"do we have a delay?","property":"delay","propertyType":"msg","rules":[{"t":"gt","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":980,"y":380,"wires":[["47860048.8285b8"]]},{"id":"d82eb66c.c1fa18","type":"debug","z":"90d094a4.a05138","name":"Delay turning off {{ light_id }} for mins:","active":true,"tosidebar":true,"console":true,"tostatus":false,"complete":"delay","targetType":"msg","x":1690,"y":420,"wires":[]},{"id":"b83028c4.edaee8","type":"api-current-state","z":"90d094a4.a05138","name":"light is off","server":"3467b66e.566902","version":1,"outputs":2,"halt_if":"false","halt_if_type":"bool","halt_if_compare":"is","override_topic":false,"entity_id":"{{ light_id }}","state_type":"habool","state_location":"","override_payload":"none","entity_location":"","override_data":"none","blockInputOverrides":true,"x":510,"y":200,"wires":[["4f9c634f.04db94","9b771c28.177f7"],["99cc104.006c87","bf3ab24d.222998"]]},{"id":"99cc104.006c87","type":"debug","z":"90d094a4.a05138","name":"Halt. Light is already on:","active":true,"tosidebar":true,"console":true,"tostatus":true,"complete":"light_id","targetType":"msg","x":920,"y":220,"wires":[]},{"id":"d661175f.6577c","type":"template","z":"90d094a4.a05138","name":"fill payload","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Delaying turning off {{ light_id }} for {{ delay }} minutes.","output":"str","x":1590,"y":380,"wires":[[]]},{"id":"47860048.8285b8","type":"change","z":"90d094a4.a05138","name":"milliseconds to minutes","rules":[{"t":"set","p":"delay","pt":"msg","to":"delay / 60000 ","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1250,"y":380,"wires":[["d661175f.6577c","d82eb66c.c1fa18"]]},{"id":"8bf7e2ca.b5d3c","type":"template","z":"90d094a4.a05138","name":"fill payload","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Halt. Not dark.","output":"str","x":1590,"y":180,"wires":[[]]},{"id":"bf3ab24d.222998","type":"template","z":"90d094a4.a05138","name":"fill payload","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Halt. {{ light_id }} is already on.","output":"str","x":1590,"y":220,"wires":[[]]},{"id":"44e1b50.562bbcc","type":"template","z":"90d094a4.a05138","name":"fill payload","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"No boolean provided for msg.payload. Instead, received: {{ payload }}.","output":"str","x":1590,"y":260,"wires":[[]]},{"id":"3467b66e.566902","type":"server","z":"","name":"Home Assistant","legacy":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true}] |
Misschien heeft iemand er wat aan!
Mocht iemand ook geinteresseerd zijn in de 'Determine if dark enough' subflow, laat 't weten, dan post ik die hier ook.
@Gizz zal er vanmiddag eens naar kijken, als het eenvoudiger kan dan vooral doen
[ Voor 81% gewijzigd door Toppe op 11-06-2020 13:04 ]
Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!
@rorie Dat kun je simpel voor elkaar krijgen met de trigger node. Zie ook: Gizz in "Node-RED - grafisch 'programmeren' (bijv. voor domotica)" Daar laat ik dat letterlijk zien, al is mijn vertraging 30 seconden i.p.v. 5 minuten
[ Voor 44% gewijzigd door Gizz op 11-06-2020 13:06 ]
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX