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: 10:21

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%)


  • ThinkPad
  • Registratie: juni 2005
  • Nu online

ThinkPad

Moderator Duurzame Energie & Domotica

L460

Leuk topic :) Vind het zelf wel een handige tool/applicatie. Was voorheen vaak wel knutselen met Bash/Python scripts om bepaalde zaken aan elkaar te knopen. Met Node-RED gaat dat toch een stuk eenvoudiger merk ik. Ook is het duidelijker te volgen wat er gebeurt.

Ik heb zelf een aantal flows draaien, een leuk voorbeeld is deze:


Hiermee laat ik het licht dimmen als we de TV aanzetten, om op die manier een beetje een bioscoop ervaring (dimmende lichten als film begint) te creeren. Hij monitort de events op de pricewatch: Logitech Harmony Companion en stuurt dan m'n Philips Hue Hub aan.

Een andere flow bereken ik m'n bruto elektriciteitsverbruik mee. Omdat ik zonnepanelen heb kan ik het verbruik niet goed meer uitlezen uit m'n slimme meter. Bij veel zon wordt die namelijk negatief. Dat is natuurlijk gunstig, maar ik was daardoor wel kwijt wat de apparatuur in huis nou daadwerkelijk gebruikt. Met twee stuks merk: YouLess en wat logica kan ik het nu alsnog berekenen en naar InfluxDB sturen. Met Grafana maak ik daar dan weer een grafiek van.
https://tweakers.net/ext/f/XPefNsxwEjCvTuaqEwyu4Lau/full.png

Gas besparen door CV-tuning | Elektriciteit besparen
Geen (Domoticz) vragen via privébericht die ook via het forum kunnen a.u.b.

@WackyWindsurfer Waarom heb je volgens jou de light-scheduler nodig als dat ook met een inject node kan?



Heb je meteen die rbe niet nodig volgens mij

lolgast wijzigde deze reactie 10-09-2018 13:03 (10%)

@WackyWindsurfer Volgens mij kan hij ook zo. Ik heb niet naar je schedules gekeken dus zomaar wat gekozen.


code:
1
[{"id":"b2852489.ebb928","type":"debug","z":"ba68260d.f9c468","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":910,"y":1900,"wires":[]},{"id":"327a8e20.bfb252","type":"delay","z":"ba68260d.f9c468","name":"","pauseType":"delay","timeout":"10","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":590,"y":1940,"wires":[["af039a4c.e50978"]]},{"id":"af039a4c.e50978","type":"api-call-service","z":"ba68260d.f9c468","name":"Upload","server":"39fd7a9b.252f86","service_domain":"hassio","service":"addon_start","data":"{\"addon\":\"8aef3602_dropbox_upload\"}","mergecontext":"","x":740,"y":1940,"wires":[["b2852489.ebb928"]]},{"id":"5ceac637.9bbf28","type":"api-call-service","z":"ba68260d.f9c468","name":"Snapshot","server":"39fd7a9b.252f86","service_domain":"hassio","service":"{}","data":"{}","mergecontext":"","x":640,"y":1900,"wires":[["b2852489.ebb928"]]},{"id":"ac438e49.9881d","type":"function","z":"ba68260d.f9c468","name":"format snapshot","func":"msg.payload = {\n      data:  {\n        \"name\": (new Date().toISOString().replace(':', '_').replace(':', '_').replace(/\\..+/, ''))+\"_Snapshot\",\n        \"folders\":[\"homeassistant\",\"share\"]\n      }\n    }\nif ( msg.topic === \"full\" ) {\n    \n    msg.payload.service = \"snapshot_full\";\n    \n} else if ( msg.topic === \"partial\" ) {\n    msg.payload.service = \"snapshot_partial\";\n\n} else {\nreturn [ null ]\n}\nreturn [ msg ];","outputs":1,"noerr":0,"x":420,"y":1900,"wires":[["5ceac637.9bbf28","327a8e20.bfb252"]]},{"id":"c7febab2.15d628","type":"inject","z":"ba68260d.f9c468","name":"","topic":"full","payload":"","payloadType":"str","repeat":"","crontab":"00 03 * * 0","once":false,"onceDelay":0.1,"x":210,"y":1900,"wires":[["ac438e49.9881d"]]},{"id":"44b9cdce.fd46d4","type":"inject","z":"ba68260d.f9c468","name":"","topic":"partial","payload":"","payloadType":"str","repeat":"","crontab":"00 03 * * 1,2,3,4,5,6","once":false,"onceDelay":0.1,"x":220,"y":1940,"wires":[["ac438e49.9881d"]]},{"id":"39fd7a9b.252f86","type":"server","z":"","name":"Home Assistant","url":"http://hassio/homeassistant","pass":""}]


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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%)

@nickyb2 Ik ga ervanuit dat je dan iets met nodered dashboard gedaan hebt?

Volledige automatisering zonder overrule mogelijkheid vanuit een interface ga ik mijn vrouw niet verkocht krijgen in ieder geval :P Plus dat ik zelf van tijd tot tijd in HA kijkt hoe een en ander er voor staat.

  • AUijtdehaag
  • Registratie: oktober 2006
  • Niet online
@DeadMetal
Misschien een linkje in de topicstart naar https://pagenodes.com/# (online node-red)
Openen in chrome (denk ik)

AUijtdehaag wijzigde deze reactie 10-09-2018 19:46 (15%)

PV Output - Panasonic Hit Kuro/Solar Frontier - 5 kW Mitsubsidie


  • AUijtdehaag
  • Registratie: oktober 2006
  • Niet online

PV Output - Panasonic Hit Kuro/Solar Frontier - 5 kW Mitsubsidie


  • nickyb2
  • Registratie: oktober 2012
  • Laatst online: 24-06 20:37
Ik kan enkel spreken over mijn eigen ervaringen. Voor mij was HA niet meer nodig, dus heb het weg gedaan. Ik kan me best voorstellen dat je HA (of iets anders) wel gebruikt als je een device hebt die je met NR niet aan de gang krijgt.

Voorheen had ik zwave, dit werkte redelijk feilloos in HA maar (toen) niet in NR. Echter is Zwave bij mij geheel vervangen door HUE, wat weer prima werkt in NR.

Een dashboard gebruik ik niet, alles gaat automatisch. Ik zie het nut van een dashboard om bijvoorbeeld lampen aan en uit te doen niet. Het kost mij meer tijd om dat via een app te doen dan dat het zou doen via de licht schakelaar. Daarnaast moet het voor mijn kids ook werken en hoewel ze wel willen krijgen ze van mijn nog geen telefoon.

Een dashboard voor bijvoorbeeld metingen gebruik ik dan weer wel, hiervoor gebruik ik in NR de HTTP nodes. Als het ware maakt je endpoints die ik in een simpele static html site aanroep. Wederom precies wat ik nodig heb en niet meer.

Waar ik voorheen alles probeerde te automatiseren, ben ik nu meer van mening dat het automatiseren ook nut moet hebben. Bijvoorbeeld een buitenlamp, je kunt er een hue lamp in doen, regels er aan dat hij bij donker aangaat, etc -of- gewoon een lamp met lux sensor erin kopen.

Ik vind hue addons zoals die hue magic een hoog, leuk voor een keer, gehalte hebben. 99% van de tijd staat mijn verlichting in de juiste stand, dus heb in principe maar 1 scène. Voor mij is dat voldoende, voor iemand anders misschien niet waar zo’n addon juist heel veel kan helpen.
quote:
Dylantje2 schreef op maandag 10 september 2018 @ 19:52:
Waar je het wiel kunt zoeken en aanpassen ipv alles opnieuw leren..
..
Ik heb liever dat je het leert, misschien is jouw ‘wiel’ wel beter. ;)

nickyb2 wijzigde deze reactie 10-09-2018 20:04 (8%)

Mijn AdvertentiesTweakBlog

Speciaal voor @Dylantje2 en ter lering en vermaak uiteraard :)



Mijn bouwsel waarbij de accu van mijn motor elke dinsdagnacht door de acculader wordt opgeladen. Ik zit via de inject node de MQTT waarde op ON. Daardoor krijg ik een berichtje op de telefoon (voor de leuk :+ ) en gaat het trafficlight op groen. Ik zet de teleperiod van Tasmota daarbij op 15 seconden, welke vervolgens doordat de trafficlight op groen staat continu een update geven. Als de teleperiod 3 minuten lang een verbruik van < 5watt doorgeeft gaat de lader weer uit (net als de trafficlight) en de teleperiod op 300 seconde.

De trafficlight gebruik ik om doelloze posts naar de MQTT voorkomen :)

Voor plaatjes van de sonoff zelf zie lolgast in "Home Assistant - Open source Python3 home automation"

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

  • Rmg
  • Registratie: november 2003
  • Laatst online: 11:54
quote:
Dylantje2 schreef op maandag 10 september 2018 @ 21:14:
Spannend:
Verkeersinformatie, met een pushbericht wanneer ik een alternatieve route naar werk en/of huis moet nemen (en geen bericht wanneer ik gewoon door kan rijden).

Is er ook een soort van mqtt die in maps oid zichtbaar laat zien waar telefoons zijn?
Dus een soort volgsysteem op basis van mqtt ..

Telefoon met mqqtt erop die dan zichtbaar is op maps..
En dan bijv. binnen een cirkel van huis of school oid een berixht verstuurd :-)
Higher mat voor mij,.... Maar stel dat het kan..

Ik ga eerst lampje aan en uit proberen te krijgen:-)
Owntracks (owntracks recorder als ui bijv) kan exact dat https://owntracks.org/booklet/guide/how/

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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.
quote:
MsG schreef op dinsdag 11 september 2018 @ 10:27:
...

Terwijl de sensor prima connected lijkt te zijn in Node-Red en ook werkt. Ik zie dat meer mensen dit hebben. Ik heb HomeAssistant gekoppeld aan een publiek ip en werk met https. Hierdoor is er geen lokale werkende URL meer die ik kan ingeven in Node-Red. kan ik die meldingen ook blokkeren? Want ze vertroebelen het debug-window enorm.
Waarom? Lijkt me doelloos verkeer over je huis via het internet
Mijn fout, ging om de verbinding van HA, niet vanuit Node-RED naar HA
Voor wat betreft je debug melding. Herstart Node-RED eens :)

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

lolgast wijzigde deze reactie 11-09-2018 10:40 (18%)


  • nickyb2
  • Registratie: oktober 2012
  • Laatst online: 24-06 20:37
Refthoom schreef op dinsdag 11 september 2018 @ 18:48:
[...]

Ik zou ook graag aan Google Assistent de opdracht geven; "Praat met domoticz en stel de staande IKEA lamp in om aan te gaan als het donker wordt en uit te gaan om half elf."
Ik zou dat juist totaal niet willen, al ben ik biased want de Google Assistent zou mij dermate niet begrijpen dat de TV uit gaat in plaats van de lamp aan. Mocht dat dan ook nog tijdens GTST gebeuren dan mag ik op de bank slapen.

De belangrijkste vraag is: wat is programmeer kennis? Zelf denk ik niet dat je onderuit komt om een zekere kennis op te doen hoe je een idee omzet in code. Of dat stukje code nu een set bestaande nodes zijn of iets wat je zelf in bijvoorbeeld een function node typt staat daar los van.

Met een beetje interesse en de wil om er iets van te begrijpen kun je een heel eind komen.

Mijn AdvertentiesTweakBlog


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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.

  • Skit3000
  • Registratie: mei 2005
  • Laatst online: 24-06 15:11
ny-hardcore schreef op maandag 10 september 2018 @ 23:01:
[...]

Welk merk auto heb je en welke odb2 stekker?
Ik heb nog steeds geen stekken gevonden die dit van mijn ford en Toyota kan uitlezen .....
(Ik heb de traccar custom component voor home assistant geschreven trouwens )
Ik speel een beetje vals, mijn stekker (goedkope merkloze ELM327) kan het brandstofniveau ook niet direct uitlezen. In plaats daarvan gebruik ik AndrOBD met een MQTT plugin om de "Distance since ECU reset" uit te lezen. Mijn auto (Lexus CT200h) is redelijk constant met verbruik (tussen 4,0 en 4,5 liter/100 km) dus ik kan aardig afleiden wanneer het nodig is.

Elke ochtend heb ik een flow die bij Mijn ING inlogt (met nbrowser) om na te gaan of ik de dag ervoor heb getankt. Zo ja, dan sla ik de kilometerstand op en reken ik vanaf daar 400 km bij. Heb ik de dag ervoor niet getankt en ik heb de 400km overschreden sinds de vorige tankbeurt, dan check ik de prijzen langs mijn woon-werk route en laat ik Telegram een appje sturen voor ik de deur uit ga, met waar ik het beste een stop kan maken.

Ik heb ook een tijdje mijn Google Home gebruikt om me te herinneren om te tanken, maar als je al een stream hebt draaien wordt die onderbroken. Ik ben er nog niet achter hoe ik kan achterhalen of er een stream draait en zo ja, wélke.

Voor de liefhebbers, als je de chromecast-play node installeert, kun je met een payload zoals hieronder Google Translate gebruiken om een audio stream te maken die de Google Home af kan spelen.


JavaScript:
1
2
3
4
5
6
msg.payload = {
    "ip":"123.123.123.123", // IP-adres van je Google Home
    "url":"http://translate.google.com/translate_tts?ie=UTF-8&total=1&idx=0&textlen=32&client=tw-ob&q=JE%20TEKST%20HIER&tl=nl-nl",
    "contentType":"audio/mp3"
}
return msg;


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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.

  • Skit3000
  • Registratie: mei 2005
  • Laatst online: 24-06 15:11
Voor wie interesse heeft, ik heb even wat onderdelen van mijn ING-flow uit elkaar getrokken, waarmee je een lijst met transacties en je huidige balans op kunt vragen.



Nodes:Flow:

JavaScript:
1
[{"id":"99ca7248.e4101","type":"debug","z":"10000ac3.439e25","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"account","x":710,"y":120,"wires":[]},{"id":"fbc3f47.6d61f08","type":"inject","z":"10000ac3.439e25","name":"","topic":"","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":100,"wires":[["bdaca4b.bfc3958"]]},{"id":"c31c011a.80a51","type":"nbrowser","z":"10000ac3.439e25","name":"Inloggen","methods":[{"name":"userAgent","func":"useragent","params":[{"type":"str","value":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20120101 Firefox/33.0","typeDefault":"str"}]},{"name":"gotoURL","func":"goto","params":[{"type":"str","value":"https://mijn.ing.nl/login/","typeDefault":"str"}]},{"name":"insert","func":"insert","params":[{"type":"str","value":"input#username","typeDefault":"str"},{"type":"msg","value":"username","typeDefault":"str"}]},{"name":"insert","func":"insert","params":[{"type":"str","value":"input#password","typeDefault":"str"},{"type":"msg","value":"password","typeDefault":"str"}]},{"name":"click","func":"click","params":[{"type":"str","value":"button#submitButton","typeDefault":"str"}]},{"name":"click","func":"click","params":[{"type":"str","value":"button#ing-close-modal","typeDefault":"str"}]}],"prop":"nbrowser","propout":"payload","object":"msg","objectout":"msg","close":false,"show":false,"ssl":false,"outputs":1,"x":420,"y":100,"wires":[["9b89ae8a.570a"]]},{"id":"55ea9471.6432ec","type":"nbrowser","z":"10000ac3.439e25","name":"Sessie sluiten","methods":[],"prop":"nbrowser","propout":"payload","object":"msg","objectout":"msg","close":true,"show":false,"ssl":false,"outputs":0,"x":720,"y":80,"wires":[]},{"id":"bdaca4b.bfc3958","type":"credentials","z":"10000ac3.439e25","name":"","props":[{"value":"username","type":"msg"},{"value":"password","type":"msg"}],"x":270,"y":100,"wires":[["c31c011a.80a51"]]},{"id":"9b89ae8a.570a","type":"nbrowser","z":"10000ac3.439e25","name":"API","methods":[{"name":"evalJavaScript","func":"evalJavaScript","params":[{"type":"str","value":"var accounts = JSON.parse($.ajax({url:\"https://mijn.ing.nl/api/current-accounts/me?fields=holderAccounts&fields=internetProxyAccounts\",async:false}).responseText.substr(5)).currentAccounts.holderAccounts; accounts.map(function(account) { \taccount.transactions = JSON.parse($.ajax({url:\"https://mijn.ing.nl/api/current-accounts/\" + account.encryptedAccountNumber + \"/transactions?maxrec=200&senderref=MINGP\",async:false}).responseText.substr(5)).transactions; \treturn account; });","typeDefault":"str"},{"type":"msg","value":"account.current","typeDefault":"output"}]},{"name":"evalJavaScript","func":"evalJavaScript","params":[{"type":"str","value":"JSON.parse($.ajax({url:\"https://mijn.ing.nl/api/savings/me?embed=targets&optional=correspondenceName\",async:false}).responseText).holderAccounts;","typeDefault":"str"},{"type":"msg","value":"account.savings","typeDefault":"output"}]}],"prop":"nbrowser","propout":"payload","object":"msg","objectout":"msg","close":false,"show":false,"ssl":false,"outputs":1,"x":550,"y":100,"wires":[["99ca7248.e4101","55ea9471.6432ec"]]}]


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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.

  • DaMoUsYs
  • Registratie: januari 2002
  • Laatst online: 08:58
@jossie67 toevallig ook Hetnet ?
Dan had je in iedergeval wel mijn flow ingelezen :P

O en ik kan ook wel even mijn "Home and Away Flow posten"

code:
1
[{"id":"b86fc94d.fb3ea8","type":"tab","label":"Home And Away","disabled":false,"info":""},{"id":"f64fb45c.e68088","type":"server-state-changed","z":"b86fc94d.fb3ea8","name":"Away","server":"38af665f.7b591a","entityidfilter":"group.all_devices","entityidfiltertype":"substring","haltifstate":"home","x":50,"y":840,"wires":[["7c7d9789.f7d5a8","74c9ff38.9f6dd","3121cdb.bf2f732","ed1673f9.5d89e","33977b0e.4d39a4","f65d2cc0.fabd","2b51ee7.ca5fe12","5041c1e7.7dade","28731cb4.a5f804","5667f629.71dc98","5bcfeeec.9307","141ea44c.95272c","12a305e7.195b7a","adebce56.29478","ce75ee84.e6912","c804e9f1.0f9a68"]]},{"id":"aa9c843.ae33378","type":"change","z":"b86fc94d.fb3ea8","name":"lamp badkamer en spiegel","rules":[{"t":"set","p":"LampEnSpiegel","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":716,"y":817,"wires":[[]]},{"id":"7c7d9789.f7d5a8","type":"delay","z":"b86fc94d.fb3ea8","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":280,"y":280,"wires":[["5629ad26.77a9b4","7478ae24.a4f2","3a50dc5.76a4224","3d2d64b4.b1cdcc","21e87dd6.7c9d42","3ff8f052.b0e99","9524a109.8ce3d","e9a1d0a3.cd331","4d3baad0.646fe4","26012d7a.9b06d2","50f2caf1.679264","b1d3daf3.58e7f8","74e32994.7c1ba8","bf5923f0.928c1","f35905b4.3ad708"]]},{"id":"74c9ff38.9f6dd","type":"api-current-state","z":"b86fc94d.fb3ea8","name":"badkamer lamp en spiegel status","server":"38af665f.7b591a","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"switch.lamp_en_spiegel","x":359,"y":817,"wires":[["aa9c843.ae33378"]]},{"id":"3121cdb.bf2f732","type":"api-current-state","z":"b86fc94d.fb3ea8","name":"lamp  badkamer","server":"38af665f.7b591a","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"switch.lamp_badkamer","x":299,"y":852,"wires":[["72b92fa4.c87f7"]]},{"id":"72b92fa4.c87f7","type":"change","z":"b86fc94d.fb3ea8","name":"Lamp badkamer","rules":[{"t":"set","p":"LampBadkamer","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":678,"y":851,"wires":[[]]},{"id":"345f2af0.cb3a66","type":"server-state-changed","z":"b86fc94d.fb3ea8","name":"home","server":"38af665f.7b591a","entityidfilter":"group.all_devices","entityidfiltertype":"substring","haltifstate":"not_home","x":55,"y":1432,"wires":[["2c3a5076.cbd99","8f8ce7a2.5f29d8","4b31bddd.1c2ad4","bc5b59c0.cdc508","a0e2746e.aba888","ab753df1.d2fe7","3d49b0f2.48cdb","18a9ff0.76e1c01","644bf505.4f926c","5c85852e.ecd2cc","fc10c1a8.10b1b","dd94e5bd.2e25a8","e1b7eb5a.855a78","93004be0.1d2598","8a096ae1.ac0e98"]]},{"id":"2c3a5076.cbd99","type":"switch","z":"b86fc94d.fb3ea8","name":"LampEnSpiegel","property":"LampEnSpiegel","propertyType":"flow","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":300,"y":1356,"wires":[["bc2b291c.d08c88"]]},{"id":"ed1673f9.5d89e","type":"api-current-state","z":"b86fc94d.fb3ea8","name":"stroompunt_huiskamer_achter","server":"38af665f.7b591a","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"switch.stroompunt_huiskamer_achter","x":348,"y":886,"wires":[["88771dfe.8144e"]]},{"id":"88771dfe.8144e","type":"change","z":"b86fc94d.fb3ea8","name":"stroompunt_huiskamer_achter","rules":[{"t":"set","p":"stroompunt_huiskamer_achter","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":725,"y":886,"wires":[[]]},{"id":"33977b0e.4d39a4","type":"api-current-state","z":"b86fc94d.fb3ea8","name":"lamp_slaapkamer","server":"38af665f.7b591a","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"switch.lamp_slaapkamer","x":309,"y":922,"wires":[["fcb19415.a2dfa8"]]},{"id":"fcb19415.a2dfa8","type":"change","z":"b86fc94d.fb3ea8","name":"lamp_slaapkamer","rules":[{"t":"set","p":"lamp_slaapkamer","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":685,"y":922,"wires":[[]]},{"id":"f65d2cc0.fabd","type":"api-current-state","z":"b86fc94d.fb3ea8","name":"beeldschermen","server":"38af665f.7b591a","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"switch.beeldschermen","x":299,"y":955,"wires":[["83117d4f.4809d"]]},{"id":"83117d4f.4809d","type":"change","z":"b86fc94d.fb3ea8","name":"beeldschermen","rules":[{"t":"set","p":"beeldschermen","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":673,"y":955,"wires":[[]]},{"id":"2b51ee7.ca5fe12","type":"api-current-state","z":"b86fc94d.fb3ea8","name":"licht_keuken","server":"38af665f.7b591a","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"switch.licht_keuken","x":290,"y":989,"wires":[["1a6935d8.5633ca"]]},{"id":"1a6935d8.5633ca","type":"change","z":"b86fc94d.fb3ea8","name":"licht_keuken","rules":[{"t":"set","p":"licht_keuken","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":666,"y":988,"wires":[[]]},{"id":"c804e9f1.0f9a68","type":"api-current-state","z":"b86fc94d.fb3ea8","name":"nachtlampje","server":"38af665f.7b591a","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"switch.nachtlampje","x":292,"y":1024,"wires":[["8bbad8f9.6056d8"]]},{"id":"8bbad8f9.6056d8","type":"change","z":"b86fc94d.fb3ea8","name":"nachtlampje","rules":[{"t":"set","p":"nachtlampje","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":667,"y":1023,"wires":[[]]},{"id":"8f8ce7a2.5f29d8","type":"switch","z":"b86fc94d.fb3ea8","name":"LampBadkamer","property":"LampBadkamer","propertyType":"flow","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":300,"y":1396,"wires":[["7accfa09.33fbd4"]]},{"id":"4b31bddd.1c2ad4","type":"switch","z":"b86fc94d.fb3ea8","name":"stroompunt_huiskamer_achter","property":"stroompunt_huiskamer_achter","propertyType":"flow","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":350,"y":1436,"wires":[["7f33e113.67c5"]]},{"id":"bc5b59c0.cdc508","type":"switch","z":"b86fc94d.fb3ea8","name":"lamp_slaapkamer","property":"lamp_slaapkamer","propertyType":"flow","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":310,"y":1476,"wires":[["7708eb1e.66e184"]]},{"id":"a0e2746e.aba888","type":"switch","z":"b86fc94d.fb3ea8","name":"beeldschermen","property":"beeldschermen","propertyType":"flow","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":300,"y":1516,"wires":[["6a4a7cc.4b91a84"]]},{"id":"ab753df1.d2fe7","type":"switch","z":"b86fc94d.fb3ea8","name":"licht_keuken","property":"licht_keuken","propertyType":"flow","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":290,"y":1556,"wires":[["e4bfe976.583658"]]},{"id":"3d49b0f2.48cdb","type":"switch","z":"b86fc94d.fb3ea8","name":"nachtlampje","property":"nachtlampje","propertyType":"flow","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":290,"y":1596,"wires":[["a629be75.640d9"]]},{"id":"bc2b291c.d08c88","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"LampEnSpiegel","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.lamp_en_spiegel\" }","mergecontext":"","x":680,"y":1356,"wires":[[]]},{"id":"7accfa09.33fbd4","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"lamp_badkamer","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.lamp_badkamer\" }","mergecontext":"","x":680,"y":1396,"wires":[[]]},{"id":"7f33e113.67c5","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"stroompunt_huiskamer_achter","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.stroompunt_huiskamer_achter\" }","mergecontext":"","x":730,"y":1436,"wires":[[]]},{"id":"7708eb1e.66e184","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"lamp_slaapkamer","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.lamp_slaapkamer\" }","mergecontext":"","x":690,"y":1476,"wires":[[]]},{"id":"6a4a7cc.4b91a84","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"beeldschermen","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.beeldschermen\" }","mergecontext":"","x":680,"y":1516,"wires":[[]]},{"id":"e4bfe976.583658","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"licht_keuken","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.licht_keuken\" }","mergecontext":"","x":670,"y":1556,"wires":[[]]},{"id":"a629be75.640d9","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"nachtlampje","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.nachtlampje\" }","mergecontext":"","x":670,"y":1596,"wires":[[]]},{"id":"8ad409dc.8ad8d8","type":"server-state-changed","z":"b86fc94d.fb3ea8","name":"Kim thuis","server":"38af665f.7b591a","entityidfilter":"device_tracker.telefoonkim","entityidfiltertype":"substring","haltifstate":"not_home","x":60,"y":1600,"wires":[["e4bfe976.583658","7708eb1e.66e184","7f33e113.67c5","7accfa09.33fbd4","bc2b291c.d08c88","2ab662e7.2139ae","bbf80a15.70ccd8"]]},{"id":"5629ad26.77a9b4","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"Notify","server":"38af665f.7b591a","service_domain":"telegram_bot","service":"send_message","data":"{   \"message\": \"Moet de PC uit??\",   \"inline_keyboard\": [     \"PC Afsluiten:\\/ShutdownPC\",     \"Nee laat maar aan:\\/NO\",     \"PC aan:\\/StartUpPC\"   ] }","mergecontext":"","x":650,"y":45,"wires":[[]]},{"id":"5041c1e7.7dade","type":"api-current-state","z":"b86fc94d.fb3ea8","name":"Desktop","server":"38af665f.7b591a","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"switch.desktop","x":280,"y":1059,"wires":[["46e4eaaa.1c83d4"]]},{"id":"46e4eaaa.1c83d4","type":"change","z":"b86fc94d.fb3ea8","name":"Desktop","rules":[{"t":"set","p":"desktop","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":658,"y":1058,"wires":[[]]},{"id":"18a9ff0.76e1c01","type":"switch","z":"b86fc94d.fb3ea8","name":"Desktop","property":"desktop","propertyType":"flow","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":280,"y":1636,"wires":[["f372ab0f.0b17a8"]]},{"id":"f372ab0f.0b17a8","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"desktop","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.desktop\" }","mergecontext":"","x":660,"y":1636,"wires":[[]]},{"id":"8a096ae1.ac0e98","type":"switch","z":"b86fc94d.fb3ea8","name":"Logeerkamer","property":"Logeerkamer","propertyType":"flow","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":290,"y":1320,"wires":[["2ab662e7.2139ae"]]},{"id":"644bf505.4f926c","type":"switch","z":"b86fc94d.fb3ea8","name":"WC","property":"WC","propertyType":"flow","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":273,"y":1284,"wires":[["5c7c3f16.2692f"]]},{"id":"5c85852e.ecd2cc","type":"switch","z":"b86fc94d.fb3ea8","name":"KeukenHanglamp","property":"keukenhanglamp","propertyType":"flow","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":313,"y":1248,"wires":[["bbf80a15.70ccd8"]]},{"id":"fc10c1a8.10b1b","type":"switch","z":"b86fc94d.fb3ea8","name":"Schuur","property":"Schuur","propertyType":"flow","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":283,"y":1211,"wires":[["1f0d36ef.e99b29"]]},{"id":"2ab662e7.2139ae","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"Logeerkamer","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.logeerkamer\" }","mergecontext":"","x":669,"y":1321,"wires":[[]]},{"id":"5c7c3f16.2692f","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"WC","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.wc\" }","mergecontext":"","x":649,"y":1285,"wires":[[]]},{"id":"bbf80a15.70ccd8","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"KeukenHanglamp","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.keuken_hanglamp\" }","mergecontext":"","x":689,"y":1248,"wires":[[]]},{"id":"1f0d36ef.e99b29","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"Schuur","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.schuur\" }","mergecontext":"","x":659,"y":1213,"wires":[[]]},{"id":"28731cb4.a5f804","type":"api-current-state","z":"b86fc94d.fb3ea8","name":"Logeerkamer","server":"38af665f.7b591a","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"switch.logeerkamer","x":290,"y":782,"wires":[["37c5e90d.c079e6"]]},{"id":"5667f629.71dc98","type":"api-current-state","z":"b86fc94d.fb3ea8","name":"WC","server":"38af665f.7b591a","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"switch.wc","x":270,"y":745,"wires":[["1e6ef144.f634ef"]]},{"id":"5bcfeeec.9307","type":"api-current-state","z":"b86fc94d.fb3ea8","name":"Schuur","server":"38af665f.7b591a","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"switch.schuur","x":280,"y":709,"wires":[["1afba127.4057ff"]]},{"id":"37c5e90d.c079e6","type":"change","z":"b86fc94d.fb3ea8","name":"Logeerkamer","rules":[{"t":"set","p":"logeerkamer","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":666,"y":782,"wires":[[]]},{"id":"1e6ef144.f634ef","type":"change","z":"b86fc94d.fb3ea8","name":"WC","rules":[{"t":"set","p":"wc","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":645,"y":746,"wires":[[]]},{"id":"1afba127.4057ff","type":"change","z":"b86fc94d.fb3ea8","name":"Schuur","rules":[{"t":"set","p":"schuur","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":654,"y":709,"wires":[[]]},{"id":"141ea44c.95272c","type":"api-current-state","z":"b86fc94d.fb3ea8","name":"Huiskamer","server":"38af665f.7b591a","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"switch.huiskamer","x":290,"y":673,"wires":[["9a938fbe.a4143"]]},{"id":"9a938fbe.a4143","type":"change","z":"b86fc94d.fb3ea8","name":"Huiskamer","rules":[{"t":"set","p":"huiskamer","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":664,"y":673,"wires":[[]]},{"id":"dd94e5bd.2e25a8","type":"switch","z":"b86fc94d.fb3ea8","name":"Huiskamer","property":"huiskamer","propertyType":"flow","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":292,"y":1175,"wires":[["9b957da1.7a16"]]},{"id":"9b957da1.7a16","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"Huiskamer","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.huiskamer\" }","mergecontext":"","x":670,"y":1177,"wires":[[]]},{"id":"e1b7eb5a.855a78","type":"switch","z":"b86fc94d.fb3ea8","name":"Gang Boven","property":"gang_boven","propertyType":"flow","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":293,"y":1136,"wires":[["bc0f7754.f2ba88"]]},{"id":"bc0f7754.f2ba88","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"gang_boven","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.gang_boven\" }","mergecontext":"","x":671,"y":1138,"wires":[[]]},{"id":"93004be0.1d2598","type":"switch","z":"b86fc94d.fb3ea8","name":"gang_beneden","property":"gang_beneden","propertyType":"flow","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":306,"y":1099,"wires":[["3bf0ac33.a40af4"]]},{"id":"3bf0ac33.a40af4","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"gang_beneden","server":"38af665f.7b591a","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.gang_beneden\" }","mergecontext":"","x":684,"y":1101,"wires":[[]]},{"id":"7478ae24.a4f2","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"nachtlampje","server":"38af665f.7b591a","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.nachtlampje\" }","mergecontext":"","x":663,"y":521,"wires":[[]]},{"id":"3a50dc5.76a4224","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"licht_keuken","server":"38af665f.7b591a","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.licht_keuken\" }","mergecontext":"","x":663,"y":488,"wires":[[]]},{"id":"3d2d64b4.b1cdcc","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"beeldschermen","server":"38af665f.7b591a","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.beeldschermen\" }","mergecontext":"","x":673,"y":454,"wires":[[]]},{"id":"21e87dd6.7c9d42","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"lamp_slaapkamer","server":"38af665f.7b591a","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.lamp_slaapkamer\" }","mergecontext":"","x":683,"y":420,"wires":[[]]},{"id":"3ff8f052.b0e99","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"stroompunt_huiskamer_achter","server":"38af665f.7b591a","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.stroompunt_huiskamer_achter\" }","mergecontext":"","x":723,"y":387,"wires":[[]]},{"id":"9524a109.8ce3d","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"lamp_badkamer","server":"38af665f.7b591a","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.lamp_badkamer\" }","mergecontext":"","x":673,"y":352,"wires":[[]]},{"id":"e9a1d0a3.cd331","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"LampEnSpiegel","server":"38af665f.7b591a","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.lamp_en_spiegel\" }","mergecontext":"","x":673,"y":318,"wires":[[]]},{"id":"4d3baad0.646fe4","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"Logeerkamer","server":"38af665f.7b591a","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.logeerkamer\" }","mergecontext":"","x":663,"y":285,"wires":[[]]},{"id":"26012d7a.9b06d2","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"WC","server":"38af665f.7b591a","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.wc\" }","mergecontext":"","x":644,"y":251,"wires":[[]]},{"id":"50f2caf1.679264","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"KeukenHanglamp","server":"38af665f.7b591a","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.keuken_hanglamp\" }","mergecontext":"","x":685,"y":217,"wires":[[]]},{"id":"b1d3daf3.58e7f8","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"Schuur","server":"38af665f.7b591a","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.schuur\" }","mergecontext":"","x":656,"y":182,"wires":[[]]},{"id":"74e32994.7c1ba8","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"Huiskamer","server":"38af665f.7b591a","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.huiskamer\" }","mergecontext":"","x":667,"y":148,"wires":[[]]},{"id":"bf5923f0.928c1","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"gang_boven","server":"38af665f.7b591a","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.gang_boven\" }","mergecontext":"","x":668,"y":113,"wires":[[]]},{"id":"f35905b4.3ad708","type":"api-call-service","z":"b86fc94d.fb3ea8","name":"gang_beneden","server":"38af665f.7b591a","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.gang_beneden\" }","mergecontext":"","x":678,"y":79,"wires":[[]]},{"id":"12a305e7.195b7a","type":"api-current-state","z":"b86fc94d.fb3ea8","name":"keuken_hanglamp","server":"38af665f.7b591a","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"switch.keuken_hanglamp","x":310,"y":640,"wires":[["99e6c87e.8f9318"]]},{"id":"99e6c87e.8f9318","type":"change","z":"b86fc94d.fb3ea8","name":"Keuken Hanglamp","rules":[{"t":"set","p":"keukenhanglamp","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":684,"y":640,"wires":[[]]},{"id":"adebce56.29478","type":"api-current-state","z":"b86fc94d.fb3ea8","name":"Gang Beneden","server":"38af665f.7b591a","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"switch.gang_beneden","x":301,"y":605,"wires":[["3b10f4f2.4c660c"]]},{"id":"3b10f4f2.4c660c","type":"change","z":"b86fc94d.fb3ea8","name":"Gang Beneden","rules":[{"t":"set","p":"gang_beneden","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":675,"y":605,"wires":[[]]},{"id":"ce75ee84.e6912","type":"api-current-state","z":"b86fc94d.fb3ea8","name":"Gang Boven","server":"38af665f.7b591a","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"switch.gang_boven","x":290,"y":569,"wires":[["27f8b297.e8929e"]]},{"id":"27f8b297.e8929e","type":"change","z":"b86fc94d.fb3ea8","name":"Gang Boven","rules":[{"t":"set","p":"gang_boven","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":664,"y":569,"wires":[[]]},{"id":"38af665f.7b591a","type":"server","z":"","name":"Home Assistant","url":"https://ha.test.nl:8123","pass":"SECRET"}]


Kan helaas geen fatsoenlijke screenshot maken, zo groot is mijn monitor niet :P

Check dit en help mee!


  • DaMoUsYs
  • Registratie: januari 2002
  • Laatst online: 08:58
@jossie67 staat er al, alleen een screenshot is te groot :P

Check dit en help mee!


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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%)


  • Skit3000
  • Registratie: mei 2005
  • Laatst online: 24-06 15:11
Als je een Change node verbindt met de output van je Omzetten functie, kan je de waarde wegschrijven in een variabel zoals flow.meterstand.

Om je dagelijkse verbruik te berekenen, kan je een Inject node gebruiken en met een schedule dagelijks uit laten voeren. Je kan daar weer een functie achter hangen die flow.meterstand uitleest en vergelijkt met de stand van de dag ervoor. Hierna kan je de waarde van flow.meterstand opslaan in flow.vorigeMeterstand en begin je de cirkel weer opnieuw.

  • ny-hardcore
  • Registratie: maart 2002
  • Laatst online: 10-06 20:51
jossie67 schreef op woensdag 19 september 2018 @ 16:01:
Ik kan nu mijn stadsverwarming uitlezen.

[Afbeelding: stadverwarming]


code:
1
[{"id":"a8b20c04.3e47e","type":"smartmeter","z":"9edf5bc3.5e1988","name":"Warmte","datasource":"f5d1b1bd.949f3","protocol":"D0Protocol","transport":"SerialRequestResponseTransport","requestInterval":"60","d0WakeupCharacter":"","x":150,"y":200,"wires":[["c82c5704.9c8aa8"]]},{"id":"c82c5704.9c8aa8","type":"function","z":"9edf5bc3.5e1988","name":"Omzetten","func":"return [\n    { payload: parseFloat(msg.payload[\"6-0:0.0\"].rawValue)},\n    { payload: parseFloat(msg.payload[\"6-0:6.8\"].rawValue)},\n    { payload: parseFloat(msg.payload[\"6-0:6.26\"].rawValue)},\n    { payload: parseFloat(msg.payload[\"6-0:6.31\"].rawValue)},\n];","outputs":4,"noerr":0,"x":380,"y":200,"wires":[["92360c43.401b"],["860912d2.5df52"],["6b4e35db.1ce3cc"],["eea507e3.206148"]]},{"id":"92360c43.401b","type":"mqtt out","z":"9edf5bc3.5e1988","name":"nr1","topic":"house/warmte/nr1","qos":"","retain":"","broker":"3da4d2c3.4bf8fe","x":590,"y":160,"wires":[]},{"id":"860912d2.5df52","type":"mqtt out","z":"9edf5bc3.5e1988","name":"GigaJoule","topic":"house/warmte/gj","qos":"","retain":"","broker":"3da4d2c3.4bf8fe","x":600,"y":220,"wires":[]},{"id":"6b4e35db.1ce3cc","type":"mqtt out","z":"9edf5bc3.5e1988","name":"M3","topic":"house/warmte/m3","qos":"","retain":"","broker":"3da4d2c3.4bf8fe","x":590,"y":280,"wires":[]},{"id":"eea507e3.206148","type":"mqtt out","z":"9edf5bc3.5e1988","name":"Uren","topic":"house/warmte/h","qos":"","retain":"","broker":"3da4d2c3.4bf8fe","x":590,"y":340,"wires":[]},{"id":"82e54e61.f7a93","type":"comment","z":"9edf5bc3.5e1988","name":"Stadverwarming","info":"","x":180,"y":120,"wires":[]},{"id":"f5d1b1bd.949f3","type":"smartmeter-connection","z":"","sourcetype":"serial","serialport":"/dev/ttyIRKopf","serialbaud":"300","databits":"7","parity":"even","stopbits":"1","httphost":"localhost","httpport":"80","filepath":"/dev/null"},{"id":"3da4d2c3.4bf8fe","type":"mqtt-broker","z":"","name":"local","broker":"localhost","port":"1883","clientid":"","usetls":false,"verifyservercert":true,"compatmode":false,"keepalive":"15","cleansession":true,"birthTopic":"","birthQos":"0","birthRetain":null,"birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willRetain":null,"willPayload":""}]



Maar nu wil ook gaan berekenen wat het verbruik van de dag is.
Daarom wil ik om 00:00 informatie opslaan en gedurende de dag berekenen wat het verbruik is.
Hoe zet ik dit op?
https://flows.nodered.org/node/node-red-contrib-influxdb om de data netjes op te slaan.
En dan grafana om te visualiseren scheelt je een hoop gedoe denk ik persoonlijk...

cd /pub && more beer


  • ThaHandy
  • Registratie: juli 2001
  • Laatst online: 24-06 20:46

ThaHandy

Discovery Channel

Het is jammer dan bij node-red het "grafisch programmeren" 9 op 10 keer toch de functie codes wordt gebruikt, wat er op neer komt dat er toch weer geprogrammeerd moet worden in javascript :/
@RobertMe Ik heb het zo opgelost


Test flow
code:
1
[{"id":"11b718fe.da2727","type":"change","z":"ba68260d.f9c468","name":"","rules":[{"t":"set","p":"gang.status","pt":"flow","to":"payload.on","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":930,"y":1160,"wires":[[]]},{"id":"eadf8519.a137d8","type":"hue-light","z":"ba68260d.f9c468","name":"Gang","bridge":"e9503c7a.ea5fe8","lightid":"16","colornamer":true,"x":720,"y":1160,"wires":[["11b718fe.da2727"]]},{"id":"2aa4ace6.0347a4","type":"change","z":"ba68260d.f9c468","name":"scene","rules":[{"t":"delete","p":"payload","pt":"msg"},{"t":"set","p":"payload.brightness","pt":"msg","to":"65","tot":"num"},{"t":"set","p":"payload.colorTemp","pt":"msg","to":"399","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":560,"y":1140,"wires":[["eadf8519.a137d8"]]},{"id":"5ae6e879.461188","type":"function","z":"ba68260d.f9c468","name":"toggle","func":"var sts = flow.get(\"gang.status\");\nmsg.payload = \"\";\n\nif ( sts === false ) {\nmsg.payload.on = true;\nreturn [ msg, null ];\n\n} else {\nmsg.payload.on = false;\nreturn [ null, msg ]\n}","outputs":2,"noerr":0,"x":420,"y":1160,"wires":[["2aa4ace6.0347a4"],["eadf8519.a137d8"]],"outputLabels":["true","false"]},{"id":"9554d41c.cf9828","type":"inject","z":"ba68260d.f9c468","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":260,"y":1160,"wires":[["5ae6e879.461188"]]},{"id":"e9503c7a.ea5fe8","type":"hue-bridge","z":"","name":"Philips hue","bridge":"192.168.0.187","key":"7RNhXZ591AymcpzQkH95Lc87cG6-PFlKKbotjz4x","interval":"2000"}]



@RobertMe Ik heb het nog 4 keer geprobeerd, maar ik snap echt niet waar je tegenaan loopt. Als ik denk wat het is, dan is het volgens mij opgelost als je mijn flow pakt en daar de status van msg.payload.anyOn kopieert naar flow.LAMP.status. En dan maak je een nieuwe trigger/flow/geef-het-een-naam en zet je er dit stukje tussen
code:
1
[{"id":"6cb1ae17.a0bc2","type":"change","z":"4037f341.275cac","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"gang.status","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":500,"y":1480,"wires":[["c538ee22.221c7"]]},{"id":"c538ee22.221c7","type":"switch","z":"4037f341.275cac","name":"","property":"payload","propertyType":"msg","rules":[{"t":"false"},{"t":"true"}],"checkall":"true","repair":false,"outputs":2,"x":690,"y":1480,"wires":[[],[]]}]

lolgast wijzigde deze reactie 21-09-2018 11:43 (19%)

Eerste opzetje :D


De badges werken echt een stuk minder dan de cards, dus van die laatste zijn er 5 extra onderweg. Het idee is om daarvoor de meest gedraaide/gewilde CD's van dat moment in te stellen zodat die eenvoudig opgezet kunnen worden. Kleine afdruk van de cover in het hoesje stoppen zodat we weten welke wat is

Node-RED:

code:
1
[{"id":"8ad9ae82.3b166","type":"http request","z":"65505814.c27b98","name":"Lady Gaga playlist","method":"GET","ret":"obj","url":"http://192.168.4.81/api/v1/commands/?cmd=playplaylist&name=LG-GreatestHits","tls":"","x":910,"y":1252,"wires":[[]]},{"id":"164855a0.0afdfa","type":"switch","z":"65505814.c27b98","name":"","property":"payload.uid","propertyType":"msg","rules":[{"t":"eq","v":"a6535e1f","vt":"str"},{"t":"eq","v":"eedb3353","vt":"str"}],"checkall":"false","repair":false,"outputs":2,"x":690,"y":1272,"wires":[["8ad9ae82.3b166"],["ce6d84dd.08cb98"]]},{"id":"688901b9.74665","type":"json","z":"65505814.c27b98","name":"","property":"payload","action":"","pretty":false,"x":510,"y":1272,"wires":[["164855a0.0afdfa"]]},{"id":"ce6d84dd.08cb98","type":"http request","z":"65505814.c27b98","name":"Michael Jackson playlist","method":"GET","ret":"obj","url":"http://192.168.4.81/api/v1/commands/?cmd=playplaylist&name=MJ-Bad","tls":"","x":930,"y":1292,"wires":[[]]},{"id":"705ccece.46b41","type":"switch","z":"65505814.c27b98","name":"","property":"payload","propertyType":"msg","rules":[{"t":"nempty"}],"checkall":"true","repair":false,"outputs":1,"x":330,"y":1272,"wires":[["688901b9.74665"]]},{"id":"26684717.a38978","type":"mqtt in","z":"65505814.c27b98","name":"","topic":"rfid/woonkamer","qos":"0","broker":"a0c390fa.b822a","x":140,"y":1212,"wires":[["1f7b7d3d.1b4c13","705ccece.46b41"]]},{"id":"1f7b7d3d.1b4c13","type":"delay","z":"65505814.c27b98","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":350,"y":1212,"wires":[["140e4794.652b28"]]},{"id":"140e4794.652b28","type":"change","z":"65505814.c27b98","name":"clear retain","rules":[{"t":"set","p":"payload","pt":"msg","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":1212,"wires":[["771ceb40.23dd24"]]},{"id":"771ceb40.23dd24","type":"mqtt out","z":"65505814.c27b98","name":"","topic":"rfid/woonkamer","qos":"","retain":"true","broker":"a0c390fa.b822a","x":740,"y":1212,"wires":[]},{"id":"a0c390fa.b822a","type":"mqtt-broker","z":"","name":"MQTT","broker":"192.168.4.50","port":"1883","clientid":"nodered","usetls":false,"compatmode":true,"keepalive":"55","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]

JBS schreef op maandag 24 september 2018 @ 20:28:
[...]
Meteen lezer en kaartjes bestellen 😀 Leuke projectje!
Maak je naast de Node-RED flow gebruik van standaard oplossing die ergens op github beschikbaar is? Of is dit eigen knutsel?
Nee het is gestolen van Github. Ik heb hem via Drzzs (youtuber)
https://github.com/esprfid/esp-rfid
@RobertMe
Dat zit in de standaard 'trigger' node

JSON:
1
[{"id":"f43fc44d.b721b8","type":"trigger","z":"ba68260d.f9c468","op1":"","op2":"","op1type":"nul","op2type":"pay","duration":"3","extend":false,"units":"s","reset":"","bytopic":"all","name":"","x":540,"y":940,"wires":[["97c59e1f.d2bea"]]},{"id":"97c59e1f.d2bea","type":"debug","z":"ba68260d.f9c468","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":780,"y":980,"wires":[]},{"id":"ad1e58dd.b99158","type":"inject","z":"ba68260d.f9c468","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":300,"y":940,"wires":[["f43fc44d.b721b8"]]}]


Edit:
Kwam vorige keer al een soort van voorbij, maar er zitten zo ontzettend veel mogelijkheden in de bestaande nodes terwijl er te pas en te onpas op de function-node wordt teruggevallen. Eeuwig zonde in mijn ogen. Dan had je het net zo goed zonder Node-RED kunnen doen want dan zit je alsnog te programmeren :+

lolgast wijzigde deze reactie 27-09-2018 10:46 (16%)

@ThinkPad Heb ik ook wel over nagedacht, maar niet echt een optie omdat een aantal domeinen gewoon normaal bruikbaar moeten zijn.

Ik moet eigenlijk gewoon eens stoeien om de Transip API aan te kunnen spreken vanuit Node-RED maar dat moet via een aantal PHP-scripts dus daar moet ik ooit eens goed voor gaan zitten

  • DaMoUsYs
  • Registratie: januari 2002
  • Laatst online: 08:58
@césaar Weinig verstand van NR maar als ik jou post goed interpreteer start jij daarmee een extern programma.
Dan is het een kwestie van of de api van dat programma gebruiken of gewoon het programma te killen
pkill mplayer
of
killall mplayer

Check dit en help mee!


  • ny-hardcore
  • Registratie: maart 2002
  • Laatst online: 10-06 20:51
DeadMetal schreef op woensdag 3 oktober 2018 @ 15:37:
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.
Ik zou eerder deze in de gaten houden :
https://community.home-as...istant-websocket/71032/12

cd /pub && more beer


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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%)


  • ThinkPad
  • Registratie: juni 2005
  • Nu online

ThinkPad

Moderator Duurzame Energie & Domotica

L460

RobertMe schreef op donderdag 4 oktober 2018 @ 22:20:
[...]

Duidelijk, alleen Hue dus met zijn eigen ecosysteem buiten Node-RED om. Zelf heb ik geen Hue sensoren, maar dat was natuurlijk al duidelijk :p En schakel ik ook slim op basis van wat ik aan het doen ben. Wall plug als energiemeter aan de TV, en bij 'hoog' verbruik een andere scene. AFAIK is zoiets ook weer niet rechtstreeks via Hue mogelijk? Er zijn wel oude & third party plugs, maar dat zijn alleen schakelaars (en dimmers?) en geen energiemeters op basis waarvan je kunt schakelen/regels aanmaken.
Voor die scenes monitor ik m'n Logitech Harmony Hub in Node-RED. Als de activiteit TV-kijken/Chromecast wordt gestart, dan dim ik de verlichting :)

Gas besparen door CV-tuning | Elektriciteit besparen
Geen (Domoticz) vragen via privébericht die ook via het forum kunnen a.u.b.

In eerste instantie dacht ik van wel, maar dat lijkt schijn onafhankelijkheid omdat OpenZwave niet draait als HA down is. Dus dan is er ook geen library om op in te haken :)

Maar ik heb er vrede mee hoor, HA draait enorm stabiel dus ik ben er niet zo bang voor.
@Cyw00d Ik heb alle messages via een functionblock geconfigureerd

JavaScript:
1
2
3
msg.payload = { data: {'title': 'Weer van vandaag','message': msg.payload }};
msg.payload.service = 'iphone_stefan'
return msg;


Flow voorbeeld"
JSON:
1
[{"id":"a07a1b94.44f478","type":"api-call-service","z":"ba68260d.f9c468","name":"notify: trigger","server":"39fd7a9b.252f86","service_domain":"notify","service":"{}","data":"{}","mergecontext":"","x":1050,"y":1360,"wires":[[]]},{"id":"4a288ebb.ecaa2","type":"function","z":"ba68260d.f9c468","name":"Message template","func":"msg.payload = { data: {'title': 'Weer van vandaag','message': \nmsg.payload }};\nmsg.payload.service = 'iphone_stefan'\nreturn msg;","outputs":1,"noerr":0,"x":830,"y":1360,"wires":[["a07a1b94.44f478"]]},{"id":"6958297c.ac0278","type":"api-current-state","z":"ba68260d.f9c468","name":"","server":"39fd7a9b.252f86","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"sensor.pws_weather_1d_metric","x":500,"y":1360,"wires":[["4a288ebb.ecaa2"]]},{"id":"2761fde2.ca6d12","type":"inject","z":"ba68260d.f9c468","name":"run @ 5:30","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"30 05 * * 1,2,3,4,5","once":false,"onceDelay":0.1,"x":190,"y":1360,"wires":[["6958297c.ac0278"]]},{"id":"39fd7a9b.252f86","type":"server","z":"","name":"Home Assistant","url":"http://192.168.4.50:8123","pass":""}]


  • RobertMe
  • Registratie: maart 2009
  • Laatst online: 10:55
Cyw00d schreef op maandag 8 oktober 2018 @ 09:35:
Iemand enig idee hoe ik in NODE-RED extra waardes mee kan sturen in het object? Ik wil de batterijstatus van mijn telefoon via telegram ontvangen namelijk:

Dit werkt niet:

code:
1
{ :"message": "test" + msg.payload }



[Afbeelding: node-red]
Zoals al uit het voorbeeld van @lolgast blijkt moet je de "Data" voor de call opgeven via een data property. Je moet dus niet {"message": "Test"} doen maar {"data": {"message": "Test"}}
lolgast schreef op maandag 8 oktober 2018 @ 10:02:
@Cyw00d Ik heb alle messages via een functionblock geconfigureerd

JavaScript:
1
2
3
msg.payload = { data: {'title': 'Weer van vandaag','message': msg.payload }};
msg.payload.service = 'iphone_stefan'
return msg;

Dit kan ook via de change node met JSONata. Uit mijn hoofd:

code:
1
2
3
4
5
6
7
{
  "data": {
    "title": "Weer van vandaag",
    "message": payload
  },
  "service": "iphone_stefan"
}


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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.

  • RobertMe
  • Registratie: maart 2009
  • Laatst online: 10:55
nickyb2 schreef op dinsdag 9 oktober 2018 @ 13:45:
[...]


Ik zie echt niet in waarom je een flow wilt starten op een specifiek tijdstip/zonsondergang, vs elke x seconden/minuten. Er valt wat te zeggen voor het starten van een flow bij het opstarten van NR, maar dat kan met de standaard timer ook.

Ik zou de voorwaarden logica (bijvoorbeeld is de zon onder, of is het tussen x-uur en y-uur) of wat voor voorwaarde dan ook los van de timer zien. Mijn inziens worden je flows daar veel robuuster van, just omdat je niet afhankelijk bent van een specifiek tijdstip.

Maar goed, ieder zijn eigen oplossing. Is ook het voordeel van NodeRED.
Zoals ThinkPad hierboven had, met buitenverlichting, is al iets waarbij je de flow wil starten bij zonsopkomst/zonsondergang. Daarnaast heb ik hier ook creatieve dingen gelezen als "doe 's avonds altijd wat sfeerverlichting aan in de keuken, totdat iemand binnen loopt en verhoog dan de helderheid". Dat zijn voorbeelden van dingen die je triggert op basis van zonsopkomst/zonsondergang. En uiteraard kun je dat ook doen (in combinatie) met een lux sensor. Maar vraag is of je vervolgens met slecht weer overdag alsnog de buitenverlichting aan wilt doen, bv. Lijkt mij toch dat je overdag iets op de energie wilt sparen en dus hoogstens 30 minuten voor zonsondergang of whatever.

Maar zoals ThinkPad het nu oploste is bigtimer (of schedex) weer niet nodig, als je elke X minuten triggert en dan een time range node erachter hangt om te filteren (en ook de time range node heeft ondersteuning voor zonsopkomst, zonsondergang etc).

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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

  • Kaspers
  • Registratie: juni 2004
  • Laatst online: 10:34
Thoit schreef op vrijdag 12 oktober 2018 @ 07:54:
Mijn kennis is onvoldoende om precies te snappen wat je nu allemaal bedoeld :+ Heb je een voorbeeld toevallig?
De rode nodes in dit screenshot zijn subflows:



en dit is de inhoud van de subflow 'Voordeur':


  • Getslow
  • Registratie: oktober 2018
  • Laatst online: 26-01 23:16
Hoi allen,

vrij nieuw hier, maar wel al een tijdje aan het spelen met Domotica/Raspberry/Node-red. De vraag waar ik mee in mijn hoofd zit, maar vooralsnog nergens 100% duidelijkheid over heb gevonden;

Kan Node-Red niet een volledige vervanging zijn voor HomeAssistant/Domoticz/OpenHAB? Door middel van modules zijn er allerlei API's te importeren en je kan er ook een dashboard mee aanmaken. Ik zie dan niet perse meerwaarde in HomeAssistant/OpenHAB?
Weekje geleden een discussie/gesprek gehad met een collega, die had een Sonoff tussen een koelkast geplaatst. Vanuit daar kregen we het over verbruik, en dan met name de mogelijke toename van het verbruik van die dingen naarmate ze ouder worden. Dus, ik ben gaan klooien met een sensor die ik al heb, die zit tussen mijn server. Geen idee waarom, ik had stekkers over (is een Z-Wave device)

Nu heb ik het volgende
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
let objDate = new Date();
let day = objDate.getDay();
let hours = objDate.getHours();
let minutes = objDate.getMinutes();
let kwh = Number(msg.payload.data.state);
let kwhdal = context.get('kwhdal');
let kwhpiek = context.get('kwhpiek');
let kostendal = context.get('kostendal');
let kostenpiek = context.get('kostenpiek');
let first = context.get("microserver.first.kwh");
let daltarief = 0.19308;
let piektarief = 0.19840;

if(hours === 0 && minutes === 0){
    first = kwh;
    context.set("microserver.first.kwh", first);
} else {
    if(first === undefined) {
        first = kwh;
        context.set("microserver.first.kwh", first);
    }
}

if (day >= 1 && day <= 5) {
    if(hours <= 7){
        context.set('kwhpiek', 0);
        context.set('kostenpiek', 0);
        context.set('kwhdal', kwh - first);
        context.set('kostendal', kwhdal * daltarief);
    } else if (hours >= 8 && hours <= 21){
        context.set('kwhpiek', kwh - first - kwhdal);
        context.set('kostenpiek', kwhpiek * piektarief);
    } else {
        context.set('kwhdal', kwh - first - kwhpiek);
        context.set('kostendal', kwhdal * daltarief);
    }
} else {
    context.set('kostenpiek', 0);
    context.set('kwhpiek', 0);
    context.set('kwhdal', kwh - first);
    context.set('kostendal', kwhdal * daltarief);
}

kwhdal = context.get('kwhdal');
kostendal = context.get('kostendal');
kwhpiek = context.get('kwhpiek');
kostenpiek = context.get('kostenpiek');

msg.payload = (kostenpiek + kostendal).toFixed(2);
node.status({text:"€ " + msg.payload});
return msg;



Ik hoop dat bovenstaande goed genoeg uit de duim is gezogen om rekening te houden met de wisselende hoog-/laag-tarieven van de elektra. Nu nog een paar Sonoff POW's kopen en tussen de koelkast/vriezer hangen. Dan hoop ik te kunnen detecteren wanneer die apparaten hen efficiëntie verliezen :)

lolgast wijzigde deze reactie 20-10-2018 15:11 (10%)
Reden: Was het weekend vergeten :/


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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.

  • nickyb2
  • Registratie: oktober 2012
  • Laatst online: 24-06 20:37
@RobertMe

Ik had dat soort ellende met een Aeon Labs schakelaar. Die gaf ook af en toe een rare meting.

Ik zou een function node pakken en daarin een teller vasthouden en een aan/uit status.

Elk bericht met wattage boven de 60: teller +1, state = aan
Elk bericht met een wattage onder de 60: teller -1

Als teller = 0, state = uit.

Die state geef je dan elk bericht door als payload en je zult een min 0 en max toe moeten passen op te teller. Elke 15 seconden controleren met een max van 8, dan moet de meting zo'n 2 minuten onder 60w blijven en dan verandert de state naar uit.

Ik zou zoiets proberen. Ben je minder afhankelijk van de waarde, omdat je hem in essentie wat afvlakt. Ik gebruik een zelfde constructie voor een wasmachine klaar melding en de aansturing van mijn MV. Al gaat deze op een CO2 meting, het idee is het zelfde.

Mijn AdvertentiesTweakBlog

Kaspers schreef op dinsdag 30 oktober 2018 @ 19:02:
[...]


@lolgast , doel je op deze module?: https://github.com/zachow...-home-assistant-websocket
En wat was er lastig aan in het geval van Docker?

Heb je de module er trouwens eerst naast gezet, en vervolgens al je nodes vervangen?
Ja die module inderdaad.

Wat het (voor mij althans) moeilijk maakte, was dat je in de Docker container niet kunt zeggen 'stop service nodered' oid, want al die commands zijn uit de image gesloopt. En ik gok dat als je het al voor elkaar krijgt, de container stopt omdat de image zo is gemaakt dat hij draait op het proces van Node-RED.

Wat ik heb gedaan is:
- back-up gemaakt van mijn flows.json (let ook op de rechten)
- alle HA nodes verwijderd
- homeassistant palette verwijderd via de webUI
- homeassistant-websocket geïnstalleerd via de webUI
- Node-RED herstart
- flows.json hersteld (inclusief de rechten zoals die voorheen stonden)
- Node-RED herstart

Toen werkte uiteindelijk alles :)
Tijd voor nog een praktijk voorbeeldje. Niet dat hij spannend is, maar ik vond hem wel goed bedacht van mijzelf. En soms is een soortgelijk voorbeeld voldoende om anderen weer na te laten denken om iets handigs te bouwen :)

Ik heb mijn 3D printer achter een Sonoff POW hangen. Op die manier kan ik het verbruik monitoren en de printer vanaf afstand aan/uit zetten. Hij staat op zolder, dus op die manier kan ik hem al laten verwarmen voordat ik naar boven moet en daar sta te wachten.
Ik heb ook OctoPrint een stukje software op bijvoorbeeld een RPi om via USB je 3D printer te kunnen besturen.

Waar ik al een tijdje geregeld tegen aanliep is dat de printer natuurlijk geregeld uit gaat maar OctoPrint blijft gewoon aanstaan. Als ik de printer aanzet moet ik eerst handmatig in OctoPrint op connect drukken. En dat zou niet nodig moeten zijn :D Dus zie hier:
Als de Sonoff uit-/aangezet wordt, stuur ik een bericht naar de API van OctoPrint om de printer te (dis)connecten

  • Aegle
  • Registratie: november 2013
  • Laatst online: 24-06 23:14

Aegle

"hier" = Schiedam, ZH...

Bedankt @ThinkPad! Ik heb het aan de gang met een Youless LS110 die bedraad mijn S0-kWh meter uitleest voor de PV-installatie d:)b . Tot nu toe schreef die alleen naar PVoutput.

Uiteindelijk probeer ik één geintegreerde "HMI" te maken d.m.v. Grafana waar alle data die ik verzamel zichtbaar gemaakt kan worden. Grafana leest die vanuit Influx databases. Ik ben weer een stapje verder :+ .

10 x Yingli YL260C-30b @ 10 x OP300 SolarEdge optimizers en SE3000 op 158º. Live: PVoutput , SolarEdge


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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: 10:21
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.

  • ThinkPad
  • Registratie: juni 2005
  • Nu online

ThinkPad

Moderator Duurzame Energie & Domotica

L460

Ik verveelde mij zojuist en bedacht dat het leuk was om de brandstofprijzen van het tankstation (TinQ) bij mij in de buurt te loggen (@Hmmbob). Eens kijken wat de meest gunstige dag is om te tanken ;)

Het is jammer dat ik geen slimme auto heb. Als die een API zou hebben dan zou ik het brandstofniveau monitoren, locatie pollen en dan een berichtje naar mezelf sturen welk tankstation in de buurt ik het beste naartoe kan gaan als de tank bijna leeg is :D

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


code:
1
[{"id":"16fd365c.0f100a","type":"tab","label":"Flow 3","disabled":false,"info":""},{"id":"e628d7a4.4ea69","type":"inject","z":"16fd365c.0f100a","name":"@14:00","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"00 14 * * *","once":false,"onceDelay":"","x":200,"y":180,"wires":[["e193f119.197d18"]]},{"id":"e193f119.197d18","type":"http request","z":"16fd365c.0f100a","name":"Retrieve TinQ fuel prices","method":"GET","ret":"txt","url":"http://www.tinq.nl/tankstation?id=JOUWSTATIONID","tls":"","x":410,"y":180,"wires":[["e3956d61.0df8f"]]},{"id":"e3956d61.0df8f","type":"html","z":"16fd365c.0f100a","name":"","property":"payload","outproperty":"payload","tag":"td.literprijs","ret":"text","as":"single","x":630,"y":180,"wires":[["afdb98c3.f60588"]]},{"id":"afdb98c3.f60588","type":"function","z":"16fd365c.0f100a","name":"Trim data","func":"//var str = \"€ 1,599 \";\nvar dieselprijs = (parseFloat(msg.payload[0].replace(/\\D/g,''))/1000);\nvar benzineprijs = (parseFloat(msg.payload[1].replace(/\\D/g,''))/1000);\n\nmsg.measurement = \"brandstofprijs\";\nmsg.payload = {\n    dieselprijs,\n    benzineprijs\n}\nvar status = {\n    text: 'E95: €' + benzineprijs + ' - D: €' + dieselprijs,\n};\nnode.status(status);\n\n\nreturn msg;\n\n\n\n\n\n\n\n","outputs":1,"noerr":0,"x":800,"y":180,"wires":[["fee80f85.cf5fc8"]]},{"id":"fee80f85.cf5fc8","type":"influxdb out","z":"16fd365c.0f100a","influxdb":"a3fc541e.43c098","name":"","measurement":"","precision":"","retentionPolicy":"","x":1060,"y":180,"wires":[]},{"id":"a3fc541e.43c098","type":"influxdb","z":"","hostname":"192.168.8.10","port":"8086","protocol":"http","database":"iot","name":"","usetls":false,"tls":"abc0910e.2b64"},{"id":"abc0910e.2b64","type":"tls-config","z":"","name":"","cert":"","key":"","ca":"","certname":"","keyname":"","caname":"","verifyservercert":false}]


Ik moet zeggen dat je met Node-RED, InfluxDB en Grafana best een toffe combinatie hebt. Je kunt in een paar klikken heel makkelijk dingen loggen e.d.

ThinkPad wijzigde deze reactie 12-11-2018 13:24 (5%)

Gas besparen door CV-tuning | Elektriciteit besparen
Geen (Domoticz) vragen via privébericht die ook via het forum kunnen a.u.b.


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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%)

@Gelockte Volgens mij heb jij hier voldoende aan. Pak een change node en zet daar dit in :)

  • KvNwPPr
  • Registratie: februari 2014
  • Laatst online: 00:26
Thoit schreef op dinsdag 13 november 2018 @ 17:58:
[...]


Dat de Cube niks doet, bedoel ik mee dat het ding in HA gekoppeld is maar nog geen automations aan gekoppeld zijn. Dus hij doet op dit moment nog niks :+ Dat is wel vervelend om het weer handmatig aan te moeten zetten. Eerst de cube werkend krijgen, en ga ik hier nog een keer goed over nadenken. Bedankt voor je input.
Cube in Node-red
ALL EVENTS > switch (msg.payload.entity_id = binary_sensor.cube_158d00028aee16) > switch (msg.payload.event.action_type = free_fall, flip90, shake_air, etc)
@Aegle Gokje: @ThinkPad voegt in de 'Joiner' de ls110 zelf toe om de payload te scheiden tussen de ls110 en de ls120. Bij jou staat dat er niet tussen en moet je dus msg.payload.pwr gebruiken?

  • Aegle
  • Registratie: november 2013
  • Laatst online: 24-06 23:14

Aegle

"hier" = Schiedam, ZH...

@ThinkPad : Voor de volledigheid hierbij de code. Ik lees het nu uit met de Debug-node. Simpel:

code:
1
[{"id":"acc6759a.4b104","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"6fc2a15f.31b9b8","type":"inject","z":"acc6759a.4b104","name":"@10s","topic":"","payload":"","payloadType":"date","repeat":"10","crontab":"","once":false,"onceDelay":0.1,"x":250,"y":320,"wires":[["94a14b62.492a88"]]},{"id":"94a14b62.492a88","type":"http request","z":"acc6759a.4b104","name":"LS110 Actual PV","method":"GET","ret":"obj","url":"http://192.168.178.14/a?f=j","tls":"","x":480,"y":320,"wires":[["9acee80c.1e73a8"]]},{"id":"76c07027.c9f58","type":"debug","z":"acc6759a.4b104","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":970,"y":320,"wires":[]},{"id":"9acee80c.1e73a8","type":"function","z":"acc6759a.4b104","name":"Opbrengst","func":"var zon = msg.payload.ls110.pwr;\n// var p1 = msg.payload.ls120.pwr;\nvar opbrengst = parseFloat(zon);\n\nmsg.payload = opbrengst;\n\nvar status = {\n    text: 'Bruto: ' + opbrengst + ' W',\n};\nnode.status(status);\n\n\nif (opbrengst > 0) {\n return msg;\n} \n\n\n","outputs":1,"noerr":0,"x":740,"y":320,"wires":[["76c07027.c9f58"]]}]


@lolgast : You're my hero! _/-\o_ Natuurlijk... 8)7 8)7 8)7. Dat was het. Nou, hou ik nog paar haren over...

De volgende uitdaging: Deze waarde schrijft naar een serie in een Influx database. Nu wil ik de huidige opbrengst (dus kWh) ook wegschrijven naar dezelfde database. De berekening hiervoor wil ik ook in Node-Red maken. Met dit getal kun je dan de efficiency bepalen :) .

10 x Yingli YL260C-30b @ 10 x OP300 SolarEdge optimizers en SE3000 op 158º. Live: PVoutput , SolarEdge


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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.

  • herofruit
  • Registratie: januari 2015
  • Laatst online: 12:24
DeadMetal schreef op zondag 18 november 2018 @ 10:04:
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.
Perfect! Bedankt!
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.
Dat zou ook kunnen, maar gezien de eenvoud van Node-RED t.o.v. de soms moeilijke YAML taal van HA, probeer ik nu zo veel mogelijk in eerstgenoemde te doen :-)

Zit er nu aantal uurtjes mee te klooien, het is een prachtige aanvulling op HA!

4800wp zuid - pvoutput.org


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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%)


  • z1rconium
  • Registratie: augustus 2014
  • Laatst online: 24-06 10:37
DeadMetal schreef op zondag 25 november 2018 @ 20:19:
[...]


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?
Er zitten melodietjes in, standaard hoor je hetzelfde geluid als op 06:00 in dat filmpje. Ik heb hem van allekabels, ding van grundig. maar heeft exact dezelfde ingewanden, zelfs hetzelfde printplaatje.
@KvNwPPr Met deze function ertussen ipv de rbe? Het kan vast netter, ik zal niet beweren dat ik ooit een cursus programmeren heb gevolgd :+

code:
1
[{"id":"b6daba31.85f7b8","type":"function","z":"ba68260d.f9c468","name":"+ >=5 ?","func":"let current = context.get('current');\nif (current === null)\n{\n    context.set(\"current\", 0);\n}\nif ((msg.payload - current) >= 5)\n{\n    context.set(\"current\", msg.payload);\n    node.status({text: msg.payload});\n    return [msg];\n} else {\n    context.set(\"current\", msg.payload);\n    node.status({text: msg.payload});\n    return [null];\n}","outputs":1,"noerr":0,"x":470,"y":1320,"wires":[["6c9e3fc2.444e4"]]},{"id":"e57ee1cc.4ff55","type":"inject","z":"ba68260d.f9c468","name":"","topic":"","payload":"1","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":260,"y":1250,"wires":[["b6daba31.85f7b8"]]},{"id":"472181eb.59da8","type":"inject","z":"ba68260d.f9c468","name":"","topic":"","payload":"3","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":260,"y":1300,"wires":[["b6daba31.85f7b8"]]},{"id":"97b923b3.ca1cc","type":"inject","z":"ba68260d.f9c468","name":"","topic":"","payload":"10","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":260,"y":1400,"wires":[["b6daba31.85f7b8"]]},{"id":"6c9e3fc2.444e4","type":"debug","z":"ba68260d.f9c468","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":750,"y":1320,"wires":[]},{"id":"60f90aec.8d2b14","type":"inject","z":"ba68260d.f9c468","name":"","topic":"","payload":"8","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":260,"y":1350,"wires":[["b6daba31.85f7b8"]]}]

lolgast wijzigde deze reactie 06-12-2018 08:41 (7%)


  • Thoit
  • Registratie: februari 2015
  • Laatst online: 07:49
lolgast schreef op maandag 10 december 2018 @ 11:33:
@Thoit Als je nou eens dit in je function zet:

JavaScript:
1
2
3
4
5
6
7
8
9
msg.payload = new Date(msg.data.last_changed).getTime();
let date = new Date().getTime();
if ((date - msg.payload) > 86400000){
    node.status({text:"24h ago"});
    return msg;
} else {
    node.status({text:"not needed"});
    return null;
}

Die convert de last_changed waarde naar een Epoch(?) waarde in ms sinds 1 januari 1970. Vervolgens maakt hij een variabele met de huidige tijd in Epoch. De last_changed waarde wordt afgetrokken van de huidige waarde. Als het verschil groter is dan 86400000ms (24 uur) dan wordt de msg.payload doorgelaten. Zo niet, dan gebeurd er niets meer.

Ik zou met deze constructie de poll_state-node wel op meer dan 5 minuten zetten, anders heb je natuurlijk meerdere triggers terwijl je timer nog loopt. En uiteindelijk komt het ook niet op 5 minuten na 24 uur toch :)
Dat is onzin, want de last_changed waarde is gewijzigd door de eerste service_node die de switch aanzet natuurlijk...
Yes, volgens mij is doet dit wat het moet doen. Held!! _/-\o_ Eerst nog even uitgebreid testen.

Voor de geinsteresseerde:


code:
1
[{"id":"6bc095fe.40a41c","type":"function","z":"852ea3f3.215d5","name":"Pomp gelopen laatste 24u?","func":"msg.payload = new Date(msg.data.last_changed).getTime();\nlet date = new Date().getTime();\nif ((date - msg.payload) > 86400000){\n    node.status({text:\"24h ago\"});\n    return msg;\n} else {\n    node.status({text:\"not needed\"});\n    return null;\n}","outputs":1,"noerr":0,"x":400,"y":380,"wires":[["10ff9630.b89bda"]]}]

Ik heb een vraag. Tado (lezen we mee @tado ?) is lekker gebruikersvriendelijk bezig en heeft er in de nieuwe app voor gekozen om je verwarming niet meer automatisch terug te schroeven bij verlaten huis wanneer je een handmatige aanpassing voor een zone hebt gedaan.

Doordeweeks staat in onze woonkamer de verwarming uit, omdat áls er al iemand thuis is er in de studeerkamer wordt gewerkt. Uiteraard is er een uitzondering op die regel en dan wordt in de Tado app de verwarming van de woonkamer aangezet. Voorheen was het zo dat als je dan van huis ging ('s middags naar kantoor bijvoorbeeld) de verwarming in de woonkamer werd uitgezet en uit bleef tot de eerstvolgende regel in het 'Slimme Schema' van de Tado app. Nu blijft de verwarming lekker doorbranden...

Ik heb in Node-RED nu het volgende gemaakt:
En ik zit te stoeien met de laatste node en dan met name het vullen van de entity_id. Deze kan blijkbaar niet via een msg.[vul-iets-in]

Dus ik heb dit in de template-node ervoor gezet

Zijn er meer mensen die hier tegenaan zijn gelopen met die service_node? Ik vraag me af of dit de juiste (meest nette) oplossing is voor dit probleem. Ik wil de status alleen aanpassen als het nodig is. Soms staan ze op Off namelijk (zie slaapkamer). Dat komt dan wel door het 'Smart schedule', maar blijkbaar vindt Tado dat dan toch een overrulende waarde.
@alexswart Het kan vast ook anders, maar ik zou het zo oplossen denk ik.

Je MQTT waarde komt als het goed is als tekst binnen, niet als nummer. De regex zet de waardes >= 18 om naar laag en <= 19 om naar hoog. Als de waarde 'hoog' bij de traffic light is aangekomen, gaat het licht op groen en kunnen er berichten doorheen. Dat betekent dat als jouw device de status not_home heeft (ik heb een 'Halt If State' ingesteld), dit bericht aankomt bij de 'zend push bericht' en je dus een berichtje krijgt. Is de thermostaat lager of gelijk aan 18, dan staat het stoplicht op rood en krijg je dus geen bericht.

YAML:
1
[{"id":"d831ef6.213c51","type":"traffic","z":"90abb580.b37a28","name":"","property_allow":"payload","filter_allow":"hoog","ignore_case_allow":true,"negate_allow":false,"send_allow":false,"property_stop":"payload","filter_stop":"laag","ignore_case_stop":true,"negate_stop":false,"send_stop":false,"default_start":false,"differ":false,"x":730,"y":310,"wires":[["a4af8ddb.9e30b"]]},{"id":"448dc79e.3c43d8","type":"mqtt in","z":"90abb580.b37a28","name":"Thermostaat setpoint","topic":"events/central_heating/otmonitor/setpoint","qos":"2","broker":"2e4e13df.d5e76c","x":350,"y":380,"wires":[["77687ef0.39971"]]},{"id":"a4af8ddb.9e30b","type":"api-call-service","z":"90abb580.b37a28","name":"zend push bericht","server":"f7c00361.0f8bb","service_domain":"notify","service":"push","data":"{\"message\":\"de thermostaat staat nog aan\"}","mergecontext":"","x":940,"y":310,"wires":[[]]},{"id":"a41f8c88.d74e5","type":"server-state-changed","z":"90abb580.b37a28","name":"device_tracker.alex","server":"f7c00361.0f8bb","entityidfilter":"device_tracker.alex","entityidfiltertype":"exact","haltifstate":"home","outputinitially":false,"x":340,"y":310,"wires":[["d831ef6.213c51"]]},{"id":"77687ef0.39971","type":"change","z":"90abb580.b37a28","name":"regex","rules":[{"t":"change","p":"payload","pt":"msg","from":"^(1[0-8]|\\d[^\\d])","fromt":"re","to":"laag","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"^(1[9]|2\\d)","fromt":"re","to":"hoog","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":550,"y":380,"wires":[["d831ef6.213c51"]]},{"id":"2e4e13df.d5e76c","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":""},{"id":"f7c00361.0f8bb","type":"server","z":"","name":"homeassistant","legacy":false,"hassio":false,"rejectUnauthorizedCerts":true}]


Edit: Ik bedenk me nu. Waarom niet gewoon meteen een MQTT bericht naar je thermostaat om hem omlaag te zetten? :+
Dat kan ook niet, daarom los ik dat op met zo'n traffic light :)
@KvNwPPr Mijn avondplannen zijn gewijzigd, maar ik ga er morgen eens voor zitten. Kijken wat er van te bouwen is :)


* lolgast zet Kabouter Wesley stem op: "De volgende morgen..."

@KvNwPPr Ik heb dit er van gebakken :+

YAML:
1
[{"id":"564bc7c2.afdb38","type":"server-state-changed","z":"ba68260d.f9c468","name":"PostNL","server":"2bd633e8.fb6bdc","entityidfilter":"sensor.postnl","entityidfiltertype":"substring","outputinitially":true,"state_type":"str","haltifstate":"0","halt_if_type":"num","halt_if_compare":"lte","x":180,"y":1690,"wires":[["fee6631b.95417"]]},{"id":"fee6631b.95417","type":"change","z":"ba68260d.f9c468","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":380,"y":1690,"wires":[["f1dd5e7b.80965"]]},{"id":"f1dd5e7b.80965","type":"split","z":"ba68260d.f9c468","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":570,"y":1690,"wires":[["b3010b78.c16268"]]},{"id":"b3010b78.c16268","type":"function","z":"ba68260d.f9c468","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":750,"y":1690,"wires":[["d8db0d34.3617d"]]},{"id":"d8db0d34.3617d","type":"telegrambot-payload","z":"ba68260d.f9c468","name":"Versturen","bot":"","chatId":"667099650","sendMethod":"sendMessage","payload":"","x":940,"y":1690,"wires":[[]]},{"id":"ffc67f28.38d2f","type":"comment","z":"ba68260d.f9c468","name":"PostNL","info":"","x":180,"y":1640.4375019073486,"wires":[]},{"id":"2bd633e8.fb6bdc","type":"server","z":"","name":"Home Assistant","legacy":false,"hassio":false,"rejectUnauthorizedCerts":true}]

Ik heb maar 1 pakketje onderweg, dus ik heb niet kunnen testen wat er gebeurd bij 2 regels

lolgast wijzigde deze reactie 18-12-2018 09:17 (106%)


  • Kaspers
  • Registratie: juni 2004
  • Laatst online: 10:34
Netjes :).

Je zou de functie nog kunnen vervangen door de template node:



Is hij nog niets simpeler.

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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.
@HeroS Mijn flow is veel uitgebreider, maar uitgekleed naar het minimum om hem te laten werken voor mij:
https://images.lolgast.nl/uploads/big/e6394cc4cf120a1bdfaf66764c7b7c8e.png
De licht sensor zet het traffic light aan als het donker genoeg is en weer uit als het licht is. Mocht het stoplicht aan staan en er is beweging, komt het bericht door het stoplicht bij de MQTT sensor en gaat het licht aan.

De 'true?' bij de bewegingssensor is gedaan omdat deze sensor (Hue) ook een bericht verstuurt als de waarde terug naar 'false' gaat.


Puur naar de beweging-/lichtsensor gekeken is dit mijn hele stuk.

Hangt nog een heel stuk onder met schakelaars en de Hue Tap die hier op inhaken maar die heb ik er even tussenuit gehaald

lolgast wijzigde deze reactie 19-12-2018 13:00 (26%)

Eerder had ik al iets gemaakt om de website van Home Assistant te controleren op versienummer zodat ik een melding krijg als er een update beschikbaar is. Inmiddels liep ik met mijn Volumio installatie ook wat versies achter, dus ik ben maar weer gaan hobby-bobben. Dit is mijn resultaat, met in het achterhoofd rekeninghoudend dat er meer van dit soort checks kunnen komen en die eenvoudig toegevoegd moeten kunnen worden


YAML:
1
[{"id":"840bd194.fd968","type":"inject","z":"905df0f3.d8c748","name":"4 Hours","topic":"","payload":"","payloadType":"date","repeat":"14400","crontab":"","once":false,"onceDelay":0.1,"x":139,"y":1080,"wires":[["ef257bc3.4eed08","1bdc5a12.984dce"]]},{"id":"ef257bc3.4eed08","type":"http request","z":"905df0f3.d8c748","name":"Volumio","method":"GET","ret":"txt","url":"https://volumio.org/get-started","tls":"","x":320,"y":1160,"wires":[["9157d08f.2c75b"]]},{"id":"1bdc5a12.984dce","type":"http request","z":"905df0f3.d8c748","name":"Home Assistant","method":"GET","ret":"txt","url":"https://www.home-assistant.io/","tls":"","x":340,"y":1080,"wires":[["7c1e0e9b.327388"]]},{"id":"9157d08f.2c75b","type":"html","z":"905df0f3.d8c748","name":"","property":"payload","outproperty":"payload","tag":"#pi.tab-pane span:contains(VERSION)","ret":"text","as":"multi","x":590,"y":1160,"wires":[["83447311.803bd"]]},{"id":"7c1e0e9b.327388","type":"html","z":"905df0f3.d8c748","name":"","property":"payload","outproperty":"payload","tag":".current-version h1","ret":"text","as":"multi","x":530,"y":1080,"wires":[["5b31a4d3.03d45c"]]},{"id":"83447311.803bd","type":"change","z":"905df0f3.d8c748","name":"set payload","rules":[{"t":"set","p":"topic","pt":"msg","to":"Volumio","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"$.payload.$split(\": \")[1]","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":850,"y":1160,"wires":[["a580786f.5e6f7"]]},{"id":"5b31a4d3.03d45c","type":"change","z":"905df0f3.d8c748","name":"set payload","rules":[{"t":"set","p":"topic","pt":"msg","to":"HA","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"$.payload.$split(\": \")[1]","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":730,"y":1080,"wires":[["a580786f.5e6f7"]]},{"id":"a580786f.5e6f7","type":"rbe","z":"905df0f3.d8c748","name":"","func":"rbei","gap":"","start":"","inout":"out","property":"payload","x":940,"y":1080,"wires":[["6c7ed56.1b72fac"]]},{"id":"6c7ed56.1b72fac","type":"function","z":"905df0f3.d8c748","name":"Message template","func":"msg.payload = { data: {'title': msg.topic + ' update','message': 'Nieuwe '+ msg.topic + ' versie: ' + msg.payload }};\nmsg.payload.service = 'iphone_stefan'\nreturn msg;","outputs":1,"noerr":0,"x":1130,"y":1080,"wires":[["a01227cb.e0fbf8"]]},{"id":"a805b89a.d593a8","type":"comment","z":"905df0f3.d8c748","name":"HA Version check","info":"","x":139,"y":1040,"wires":[]},{"id":"deb89e76.95de6","type":"comment","z":"905df0f3.d8c748","name":"Volumio Version check","info":"","x":160,"y":1120,"wires":[]}]


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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%)


  • KvNwPPr
  • Registratie: februari 2014
  • Laatst online: 00:26
alexswart schreef op zaterdag 12 januari 2019 @ 18:16:
[...]

Ik krijg de waarde binnen via mqtt en kan ook wel connecten met influxdb maar hij schrijft de waardes niet weg. De database bestaat ook en hierin wordt ook wel een topic aangemaakt.
Ik denk dat het dan inderdaad als string binnenkomt alleen geen idee hoe ik dit kan omzetten
String to number:
Meer info: https://discourse.nodered.org/t/string-to-number/988/2
@R0y. Die Bigtimer is echt een verschrikkelijke node in mijn ogen. Kan veel te veel maar is nergens goed voor :+

Ik wil je de time-range-node aanbevelen. Die doet precies wat jij wilt. Wel of geen bericht doorlaten aan de hand van tijden/standen van de zon/en-nog-wat. Volgens mij ben je er dan met onderstaande al
JSON:
1
[{"id":"dc705e9a.ef6fa","type":"server-state-changed","z":"fc20bc35.aeb33","name":"sensor gang","server":"7df13ffe.c5395","entityidfilter":"binary_sensor.motion_sensor_158d0002b70ae0","entityidfiltertype":"substring","outputinitially":true,"haltifstate":"","outputs":1,"x":280,"y":300,"wires":[["2d7252f5.e2b77e"]]},{"id":"2d7252f5.e2b77e","type":"time-range-switch","z":"fc20bc35.aeb33","name":"","lat":"","lon":"","startTime":"sunset","endTime":"sunrise","startOffset":"-30","endOffset":"30","x":510,"y":300,"wires":[["3411576c.4d1748"],[]]},{"id":"3411576c.4d1748","type":"switch","z":"fc20bc35.aeb33","name":"donker of licht","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":780,"y":300,"wires":[["9b1d7da6.5f461","df316ce0.9af1a"],["934527af.3ee468"]]},{"id":"9b1d7da6.5f461","type":"stoptimer","z":"fc20bc35.aeb33","duration":"125","units":"Second","payloadtype":"str","payloadval":"off","name":"","x":1080,"y":300,"wires":[["934527af.3ee468"],[]],"inputLabels":["on"],"outputLabels":["off","off"]},{"id":"df316ce0.9af1a","type":"api-call-service","z":"fc20bc35.aeb33","name":"Licht aan","server":"7df13ffe.c5395","service_domain":"light","service":"turn_on","data":"{\"entity_id\":\"light.gang_beneden\"}","render_data":false,"mergecontext":"","x":1080,"y":240,"wires":[[]],"inputLabels":["on"]},{"id":"934527af.3ee468","type":"api-call-service","z":"fc20bc35.aeb33","name":"Licht uit","server":"7df13ffe.c5395","service_domain":"light","service":"turn_off","data":"{\"entity_id\":\"light.gang_beneden\"}","render_data":false,"mergecontext":"","x":1085,"y":376,"wires":[[]]},{"id":"1a9fd57a.33528b","type":"inject","z":"fc20bc35.aeb33","name":"aan","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":804,"y":241,"wires":[["df316ce0.9af1a"]]},{"id":"8b8a3349.47c83","type":"inject","z":"fc20bc35.aeb33","name":"uit","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":803.5,"y":375,"wires":[["934527af.3ee468"]]},{"id":"7df13ffe.c5395","type":"server","z":"","name":"Home Assistant Hass","legacy":true,"hassio":true,"rejectUnauthorizedCerts":true}]

Edit: Ik heb een fout gemaakt, moest de Time-Range node zijn, niet Schedex

lolgast wijzigde deze reactie 12-01-2019 19:41 (33%)


  • R0y.
  • Registratie: juni 2010
  • Laatst online: 11:34
lolgast schreef op zaterdag 12 januari 2019 @ 19:34:
@R0y. Die Bigtimer is echt een verschrikkelijke node in mijn ogen. Kan veel te veel maar is nergens goed voor :+

Ik wil je de time-range-node aanbevelen. Die doet precies wat jij wilt. Wel of geen bericht doorlaten aan de hand van tijden/standen van de zon/en-nog-wat. Volgens mij ben je er dan met onderstaande al
JSON:
1
[{"id":"dc705e9a.ef6fa","type":"server-state-changed","z":"fc20bc35.aeb33","name":"sensor gang","server":"7df13ffe.c5395","entityidfilter":"binary_sensor.motion_sensor_158d0002b70ae0","entityidfiltertype":"substring","outputinitially":true,"haltifstate":"","outputs":1,"x":280,"y":300,"wires":[["2d7252f5.e2b77e"]]},{"id":"2d7252f5.e2b77e","type":"time-range-switch","z":"fc20bc35.aeb33","name":"","lat":"","lon":"","startTime":"sunset","endTime":"sunrise","startOffset":"-30","endOffset":"30","x":510,"y":300,"wires":[["3411576c.4d1748"],[]]},{"id":"3411576c.4d1748","type":"switch","z":"fc20bc35.aeb33","name":"donker of licht","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":780,"y":300,"wires":[["9b1d7da6.5f461","df316ce0.9af1a"],["934527af.3ee468"]]},{"id":"9b1d7da6.5f461","type":"stoptimer","z":"fc20bc35.aeb33","duration":"125","units":"Second","payloadtype":"str","payloadval":"off","name":"","x":1080,"y":300,"wires":[["934527af.3ee468"],[]],"inputLabels":["on"],"outputLabels":["off","off"]},{"id":"df316ce0.9af1a","type":"api-call-service","z":"fc20bc35.aeb33","name":"Licht aan","server":"7df13ffe.c5395","service_domain":"light","service":"turn_on","data":"{\"entity_id\":\"light.gang_beneden\"}","render_data":false,"mergecontext":"","x":1080,"y":240,"wires":[[]],"inputLabels":["on"]},{"id":"934527af.3ee468","type":"api-call-service","z":"fc20bc35.aeb33","name":"Licht uit","server":"7df13ffe.c5395","service_domain":"light","service":"turn_off","data":"{\"entity_id\":\"light.gang_beneden\"}","render_data":false,"mergecontext":"","x":1085,"y":376,"wires":[[]]},{"id":"1a9fd57a.33528b","type":"inject","z":"fc20bc35.aeb33","name":"aan","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":804,"y":241,"wires":[["df316ce0.9af1a"]]},{"id":"8b8a3349.47c83","type":"inject","z":"fc20bc35.aeb33","name":"uit","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":803.5,"y":375,"wires":[["934527af.3ee468"]]},{"id":"7df13ffe.c5395","type":"server","z":"","name":"Home Assistant Hass","legacy":true,"hassio":true,"rejectUnauthorizedCerts":true}]

Edit: Ik heb een fout gemaakt, moest de Time-Range node zijn, niet Schedex
Top, dit was hem! Ik was juist zo'n functie binnen bigtimer aan het zoeken. Ik kan weer verder :) _/-\o_

  • Sander
  • Registratie: juni 2004
  • Laatst online: 08:07
Als onderdeel van recente 'move' van al mijn Zigbee devices verspreid over Aqara en Tradfri bridge naar zigbee2mqtt ook bezig met een move naar node-red voor automations (ipv home assistant). Nu schakelde ik in HASS eigenlijk altijd met groepen devices ipv individuele, maar uiteraard kent zigbee2mqtt dit concept niet. Dus zit nu in twijfel over de meest cleane aanpak:
- Node-red ook proberen zaken te groeperen en vanuit daar via MQTT alles aansturen (voordeel: Alles draait door zonder homeassistent, nadeel: dubbele administratie)
- Via Node-red de home assistant group schakelen (Voordeel: Geen dubbele groepen etc, Nadeel: home assistant down = automations weg)

Hoe lossen jullie dit op?

  • Milmoor
  • Registratie: januari 2000
  • Laatst online: 09:40

Milmoor

Footsteps and pictures.

Ik heb Node-Red en Domoticz via MQTT aan elkaar gehangen. De devices worden hiermee over en weer qua status synchroon gehouden. In globale variabelen wordt aan de kant van Node-Red bijgehouden wat de status is. Dat maakt de werkstromen overzichtelijk en voorkomt meervoudig uitlezen. De basis staat, ik ga door met de puntjes op de I.

https://tweakers.net/ext/f/7uYlKlFr9TE5ALNaL54iWLEq/thumb.png
https://tweakers.net/ext/f/NytjzVVekj6QaYce1JmDlnpv/thumb.png

Code

Rekeningrijden is onvermijdelijk, uitstel is struisvogelpolitiek.


  • Thoit
  • Registratie: februari 2015
  • Laatst online: 07:49
ThinkPad schreef op dinsdag 22 januari 2019 @ 10:11:
@Thoit Je kunt beter tellen en dan een melding sturen.
Stel dat je elke minuut een trigger doet, elke keer als het verbruik onder 5W is (bijv.) dan verhoog je een tellertje met +1. Als het tellertje op 10 zit (voorbeeld, zelf goede waarde kiezen) dan stuur je een bericht. Als het verbruik op >1500W zit dan reset je het tellertje weer naar 0.
Dat is een goede, al snap ik op dit moment niet echt hoe de functions zijn opgebouwd binnen Node-Red. Heb er te weinig tijd in kunnen steken om uit te zoeken hoe ik dit ophoog.

Bedankt voor je feedback!
djkooij schreef op dinsdag 22 januari 2019 @ 10:16:
[...]


Zeker wel een voorbeeldje.
In mijn geval werk ik met de Power Monitor node:

[Afbeelding]


https://flows.nodered.org...red-contrib-power-monitor

Werkt hier probleemloos met de wasmachine.
Helaas gebruik ik de Hassio add-on, waardoor ik de functie mis en ook niet kan installeren. Lijkt echter op een erg handige functie!
lolgast schreef op dinsdag 22 januari 2019 @ 11:26:
@Thoit Mijn oplossing is iets minder NR georiënteerd: Ik heb in Home Assistant een template sensor gemaakt
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
    wasmachine_state_template:
      friendly_name: 'Wasmachine - Status'
      value_template: >-
          {%- if is_state("switch.neocoolcam_wasmachine_switch", "off") %}
              Schakelaar Uit
          {%  elif states('sensor.neocoolcam_wasmachine_power') | float >= 0.1 and states('sensor.neocoolcam_wasmachine_power') | float < 10.0 | float %}
              Standby
          {%  elif states('sensor.neocoolcam_wasmachine_power') | float >= 10.0 and states('sensor.neocoolcam_wasmachine_power') | float < 3600.0 | float %}
              In gebruik
          {% else %}
              Uit
          {%- endif %}

Deze sensor wordt niet continu geüpdatet qua status en dus triggert hij geen events, tenzij hij daadwerkelijk van bijvoorbeeld 'In gebruik' wijzigt naar 'Uit'.[Afbeelding]
JSON:
1
[{"id":"c994ffb6.b6ef","type":"api-current-state","z":"905df0f3.d8c748","name":"Check Stefan home","server":"39fd7a9b.252f86","halt_if":"not_home","override_topic":true,"override_payload":true,"entity_id":"device_tracker.stefan","outputs":1,"x":750,"y":240,"wires":[["db378911.43a3f8"]]},{"id":"980c586f.714928","type":"trigger","z":"905df0f3.d8c748","op1":"","op2":"true","op1type":"nul","op2type":"bool","duration":"10","extend":false,"units":"min","reset":"reset","bytopic":"all","name":"trigger 10 min","x":520,"y":284,"wires":[["c994ffb6.b6ef","4f058d49.54c9e4"]],"icon":"node-red-contrib-stoptimer/stoptimer.png"},{"id":"db378911.43a3f8","type":"function","z":"905df0f3.d8c748","name":"Message template","func":"msg.payload = { \n    data: {\n     'title':\n       'Was is klaar',\n     'message':\n       \"Wasmachine is klaar en moet leeggehaald worden!\" }};\nmsg.payload.service = msg.topic.replace('device_tracker.', 'iphone_');\nreturn msg;","outputs":1,"noerr":0,"x":990,"y":260,"wires":[["829255b5.85c098"]]},{"id":"4f058d49.54c9e4","type":"api-current-state","z":"905df0f3.d8c748","name":"Check Meggie home","server":"39fd7a9b.252f86","halt_if":"not_home","override_topic":true,"override_payload":true,"entity_id":"device_tracker.meggie","outputs":1,"x":760,"y":290,"wires":[["db378911.43a3f8"]]},{"id":"40de04c1.3699ec","type":"switch","z":"905df0f3.d8c748","name":"","property":"payload","propertyType":"msg","rules":[{"t":"neq","v":"Uit","vt":"str"},{"t":"eq","v":"Uit","vt":"str"}],"checkall":"false","repair":false,"outputs":2,"x":330,"y":260,"wires":[["2a98b937.25bbc6"],["980c586f.714928"]]},{"id":"2a98b937.25bbc6","type":"change","z":"905df0f3.d8c748","name":"payload to reset","rules":[{"t":"set","p":"payload","pt":"msg","to":"reset","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":520,"y":237,"wires":[["980c586f.714928"]]},{"id":"829255b5.85c098","type":"link out","z":"905df0f3.d8c748","name":"","links":["d40f2d4a.e0af6","a1470c3e.8ac12"],"x":1155,"y":260,"wires":[]},{"id":"8eebb766.98ff58","type":"server-state-changed","z":"905df0f3.d8c748","name":"Wasmachine status","server":"39fd7a9b.252f86","entityidfilter":"sensor.wasmachine_state_template","entityidfiltertype":"exact","haltifstate":"","outputs":1,"x":150,"y":260,"wires":[["40de04c1.3699ec"]]}]

Thanks, dit is voor mij nu de meest logische om te maken. In feite komt het neer op iets van: als het verbruik < 3 watt voor een bepaalde tijd nadat er een hoger verbruik is geweest, dan mag de melding komen dat die klaar is.

Heb er nu dit van gemaakt, zal nog niet 100% zijn maar volgens mij is dit wat robuuster.


  • Naj_Geetsrev
  • Registratie: oktober 2002
  • Laatst online: 24-06 07:25
Thoit schreef op dinsdag 22 januari 2019 @ 13:18:
[...]


[...]


Helaas gebruik ik de Hassio add-on, waardoor ik de functie mis en ook niet kan installeren. Lijkt echter op een erg handige functie!


[...]
Kan dus wel. :). Onder Hass.io -> Node-red -> Kopje config -> Zet "node-red-contrib-power-monitor" bij "npm_packages". Volgende keer dat je de container opnieuw opstart installeert hij de module.

Voorbeeld van mijn config

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{
  "log_level": "info",
  "credential_secret": "xxxxx",
  "http_node": {
    "username": "xxxxx",
    "password": "xxxxx"
  },
  "http_static": {
    "username": "xxxxx",
    "password": "xxxxx"
  },
  "port": 1880,
  "ssl": true,
  "certfile": "fullchain.pem",
  "keyfile": "privkey.pem",
  "require_ssl": true,
  "system_packages": [
    "linux-headers",
    "python",
    "make",
    "g++"
  ],
  "npm_packages": [
    "node-red-contrib-rfxcom",
    "node-red-contrib-huemagic",
    "node-red-node-rbe",
    "node-red-contrib-npm",
    "node-red-contrib-cast",
    "node-red-node-geofence",
    "node-red-node-darksky",
    "node-red-contrib-stoptimer",
    "node-red-contrib-timecheck",
    "node-red-contrib-tado-client",
    "node-red-contrib-ramp-thermostat",
    "node-red-contrib-broadlink-control",
    "node-red-contrib-tv-bravia"
  ],
  "init_commands": []
}


  • ny-hardcore
  • Registratie: maart 2002
  • Laatst online: 10-06 20:51
tdw schreef op woensdag 30 januari 2019 @ 10:06:
[...]
Deze staan bij mij allemaal op 0.


[...]

Hier heb ik zelf nooit aan gezeten.

Is de Xiaomi het enige ZigBee apparaat waarmee je kunt proberen? Ik moet, nu ik zelf ff test, ook toegeven dat bijv. mijn Ikea bewegingsmelder niet via deconz_events kan worden opgevangen...
Alleen switches gaan via events ( ik denk omdat die geen echte state hebben, ze sturen alleen een event) De Cube is een switch. De motion is een sensor.

cd /pub && more beer


  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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%)


  • Thoit
  • Registratie: februari 2015
  • Laatst online: 07:49
Heb de cube opnieuw toegevoegd en nu doet die het eindelijk _/-\o_ Zie nu ook netjes de events in NR voorbijkomen. Er hoeft dus niks extra's qua logging geconfigureerd te worden.

  • Greetoz
  • Registratie: juni 2002
  • Laatst online: 23-06 19:54
lolgast schreef op vrijdag 1 februari 2019 @ 17:32:
@Greetoz De status van de schakelaar maakt niet uit nee. Waar denk je dat die ‘toggle’-function voor is :9

Maar misschien moet je wat minder nadenken over wat er allemaal fout zou kunnen gaan en het gewoon eens proberen. Dan snap je de flow misschien ook meteen wat beter
Ik ben er vandaag even voor gaan zitten aangezien mijn pulse schakelaars binnen zijn gekomen. En je hebt gelijk. Ik heb jouw flow gebruikt en het werkt als een trein! Excuses ;-)!

@lolgast Ik snap jouw flow nu en hij leest de status van de lamp uit, maar is dat eigenlijk wel nodig als je toch toggled? Want hij moet toch gewoon hoe dan ook de lamp schakelen als je een schakelaar gebruikt dus ik vroeg mij af of het nodig was om de current state uit te lezen?

Greetoz wijzigde deze reactie 07-02-2019 13:41 (19%)


  • Greetoz
  • Registratie: juni 2002
  • Laatst online: 23-06 19:54
lolgast schreef op donderdag 7 februari 2019 @ 13:43:
@Greetoz Als je de status van de lamp niet eerst uitleest, op basis van welke gegevens weet je dan naar welke status je moet togglen?

Dat zou je kunnen doen door mijn andere flow, met de flow.insert-variabele, maar zoals gezegd kan dat niet bij MQTT gestuurde lampen omdat je daar geen output hebt na het schakelen van de lamp
Misschien is het verschil dat ik de Ikea lampen rechtstreeks via Deconz op HA heb. Maar ik kan bij de Call service node op de lamp ook toggle kiezen. Ik kan dat een switch node er tussen zetten die zowel het off als het on event doorsturen naar de lamp: zoals dit:

https://i.postimg.cc/g0J0CvWT/toggle.jpg


code:
1
[{"id":"2a9b7d73.62b572","type":"server-state-changed","z":"c3c5c3b6.2236a","name":"Evi's bedroom light","server":"23904a0c.56d286","entityidfilter":"switch.evisroom_double_switch_switch_1","entityidfiltertype":"substring","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"","halt_if_compare":"is","outputs":1,"x":130,"y":1060,"wires":[["a93148d5.2a74b8"]]},{"id":"5e9e01e9.e838","type":"api-call-service","z":"c3c5c3b6.2236a","name":"Evi's bedroom light","server":"23904a0c.56d286","service_domain":"homeassistant","service":"toggle","data":"{\"entity_id\":\"light.evis_kamer_lamp\"}","render_data":false,"mergecontext":"","output_location":"payload","output_location_type":"msg","x":520,"y":1060,"wires":[[]]},{"id":"a93148d5.2a74b8","type":"switch","z":"c3c5c3b6.2236a","name":"toggle","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"on","vt":"str"},{"t":"cont","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":330,"y":1060,"wires":[["5e9e01e9.e838"],["5e9e01e9.e838"]]},{"id":"23904a0c.56d286","type":"server","z":"","name":"Home Assistant"}]

@Greetoz Ah ja, nu snap ik je. Op die manier kan het ook inderdaad. Ik gebruik mijn lamp nodes met verschillende ingangen en zou heel onverwachts resultaat krijgen als ik het op die manier zou doen. Maar als je een enkele ingang hebt en je flow klein houdt zoals nu werkt dit ook prima.

Vandaar dat ik de toggle gebruik. Ik probeer de actie te definiëren voor de laatste node, en die laatste probeer ik generiek te houden zodat hij meerdere dingen kan afhankelijk van wat er daarvoor bepaald is.

  • druipsnor
  • Registratie: januari 2011
  • Laatst online: 10:54
lolgast schreef op zondag 10 februari 2019 @ 16:38:
@druipsnor Er zijn vele wegen die naar Rome leiden voor deze vraag, maar de eerste ingeving die ik heb :+

JSON:
1
[{"id":"2f57ee73.3bcb02","type":"debug","z":"ba68260d.f9c468","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":710,"y":1780,"wires":[]},{"id":"9527a382.01c43","type":"change","z":"ba68260d.f9c468","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"num","to":"Zin 1","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"2","fromt":"num","to":"Zin 2","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"3","fromt":"num","to":"Zin 3","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"4","fromt":"num","to":"Zin 4","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":480,"y":1780,"wires":[["2f57ee73.3bcb02"]]},{"id":"16cf81f2.0dc6ee","type":"random","z":"ba68260d.f9c468","name":"","low":"1","high":"4","inte":"true","property":"payload","x":290,"y":1780,"wires":[["9527a382.01c43"]]},{"id":"45725f07.45f6e","type":"inject","z":"ba68260d.f9c468","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":1780,"wires":[["16cf81f2.0dc6ee"]]}]

Het werkt perfect, dankjewel. Ik moet duidelijk nog even wennen aan alle mogelijkheden van NR. _/-\o_

  • djkooij
  • Registratie: juni 2001
  • Laatst online: 24-06 23:32

djkooij

voorheen Facemodder

BoschR schreef op dinsdag 12 februari 2019 @ 23:44:
Om een infinite MQTT loop te voorkomen tussen Domoticz en mn Shelly devices had ik bedacht om het gene wat op domoticz/out gepubliseerd wordt eerst te vergelijken met de shelly device status (via de REST API).

Nu heb ik de "http request" functie wel gevonden en geeft ook terug wat ik wil hebben, maar (volgens mij) ben ik na die node mijn oorspronkelijk "msg" kwijt. En kan ik de http response nergens meer mee vergelijken.

Iemand een idee hoe ik de response van een "http request" kan vergelijken met het initiele MQTT bericht?
Dat kan wellicht met de "join" node.


code:
1
[{"id":"c2b50789.170fe8","type":"inject","z":"8ba5c8aa.443bd8","name":"","topic":"outside_temp","payload":"14","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":340,"y":840,"wires":[["373202bc.58ca5e"]]},{"id":"374cceb8.171062","type":"inject","z":"8ba5c8aa.443bd8","name":"","topic":"outside_temp","payload":"16","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":340,"y":880,"wires":[["373202bc.58ca5e"]]},{"id":"5bf5555c.bdd7cc","type":"inject","z":"8ba5c8aa.443bd8","name":"","topic":"inside_temp","payload":"15","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":340,"y":920,"wires":[["373202bc.58ca5e"]]},{"id":"373202bc.58ca5e","type":"join","z":"8ba5c8aa.443bd8","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"payload","joiner":"\\n","joinerType":"str","accumulate":true,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":651,"y":879,"wires":[["251a6f97.eb7dc"]]},{"id":"d9a0564b.8c95a8","type":"debug","z":"8ba5c8aa.443bd8","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":1070,"y":880,"wires":[]},{"id":"251a6f97.eb7dc","type":"function","z":"8ba5c8aa.443bd8","name":"Compare","func":"// this is passed a payload which is an object with\n// properties outside_temp and inside_temp\n//if (msg.payload.outside_temp > msg.payload.inside_temp) {\nif (msg.payload.outside_hum > msg.payload.schuur_hum) {\n    msg.payload = 0;\n} else\n{\n    msg.payload = 1;\n}\nreturn msg;","outputs":1,"noerr":0,"x":840,"y":880,"wires":[["d9a0564b.8c95a8"]]}]

fotospul

BoschR schreef op dinsdag 12 februari 2019 @ 23:44:
Om een infinite MQTT loop te voorkomen tussen Domoticz en mn Shelly devices had ik bedacht om het gene wat op domoticz/out gepubliseerd wordt eerst te vergelijken met de shelly device status (via de REST API).

Nu heb ik de "http request" functie wel gevonden en geeft ook terug wat ik wil hebben, maar (volgens mij) ben ik na die node mijn oorspronkelijk "msg" kwijt. En kan ik de http response nergens meer mee vergelijken.

Iemand een idee hoe ik de response van een "http request" kan vergelijken met het initiele MQTT bericht?
Je weet dat je de change-node kunt gebruikt om je msg.payload te verplaatsen naar msg.schuurtemp? Dan kun je die msg.schuurtemp vergelijken met de nieuwe msg.payload

JSON:
1
[{"id":"4e434d5c.f7b304","type":"debug","z":"ba68260d.f9c468","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":1027,"y":1825,"wires":[]},{"id":"502b8426.2fcec4","type":"function","z":"ba68260d.f9c468","name":"Compare","func":"if (msg.schuurtemp > msg.payload) {\n    msg.payload = 0;\n} else\n{\n    msg.payload = 1;\n}\nreturn msg;","outputs":1,"noerr":0,"x":837,"y":1825,"wires":[["4e434d5c.f7b304"]]},{"id":"dd6efbf7.15d658","type":"change","z":"ba68260d.f9c468","name":"http-node","rules":[{"t":"set","p":"payload","pt":"msg","to":"16","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":657,"y":1825,"wires":[["502b8426.2fcec4"]]},{"id":"a37a1fab.ac6b4","type":"change","z":"ba68260d.f9c468","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"schuurtemp","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":427,"y":1825,"wires":[["dd6efbf7.15d658"]]},{"id":"29b36bf8.903204","type":"inject","z":"ba68260d.f9c468","name":"","topic":"msg.payload","payload":"14","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":197,"y":1825,"wires":[["a37a1fab.ac6b4"]]}]

lolgast wijzigde deze reactie 13-02-2019 21:50 (75%)


  • BoschR
  • Registratie: december 2008
  • Laatst online: 24-06 14:56
Ik ben nieuw met NodeRED. Had eerst een node.js script gemaakt die hetzelfde deed (voorkomen van een infinite loop), maar dan met een timeout van een 200ms. Maar ben het een en ander aan het verplaatsen van de NAS en RPi naar een Odroid C2.

@djkooij Bedankt. Ik kreeg de join node niet echt aan de praat helaas.

@lolgast Nee die kende ik nog niet. NodeRED werkt mooi, maar het kost wel even tijd om alles te verkennen merk ik.

Ik kwam erachter dat ik alleens de msg.payload logde naar de debug console. Maar dan in het hele msg object nog wel de oude waardes blijven bestaan. Dus kan de msg.nvalue (uit Domoticz) vergelijk met de msg.payload.ison (van Shelly).

Werkt prima :) Dus als ik nu de lamp handmatig aan doe wordt de status in Domoticz ook bijgewerkt.

PVOutput live - 3060wp


  • z1rconium
  • Registratie: augustus 2014
  • Laatst online: 24-06 10:37
Milmoor schreef op donderdag 21 februari 2019 @ 19:59:
[...]

Hier twee voorbeelden, 1x JSONata en 1x javascript. Deze kan je importeren in Node-Red. De tweede heeft meer tijd gekost dan ik had verwacht. Javascript zonder IDE is piep om te debuggen. De oplossing van @z1rconium is mooier, maar ik heb me bewust dicht bij je eigen code gehouden. War je de fout in ging is in het ophalen van de temperatuur. Je zocht wel de stationsnaam, maar deed niets met de temperatuur.
Die http node kan ook direct een parsed json object sturen naar de output, dan kun je de json node verwijderen.

Acties:
  • +2Henk 'm!

  • DeadMetal
  • Registratie: mei 2002
  • Laatst online: 10:21
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

Acties:
  • +1Henk 'm!

  • Kaspers
  • Registratie: juni 2004
  • Laatst online: 10:34
In de releasenotes van Node-Red 0.20 staat tevens een uitnodiging om een survey in te vullen. Misschien ook voor jullie aardig om hier aan deel te nemen (2 min):
We speak to lots of you in Slack and the Forum and love hearing about how Node-RED is being used. But we know there’s a much larger community of users and developers out there who are using Node-RED that we haven’t spoken to.

This survey is an opportunity for us to get a better understanding of who our users are, what they do with Node-RED and to help the project stay pointed in the right direction.

Please spare us 10 minutes of your time to fill in the survey here: https://tiny.cc/NodeRED2019Survey
@DeadMetal Wat nou als je het omdraait:
Stel de sensor wijzigt van 0 naar 1, dan stuur je met een delay van bijvoorbeeld 2 uur een bericht. Dan zijn de details wel gevuld toch neem ik aan? Zelfs PostNL is niet zo langzaam :+
8)7 Bedankt

@Jlo88 Ik denk dat dit ook moet kunnen
code:
1
[{"id":"d8bed0f5.5739f","type":"switch","z":"e0d3a09b.7816e","name":"Parse","property":"action","propertyType":"msg","rules":[{"t":"eq","v":"toggle","vt":"str"},{"t":"eq","v":"brightness_up_click","vt":"str"},{"t":"eq","v":"brightness_down_click","vt":"str"},{"t":"eq","v":"arrow_right_click","vt":"str"},{"t":"eq","v":"arrow_left_click","vt":"str"}],"checkall":"true","repair":false,"outputs":5,"x":410,"y":180,"wires":[["2a9f2d24.2a9ac2"],["a293ba91.adccf8"],["e0f70afc.4efef8"],["1356e2a3.51909d"],["34dc278f.c68fd8"]]},{"id":"2a9f2d24.2a9ac2","type":"api-call-service","z":"e0d3a09b.7816e","name":"Toggle","server":"638b3c86.920fd4","service_domain":"light","service":"toggle","data":"{\"entity_id\":\"{{data.entity_id}}\"}","mergecontext":"","output_location":"","output_location_type":"none","x":670,"y":80,"wires":[[]]},{"id":"8b0032f2.b86c4","type":"function","z":"e0d3a09b.7816e","name":"Increase brightness","func":"function newBrightness(current_brightness) {\n    newBrightness_tmp = current_brightness + 50\n    return Math.max(0, Math.min(255, Math.round(newBrightness_tmp)))\n}\n    \nnewMsg = {\n    payload: {\n        \"data\": {\n            \"entity_id\": msg.topic,\n            \"brightness\": newBrightness(msg.data.attributes.brightness)\n        }\n    }\n}\nreturn newMsg;","outputs":1,"noerr":0,"x":850,"y":140,"wires":[["d648fbee.a1fa38"]]},{"id":"fe296cbf.6e1d9","type":"function","z":"e0d3a09b.7816e","name":"Decrease brightness","func":"function newBrightness(current_brightness) {\n    newBrightness_tmp = current_brightness - 50\n    return Math.max(0, Math.min(255, Math.round(newBrightness_tmp)))\n}\n    \nnewMsg = {\n    payload: {\n        \"data\": {\n            \"entity_id\": msg.topic,\n            \"brightness\": newBrightness(msg.data.attributes.brightness)\n        }\n    }\n}\nreturn newMsg;","outputs":1,"noerr":0,"x":860,"y":200,"wires":[["d648fbee.a1fa38"]]},{"id":"d194a549.a9eea8","type":"function","z":"e0d3a09b.7816e","name":"Increase temperature","func":"function IncreaseColorTemp(current_color_temp,min_mireds,max_mireds) {\n    new_color_temp = current_color_temp + 50\n    return Math.max(min_mireds, Math.min(max_mireds, Math.round(new_color_temp)))\n}\n    \nnewMsg = {\n    payload: {\n        \"data\": {\n            \"entity_id\": msg.topic,\n            \"color_temp\": IncreaseColorTemp(msg.data.attributes.color_temp,msg.data.attributes.min_mireds,msg.data.attributes.max_mireds)\n        }\n    }\n}\nreturn newMsg;","outputs":1,"noerr":0,"x":860,"y":320,"wires":[["d648fbee.a1fa38"]]},{"id":"f0e06fbe.ca82d","type":"function","z":"e0d3a09b.7816e","name":"Decrease temperature","func":"function DecreaseColorTemp(current_color_temp,min_mireds,max_mireds) {\n    new_color_temp = current_color_temp - 50\n    return Math.max(min_mireds, Math.min(max_mireds, Math.round(new_color_temp)))\n}\n    \nnewMsg = {\n    payload: {\n        \"data\": {\n            \"entity_id\": msg.topic,\n            \"color_temp\": DecreaseColorTemp(msg.data.attributes.color_temp,msg.data.attributes.min_mireds,msg.data.attributes.max_mireds)\n        }\n    }\n}\nreturn newMsg;","outputs":1,"noerr":0,"x":860,"y":260,"wires":[["d648fbee.a1fa38"]]},{"id":"d648fbee.a1fa38","type":"api-call-service","z":"e0d3a09b.7816e","name":"Light","server":"638b3c86.920fd4","service_domain":"light","service":"turn_on","data":"{\"entity_id\":\"{{data.entity_id}}\"}","mergecontext":"","output_location":"","output_location_type":"none","x":1070,"y":140,"wires":[[]]},{"id":"a293ba91.adccf8","type":"api-current-state","z":"e0d3a09b.7816e","name":"Light","server":"638b3c86.920fd4","outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":true,"entity_id":"","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":670,"y":140,"wires":[["8b0032f2.b86c4"]]},{"id":"e0f70afc.4efef8","type":"api-current-state","z":"e0d3a09b.7816e","name":"Light","server":"638b3c86.920fd4","outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":true,"entity_id":"","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":670,"y":200,"wires":[["fe296cbf.6e1d9"]]},{"id":"1356e2a3.51909d","type":"api-current-state","z":"e0d3a09b.7816e","name":"Light","server":"638b3c86.920fd4","outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":true,"entity_id":"","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":670,"y":260,"wires":[["f0e06fbe.ca82d"]]},{"id":"34dc278f.c68fd8","type":"api-current-state","z":"e0d3a09b.7816e","name":"Light","server":"638b3c86.920fd4","outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":true,"entity_id":"","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":670,"y":320,"wires":[["d194a549.a9eea8"]]},{"id":"e4b1d39f.a7363","type":"change","z":"e0d3a09b.7816e","name":"Change entity","rules":[{"t":"move","p":"payload","pt":"msg","to":"action","tot":"msg"},{"t":"delete","p":"payload","pt":"msg"},{"t":"set","p":"payload.entity_id","pt":"msg","to":"light_entity","tot":"env"},{"t":"set","p":"data.entity_id","pt":"msg","to":"light_entity","tot":"env"}],"action":"","property":"","from":"","to":"","reg":false,"x":220,"y":180,"wires":[["d8bed0f5.5739f"]]},{"id":"638b3c86.920fd4","type":"server","z":"","name":"Home Assistant","legacy":false,"hassio":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open"}]


  • Jlo88
  • Registratie: augustus 2014
  • Laatst online: 12:19
@lolgast dat is een nette oplossing! Ik ben nog niet zo handig met hoe je omgaat met de payloads enzo maar eigenlijk is het heel logisch hoe je het nu gemaakt hebt. Heb het net getest en het werkt super!

Acties:
  • +5Henk 'm!

  • z1rconium
  • Registratie: augustus 2014
  • Laatst online: 24-06 10:37
Er is weer een kleine update.

Op 1 of andere manier is dit topic niet razendpopulair wat me enigzins verbaast. Dit is echt de mooiste software waar ik ooit mee heb gewerkt (althans het zit ergens in de top) het zo uberflexibel. Niet alleen voor home automation, maar voor alles wat data uitpoept.

Hoe kan het dat mensen het fijner lijken te vinden om in een yaml file te gaan zitten rommelen dan gewoon wat mooie flows in elkaar draggen en droppen ? Alles wat met http/tcp praat kun je fantastisch mooi in NR doen en volledig geautomatiseerd. Liefst heb ik nergens knopjes en gebeurd alles automagisch.

Een gemiste kans voor veel mensen denk ik.

Einde brainfart

Acties:
  • +1Henk 'm!
druipsnor schreef op vrijdag 15 maart 2019 @ 20:21:
[...]

Heb je dit in NR gedaan? zoja, zou je je flow willen delen?
Bij deze
YAML:
1
[{"id":"50265648.612f58","type":"function","z":"afed89c9.ec0e38","name":"Message template","func":"msg.payload = { \n    data: {\n     'title':\n       'De meterstanden van deze maand',\n     'message':\n       \"Energiestand Piek: \" + msg.payload.piek + \" kWh \\nEnergiestand Dal: \" + msg.payload.dal + \" kWh \\nGasstand: \" + msg.payload.gas + \" m³\" }};\nmsg.payload.service = 'iphones'\nreturn msg;","outputs":1,"noerr":0,"x":1130,"y":110,"wires":[["d4224149.8d6348"]]},{"id":"72032069.d157","type":"change","z":"afed89c9.ec0e38","name":"copy payloads","rules":[{"t":"set","p":"payload.dal","pt":"msg","to":"payload.results.0.electricity_delivered_1","tot":"msg"},{"t":"set","p":"payload.piek","pt":"msg","to":"payload.results.0.electricity_delivered_2","tot":"msg"},{"t":"set","p":"payload.gas","pt":"msg","to":"payload.results.0.extra_device_delivered","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":910,"y":110,"wires":[["50265648.612f58"]]},{"id":"89bdf884.dc4fc8","type":"http request","z":"afed89c9.ec0e38","name":"DSMR API","method":"GET","ret":"obj","url":"http://192.168.4.50:8888/api/v2/datalogger/dsmrreading?ordering=-timestamp&limit=1","tls":"","x":700,"y":110,"wires":[["72032069.d157"]]},{"id":"ec5ace9e.0e985","type":"change","z":"afed89c9.ec0e38","name":"set headers","rules":[{"t":"set","p":"headers['X-AUTHKEY']","pt":"msg","to":"Hier-je-API-key","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":110,"wires":[["89bdf884.dc4fc8"]]},{"id":"14b316e8.e9e589","type":"function","z":"afed89c9.ec0e38","name":"first_of_month","func":"msg.payload = msg.payload + 7200000\nlet dayOfMonth = new Date(msg.payload).getDate();\n//let hourOfDay = new Date(msg.payload).getHours();\n//let minuteOfDay = new Date(msg.payload).getMinutes();\nif (dayOfMonth === 1) {\n    return [ msg ];\n}\nelse {\n    return [ null ];\n}","outputs":1,"noerr":0,"x":320,"y":110,"wires":[["ec5ace9e.0e985"]]},{"id":"1d4e82b.159f6fd","type":"inject","z":"afed89c9.ec0e38","name":"run @ 2:00","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"00 02 * * *","once":false,"onceDelay":0.1,"x":130,"y":110,"wires":[["14b316e8.e9e589"]]}]


Acties:
  • +1Henk 'm!

  • Tranzity
  • Registratie: januari 2001
  • Niet online
z1rconium schreef op vrijdag 15 maart 2019 @ 18:00:
Er is weer een kleine update.

Op 1 of andere manier is dit topic niet razendpopulair wat me enigzins verbaast. Dit is echt de mooiste software waar ik ooit mee heb gewerkt (althans het zit ergens in de top) het zo uberflexibel. Niet alleen voor home automation, maar voor alles wat data uitpoept.

Hoe kan het dat mensen het fijner lijken te vinden om in een yaml file te gaan zitten rommelen dan gewoon wat mooie flows in elkaar draggen en droppen ? Alles wat met http/tcp praat kun je fantastisch mooi in NR doen en volledig geautomatiseerd. Liefst heb ik nergens knopjes en gebeurd alles automagisch.

Een gemiste kans voor veel mensen denk ik.

Einde brainfart
Misschien is het zo gemakkelijk in gebruik dat er geen vragen over gesteld hoeft te worden?
Ik ben 100% tevreden, ook ik ben het er mee eens dat dit een mooi stuk software is! O+

  • MrBarBarian
  • Registratie: oktober 2003
  • Nu online
z1rconium schreef op zaterdag 30 maart 2019 @ 09:23:
[...]

Wat is het probleem precies ? Heb je een tcp node----debug en dan verschillende instellingen geprobeerd ?
Inmiddels opgelost. hier staat de oplossing.

Er staat een newline character in de eruit gefiltert moet worden.

iRacing Profiel


  • Sjef_
  • Registratie: september 2012
  • Laatst online: 23-06 05:31
jossie67 schreef op donderdag 18 april 2019 @ 10:59:
Hi,

Ik heb gisteren mijn NR geupgrade in HA naar versie 3.0.1, maar nu werkt mij I-frame niet meer en ik kan ook niet meer naar NR dmv
http://ipadres:1880

ik kan de oorzaak lijkt te liggen aan ingress , maar hoe kan krijg ik dit nu goed in i-frame en hoe kom ok de ui?
Dit kan nu middels een panel-custom.
zie ook https://www.home-assistant.io/components/panel_custom/

Uit de blogpost van ingress zal er in versie 0.92.0 een anders oplossing hiervoor komen.

code:
1
2
3
4
5
6
7
8
9
- name: hassio-main
  sidebar_title: Node-RED
  sidebar_icon: mdi:sitemap
  js_url: /api/hassio/app/entrypoint.js
  url_path: nodered
  embed_iframe: true
  require_admin: true
  config:
    ingress: a0a0a123_nodered

Pagina: 1 2


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 Nederland

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