Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10

Node-RED

https://tweakers.net/ext/f/FSRtCUXDTB3Q2bXWgPWWd552/full.png

Node-RED (NR) is een applicatie waarmee je zonder (veel) programmeerervaring toch krachtige automatiseringen kan maken vanuit je browser, met een eenvoudige grafische interface. Daarnaast heeft het volledige ondersteuning voor Javascript ingebouwd, zodat je in zogenaamde 'function nodes' eigen krachtige logica kan programmeren indien gewenst.



Node-RED is ontworpen voor internet of things (IoT)-toepassingen en is met name populair op het gebied van home automation / domotica, vandaar dat dit topic in het forum 'Duurzame Energie & Domotica' staat. Mocht je echter Node-RED-vragen over andere onderwerpen hebben, dan is dat geen enkel probleem in dit topic.

Je kan Node-RED ook standalone gebruiken in combinatie met een 'dashboard' module.

Node-RED in combinatie met home automation applicaties

Node-RED wordt veel gebruikt in combinatie met applicaties als Home Assistant, Domoticz en OpenHAB. Deze applicaties geven dan veranderingen in de status van je apparaten door aan Node-RED, die alle automatiserings-logica voor je afhandelt en daarna weer aan deze applicaties vraagt om acties uit te gaan voeren, bijvoorbeeld je lampen inschakelen.

Hoewel deze applicaties zelf ook ingebouwde mogelijkheden hebben voor het maken van automatiseringen, is dit niet voor iedereen eenvoudig te begrijpen. Zo krijgt niet iedereen de YAML-taal van Home Assistant, of de LUA-taal van Domoticz snel onder de knie. Domoticz heeft wel het eenvoudigere 'Blockly', maar dit is minder krachtig.

Node-RED lijkt wel een beetje op Blockly, maar is prettiger in gebruik en biedt bovendien meer dan 1000 extensions die 'modules' worden genoemd.

Voorbeeld


Je moet dit als volgt interpreteren: een sequence (van aan elkaar gekoppelde nodes) wordt geactiveerd, bijvoorbeeld op een bepaald tijdstip, of omdat er een andere trigger is (bijvoorbeeld omdat er iemand thuiskomt, er een deur open gaat, er beweging wordt gedetecteerd, de tv wordt aangezet etc). Er gaat dan een berichtje (msg) met een bepaalde waarde (payload) door de sequence heen. Bij elke node kan je het proces laten stoppen, splitsen, of een andere richting opsturen afhankelijk van de waarde. En daarmee kan je verschillend gedrag laten uitvoeren.

Introductievideos


En nog een (deels over Home Assistant maar ook met veel basis-info over Node-RED)

(voor Home Assistant gebruikers: je kan beter de modernere module 'home-assistant-websocket' installeren)

Elkaar helpen

Als je hulp nodig hebt, dan kan je een screenshot posten, maar het kan ook handig zijn om je 'code' (die Node-RED genereert en die je zeker niet moet kunnen lezen) te delen. Hiervoor selecteer je de relevante nodes in Node-RED, klik je op het hamburgermenu rechtsbovenaan en kies je voor 'Export -> Clipboard'. Die code plak je in je bericht in dit topic in een [code]-blok. En dan ziet het er zo uit:

code:
1
[{"id":"562f35b0.edf0f4","type":"inject","z":"746750be.ec2a","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":450,"y":500,"wires":[["e50fb59d.71ff2"]]},{"id":"e50fb59d.71ff2","type":"debug","z":"746750be.ec2a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":620,"y":500,"wires":[]}]



Omgekeerd kan je dit soort code ook importeren in Node-RED via datzelfde menu -> 'Import -> Clipboard' waarna het weer als grafische elementen op het scherm verschijnt.

Handige links

Node-RED website
Node-RED twitter account
Demo
Creaties van anderen
Node-RED handleidingen

DeadMetal wijzigde deze reactie 05-10-2018 15:37 (30%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10

Handige uitbreidingsmodules

Node-Red kan je uitbreiden met extra modules door in het 'hamburgermenu' (rechtsbovenaan) te klikken op 'Manage palette -> Install'. Hierbij enkele suggesties. Aanvullingen zijn welkom (maar omdat er >1000 modules bestaan, laten we het beperken tot diegene die bruikbaar zijn voor doorsnee NR-gebruiker).

home-assistant-websocketVerbinding maken met Home Assistant.
looptimerHerhaal een sequence regelmatig.
schedexSequences laten starten, bijvoorbeeld als de zon onder gaat.
startup-triggerActies direct uitvoeren zodra Node-RED ge(her)start wordt.
stoptimerSequences kunnen laten stoppen zodat er 'stop' ontvangen wordt. Timer resetten zodra er binnen de gestelde tijd een nieuw bericht binnenkomt. Die vervangt de vorige.
time-range-switchEen actie mag alleen uitgevoerd worden tussen bepaalde tijden.
weekdayEen actie mag alleen uitgevoerd worden op bepaalde dagen van de week.
trafficAfhankelijk van de staat van het stoplicht worden berichten wel of niet doorgelaten.
telegrambot-homeCommuniceer met Telegram op je telefoon (heen en terug, incl. antwoordkeuzeopties)
node-googleHaal gegevens uit een Google Calendar op (bijv. zien wanneer de volgende afspraak is, of maak een nieuwe afspraak aan)
calcEenvoudig wiskundige berekeningen uitvoeren

DeadMetal wijzigde deze reactie 17-03-2019 08:23 (118%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
quote:
lasharor schreef op maandag 10 september 2018 @ 12:13:
Ik zou graag wel eens wat voorbeelden willen zien van automatiseringen waarbij je echt 0,0 programmeerkennis nodig hebt.
Het voorbeeldje '45 minuten voor zonsondergang -> huiskamerlampen aan' in de TS beschouw ik als iets waarvoor je niet hoeft te programmeren. Natuurlijk moet je in de 3 verschillende nodes wel wat invoervelden invullen (je locatie zodat hij weet hoe laat de zon onder gaat, de offset van 45 minuten), maar je hoeft er geen programmeertaal voor te leren, je kan geen syntax-fouten maken, de invoervelden zijn goed gedocumenteerd etc.

Wat ook scheelt is dat er meer dan 1000 uitbreidingsmodules bestaan. Stel, je wilt een willekeurig getal laten genereren, ik roep maar wat. Dan zou je in theorie een function node kunnen pakken waarbij je in Javascript zoiets schrijft:
code:
1
2
var getal = Math.random();
return {payload : getal};

Je kan echter ook de module 'node-red-node-random' installeren die dit voor je kan doen zonder dat er een regel programmeercode aan te pas komt
quote:
A Node-RED node that when triggered generates a random number between two values.
Dat maakt het wel heel krachtig en zorgt ervoor dat je minder snel naar Javascript hoeft te grijpen. Maar inderdaad, ik gebruik voor sommige zaken wel degelijk Javascript (daarom de bewoording in de TS inderdaad iets aangepast ;) ).

Zo heb ik een functie geschreven die in mijn Google Calendar kijkt naar de eerstvolgende afspraak, en op basis daarvan bepaalt hoe laat mijn wekker de volgende dag moet gaan (en deze ook instelt). Dat zijn vrij complexe zaken natuurlijk.

DeadMetal wijzigde deze reactie 10-09-2018 12:40 (14%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Ik draai Node-Red en HA rechtstreeks op een RPI 3 met Raspbian. Dus niet Hass.io (te beperkt voor mij, ik draai ook allerlei andere applicaties op de Pi) en ook niet via Docker (niet in verdiept / zag ik de noodzaak niet voor).

Deze handleiding gevolgd incl. systemd: https://nodered.org/docs/hardware/raspberrypi

DeadMetal wijzigde deze reactie 10-09-2018 16:58 (7%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
quote:
nickyb2 schreef op maandag 10 september 2018 @ 17:17:
[...]
Als je NodeRED hebt draaien zet je langzaam (of snel) zaken over van Home Assistant naar NodeRED en .. verwijder je Home Assistant :) want die heb je dan waarschijnlijk niet meer nodig.
Da's wel heel ambitieus ;) maar voor sommige gevallen zou het inderdaad kunnen.

Zo had ik mijn deurbel eerst als apparaat in HA zitten, en las NR de status via HA uit, om er wat mee te doen (telegram notificatie naar telefoon via HA). Later kwam ik erachter dat NR ook rechtstreeks die deurbel kan uitlezen (GPIO pinnen van de PI), dus hoefde hij niet langer als apparaat in HA te bestaan.

Aan de andere kant, HA kan praten met >1000 apparaten/diensten (components), dat kan NR bij lange na niet.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
quote:
MsG schreef op maandag 10 september 2018 @ 17:24:
Ik draai NodeRed al, maar gezien het moeten praten met HA heb je toch een stukje middleware nodig waarbij ik voorheen las "ga naar de add-ons" bij Hass.io, die ik dus niet heb. Hoe koppelen jullie knop-input van de webinterface van HA dan af? Of doen jullie echt alleen wat met het mqtt-verkeer zelf? Ik ben wel voornemens om de interface van HA blijven te gebruiken voor handmatige bediening van dingen.
Ik gebruik HA ook dagelijks als (enige) frontend voor handmatige bediening of om dingen te bekijken (temperatuur, open deuren en ramen etc). Je moet HA (of Domoticz) en NR dus ook zeker niet zien als concurrenten van elkaar, ze vullen elkaar aan.

Node-Red is bij mij geïnstalleerd via deze handleiding, HA via deze handleiding (Raspbian op een Pi)

In NR kan je vervolgens extra modules toevoegen (hamburgermenu rechtsboven -> manage palette -> install -> node-red-contrib-home-assistant) en vanuit die module regel je de koppeling met HA.
Vervolgens kan je in NR de status van de HA-apparaten uitlezen en events (ingedrukte knoppen etc) afvangen,en kan je je automatiseringen regelen (incl. de mogelijkheid om HA weer de opdracht te geven om iets te gaan doen).

Maar ik hoef dus nooit naar de NR-webinterface te kijken als ik geen automatiseringen aan het bewerken ben.

Node-Red biedt geen rechtstreekse koppeling met Domoticz, maar dan praat je inderdaad via MQTT-berichten. Wat uitleg daarover: https://gertjandeboer.nl/...moticz-mqtt-and-node-red/

DeadMetal wijzigde deze reactie 10-09-2018 17:42 (17%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Bedankt voor de enthousiaste reacties op het topic! Nee, er is bij mij geen enkele vertraging merkbaar qua snelheid.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Je zou bijv. een NR-variabele kunnen aanmaken die je een bepaalde waarde geeft zodra het release-event binnenkomt (bijv. variabele 'release_button' = true).

En bij het binnenkomen van het hold-event ga je aan de gang van met het verhogen van de feilheid, heel even wachten, dan checken of die ene variabele al op true staat. Zo nee, opnieuw verhogen (etc etc). Zo ja, stoppen en die variabele weer resetten. Evt. kan ik wel een voorbeeldje maken en delen.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
quote:
lolgast schreef op maandag 10 september 2018 @ 18:18:
@DeadMetal Dan zou ik denk ik toch kiezen voor de looptimer. Vanuit de switchnode een output op msg.payload.release naar de looptimer met als payload ‘stop’. Hoef je geen ‘verborgen/onoverzichtelijke’ variabele te maken en blijft je flow lekker leesbaar. In mijn ogen dan :)
Ja mee eens dat je in principe het beste voor kant en klare modules kan kiezen i.p.v. programmeren in een function node. Misschien kom je dan wel uit op iets meer nodes in een sequence, maar het komt de leesbaarheid wel ten goede en voorkomt fouten.

Looptimer ziet er uit als een mooi ding, ik kende hem niet. Wel zie ik dat je maximaal 1x per seconde de acties in de loop kan herhalen, dan moet je dus de knop 5 seconden ingedrukt houden om de lamp 5x iets feller te maken.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Gaaf hoor, dat laat wel zien hoe krachtig NR is. Aan de ene kant kan je het gebruiken als HA/Domoticz qua automatiseringsmogelijkheden te complex voor je zijn, aan de andere kant kan je het als power-user juist gebruiken om niet vast te zitten aan beperkingen.

En gebruik je het dan in combinatie met een bepaald dashboard als frontend?

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
De schedex-module. Een voorbeeld staat in het plaatje in de topicstart. Inderdaad met een negatieve offset ten opzichte van sunset.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
@lolgast Dat deed ik tot dit weekend ook zo :) Totdat ik die schedex-module ontdekte en NR nu dus niet meer elke minuut bij HA hoeft te checken hoe het met de zonstand is. Sterker nog, de sun-module heb ik inmiddels uitgeschakeld in HA.

@ThinkPad de schedex code:
code:
1
[{"id":"5d5ed34c.83fd04","type":"schedex","z":"746750be.ec2a","name":"45m voor zonsondergang","suspended":false,"lat":"52.000","lon":"4.000","ontime":"sunset","ontopic":"","onpayload":"ON","onoffset":"-45","onrandomoffset":0,"offtime":"sunset","offtopic":"","offpayload":"OFF","offoffset":"-44","offrandomoffset":0,"mon":true,"tue":true,"wed":true,"thu":true,"fri":true,"sat":true,"sun":true,"x":560,"y":550,"wires":[["e72a7f3e.ea2998"]]},{"id":"e72a7f3e.ea2998","type":"switch","z":"746750be.ec2a","name":"On?","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"ON","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":760,"y":550,"wires":[["2569b871.cd6658"]]}]

(longtitude en latitude nog even aanpassen aan je eigen huisadres, op Google maps kan je dat in de url zien bijv.). De off-tijd is bij mij 1 minuut later, daar doe ik verder niks mee. Maar je zou die ook kunnen instellen op de tijd dat je lampen juist weer automatisch uit moeten en in de switch node een 2e optie kunnen toevoegen.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
quote:
nickyb2 schreef op dinsdag 11 september 2018 @ 08:03:
[...]
in subflows te stoppen. Dat heeft bij mij drastisch het aantal flows en de grootte van de flows, vooral omdat subflows standaard verborgen zijn.
Ik heb nog nooit iets met subflows gedaan, maar eens in verdiepen :)

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Thanks, ziet er handig uit, vooral als je bepaalde logica op verschillende plekken hergebruikt.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
quote:
MsG schreef op dinsdag 11 september 2018 @ 10:27:
Daarnaast heb ik met die Home-assistant modules voor Node-Red dat hij niet automatisch mijn entities inlaad.
Als ik nieuwe entities heb toegevoegd aan HA, herstart ik node-red altijd even, waarna ze wel beschikbaar zijn. Weet niet of dat 'works-as-designed' is.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
quote:
lolgast schreef op dinsdag 11 september 2018 @ 10:31:
[...]
Edit: Ik heb het ip-adres van het Node-RED docker-network aan de trusted networks van HA toegevoegd. Ik connect dus gewoon via baseURL 'http://192.168.x.x:8123', geen wachtwoord voor nodig
Ik krjg dat niet voor elkaar. Sinds ik https geactiveerd heb voor HA, is hij niet meer bereikbaar via http.
De webinterface kan ik prima benaderen via zowel https://blabla.duckdns.org als via https://192.16.1.3:8123

Maar in NR geeft 'https://192.168.1.3:8123' geen verbinding, het DuckDNS adres wel.
Ik zou liever ook een 'interne' verbinding tussen NR en HA willen hebben.

/edit: want toen laatst m'n internet eruit lag vanwege een storing bij de provider, gaf dat dus ook problemen m.b.t. domotica, terwijl ik gewoon thuis was.

DeadMetal wijzigde deze reactie 11-09-2018 11:00 (14%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Heb je daar wat uitleg over, gaat dat via Apache (dat heb ik al draaien)? Want dat lijkt me ook wel wat, dan kunnen NR en HA intern met elkaar praten over http via 'localhost'.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Dit weekend heb ik geüpgraded naar NR 0.19 (is alweer een maandje uit overigens).
Wel een aardige verbetering:
Context data is state held within a flow outside of the individual messages flowing through it. Previously, this data was only held in memory, so would be lost whenever the runtime restarted.

With 0.19, this state can now be held outside of the runtime.
Dan wordt het op disk opgeslagen. Kan geactiveerd worden door het node-red configuratiebestand aan te passen: https://nodered.org/docs/user-guide/context

Ook vraag ik me spontaan af waarom ik tot op heden altijd function-nodes pakte om een variabele op te slaan of uit te lezen, terwijl dat ook gewoon in een change-node (opslaan) of een switch-node (uitlezen) blijkt te kunnen 8)7

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
In het bericht onder de topicstart heb ik een overzichtje gemaakt met enkele handige uitbreidingsmodules van Node-Red. Mocht iemand aanvullingen hebben, laat het gerust weten.

Gezien het enorme aantal modules dat er bestaat, laten we het beperken tot modules waarvan je denkt dat het voor de gemiddelde Node-Red gebruiker interessant (en niet te complex) zal zijn.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Dylantje2 schreef op dinsdag 11 september 2018 @ 21:10:
Zijn er wel google home gebruikers die weten dat Google de hele dag meeluistert?
En dat je het op een site allemaal terug kunt luisteren...

Zou graag iets spraakgestuurd willen mAaar niets met Google dat 24/7 in mijn huis meesluistert
Ik ga binnenkort experimenteren met Snips.
https://snips.ai/
https://www.home-assistant.io/components/snips/

Het spuugt MQTT-berichten uit, dus zou samen moeten kunnen gaan met NR zonder tussenkomst van HA.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Het hangt er een beetje vanaf. Wil je vanuit HA (frontend of app) het desbetreffende apparaat ook kunnen schakelen/bedienen, en heb je hem al in HA werkend, dan kan hij daar prima blijven staan. En dan lees je in NR de status uit via HA, en geef je HA de opdracht om (de status van) het apparaat aan te passen.

Echter, als iets enkel automatisch hoeft te gebeuren (bijv. zonsondergang -> lamp aan), dan is het omslachtig als NR steeds bij HA checkt of de zon al onder is, terwijl hij dat met de juiste module prima zelf kan. Dat dan volledig door NR laten afhandelen maakt de setup eenvoudiger.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Zojuist de telegrambot-home module ontdekt. Ik gebruikte HA al om notificaties naar Telegram op m'n telefoon te sturen, maar deze NR module is nog krachtiger. Hij biedt de mogelijkheid om een bericht met aanklikbare standaardantwoorden te sturen, waarna NR weer verder gaat met acties afhankelijk van welk antwoord je op je telefoon aanklikt.

Omgekeerd kan je ook berichten sturen vanaf je telefoon, komen deze in NR aan, en kan je hem iets laten doen.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
nickyb2 schreef op maandag 10 september 2018 @ 17:17:
Als je NodeRED hebt draaien zet je langzaam (of snel) zaken over van Home Assistant naar NodeRED en .. verwijder je Home Assistant :) want die heb je dan waarschijnlijk niet meer nodig.
Ik begin je opmerking steeds beter te begrijpen nu ik NR de afgelopen week intensiever ben gaan gebruiken:

- NR stuurt nu zelf Telegram-berichten in plaats van aan HA te vragen om dit te doen (met bijkomend voordeel dat ik nu ook een bericht op m'n telefoon kan ontvangen als HA offline gaat)
- NR ontvangt nu zelf inkomende 433Mhz (Klik aan Klik uit etc) signalen van afstandsbedieningen in plaats van via HA (wat soms stopte met werken tot na een reboot)
- NR stuurt nu rechtstreeks mijn lampen en screen aan (ook 433 Mhz)

Ik heb zeker niet de ambitie om HA de deur uit te doen, vooral omdat ik de frontend zo fijn vindt, maar hoe meer NR zelfstandig kan afhandelen, hoe robuuster de hele setup wordt.

En dan nog een aanvulling op de vraag van @MsG
MsG schreef op woensdag 12 september 2018 @ 09:12:
Wat ik me trouwens afvraag. Stel je wil dit gewoon complementair aan HomeAssistant gebruiken, omdat je het concept van een dashboard en manueel dingen kunnen aanzetten/inzien/overrulen je prima aanspreekt.

In hoeverre gebruik je dan de specifieke modules van Node-red.
Nu mijn 433mhz lampen/cover (screen) door NR worden aangestuurd, kan HA dat helaas niet meer zelf doen (maar 1 applicatie mag toegang hebben tot de RFXCom 433Mhz usb zender/ontvanger hardware, een beperking/beveiliging van Linux ofzo).

Toch is het dan gewoon mogelijk om hem in de HA frontend te houden. Maar dan configureer je het niet als een normale light/cover, maar als een MQTT light/cover
https://www.home-assistant.io/components/cover.mqtt/
https://www.home-assistant.io/components/light.mqtt/

In de HA frontend verandert er dan niets, maar achter de schermen is het verschil dat HA niet rechtstreeks met het apparaat gaat communiceren, maar enkel een MQTT bericht uitstuurt. In NR kan je die dan uitlezen en de gewenste acties laten uitvoeren.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
DaMoUsYs schreef op donderdag 13 september 2018 @ 22:54:
Ik zou nog laten weten hoe ik het opgelost heb

code:
1
[{"id":"b5bb5e3d.f89c2","type":"tab","label":"Flow Keuken","disabled":false,"info":""},{"id":"66333ff9.4b887","type":"function","z":"b5bb5e3d.f89c2","name":"Teller ophogen","func":"count = flow.get('count')||0;\ncount++;\nflow.set('count', count);\nreturn {payload : count};","outputs":1,"noerr":0,"x":220,"y":100,"wires":[["bc311385.ae8db"]]},{"id":"bc311385.ae8db","type":"stoptimer","z":"b5bb5e3d.f89c2","duration":"3","units":"Second","payloadtype":"num","payloadval":"0","name":"","x":360,"y":260,"wires":[["56fd88ec.b62228"],["2bd72550.32ccca","893a76cd.ebb4d8","f3dd6a.e634d298"]]},{"id":"cdead2f5.a8ec3","type":"function","z":"b5bb5e3d.f89c2","name":"Teller resetten","func":"flow.set('count', 0);\nreturn false;","outputs":1,"noerr":0,"x":760,"y":80,"wires":[[]]},{"id":"2bd72550.32ccca","type":"switch","z":"b5bb5e3d.f89c2","name":"1 keer klikken","property":"count","propertyType":"flow","rules":[{"t":"eq","v":"1","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":780,"y":220,"wires":[["6b2a8d7f.02cdb4","789bbbba.a61f24"]]},{"id":"f3dd6a.e634d298","type":"switch","z":"b5bb5e3d.f89c2","name":"2 keer klikken","property":"count","propertyType":"flow","rules":[{"t":"eq","v":"2","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":780,"y":280,"wires":[["3466f713.305818","d2d8bedc.55cf4"]]},{"id":"893a76cd.ebb4d8","type":"switch","z":"b5bb5e3d.f89c2","name":"3keer klikken","property":"count","propertyType":"flow","rules":[{"t":"eq","v":"3","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":770,"y":320,"wires":[["926bbb4b.9976c8","89826b17.cf6a58"]]},{"id":"3466f713.305818","type":"api-call-service","z":"b5bb5e3d.f89c2","name":"KeukenHanglamp","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.keuken_hanglamp\" }","mergecontext":"","x":1070,"y":260,"wires":[[]]},{"id":"d2d8bedc.55cf4","type":"api-call-service","z":"b5bb5e3d.f89c2","name":"licht_keuken","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.licht_keuken\" }","mergecontext":"","x":1050,"y":300,"wires":[[]]},{"id":"dd28071.08062f8","type":"server-state-changed","z":"b5bb5e3d.f89c2","name":"Switch Hanglamp","server":"38af665f.7b591a","entityidfilter":"switch.keuken_hanglamp","entityidfiltertype":"substring","haltifstate":"","x":70,"y":200,"wires":[["66333ff9.4b887"]]},{"id":"56fd88ec.b62228","type":"delay","z":"b5bb5e3d.f89c2","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":600,"y":120,"wires":[["cdead2f5.a8ec3"]]},{"id":"6b2a8d7f.02cdb4","type":"api-call-service","z":"b5bb5e3d.f89c2","name":"licht_keuken","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.licht_keuken\" }","mergecontext":"","x":1050,"y":140,"wires":[[]]},{"id":"789bbbba.a61f24","type":"api-call-service","z":"b5bb5e3d.f89c2","name":"KeukenHanglamp","server":"38af665f.7b591a","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.keuken_hanglamp\" }","mergecontext":"","x":1070,"y":180,"wires":[[]]},{"id":"926bbb4b.9976c8","type":"api-call-service","z":"b5bb5e3d.f89c2","name":"KeukenHanglamp","server":"38af665f.7b591a","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.keuken_hanglamp\" }","mergecontext":"","x":1070,"y":360,"wires":[[]]},{"id":"89826b17.cf6a58","type":"api-call-service","z":"b5bb5e3d.f89c2","name":"licht_keuken","server":"38af665f.7b591a","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.licht_keuken\" }","mergecontext":"","x":1050,"y":400,"wires":[[]]},{"id":"38af665f.7b591a","type":"server","z":"","name":"Home Assistant","url":"https://ha.damousys.nl:8123","pass":"SECRET"}]


Hoe het nu werkt
  • 1 keer drukken "licht keuken" gaat aan, hanglamp keuken gaat uit
  • 2 keer drukken beide lampen gaan aan
  • 3 keer drukken alles gaat uit
Mooi dat het gelukt is @DaMoUsYs! Ik zou het nog iets simpeler opzetten:

code:
1
[{"id":"1b0a18ae.40e497","type":"tab","label":"Flow Keuken","disabled":false,"info":""},{"id":"505eda4a.339e84","type":"function","z":"1b0a18ae.40e497","name":"Teller ophogen","func":"count = flow.get('count')||0;\ncount++;\nflow.set('count', count);\nreturn {payload : count};","outputs":1,"noerr":0,"x":320,"y":220,"wires":[["fb9cea75.e741"]]},{"id":"fb9cea75.e741","type":"stoptimer","z":"1b0a18ae.40e497","duration":"3","units":"Second","payloadtype":"num","payloadval":"","name":"","x":510,"y":220,"wires":[["7f768c3d.17aafc","914660bb.4113e8"],[]]},{"id":"914660bb.4113e8","type":"switch","z":"1b0a18ae.40e497","name":"Tel aantal kliks","property":"count","propertyType":"flow","rules":[{"t":"eq","v":"1","vt":"str"},{"t":"eq","v":"2","vt":"str"},{"t":"eq","v":"3","vt":"str"}],"checkall":"false","repair":false,"outputs":3,"x":760,"y":214,"wires":[["71550435.92bcd4","d425a866.68b988"],["d80b9555.b62388","a7ce2e61.79d95"],["816f70b2.33554","789d014f.35507"]]},{"id":"d80b9555.b62388","type":"api-call-service","z":"1b0a18ae.40e497","name":"KeukenHanglamp aan","server":"c29516c7.a7713","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.keuken_hanglamp\" }","mergecontext":"","x":1150,"y":280,"wires":[[]]},{"id":"a7ce2e61.79d95","type":"api-call-service","z":"1b0a18ae.40e497","name":"licht_keuken aan","server":"c29516c7.a7713","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.licht_keuken\" }","mergecontext":"","x":1140,"y":314,"wires":[[]]},{"id":"75d2592f.5e3d78","type":"server-state-changed","z":"1b0a18ae.40e497","name":"Switch Hanglamp","server":"c29516c7.a7713","entityidfilter":"switch.keuken_hanglamp","entityidfiltertype":"substring","haltifstate":"","x":140,"y":220,"wires":[["505eda4a.339e84"]]},{"id":"7f768c3d.17aafc","type":"delay","z":"1b0a18ae.40e497","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":670,"y":140,"wires":[["51a8f3cd.5489ec"]]},{"id":"71550435.92bcd4","type":"api-call-service","z":"1b0a18ae.40e497","name":"licht_keuken aan","server":"c29516c7.a7713","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.licht_keuken\" }","mergecontext":"","x":1140,"y":214,"wires":[[]]},{"id":"d425a866.68b988","type":"api-call-service","z":"1b0a18ae.40e497","name":"KeukenHanglamp uit","server":"c29516c7.a7713","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.keuken_hanglamp\" }","mergecontext":"","x":1150,"y":180,"wires":[[]]},{"id":"816f70b2.33554","type":"api-call-service","z":"1b0a18ae.40e497","name":"KeukenHanglamp uit","server":"c29516c7.a7713","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.keuken_hanglamp\" }","mergecontext":"","x":1150,"y":370,"wires":[[]]},{"id":"789d014f.35507","type":"api-call-service","z":"1b0a18ae.40e497","name":"licht_keuken uit","server":"c29516c7.a7713","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.licht_keuken\" }","mergecontext":"","x":1130,"y":403,"wires":[[]]},{"id":"51a8f3cd.5489ec","type":"change","z":"1b0a18ae.40e497","name":"Teller resetten","rules":[{"t":"set","p":"count","pt":"flow","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":840,"y":140,"wires":[[]]},{"id":"c29516c7.a7713","type":"server","z":"","name":"Home Assistant","url":"https://ha.damousys.nl:8123","pass":"SECRET"}]


Volgens mij kan je die stoptimer ook wel naar 1 seconde zetten. Hij wacht dan 1 seconde op een nieuwe binnenkomende klik. Als die komt, gaat hij opnieuw 1 seconde wachten op de volgende klik. Het is dus niet dat alledrie de kliks binnen 1 seconde moeten plaatsvinden.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Shit, ik was een module aan het installeren en plotseling doet NR het niet meer. Restart-commando heeft geen effect. Hoe kan ik zien wat er mis gaat?

Hier niks vreemds te zien:

code:
1
2
3
4
5
6
7
8
9
10
pi@nas:/var/log $ sudo systemctl status nodered.service 
● nodered.service - Node-RED graphical event wiring tool
   Loaded: loaded (/lib/systemd/system/nodered.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-09-14 10:20:30 CEST; 1s ago
     Docs: http://nodered.org/docs/hardware/raspberrypi.html
 Main PID: 19562 (node)
   CGroup: /system.slice/nodered.service
           └─19562 node --max_old_space_size=256 /usr/lib/node_modules/node-red/bin/../red.js

Sep 14 10:20:30 nas systemd[1]: Started Node-RED graphical event wiring tool.


/edit, wat meer info boven water gekregen via 'sudo journalctl -f -u nodered -o cat':

code:
1
2
3
4
5
6
7
14 Sep 10:24:15 - [red] Uncaught Exception:
14 Sep 10:24:15 - Error: bind EADDRINUSE 0.0.0.0:9898
nodered.service: Main process exited, code=exited, status=1/FAILURE
nodered.service: Unit entered failed state.
nodered.service: Failed with result 'exit-code'.
nodered.service: Service hold-off time over, scheduling restart.
Stopped Node-RED graphical event wiring tool.


Die nieuwe module doet blijkbaar iets verkeerds waardoor NR niet meer wil booten. Maar ik kom er nog niet achter hoe ik die module nou deactiveer (zonder GUI).

De desbetreffende module (niet installeren dus!): https://github.com/timmmmmmmmm/node-red-contrib-xiaomi-home

DeadMetal wijzigde deze reactie 14-09-2018 10:38 (30%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Thx voor het meedenken. Opgelost door de defecte module te deïnstalleren via het volgende commando:

code:
1
npm remove node-red-contrib-xiaomi-home

en NR was direct weer in de lucht (omdat hij non-stop zichzelf opnieuw probeerde op te starten).

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
jossie67 schreef op donderdag 13 september 2018 @ 13:38:
Kun je eens stukje NR code delen van je RFXcom, nu gaat deze nog naar HA
Deze module heb je nodig: node-red-contrib-rfxcom
En dan bijvoorbeeld zoiets:

code:
1
[{"id":"348ef739.9da9e","type":"rfx-lights-in","z":"15aee0af.45f04f","name":"Knop ingedrukt","port":"d7f0d084.07ce3","topicSource":"all","topic":"","x":160,"y":490,"wires":[["173de84e.54a4c","f2df8c1a.a0b3b"]]},{"id":"f2df8c1a.a0b3b","type":"switch","z":"15aee0af.45f04f","name":"Welke knop?","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"AC/0x002ADC02/1","vt":"str"}],"checkall":"false","repair":false,"outputs":1,"x":390,"y":490,"wires":[["bc7e37d4.64719"]],"outputLabels":["Huiskamerlamp"]},{"id":"173de84e.54a4c","type":"debug","z":"15aee0af.45f04f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":370,"y":440,"wires":[]},{"id":"179db10a.ce7637","type":"comment","z":"15aee0af.45f04f","name":"RFXcom signalen","info":"","x":160,"y":450,"wires":[]},{"id":"d95a2358.c8ff18","type":"mqtt in","z":"15aee0af.45f04f","name":"MQTT Huiskamerlamp","topic":"ha/huiskamerlampen/switch","qos":"2","broker":"a888b41a.176598","x":170,"y":690,"wires":[["eafa7465.d9141"]]},{"id":"911cf298.52835","type":"mqtt out","z":"15aee0af.45f04f","name":"Publiceer status","topic":"ha/huiskamerlampen/state","qos":"2","retain":"","broker":"a888b41a.176598","x":610,"y":640,"wires":[]},{"id":"ecb0d7ca.00f5d8","type":"rfx-lights-out","z":"15aee0af.45f04f","name":"Huiskamperlampen","port":"d7f0d084.07ce3","topicSource":"node","retransmit":"none","retransmitInterval":20,"topic":"AC/0x016BDB26/14","x":620,"y":690,"wires":[]},{"id":"eafa7465.d9141","type":"delay","z":"15aee0af.45f04f","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":400,"y":640,"wires":[["911cf298.52835","ecb0d7ca.00f5d8"]]},{"id":"e9a8e9d9.49132","type":"link in","z":"15aee0af.45f04f","name":"Huiskamerlampen","links":["d2832c81.c0f7f8","ff23083d.f5ff5","8475e472.dcdac8","9180429b.dd891","f64b4877.40fa98","21189417.cf13a4","35add7a4.38cd8","bc7e37d4.64719"],"x":255,"y":640,"wires":[["eafa7465.d9141"]]},{"id":"b9b162a7.84aa98","type":"comment","z":"15aee0af.45f04f","name":"Huiskamerlampen","info":"","x":140,"y":600,"wires":[]},{"id":"bc7e37d4.64719","type":"link out","z":"15aee0af.45f04f","name":"","links":["e9a8e9d9.49132"],"x":525,"y":490,"wires":[]},{"id":"d7f0d084.07ce3","type":"rfxtrx-port","z":"","port":"/dev/ttyUSB-RFX433","enableDebug":true,"rfyVenetianMode":"EU"},{"id":"a888b41a.176598","type":"mqtt-broker","z":"","name":"Mosquitto","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]




Beide oranje nodes moet je eerst nog wel aanpassen naar het adres van jouw RFXcom. En die oranje rechtsonder ook naar het draadloze-signaal-adres waar jouw lamp op reageert.

Wat je ziet:
1e node handelt alle inkomende RFXcom signalen af. Die stuur ik (tijdelijk) naar de debug pane, zo kan je makkelijk ontdekken welk 'adres' elke knop heeft die je indrukt.
De verschillende adressen vul je in in de switch node 'Welke knop' zodat je afhankelijk van welke knop is ingedrukt, iets anders kan laten gebeuren. Ik heb daar dus in werkelijkheid een stuk of 10 verschillende items in zitten.

In dit voorbeeld heb ik 1 knop. Je kan erna ook nóg een switch node zetten om te kijken of de payload On of Off is, om iets verschillends laten doen. Ik stuur hem echter ongewijzigd daarna door naar de link node zodat hij onderaan uitkomt.

Daaronder zie je dat de lamp daadwerkelijk wordt aangestuurd. Die node kan namelijk met 'On' en 'Off' overweg. Dit stukje kan getrigged worden via de link node (knop ingedrukt), of via een binnenkomend MQTT bericht, namelijk als de lamp vanuit HA bediend wordt via een 'MQTT light' die ik in HA heb ingesteld.

De lamp wordt geschakeld, én de nieuwe status van de lamp wordt weer via MQTT gepubliceerd. Zodoende komt HA ook te weten dat de lamp geschakeld is als je dat vanaf een knop/afstandsbediening gedaan hebt.

Die limit-node mik ik er misschien nog eens uit.

In HA staat dan:

code:
1
2
3
4
5
6
7
light:
  - platform: mqtt
    name: "Huiskamerlampen"
    command_topic: "ha/huiskamerlampen/switch"
    state_topic: "ha/huiskamerlampen/state"
    payload_on: "On"
    payload_off: "Off"


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
//edit: ff herschreven, was warrig verhaal.

Als je die foutmeldingen in HA ziet: ik had na enkele minuten jouw code alweer verwijderd en mijn NR herstart.

/edit 2: nee, ik heb geen Hetnet.

Als je de foutmeldingen in jouw NR ziet (debug pane), dan kan het zijn dat je mijn/lolgasts code geïmporteerd hebt, die heeft dan in jouw NR een extra HA-verbinding met wachtwoord 'SECRET' aangemaakt. Je moet de geïmporteerde code dan weer verwijderen, deployen. En dan naar hamburgermenu rechtsboven -> configuration nodes. Dan zoek je de foutieve op (met waarschijnlijk een 0 erachter) en die verwijder je. Tenslotte opnieuw deployen en NR herstarten.

DeadMetal wijzigde deze reactie 14-09-2018 13:15 (73%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
@jossie67 na deployen ook nog even Node-Red herstarten, daarna gingen zulke foutmeldingen bij mij pas weg. Jammer dat dat overigens niet vanuit de GUI van NR zelf kan.

Ik ben trouwens aan het experimenteren met NR laten praten met de Xiaomi Gateway. Er bestaan diverse modules, maar ben ik ben nergens van onder de indruk. De minst slechte lijkt node-red-contrib-xiaomi-smart-devices , echter, nergens staat beschreven hoe je de Gateway commando's geeft (lamp/speaker aan/uit).

/edit: nou, die kan ook wel de prullenbak in, regelmatig krijg je elk bericht dubbel doorgestuurd tot na een reboot van NR.

DeadMetal wijzigde deze reactie 14-09-2018 16:11 (11%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Ik heb de meeste van mijn Xiaomi sensoren nu overgezet op ZigbeeMQTT incl. een usb-stick ipv status uitlezen via de Xiaomi Gateway.

Wat ik momenteel doe is dat Home Assistant die MQTT-berichten nu uitleest en de status van alle ramen/deuren bijwerkt. NR leest dat uit ('HA events:state' node) zoals voorheen, dus aan de kant van NR is er nog niks veranderd.

Nu wil ik gaan experimenteren met NR zelf de logica laten uitvoeren m.b.t. het open en dicht gaan van ramen en deuren.

Alleen, hoe ga ik te werk? Ik heb nog geen idee.

Hoe het werkt, is dat er een MQTT-bericht binnenkomt zodra er een deur open/dicht gaat, maar tevens sturen die sensoren zo nu en dan hun status op. Een binnenkomend MQTT-bericht betekent dus niet persé een statusverandering.

Hoe zouden jullie te werk gaan voor het volgende:
- er komt een MQTT bericht binnen. Vergelijk de daarin genoemde status met de status van de sensor zoals bekend binnen NR. Pas aan indien veranderd. Dit kan natuurlijk met een variabele per sensor, maar dat lijkt me wat knullig. Bestaan er in NR modules waarbij je 'objecten' kan aanmaken die je van een status en andere data kan voorzien?

- is er een input node die wijzigingen in de status van zo'n object monitort, om vervolgens acties uit te gaan voeren bij een verandering? (vergelijkbaar dus met de HA node die statuswijzigingen monitort)

DeadMetal wijzigde deze reactie 15-09-2018 16:09 (3%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
De status ontdekken is het probleem niet, bijvoorbeeld zo. Om welke deur het gaat, is ook uit te lezen via het msg.topic.

https://tweakers.net/ext/f/7kOZmxtZ9Mpnbg9H9DChhHWP/full.png

Maar het gaat erom dat een binnenkomend bericht niet wil zeggen dat de deur zojuist open is gegaan, want die sensoren sturen hun status ook zo nu en dan 'zomaar' door.

Dus het lijkt me logisch om van elke deur een status permanent vast te houden in NR zodat je de status in het bericht kan vergelijken met de reeds bekende status in NR. Dat kan natuurlijk met knutselen met variabelen, maar er is wellicht wat beters beschikbaar om meerdere objecten en hun data in op te slaan.

En om dan een andere input node te hebben die wijzigingen in status van objecten kan monitoren als startpunt van een sequence.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Thx voor het meedenken, maar het klinkt wat omslachtig om data die al binnen NR aanwezig is, eerst weer via MQTT uit te sturen om daarna weer in NR te ontvangen.

Het punt is bijvoorbeeld dat als een raam al open is, en die sensor stuurt nogmaals een 'open' bericht, dat NR niet moet denken dat het raam zojuist is opengegaan en bijbehorende acties uitvoert. Hij moet het bericht vergelijken met de al in NR bekende status. Maar een variabele voor elke deur/raam lijkt me wat knullig, vandaar dat ik dacht aan een module waarin je objecten met waarden kan opslaan.

En dan separaat de mogelijkheid om een input node te hebben die gaat werken als een waarde gewijzigd is.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Werkt fantastisch _/-\o_

https://tweakers.net/ext/f/JkK0qrk2F0AojOABfp18C5HI/thumb.png

Het kan overigens nog iets makkelijker (zie screenshot), door niet de normale mqtt node te gebruiken, maar door module mqtt-json te installeren. Die vervangt de json string in de payload door een json object, en kan zelfs meteen de hele payload vervangen door 1 subelement in de payload, dus dan heb je de regex niet meer nodig. O+

1e node leest inkomende berichten op zigbee2mqtt/[whatever], zet payload om naar json object en vervangt de hele payload door het 'contact' element (maakt de sensor contact met de magneet). 2e node = switch node, die verwijdert zigbee2mqtt uit de topic naam zodat alleen de naam van de deur overblijft, en vervangt de payload door leesbare namen (open en dicht ipv false en true).

Het fake inject element is om te zien of een 'voordeur dicht' bericht erdoorheen zou komen terwijl de voordeur al dicht zat, is niet het geval.

DeadMetal wijzigde deze reactie 16-09-2018 08:38 (33%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Skit3000 schreef op dinsdag 18 september 2018 @ 22:52:
[...]
wanneer je Node-RED opnieuw start wordt de inhoud van de flow variabelen gewist.
Je kan dat tegenwoordig (sinds 0.19.3) voorkomen door een setting aan te passen in settings.js van Node-RED en dit toe te voegen: https://nodered.org/docs/user-guide/context#context-stores
ny-hardcore schreef op maandag 17 september 2018 @ 20:36:
[...]
Ik zou hier naar kijken:
https://flows.nodered.org/node/node-red-node-google

En dan op basis van calender events triggeren.
Nice, nu haalt Home Assistant die data nog voor me op bij Google, die logica zal ik ook eens naar Node-Red verplaatsen. /edit: toch maar niet, ik zie dat NR dan bereikbaar moet worden van buitenaf.

DeadMetal wijzigde deze reactie 20-09-2018 16:01 (4%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Geinig. Wat voor apparaat leest die tags uit? Als die tags prijzig zijn, wat wellicht ook een optie kan zijn, zijn NFC stickers, die koop je voor zo'n 10 cent per stuk op AliExpress. Ik merk alleen wel dat het vaak best even een aantal seconden kan duren voordat mijn telefoon dan detecteert dat ik zo'n tag scan, maar zou ook aan de telefoon kunnen liggen of dat ik hem net niet goed plaats.

DeadMetal wijzigde deze reactie 24-09-2018 18:47 (4%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Volgens mij kan het wel simpeler. Overigens probeer ik weg te blijven bij strings met waardes 'true' of 'false', omdat dat verwarring kan geven met booleans met diezelfde waardes. Daarom hieronder aangepast naar On en Off (en tevens omdat mijn rfxcom module met on en off kan omgaan).

De inject-node stuurt daarom nu ook 'On' ipv een timestamp.

code:
1
[{"id":"32bc5fa9.401e68","type":"debug","z":"15aee0af.45f04f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":738,"y":704,"wires":[]},{"id":"a38bf778.d39c9","type":"time-range-switch","z":"15aee0af.45f04f","name":"","lat":"51.76702","lon":"5.52032","startTime":"17:00","endTime":"22:00","startOffset":"","endOffset":"","x":420,"y":710,"wires":[["1dc85dea.c702ca"],[]]},{"id":"f58258.ee7ddda8","type":"schedex","z":"15aee0af.45f04f","name":"","suspended":false,"lat":"51.7668","lon":"5.5205","ontime":"sunset","ontopic":"","onpayload":"On","onoffset":"","onrandomoffset":0,"offtime":"23:15","offtopic":"","offpayload":"Off","offoffset":0,"offrandomoffset":0,"mon":true,"tue":true,"wed":true,"thu":true,"fri":true,"sat":true,"sun":true,"x":160,"y":710,"wires":[["a38bf778.d39c9"]]},{"id":"19d73b77.71bf15","type":"inject","z":"15aee0af.45f04f","name":"run @ 17:30","topic":"","payload":"On","payloadType":"str","repeat":"","crontab":"30 17 * * *","once":false,"onceDelay":0.1,"x":160,"y":750,"wires":[["a38bf778.d39c9"]]},{"id":"1dc85dea.c702ca","type":"switch","z":"15aee0af.45f04f","name":"On?","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"On","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":590,"y":704,"wires":[["32bc5fa9.401e68"]]}]


Voordat je daadwerkelijk de lampen inschakelt, zou je evt. nog een check kunnen doen of ze al aanstaan zodat hij het niet twee keer per dag probeert.

https://tweakers.net/ext/f/cEghqzPn6MzyQepu4Gnzn7PE/full.png

/edit: die check 'On?' kan er eigenlijk ook tussenuit, want je off-bericht van 23.15 komt al niet door de time-range-switch node heen omdat die tot 22u berichten doorlaat.

DeadMetal wijzigde deze reactie 03-10-2018 07:55 (6%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Ik moet ook niet proberen te denken als ik nog geen koffie op heb ;)
En zoiets dan?

code:
1
[{"id":"3c1bf2f2.aba5de","type":"debug","z":"15aee0af.45f04f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":800,"y":710,"wires":[]},{"id":"46adba06.647614","type":"time-range-switch","z":"15aee0af.45f04f","name":"","lat":"51.76702","lon":"5.52032","startTime":"17:00","endTime":"23:59","startOffset":"","endOffset":"","x":580,"y":717,"wires":[["3c1bf2f2.aba5de"],[]]},{"id":"7d6d15a6.24cd2c","type":"schedex","z":"15aee0af.45f04f","name":"","suspended":false,"lat":"51.7668","lon":"5.5205","ontime":"sunset","ontopic":"","onpayload":"true","onoffset":"","onrandomoffset":0,"offtime":"23:15","offtopic":"","offpayload":"false","offoffset":0,"offrandomoffset":0,"mon":true,"tue":true,"wed":true,"thu":true,"fri":true,"sat":true,"sun":true,"x":350,"y":718,"wires":[["46adba06.647614"]]},{"id":"ef9698cb.659e28","type":"inject","z":"15aee0af.45f04f","name":"run @ 17:30","topic":"","payload":"true","payloadType":"str","repeat":"","crontab":"30 17 * * *","once":false,"onceDelay":0.1,"x":160,"y":770,"wires":[["1c0242c1.663e95"]]},{"id":"1c0242c1.663e95","type":"time-range-switch","z":"15aee0af.45f04f","name":"","lat":"51.76702","lon":"5.52032","startTime":"sunset","endTime":"22:00","startOffset":"","endOffset":"","x":350,"y":770,"wires":[["46adba06.647614"],[]]}]



Om 17.30 wordt gecheckt of de zon al onder is, anders gaat het bericht niet verder.
En de bovenste time-range-switch laat nu ook het false-bericht van 23.15u door, zodat de lampen ook nog uit kunnen gaan.



/edit: of zo:

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Ik zou graag willen dat ik die koffie niet nodig had ;)

Overigens laat ik mijn lampen 45m voor zonsondergang al aangaan, dan begint het toch al wat donker binnen te worden, m'n huiskamer is niet heel licht. Dat kan je doen door in de schedex node -45 in te vullen bij 'On offset'. Evt. kan je dan zelfs nog random gedrag laten plaatsvinden via het checkboxje eronder (dan gaat hij aan ergens willekeurig tussen 45m voor zonsondergang en de zonsondergang zelf)

@GAEvakYD ik herstart NR altijd nadat ik HA herstart heb, puur uit voorzorg. Ik had jouw probleem ook, echter enkel bij de 'events:all' node, niet bij de 'events:state' node. Die events:all heb ik inmiddels niet meer nodig (NR stuurt meer en meer hardware zelf aan, ipv via HA ontdekken dat er bijv. een knop is ingedrukt), en heb dus ook geen last meer van dit probleem.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Zou het kunnen dat die 'Get lux bijkeuken' na een reboot nog geen waarde heeft? Want die rapporteert wellicht niet elke minuut zijn gemeten lichtsterkte aan HA, maar bijv. eens per 5-10 minuten (zoals bij mijn xiaomi thermometer). Dan mislukt wellicht je 'lux to number' actie.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
In principe hoeft dat niet en is NR automatisch weer connected met HA, dat is hij bij jou ook, er staat 'connected' onder de donkerblauwe nodes. Je zou het even kunnen testen door direct na de 'berging beweging' node een debug node te hangen. Als je dan na een herstart van HA wat beweging laat detecteren, zie je of die gegevens ook nog meteen in NR aankomen.

Als in jouw geval de lux sensor nog enkele minuten geen waarde in HA heeft, dan heeft een restart van NR geen toegevoegde waarde overigens.

/edit: het zou ook echt een bug kunnen zijn in de NR module die met HA connect:
https://github.com/AYapej...-home-assistant/issues/93
Overigens is hier ook wel wat commentaar te vinden van mensen die vinden dat die module nodig wat updates zou moeten krijgen: https://github.com/AYapej...-home-assistant/issues/99
(voor de volledigheid: de module is niet door de ontwikkelaars van NR gemaakt, maar door derden)

/edit2: die node-red-contrib-home-assistant module is sinds 2 dagen geforkt en beschikbaar als node-red-contrib-home-assistant-llat vanuit NR. Daar wordt wel actief aan ontwikkeld. Ik vind het alleen nog iets te vroeg om die uit te gaan proberen. De beheerder is zelf geen programmeur, maar hij ergerde zich aan het feit dat verbeteringsvoorstellen (+code) van derden niet door de beheerder van node-red-contrib-home-assistant geaccepteerd werden en er geen nieuwe versies uitgebracht werden voor lange tijd. Hij regelt dat met de fork wel, maar programmeert niet zelf aan de module.
Ik kijk de kat nog even uit de boom omdat mijn NR nu eindelijk prima werkt, maar het ziet er veelbelovend uit.

DeadMetal wijzigde deze reactie 03-10-2018 16:03 (72%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Ik ben me nu in die node-red-contrib-home-assistant-websocket aan het verdiepen. Heb nog wat kleine issues maar als die verholpen zijn schrijf ik hier m'n ervaringen wel even op, en hoe je kan migreren.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Ja, ik had ook last van die bug, waardeloos. Op een paar plekken heb ik toen een change-node moeten zetten die de payload kopieert (bijv. set msg.melding to msg.payload) zodat ik die daarna weer terug in de payload kon stoppen nadat een HA-node de originele waardes onbedoeld overschreven had.

Zou mooi zijn als dat er in de websocket versie uit kan.

Voor als je over wil stappen op de websocket versie, installeer die dan niet zomaar vanuit NR, dan heb je dezelfde problemen als @GAEvakYD.

Het blijkt zo te moeten: https://community.home-as...sistant-websocket/71032/7
M.a.w. NR stoppen, de oude module verwijderen en de nieuwe instaleren via de command line, en NR weer starten. Dan hoef je niks aan al je bestaande HA nodes te veranderen. Wel tenslotte even opnieuw de verbinding met HA vanuit NR instellen. Daarna deployen maar ik moest NR toen nog een keer herstarten voordat het werkte.

@GAEvakYD hoe jij jouw probleem kan fixen, is al je flows exporteren vanuit NR (hamburgermenu -> export -> clipboard - kies all flows (!). Sla het ergens op in een tekstbestand. Vervolgens alle flows verwijderen in NR en deployen. Dan zijn je HA modules ongebruikt en kan je ze verwijderen. Dan NR herstarten, de goede module weer installeren (meteen maar websocket zou ik zeggen), dan alle flows weer importeren in NR en opnieuw deployen. Klinkt riskant, maar bij mij werkte het :P

Toch werkt het bij mij nog niet 100% vlekkeloos met de websocket module, zie hier: https://github.com/zachow...istant-websocket/issues/3
Misschien beter om nog even te wachten voor als je momenteel geen grote issues hebt.

DeadMetal wijzigde deze reactie 04-10-2018 15:04 (3%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Ik werk met flows per onderwerp, bijv. 'Lampen', 'Afstandsbedieningen', 'Beveiliging', 'Misc'.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Wellicht helpt het om binnen een flow gebruik te maken van 'comment' nodes om aan te geven waarover bepaalde sequences gaan. Zo los ik het tot nu toe op. Maar mee eens, de vakjes van de verschillende tabbladen zijn onnodig breed.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Ik heb node-red-contrib-home-assistant-websocket nu ook goed werkend nu er zojuist een nieuwe versie is uitgebracht. Ik ga die vanaf nu noemen in de startpost. Ook goed om al op een websocket-verbinding te zitten, want de maker van HA schreef in juli 'Home Assistant is moving away from Rest to WebSocket calls' dus die oude module zal ooit eens stoppen te werken.

Geen API password maar met een access token. @RobertMe da's eenvoudig. In Home Assistant vanaf 0.78 het zijmenu aan de linkerkant openklappen en bovenaan aan de rechterkant van het zijmenu op de letter klikken. Ik denk dat dat de 1e letter van je HA user-naam voorstelt. Op de pagina die verschijnt onderaan klikken op 'Token aanmaken'. Dan een naam invullen (Node-RED bijv.), de token kopiëren en op OK klikken.
En die dan in NR invullen, maar dan wel het vinkje verwijderen bij 'use legacy API password'.

/edit: heb legacy api_password nu ook helemaal verwijderd in HA.

DeadMetal wijzigde deze reactie 05-10-2018 16:24 (20%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
@GAEvakYD je moet in HA een token voor NR aanmaken. Zie mijn uitleg hier: DeadMetal in "Node-RED - grafisch 'programmeren' (bijv. voor domotica)"

Dat token vul je in NR in, zonder die 'legacy api' checkbox aan te vinken.

/edit: versie 0.0.7 is net een half uurtje uit, die heeft 'Added more checks to see if server is selected before calling "GET /homeassistant/entities"' dus upgrade voor de zekerheid even.

DeadMetal wijzigde deze reactie 07-10-2018 10:06 (27%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Ik doe zoiets met een template node, die is ook krachtig en eenvoudiger dan een function node.

Bij 'set property' kies je 'msg.payload'. Bij 'format' kies je 'mustache template'

En dan kan je in het invoerveld bijv zoiets typen:

JSON:
1
{"data":{"message": "Het alarm gaat af vanwege openen {{deur}}!"}}

Omdat je 'mustache template' hebt gekozen, gaat hij {{deur}} vervangen door de waarde in "msg.deur". Als jij al een waarde in msg.payload hebt staan, kan je dus {{payload}} typen neem ik aan.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
ThinkPad schreef op maandag 8 oktober 2018 @ 16:14:
[...]

Even door al het HASS > Node-RED geweld heen breken.... Of ben ik de enige die Node-RED zonder HASS gebruikt? :9
Nee :P , zie:
nickyb2 schreef op maandag 10 september 2018 @ 17:17:
[...]
Als je NodeRED hebt draaien zet je langzaam (of snel) zaken over van Home Assistant naar NodeRED en .. verwijder je Home Assistant :) want die heb je dan waarschijnlijk niet meer nodig.
Voor wat betreft een restart:
lolgast schreef op maandag 8 oktober 2018 @ 19:01:
[...]
Maar staat NR zo vaak uit dan? Want als je NR herstart ná de sunset zou de verlichting al aan moeten zijn
Precies wat ik ook dacht. Maar als ik NR persé iets wil laten doen/checken na een restart dan gebruik ik de 'startup-trigger' node.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
@Thoit, voor wat betreft probleem nr 2, je kan in die 1e node meerdere deuren/ramen laten monitoren in slechts 1 node. Je kan er bij entity ID namelijk meerdere intypen, gescheiden door een komma, bijv. 'binary_sensor.voordeur,binary_sensor.schuurdeur,binary_sensor.achterdeur'.

En dan kan je evt. ook nog bij 'halt if state' 'off' intypen, zodat enkel het open gaan van deuren de sequence in gang zet. Welke deur precies open gegegaan is, staat in 'msg.topic'.

Klein dingetje om op te letten (er vanuitgaande dat je Xiaomi gebruikt), is dat de state ook 'unavailable' kan zijn. Ik heb als 2e node daarom nog een switch node om te kijken of de state 'on' of 'unavailable' is. Dat laatste kan overigens ook interessant zijn om een aparte melding van te krijgen, om een beeld te krijgen van hoe vaak dat gebeurt.

DeadMetal wijzigde deze reactie 11-10-2018 18:22 (11%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Als je een debug node toevoegt, dan staat die standaard op 'msg.payload'. Je kan hem aanpassen naar 'entire msg object', dan zie je wel de volledige inhoud van de msg incl. de msg.topic.

Meerdere sensoren in 1 node als volgt:
https://tweakers.net/ext/f/5LyLgrL06KhtXdTclmfTRLVm/thumb.png

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
De afhankelijkheid met HA ja, en omdat de stabiliteit van mijn PI en de koppeling tussen NR en HA op dat moment te wensen overliet, maar dat lijkt verholpen. Momenteel heb ik nog steeds de setup die @Kaspers noemt in gebruik, HA leest de MQTT-berichten uit, NR leert de status van HA.

Gisteren kwam mijn nieuwe module met externe antenne voor zigbee2mqtt binnen, hopelijk heeft die wel voldoende bereik voor alle sensoren in huis (de usb-stick heeft dat niet, de Xiaomi gateway wel). Als dat goed werkt, ga ik toch nog eens kijken of ik dit met enkel NR kan oplossen. En inderdaad, de huidige status vergelijken met de vorige status kan nuttig zijn. Maar aangezien NR de bestaande/oude status al zou kunnen weten/onthouden, is daar vast wel wat op te verzinnen.

DeadMetal wijzigde deze reactie 13-10-2018 16:10 (14%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Idealiter zou ik inderdaad een module hebben waarin je objecten kan definiëren (voordeur, achterdeur, etc) die de mogelijkheid biedt om een waarde in op te slaan of uit te lezen, maar die kan ik niet vinden. Tenzij je daarvoor een externe database wilt gebruiken maar dat is onnodig complex.
Ik ga het waarschijnlijk oplossen zoals jij zegt: voor het overschrijven van de waarde van de variabele, eerst de bestaande waarde uitlezen en in de msg opslaan.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Misschien heb je die json-db module sinds 0.19 helemaal niet meer nodig, via een configuratie-aanpassing kan NR de status van al zijn variabelen namelijk op disk in plaats van in het geheugen opslaan. Dan wordt het bewaard na een reboot. Zie 'persistent context':
https://nodered.org/blog/2018/08/14/version-0-19-released
jossie67 schreef op zaterdag 13 oktober 2018 @ 22:08:
[...]
Welke module met externe antenne heb je binnen gekregen?
@jossie67 als die Zigbee-module goed blijkt te werken met verbeterd bereik, kom ik er uitgebreid op terug

DeadMetal wijzigde deze reactie 16-10-2018 12:53 (21%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
@Thoit wat jij schrijft klinkt alsof je met HA wilt communiceren ("turn_on")? Terwijl @jossie67 het zonder HA maar met Zigbee2MQTT lijkt te doen. Ik weet het antwoord helaas niet, ik gebruik Zigbee2MQTT enkel om binnenkomende signalen af te handelen (sensoren, knoppen), niet om juist vanuit NR weer commando's terug te sturen.

DeadMetal wijzigde deze reactie 18-10-2018 13:24 (3%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
lolgast schreef op woensdag 17 oktober 2018 @ 18:34:
@jossie67 Waarschijnlijk heeft het er mee te maken welk commando er verwacht wordt om de lampen in te schakelen.

Verder: Je hoeft niet in JSON te sturen :? Je kunt gewoon 'ON' sturen, als dat is waar de lampen naar luisteren. Ik stuur bijvoorbeeld gewoon true/false boolean waardes. Werkt prima
Voor Zigbee2MQTT lijkt het wel met JSON te moeten:
https://github.com/Koenkk...e#zigbee2mqttdevice_idset

@jossie67, bij die inject nodes, verander het icoontje 'a-z' (links van je getypte tekst '{"state": "ON"}' eens in '{} JSON'. Want het is nu een string. Hopelijk is dat de truuk.

DeadMetal wijzigde deze reactie 18-10-2018 19:10 (3%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Ja dat kan, maar dat moet je in een template node doen, zie mijn uitleg hier:
DeadMetal in "Node-RED - grafisch 'programmeren' (bijv. voor domotica)"

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
jossie67 schreef op zaterdag 13 oktober 2018 @ 22:08:
[...]
Welke module met externe antenne heb je binnen gekregen?
Deze: https://www.dx.com/p/webe...s-module-w-antenna-429601
Maar helaas is het bereik nog steeds minder dan m'n Xiaomi Gateway (die op dezelfde plek hangt). Geen succes dus, terwijl het flashen en aansluiten lastiger is dan de usb-stick.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
In die 'thuis?' node moet 'override topic' en 'override payload' NIET aangevinkt staan.
Dan gaat het goed.

Althans, gebruik je module 'node-red-contrib-home-assistant-websocket'? Andere (oudere) varianten van de HA-module hebben een bug dat de payload altijd overschreven wordt.
Hoe je overstapt op de websocket-variant heb ik eerder hier beschreven:
DeadMetal in "Node-RED - grafisch 'programmeren' (bijv. voor domotica)"

Ik begrijp alleen niet helemaal waarom je wasmachine in de groep 'lampen' zit, of heeft je wasmachine een ingebouwd lampje ;)

DeadMetal wijzigde deze reactie 26-10-2018 15:33 (18%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
En welke HA-module gebruik je? Dan denk ik dat het daaraan ligt.

Wat je ook kan doen is de payload ergens opslaan voordat je de 'thuis?' node aanroept. Bijv. met een change-node waarbij je dan doet 'set msg.apparaat to msg.payload'. Dan heb je de waarde in msg.apparaat gestopt en wordt de waarde niet overschreven.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
/origineel bericht verwijderd. Ik dacht dat NR niet goed omging met de overgang naar wintertijd, maar alles blijkt prima te werken.

DeadMetal wijzigde deze reactie 28-10-2018 06:48 (192%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Met een config-aanpassing kan NR de waarde van variabelen ook na een herstart onthouden. Zie
DeadMetal in "Node-RED - grafisch 'programmeren' (bijv. voor domotica)"

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
RobertMe schreef op maandag 29 oktober 2018 @ 11:53:
Als NR dan opstart, of als je een deploy doet, stuurt die node dus meteen een message met de huidige status.
Ik zag die optie ja, maar snap het nut ervan nog niet helemaal. Ik bedoel: als HA herstart, zal na zijn herstart de waarde nog hetzelfde zijn (bijv: lamp staat aan) of HA is de status even kwijt (vaak het geval bij deur/raamsensoren die enkel eens in de zoveel tijd hun status doorsturen zonder dat er iets open/dicht gedaan wordt).
Maar NR heeft zijn acties al uitgevoerd toen er daadwerkelijk iets moest gebeuren. En mogelijk weet NR op dat moment dus zelfs beter dan HA wat de echte status is.

In welke gevallen heb jij iets aan die functionaliteit?

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
De schedex-module gaat helaas niet helemaal goed om met de overgang naar de wintertijd. Op de 1e dag nadat de wintertijd is ingegaan (zondagavond in mijn geval) schakelt hij een uur te laat de lampen aan. Daarna berekent hij opnieuw wanneer hij de volgende keer weer aan moet gaan (voor maandagavond) en vanaf dat moment heeft hij wel weer het juiste schema te pakken.

Ik zie dat dat ooit ook al eens gerapporteerd is, maar ik geloof dat er niet echt meer ontwikkeld wordt aan de module: https://github.com/biddst...contrib-schedex/issues/11

@lolgast : de toegevoegde waarde is bijv. extra info in NR zichtbaar bij de nodes, stabielere verbinding met HA (viel bij mij nog wel eens weg), bugfixes en de mogelijkheid tot authenticatie via een key i.p.v. api-password (die t.z.t. uit HA verwijderd lijkt te gaan worden). En simpelweg het feit dat deze weer goed onderhouden wordt.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Node-RED for Hassio v1.0.0 is out! 🎉 Now uses WebSockets and stays connected after HA restarts! You can now log in with your @home_assistant account 🔐, and much more!
bron

Voor wie Node-RED gebruikt in combinatie met de HASS.io versie van Home Assistant (ik niet),
zie: https://community.home-as...de-red/55023/414?u=frenck voor uitleg hoe je kan upgraden naar die nieuwe websocket module voor de verbinding tussen HA en NR.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Ik heb geen ervaring met Google Assistant. Heb het wel eens werkend proberen te krijgen in combinatie met HA, maar het wilde niet lukken. Inmiddels ben ik verder gevorderd met NR zodat steeds meer dingen automatisch gaan, en betwijfel ik of ik überhaupt iets met voice control zou willen.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Gebruikt iemand de 'poll state' node van de HA-module? Ik probeer het nut daarvan te ontdekken. Waarom zou je elke X-minuten om de status gaan vragen (en je dus mogelijk minuten later pas ontdekt dat er iets gebeurd is), als je ook gewoon realtime een statusverandering via de 'events: state' node binnen kan krijgen? }:O

De node lijkt ook niet goed te werken, als ik 'output on changed' activeer, krijg ik toch bij elke nieuwe poll-actie een nieuw bericht in de sequence, terwijl de status ongewijzigd is.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Misschien nuttig voor iemand hier. Mijn RPI is helaas niet volledig stabiel, en wil ik home automation verder uitbreiden, dan moet dat eerst wat robuuster worden. Een onderdeel daarvan is sneller doorhebben dat er iets mis is.

Wat ik nu heb gedaan, is via uptimerobot.com (gratis) monitoren of mijn HA nog in de lucht is. Zo nee, dan krijg ik een mailtje en een Telegram-bericht.

Daarnaast is ook de verbinding tussen NR en HA cruciaal. Dit probeerde ik eerst op te lossen door een 'poll state' node, met de gedachte: als die geen waarde kan ophalen, dan kan ik daar iets mee in NR. Maar helaas, als hij 'disconnected' is, dan wordt die hele sequence gewoon niet gestart.

Tweede gedachte was via een inject node -> 'current state' node een waarde bij HA op te halen. Maar ook dat ging niet: als de verbinding verbroken is, dan gebruikt de node gewoon de laatst bekende waarde, in plaats van dat je 'null' of 'error' zou zien of iets dergelijks.

Poging 3 was juist gebruik maken van het feit dat de waarde gelijk is gebleven, terwijl je vanuit HA een nieuwe waarde zou verwachten. Is de waarde gelijk gebleven, dan lukte het dus niet om contact op te nemen met HA. In HA heb ik daarom een uptime sensor toegevoegd, die aangeeft hoeveel minuten HA al actief is. Als NR die waarde elke 2 minuten ophaalt, dan kan het (bij een goede verbinding tussen beide) onmogelijk zo zijn dat de waarde hetzelfde is als wat 2 minuten eerder in NR bekend was.

HA configuration.yaml:

YAML:
1
2
3
4
sensor:
  - platform: uptime
    name: Uptime in minuten
    unit_of_measurement: minutes


En in NR vervolgens:
https://tweakers.net/ext/f/jiXNlyF6fC5j6HMGQI1LuPwz/thumb.png

Code (versimpeld):

code:
1
[{"id":"563ba6cc.f23fe8","type":"inject","z":"8799ecfc.352fc8","name":"","topic":"","payload":"","payloadType":"date","repeat":"120","crontab":"","once":false,"onceDelay":0.1,"x":140,"y":1650,"wires":[[]]},{"id":"321ffa3a.6b060e","type":"template","z":"8799ecfc.352fc8","name":"Bericht maken","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"\"NR is de verbinding met HA kwijt\"","output":"json","x":980,"y":1650,"wires":[["7c1b13d.247d7ec"]]},{"id":"c4b8fa5f.e8b33","type":"comment","z":"8799ecfc.352fc8","name":"Verbinding met HA monitoren","info":"","x":160,"y":1610,"wires":[]},{"id":"e04afe35.47e2b8","type":"function","z":"8799ecfc.352fc8","name":"Nieuwe waarde bekend?","func":"newmsg = {};\nvar uptime_nieuw = Math.floor(msg.payload);\nvar uptime_oud = flow.get(\"uptime\");\n\nvar verschil = uptime_nieuw - uptime_oud;\n\nif(uptime_nieuw != uptime_oud)\n{\n    //nieuwe uptime waarde verkregen, opslaan\n    flow.set(\"uptime\", uptime_nieuw);\n    newmsg.payload = \"goed\";\n}\nelse\n{\n    //de uptime waarde is nog steeds hetzelfde, dus de waarde kon niet bij Home Assistant opgehaald worden\n    newmsg.payload = \"fout\";\n}\n\nreturn newmsg;","outputs":1,"noerr":0,"x":480,"y":1650,"wires":[["36752965.0c4e7e"]]},{"id":"36752965.0c4e7e","type":"switch","z":"8799ecfc.352fc8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"fout","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":660,"y":1650,"wires":[["4e0d3af8.da796c"]]},{"id":"4e0d3af8.da796c","type":"delay","z":"8799ecfc.352fc8","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"hour","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":800,"y":1650,"wires":[["321ffa3a.6b060e"]]},{"id":"7c1b13d.247d7ec","type":"debug","z":"8799ecfc.352fc8","name":"Plaats hier een node die jou een notificatie stuurt...","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":1280,"y":1650,"wires":[]},{"id":"defea01a.fa85d8","type":"comment","z":"8799ecfc.352fc8","name":"leesmij...","info":"Zet hier nog een Home Assistant 'current state' node tussen","x":290,"y":1650,"wires":[]}]



Cruciaal is natuurlijk wel dat je in NR iets hebt wat jou een notificatie kan sturen, terwijl sommigen dat normaal gesproken wellicht (nog) via HA hebben lopen. Ik gebruik Telegram, maar je kan ook een e-mail laten sturen door NR etc.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Wat heb je in gedachten voor 'handmatig aanzetten'? Want als ik je sequence goed begrijp gaat de lamp automatisch aan als je rond etenstijd (het is donker) de keukendeur opent. Dus wat valt er dan nog handmatig te doen?

je zou die open/dicht node ook weg kunnen halen en in de 1e node enkel de gewenste status door laten sturen (halt if state = off denk ik)

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Misschien iets in de trant van:
- schakelaar wordt gebruikt -> check of de lampen nog niet aan staan.
Staan ze uit:
- lampen aanzetten
- een change node 'set flow.lampen_handmatig_ingeschakeld = true'
Stonden ze al aan:
- lampen uitschakelen
- een change node 'set flow.lampen_handmatig_ingeschakeld = false'

(gebruik dan booleans, en niet handmatig true als string gaan intypen)
Of een beetje aanpassen aan je eigen wensen, maar je snapt het idee hopelijk.

Op dat moment weet NR dus of je de light switch hebt gebruikt of niet.
Bij de bovenste sequence kan je vervolgens voordat het licht uitschakelt (bij geen motion) eerst kijken naar die variabele (via een switch node enkel in het geval van 'is false').

Persoonlijk doe ik trouwens niks met motion, maar volledig op basis van tijdstip cq. tijd zonsop/ondergang met een offset afhankelijk van het weer (bij slecht weer is het donkerder en moet het wat eerder aan dan bij mooi weer).

DeadMetal wijzigde deze reactie 08-11-2018 18:58 (19%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
ThinkPad schreef op donderdag 8 november 2018 @ 22:25:
[...]
Hoe goed werkt dit in de praktijk? Voor mij werkt motion + lux uitstekend, ook met slecht weer overdag gaat het licht dan aan. Dat heb je met jouw setup zo te horen niet?
's ochtends schakelen m'n lampen in op een tijdstip die gebaseerd is op de tijd van m'n wekker. Zo'n 5 a 10 minuten voordat ik beneden kom zeg maar. Tenzij de zon al lang op is. Ze gaan weer uit als ik de deur uit ga.

's avonds kijkt hij 1 uur voor zonsondergang naar het weer (darksky of buitenrader kan ook). Bij zonnig weer wordt er nog even gewacht, in andere gevallen gaat hij direct aan.

Dat werkt helemaal niet onaardig. Maar wat ik dus inderdaad niet heb is dat iets aangaat als het midden op de dag ineens helemaal betrekt. Kan handig zijn, maar niet zo'n behoefte aan. Overigens gaat het bij mij om de sfeerverlichting. Fellere lampen zoals keukenlamp en eettafellamp bedien ik handmatig met (dimmer)schakelaars.

DeadMetal wijzigde deze reactie 09-11-2018 08:22 (3%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Je zou die lampschakelaar kunnen verbergen in de HA interface en in plaats daarvan een virtuele schakelaar (input_boolean, of mqtt_switch als je bekend bent met MQTT) kunnen toevoegen met dezelfde friendly name.

Dan kan je NR acties laten uitvoeren als die virtuele schakelaar van status verandert. Bijv: zet je hem aan, dan laat je NR de lamp ook aanzetten. Zet je hem uit, dan laat je NR de lamp ook uitzetten. En als je timer bij geen beweging de lamp zou willen uitzetten, dan laat je dat alleen gebeuren als die virtuele switch uit staat.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
alexswart schreef op zaterdag 10 november 2018 @ 09:28:
ik probeer Node-red ook met home assistant te verbinden maar het lukt mij helaas niet
hij geeft aan "Cannot GET /homeassistant/services"

Edit het werkt inmiddels weet alleen niet wat ik gedaah heb 8)7
Ik had dat de eerste keer ook. Volgens mij was het verholpen na een herstart van NR.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Welkom :) Je bedoelt dat je in Node-RED wilt uitlezen wat de waarde van het bericht is, en indien wake=true, er iets mee gaan doen?

Om te beginnen zou ik niet de gewone MQTT input node gebruiken, maar de module 'mqtt-json' installeren en die gebruiken. Dan wordt de JSON-structuur van het inkomende bericht omgezet in subelementen in de msg.payload. Dan kan je in die node zelfs direct aangeven dat je enkel geinteresseerd bent in het 'wake' element en dan wordt msg.payload dus 'true'.

Vervolgens pak je een switch node, daarmee kan je verschillend gedrag laten uitvoeren afhankelijk van de waarde van msg.payload. Wat ik in dit geval alleen niet zeker weet of je een string of een boolean ontvangt in Node-Red. Oftewel of je dan 'true' moet intypen in de switch node, of dat je 'is true' (boolean) kan selecteren. Dat laatste is mooier, maar misschien moet je dan in Home Assistant de quotes rondom het woord true weghalen.

Hoe je kan testen wat je krijgt is een debug-node na de MQTT-node plaatsen. Dan verschijnt er ook wel string of boolean in beeld in het debug pane.

/edit: ah, ik vatte het probleem anders op. Inderdaad zoals lolgast het beschrijft is waarschijnlijk wat je zoekt. Ik ging uit van het omgekeerde, namelijk een MQTT bericht in NR willen ontvangen en daar wat mee doen.

DeadMetal wijzigde deze reactie 13-11-2018 13:56 (9%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
herofruit schreef op zaterdag 17 november 2018 @ 19:50:
Kleine vraag, is het mogelijk om bij een 'Call Service' node mogelijk om meerdere entity_id's op te geven als bij de light_on service?
Dat kan niet, maar je kan natuurlijk vanaf de voorgaande node lijntjes naar meerdere 'call service' nodes trekken

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Je zou dan een subflow kunnen maken om het wat op te schonen. Selecteer de desbetreffende nodes, ga naar het hamburgermenu rechtsboven -> subflows -> selection to subflow.
Maar persoonlijk gebruik ik die alleen als ik logica maar op 1 plek wil definiëren en op meerdere plekken wil aanroepen.

Een andere en misschien betere optie is om de desbetreffende lampen in Home Assistant te bundelen in een groep. Dan hoef je vanuit Node-RED enkel die groep aan te roepen met een 'turn_on' actie.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Cyw00d schreef op donderdag 22 november 2018 @ 20:06:
[...]

Thanks! Anders ga ik even kijken of ik de previous state kan vergelijken met de nieuwe state. Als beide hetzelfde zijn niks doen.

Thanks!
Dat is dus exact wat een RBE node voor je kan doen (report by exception). Oftewel als de msg.payload identiek is aan het vorige bericht dat bij de RBE-node aankwam, dan laat hij het bericht niet door naar de volgende node.

Een RBE node onthoudt de payload overigens per topic. Dus als je bijv. een msg.topic = voordeur met payload 'on' er naartoe stuurt, dan komt vervolgens een identiek bericht er niet doorheen, maar een msg.topic = achterdeur met payload 'on' wordt wel doorgelaten.

/edit: uiteraard kan je ook via een switch node expliciet naar de previous state kijken. Dat is het equivalent van in Home Assistant 'from: on' en "to: off" gebruiken. Ik gebruik dat zelf inderdaad ook ergens om te kijken of iets niet vanaf state 'unavailable' afkomt.

DeadMetal wijzigde deze reactie 23-11-2018 07:54 (15%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
@Milmoor. Interessant. Hoe moet ik dat precies zien, de met de lamp verbonden schakelaar is een slimme schakelaar, zoals de Shelly 1, en die andere is een draadloze zender?

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
z1rconium schreef op zondag 25 november 2018 @ 11:47:
Voor mensen die een "smart" deurbel zoeken/willen, ik heb dit filmpje gevolgd. Deurbel gekocht voor 13 euro, een esp8266 eraan gesoldeerd, wat code voor MQTT erop en nu praat ie tegen node-red en homekit.
Dank je. Een vraagje over die bel, heeft die ook gewoon een 'ding dong' geluidje wat lijkt op een normale cq. ouderwetse deurbel, of zijn alleen maar van die melodietjes? En waar heb je de bel gekocht?

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
@alexswart Om die reden heb ik een 'Bezoek aanwezig' setting (een switch in Home Assistant om precies te zijn) zodat Node-Red net wat ander gedrag kan vertonen, maar dingen wel automatisch gaan.

En @lolgast jouw oplossing is prima toch, met die template node (kende ik niet eens). Volgens mij klopt het dat je geen variabele direct in het veld kan invullen, want hij wil prefillen en wordt rood als je een niet-bestaand element invult.

DeadMetal wijzigde deze reactie 14-12-2018 12:14 (42%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
alexswart schreef op zaterdag 15 december 2018 @ 00:41:
@lolgast bedankt dat je mij opweg hebt geholpen

ik heb het nu voor elkaar dat wanneer ik en mijn vrouw afwezig zijn dmv device tracking ik op mijn telefoon een pushmelding krijg om de thermostaat uit te zetten ik weet niet of dit de mooiste oplossing is maar het werkt wel
Zou het niet als volgt simpeler kunnen?


De bovenste sequence slaat de temperatuur van de thermostaat steeds op in een variabele (er even vanuit gaande dat het een getal is).

De onderste sequence kijkt naar 'group.all_devices' (= al je device_trackers) met een 'half if' op 'home'. Als niemand thuis is, verandert die waarde naar not_home en gaat hij verder. Indien de thermostaat > 18 graden is (variabele uitlezen), krijg je een notificatie. Indien je meer device_trackers hebt, zou je ook in HA een group kunnen maken genaamd 'telefoons' waar je dan enkel de device_tracker van beide telefoons aan toevoegt, en dan monitor je die in NR bij de 'Niemand thuis' node.


code:
1
[{"id":"176869bb.91de8e","type":"server-state-changed","z":"29559b8b.3091d4","name":"Niemand thuis","server":"1951ecb2.1289bb","entityidfilter":"group.all_devices","entityidfiltertype":"substring","haltifstate":"home","outputinitially":false,"x":220,"y":1370,"wires":[["c333d1d3.8cd79"]]},{"id":"958d5e97.40b758","type":"mqtt in","z":"29559b8b.3091d4","name":"Thermostaat setpoint","topic":"events/central_heating/otmonitor/setpoint","qos":"2","broker":"ea0b500e.2b774","x":240,"y":1330,"wires":[["9f0c0c75.3ff188"]]},{"id":"9f0c0c75.3ff188","type":"change","z":"29559b8b.3091d4","name":"Thermostaat temperatuur opslaan","rules":[{"t":"set","p":"thermostaat","pt":"flow","to":"msg.payload","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":1330,"wires":[[]]},{"id":"c333d1d3.8cd79","type":"switch","z":"29559b8b.3091d4","name":"Thermostaat nog >18 graden?","property":"thermostaat","propertyType":"flow","rules":[{"t":"gt","v":"18","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":500,"y":1370,"wires":[["bcc692a5.fd937"]]},{"id":"bcc692a5.fd937","type":"api-call-service","z":"29559b8b.3091d4","name":"zend push bericht","server":"1951ecb2.1289bb","service_domain":"notify","service":"push","data":"{\"message\":\"de cv staat nog aan\",\"data\":{\"actions\":[{\"action\":\"open\",\"icon\":\"/static/icons/favicon-192x192.png\",\"title\":\"Open Home Assistant\"},{\"action\":\"17g\",\"title\":\"schakel uit\"}]}}","mergecontext":"","x":770,"y":1370,"wires":[[]]},{"id":"1951ecb2.1289bb","type":"server","z":"","name":"homeassistant","legacy":false,"hassio":false,"rejectUnauthorizedCerts":true},{"id":"ea0b500e.2b774","type":"mqtt-broker","z":"","name":"Mosquitto","broker":"192.168.1.102","port":"1883","clientid":"nodered","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Ik snap het. Persoonlijk vind ik het juist wel fijn, dan weet NR de waarde en kan je het overal binnen NR gebruiken. In NR kan je natuurlijk altijd aan HA om de status/waarde van iets vragen. Maar je kan niet aan de MQTT-broker om een waarde vragen, tenzij ik iets over het hoofd zie.

DeadMetal wijzigde deze reactie 15-12-2018 09:02 (3%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
ThinkPad schreef op woensdag 19 december 2018 @ 08:27:
Wat is het nut van een PostNL flow, de eigen app geeft je toch al een pushmelding als je een pakket krijgt :?
Dat je geen aparte app meer nodig hebt? Ik heb sinds ik HA+NR gebruik bijv. de app om m'n zonnepanelenverbruik in te zien kunnen verwijderen, evenals een om m'n tv, receiver en wekkerradio te kunnen bedienen/in te stellen.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Gebruikt er inmiddels al iemand succesvol een Node-RED mobule t.b.v. de Xiaomi gateway?
De minst slechte die ik ken is node-red-contrib-xiaomi-smart-devices maar die heeft wat bugs en de auteur doet er niks mee.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Kaspers schreef op zondag 23 december 2018 @ 18:00:
[...]
Ik heb goeie ervaring met node-red-contrib-mi-devices. Gebruik de filter nodes voor de verschillende type devices eigenlijk niet, dus gebruik louter de gateway node. Als je filtert op het device id (payload.sid), kun je de events vrij makkelijk opnemen in je flows.
Thx, die werkt goed genoeg! Ik krijg tenminste geen driedubbele berichten binnen zoals met die andere module.

Ik lees op Github wel wat bugreports dus ik hou het lekker bij de gateway in/out nodes en doe het filteren wel met switch nodes en het hernoemen naar leesbare namen via change nodes.

/edit: te vroeg gejuicht, plotseling deed hij niks meer, maar wel weer na een herstart van NR. Nog even aankijken hoe betrouwbaar deze module is.

@lolgast ik gebruik het tot nu toe inderdaad ook via HA, maar heb liever zoveel mogelijk logica in NR zelf, waar mogelijk.

DeadMetal wijzigde deze reactie 24-12-2018 08:58 (7%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Helaas toch teveel issues, ik laat de Gateway definitief via HA lopen, dat werkt stabiel.

Ik kwam nog een leuke module tegen om makkelijk wiskundige berekeningen te maken zonder function-nodes te hoeven gebruiken: node-red-contrib-calc

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Vorige week is er een nieuwe versie uitgekomen van de node-red-contrib-home-assistant-websocket module (0.50) met weer enkele nieuwe functies t.b.v. integratie met Home Assistant. Bijv. om aan te geven hoe NR een vanuit HA binnenkomende waarde moet beschouwen (string, number, boolean).

En het 'halt if state' mechanisme is veel krachtiger geworden. Je kan nu bijv. daar ook 'is not' kiezen zodat je enkel de gewenste waarde intypt en deze door laat gaan in de flow. En de node krijgt ook een 2e output zodra je een 'halt if state' invult, zodat je met onverwachte/ongewenste waarden ook nog wat kan doen. Dat maakt een extra switch node dus overbodig.

(voorbeeld: raam/deursensoren, daar had ik eerst een 'half if state = off' op zitten, want ik wil enkel weten wanneer een deur open gaat. Echter, hij kan ook 'unavailable' zijn, dus die moest ik erna nog uitfilteren in een switch node. In plaats daarvan bevat de HA node nu gewoon 'half if state - is not - on').

In de instellingen van een 'call service' node kan je nu ook 'render templates' meegeven:
"When checked will attempt to render templates within the data element including entity ids"
Daar heb ik nog niet mee gespeeld, maar het klinkt alsof je bijv. wat template nodes zou kunnen weghalen als die nu voor een call-service node staan.

DeadMetal wijzigde deze reactie 24-12-2018 19:44 (36%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
De bekende HA-module 'node-red-contrib-home-assistant-websocket' heeft sinds kort een nieuwe node genaamd 'wait until' waarbij je in een sequence kan wachten tot een HA-entiteit een bepaalde waarde bereikt (evt. nog met een timeout), incl subattributen zoals 'last changed' en je kan ook werken met > en <. Klinkt handig!

Daarmee kan je wellicht verhalingen (loops van: check waarde via de HA current state node - wacht x seconden en check weer opnieuw) vervangen door deze ene node.

DeadMetal wijzigde deze reactie 03-02-2019 20:01 (8%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
KvNwPPr schreef op woensdag 19 december 2018 @ 18:31:

Dit zou moeten werken, al is het vast niet de mooiste oplossing ;) :

code:
1
[{"id":"9b1441e6.3bae1","type":"server-state-changed","z":"1b0128b7.d1a2f7","name":"PostNL","server":"22e2907d.b234","entityidfilter":"sensor.postnl","entityidfiltertype":"substring","haltifstate":"0","outputinitially":true,"x":55,"y":2377.000072479248,"wires":[["a4547e3b.a1927"]]},{"id":"a4547e3b.a1927","type":"change","z":"1b0128b7.d1a2f7","name":"set payload","rules":[{"t":"set","p":"payload","pt":"msg","to":"data.new_state.attributes","tot":"msg"},{"t":"delete","p":"data","pt":"msg"},{"t":"delete","p":"payload.attribution","pt":"msg"},{"t":"delete","p":"payload.unit_of_measurement","pt":"msg"},{"t":"delete","p":"payload.friendly_name","pt":"msg"},{"t":"delete","p":"payload.icon","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":255,"y":2377.000072479248,"wires":[["2c8ee828.7101f8"]]},{"id":"2c8ee828.7101f8","type":"split","z":"1b0128b7.d1a2f7","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":445,"y":2377.000072479248,"wires":[["3cffec52.0fd3b4"]]},{"id":"e2536ad5.311de8","type":"function","z":"1b0128b7.d1a2f7","name":"Bericht","func":"msg.payload = \n{ text: `Op ${msg.payload} komt er een pakketje van ${msg.parts.key} `, \nparse_mode: \"Markdown\" };\n\nreturn [msg];","outputs":1,"noerr":0,"x":802.0000228881836,"y":2403.0000705718994,"wires":[["4320911c.b7c8e"]]},{"id":"4320911c.b7c8e","type":"telegrambot-payload","z":"1b0128b7.d1a2f7","name":"Versturen","bot":"76d092d0.28022c","chatId":"667099650","sendMethod":"sendMessage","payload":"","x":1007.0000305175781,"y":2404.0000705718994,"wires":[[]]},{"id":"f5fe2ca9.25116","type":"comment","z":"1b0128b7.d1a2f7","name":"PostNL","info":"","x":55,"y":2327.4375743865967,"wires":[]},{"id":"3cffec52.0fd3b4","type":"switch","z":"1b0128b7.d1a2f7","name":"Bezorgd?","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"bezorgd","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":625.1666851043701,"y":2377.0000705718994,"wires":[["f1de8a04.53ac48"],["e2536ad5.311de8"]]},{"id":"f1de8a04.53ac48","type":"function","z":"1b0128b7.d1a2f7","name":"Bericht bezorgd","func":"msg.payload = \n{ text: `Het pakket van ${msg.parts.key} is ${msg.payload}`, \nparse_mode: \"Markdown\" };\n\nreturn [msg];","outputs":1,"noerr":0,"x":826.0000228881836,"y":2346.000068664551,"wires":[["617d0d36.6ef1a4"]]},{"id":"617d0d36.6ef1a4","type":"telegrambot-payload","z":"1b0128b7.d1a2f7","name":"Versturen","bot":"76d092d0.28022c","chatId":"667099650","sendMethod":"sendMessage","payload":"","x":1006.0000305175781,"y":2346.000068664551,"wires":[[]]},{"id":"22e2907d.b234","type":"server","z":"","name":"Home Assistant","legacy":false,"hassio":false,"rejectUnauthorizedCerts":true},{"id":"76d092d0.28022c","type":"telegrambot-config","z":"","botname":"Kevintelegrambot","usernames":"","chatIds":"667099650","pollInterval":"300"}]

Ik wil ook eens met PostNL experimenteren, maar zou het kunnen dat de PostNL node in HA veranderd is? Want in jullie voorbeeldcode wordt er gewerkt met 'msg.data.new_state.attributes' en wordt de rest van de data komende uit HA verwijderd.

Echter, de data die ik vanuit HA (PostNL sensor) krijg heeft dat element helemaal niet. Ik zie data -> attributes (object) -> shipments (array).

Acties:
  • +2Henk 'm!

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Node-Red 0.20 is uit. Ik gebruikte tot nu toe de 'node-red-contrib-mqtt-json' module om een binnenkomend MQTT-bericht meteen te converteren naar een JSON-structuur, maar de standaard 'MQTT' (input) node heeft nu zelf die mogelijkheid gekregen:
The MQTT In node can now be configured to assume messages it receives are JSON and to emit the parsed object. That will save you from adding a JSON node after your MQTT In nodes if you are sure that everything you receive will be valid JSON. If the node receives something that isn’t valid JSON, it’ll log an error that can be handled with a Catch node.
https://nodered.org/blog/2019/03/12/version-0-20-released

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
De PostNL sensor blijft bij mij niet lekker werken. Want ik vaak zie is dat zodra de sensor vanuit HA van waarde 0 naar 1 verspringt (= er is een aankomend pakket), dat er op dat moment nog niet alle gegevens bekend zijn. Dan is bijv. een pakket wel aangemeld vanuit de webshop, maar ontbreken nog de gegevens zoals ontvanger/verzender/verwachte bezorgtijd. Of dat het een tekst heeft zoals 'pakket is aangemeld maar nog niet ontvangen bij PostNL'

Op zich is dat geen probleem, je zou natuurlijk met wat checks ervoor kunnen zorgen dat je in die gevallen geen notificatie krijgt.

Het probleem lijkt echter te zijn dat op een later moment die gegevens wel aangevuld worden, maar binnen HA blijft de status op 1 staan, enkel de details (binnen het object) wijzigen. Dat triggert dan binnen Node-Red geen nieuwe sequence en dus geen mogelijkheid om er wat mee te doen.

Herkennen jullie dit? Misschien is het dan beter om via een inject node op een bepaalde tijd, bijv. elke ochtend, zelf de sensor uit te lezen en een notificatie te krijgen, mits er voldoende data bekend is. Evt. met een RBE node vlak voor het eind om niet exact dezelfde notificatie te versturen t.o.v. de vorige keer.

DeadMetal wijzigde deze reactie 13-03-2019 11:52 (8%)


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Mooie suggestie. Ik zal eens iets bouwen in de trant van direct notificeren als de data beschikbaar is, en anders een delay. Als het goed werkt deel ik hier t.z.t. wel de code. Kan wat tijd overheen gaan want ik bestel niet wekelijks online ;)

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Ik heb geen ervaring met SQLite, maar heb je al gekeken naar een module om met SQLite te communiceren? Het klinkt wel haalbaar.

https://randomnerdtutoria...ode-red-and-raspberry-pi/
https://flows.nodered.org/node/node-red-node-sqlite

Overigens installeer ik modules gewoon vanuit NR zelf, niet via commando's. Simpelweg via het hamburgermenu -> manage palette

Als het je lukt om een query uit te voeren en naar een debug-node te sturen om te zien hoe de data uit de database gehaald wordt, kan je daarna aan stap 2 beginnen, namelijk hoe je de berichten wilt aanpassen alvorens tenslotte ze naar een MQTT output node (standaard functionaliteit in NR) te sturen.

Ik vermoed dat je via een split node de afzonderlijke records uit de database wilt opsplitsen in losse messages en daarna via een change node ze qua structuur aan te passen voordat ze naar de MQTT node kunnen gaan.

Acties:
  • 0Henk 'm!

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Da's simpel te realiseren met de standaard 'inject' node waarbij je dan bij 'repeat' kan kiezen voor 'at a specific time'.

Acties:
  • 0Henk 'm!

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
Gebeurt het ook bij een doodnormale inject-node die je op een bepaald tijdstip laat starten?

Acties:
  • +1Henk 'm!

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
All, let op als je de 'current state' node gebruikt van de Home Assistant module. In 0.11 is er een aanpassing gedaan aan die node. Daardoor zijn enkele sequences bij mij stuk gegaan.

Als je een sequence hebt waarbij vóórdat je de 'current state' node aanroept, je msg.payload.entity_id al gevuld is, dan zal de status van die entiteit opgevraagd worden bij HA, en niet de status van de entiteit die je hebt ingetypt binnen de instellingen van de 'current state' node.

Bijvoorbeeld: je drukt op een fysieke knop, en je vangt dat af via de HA 'all events' node, dan is de msg.payload.entity_id waarde (zoals altijd) gevuld met welke knop er is ingedrukt. Als je dan vervolgens bij HA via 'current state' wil opvragen of een lamp aan staat, dan zal in deze situatie de status van de knop opgevraagd worden, niet van de lamp.

Om dat te voorkomen moet je binnen de 'current state' node het vakje 'block input overrides' aanvinken. Die optie is twee dagen geleden toegevoegd in v0.12

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 17:10
@Enzoz89 Het klinkt eenvoudig te realiseren, maar er mist nog wat info. Is de knop op de overloop ook beschikbaar in Node-Red / HA? Want het indrukken daarvan moet neem ik aan de trigger zijn van de sequence en dus de 1e node zijn in de sequence. Vervolgens pak je bijv. inderdaad de time range switch module. Dan gaat hij via de ene output als het binnen de geconfigureerde periode is, en via de andere output daarbuiten. En na die node plaats je dan de nodes die daadwerkelijk aan Home Assistant moeten vragen om 1 of 4 lampen aan te zetten.

/even out of the box denken: een andere optie zou kunnen zijn - enkele druk op de knop = 1 lamp aan, dubbelklikken = 4 lampen aan, als de knop die je gebruikt dat kan detecteren.

DeadMetal wijzigde deze reactie 13-06-2019 19:35 (12%)

Pagina: 1


OnePlus 7 Pro (8GB intern) Microsoft Xbox One S All-Digital Edition LG OLED C9 Google Pixel 3a XL FIFA 19 Samsung Galaxy S10 Sony PlayStation 5 E3 2019

Tweakers vormt samen met Tweakers Elect, Hardware.Info, Autotrack, Nationale Vacaturebank, Intermediair en Independer de Persgroep Online Services B.V.
Alle rechten voorbehouden © 1998 - 2019 Hosting door True