Acties:
  • +13 Henk 'm!

  • DeadMetal
  • Registratie: Mei 2002
  • Laatst online: 25-05 14:52

Node-RED

Afbeeldingslocatie: 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.

Afbeeldingslocatie: https://tweakers.net/ext/f/WAGg3v7vRrGmloq6BfVktAS9/full.png

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

Afbeeldingslocatie: https://tweakers.net/ext/f/Ef9MMIzTdOGHeTbv5oOvZJN6/full.png
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 -> Copy to 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

[ Voor 31% gewijzigd door DeadMetal op 07-11-2020 08:58 ]


Acties:
  • +4 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 19:49
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:
Afbeeldingslocatie: https://tweakers.net/ext/f/PEqD3ZJHnbza95TmuodZk1hl/full.png

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.
Afbeeldingslocatie: https://tweakers.net/ext/f/XPefNsxwEjCvTuaqEwyu4Lau/full.png

Acties:
  • +1 Henk 'm!
Top, goed initiatief! Ik ben wel benieuwd naar andermans ideeën en oplossingen, want ik heb het idee dat ik af en toe ontzettend aan het kloten ben om een simpel iets te regelen. Neem mijn oplossing voor een trigger
Afbeeldingslocatie: https://images.lolgast.nl/uploads/medium/db520d5f6044ff2430dbeb839beb6d57.png
Klikbaar

Ik luister naar events van HomeAssistant en kijk in de switches op welke knop er is gedrukt van de Aqara drukschakelaars. Afhankelijk van de flow.x.status na een eerdere actie, bepaald de function welke weg er bewandelt moet worden. In de function staat dit
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
var sts = flow.get("gang.status");
msg.payload = "";

if ( sts === false ) {
msg.payload.on = true;
return [ msg, null ];

} else {
msg.payload.on = false;
return [ null, msg ]
}


Is dit een ontzettend goede oplossing die iedereen hier gaat overnemen of kan dit inderdaad slimmer? :9

Acties:
  • 0 Henk 'm!

  • WackyWindsurfer
  • Registratie: December 2001
  • Laatst online: 16-05 17:44

WackyWindsurfer

No wind... no fun!

Sinds kort ben ik bezig om mijn automations naar Node-RED om te turnen. Heb een Backup2Dropbox flow gemaakt, welke 1x per week een full snapshot en de rest van de dagen een partial snapshot maakt en daarna upload naar Dropbox.
Geen echte programmeer kennis in bezit, maar het visuele aspect van Node-RED maakt het voor mij makkelijker te doorgronden.

Afbeeldingslocatie: http://i63.tinypic.com/2wdbmv7.jpg

Mijn flow wanneer iemand dit wil gebruiken...
Je hebt verder de 'node-red-contrib-light-scheduler' nodig en de Hass.io addon van d0ugal.
De Configuration node 'my settings' moet nog van jouw locatiegegevens worden voorzien. De extra 'Home Assistent' Configuration node (met leeg API Pass veld) kan worden verwijderd en de blauwe Home Assistant nodes in de flow zelf gekoppeld aan jouw 'Home Assistant' Configuration node met ingevuld API Pass veld.

[EDIT]
Zie onder voor een aangepaste versie van de Flow; deze is verregaande vereenvoudigd, mede dank zij de tips en optimalisatie door @lolgast !

[ Voor 32% gewijzigd door WackyWindsurfer op 10-09-2018 16:32 ]


Acties:
  • +1 Henk 'm!
@WackyWindsurfer Waarom heb je volgens jou de light-scheduler nodig als dat ook met een inject node kan?

Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/68d527921bafb5820ee099e6a3e7f845.png

Heb je meteen die rbe niet nodig volgens mij

[ Voor 10% gewijzigd door lolgast op 10-09-2018 13:03 ]


Acties:
  • +1 Henk 'm!
@WackyWindsurfer Volgens mij kan hij ook zo. Ik heb niet naar je schedules gekeken dus zomaar wat gekozen.

Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/f7df59663f9f66362b16928c30621e0b.png
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":""}]

Acties:
  • 0 Henk 'm!

  • WackyWindsurfer
  • Registratie: December 2001
  • Laatst online: 16-05 17:44

WackyWindsurfer

No wind... no fun!

lolgast schreef op maandag 10 september 2018 @ 14:37:
@WackyWindsurfer Volgens mij kan hij ook zo. Ik heb niet naar je schedules gekeken dus zomaar wat gekozen.

[afbeelding]
Toevallig net aan het stoeien gegaan, de dev van de addon heeft net vannacht een nieuwe versie gepushed welke de backup folder actief monitored.
Nu is het oproepen/starten van de addon zelf ook niet meer nodig en kan het nu nog compacter.
Ik ga meteen jouw oplossing voor het doorgeven van topic/payload doorvoeren, very nice!

Bedankt voor het meedenken, daar was ik niet zo snel op gekomen. Copy/pasten van de flow en aanpassen van full naar partial was natuurlijk pure luiheid mijner zijde.
;)

Het ziet er nu zo uit, ga zo ff testen:
Afbeeldingslocatie: http://i65.tinypic.com/ng96qd.jpg

Wat een prachtige tool, er valt weer een hoop te leren als tweaker!



[EDIT]
@lolgast Jouw code in de functie node werkte OK voor de snapshot_partial. De snapshot_full veroorzaakte echter een error in de log:

code:
1
Invalid service data for hassio.snapshot_full: extra keys not allowed @ data['folders']. Got ['homeassistant', 'share']


Ik ben gaan knutselen en heb er het volgende van gemaakt, het werkt nu goed voor beide varianten:
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
if ( msg.topic === "full" ) {
    
{
    
    msg.payload.service = "snapshot_full";

}  
    msg.payload = {
        data:   {
            "name": (new Date().toISOString().replace(':', '_').replace(':', '_').replace(/\..+/, ''))+"_Snapshot",
            "folders":["homeassistant","share"]
        }
    }

} else if ( msg.topic === "partial" ) {
    
{
    
    msg.payload.service = "snapshot_partial";

}   
    msg.payload = {
        data:   {
            "name": (new Date().toISOString().replace(':', '_').replace(':', '_').replace(/\..+/, ''))+"_Snapshot"
        }
    }
}
 else {
return [ null ]
}
return [ msg ];


Voor mensen die het zelf willen gebruiken, hier is de aangepaste en werkende Flow:
code:
1
[{"id":"e706115e.70854","type":"tab","label":"Backup2Dropbox","disabled":false,"info":""},{"id":"16e523bd.54e39c","type":"debug","z":"e706115e.70854","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":610,"y":120,"wires":[]},{"id":"3a2d4780.7d3938","type":"api-call-service","z":"e706115e.70854","name":"Snapshot","server":"2e815b.547b2ea6","service_domain":"hassio","service":"{}","data":"{}","mergecontext":"","x":460,"y":120,"wires":[["16e523bd.54e39c"]]},{"id":"f94c5fc3.3eb2e","type":"function","z":"e706115e.70854","name":"format snapshot","func":"if ( msg.topic === \"full\" ) {\n    \n    msg.payload = {\n\t\tdata:   {\n\t\t\t\"name\": (new Date().toISOString().replace(':', '_').replace(':', '_').replace(/\\..+/, ''))+\"_Snapshot\"\n        }\n    }\n    \n    msg.payload.service = \"snapshot_full\";\n    \n} else if ( msg.topic === \"partial\" ) {\n    \n    msg.payload = {\n        data:   {\n            \"name\": (new Date().toISOString().replace(':', '_').replace(':', '_').replace(/\\..+/, ''))+\"_Snapshot\",\n            \"folders\":[\"homeassistant\",\"share\"]\n        }\n    }\n    \n    msg.payload.service = \"snapshot_partial\";\n    \n}\n else {\nreturn [ null ]\n}\nreturn [ msg ];","outputs":1,"noerr":0,"x":300,"y":120,"wires":[["3a2d4780.7d3938"]]},{"id":"fc480f7d.ff0f8","type":"inject","z":"e706115e.70854","name":"","topic":"full","payload":"","payloadType":"str","repeat":"","crontab":"45 00 * * 1","once":false,"onceDelay":0.1,"x":110,"y":100,"wires":[["f94c5fc3.3eb2e"]]},{"id":"63b14746.ba78d8","type":"inject","z":"e706115e.70854","name":"","topic":"partial","payload":"","payloadType":"str","repeat":"","crontab":"45 00 * * 2,3,4,5,6,0","once":false,"onceDelay":0.1,"x":120,"y":140,"wires":[["f94c5fc3.3eb2e"]]},{"id":"2e815b.547b2ea6","type":"server","z":"","name":"Home Assistant","url":"http://hassio/homeassistant","pass":""}]

[ Voor 60% gewijzigd door WackyWindsurfer op 10-09-2018 16:25 ]


Acties:
  • +1 Henk 'm!
Speciaal voor @Dylantje2 en ter lering en vermaak uiteraard :)

Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/b693034231b0618851b866629e7682b2.png

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"

Acties:
  • 0 Henk 'm!

  • Skit3000
  • Registratie: Mei 2005
  • Laatst online: 12:57
Ik gebruik Node-RED al een tijd om eigenlijk alles wat ik tegen kom en repetitief is te automatiseren. Voor alles wat ik maak, maak ik een nieuwe flow en op elke flow zet ik standaard minimaal één dashboard widget zodat ik via de UI bijvoorbeeld een status kan tonen of de flow handmatig kan starten. Daarnaast heb ik een "services" flow die bijvoorbeeld een MQQT-broker en SSH client in de lucht houdt, en een koppeling met Telegram om push messages te sturen. Zo krijg ik bijvoorbeeld een bericht wanneer de wasmachine klaar is, bepaalde alarms getriggerd worden maar ook een melding als een pagina die ik monitor is veranderd.

Afbeeldingslocatie: https://camo.githubusercontent.com/a9711baa7a193c03a65272e2263c06ab2fad5d28/687474703a2f2f6e6f64657265642e6f72672f696d616765732f64617368626f617264652e706e67

Ondertussen zit ik op 20 verschillende flows, wat het beheren soms iets lastiger maakt dan ik zou willen omdat je heen en weer blijft scrollen om de flow te vinden die je zoekt. Ik zet in de naam tegenwoordig dus ook nog maar of het "PROD" of "TEST" is en groepeer ze op die manier.

Ik vind Node-RED vooral ideaal omdat je snel een concept uit kunt werken naar iets dat (voor jezelf) werkt. Veel dingen kan je in elkaar zetten zonder een javascript functie te schrijven, maar wanneer je dat toch doet heb ik gemerkt dat ik de logica het liefst nog wel via nodes regel. Op die manier kan ik de functies echt noemen naar wat ze doen en hoe ik niet verschillende nodes open te breken als ik bijvoorbeeld de volgorde waar ik iets in afhandel wil veranderen; je kan dan immers gewoon de nodes visueel in een andere volgorde plaatsen, de lijntjes verbinden en klaar.

Een paar flows die ik heb draaien:
  • Verlichting (stuurt Philips Hue en Ikea Tradfri aan).
  • Ambilight functie die via API de huidige kleuren op mijn TV uitleest en deze dan weergeeft via Philips Hue. (Philips heeft hier ook een app voor, maar die moet je dan zelf aan zetten en nu kan ik het vanzelf in laten schakelen als ik mijn tv aan doe en het is donker).
  • Radio starten op Google Home door via Chromecast protocol op gezette tijden de URL van een stream te sturen, zodat ik muziek heb tijdens het ontbijt en niet kan vergeten dit uit te zetten wanneer ik vertrek.
  • Afstandsbediening voor televisie, waar bij de knop voor elke zender gelijk staat welk programma bezig is en welk programma hierna.
  • Ik lees vluchtinformatie van Schiphol uit om te kijken of er 's nachts vliegtuigen over mijn huis komen en ik het raam beter dicht kan houden, of dat alles lekker open kan om door te waaien zonder dat ik er wakker van hoef te worden.
  • Status van de wasmachine.
  • Benzineprijzen van de tankstations langs mijn woon-werk route, met een pushbericht zodra de ODB2 stekker uit heeft gelezen dat het weer tijd is om te tanken.
  • 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).
Je kunt via de nbrowser node een headless browser (gebruik makend van NightmareJS) starten, waarmee je simpel taken op websites kunt automatiseren en hier testen op los kunt laten. Ook kan je screenshots maken. Hier maak ik met mijn tank-flow gebruik van om de prijzen van één van de benzinestations (die ze als png aanbiedt) te plukken en om te zetten naar tekst met een OCR node (Tesseract).

[ Voor 3% gewijzigd door Skit3000 op 10-09-2018 20:59 ]


Acties:
  • 0 Henk 'm!
Ik gebruik het sun.sun element van HA met een negatieve elevation. Of een vast tijdstip, omdat ik in de winter niet thuisben bij -1.5 elevation en dus de verlichting later wil aanzetten :)
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/50aaed0c2978ce294261b73610e8e413.png

code:
1
[{"id":"69c0e070.76ba","type":"inject","z":"4037f341.275cac","name":"run @ 23:15","topic":"","payload":"{\"on\": true}","payloadType":"json","repeat":"","crontab":"15 23 * * *","once":false,"onceDelay":0.1,"x":180,"y":140,"wires":[["31adde30.7f1f0a"]]},{"id":"263b2096.93f5","type":"server-state-changed","z":"4037f341.275cac","name":"Hoogte zon","server":"39fd7a9b.252f86","entityidfilter":"sun.sun","entityidfiltertype":"substring","haltifstate":"","x":170,"y":240,"wires":[["1508c5fa.6ebd6a"]]},{"id":"abd99034.3df47","type":"inject","z":"4037f341.275cac","name":"run @ 17:30","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"30 17 * * *","once":false,"onceDelay":0.1,"x":170,"y":300,"wires":[["bf61a983.625248"]]},{"id":"bf61a983.625248","type":"api-current-state","z":"4037f341.275cac","name":"Hoogte zon","server":"39fd7a9b.252f86","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"sun.sun","x":370,"y":300,"wires":[["6cab9211.899c5c"]]},{"id":"6cab9211.899c5c","type":"switch","z":"4037f341.275cac","name":"< -3.5","property":"data.attributes.elevation","propertyType":"msg","rules":[{"t":"lt","v":"-3.5","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":530,"y":300,"wires":[["8c97bbda.b9ba8"]]},{"id":"aa6b1eea.4d828","type":"comment","z":"4037f341.275cac","name":"Tuinverlichting uit","info":"","x":120,"y":80,"wires":[]},{"id":"1beac536.c37bc3","type":"comment","z":"4037f341.275cac","name":"Tuinverlichting aan","info":"","x":130,"y":200,"wires":[]},{"id":"31adde30.7f1f0a","type":"change","z":"4037f341.275cac","name":"payload false","rules":[{"t":"set","p":"payload","pt":"msg","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":420,"y":140,"wires":[["3162dede.8ba7a2"]]},{"id":"8c97bbda.b9ba8","type":"change","z":"4037f341.275cac","name":"payload true","rules":[{"t":"set","p":"payload","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":870,"y":300,"wires":[["3162dede.8ba7a2"]]},{"id":"3162dede.8ba7a2","type":"hue-group","z":"4037f341.275cac","name":"Achtertuin","bridge":"e9503c7a.ea5fe8","groupid":"3","colornamer":true,"x":960,"y":180,"wires":[[]]},{"id":"8d1132d4.6bc1","type":"time-range-switch","z":"4037f341.275cac","name":"","lat":"","lon":"","startTime":"16:00","endTime":"22:00","startOffset":"","endOffset":"","x":710,"y":240,"wires":[["8c97bbda.b9ba8"],[]]},{"id":"1508c5fa.6ebd6a","type":"function","z":"4037f341.275cac","name":"check elevation","func":"if (msg.data.new_state.attributes.elevation <= -1.5) {\n    msg.rbe = \"1\"\n    return [ msg ];\n}\nelse {\n    msg.rbe = \"0\"\n    return [ msg ];\n}","outputs":1,"noerr":0,"x":380,"y":240,"wires":[["71a314a8.93f79c"]]},{"id":"71a314a8.93f79c","type":"rbe","z":"4037f341.275cac","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"rbe","x":550,"y":240,"wires":[["8d1132d4.6bc1"]]},{"id":"39fd7a9b.252f86","type":"server","z":"","name":"Home Assistant","url":"http://192.168.4.50:8123","pass":""},{"id":"e9503c7a.ea5fe8","type":"hue-bridge","z":"","name":"Philips hue","bridge":"192.168.0.187","key":"7RNhXZ591AymcpzQkH95Lc87cG6-PFlKKbotjz4x","interval":"2000"}]

Acties:
  • 0 Henk 'm!

Anoniem: 477788

DeadMetal schreef op dinsdag 11 september 2018 @ 08:29:
[...]


Ik heb nog nooit iets met subflows gedaan, maar eens in verdiepen :)
Je krijgt dan dit.. Hieronder een stukje van hoe ik mijn Hue bridge uit lees. Een combinatie van de /sensors en de /groups gecombineerd met mijn eigen sausje. Zoals je ziet wordt die flow al best lang.

Afbeeldingslocatie: https://tweakers.net/ext/f/U6LsXv7nQ0mT2IJrJxlefRdv/medium.png

Als je dit in een subflow zet (is eenvoudig: selecteer een aantal nodes en kies 'selection to subflow' in het menu) dan gebruik je hem als volgt:

Afbeeldingslocatie: https://tweakers.net/ext/f/RaDB9j2avOvuPTAZsukShKmM/medium.png

Zo kun je je flows redelijk schoon houden zonder al die plumbing code, al vergt het wel wat aandacht dat je je subflows redelijk generiek maakt. De subflows worden gewoon weer nodes in je palette die je kunt hergebruiken in één of meerdere andere flows.

Acties:
  • +4 Henk 'm!

  • Skit3000
  • Registratie: Mei 2005
  • Laatst online: 12:57
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.

Afbeeldingslocatie: https://i.imgur.com/oevIS4X.png

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"]]}]

  • jossie67
  • Registratie: Oktober 2006
  • Laatst online: 27-05 15:46
DeadMetal schreef op donderdag 13 september 2018 @ 09:58:
[...]

- 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

[...]


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).
Kun je eens stukje NR code delen van je RFXcom, nu gaat deze nog naar HA
Zelf heb ik ook nog een RFlink, deze hangt nu aan de NR pi en gaat dmv usb2ser naar HA.

Zelf nog een flow gemaakt voor al er water uit mijn vaatwasser komt.

flow-water-alarm

deze ik nog gaan uitbreiden met eerste de huidige status uitlezen, zodat ik deze weer kan zetten na signalen en uiteraard nog een berichtje naar Telegram

Acties:
  • 0 Henk 'm!
@DaMoUsYs @DeadMetal Ik zou qua gebruik dit prettiger vinden denk ik. Als er dan al verlichting aan is hoef je geen 3 keer te drukken om het uit te zetten maar gaat die gewoon meteen uit. Is niet handig als je de hanglamp aan wilt kunnen zetten terwijl de keukenverlichting al aan is, maar of dat nu in de praktijk voorkomt weet ik niet natuurlijk ;)

Persoonlijk zou ik gewoon de 2channel schakelaar halen, ben je van deze constructie af

Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/b77a4feb67a5b5d28bd24a89346602f7.png
code:
1
[{"id":"29e57375.a9d62c","type":"function","z":"62b09a31.1127c4","name":"Teller ophogen","func":"count = flow.get('count')||0;\ncount++;\nflow.set('count', count);\nreturn {payload : count};","outputs":1,"noerr":0,"x":420,"y":260,"wires":[["67f9ded.879e42"]]},{"id":"67f9ded.879e42","type":"stoptimer","z":"62b09a31.1127c4","duration":"1","units":"Second","payloadtype":"num","payloadval":"","name":"","x":610,"y":260,"wires":[["c7a8f959.392818","2df65763.4c5cf8"],[]]},{"id":"2df65763.4c5cf8","type":"switch","z":"62b09a31.1127c4","name":"Tel aantal kliks","property":"count","propertyType":"flow","rules":[{"t":"eq","v":"1","vt":"str"},{"t":"eq","v":"2","vt":"str"}],"checkall":"false","repair":false,"outputs":2,"x":860,"y":254,"wires":[["8aa94246.d3b87","c7b89010.9f44c"],["b489bc3.e301c4","12683196.e419ae"]]},{"id":"b489bc3.e301c4","type":"api-call-service","z":"62b09a31.1127c4","name":"KeukenHanglamp aan","server":"","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.keuken_hanglamp\" }","mergecontext":"","x":1250,"y":320,"wires":[[]]},{"id":"12683196.e419ae","type":"api-call-service","z":"62b09a31.1127c4","name":"licht_keuken aan","server":"","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.licht_keuken\" }","mergecontext":"","x":1240,"y":354,"wires":[[]]},{"id":"aa3414b9.ec8388","type":"server-state-changed","z":"62b09a31.1127c4","name":"Switch Hanglamp","server":"","entityidfilter":"switch.keuken_hanglamp","entityidfiltertype":"substring","haltifstate":"","x":120,"y":280,"wires":[["fdba43c0.c7a98"]]},{"id":"c7a8f959.392818","type":"delay","z":"62b09a31.1127c4","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":740,"y":300,"wires":[["bad0fc59.5ecb2"]]},{"id":"8aa94246.d3b87","type":"api-call-service","z":"62b09a31.1127c4","name":"licht_keuken aan","server":"","service_domain":"switch","service":"turn_on","data":"{   \"entity_id\": \"switch.licht_keuken\" }","mergecontext":"","x":1240,"y":254,"wires":[[]]},{"id":"c7b89010.9f44c","type":"api-call-service","z":"62b09a31.1127c4","name":"KeukenHanglamp uit","server":"","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.keuken_hanglamp\" }","mergecontext":"","x":1250,"y":220,"wires":[[]]},{"id":"cebb1f2a.8ece5","type":"api-call-service","z":"62b09a31.1127c4","name":"KeukenHanglamp uit","server":"","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.keuken_hanglamp\" }","mergecontext":"","x":1250,"y":410,"wires":[[]]},{"id":"9c8a4527.b48db8","type":"api-call-service","z":"62b09a31.1127c4","name":"licht_keuken uit","server":"","service_domain":"switch","service":"turn_off","data":"{   \"entity_id\": \"switch.licht_keuken\" }","mergecontext":"","x":1230,"y":443,"wires":[[]]},{"id":"bad0fc59.5ecb2","type":"change","z":"62b09a31.1127c4","name":"set count + status","rules":[{"t":"set","p":"count","pt":"flow","to":"0","tot":"num"},{"t":"set","p":"hanglamp","pt":"flow","to":"on","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":920,"y":300,"wires":[[]]},{"id":"fdba43c0.c7a98","type":"switch","z":"62b09a31.1127c4","name":"on/off","property":"hanglamp","propertyType":"flow","rules":[{"t":"eq","v":"off","vt":"str"},{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":270,"y":280,"wires":[["29e57375.a9d62c"],["412b1015.5717f"]]},{"id":"412b1015.5717f","type":"change","z":"62b09a31.1127c4","name":"set status","rules":[{"t":"set","p":"hanglamp","pt":"flow","to":"off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":300,"wires":[["cebb1f2a.8ece5","9c8a4527.b48db8"]]}]

Acties:
  • 0 Henk 'm!
Aangewakkerd door de vermelding hier dat je Telegram kunt gebruiken met reacties, mijn laatste hobby projectje. De /start heeft er niets mee te maken, die moest ik nou eenmaal aanklikken om de bot te kunnen gebruiken :+
Afbeeldingslocatie: https://images.lolgast.nl/uploads/medium/4be3c6a7e00c565febb1dfd8f87d0a7a.png

Ik gebruik thuis Volumio om muziek af te spelen. Node-RED detecteert elke wijzig van nummer, maar ook het stoppen van muziek. Nu krijg ik dus de keuze of ik de CD nogmaals wil afspelen of wil overschakelen op internet radio. De 'beschikbare zenders' zijn veel beluisterde zenders waar een playlist van is gemaakt door mij. Die lijst filter ik op 'Radio', format hem vanuit een array naar een string, naar Telegram command, naar url en weer terug naar leesbare zender.

Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/d6da34cc2a94bfcc0eeb97c36939f3eb.png
code:
1
[{"id":"a5dd09b2.1c37b8","type":"trigger","z":"ba68260d.f9c468","op1":"","op2":"","op1type":"nul","op2type":"payl","duration":"2","extend":true,"units":"s","reset":"","bytopic":"all","name":"","x":260,"y":560,"wires":[["264ee73f.86eb58"]]},{"id":"25dafd3d.539cd2","type":"mpd in","z":"ba68260d.f9c468","name":"","topic":"","server":"36b61790.29a168","x":110,"y":560,"wires":[["a5dd09b2.1c37b8"]]},{"id":"264ee73f.86eb58","type":"switch","z":"ba68260d.f9c468","name":"","property":"payload.currentsong","propertyType":"msg","rules":[{"t":"empty"}],"checkall":"true","repair":false,"outputs":1,"x":430,"y":560,"wires":[["7ca67cdd.5ff3f4"]]},{"id":"7ca67cdd.5ff3f4","type":"telegrambot-switch","z":"ba68260d.f9c468","name":"","bot":"cd66fd9e.26db5","chatId":"DELETED","question":"CD afgelopen. Wat wil je doen?","answers":["Herstart CD","Internet Radio"],"outputs":2,"autoAnswerCallback":false,"timeoutValue":"","timeoutUnits":"","x":220,"y":620,"wires":[["43bcdf70.7e266"],["2f9fcf2d.f8a8","8af59e7b.ad2ae"]]},{"id":"43bcdf70.7e266","type":"change","z":"ba68260d.f9c468","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"?cmd=play","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":430,"y":620,"wires":[["f7844be5.90d5f8"]]},{"id":"2f9fcf2d.f8a8","type":"change","z":"ba68260d.f9c468","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"playlists","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":760,"y":680,"wires":[["2acfcac3.4bab36"]]},{"id":"8af59e7b.ad2ae","type":"telegrambot-notify","z":"ba68260d.f9c468","name":"","bot":"cd66fd9e.26db5","chatId":"DELETED","message":"Beschikbare radio zenders","parseMode":"","x":660,"y":760,"wires":[]},{"id":"f7844be5.90d5f8","type":"http request","z":"ba68260d.f9c468","name":"Set Volumio playlist","method":"GET","ret":"obj","url":"http://192.168.4.81/api/v1/commands/{{{topic}}}","tls":"","x":690,"y":620,"wires":[["391c4a6a.1bc2d6"]]},{"id":"2acfcac3.4bab36","type":"split","z":"ba68260d.f9c468","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":910,"y":680,"wires":[["125d0862.6d7098"]]},{"id":"8dde5ae.3d837a8","type":"delay","z":"ba68260d.f9c468","name":"","pauseType":"delay","timeout":"100","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":590,"y":720,"wires":[["2f9fcf2d.f8a8"]]},{"id":"729e8b0c.d23464","type":"telegrambot-switch","z":"ba68260d.f9c468","name":"","bot":"cd66fd9e.26db5","chatId":"DELETED","question":"Welke playlists wil je zien?","answers":["Stefan","Meggie","Internet Radio"],"outputs":3,"autoAnswerCallback":false,"timeoutValue":"","timeoutUnits":"","x":420,"y":700,"wires":[[],[],["8af59e7b.ad2ae","8dde5ae.3d837a8"]]},{"id":"391c4a6a.1bc2d6","type":"function","z":"ba68260d.f9c468","name":"regex","func":"var radio = msg.responseUrl;\nvar regex = /(?<=name=)[^.]*/g;\nmsg.payload = radio.replace(/%20/g,' ').match(regex).toString();\nreturn msg;","outputs":1,"noerr":0,"x":880,"y":620,"wires":[["8a25e475.3b75b8"]]},{"id":"38f22177.3d2e4e","type":"change","z":"ba68260d.f9c468","name":"regex stations","rules":[{"t":"set","p":"telegram.text","pt":"msg","to":"$.telegram.text.$replace(/((?<!/)[A-Z]+(?!/))|(\\d+)/,\"%20$0\")","tot":"jsonata"},{"t":"set","p":"telegram.text","pt":"msg","to":"$.telegram.text.$replace(/(^/)/,\"\")","tot":"jsonata"},{"t":"set","p":"telegram.text","pt":"msg","to":"$join(['?cmd=playplaylist&name=',msg.telegram.text])","tot":"jsonata"},{"t":"move","p":"telegram.text","pt":"msg","to":"topic","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":420,"y":820,"wires":[["f7844be5.90d5f8"]]},{"id":"125d0862.6d7098","type":"change","z":"ba68260d.f9c468","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"$.payload.$replace(/(\\W)/,\"\")","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"\"/\" & $.payload","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1080,"y":680,"wires":[["8936b52f.166bb8"]]},{"id":"7472d9b0.cea488","type":"telegrambot-command","z":"ba68260d.f9c468","bot":"cd66fd9e.26db5","command":"/playlists","commandType":"str","commandCase":false,"x":190,"y":700,"wires":[["729e8b0c.d23464"]]},{"id":"8a25e475.3b75b8","type":"function","z":"ba68260d.f9c468","name":"payload","func":"msg.payload = \"Speelt nu \"+\"'\"+msg.payload+\"'\";\nreturn msg","outputs":1,"noerr":0,"x":1030,"y":620,"wires":[["f54cf971.3e5b28"]]},{"id":"b5c0c723.e5f678","type":"telegrambot-command","z":"ba68260d.f9c468","bot":"cd66fd9e.26db5","command":"/Radio538Top40","commandType":"str","commandCase":false,"x":190,"y":880,"wires":[["38f22177.3d2e4e"]]},{"id":"819ec5b9.1e5ea8","type":"telegrambot-command","z":"ba68260d.f9c468","bot":"cd66fd9e.26db5","command":"/Radio538NONSTOP","commandType":"str","commandCase":false,"x":190,"y":820,"wires":[["38f22177.3d2e4e"]]},{"id":"9c5ec70d.5614b8","type":"telegrambot-command","z":"ba68260d.f9c468","bot":"cd66fd9e.26db5","command":"/RadioVeronicaTop1000","commandType":"str","commandCase":false,"x":190,"y":760,"wires":[["38f22177.3d2e4e"]]},{"id":"8936b52f.166bb8","type":"join","z":"ba68260d.f9c468","name":"join \\n","mode":"custom","build":"string","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"1","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":1250,"y":680,"wires":[["f54cf971.3e5b28"]]},{"id":"f54cf971.3e5b28","type":"telegrambot-notify","z":"ba68260d.f9c468","name":"","bot":"cd66fd9e.26db5","chatId":"DELETED","message":"","parseMode":"","x":1220,"y":620,"wires":[]},{"id":"36b61790.29a168","type":"mpd-server","z":"","host":"192.168.4.81","port":"6600"},{"id":"cd66fd9e.26db5","type":"telegrambot-config","z":"","botname":"TelegramBot","usernames":"","chatIds":"","pollInterval":"300"}]
Ik ben alleen niet echt tevreden over Telegram. Het grootste nadeel vind ik dat je je telefoon moet unlocken om antwoord te kunnen geven. HomeAssistant heeft ook zoiets ingebakken, maar daar heb ik nog nooit naar gekeken dus dat ga ik binnenkort maar eens doen.
https://www.home-assistan...os/notifications/actions/

Acties:
  • 0 Henk 'm!

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

Afbeeldingslocatie: https://tweakers.net/ext/f/ad21w3HF02z3Yo1CcIC6VwZ8/full.png

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

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

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

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

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

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

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

Acties:
  • 0 Henk 'm!
@jossie67
Rechts bovenin via het hamburgermenu (ja dat heet echt zo) naar Configuration nodes
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/346a7ed78fc82166294d2d74df72ff38.png

Vervolgens gooi je de zojuist geimporteerde Home Assistant nodes weg (degene met een 0 erachter waarschijnlijk)
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/c1ce5e053cfc243dc11bc4ef4e4f8ccc.png

Acties:
  • 0 Henk 'm!

  • jossie67
  • Registratie: Oktober 2006
  • Laatst online: 27-05 15:46
lolgast schreef op vrijdag 14 september 2018 @ 14:06:
@jossie67
Rechts bovenin via het hamburgermenu (ja dat heet echt zo) naar Configuration nodes
[Afbeelding]

Vervolgens gooi je de zojuist geimporteerde Home Assistant nodes weg (degene met een 0 erachter waarschijnlijk)
[Afbeelding]
Thanks, had ik ook al gekeken.

node21

Staat toch geen Home Assistent meer, ook unused is helemaal leeg.
De meldingen bleven maar komen, waarschijnlijk toch ergens een queu die vol zat na de reboot nu geen error's meer. Toch maar eens een test NR gaan opzetten

  • DeadMetal
  • Registratie: Mei 2002
  • Laatst online: 25-05 14:52
De status ontdekken is het probleem niet, bijvoorbeeld zo. Om welke deur het gaat, is ook uit te lezen via het msg.topic.

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

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

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

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

Acties:
  • +1 Henk 'm!

  • DeadMetal
  • Registratie: Mei 2002
  • Laatst online: 25-05 14:52
Werkt fantastisch _/-\o_

Afbeeldingslocatie: 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.

[ Voor 33% gewijzigd door DeadMetal op 16-09-2018 08:38 ]


  • ny-hardcore
  • Registratie: Maart 2002
  • Laatst online: 26-05 21:12
na wat geklooi met mijn nieuwe NUC, traefik en docker installatie eindelijke node-red uitgeprobeerd.
heb een conbee zigbee stick en een ikea remote die een push, hold en release kent.
met de looptimer (op 0.2 sec) doe ik de brightness + 10 (of -10) net zolang totdat ik de knop weer loslaat.
gaat redelijk vloeiend...

Edit:
Nu ik het nog een keer bekijk , denk dat de Looptimer maar 1x hoeft en de Stop node ook. Die kan ik hergebruiken. En denk dat een stop voor elke Looptimer ook niet gek is. Morgen weer verder pielen...

Afbeeldingslocatie: https://tweakers.net/ext/f/XfRu86LRrz6uKYTKnCmQYdmz/full.png

code:
1
[{"id":"1edc06f.eced8f9","type":"server-events","z":"2764c58a.6ca30a","name":"home-assistant","server":"ee58eb6f.1f78e8","x":100,"y":120,"wires":[["996fd8df.d92228"]]},{"id":"996fd8df.d92228","type":"json","z":"2764c58a.6ca30a","name":"","property":"payload","action":"","pretty":false,"x":270,"y":120,"wires":[["c7dbbc9c.e5e5a"]]},{"id":"c7dbbc9c.e5e5a","type":"switch","z":"2764c58a.6ca30a","name":"which button?","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"{\"event_type\":\"deconz_event\",\"event\":{\"id\":\"tradfri_remote_control\",\"event\":1002}}","vt":"str"},{"t":"eq","v":"{\"event_type\":\"deconz_event\",\"event\":{\"id\":\"tradfri_remote_control\",\"event\":2001}}","vt":"str"},{"t":"eq","v":"{\"event_type\":\"deconz_event\",\"event\":{\"id\":\"tradfri_remote_control\",\"event\":2003}}","vt":"str"},{"t":"eq","v":"{\"event_type\":\"deconz_event\",\"event\":{\"id\":\"tradfri_remote_control\",\"event\":3001}}","vt":"str"},{"t":"eq","v":"{\"event_type\":\"deconz_event\",\"event\":{\"id\":\"tradfri_remote_control\",\"event\":3003}}","vt":"str"}],"checkall":"true","repair":false,"outputs":5,"x":440,"y":120,"wires":[["1e1004fe.b76d8b"],["bf452de0.43563"],["6131ef8e.45a17"],["c331c5a1.798a68"],["3ac36168.83ec0e"]]},{"id":"1e1004fe.b76d8b","type":"api-call-service","z":"2764c58a.6ca30a","name":"toggle light.light_3","server":"ee58eb6f.1f78e8","service_domain":"light","service":"toggle","data":"{\"entity_id\":\"light.light_3\"}","mergecontext":"","x":1050,"y":100,"wires":[[]]},{"id":"bf452de0.43563","type":"looptimer","z":"2764c58a.6ca30a","duration":"0.2","units":"Second","maxloops":"1000","maxtimeout":"20","maxtimeoutunits":"Second","name":"Looptimer","x":840,"y":140,"wires":[["4ec5b37a.2fff4c"],[]]},{"id":"4ec5b37a.2fff4c","type":"api-current-state","z":"2764c58a.6ca30a","name":"Get current state light.light_3","server":"ee58eb6f.1f78e8","halt_if":"off","override_topic":false,"override_payload":true,"entity_id":"light.light_3","x":1080,"y":160,"wires":[["547d2043.6400c"]]},{"id":"547d2043.6400c","type":"function","z":"2764c58a.6ca30a","name":"Brighten","func":"newmsg = {};\nbrightness = 10;\n\nif (msg.payload == \"off\"){\n    brightness = 10;\n    msg.payload = \"on\";\n}\nelse{\n    brightness = msg.data.attributes.brightness + 10;\n    if (brightness > 255){\n        brightness = 255;\n    }\n}\n\nmsg.data = {\"brightness\":brightness};\n\nnewmsg.payload = { data: {\"brightness\":brightness} };\n\nreturn newmsg;","outputs":1,"noerr":0,"x":1300,"y":160,"wires":[["7792a3a4.67ab1c","ae38810.482968"]]},{"id":"7792a3a4.67ab1c","type":"debug","z":"2764c58a.6ca30a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1470,"y":200,"wires":[]},{"id":"ae38810.482968","type":"api-call-service","z":"2764c58a.6ca30a","name":"Turn light.light_3 on","server":"ee58eb6f.1f78e8","service_domain":"light","service":"turn_on","data":"{   \"entity_id\": \"light.light_3\" }","mergecontext":"","x":1490,"y":160,"wires":[[]]},{"id":"6131ef8e.45a17","type":"function","z":"2764c58a.6ca30a","name":"Stop","func":"var newMsg = { payload:\"STOP\" };\nreturn newMsg;","outputs":1,"noerr":0,"x":670,"y":160,"wires":[["bf452de0.43563"]]},{"id":"aab5f7.858e2a08","type":"api-current-state","z":"2764c58a.6ca30a","name":"Get current state light.light_3","server":"ee58eb6f.1f78e8","halt_if":"off","override_topic":false,"override_payload":true,"entity_id":"light.light_3","x":1080,"y":220,"wires":[["a75c5554.918e68"]]},{"id":"a75c5554.918e68","type":"function","z":"2764c58a.6ca30a","name":"Dim","func":"newmsg = {};\nbrightness = 10;\n\nif (msg.payload == \"off\"){\n    brightness = 10;\n    msg.payload = \"on\";\n}\nelse{\n    brightness = msg.data.attributes.brightness - 10;\n    if (brightness > 255){\n        brightness = 255;\n    }\n}\n\nmsg.data = {\"brightness\":brightness};\n\nnewmsg.payload = { data: {\"brightness\":brightness} };\n\nreturn newmsg;","outputs":1,"noerr":0,"x":1290,"y":240,"wires":[["32c67f1b.8fb39","abb642c2.95ee"]]},{"id":"32c67f1b.8fb39","type":"debug","z":"2764c58a.6ca30a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1470,"y":300,"wires":[]},{"id":"abb642c2.95ee","type":"api-call-service","z":"2764c58a.6ca30a","name":"Turn light.light_3 on","server":"ee58eb6f.1f78e8","service_domain":"light","service":"turn_on","data":"{   \"entity_id\": \"light.light_3\" }","mergecontext":"","x":1490,"y":260,"wires":[[]]},{"id":"c331c5a1.798a68","type":"looptimer","z":"2764c58a.6ca30a","duration":"0.2","units":"Second","maxloops":"1000","maxtimeout":"20","maxtimeoutunits":"Second","name":"Looptimer","x":840,"y":200,"wires":[["aab5f7.858e2a08"],[]]},{"id":"3ac36168.83ec0e","type":"function","z":"2764c58a.6ca30a","name":"Stop","func":"var newMsg = { payload:\"STOP\" };\nreturn newMsg;","outputs":1,"noerr":0,"x":670,"y":220,"wires":[["c331c5a1.798a68"]]},{"id":"1d2306fe.55afb9","type":"comment","z":"2764c58a.6ca30a","name":"Ikea dimmer flow","info":"","x":100,"y":60,"wires":[]},{"id":"ee58eb6f.1f78e8","type":"server","z":"","name":"Home Assistant","url":"https://home-assistant.xxxx.nl","pass":"secret"}]

cd /pub && more beer


  • jossie67
  • Registratie: Oktober 2006
  • Laatst online: 27-05 15:46
Ik kan nu mijn stadsverwarming uitlezen.

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?

Acties:
  • +1 Henk 'm!
@RobertMe Ik heb het zo opgelost
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/db520d5f6044ff2430dbeb839beb6d57.png

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":[[],[]]}]

[ Voor 19% gewijzigd door lolgast op 21-09-2018 11:43 ]


Acties:
  • +4 Henk 'm!
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:
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/f5df2c56264cd40ecb640f836384b231.png
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":""}]

Acties:
  • +1 Henk 'm!
@RobertMe
Dat zit in de standaard 'trigger' node
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/c99a8f03284f0d18c6c172d30ea167fa.png
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 :+

[ Voor 16% gewijzigd door lolgast op 27-09-2018 10:46 ]


Acties:
  • 0 Henk 'm!
Volgens mij heb ik ergens een afslag te veel gepakt, maar je moet wat terwijl je onder een dekentje op de bank ligt :+
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/7fa16ea08422156dceb0e31a78c9bbd8.png

De timestamp haalt elke dag de lijst met playlists in Volumio op en maakt onderscheid in playlists die met of zonder 'Radio' beginnen. Die lijst zet ik ook in een MQTT topic, om voor mij onduidelijke redenen :D

Stuur ik /playlists dan krijg ik een keuze, wil ik radiozenders zien of CD's. Die vervolgens direct weer aan-klikbaar/drukbaar zijn door de '/' ervoor te laten zetten :)
Afbeeldingslocatie: https://images.lolgast.nl/uploads/medium/fcdee5c3d3817eb24a30edb584085bb5.png
Via de 'MPD In'-node check ik de output. Is die null, dan is de CD afgelopen en krijg ik de keuze om de CD te herstarten of om hetzelfde playlists keuze-menu te krijgen als wanneer ik zelf /playlists stuur.
Merk ik dat er al 10 minuten lang geen wijziging is het afgespeelde nummer, dan krijg ik ook een seintje want dan zou het kunnen zijn dat de internet radio hangt.

Nadeel van deze lijst, is dat ik handmatig de /Radio.. en /MichaelJacksonBad-/LadyGaga... moet aanmaken in een Telegram Command node. Maar als dat het ergste is :+ Nu nog iets verzinnen om het een beetje handig te laten samenwerken met de RFID kaarten die ik wil gaan gebruiken. Dubbel handmatig aanmaken heb ik een hekel aan O-)

Edit: Volumio speelt bij ons in principe altijd af. De versterker gaat uit, maar de muziek loopt door

[ Voor 6% gewijzigd door lolgast op 25-09-2018 22:01 ]


Acties:
  • 0 Henk 'm!
@DeadMetal (maar iemand anders mag ook reageren :+ ) Jij hebt een tijd geleden aangegeven dat je het sun component van HA hebt vervangen voor de schedex-node. Daar ben ik gisteren ook mee aan de gang gegaan, maar ik mis iets en vraag me af of jij dat ook hebt moeten oplossen.
Mijn flow ziet er als volgt uit
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/031ea99f7adbc651fed2aa72b9b43996.png
JSON:
1
[{"id":"e4329e04.48c44","type":"debug","z":"4037f341.275cac","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1030,"y":120,"wires":[]},{"id":"71242840.83e188","type":"switch","z":"4037f341.275cac","name":"false?","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"false","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":550,"y":80,"wires":[["3162dede.8ba7a2","e4329e04.48c44"]]},{"id":"8d1132d4.6bc1","type":"time-range-switch","z":"4037f341.275cac","name":"","lat":"51.76702","lon":"5.52032","startTime":"17:00","endTime":"22:00","startOffset":"","endOffset":"","x":570,"y":120,"wires":[["3162dede.8ba7a2","e4329e04.48c44"],[]]},{"id":"8c97bbda.b9ba8","type":"change","z":"4037f341.275cac","name":"payload true","rules":[{"t":"set","p":"payload","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":870,"y":180,"wires":[["3162dede.8ba7a2","e4329e04.48c44"]]},{"id":"44d1efb0.cf5ce","type":"schedex","z":"4037f341.275cac","name":"","suspended":false,"lat":"51.7668","lon":"5.5205","ontime":"sunset","ontopic":"","onpayload":"true","onoffset":"","onrandomoffset":0,"offtime":"23:15","offtopic":"","offpayload":"false","offoffset":0,"offrandomoffset":0,"mon":true,"tue":true,"wed":true,"thu":true,"fri":true,"sat":true,"sun":true,"x":160,"y":120,"wires":[["71242840.83e188","8d1132d4.6bc1","38934bd.664beb4"]]},{"id":"38934bd.664beb4","type":"traffic","z":"4037f341.275cac","name":"","property_allow":"payload","filter_allow":"true","ignore_case_allow":true,"negate_allow":false,"send_allow":false,"property_stop":"payload","filter_stop":"false","ignore_case_stop":true,"negate_stop":false,"send_stop":false,"default_start":false,"differ":false,"x":570,"y":180,"wires":[["8c97bbda.b9ba8"]]},{"id":"abd99034.3df47","type":"inject","z":"4037f341.275cac","name":"run @ 17:30","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"30 17 * * *","once":false,"onceDelay":0.1,"x":170,"y":180,"wires":[["38934bd.664beb4"]]}]

Wat ik wil (en had via HA): Als de zon onder gaat mag de verlichting aan, mits het later is dan 5 uur. In de winter is het namelijk veel eerder en dan ben ik toch niet thuis. Als het inderdaad winter is de zonsondergang dus al geweest, dus dan gooi ik er handmatig nog een run om 17:30 tegenaan. Máár, die moet natuurlijk niet werken als de zon nog niet onder is, dus daar is die Traffic Light voor.

Denk ik moeilijk, denk jij verhip dit is handig, of heb jij dit inderdaad anders opgelost?

Acties:
  • 0 Henk 'm!

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

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

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

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

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

[ Voor 6% gewijzigd door DeadMetal op 03-10-2018 07:55 ]


Acties:
  • +1 Henk 'm!

  • DeadMetal
  • Registratie: Mei 2002
  • Laatst online: 25-05 14:52
Ik moet ook niet proberen te denken als ik nog geen koffie op heb ;)
En zoiets dan?
code:
1
[{"id":"3c1bf2f2.aba5de","type":"debug","z":"15aee0af.45f04f","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":800,"y":710,"wires":[]},{"id":"46adba06.647614","type":"time-range-switch","z":"15aee0af.45f04f","name":"","lat":"51.76702","lon":"5.52032","startTime":"17:00","endTime":"23:59","startOffset":"","endOffset":"","x":580,"y":717,"wires":[["3c1bf2f2.aba5de"],[]]},{"id":"7d6d15a6.24cd2c","type":"schedex","z":"15aee0af.45f04f","name":"","suspended":false,"lat":"51.7668","lon":"5.5205","ontime":"sunset","ontopic":"","onpayload":"true","onoffset":"","onrandomoffset":0,"offtime":"23:15","offtopic":"","offpayload":"false","offoffset":0,"offrandomoffset":0,"mon":true,"tue":true,"wed":true,"thu":true,"fri":true,"sat":true,"sun":true,"x":350,"y":718,"wires":[["46adba06.647614"]]},{"id":"ef9698cb.659e28","type":"inject","z":"15aee0af.45f04f","name":"run @ 17:30","topic":"","payload":"true","payloadType":"str","repeat":"","crontab":"30 17 * * *","once":false,"onceDelay":0.1,"x":160,"y":770,"wires":[["1c0242c1.663e95"]]},{"id":"1c0242c1.663e95","type":"time-range-switch","z":"15aee0af.45f04f","name":"","lat":"51.76702","lon":"5.52032","startTime":"sunset","endTime":"22:00","startOffset":"","endOffset":"","x":350,"y":770,"wires":[["46adba06.647614"],[]]}]


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

Afbeeldingslocatie: https://tweakers.net/ext/f/cn8ouhUZxKwGjLBRqox7SJVO/full.png

/edit: of zo:
Afbeeldingslocatie: https://tweakers.net/ext/f/TeosxP9G1ncp2qMYnFWReNNw/full.png

Acties:
  • 0 Henk 'm!

  • GAEvakYD
  • Registratie: Juni 2001
  • Laatst online: 13:27
DeadMetal schreef op woensdag 3 oktober 2018 @ 08:56:
Ik zou graag willen dat ik die koffie niet nodig had ;)

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

@GAEvakYD ik herstart NR altijd nadat ik HA herstart heb, puur uit voorzorg. Ik had jouw probleem ook, echter enkel bij de 'events:all' node, niet bij de 'events:state' node. Die events:all heb ik inmiddels niet meer nodig (NR stuurt meer en meer hardware zelf aan, ipv via HA ontdekken dat er bijv. een knop is ingedrukt), en heb dus ook geen last meer van dit probleem.
Ik moet nog eens uitzoeken welk onderdeel geen connectie heeft na een herstart. Het kan de Xiaomi beweging sensor zijn die geen trigger geeft. Maar het kan ook de Fibaro Z-Wave dimmer zijn die ik als output aanstuur. Conclusie is in ieder geval dat de lampen niet meer automatisch aangaan bij beweging na een herstart van HA.

Mijn flows zien er als volgt uit:
Afbeeldingslocatie: https://ordelman.org/NRdemo.png

Lekker duurzaam. Skoda Enyaq EV - First edtion, Alpha Innotec Brine warmtepomp (MSW2-6S), Totaal 12135 Wp aan Zonnepanelen geïnstalleerd.


Acties:
  • 0 Henk 'm!

  • Cyw00d
  • Registratie: Januari 2006
  • Laatst online: 15-05 12:30
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 }


node-red

[ Tesla MIG MYP ]


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 19:49
DeadMetal schreef op dinsdag 11 september 2018 @ 07:59:
[...]
@ThinkPad de schedex code

[knip, code]

(longtitude en latitude nog even aanpassen aan je eigen huisadres, op Google maps kan je dat in de url zien bijv.). De off-tijd is bij mij 1 minuut later, daar doe ik verder niks mee. Maar je zou die ook kunnen instellen op de tijd dat je lampen juist weer automatisch uit moeten en in de switch node een 2e optie kunnen toevoegen.
Even door al het HASS > Node-RED geweld heen breken.... Of ben ik de enige die Node-RED zonder HASS gebruikt? :9

Ben hier nog eens mee bezig geweest. Had hem eerst simpel, door de schedex node een on/off te laten sturen. Nu iets aangepast, zodat hij wat bedrijfszekerder is.

Stel namelijk dat Node-RED uit stond en ik hem ná zonsondergang aanzette, dan zou het licht niet aan gaan (het omslagpunt is dan al geweest en de schedex node doet dan pas bij sunrise weer een actie uitsturen). Nu check ik elke 15min en laat de nodige actie uitvoeren :)
Afbeeldingslocatie: https://tweakers.net/ext/f/oAkYYjZIsK1q33nrwFP6Ynkl/full.png

code:
1
[{"id":"f6ac3650.9fd658","type":"schedex","z":"63eb3286.86effc","name":"","suspended":false,"lat":"jouwlat","lon":"jouwlon","ontime":"sunset","ontopic":"","onpayload":"ON","onoffset":"-10","onrandomoffset":0,"offtime":"sunrise","offtopic":"","offpayload":"OFF","offoffset":"-15","offrandomoffset":0,"mon":true,"tue":true,"wed":true,"thu":true,"fri":true,"sat":true,"sun":true,"x":380,"y":80,"wires":[["c513a2e5.e56cc8"]]},{"id":"f1d697cc.172548","type":"inject","z":"63eb3286.86effc","name":"@15m","topic":"","payload":"info","payloadType":"str","repeat":"900","crontab":"","once":false,"onceDelay":0.1,"x":220,"y":80,"wires":[["f6ac3650.9fd658"]]},{"id":"c513a2e5.e56cc8","type":"switch","z":"63eb3286.86effc","name":"Is sunset?","property":"payload.state","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":550,"y":80,"wires":[["b6f64923.426e4"],["3a365ccb.9b7014"]]},{"id":"b6f64923.426e4","type":"function","z":"63eb3286.86effc","name":"Turn on lights","func":"msg.payload = \"{\\\"scene\\\": \\\"idvanjouwhuescene\\\"}\";\nreturn msg;","outputs":1,"noerr":0,"x":740,"y":60,"wires":[["804b67a3.e37cb8"]]},{"id":"804b67a3.e37cb8","type":"http request","z":"63eb3286.86effc","name":"Send command to bridge","method":"PUT","ret":"txt","url":"http://192.168.6.20/api/JOUWAPIKEY/groups/3/action","tls":"","x":970,"y":80,"wires":[[]]},{"id":"3a365ccb.9b7014","type":"function","z":"63eb3286.86effc","name":"Turn off lights","func":"msg.payload = \"{\\\"on\\\": false}\";\nreturn msg;","outputs":1,"noerr":0,"x":740,"y":100,"wires":[["804b67a3.e37cb8"]]}]


Ik moet alleen even kijken hoe het nu gaat met de offset, wellicht is elk kwartier de boel draaien te traag en moet het vaker.

[ Voor 3% gewijzigd door ThinkPad op 08-10-2018 16:17 ]


Acties:
  • 0 Henk 'm!

  • Thoit
  • Registratie: Februari 2015
  • Laatst online: 16-05 08:37
Inmiddels heb ik wat dingen kunnen omzetten van Home Assistant naar Node-red. Loop nu alleen toch een tweetal dingen aan:

1. Ik heb nu een flow gemaakt waarmee de keukenlamp aan gaat als ik ga werken. Rond 06.30 kom ik in de keuken en moet dus de lamp uit gaan. Zodra ik naar het werk ben, moet de lamp weer uit. Dit geldt hetzelfde voor m'n vriendin. Echter blijven we nu constant de melding krijgen dat de keukenlamp uit gaat. Ik vermoed door de 5 minuten timer?

Afbeeldingslocatie: https://tweakers.net/ext/f/Lo8YNghxsBIywbDlFhir4uZa/full.png

2. Hoe kan ik dit het beste vereenvoudigen? De actie, deur / raam, open / dicht is namelijk altijd hetzelfde. Alleen wil ik een bericht van welke raam of deur open of dicht gaat. Heeft iemand hier een duidelijk voorbeeld van? Vind dit namelijk erg omslachtig. Vooral omdat ik inmiddels 16 deur / raam sensoren heb, waardoor het niet meer overzichtelijk is.

Afbeeldingslocatie: https://tweakers.net/ext/f/ZCnnPHAmzWl2k2GrzZsYQC5c/full.png

Acties:
  • +1 Henk 'm!

  • DeadMetal
  • Registratie: Mei 2002
  • Laatst online: 25-05 14:52
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:
Afbeeldingslocatie: https://tweakers.net/ext/f/5LyLgrL06KhtXdTclmfTRLVm/thumb.png

Acties:
  • +2 Henk 'm!

  • Kaspers
  • Registratie: Juni 2004
  • Laatst online: 19-05 20:54
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:

Afbeeldingslocatie: https://i.imgur.com/QIzprHkl.png

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

Afbeeldingslocatie: https://imgur.com/Nx6f9Unl.png

Acties:
  • 0 Henk 'm!

  • jossie67
  • Registratie: Oktober 2006
  • Laatst online: 27-05 15:46
ik probeer al de hele middag mijn ikea led lights aanzetten in NR dmv zigbee2mqtt

Afbeeldingslocatie: https://tweakers.net/ext/f/Qh2wltUTLYEMQuK1owENrnzk/medium.jpg

code:
1
[{"id":"57077902.fd17e8","type":"mqtt out","z":"c0c442ed.f6466","name":"Ikeabedlights","topic":"zigbee2mqtt/IkeaLedbed_jos/set","qos":"","retain":"","broker":"3da4d2c3.4bf8fe","x":730,"y":180,"wires":[]},{"id":"3722a942.095486","type":"inject","z":"c0c442ed.f6466","name":"On","topic":"zigbee2mqtt/IkeaLedbed_jos","payload":"{\"state\": \"ON\"}","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":170,"y":140,"wires":[["57077902.fd17e8"]]},{"id":"71a2f5ae.5735dc","type":"inject","z":"c0c442ed.f6466","name":"Off","topic":"","payload":"{\"brightness\": 100, \"color\": \"warm\"}","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":170,"y":180,"wires":[["57077902.fd17e8"]]},{"id":"a1fe9e7e.9aec9","type":"debug","z":"c0c442ed.f6466","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":720,"y":300,"wires":[]},{"id":"7dc054ca.444dfc","type":"mqtt in","z":"c0c442ed.f6466","name":"IkeaBed_jos","topic":"zigbee2mqtt/IkeaLedbed_jos/set","qos":"2","broker":"3da4d2c3.4bf8fe","x":160,"y":300,"wires":[["a1fe9e7e.9aec9"]]},{"id":"8cc5d447.201f68","type":"inject","z":"c0c442ed.f6466","name":"100 Warm","topic":"","payload":"{\"brightness\": 100, \"color\": \"warm\"}","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":180,"y":220,"wires":[["57077902.fd17e8"]]},{"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":""}]


ik kom maar geen stap verder, ik weet het format moet json zijn. Maar dat lukt volgens mij niet helemaal

wie helpt mij een beetje in de goede richting

[ Voor 86% gewijzigd door jossie67 op 17-10-2018 14:11 ]


Acties:
  • 0 Henk 'm!

  • Kaspers
  • Registratie: Juni 2004
  • Laatst online: 19-05 20:54
Thoit schreef op donderdag 18 oktober 2018 @ 15:32:
Klopt, je hebt gelijk. Ik praat met NR inderdaad tegen HA aan.
Als je tegen HA aan kunt praten dan zou ik 't zo aanpakken:

Afbeeldingslocatie: https://imgur.com/3UsrhZcl.png

code:
1
[{"id":"a4b68e74.605f68","type":"change","z":"461b614f.07468","name":"set vars","rules":[{"t":"delete","p":"payload","pt":"msg"},{"t":"set","p":"payload.data.entity_id","pt":"msg","to":"light.Ikeabedlights","tot":"str"},{"t":"set","p":"payload.service","pt":"msg","to":"turn_on","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1440,"y":2280,"wires":[["cd772388.e5497"]]},{"id":"106b7c7a.7dc99c","type":"change","z":"461b614f.07468","name":"set vars","rules":[{"t":"delete","p":"payload","pt":"msg"},{"t":"set","p":"payload.data.entity_id","pt":"msg","to":"light.Ikeabedlights","tot":"str"},{"t":"set","p":"payload.service","pt":"msg","to":"turn_off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1440,"y":2340,"wires":[["cd772388.e5497"]]},{"id":"2570c333.41d014","type":"change","z":"461b614f.07468","name":"set vars","rules":[{"t":"delete","p":"payload","pt":"msg"},{"t":"set","p":"payload.data.entity_id","pt":"msg","to":"light.Ikeabedlights","tot":"str"},{"t":"set","p":"payload.service","pt":"msg","to":"turn_on","tot":"str"},{"t":"set","p":"payload.data.color","pt":"msg","to":"warm","tot":"str"},{"t":"set","p":"payload.data.brightness_pct","pt":"msg","to":"100","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1440,"y":2400,"wires":[["cd772388.e5497"]]},{"id":"46a6aa25.ffedfc","type":"inject","z":"461b614f.07468","name":"On","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":1270,"y":2280,"wires":[["a4b68e74.605f68"]]},{"id":"c442b9aa.d5282","type":"inject","z":"461b614f.07468","name":"Off","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":1270,"y":2340,"wires":[["106b7c7a.7dc99c"]]},{"id":"464f2736.eb6558","type":"inject","z":"461b614f.07468","name":"100 Warm","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":1280,"y":2400,"wires":[["2570c333.41d014"]]},{"id":"cd772388.e5497","type":"api-call-service","z":"461b614f.07468","name":"","server":"3bd348bb.eea7d","service_domain":"light","service":"","data":"","mergecontext":"","x":1620,"y":2340,"wires":[[]]},{"id":"3bd348bb.eea7d","type":"server","z":"","name":"Home Assistant","url":"http://localhost:8123","pass":"YPjuAMygdaqHORpl4vDGqGFv"}]

Acties:
  • 0 Henk 'm!

  • Thoit
  • Registratie: Februari 2015
  • Laatst online: 16-05 08:37
Inmiddels weer een stuk verder gekomen. Het volgende werkt nu:

Afbeeldingslocatie: https://tweakers.net/ext/f/ZDGEwtxDxt2HsqRBKGilgwwn/full.png

Hiermee krijg ik dus netjes een melding van welke deur open is. In plaats van een losse melding en trigger te maken per sensor.

Afbeeldingslocatie: https://tweakers.net/ext/f/vuREfO8JEHlkaepNqHTo7G9i/full.png

Heb het ook uitgebreid met aanwezigheid check, alleen krijg ik dan nog 2 outputs. Ook dit moet ik morgen even testen, hoe het bericht op de telefoon door komt.

In de functie staat:
code:
1
2
3
4
5
6
7
8
9
10
11
const friendlyName = msg.data.new_state.attributes.friendly_name;
node.status({text: friendlyName});
return {
        "payload": {
           "data": {
               "message": friendlyName + " uit"
           } 
    }
}
return msg
;


In de notify service staat:
code:
1
 {"title": "Lamp", "message": "node.status"}


Hier heb ik lang naar gezocht, dus voor degene die het ook willen gebruiken, doe er je voordeel mee.

Acties:
  • +1 Henk 'm!
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;
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/cd54145e4ea878b6ac3964d0b2b2d4ee.png

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

[ Voor 10% gewijzigd door lolgast op 20-10-2018 15:11 . Reden: Was het weekend vergeten :/ ]


Acties:
  • 0 Henk 'm!

  • Thoit
  • Registratie: Februari 2015
  • Laatst online: 16-05 08:37
Heb nog een keer jullie hulp nodig.. Ik heb een functie gemaakt waarbij in het bericht de naam van het device komt. Hiermee kan ik in de event state bijv. alle deur sensoren invoeren, en hoef dus niet losse event states hiervan te maken.

Zodra ik van melding aan naar het bericht ga, gaat het goed. Dan geeft hij netjes "Wasmachine switch uit" aan. Echter wil ik alleen het bericht krijgen als ik niet thuis ben. Echter is dan uiteindelijk de output, not_home en het bericht. Hoe kan ik ervoor zorgen dat het bericht alleen wordt: <friendly name device> + uit dus bijv. "Wasmachine switch uit"

Afbeeldingslocatie: https://tweakers.net/ext/f/pQ8ZIroIHXbYjbW9eKp7CA6b/full.png

Acties:
  • 0 Henk 'm!

  • jossie67
  • Registratie: Oktober 2006
  • Laatst online: 27-05 15:46
Hi, toch weer jullie hulp nodig
Het wordt weer kouder en dus staat de verwarming weer aan.
Maar soms zetten we ook even de tuindeur open en dan vergeten we natuurlijk dan om de verwarming dat uit de zetten.
Nu heb ik een xiaomi deur sensor en een gerooted Toon
Als de deur open is is de status On , deur dicht is de status Off
Nu dacht ik als de deur van On naar Off gaat, stuur ik de status van Toon, naar de een virtuel Toon, sensor
En gaat de deur van Off naar On, dan stuur ik de status van de virtuele Toon sensor naar de Toon

Maar het lukt mij al niet om dvm een inject de status van de Toon te veranderen

Tuin_toon

code:
1
[{"id":"6b8cd1ff.24911","type":"server-state-changed","z":"df8b72d1.11132","name":"Toon Status","server":"fe98b923.370738","entityidfilter":" climate.toon_thermostat","entityidfiltertype":"substring","haltifstate":"","x":150,"y":940,"wires":[["9ca9ebf8.826358"]]},{"id":"148bba12.99ac36","type":"debug","z":"df8b72d1.11132","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":850,"y":1060,"wires":[]},{"id":"5dde1865.279ca8","type":"link in","z":"df8b72d1.11132","name":"Tuindeur","links":["cde73f26.7d0d4"],"x":135,"y":1060,"wires":[["9ca9ebf8.826358"]]},{"id":"9ca9ebf8.826358","type":"function","z":"df8b72d1.11132","name":"","func":"\nreturn msg;","outputs":1,"noerr":0,"x":490,"y":1000,"wires":[["6ce3b57d.0bc96c"]]},{"id":"8fa23ec0.e096","type":"mqtt in","z":"df8b72d1.11132","name":"Toonvirtueel","topic":"house/toonvirtuel/status","qos":"2","broker":"3da4d2c3.4bf8fe","x":150,"y":1000,"wires":[["148bba12.99ac36"]]},{"id":"6ce3b57d.0bc96c","type":"mqtt out","z":"df8b72d1.11132","name":"","topic":"house/toonvirtuel/status","qos":"","retain":"","broker":"3da4d2c3.4bf8fe","x":890,"y":1000,"wires":[]},{"id":"e17cb570.db40e8","type":"api-call-service","z":"df8b72d1.11132","name":" climate.toon_thermostat","server":"fe98b923.370738","service_domain":"climate","service":"set_operation_mode","data":"{\"entity_id\":\" climate.toon_thermostat\"}","mergecontext":"","x":890,"y":940,"wires":[[]]},{"id":"9122d149.0ce7f","type":"inject","z":"df8b72d1.11132","name":"Comfort","topic":"","payload":"\"Comfort\"","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":490,"y":820,"wires":[["e17cb570.db40e8"]]},{"id":"6531b7fd.f20398","type":"comment","z":"df8b72d1.11132","name":"Toon / Tuindeur open","info":"Comfort\nHome\nSleep\nAway\nHoliday","x":180,"y":840,"wires":[]},{"id":"fe98b923.370738","type":"server","z":"","name":"Home Assistant 35","url":"http://192.168.10.35:8123","pass":"Z3B0J02018"},{"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":""}]

[ Voor 67% gewijzigd door jossie67 op 28-10-2018 15:37 . Reden: plaatje en code geplaats ]


Acties:
  • 0 Henk 'm!

  • Thoit
  • Registratie: Februari 2015
  • Laatst online: 16-05 08:37
jossie67 schreef op zondag 28 oktober 2018 @ 15:35:
Hi, toch weer jullie hulp nodig
Het wordt weer kouder en dus staat de verwarming weer aan.
Maar soms zetten we ook even de tuindeur open en dan vergeten we natuurlijk dan om de verwarming dat uit de zetten.
Nu heb ik een xiaomi deur sensor en een gerooted Toon
Als de deur open is is de status On , deur dicht is de status Off
Nu dacht ik als de deur van On naar Off gaat, stuur ik de status van Toon, naar de een virtuel Toon, sensor
En gaat de deur van Off naar On, dan stuur ik de status van de virtuele Toon sensor naar de Toon

Maar het lukt mij al niet om dvm een inject de status van de Toon te veranderen

[Afbeelding: Tuin_toon]

code:
1
[{"id":"6b8cd1ff.24911","type":"server-state-changed","z":"df8b72d1.11132","name":"Toon Status","server":"fe98b923.370738","entityidfilter":" climate.toon_thermostat","entityidfiltertype":"substring","haltifstate":"","x":150,"y":940,"wires":[["9ca9ebf8.826358"]]},{"id":"148bba12.99ac36","type":"debug","z":"df8b72d1.11132","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":850,"y":1060,"wires":[]},{"id":"5dde1865.279ca8","type":"link in","z":"df8b72d1.11132","name":"Tuindeur","links":["cde73f26.7d0d4"],"x":135,"y":1060,"wires":[["9ca9ebf8.826358"]]},{"id":"9ca9ebf8.826358","type":"function","z":"df8b72d1.11132","name":"","func":"\nreturn msg;","outputs":1,"noerr":0,"x":490,"y":1000,"wires":[["6ce3b57d.0bc96c"]]},{"id":"8fa23ec0.e096","type":"mqtt in","z":"df8b72d1.11132","name":"Toonvirtueel","topic":"house/toonvirtuel/status","qos":"2","broker":"3da4d2c3.4bf8fe","x":150,"y":1000,"wires":[["148bba12.99ac36"]]},{"id":"6ce3b57d.0bc96c","type":"mqtt out","z":"df8b72d1.11132","name":"","topic":"house/toonvirtuel/status","qos":"","retain":"","broker":"3da4d2c3.4bf8fe","x":890,"y":1000,"wires":[]},{"id":"e17cb570.db40e8","type":"api-call-service","z":"df8b72d1.11132","name":" climate.toon_thermostat","server":"fe98b923.370738","service_domain":"climate","service":"set_operation_mode","data":"{\"entity_id\":\" climate.toon_thermostat\"}","mergecontext":"","x":890,"y":940,"wires":[[]]},{"id":"9122d149.0ce7f","type":"inject","z":"df8b72d1.11132","name":"Comfort","topic":"","payload":"\"Comfort\"","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":490,"y":820,"wires":[["e17cb570.db40e8"]]},{"id":"6531b7fd.f20398","type":"comment","z":"df8b72d1.11132","name":"Toon / Tuindeur open","info":"Comfort\nHome\nSleep\nAway\nHoliday","x":180,"y":840,"wires":[]},{"id":"fe98b923.370738","type":"server","z":"","name":"Home Assistant 35","url":"http://192.168.10.35:8123","pass":"Z3B0J02018"},{"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":""}]
Hoe verander je normaal de status? Zelf maak ik gebruik van Tado, daarvoor heb ik het volgende gemaakt:

Afbeeldingslocatie: https://tweakers.net/ext/f/2jp2DwJRpuJ9AFmkYJYIl5Tj/full.png

Ramen op is: climate -> set operation mode -> off bijv.

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 19:49
Aegle schreef op zondag 4 november 2018 @ 22:41:
[...]

@ThinkPad: wil je beschrijven hoe je de Youless uitleest? Het enige wat me tot nu toe is gelukt is wat temperatuur sensoren, geknoopt aan een paar ESP8266 modules, via mqtt -> NodeRed naar een influx database te schrijven en die vervolgens in Grafana uit te lezen. Dat heb ik nu wel redelijk onder de knie. Ik wil mijn Youless op dezelfde registreren, maar kom er niet uit :+ .
Op deze manier:
JSON:
1
[{"id":"d19103ac.0195","type":"http request","z":"774afe0a.1e21a","name":"LS110 Actual Watt","method":"GET","ret":"obj","url":"http://192.168.6.26/a?f=j","tls":"","x":370,"y":240,"wires":[["5f8cfb3.9d09f04"]]},{"id":"9dee166.bb764e8","type":"http request","z":"774afe0a.1e21a","name":"LS120 Actual Watt","method":"GET","ret":"obj","url":"http://192.168.6.28/a?f=j","tls":"","x":370,"y":300,"wires":[["c13fd8c4.c2d788"]]},{"id":"b98af705.8bd0d8","type":"inject","z":"774afe0a.1e21a","name":"@10s","topic":"","payload":"","payloadType":"date","repeat":"10","crontab":"","once":false,"onceDelay":0.1,"x":160,"y":260,"wires":[["d19103ac.0195","9dee166.bb764e8"]]},{"id":"eaf773ea.48301","type":"function","z":"774afe0a.1e21a","name":"Verbruik berekenen","func":"var zon = msg.payload.ls110.pwr;\nvar p1 = msg.payload.ls120.pwr;\nvar bruto_verbruik = parseFloat(p1 + zon);\n\nmsg.payload = bruto_verbruik;\n\nvar status = {\n    text: 'Bruto: ' + bruto_verbruik + ' W',\n};\nnode.status(status);\n\n\nif (bruto_verbruik > 0) {\n    return msg;\n} \n\n\n","outputs":1,"noerr":0,"x":850,"y":260,"wires":[["3a948b7e.c39394","267bb526.13fa2a","2dd3ebe6.ab5bb4"]]},{"id":"a63a6ebb.54596","type":"join","z":"774afe0a.1e21a","name":"","mode":"auto","build":"string","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":690,"y":260,"wires":[["eaf773ea.48301"]]},{"id":"5f8cfb3.9d09f04","type":"function","z":"774afe0a.1e21a","name":"Joiner","func":"msg.parts = {\n\n    id: 'yl',\n    index: 1,\n    count: 2,\n    type: 'object',\n    key: 'ls110'\n}\n\nvar status = {\n    fill: ((msg.payload.pwr < 1) ? 'red' : ('green')), \n    shape: 'dot', \n    text: msg.payload.pwr + ' W',\n};\nnode.status(status);\n\nreturn msg;","outputs":1,"noerr":0,"x":530,"y":240,"wires":[["a63a6ebb.54596"]]},{"id":"c13fd8c4.c2d788","type":"function","z":"774afe0a.1e21a","name":"Joiner","func":"msg.parts = {\n\n    id: 'yl',\n    index: 3,\n    count: 2,\n    type: 'object',\n    key: 'ls120'\n}\n\nvar status = {\n    fill: ((msg.payload.pwr < 0) ? 'green' : ('yellow')), \n    shape: 'dot', \n    text: msg.payload.pwr + ' W',\n};\nnode.status(status);\n\nreturn msg;","outputs":1,"noerr":0,"x":530,"y":300,"wires":[["a63a6ebb.54596"]]},{"id":"3a948b7e.c39394","type":"mqtt out","z":"774afe0a.1e21a","name":"","topic":"/power/calc_consumption","qos":"","retain":"","broker":"2ecabb24.4750d4","x":1090,"y":220,"wires":[]},{"id":"267bb526.13fa2a","type":"influxdb out","z":"774afe0a.1e21a","influxdb":"47ea6dea.fc1f84","name":"","measurement":"bruto_verbruik","precision":"","retentionPolicy":"","x":1140,"y":300,"wires":[]},{"id":"565a8339.50c63c","type":"comment","z":"774afe0a.1e21a","name":"Actuele bruto verbruik berekenen","info":"","x":190,"y":200,"wires":[]},{"id":"2dd3ebe6.ab5bb4","type":"ui_text","z":"774afe0a.1e21a","group":"5c3fd7e6.d42658","order":0,"width":0,"height":0,"name":"","label":"Bruto verbruik","format":"{{msg.payload}} W","layout":"row-left","x":1060,"y":380,"wires":[]},{"id":"2ecabb24.4750d4","type":"mqtt-broker","z":"","name":"","broker":"192.168.8.14","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"47ea6dea.fc1f84","type":"influxdb","z":"","hostname":"192.168.8.10","port":"8086","protocol":"http","database":"stroom","name":"","usetls":false,"tls":"abc0910e.2b64"},{"id":"5c3fd7e6.d42658","type":"ui_group","z":"","name":"Ventilatie","tab":"724cce2d.08897","disp":true,"width":"6","collapse":false},{"id":"abc0910e.2b64","type":"tls-config","z":"","name":"","cert":"","key":"","ca":"","certname":"","keyname":"","caname":"","verifyservercert":false},{"id":"724cce2d.08897","type":"ui_tab","z":"","name":"Home","icon":"dashboard"}]


Afbeeldingslocatie: https://tweakers.net/ext/f/D8WWoWH3VbIhmJeBOfWojBOe/full.jpg
De YouLess LS110 meet de bruto productie van m'n zonnepanelen, de LS120 hangt aan de P1-poort van m'n slimme meter.

Het gaat overigens puur om het actuele verbruik ('Watt'). De meterstanden laat ik mijzelf elke maand mailen en vul ik dan in op een Excel-sheet. Daarvoor kun je http://ipyouless/e?f=j gebruiken, daar staan de meterstanden van elk P1-telwerk in.

Acties:
  • +2 Henk 'm!
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:
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/c2c2af4c9bf55598057044d587aa4f82.pngAls de Sonoff uit-/aangezet wordt, stuur ik een bericht naar de API van OctoPrint om de printer te (dis)connecten

Acties:
  • 0 Henk 'm!

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

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

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

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

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

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

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

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


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

Acties:
  • 0 Henk 'm!

  • Thoit
  • Registratie: Februari 2015
  • Laatst online: 16-05 08:37
Inmiddels heb ik bijna alles naar wens in Node-red. Loop alleen nog tegen 1 vervelend probleem aan. Heb nu onderstaande flow gemaakt, waarbij als het donker is de lampen netjes aan gaan als: beweging, deur of raam sensoren aan gaan. Vervelende is nu echter dat als we aan het eten zijn, we niet voldoende bewegen blijkbaar. Dus vaak gaat de lamp uit, en moeten we zwaaien om beweging te triggeren. Is er iemand die iets heeft waarmee ik kan zeggen dat als ik de lamp handmatig aanzet, hij niet de timer van 2 minuten start. Dus dat je als het ware het onderste stuk overschrijft.

Afbeeldingslocatie: https://tweakers.net/ext/f/CROvEl7Mpfaqgx9c6YHD2NI0/full.png

Acties:
  • 0 Henk 'm!

  • KvNwPPr
  • Registratie: Februari 2014
  • Laatst online: 15:47
Ik zoek iets vergelijkbaars. Ik wil dat de lampen niet automatisch uitgaan (als er geen motion is) wanneer ik de light switch heb gebruikt.

Ik heb geprobeerd om een current state node voor de xiaomi wall switch te gebruiken maar ik krijg het niet werkend. Als ik nu de verlichting uitschakel met de wall switch, dan gaat de verlichting weer aan bij motion.

Afbeeldingslocatie: https://imgur.com/fPdnh44.jpg

[ Voor 16% gewijzigd door KvNwPPr op 08-11-2018 18:41 ]


Acties:
  • 0 Henk 'm!

  • KvNwPPr
  • Registratie: Februari 2014
  • Laatst online: 15:47
DeadMetal schreef op vrijdag 9 november 2018 @ 07:50:
[...]


's ochtends schakelen m'n lampen in op een tijdstip die gebaseerd is op de tijd van m'n wekker. Zo'n 5 a 10 minuten voordat ik beneden kom zeg maar. Tenzij de zon al lang op is. Ze gaan weer uit als ik de deur uit ga.

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

Dat werkt helemaal niet onaardig. Maar wat ik dus inderdaad niet heb is dat iets aangaat als het midden op de dag ineens helemaal betrekt. Kan handig zijn, maar niet zo'n behoefte aan. Overigens gaat het bij mij om de sfeerverlichting. Fellere lampen zoals keukenlamp en eettafellamp bedien ik handmatig met (dimmer)schakelaars.
Thanx! Het werkt. Nu alleen nog een fijne manier vinden om de flow weer te resetten. Het is jammer dat de Xiaomi Wall switch alleen maar een single en double click functie heeft. De Xiaomi Button (1st gen) is veel uitgebreider maar die is dan weer niet mooi en handig als double wall switch.


Afbeeldingslocatie: https://i.imgur.com/7w8Hdhx.png

Acties:
  • 0 Henk 'm!
In het verlengde van mijn vorige flow waarin ik automatisch mijn 3D printer connect met Octoprint als de printer wordt ingeschakeld via een MQTT device (lolgast in "Node-RED - grafisch 'programmeren' (bijv. voor domotica)"), ben ik verder bezig geweest elke 20 minuten een update via camera te krijgen. Op die manier kan ik min of meer op tijd reageren wanneer er iets fout gaat en ik niet thuis ben.

Ik heb de camera van Octoprint gekoppeld in HA en gebruik de notificatie vanuit HA. De notificatie kan natuurlijk ook via Telegram, maar ik heb toch een HA afhankelijk voor het camera beeld en ik vind de HA notificatie prettiger
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/ff1958fc0d09d7c0601dd51458743aef.png
Ik kijk of Octoprint aan het printen is (on/off). Bij on krijg ik via de trigger een 20 minuten vertraging (de delay node kun je niet uitschakelen volgens mij?) vervolgens een loop die elke 20 minuten een token ophaalt bij HA om zonder inloggegevens een afbeelding van de camera te kunnen openen, welke daarna verzonden wordt via de function node. Is de print klaar, krijg ik een off waarna de trigger- en de loop-node worden gestopt.
JSON:
1
[{"id":"3740a6a0.60094a","type":"change","z":"905df0f3.d8c748","name":"payload to stop","rules":[{"t":"set","p":"payload","pt":"msg","to":"stop","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":500,"y":1040,"wires":[["b858a11f.d8546","5a96d324.f7479c"]]},{"id":"6e4e53d0.64e2ec","type":"switch","z":"905df0f3.d8c748","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"off","vt":"str"},{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":310,"y":1060,"wires":[["3740a6a0.60094a"],["5a96d324.f7479c"]]},{"id":"b858a11f.d8546","type":"looptimer","z":"905df0f3.d8c748","duration":"20","units":"Minute","maxloops":"100","maxtimeout":"100","maxtimeoutunits":"Hour","name":"","x":720,"y":1060,"wires":[["ad9338a8.bddb48"],[]]},{"id":"5a96d324.f7479c","type":"trigger","z":"905df0f3.d8c748","op1":"","op2":"","op1type":"nul","op2type":"pay","duration":"20","extend":false,"units":"min","reset":"stop","bytopic":"all","name":"","x":490,"y":1080,"wires":[["b858a11f.d8546"]]},{"id":"8d74e5b3.4d5678","type":"server-state-changed","z":"905df0f3.d8c748","name":"Octoprint ON","server":"39fd7a9b.252f86","entityidfilter":"binary_sensor.octoprint_printing","entityidfiltertype":"exact","haltifstate":"","outputinitially":false,"x":130,"y":1060,"wires":[["6e4e53d0.64e2ec"]]},{"id":"ad9338a8.bddb48","type":"api-render-template","z":"905df0f3.d8c748","name":"get token","server":"39fd7a9b.252f86","template":"{{states.camera.printer_camera.attributes.entity_picture}}","x":920,"y":1060,"wires":[["aa8f412.bd78cc"]]},{"id":"aa8f412.bd78cc","type":"function","z":"905df0f3.d8c748","name":"Message template","func":"msg.payload = { \n    data: {\n     'title':\n       'Octoprint',\n     'message':\n       \"Status van de huidige printopdracht\",\n     data: {\n        attachment: {\n          'url': 'https://hass.MIJN-DOMEIN.NL' + msg.payload,\n          'content-type': 'jpeg',\n          'hide-thumbnail': false }}}};\nmsg.payload.service = 'iphone_stefan';\nreturn msg;","outputs":1,"noerr":0,"x":1150,"y":1060,"wires":[["dab3ad9.9429f5"]]},{"id":"dab3ad9.9429f5","type":"link out","z":"905df0f3.d8c748","name":"","links":["d40f2d4a.e0af6","a1470c3e.8ac12"],"x":1315,"y":1060,"wires":[]},{"id":"39fd7a9b.252f86","type":"server","z":"","name":"Home Assistant","legacy":false}]
Door de actie met de token hoef ik niet eerst een snapshot te maken en die weg te schrijven. Andere methodes die ik vond maakte het noodzakelijk om het camerabeeld via het internet beschikbaar te maken. Dat is de token-url ook, maar die ziet er zo uit (en wijzigt regelmatig) en is via de bestaande HA url welke sowieso al open staat van buiten bij mij.
code:
1
https://hass.MIJN-DOMEIN.NL/api/camera_proxy/camera.printer_camera?token=a47f96e8dd7efaa70510b49496796a831a3260f8ff6b3876079847a1839b7bc1

Acties:
  • +1 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 19:49
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

Afbeeldingslocatie: 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.

[ Voor 5% gewijzigd door ThinkPad op 12-11-2018 13:24 ]


Acties:
  • +2 Henk 'm!
@Anoniem: 1106995 Volgens mij heb jij hier voldoende aan. Pak een change node en zet daar dit in :)
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/61355ffeba9678808f5b4f4bbfda581f.png
@Cyw00d Ik kan niet zeggen dat ik daar problemen mee ondervind. Wat ik wel heb gedaan om zeker te weten dat er bij opstarten geen rare dingen gebeuren, is bij sommige nodes dit toegevoegd
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/1bd80039f2232ed2bf8526e40bc905e9.png

Om jouw probleem af te vangen zou je er ook een RBE node tussen kunnen zetten, dan moet de waarde gewijzigd zijn voordat hij wordt doorgegeven

Acties:
  • 0 Henk 'm!

  • Milmoor
  • Registratie: Januari 2000
  • Laatst online: 17:15

Milmoor

Footsteps and pictures.

Voorbeeld met MQTT en RBE. Er staan twee RBE nodes in. Die gebruik ik om een hotelschakeling (wisselschakeling) te maken. Ik heb een schakelaar die niet gekoppeld is aan een lamp, en een die dat wel is. Ik kan dankzij dit schema de lamp met beide schakelaars bedienen.

MQTT en RBE


code:
1
[{"id":"f8dcb51e.1a1b78","type":"mqtt-json","z":"9e031a86.f67a78","name":"Status bij badkamer (loos)","topic":"shellies/shelly1-8AA7B8/relay/0","property":"","qos":"2","broker":"b35103e.d72b2","x":130,"y":1200,"wires":[["7fcee09d.b2b4c8"]]},{"id":"7fcee09d.b2b4c8","type":"rbe","z":"9e031a86.f67a78","name":"","func":"rbei","gap":"","start":"","inout":"out","property":"payload","x":350,"y":1200,"wires":[["3969702d.ed0ea"]]},{"id":"394206f1.46cbca","type":"mqtt-json","z":"9e031a86.f67a78","name":"Status bij trap (schakelt lamp)","topic":"shellies/shelly1-8B1B80/relay/0","property":"","qos":"2","broker":"b35103e.d72b2","x":140,"y":1120,"wires":[["b142e25f.28a78"]]},{"id":"b142e25f.28a78","type":"rbe","z":"9e031a86.f67a78","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":350,"y":1120,"wires":[["697a884c.7dccd8"]]},{"id":"697a884c.7dccd8","type":"join","z":"9e031a86.f67a78","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":570,"y":1120,"wires":[["a6d67d15.3e33c"]]},{"id":"3969702d.ed0ea","type":"change","z":"9e031a86.f67a78","name":"","rules":[{"t":"set","p":"complete","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":1200,"wires":[["697a884c.7dccd8"]]},{"id":"a6d67d15.3e33c","type":"change","z":"9e031a86.f67a78","name":"bepaal huidige waarde trap","rules":[{"t":"set","p":"payload","pt":"msg","to":"$reverse(payload)[1]","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":780,"y":1120,"wires":[["a6382169.6336d"]]},{"id":"a6382169.6336d","type":"change","z":"9e031a86.f67a78","name":"off <=> on","rules":[{"t":"delete","p":"topic","pt":"msg"},{"t":"set","p":"payload","pt":"msg","to":"payload = \"on\" ? \"off\" : \"on\"","tot":"jsonata"},{"t":"set","p":"qos","pt":"msg","to":"2","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1000,"y":1120,"wires":[["17be0c04.43c974","4c83ee26.73d72"]]},{"id":"17be0c04.43c974","type":"mqtt out","z":"9e031a86.f67a78","name":"Schakel trap (en dus de lamp)","topic":"shellies/shelly1-8B1B80/relay/0/command","qos":"2","retain":"","broker":"b35103e.d72b2","x":1070,"y":1160,"wires":[]},{"id":"f21d4e16.9085c","type":"comment","z":"9e031a86.f67a78","name":"verzamel de wijzigingen","info":"Van de trap (en daarmee van de lamp) wordt de initiële toestand doorgegeven plus\neventuele wijzigingen daarna. Hiermee bevat deze altijd de huidige toestand.\nVan de badkamer worden alleen de wijzigingen doorgegeven. De eerste keer (bij\nhet opstarten) wordt genegeerd.\nDe join combineert de wijzigingen. Deze bouwt een array op van alle wijzigingen\nvan de trap. Nadat de badkamer schakelt wordt de array met de waarde daarvan\nafgesloten en doorgestuurd. Draai de array om en pak de tweede waarde [1] en je\nhebt de huidige toestand van de trap. Zwak punt: de array groeit oneindig lang\ndoor totdat de badkamer een keer geschakeld wordt.\nDoor de huidige waarde van de trap te wisselen (off <=> on) kan de trap met\nde nieuwe waarde geschakeld worden.","x":360,"y":1160,"wires":[]},{"id":"1b9f4303.49fced","type":"debug","z":"9e031a86.f67a78","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1370,"y":1120,"wires":[]},{"id":"4c83ee26.73d72","type":"change","z":"9e031a86.f67a78","name":"Log schakelen!","rules":[{"t":"set","p":"payload","pt":"msg","to":"Schakelen!","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1180,"y":1120,"wires":[["1b9f4303.49fced"]]},{"id":"b35103e.d72b2","type":"mqtt-broker","z":"","name":"","broker":"server","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]

Rekeningrijden is onvermijdelijk, uitstel is struisvogelpolitiek.


Acties:
  • 0 Henk 'm!

  • KvNwPPr
  • Registratie: Februari 2014
  • Laatst online: 15:47
Ik tel hoe vaak er wordt gedoucht. Bij meer dan 65% luchtvochtigheid en een verandering van 5% t.o.v. de vorige waarde wordt het geteld.
Het werkt zoals hieronder weergegeven maar soms telt ie meerdere keren.

Afbeeldingslocatie: https://i.imgur.com/rXWbdyP.png

Het probleem is dat hij nu ook triggert als de luchtvochtigheid zakt van bv. 80% naar 74%. Ik kan de RBE node niet alleen laten triggeren bij een positief verschil. Iemand een idee hoe ik dit voor elkaar krijg?

Acties:
  • +1 Henk 'm!
@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"]]}]
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/54372c9883bdd90c42205b88b0e7dbcd.png

[ Voor 7% gewijzigd door lolgast op 06-12-2018 08:41 ]


Acties:
  • 0 Henk 'm!

  • Thoit
  • Registratie: Februari 2015
  • Laatst online: 16-05 08:37
Momenteel maak ik gebruik van een TADO. In de woonkamer hangt de TADO thermostaat (waar vloerverwarming is) en op de slaapkamers zitten TADO radiatorknoppen. Nu is het zo dat als ik op de slaapkamer de verwarming aanzet, de woonkamer ook wordt opgewarmd omdat er geen klep op de vloerverwarming zit om dit dicht te zetten. Nu had ik het idee om middels een simpele Z-Wave schakelaar de pomp uit te zetten zodra er niet verwarmd wordt.

De flow kijkt nu als in de woonkamer niet verwarmd wordt (< 0.0), zet de schakelaar uit. Wordt er verwarmd in de woonkamer, zet de schakelaar aan. Heel simpel, en dit werkt ook prima. Máár, in de zomer zal de vloerverwarming uit staan, en wil elke dag de pomp 5 minuten laten lopen om te voorkomen dat de pomp vast komt te zitten. Zelf dacht ik aan een loop van 24 uur als de pomp uit gaat, staat de pomp aan dan doe niks. Maar dit is erg statisch natuurlijk, is er een mogelijkheid om de status van de afgelopen 24 uur uit te lezen en daar iets mee te doen? Dus: heeft de pomp de afgelopen 24 uur aangestaan? Doe niks, anders zet de pomp 5 minuten aan.

Afbeeldingslocatie: https://tweakers.net/ext/f/3HcJJAdeMxewI3XgYXUhzoIy/full.png

Acties:
  • +1 Henk 'm!
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:Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/41bdb2be732e28559e6bcddcd99f6f8d.png
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]Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/21100339dbba14c27366284c775aab13.png

Dus ik heb dit in de template-node ervoor gezetAfbeeldingslocatie: https://images.lolgast.nl/uploads/big/17b91b65214b3bc48a19ad45899b6b25.png

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.

Acties:
  • +1 Henk 'm!
@alexswart Het kan vast ook anders, maar ik zou het zo oplossen denk ik.
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/1c7f95e0de7ca174c2e3db6bcc2249cb.png
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? :+

Acties:
  • 0 Henk 'm!

  • H143
  • Registratie: Juli 2006
  • Laatst online: 19:57
@lolgast bedankt dat je mij opweg hebt geholpen

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

in hass heb ik dan wel weer een automation moeten aanmaken die reageerd wanneer ik de schakeluit button indruk dit heb ik nog niet compleet in node red kunnen krijgen
Afbeeldingslocatie: https://tweakers.net/ext/f/9lZdk49IPzdfFj66TFq0nzKC/thumb.png

in home assistant staat de volgengene automation:

code:
1
2
3
4
5
6
7
8
9
10
11
alias: HTML5 push notification action button clicked
  trigger:
  - event_data:
      action: 17g
    event_type: html5_notification.clicked
    platform: event
  action:
  - data:
      payload: '17'
      topic: actions/otmonitor/setpoint
    service: mqtt.publish


code:
1
[{"id":"960d41f.17934c","type":"server-events","z":"d05c5ec3.10809","name":"","server":"670b3376.13759c","event_type":"","x":135,"y":121,"wires":[["a10cf973.2ae508","5d8eb9ec.67f278"]]},{"id":"a10cf973.2ae508","type":"trigger-state","z":"d05c5ec3.10809","name":"","server":"670b3376.13759c","entityid":"device_tracker.susan","debugenabled":false,"constraints":[{"id":"ef0qttkmfp8","targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"afwezig"}],"constraintsmustmatch":"all","outputs":2,"customoutputs":[],"outputinitially":false,"x":207,"y":288.99998474121094,"wires":[["2794e3b7.06260c"],[]]},{"id":"5d8eb9ec.67f278","type":"trigger-state","z":"d05c5ec3.10809","name":"","server":"670b3376.13759c","entityid":"device_tracker.alex","debugenabled":false,"constraints":[{"id":"ef0qttkmfp8","targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"afwezig"}],"constraintsmustmatch":"all","outputs":2,"customoutputs":[],"outputinitially":false,"x":199.0999984741211,"y":326.5999870300293,"wires":[["3a353081.247a8"],[]]},{"id":"2794e3b7.06260c","type":"api-current-state","z":"d05c5ec3.10809","name":"","server":"670b3376.13759c","halt_if":"","override_topic":true,"override_payload":true,"override_data":true,"entity_id":"device_tracker.alex","x":508.1000518798828,"y":281.40000915527344,"wires":[["6771c1cd.4bf53"]]},{"id":"3a353081.247a8","type":"api-current-state","z":"d05c5ec3.10809","name":"","server":"670b3376.13759c","halt_if":"home","override_topic":true,"override_payload":true,"override_data":true,"entity_id":"device_tracker.susan","x":487.1000061035156,"y":327.39998626708984,"wires":[["6771c1cd.4bf53"]]},{"id":"b3a64b5c.5b8718","type":"mqtt in","z":"d05c5ec3.10809","name":"Thermostaat setpoint","topic":"events/central_heating/otmonitor/setpoint","qos":"2","broker":"beae2253.f0f06","x":175,"y":399.9999809265137,"wires":[["328e7977.07fe16"]]},{"id":"328e7977.07fe16","type":"change","z":"d05c5ec3.10809","name":"regex","rules":[{"t":"change","p":"payload","pt":"msg","from":"^(1[0-8]|\\d[^\\d])","fromt":"re","to":"laag.00","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"^(1[9]|2\\d)","fromt":"re","to":"hoog.00","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":375,"y":399.9999809265137,"wires":[["6771c1cd.4bf53"]]},{"id":"6771c1cd.4bf53","type":"traffic","z":"d05c5ec3.10809","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":728.0000076293945,"y":356.99998664855957,"wires":[["6c6cc873.ba4788"]]},{"id":"6c6cc873.ba4788","type":"api-call-service","z":"d05c5ec3.10809","name":"zend push bericht","server":"670b3376.13759c","service_domain":"notify","service":"push","data":"{\"message\":\"de cv staat nog aan\",\"data\":{\"actions\":[{\"action\":\"open\",\"icon\":\"/static/icons/favicon-192x192.png\",\"title\":\"Open Home Assistant\"},{\"action\":\"17g\",\"title\":\"schakel uit\"}]}}","mergecontext":"","x":886.0000076293945,"y":290.99998664855957,"wires":[[]]},{"id":"670b3376.13759c","type":"server","z":"","name":"homeassistant","legacy":false,"hassio":false,"rejectUnauthorizedCerts":true},{"id":"beae2253.f0f06","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":""}]

Acties:
  • 0 Henk 'm!

  • DeadMetal
  • Registratie: Mei 2002
  • Laatst online: 25-05 14:52
alexswart schreef op zaterdag 15 december 2018 @ 00:41:
@lolgast bedankt dat je mij opweg hebt geholpen

ik heb het nu voor elkaar dat wanneer ik en mijn vrouw afwezig zijn dmv device tracking ik op mijn telefoon een pushmelding krijg om de thermostaat uit te zetten ik weet niet of dit de mooiste oplossing is maar het werkt wel
Zou het niet als volgt simpeler kunnen?
Afbeeldingslocatie: https://tweakers.net/ext/f/HKX06bqJVlvAvO8QWXcz5i95/full.png

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

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

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

Acties:
  • 0 Henk 'm!

  • KvNwPPr
  • Registratie: Februari 2014
  • Laatst online: 15:47
Ik ben bezig geweest om de postNL automation om te zetten naar node-red. Nu alleen nog de postNL sensor van Hass omzetten maar dat is me nog niet gelukt. Het kan vast makkelijker maar het werkt :).

Afbeeldingslocatie: https://i.imgur.com/TMcyGzr.png
Afbeeldingslocatie: https://i.imgur.com/PuoEiHO.png

Function node
code:
1
2
3
4
5
var postnl = msg.data.new_state.entity_id;
var pakketjes = msg.data.new_state.state;
var attributes = msg.data.new_state.attributes;

return[{payload:postnl},{payload:pakketjes},{payload:attributes}]


switch node
Afbeeldingslocatie: https://i.imgur.com/D1EF3yc.png
Hoe kan ik mijn flows makkelijk delen zonder dat ik het risico loop om keys etc te delen?

Acties:
  • +1 Henk 'm!
@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 :+
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/b7844e20111bacf16cb960d1709dd1ef.png
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

[ Voor 106% gewijzigd door lolgast op 18-12-2018 09:17 ]


Acties:
  • +1 Henk 'm!

  • Kaspers
  • Registratie: Juni 2004
  • Laatst online: 19-05 20:54
Netjes :).

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

Afbeeldingslocatie: https://imgur.com/GED6fV9l.png

Is hij nog niets simpeler.

Acties:
  • +1 Henk 'm!
@HeroS Mijn flow is veel uitgebreider, maar uitgekleed naar het minimum om hem te laten werken voor mij:
Afbeeldingslocatie: 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.
Afbeeldingslocatie: https://images.lolgast.nl/uploads/medium/ac8d0c07df43d5b7a27cdeb673041a77.png
Hangt nog een heel stuk onder met schakelaars en de Hue Tap die hier op inhaken maar die heb ik er even tussenuit gehaald

[ Voor 26% gewijzigd door lolgast op 19-12-2018 13:00 ]


Acties:
  • 0 Henk 'm!

  • Kaspers
  • Registratie: Juni 2004
  • Laatst online: 19-05 20:54
lolgast schreef op woensdag 19 december 2018 @ 12:04:

Puur naar de beweging-/lichtsensor gekeken is dit mijn hele stuk.
[Afbeelding]
Hangt nog een heel stuk onder met schakelaars en de Hue Tap die hier op inhaken maar die heb ik er even tussenuit gehaald
Ah, geinig, dat stoplicht. Die kende ik nog niet :).

Ik heb t zo generiek mogelijk opgelost. Dit is mn flow voor presence detection voor 4 situaties waarin ik lichten wil schakelen op basis van beweging (voordeur, hal, overloop en bijkeuken):

Afbeeldingslocatie: https://i.imgur.com/lANVOyal.png

Links zie je 4 subflows met steeds 2 outputs, bovenste is trigger om licht aan te schakelen, onderste om uit te schakelen. Voorbeeld van zo'n subflow:

Afbeeldingslocatie: https://i.imgur.com/kpOezk7l.png

Hierin zet ik de volgende variabelen:

Afbeeldingslocatie: https://i.imgur.com/7hbZQ8Yl.png

Met de eerste variabele geef ik op of het licht afhankelijk moet zijn van een lux sensor.
2e is de timeout.
3e geef ik op wat de group is waarin de presence sensoren hangen. is trouwens overbodig zie ik nu, want doe er later in de flow niks meer mee.
4e geef ik op wat de entity_id is van het licht wat geschakeld moet worden.

Je kunt het op allerlei verscihllende manieren oplossen.. leuk om ze zo eens te delen!

[ Voor 3% gewijzigd door Kaspers op 19-12-2018 16:39 ]


Acties:
  • 0 Henk 'm!

  • KvNwPPr
  • Registratie: Februari 2014
  • Laatst online: 15:47
lolgast schreef op maandag 17 december 2018 @ 18:14:
@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 :+
[Afbeelding]
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
Chill, dat scheelt weer 3 nodes!

Om de berichtgeving netter te maken denk ik dat er een extra switch node achter de split node moet komen. Nu staat er dit (zie hieronder) als het pakket bezorgd is.
Afbeeldingslocatie: https://i.imgur.com/6lqvB6p.png

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

[ Voor 33% gewijzigd door KvNwPPr op 19-12-2018 18:45 . Reden: code toegevoegd ]


Acties:
  • +2 Henk 'm!
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

Afbeeldingslocatie: https://images.lolgast.nl/uploads/medium/53cb54428004cdb015d0536b3f5249f5.png
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":[]}]

Acties:
  • 0 Henk 'm!

  • Kaspers
  • Registratie: Juni 2004
  • Laatst online: 19-05 20:54
lolgast schreef op maandag 24 december 2018 @ 17:53:
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
Nice! Daar ga ik ook eens mee spelen. Voor een notificatie of er een nieuwe versie van HA beschikbaar is, kan het overigens nog een stuk simpeler. De HA entity “updater.updater” geeft een state change bij een nieuwe versie, met als payload het versie nummer. Dus volstaat:

Afbeeldingslocatie: https://i.imgur.com/gKkWTKv.jpg

Acties:
  • 0 Henk 'm!

  • KvNwPPr
  • Registratie: Februari 2014
  • Laatst online: 15:47
alexswart schreef op zondag 6 januari 2019 @ 22:47:
ik probeer om bepaalde waarde's van mqtt dmv nodered naar influxdb te sturen om ze dan in grafana in een grafiek te kunnen verwerken.
ik de mqtt node rechtstreeks aan de influxdb node gekoppeld maar helaas werkt dit niet er wordt geen waarde weggeschreven,
hoe doen jullie dit?
Waar gaat het mis? komt de MQTT data niet binnen of komt het niet in de influx database? Begin met debug nodes te plaatsen en test het zoals op het plaatje. Dan weet je wat voor data er naar influx wordt weg geschreven.

Afbeeldingslocatie: https://i.imgur.com/vXLKEwH.png

Acties:
  • 0 Henk 'm!

  • R0y.
  • Registratie: Juni 2010
  • Laatst online: 20:41
Ik kom er niet meer uit. Sinds een paar dagen gestart met NODE-red maar ik loop nu toch even vast. Misschien dat hier iemand mij weer op het juiste spoor krijgt.

Gewenste situatie:
Er hangt een sensor (Xiaomi) in de gang met twee spotjes (Ikea). Zo'n 30 minuten voordat de zon ondergaat zou ik willen dat die sensor pas er voor gaat zorgen dat de lampen aan gaan. Als de zon weer opkomt (na een offset van 30 minuten) hoeft de verlichting niet meer aan, want dan is er genoeg licht in de gang.

Dit is mijn huidige flow:
NODE-red

Sensor gang:
roept on of off aan de hand van beweging, heel de dag

Switch on/off:
on gaat naar output 1, off gaat naar output 2.

bigtimer sunset/sunrise:
Deze roept donker of licht a.d.h.v. de locatie en het tijdstip van de dag

Switch donker of licht:
Licht gaat naar output 1, donker gaat naar output 2

En vervolgens gebeurd er iets met de lampen. Waar het fout gaat is dat bigtimer een override krijgt van de sensor, of het nu het juiste tijdstip is of niet.

Node red export:
Heb mijn locatiegegevens even eruit gehaald :)
code:
1
[{"id":"96ad929f.75f71","type":"tab","label":"Gang beneden","disabled":false,"info":""},{"id":"2943fc60.0685ac","type":"api-call-service","z":"96ad929f.75f71","name":"Licht aan","server":"45d5ce31.884ca","service_domain":"light","service":"turn_on","data":"{\"entity_id\":\"light.gang_beneden\"}","render_data":false,"mergecontext":"","x":867,"y":90,"wires":[[]],"inputLabels":["on"]},{"id":"446b5874.ea5258","type":"api-call-service","z":"96ad929f.75f71","name":"Licht uit","server":"45d5ce31.884ca","service_domain":"light","service":"turn_off","data":"{\"entity_id\":\"light.gang_beneden\"}","render_data":false,"mergecontext":"","x":872,"y":226,"wires":[[]]},{"id":"3d577413.8396ac","type":"switch","z":"96ad929f.75f71","name":"on/off","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":255.5,"y":174,"wires":[["fc8b9f93.16659"],["446b5874.ea5258"]]},{"id":"94a6f852.fbd4a","type":"stoptimer","z":"96ad929f.75f71","duration":"125","units":"Second","payloadtype":"str","payloadval":"off","name":"","x":913.5,"y":148,"wires":[["446b5874.ea5258"],[]],"inputLabels":["on"],"outputLabels":["off","off"]},{"id":"11472dc.6eacdd2","type":"inject","z":"96ad929f.75f71","name":"uit","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":590.5,"y":225,"wires":[["446b5874.ea5258"]]},{"id":"ca71a8cd.3c3c38","type":"inject","z":"96ad929f.75f71","name":"aan","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":591,"y":91,"wires":[["2943fc60.0685ac"]]},{"id":"fc8b9f93.16659","type":"bigtimer","z":"96ad929f.75f71","outtopic":"","outpayload1":"licht","outpayload2":"donker","name":"sunset/sunrise","comment":"","lat":"XXXXXX","lon":"XXXXXX","starttime":"5004","endtime":"5003","startoff":"30","endoff":"30","offs":0,"outtext1":"licht","outtext2":"donker","timeout":1440,"sun":true,"mon":true,"tue":true,"wed":true,"thu":true,"fri":true,"sat":true,"jan":true,"feb":true,"mar":true,"apr":true,"may":true,"jun":true,"jul":true,"aug":true,"sep":true,"oct":true,"nov":true,"dec":true,"day1":0,"month1":0,"day2":0,"month2":0,"day3":0,"month3":0,"day4":0,"month4":0,"day5":0,"month5":0,"day6":0,"month6":0,"d1":0,"w1":0,"d2":0,"w2":0,"d3":0,"w3":0,"d4":0,"w4":0,"d5":0,"w5":0,"d6":0,"w6":0,"xday1":0,"xmonth1":0,"xday2":0,"xmonth2":0,"xday3":0,"xmonth3":0,"xday4":0,"xmonth4":0,"xday5":0,"xmonth5":0,"xday6":0,"xmonth6":0,"xd1":0,"xw1":0,"xd2":0,"xw2":0,"xd3":0,"xw3":0,"xd4":0,"xw4":0,"xd5":0,"xw5":0,"xd6":0,"xw6":0,"suspend":false,"random":false,"repeat":false,"atstart":true,"odd":false,"even":false,"x":433.5,"y":140.5,"wires":[["e9796cb6.058b"],[],[]]},{"id":"7909a723.46c0d8","type":"server-state-changed","z":"96ad929f.75f71","name":"sensor gang","server":"45d5ce31.884ca","entityidfilter":"binary_sensor.motion_sensor_158d0002b70ae0","entityidfiltertype":"substring","haltifstate":"","outputinitially":true,"x":106.5,"y":173,"wires":[["3d577413.8396ac"]]},{"id":"e9796cb6.058b","type":"switch","z":"96ad929f.75f71","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":670.5,"y":128,"wires":[["94a6f852.fbd4a","2943fc60.0685ac"],["446b5874.ea5258"]]},{"id":"45d5ce31.884ca","type":"server","z":"","name":"Home Assistant Hass","legacy":true,"hassio":true,"rejectUnauthorizedCerts":true}]

Acties:
  • +1 Henk 'm!

  • KvNwPPr
  • Registratie: Februari 2014
  • Laatst online: 15:47
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
Afbeeldingslocatie: https://discourse-cdn-sjc2.com/standard10/uploads/nodered/original/1X/6510e1165868c78c2e6117d3b6c84c1d30bd083d.png

Acties:
  • 0 Henk 'm!

  • Enzoz89
  • Registratie: Oktober 2018
  • Laatst online: 21-05 20:45
RobertMe schreef op maandag 14 januari 2019 @ 12:19:
[...]

Welke variant van de Node-REd Home Assistant addon heb je geïnstalleerd? Deze is in ieder geval momenteel het meest in ontwikkeling en werkt ook op basis van de authenticatie tokens van de recentere HA versies (waar de andere NR HA addons nog op basis van gebruikersnaam en wachtwoord werkten).
En tegen welke problemen loop je specifiek aan/wat wil niet lukken? Glazen bol staat helaas in de afwasmachine :/
als ik de Node-red uit de Community Hass.io Add-ons pak dat is versie V1.2.3
als ik deze installeer en dan

deze invul met mijn username en password doet hij het tot dat ik me hassio reboot en dan begin het gezeik.

{
"log_level": "info",
"credential_secret": "KJHhfdhiFRENCKfsdfdsDHFHDJS",
"http_node": {
"username": "MarryPoppins",
"password": "Supercalifragilisticexpialidocious"
},
"http_static": {
"username": "MarryPoppins",
"password": "Supercalifragilisticexpialidocious"
},
"port": 1880,
"ssl": true,
"certfile": "fullchain.pem",
"keyfile": "privkey.pem",
"require_ssl": true,
"system_packages": [
"ffmpeg"
],
"npm_packages": [
"node-red-admin"
],
"init_commands": [
"echo 'This is a test'",
"echo 'So is this...'"
]
}


vandaar dat ik dacht ik install raspbian-stretch op een andere pi en laat daar node red op draaien.
met versie 19.5

maar helaas krijg ik mijn Afbeeldingslocatie: https://gyazo.com/743f987d1eac80343065cbacc458240f

Acties:
  • 0 Henk 'm!

  • djkooij
  • Registratie: Juni 2001
  • Laatst online: 10:09

djkooij

voorheen Facemodder

Pfew... Ben inmiddels ook een klein beetje op weg met NR en ben erg positief over het hoe/wat.
Wel is het nog lastig om zaken te versimpelen binnen flows en het bepalen wat nu het beste waar kan worden geplaatst.
Simpele setup met Domoticz/MQTT/Node Red en wat meer nodig is.

Mijn enige "productie" flow tot nu toe met de nodige verbeterpunten, de rest zit nog binnen de Domoticz taal:
Afbeeldingslocatie: https://kooij.info/GoT/nodered2.jpg

Nog erg zoekende naar opties/mogelijkheden/etc. om zaken netter te structureren in flows/subflows etc.
Duik deze week nog maar wat meer in youtube howto's.
Ik lees echter met veel plezier dit topic, leerzaam en inspirerend.

fotospul


Acties:
  • +1 Henk 'm!
djkooij schreef op maandag 14 januari 2019 @ 18:37:
Pfew... Ben inmiddels ook een klein beetje op weg met NR en ben erg positief over het hoe/wat.
Wel is het nog lastig om zaken te versimpelen binnen flows en het bepalen wat nu het beste waar kan worden geplaatst.
Simpele setup met Domoticz/MQTT/Node Red en wat meer nodig is.

Mijn enige "productie" flow tot nu toe met de nodige verbeterpunten, de rest zit nog binnen de Domoticz taal:
[Afbeelding]

Nog erg zoekende naar opties/mogelijkheden/etc. om zaken netter te structureren in flows/subflows etc.
Duik deze week nog maar wat meer in youtube howto's.
Ik lees echter met veel plezier dit topic, leerzaam en inspirerend.
Elke keer als ik zulke flows voorbij zie komen denk ik bij mezelf, ik moet mijn 'verlichting-flow' opschonen :+
Afbeeldingslocatie: https://images.lolgast.nl/uploads/medium/93c9c6ea30bd5f31d8805ec8f21fec0c.png

Aan de andere kant, hij werkt wel 8)

Acties:
  • 0 Henk 'm!
Een eerste opzetje, maar ter lering en vermaak. En sta uiteraard open voor verbeteringen of andere denkwijzen
Afbeeldingslocatie: https://images.lolgast.nl/uploads/medium/538f51bafe895c3b414e2cdb80a0a560.png

Wat ik wil (lees; ik heb de onderdelen binnen maar moet het nog in elkaar knutselen) is een op de HX711 gebaseerde sensor om te controleren of we in bed liggen. Als we/een van ons dan in de nacht uit bed stappen, moet de lamp op de gang op 20% gaan branden totdat we beide weer in bed liggen, of de lamp uitschakelen met de Hue Tap aan de muur. Tot daar geen problemen, maar toen :+ Ik heb onze Hue Taps zo ingesteld dat ze vanuit de Hue bridge bij schakelen de status van daarvoor herpakken. Simpele toggle switch dus eigenlijk. Maar ik wil niet dat ze aangaan op 20% :9 Vandaar mijn bouwsel hierboven.

Stapt er iemand uit bed: lamp aan op 20% en de bovenste Traffic Light gaat aan. Stapt diegene weer in bed, gaat de bovenste Traffic Light uit. Perfect scenario, want daarin wordt de lamp op 65% (normaal) ingesteld en meteen daarna weer uit. Die oplichting naar 65% zie je niet eens.
Máár: Je stapt uit bed, lamp op 20% en zet de lamp uit met de Hue Tap. Lamp met de laatste status van 20%... In dit scenario staan beide Traffic Lights aan zodat bij het inschakelen van de lamp via de Hue Tap, de lamp alsnog op 65% gezet wordt. Dan gaat het bovenste Traffic Light weer off zodat in het vervolg bij gebruik van de Tap niet doelloos via NR ook nog geschakeld wordt

Acties:
  • 0 Henk 'm!

  • om3ega
  • Registratie: Maart 2001
  • Laatst online: 15:20
Beste Tweakers,

Kan iemand mij even een duw in de juiste richting geven?
Ik heb meerdere sensoren die ik via RFXCOM ontvang.

Middels een switch filter in de devices die van belang zijn (ik heb er nu maar even 1 in staan)

Ik wil alle informatie van de sensor zichtbaar maken op de MQTT broker.
Dat wil zeggen : temp, humidity , rssi en battery level.

Ik heb dat nu voor elkaar, maar iets zeg me dat dit handiger kan , maar niets zegt me hoe :)

Afbeeldingslocatie: https://i.imgur.com/5n8ajCV.png
Afbeeldingslocatie: https://i.imgur.com/9DmuM1z.png

Output MQTT

code:
1
2
3
4
huis/zolder/hobbykamer/thermometer/temperatuur 17.8
huis/zolder/hobbykamer/thermometer/vochtigheid 48
huis/zolder/hobbykamer/thermometer/rssi 7
huis/zolder/hobbykamer/thermometer/battery 9


Javascript code voor temperatuur

code:
1
2
3
4
5
var msg;
msg.topic = "huis/zolder/hobbykamer/thermometer/temperatuur";
msg.payload = msg.payload.temperature.value;

return msg;


Je begrijpt als ik zo 10 sensors hebt dat het wat veel wordt.. Kan dat makkelijker?
Het werkt wel zoals ik wil nu.

code:
1
[{"id":"61352ea5.47c678","type":"rfx-sensor","z":"38f87c94.b22264","name":"","port":"c40bfd14.07093","topicSource":"all","topic":"","x":140,"y":240,"wires":[["53cc56c9.91866"]]},{"id":"53cc56c9.91866","type":"switch","z":"38f87c94.b22264","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"TH3/0x8E01","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":370,"y":240,"wires":[["f06173c0.fb8678","5b9bb66b.ac894","3a5de362.4e5e8c","b608a22d.ea828"]]},{"id":"99b93f89.717cd8","type":"mqtt out","z":"38f87c94.b22264","name":"","topic":"","qos":"","retain":"","broker":"c775f8ff.0fb7b","x":850,"y":240,"wires":[]},{"id":"f06173c0.fb8678","type":"function","z":"38f87c94.b22264","name":"Temperatuur","func":"var msg;\nmsg.topic = \"huis/zolder/hobbykamer/thermometer/temperatuur\";\nmsg.payload = msg.payload.temperature.value;\n\nreturn msg;\n","outputs":1,"noerr":0,"x":590,"y":240,"wires":[["99b93f89.717cd8"]]},{"id":"5b9bb66b.ac894","type":"function","z":"38f87c94.b22264","name":"Vochtigheid","func":"var msg;\nmsg.topic = \"huis/zolder/hobbykamer/thermometer/vochtigheid\";\nmsg.payload = msg.payload.humidity.value;\nreturn msg;\n","outputs":1,"noerr":0,"x":590,"y":280,"wires":[["99b93f89.717cd8"]]},{"id":"3a5de362.4e5e8c","type":"function","z":"38f87c94.b22264","name":"rssi","func":"var msg;\nmsg.topic = \"huis/zolder/hobbykamer/thermometer/rssi\";\nmsg.payload = msg.status.rssi;\nreturn msg;\n","outputs":1,"noerr":0,"x":570,"y":320,"wires":[["99b93f89.717cd8"]]},{"id":"b608a22d.ea828","type":"function","z":"38f87c94.b22264","name":"battery","func":"var msg;\nmsg.topic = \"huis/zolder/hobbykamer/thermometer/battery\";\nmsg.payload = msg.status.battery;\nreturn msg;\n","outputs":1,"noerr":0,"x":580,"y":360,"wires":[["99b93f89.717cd8"]]},{"id":"c40bfd14.07093","type":"rfxtrx-port","z":"","port":"/dev/ttyUSB0","enableDebug":false,"rfyVenetianMode":"EU"},{"id":"c775f8ff.0fb7b","type":"mqtt-broker","z":"","name":"Broker mqtt","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthRetain":"false","birthPayload":"","closeTopic":"","closeQos":"0","closeRetain":"false","closePayload":"","willTopic":"","willQos":"0","willRetain":"false","willPayload":""}]


Hoe zouden jullie dit aanpakken? Of ben ik op de juiste weg?

Acties:
  • 0 Henk 'm!

  • KvNwPPr
  • Registratie: Februari 2014
  • Laatst online: 15:47
Enzoz89 schreef op vrijdag 18 januari 2019 @ 10:53:
kan iemand mij vertellen hoe ik in node-red met een puls schakkelaar 2 scenes kan maken.

bijvoorbeeld 1 keer klikken de aangesloten lamp aan of uit
dubbel klikken alles uit.

is dit mogelijk?
Het makkelijkste is via: ALL EVENTS > SCHAKELAAR > CLICK TYPE (single / double). En dan de light toggle functie in HA om het licht aan of uit te zetten. en double click verbinden light.turn_off in hass.

Helaas werkt die toggle functie niet meer via MQTT dus heb ik de COUNT node gebruikt (zie foto).
- Count 1 = AAN
- Count 2 = UIT
Na 2 keer klikken volgt er een reset en begint het weer met count 1.

Afbeeldingslocatie: https://i.imgur.com/wNRG5X1.png

Acties:
  • 0 Henk 'm!
@om3ega Als je die waardes nou zou joinen, zou je er 1 lange json van kunnen maken per kamer/sensor.
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/de9562a9da349df5c2c70ab2f8f0b9c0.png

Acties:
  • 0 Henk 'm!

  • om3ega
  • Registratie: Maart 2001
  • Laatst online: 15:20
Milmoor schreef op vrijdag 18 januari 2019 @ 13:07:
[...]

Als het te sturen bericht afleidbaar is uit de RFXcom output, dan kan je via JSONata in een Change node werken. Daar bouw je dan in msg.payload het bericht in op dat naar de MQTT broker gaat.
Ik heb dit geprobeerd via de "change" node, maar alleen de laatste payload wordt gestuurd.

Afbeeldingslocatie: https://i.imgur.com/q6vUTRA.png

Acties:
  • 0 Henk 'm!
Persoonlijke voorkeur denk ik. Ik kijk nog wel eens naar de MQTT broker via mqtt.fx en dan is het hebben van veel sensoren niet altijd even overzichtelijk. Voor de broker zelf maakt het qua performance denk ik weinig verschil.

De software die ik gebruik om de waardes weer te geven (Home Assistant) heeft weinig moeite met het uitlezen van de MQTT berichten via een json format, dus vandaar dat ik het zo doe.

Ik heb bijvoorbeeld ook een flow waar ik de kosten vanuit DSMR ophaal, daar de transportkosten overheen en die opnieuw publish naar MQTT Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/2c72c7b1d7ac2d19816079fc320c65d4.png Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/740b8c77ada125a11fec4645ae4c2679.png
JSON:
1
[{"id":"f2994c63.ffdd2","type":"mqtt-json","z":"65505814.c27b98","name":"","topic":"dsmr/day-totals","property":"","qos":"0","broker":"a0c390fa.b822a","x":140,"y":1248,"wires":[["be06b216.69997","3bf38ff.5801b7","12cce6dd.185f49","586e10e9.b7467"]]},{"id":"be06b216.69997","type":"change","z":"65505814.c27b98","name":"dal","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.electricity1_cost","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":1198,"wires":[["2773e051.4814b"]]},{"id":"3bf38ff.5801b7","type":"change","z":"65505814.c27b98","name":"piek","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.electricity2_cost","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":1248,"wires":[["493df107.a1255"]]},{"id":"12cce6dd.185f49","type":"change","z":"65505814.c27b98","name":"gas","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.gas_cost","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":1298,"wires":[["17c248a.c39d0b7"]]},{"id":"2773e051.4814b","type":"function","z":"65505814.c27b98","name":"Netwerkkosten","func":"let objDate = new Date();\nlet day = objDate.getDay();\nif (day >= 1 && day <= 5) {\n    msg.cost = (Number(msg.payload) + ((18.69*6)/365)).toFixed(2);\n} else {\n    msg.cost = (Number(msg.payload) + ((18.69*12)/365)).toFixed(2);\n}\nmsg.payload = \"{\\\"dal\\\":\" + \"\\\"\" + msg.cost + \"\\\"\"\nnode.status({text:\"€ \" + msg.cost});\nreturn msg;","outputs":1,"noerr":0,"x":510,"y":1198,"wires":[["4939e1a7.e7722"]]},{"id":"493df107.a1255","type":"function","z":"65505814.c27b98","name":"Netwerkkosten","func":"let objDate = new Date();\nlet day = objDate.getDay();\nif (day >= 1 && day <= 5){\n    msg.cost = (Number(msg.payload) + ((18.69*6)/365)).toFixed(2);\n} else {\n    msg.cost = (Number(msg.payload) + ((18.69*0)/365)).toFixed(2);\n}\nmsg.payload = \"\\\"piek\\\":\" + \"\\\"\" + msg.cost + \"\\\"\"\nnode.status({text:\"€ \" + msg.cost});\nreturn msg;","outputs":1,"noerr":0,"x":510,"y":1248,"wires":[["4939e1a7.e7722"]]},{"id":"17c248a.c39d0b7","type":"function","z":"65505814.c27b98","name":"Netwerkkosten","func":"msg.cost = (Number(msg.payload) + ((14.04*12)/365)).toFixed(2);\nmsg.payload = \"\\\"gas\\\":\" + \"\\\"\" + msg.cost + \"\\\"}\"\nnode.status({text:\"€ \" + msg.cost});\nreturn msg;","outputs":1,"noerr":0,"x":510,"y":1298,"wires":[["4939e1a7.e7722"]]},{"id":"4939e1a7.e7722","type":"join","z":"65505814.c27b98","name":"","mode":"custom","build":"string","property":"payload","propertyType":"msg","key":"topic","joiner":",","joinerType":"str","accumulate":false,"timeout":"","count":"3","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":710,"y":1248,"wires":[["bbe36ba5.203748"]]},{"id":"bbe36ba5.203748","type":"json","z":"65505814.c27b98","name":"","property":"payload","action":"","pretty":true,"x":840,"y":1248,"wires":[["dfb35b54.9f4498"]]},{"id":"dfb35b54.9f4498","type":"mqtt out","z":"65505814.c27b98","name":"","topic":"cost/today","qos":"","retain":"false","broker":"a0c390fa.b822a","x":1000,"y":1248,"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":""}]

Acties:
  • +1 Henk 'm!

  • Milmoor
  • Registratie: Januari 2000
  • Laatst online: 17:15

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.

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

Code

Rekeningrijden is onvermijdelijk, uitstel is struisvogelpolitiek.


Acties:
  • 0 Henk 'm!

  • Thoit
  • Registratie: Februari 2015
  • Laatst online: 16-05 08:37
Thoit schreef op vrijdag 28 december 2018 @ 12:22:
Helaas werkt mijn notificatie als de wasmachine klaar is niet meer. De SD kaart was volgelopen en had hierdoor de DB van HA verwijdert. Hierna kreeg ik alleen maar foutmeldingen in NR. Na NR helemaal verwijdert te hebben, en de back-up geïmporteerd te hebben werkte het helaas nog steeds niet. De nodes werden niet herkent. Hierdoor heb ik al mijn flows opnieuw moeten bouwen. Ik weet niet of het aan een update ligt, maar ik had voorheen een flow waarmee ik een melding kreeg dat als de vorige status > 10 watt was, en de huidige < 3 watt, stuur een bericht. Als de wasmachine klaar was, kreeg ik netjes één bericht. Nu blijf ik echter constant meldingen krijgen dat de wasmachine klaar is (om 30 seconden o.i.d.) omdat hij waarschijnlijk elke zoveel seconden de poll doet.

Ik heb dit topic al doorgespit en wat voorbeelden op internet bekeken, maar ik krijg het helaas niet voor elkaar. Iemand een idee wat er fout gaat?
code:
1
[{"id":"9c8bcfb.0830bb","type":"tab","label":"Flow 3","disabled":false,"info":""},{"id":"2a5a8446.fee69c","type":"stoptimer","z":"9c8bcfb.0830bb","duration":"30","units":"Second","payloadtype":"num","payloadval":"0","name":"","x":370,"y":280,"wires":[["e5a4a3f7.69aab8"],[]]},{"id":"a333dc0d.c6865","type":"trigger-state","z":"9c8bcfb.0830bb","name":"Verbruik Wasmachine","server":"3430792f.ba2096","entityid":"sensor.neo_coolcam_power_plug_12a_power","entityidfiltertype":"exact","debugenabled":false,"constraints":[{"id":"ba6126ff3cm","targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"<","comparatorValueDatatype":"str","comparatorValue":"3"},{"id":"f7cbcma2fn","targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":">","comparatorValueDatatype":"str","comparatorValue":"10"}],"constraintsmustmatch":"all","outputs":2,"customoutputs":[],"outputinitially":false,"state_type":"str","x":140,"y":280,"wires":[["2a5a8446.fee69c"],[]]},{"id":"e5a4a3f7.69aab8","type":"api-call-service","z":"9c8bcfb.0830bb","name":"Notificatie Wasmachine klaar","server":"3430792f.ba2096","service_domain":"notify","service":"iphones","data":"{\"title\": \"Wasmachine\", \"message\": \"Wasmachine is klaar\"}","render_data":false,"mergecontext":"","output_location":"payload","output_location_type":"msg","x":620,"y":280,"wires":[[]]},{"id":"3430792f.ba2096","type":"server","z":"","name":"Home Assistant"}]
Niemand met een voorbeeld van een wasmachine? Zo ziet de flow er momenteel uit, maar krijg nu na elke 5 minuten een bericht dat de wasmachine klaar is. Heb ook al geprobeerd om er een current state achter te zetten, waarmee ik hetzelfde probleem is. Vreemde is dat voor de crash van de PI dit vlekkenloos heeft gewerkt.

Afbeeldingslocatie: https://tweakers.net/ext/f/IuQhoCmLjAIIseVqYGW86Pa0/full.png

Acties:
  • +1 Henk 'm!

  • djkooij
  • Registratie: Juni 2001
  • Laatst online: 10:09

djkooij

voorheen Facemodder

Thoit schreef op dinsdag 22 januari 2019 @ 09:44:
[...]
Niemand met een voorbeeld van een wasmachine?
Zeker wel een voorbeeldje.
In mijn geval werk ik met de Power Monitor node:

Afbeeldingslocatie: https://kooij.info/GoT/wasmachine_flow.jpg


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

Werkt hier probleemloos met de wasmachine.

fotospul


Acties:
  • 0 Henk 'm!
@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'.Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/c905db3d914edb92001f87b2a76aa4f6.png
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"]]}]

Acties:
  • +1 Henk 'm!

  • Thoit
  • Registratie: Februari 2015
  • Laatst online: 16-05 08:37
ThinkPadd 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.

Afbeeldingslocatie: https://tweakers.net/ext/f/BfPhc6ECo93SQS2TUpQr81XZ/full.png

Acties:
  • 0 Henk 'm!
@Greetoz Ik doe het zo, afhankelijk van of het een MQTT switch is (die heeft geen output meer..) of een Hue lamp in mijn geval
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/7ac5eb762deb53d3a07e100a710c3d8a.png
MQTT
JSON:
1
[{"id":"dbd6fad5.3d3be8","type":"api-current-state","z":"ba68260d.f9c468","name":"","server":"39fd7a9b.252f86","halt_if":"","override_topic":true,"override_payload":true,"entity_id":"light.keukenspots","outputs":1,"x":640,"y":1820,"wires":[["cbb4a20.b9da06"]]},{"id":"d88efbff.fed218","type":"switch","z":"ba68260d.f9c468","name":"Restart?","property":"data.old_state","propertyType":"msg","rules":[{"t":"nnull"}],"checkall":"true","repair":false,"outputs":1,"x":410,"y":1820,"wires":[["dbd6fad5.3d3be8"]]},{"id":"cbb4a20.b9da06","type":"function","z":"ba68260d.f9c468","name":"toggle","func":"var sts = msg.payload;\nmsg.payload = \"\";\n\nif ( sts === \"off\" ) {\nmsg.payload = true;\nreturn [ msg, null ];\n\n} else if ( sts === \"on\" ) {\nmsg.payload = false;\nreturn [ null, msg ];\n\n} else {\nreturn [ null, null ];\n}","outputs":2,"noerr":0,"x":860,"y":1820,"wires":[["c7d16e21.b1994"],["c7d16e21.b1994"]],"outputLabels":["true","false"]},{"id":"69d4d0c5.24c85","type":"server-state-changed","z":"ba68260d.f9c468","name":"Achterdeur schakelaar 2","server":"39fd7a9b.252f86","entityidfilter":"switch.fibaro_achterdeur_switch_2","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"","halt_if_compare":"is","outputs":1,"x":220,"y":1820,"wires":[["d88efbff.fed218"]]},{"id":"c7d16e21.b1994","type":"mqtt out","z":"ba68260d.f9c468","name":"Keuken","topic":"cmnd/sonoffKeuken/power","qos":"0","retain":"false","broker":"a0c390fa.b822a","x":1070,"y":1820,"wires":[]}]
Hue
JSON:
1
[{"id":"580b8a6.b5be374","type":"function","z":"ba68260d.f9c468","name":"toggle","func":"var sts = flow.get(\"eettafel.status\");\nmsg.payload = \"\";\n\nif ( sts === true ) {\nmsg.payload.on = false;\nreturn [ msg, null ];\n\n} else if ( sts === false ) {\nmsg.payload.on = true;\nreturn [ null, msg ];\n\n} else {\nreturn [ null, null ];\n}","outputs":2,"noerr":0,"x":560,"y":1870,"wires":[["f472893b.f94b18"],[]],"outputLabels":["false","true"]},{"id":"6c04db89.395574","type":"switch","z":"ba68260d.f9c468","name":"restart?","property":"data.old_state","propertyType":"msg","rules":[{"t":"nnull"}],"checkall":"true","repair":false,"outputs":1,"x":410,"y":1870,"wires":[["580b8a6.b5be374"]]},{"id":"f472893b.f94b18","type":"hue-group","z":"ba68260d.f9c468","name":"Eettafel","bridge":"e9503c7a.ea5fe8","groupid":"1","colornamer":true,"x":770,"y":1870,"wires":[["55210f4a.516b1"]]},{"id":"3b59d7e2.e6e3e8","type":"server-state-changed","z":"ba68260d.f9c468","name":"Achterdeur schakelaar","server":"39fd7a9b.252f86","entityidfilter":"switch.fibaro_achterdeur_switch","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"","halt_if_compare":"is","outputs":1,"x":210,"y":1870,"wires":[["6c04db89.395574"]]},{"id":"55210f4a.516b1","type":"change","z":"ba68260d.f9c468","name":"","rules":[{"t":"set","p":"eettafel.status","pt":"flow","to":"payload.on","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1010,"y":1870,"wires":[[]]}]

Acties:
  • 0 Henk 'm!

  • Thoit
  • Registratie: Februari 2015
  • Laatst online: 16-05 08:37
Nee, hier zie ik alleen het volgende staan:

Afbeeldingslocatie: https://tweakers.net/ext/f/9LpzUkK4Y2PMgfQSEbIkGqN1/full.png

Enige state die ik in HA zie is de batterij status. Maar dat zou normaal gedrag moeten zijn.

Acties:
  • 0 Henk 'm!

  • ny-hardcore
  • Registratie: Maart 2002
  • Laatst online: 26-05 21:12
Thoit schreef op vrijdag 1 februari 2019 @ 08:41:
Nee, hier zie ik alleen het volgende staan:

[Afbeelding]

Enige state die ik in HA zie is de batterij status. Maar dat zou normaal gedrag moeten zijn.
Afbeeldingslocatie: https://tweakers.net/ext/f/dffJ8TSC6N5stXiCDe7dvYrY/thumb.png
Zou dat ding eens verwijderen en weer terug opnieuw koppelen.
Ik zie wel dat ik een een andere/oudere firmware(yymmdd) heb?

[ Voor 4% gewijzigd door ny-hardcore op 02-02-2019 07:57 ]

cd /pub && more beer


Acties:
  • +1 Henk 'm!

  • Greetoz
  • Registratie: Juni 2002
  • Laatst online: 14:46
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:

Afbeeldingslocatie: 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"}]

https://printcraft3d.nl Protect your BMW! https://BimmerNotify.app


Acties:
  • +1 Henk 'm!
@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.
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/3ab9e7351fe0105e03f25baafa9e9f0d.png
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.

Acties:
  • 0 Henk 'm!

  • djkooij
  • Registratie: Juni 2001
  • Laatst online: 10:09

djkooij

voorheen Facemodder

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"]]}]
Complimenten @lolgast voor je bijdrage in dit draadje, verbazingwekkend dat je zo snel en adequaat reageert.

On topic: Meer mensen die wat zoeken naar logica binnen NR? Ikzelf hou een soort van scripting logica aan qua flow opbouw, maar dat betekend ook dat er (relatief vaak) nodes opnieuw gemaakt worden met dezelfde taak. Voorbeeld:

Afbeeldingslocatie: https://kooij.info/GoT/nodered_flow_example3.jpg

Hoe lossen jullie dat op om het overzichtelijk en duidelijk te houden?

fotospul


Acties:
  • 0 Henk 'm!
Bedankt, ik kijk gewoon te vaak op Tweakers denk ik. Mijn vrouw zegt van wel in ieder geval :+

Bij mij zit er niet echt een systeem in de manier van opbouwen. Enige uitgangspositie die ik heb is dat ik probeer om het zonder zijwaarts te moeten scrollen in het overzicht wil houden. Maar dat houdt waarschijnlijk ook vanzelf op naarmate er meer zaken in komen. Ik heb nu meerdere tabjes. De ene is een bende en ziet er zo uitAfbeeldingslocatie: https://images.lolgast.nl/uploads/big/3ab9e7351fe0105e03f25baafa9e9f0d.png
En een andere zoAfbeeldingslocatie: https://images.lolgast.nl/uploads/big/d5ea4713277e095484705967f02417be.pngStaat hier beschreven trouwens: lolgast in "Node-RED - grafisch 'programmeren' (bijv. voor domotica)"

[ Voor 9% gewijzigd door lolgast op 10-02-2019 17:21 ]


Acties:
  • 0 Henk 'm!

  • Goudduif
  • Registratie: Juni 2004
  • Niet online
Momenteel lees ik de OpenTherm Gateway uit via Domoticz, en dat werkt goed.
Maar ik wil hem juist via Node-red laten werken..
De Opentherm GW heeft een Ethernet aansluiting, en Node-Red maakt verbinding via een TCP Connectie op poort 23.

TCP Telnet settings

JSON:
1
[{"id":"51c8c8c5.c3c088","type":"tab","label":"Flow 2","disabled":false,"info":""},{"id":"bf5a772b.13a2f8","type":"openthermdec","z":"51c8c8c5.c3c088","name":"Room Setpoint","x":754.25,"y":386.24999237060547,"wires":[["e7bab556.87a708","650cdf6d.2b5da"]]},{"id":"e7bab556.87a708","type":"debug","z":"51c8c8c5.c3c088","name":"","active":true,"console":"false","complete":"true","x":924.25,"y":452.24999237060547,"wires":[]},{"id":"c5186733.2c1f58","type":"otgwdec","z":"51c8c8c5.c3c088","name":"Room Setpoint","x":299.25,"y":393.24999237060547,"wires":[["b418f6f9.e35bd8","6f5b1770.1313b8"]]},{"id":"b418f6f9.e35bd8","type":"debug","z":"51c8c8c5.c3c088","name":"","active":false,"console":"false","complete":"true","x":453.25,"y":458.24999237060547,"wires":[]},{"id":"99384142.f55bb","type":"file","z":"51c8c8c5.c3c088","name":"","filename":"/opentherm.log","appendNewline":true,"createDir":true,"overwriteFile":"false","x":1145.25,"y":388.24999237060547,"wires":[[]]},{"id":"650cdf6d.2b5da","type":"function","z":"51c8c8c5.c3c088","name":"To CSV","func":"msg.payload =         msg.raw\n              + \",\" + msg.msgtype\n              + \",\" + msg.dataid\n              + \",\" + msg.datavalue\n              + \",\" + msg.topic\n              + \",\" + msg.payload;\nreturn msg;","outputs":1,"noerr":0,"x":967.25,"y":388.24999237060547,"wires":[["99384142.f55bb"]]},{"id":"6f5b1770.1313b8","type":"switch","z":"51c8c8c5.c3c088","name":"read ack/write ack/else","property":"msgtype","propertyType":"msg","rules":[{"t":"eq","v":"4","vt":"num"},{"t":"eq","v":"5","vt":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":507.25,"y":393.24999237060547,"wires":[["bf5a772b.13a2f8"],["bf5a772b.13a2f8"],[]]},{"id":"4be361d5.cbda6","type":"tcp in","z":"51c8c8c5.c3c088","name":"Room Setpoint","server":"client","host":"192.168.0.7","port":"23","datamode":"stream","datatype":"buffer","newline":"","topic":"Room Setpoint","base64":false,"x":109,"y":529,"wires":[["c5186733.2c1f58"]],"outputLabels":["9600N"]}]


Helaas krijg ik echter, alleen deze foutmeldingen

3-2-2019 22:06:26node: Room Setpoint
msg : string[38]
"Illegal message length 'SC: 22:06/3↵'"
13-2-2019 22:06:26node: Room Setpoint
msg : string[230]
"Illegal message length 'PR: G=11↵PR: I=00↵PR: O=T21.50↵PS: 1↵00000011/00001010,54.00,00000011/00000011,0.00,0/0,21.50,0.00,0.00,21.51,49.80,0.00,0.00,45.10,60/40,75/20,60.00,70.00,65535,65535,63296,65535,14798,18946,712,860↵'"


Helaas heb ik momenteel nog tekort kennis van Node-red, om hier uit te komen.
Hopelijk kan een van jullie mij duidelijk maken, hoe ik dit werkend kan krijgen?

Mogelijk met wat een wat uitgebreidere voorbeeld flow.

Acties:
  • 0 Henk 'm!

  • KvNwPPr
  • Registratie: Februari 2014
  • Laatst online: 15:47
DeadMetal schreef op zaterdag 9 februari 2019 @ 08:45:
[...]


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

Echter, de data die ik vanuit HA (PostNL sensor) krijg heeft dat element helemaal niet. Ik zie data -> attributes (object) -> shipments (array).
Het lijkt of er in HA iets is veranderd want ik zie wel dat er een pakket onderweg is maar bij shipments staat "[object Object]
In Node-Red werkt het wel.

In HA zie ik:
Afbeeldingslocatie: https://i.imgur.com/RXkiUzI.png

In node-red:
Afbeeldingslocatie: https://i.imgur.com/6EMX04s.png)

[ Voor 3% gewijzigd door KvNwPPr op 19-02-2019 19:17 ]


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 19:49
Klopt. Heb nu dit na de 'J:', maar krijg dan alleen 'undefined' terug.
JavaScript:
1
$flowContext('actual').stationmeasurements[stationid=6279].temperature


Afbeeldingslocatie: https://tweakers.net/ext/f/Gxi8KrwhVofoufGTyG7YcxYk/full.png

Ik heb het gevoel dat ik er bijna ben, maar kom helaas nog geen stap verder. Iemand nog een idee :?

Met Javascript ook nog even weer geprobeerd:
JavaScript:
1
2
3
4
5
6
7
8
var stations = msg.payload.actual.stationmeasurements;
for(var i = 0, numStations = stations.length; i < numStations; i++)
{
  if(stations[i].stationid == 6279)
  {
    return stations[i].stationname;
  }
}


Maar dan krijg ik een error: "Function tried to send a message of type string"

[ Voor 99% gewijzigd door ThinkPad op 20-02-2019 14:51 ]


Acties:
  • 0 Henk 'm!

  • Kaspers
  • Registratie: Juni 2004
  • Laatst online: 19-05 20:54
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
40
41
42
43
44
45
46
47
48
49
{
  "_msgid": "998d4536.ecad78",
  "topic": "",
  "payload": [
    [
      {
        "attributes": {
          "battery": 100,
          "device_class": "motion",
          "friendly_name": "Keuken",
          "last_seen": "2019-01-19T14:28:22.600Z",
          "linkquality": 31,
          "occupancy": false,
          "voltage": 3005
        },
        "context": {
          "id": "d54dc773dcde4684b02169cd2a3b7279",
          "user_id": null
        },
        "entity_id": "binary_sensor.0x00158d000223cbbf_occupancy",
        "last_changed": "2019-02-22T05:13:42.820000+00:00",
        "last_updated": "2019-02-22T05:13:42.820000+00:00",
        "state": "off"
      },
      {
        "attributes": {
          "battery": 100,
          "device_class": "motion",
          "friendly_name": "Keuken",
          "last_seen": "2019-01-19T14:28:22.600Z",
          "linkquality": 31,
          "occupancy": true,
          "voltage": 3005
        },
        "context": {
          "id": "f9d9aff6e7da42119f0ede3e7aff6d3b",
          "user_id": null
        },
        "entity_id": "binary_sensor.0x00158d000223cbbf_occupancy",
        "last_changed": "2019-02-22T08:28:20.362000+00:00",
        "last_updated": "2019-02-22T08:28:20.362000+00:00",
        "state": "on"
      }
    ]
  ],
  "startdate": "2019-02-22T05:13:42.820Z",
  "enddate": null,
  "entityid": "binary_sensor.0x00158d000223cbbf_occupancy"
}

Iemand enig idee waarom deze expressie geen resultaat oplevert:

Afbeeldingslocatie: https://imgur.com/9vfFkw0l.png

En deze wel:

Afbeeldingslocatie: https://imgur.com/CZPOBXMl.png

Als ik een index meegeef, werkt het overigens wel:
Afbeeldingslocatie: https://imgur.com/28GSB4gl.png

Ik was echter in de veronderstelling dat het niet meegeven van een index de gehele hele array zou moeten selecteren..

[ Voor 9% gewijzigd door Kaspers op 22-02-2019 17:47 ]


Acties:
  • 0 Henk 'm!

  • king_bass
  • Registratie: Januari 2005
  • Laatst online: 19:38
Zelf nu ook begonnen met het toepassen van Node-Red.
Ten eerste natuurlijk mijn Hue verlichting automatiseren.
Daarbij heb ik de volgende flow gecreëerd:

Norde-Red1

Wat ik me hier nog bij afvraag:
Kan dit zonder de check of mijn verlichting aan is of belast ik dan mijn hue teveel?
En ten tweede gebruik ik hierbij mijn trigger correct aangezien ik hier nu een changer heb voor heb toegevoegd die de status reset doorgeeft.

De delay van 1 seconde zit erin aangezien de bridge zoveel aansturing in 1 keer niet kan omzetten.

Code toegevoegd:
code:
1
[{"id":"345e9f65.87b2f","type":"hue-motion","z":"1aaf8bf7.c49224","name":"Hue motion sensor 2","bridge":"1cfa8d8d.2b8e4a","sensorid":"27","x":136,"y":90,"wires":[["eaf54167.7a0c7"]]},{"id":"89f72679.16dcd8","type":"hue-brightness","z":"1aaf8bf7.c49224","name":"Hue ambient light sensor 1","bridge":"1cfa8d8d.2b8e4a","sensorid":"11","x":150,"y":40,"wires":[["bbafe7db.2d579"]]},{"id":"eaf54167.7a0c7","type":"switch","z":"1aaf8bf7.c49224","name":"Movement?","property":"payload.motion","propertyType":"msg","rules":[{"t":"cont","v":"true","vt":"str"},{"t":"cont","v":"false","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":350,"y":100,"wires":[["bbafe7db.2d579","8d1851b.48cbdb"],["7e9e27ae.ad2f78"]]},{"id":"e4794c16.3695e8","type":"hue-motion","z":"1aaf8bf7.c49224","name":"Hue motion sensor 1","bridge":"1cfa8d8d.2b8e4a","sensorid":"10","x":136,"y":144,"wires":[["eaf54167.7a0c7"]]},{"id":"b29391b2.8abb78","type":"debug","z":"1aaf8bf7.c49224","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":910,"y":340,"wires":[]},{"id":"bbafe7db.2d579","type":"traffic","z":"1aaf8bf7.c49224","name":"Dark?","property_allow":"payload.dark","filter_allow":"true","ignore_case_allow":false,"negate_allow":false,"send_allow":false,"property_stop":"payload.dark","filter_stop":"false","ignore_case_stop":false,"negate_stop":false,"send_stop":false,"default_start":false,"differ":false,"x":350,"y":40,"wires":[["7e4668df.8316a"]]},{"id":"26f4c0f6.c08608","type":"hue-light","z":"1aaf8bf7.c49224","name":"Hue lightstrip plus 1","bridge":"1cfa8d8d.2b8e4a","lightid":"9","colornamer":true,"x":905.5,"y":72.79997253417969,"wires":[["7e4668df.8316a"]]},{"id":"7e4668df.8316a","type":"traffic","z":"1aaf8bf7.c49224","name":"Lamp aan?","property_allow":"payload.on","filter_allow":"false","ignore_case_allow":false,"negate_allow":false,"send_allow":false,"property_stop":"payload.on","filter_stop":"true","ignore_case_stop":false,"negate_stop":false,"send_stop":false,"default_start":false,"differ":false,"x":550,"y":40,"wires":[["5d4448f7.e97048"]]},{"id":"242b9c36.07267c","type":"hue-group","z":"1aaf8bf7.c49224","name":"Tv","bridge":"1cfa8d8d.2b8e4a","groupid":"2","colornamer":true,"x":950,"y":120,"wires":[[]]},{"id":"c61fd6d7.9ce0d","type":"hue-group","z":"1aaf8bf7.c49224","name":"Voor","bridge":"1cfa8d8d.2b8e4a","groupid":"3","colornamer":true,"x":950,"y":167,"wires":[[]]},{"id":"8809773d.c83c48","type":"hue-group","z":"1aaf8bf7.c49224","name":"Trap","bridge":"1cfa8d8d.2b8e4a","groupid":"4","colornamer":true,"x":950,"y":216,"wires":[[]]},{"id":"367d2c68.071e1c","type":"hue-group","z":"1aaf8bf7.c49224","name":"Woonkamer","bridge":"1cfa8d8d.2b8e4a","groupid":"1","colornamer":true,"x":930,"y":264,"wires":[[]]},{"id":"5d4448f7.e97048","type":"change","z":"1aaf8bf7.c49224","name":"Aan","rules":[{"t":"set","p":"payload","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":40,"wires":[["26f4c0f6.c08608","242b9c36.07267c","c61fd6d7.9ce0d","3711c7f4.d74388"]]},{"id":"3711c7f4.d74388","type":"delay","z":"1aaf8bf7.c49224","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":560,"y":100,"wires":[["8809773d.c83c48","367d2c68.071e1c"]]},{"id":"8d1851b.48cbdb","type":"change","z":"1aaf8bf7.c49224","name":"Reset","rules":[{"t":"set","p":"payload","pt":"msg","to":"reset","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":140,"wires":[["7e9e27ae.ad2f78"]]},{"id":"7e9e27ae.ad2f78","type":"trigger","z":"1aaf8bf7.c49224","op1":"","op2":"false","op1type":"nul","op2type":"bool","duration":"5","extend":false,"units":"min","reset":"reset","bytopic":"all","name":"","x":570,"y":160,"wires":[["b29391b2.8abb78","c22c83a8.69d46"]]},{"id":"c22c83a8.69d46","type":"change","z":"1aaf8bf7.c49224","name":"Uit","rules":[{"t":"set","p":"payload","pt":"msg","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":100,"wires":[["3711c7f4.d74388","26f4c0f6.c08608","242b9c36.07267c","c61fd6d7.9ce0d"]]},{"id":"1cfa8d8d.2b8e4a","type":"hue-bridge","z":"","name":"Philips hue","bridge":"192.168.0.100","key":"sMZn5MXxE7Eu-AvIvHEdE91Cx8MaBREndJBgLzc-","interval":"3000"}]

[ Voor 76% gewijzigd door king_bass op 10-03-2019 19:46 ]


Acties:
  • 0 Henk 'm!

  • Jlo88
  • Registratie: Augustus 2014
  • Laatst online: 28-01 06:10
Ik ben nu ook een tijdje met HA en node-red bezig en ik moet zeggen dat het me super bevalt! Sinds kort ondersteunt de zigbee2mqtt addon ook de ikea remote control. Ik heb deze nu succesvol gepaired en ik ben nu aan het proberen om een algemene subflow te maken waar deze remote wordt nagebootst.

Dit is wat ik tot nu toe gemaakt heb:

Afbeeldingslocatie: https://i.imgur.com/eYfi1Lo.png?1
code:
1
 [{"id":"89b2e43.9051118","type":"switch","z":"b7f02e99.81c44","name":"Parse","property":"payload","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":350,"y":180,"wires":[["a41971ba.31ca7"],["19fbce3c.72f872"],["d99599ee.909e28"],["28864d0f.820bb2"],["7b0adee.3e5262"]]},{"id":"a41971ba.31ca7","type":"api-call-service","z":"b7f02e99.81c44","name":"Toggle","server":"7919b5c7.98b45c","service_domain":"light","service":"toggle","data":"{\"entity_id\":\"{{data.entity_id}}\"}","mergecontext":"","output_location":"","output_location_type":"none","x":530,"y":80,"wires":[[]]},{"id":"95bdb06c.d8e93","type":"function","z":"b7f02e99.81c44","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":710,"y":140,"wires":[["20310ef.eb005f2"]]},{"id":"f66cc129.e0b09","type":"function","z":"b7f02e99.81c44","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":720,"y":200,"wires":[["20310ef.eb005f2"]]},{"id":"eb91116a.814af","type":"function","z":"b7f02e99.81c44","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":720,"y":320,"wires":[["20310ef.eb005f2"]]},{"id":"8b4d032a.7f867","type":"function","z":"b7f02e99.81c44","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":720,"y":260,"wires":[["20310ef.eb005f2"]]},{"id":"20310ef.eb005f2","type":"api-call-service","z":"b7f02e99.81c44","name":"Light","server":"7919b5c7.98b45c","service_domain":"light","service":"turn_on","data":"{\"entity_id\":\"{{data.entity_id}}\"}","mergecontext":"","output_location":"","output_location_type":"none","x":930,"y":140,"wires":[[]]},{"id":"46d22cf4.1fb614","type":"change","z":"b7f02e99.81c44","name":"Change entity","rules":[{"t":"set","p":"data.entity_id","pt":"msg","to":"light_entity","tot":"env"}],"action":"","property":"","from":"","to":"","reg":false,"x":180,"y":180,"wires":[["89b2e43.9051118"]]},{"id":"19fbce3c.72f872","type":"api-current-state","z":"b7f02e99.81c44","name":"Light","server":"7919b5c7.98b45c","outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":true,"entity_id":"light.panel_bathroom","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":530,"y":140,"wires":[["95bdb06c.d8e93"]]},{"id":"d99599ee.909e28","type":"api-current-state","z":"b7f02e99.81c44","name":"Light","server":"7919b5c7.98b45c","outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":true,"entity_id":"light.panel_bathroom","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":530,"y":200,"wires":[["f66cc129.e0b09"]]},{"id":"28864d0f.820bb2","type":"api-current-state","z":"b7f02e99.81c44","name":"Light","server":"7919b5c7.98b45c","outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":true,"entity_id":"light.panel_bathroom","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":530,"y":260,"wires":[["8b4d032a.7f867"]]},{"id":"7b0adee.3e5262","type":"api-current-state","z":"b7f02e99.81c44","name":"Light","server":"7919b5c7.98b45c","outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":true,"entity_id":"light.panel_bathroom","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":530,"y":320,"wires":[["eb91116a.814af"]]},{"id":"7919b5c7.98b45c","type":"server","z":"","name":"Home Assistant","legacy":false,"hassio":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open"}]


Dit werkt allemaal prima maar ik zou eigenlijk af willen van de definitie van het licht in de Light blokjes:

Afbeeldingslocatie: https://i.imgur.com/uqHVuHC.png?1

Het idee daar zou zijn om het entity_id te halen uit een globale variable die ik light_entity heb genoemd. In de call service blokjes is dit gelukt:

Afbeeldingslocatie: https://i.imgur.com/ewyKBNa.png?1

Helaas lukt dit in de get current state blokjes niet. Wanneer ik dat zo doe kan de entity id niet gevonden worden. Heeft iemand misschien een idee hoe dit te doen? :?

Ik zou het nog mooier vinden als ik de remote aan de ingang kan hangen en aan de uitgang een licht en dat ik geen globale variabele moet gebruiken maar ik heb geen idee hoe ik dit kan doen.. |:(

Acties:
  • 0 Henk 'm!
@Jlo88 :? Veel duidelijker gaat de uitleg toch niet worden volgens mij
Afbeeldingslocatie: https://images.lolgast.nl/uploads/big/620b27690127b58d279e2d1dc1fc0a2e.png

POC:
code:
1
[{"id":"e702f0ce.8e69a8","type":"api-current-state","z":"ba68260d.f9c468","name":"","server":"39fd7a9b.252f86","outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":590,"y":1810,"wires":[["42ef5f78.251a48"]]},{"id":"42ef5f78.251a48","type":"debug","z":"ba68260d.f9c468","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":850,"y":1730,"wires":[]},{"id":"5d1df3c4.bc1b6c","type":"change","z":"ba68260d.f9c468","name":"","rules":[{"t":"delete","p":"payload","pt":"msg"},{"t":"set","p":"payload.entity_id","pt":"msg","to":"light.bank","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":270,"y":1790,"wires":[["e702f0ce.8e69a8"]]},{"id":"6e91c734.8e3848","type":"inject","z":"ba68260d.f9c468","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":280,"y":1900,"wires":[["5d1df3c4.bc1b6c"]]}]

[ Voor 77% gewijzigd door lolgast op 14-03-2019 16:40 ]


Acties:
  • 0 Henk 'm!

  • GAEvakYD
  • Registratie: Juni 2001
  • Laatst online: 13:27
Vraag. Ik heb een groot deel van mijn huis automatisering met Node-Red geautomatiseerd. Nu heb ik iets vaags waar ik maar niet kom, ook niet met Google als vriend.

Ik gebruik een simpele input_select om de WTW snelheid te sturen. Die input_select zit aan een andere flow gekoppeld die een 0-10v uitgang richting de WTW stuurt. Dit werkt top, en als ik handmatig de input_select verander werkt dat mooi.

Nu heb ik een flow die de luchtvochtigheid in de badkamer uitleest en op basis daarvan de WTW harder /zachter moet zetten. Ik heb alleen een probleem met het kiezen van een Option voor de Input_select. Ik krijg een error dat ik geen Option Key mag meegeven aan de Call. "extra keys not allowed @ data['Option']"
Afbeeldingslocatie: https://ordelman.org/nodered_error.png

Op Internet vond ik mensen die aangaven dat ik mogelijk last had van andere attributen of gevulde payload van nodes ervoor. Dus heb ik de payload etc leeggemaakt maar ik houd dezelfde fout.

Iemand een idee wat ik hier nou fout doe?

Lekker duurzaam. Skoda Enyaq EV - First edtion, Alpha Innotec Brine warmtepomp (MSW2-6S), Totaal 12135 Wp aan Zonnepanelen geïnstalleerd.

Pagina: 1 2 ... 7