[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]
Welk type de PIR is maakt natuurlijk niet zoveel uit. Waar je rekening mee moet houden is dat je alleen de On / 1 / true message door laat gaan naar de trigger node. Dat is dan ook in mijn voorbeeld de switch node direct na mijn sensor.Sp33dFr34k schreef op vrijdag 17 april 2020 @ 13:03:
[...]
Mijn PIR is zwave, ik heb al eens met die trigger lopen klooien, maar kreeg het niet direct werkend.
Als de trigger node zowel de aan als uit message ontvangt zal je lamp te lang gaan branden. In jouw geval zou het licht dan nog 60 seconde aanblijven nadat de PIR doorgeeft dat hij geen beweging meer ziet. Kan niet echt kwaad, maar dat is niet de functionaliteit die je wilt
@Sebazzz Ik ken Kodi niet, maar ik zie wel dat er een MQTT plugin voor is met o.a. dit als mogelijkheid:
Dat maakt het natuurlijk eenvoudig om bij een verandering van msg.connected 2 naar msg.connected 0 met een delay het licht uit te doenThe addon publishes on the following topics (prefixed with the configured topic prefix):
connected: 2 if the addon is currently connected to the broker, 0 otherwise.
edit: of, als je geen MQTT wil gebruiken: node-red-contrib-kodi die via de kodi.out node bij system.onQuit een JSON ontvangt waar je mee aan de slag kunt.
Meerdere opties dus, zonder powershell.
[ Voor 40% gewijzigd door Gizz op 17-04-2020 13:22 ]
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Ik haal de kodi status uit home assistant.Sebazzz schreef op vrijdag 17 april 2020 @ 13:10:
Ik wil graag dat als ik 's avonds mijn HTPC (Kodi) uitschakel het licht na een korte tijd uitgaat. Ik weet echter niet hoe ik ervoor kan zorgen dat ik een trigger kan krijgen bij het uitschakelen van Kodi of OS (Windows).
Tenminste, ik kan natuurlijk een Powershell scriptje draaien bij shutdown - maar ik vraag mij af of er iets ingebouwd danwel via een plugin te krijgen is wat beter is uitgedacht?
Nice, ik had hier al eens naar gekeken, maar zag mijn PIR nooit voorbij komen in de eindeloze stroom van gegevens. Nu net heb ik hem een keer gezien, nu eens zien dat mijn flow dat ook doetGizz schreef op vrijdag 17 april 2020 @ 09:42:
@wervisser Dat kun je heel simpel doen door MQTT te gebruiken. Domoticz stuurt dan alle sensoren / switches / noem maar op door naar je MQTT-broker, die het weer doorstuurt naar Node-RED. In Node-RED haal je dan de data van Domoticz binnen (domoticz/out) en gooit daar een filter achter om 1 specifiek apparaat door te laten gaan in je flow. Meer is het niet
Je had iets verder moeten scrollen, dan zag je dat ik al een antwoord had gegevenRepi3 schreef op vrijdag 17 april 2020 @ 12:39:
[...]
Laat je hier iets weten, ik wil namelijk hetzelfde doen ook met een Bose Soundtouch
Maar het werkt dus prima. De wifi van de SoundTouch lijkt alleen niet heel stabiel. Daardoor werkt het soms niet. Ik heb 'm nog een beetje aangepast. O.a. een node die checkt of er een switch in HomeAssistant is ingeschakeld (wel/geen radio bij de wake-up light).
Dit is de code voor de radio.
1
| [{"id":"19cb4c1d.716d9c","type":"delay","z":"2769e554.9b801a","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":860,"y":400,"wires":[["7a461030.0e0a9"]]},{"id":"e2f7498f.894e18","type":"delay","z":"2769e554.9b801a","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1200,"y":400,"wires":[["21a42270.578b8e"]]},{"id":"b4f5d282.ce83b","type":"api-call-service","z":"2769e554.9b801a","name":"Volume 1%","server":"a4b021fc.a9221","version":1,"debugenabled":false,"service_domain":"media_player","service":"volume_set","entityId":"media_player.zanger_rinus","data":"{\"volume_level\":0.01}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":690,"y":400,"wires":[["19cb4c1d.716d9c"]]},{"id":"9a235e3d.fbf998","type":"delay","z":"2769e554.9b801a","name":"","pauseType":"delay","timeout":"10","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":520,"y":400,"wires":[["b4f5d282.ce83b"]]},{"id":"21a42270.578b8e","type":"api-call-service","z":"2769e554.9b801a","name":"Unmute","server":"a4b021fc.a9221","version":1,"debugenabled":false,"service_domain":"media_player","service":"volume_mute","entityId":"media_player.zanger_rinus","data":"{\"is_volume_muted\":false}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1360,"y":400,"wires":[["29ba54e2.df9644"]]},{"id":"29ba54e2.df9644","type":"change","z":"2769e554.9b801a","name":"1","rules":[{"t":"set","p":"payload","pt":"msg","to":"1","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1510,"y":400,"wires":[["2093e3ed.22077c"]]},{"id":"b33e79f7.0e1cd8","type":"api-call-service","z":"2769e554.9b801a","name":"Volume","server":"a4b021fc.a9221","version":1,"debugenabled":false,"service_domain":"media_player","service":"volume_set","entityId":"media_player.zanger_rinus","data":"{\"volume_level\":{{payload}}}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":2100,"y":400,"wires":[[]]},{"id":"7a461030.0e0a9","type":"api-call-service","z":"2769e554.9b801a","name":"Start playing","server":"a4b021fc.a9221","version":1,"debugenabled":false,"service_domain":"media_player","service":"play_media","entityId":"media_player.zanger_rinus","data":"{\"media_content_type\":\"music\",\"media_content_id\":\"2\"}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1030,"y":400,"wires":[["e2f7498f.894e18"]]},{"id":"34950a07.b376f6","type":"link in","z":"2769e554.9b801a","name":"","links":["ccaaa063.f41eb"],"x":75,"y":400,"wires":[["9d4c25bd.1aa408"]]},{"id":"82b0b5ff.78cfc","type":"comment","z":"2769e554.9b801a","name":"Radio","info":"","x":110,"y":340,"wires":[]},{"id":"9d4c25bd.1aa408","type":"api-current-state","z":"2769e554.9b801a","name":"Enabled?","server":"a4b021fc.a9221","version":1,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"input_boolean.house_alarmclock_radio","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":200,"y":400,"wires":[["62e25df8.616fec"],[]]},{"id":"62e25df8.616fec","type":"api-current-state","z":"2769e554.9b801a","name":"Off?","server":"a4b021fc.a9221","version":1,"outputs":2,"halt_if":"playing","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"media_player.zanger_rinus","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":350,"y":400,"wires":[[],["9a235e3d.fbf998"]]},{"id":"2093e3ed.22077c","type":"function","z":"2769e554.9b801a","name":"Volume 1 hoger","func":"newmsg = {};\nvolume = msg.payload;\n\nif (volume < 25)\n{\n volume = volume + 1;\n newmsg.payload = volume;\n return newmsg;\n}","outputs":1,"noerr":0,"x":1700,"y":400,"wires":[["f7a87156.16c628","f36e4e85.ccf4c8"]]},{"id":"f7a87156.16c628","type":"delay","z":"2769e554.9b801a","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1700,"y":320,"wires":[["2093e3ed.22077c"]]},{"id":"f36e4e85.ccf4c8","type":"function","z":"2769e554.9b801a","name":"Delen door 100","func":"newmsg = {};\nvolume = msg.payload;\nvolume = volume / 100;\nnewmsg.payload = volume;\nreturn newmsg;","outputs":1,"noerr":0,"x":1920,"y":400,"wires":[["b33e79f7.0e1cd8"]]},{"id":"a4b021fc.a9221","type":"server","z":"","name":"Home Assistant Manetheren","legacy":false,"addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}] |
AdGuard heeft een REST API die je kunt gebruiken om data op te vragen, maar ook om AdGuard volledig mee in te stellen. Dat beidt dus opties voor het synchroniseren van 2 instances. En daar is onderstaande uit voortgekomen.

Het belangrijkste is de 'Adguard-# Filter Stats'. Deze haalt o.a. een lijst met door mij met de hand (un)blocked domeinen op. Die lijst moet natuurlijk gelijk zijn met de tweede instance, om problemen te voorkomen als onze devices van DNS server wisselen. Daarom controleer ik op wijzigingen en als die zijn gevonden formatteert hij de data en stuurt dit vervolgens naar de andere instance. Maakt niet uit op welke van de 2 instances de wijziging plaatsvind. Ik haal elke minuut de gegevens op en stuur die naar een MQTT topic. Die topics worden uitgelezen om de wijzigingen te detecteren. Hierdoor kan ik de data inlezen in meerdere systemen en ben ik niet afhankelijk van de eenmalige actie
Node-RED code: https://pastebin.com/3hGs7DSF. Ik kon hem niet in deze post doen, een post heeft blijkbaar een limiet van 75000 karakter
Yes! PIR -> Switch -> Trigger -> On or OffGizz schreef op vrijdag 17 april 2020 @ 12:39:
@Sp33dFr34k Dit kan heel simpel met een trigger node. Voorbeeldje van het licht in mijn keuken:
[Afbeelding]
[Afbeelding]
code:
1 [{"id":"8502368f.aee2c","type":"tab","label":"Licht keuken pir","disabled":false,"info":""},{"id":"8293822d.8f769","type":"mqtt in","z":"8502368f.aee2c","name":"","topic":"ESP_fijnstof/pir/State","qos":"2","datatype":"json","broker":"c9b2091b.ca27b8","x":200,"y":240,"wires":[["5aaed5e9.93fd94"]]},{"id":"5aaed5e9.93fd94","type":"switch","z":"8502368f.aee2c","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":370,"y":240,"wires":[["186622a9.4fd965"]]},{"id":"829b18d8.d63ca8","type":"template","z":"8502368f.aee2c","name":"dmz","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"command\": \"switchlight\", \"idx\": 319, \"switchcmd\": \"{{payload}}\"}","output":"json","x":670,"y":240,"wires":[["3004aefd.0e5002"]]},{"id":"3004aefd.0e5002","type":"mqtt out","z":"8502368f.aee2c","name":"","topic":"domoticz/in","qos":"","retain":"","broker":"c9b2091b.ca27b8","x":830,"y":240,"wires":[]},{"id":"186622a9.4fd965","type":"trigger","z":"8502368f.aee2c","op1":"On","op2":"Off","op1type":"str","op2type":"str","duration":"30","extend":true,"units":"s","reset":"","bytopic":"all","name":"","x":510,"y":240,"wires":[["829b18d8.d63ca8"]]},{"id":"c9b2091b.ca27b8","type":"mqtt-broker","z":"","name":"","broker":"192.168.1.2","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"15","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]
Ik weet niet precies hoe jouw Closet On / Off nodes werken, maar als je die niet direct kunt aansturen op basis van de msg kun je na de trigger natuurlijk meteen een switch node plaatsen. In het geval van msg = On leidt de route naar de Closet On node, bij msg = Off naar de Closet Off node. Het kan dus super simpel, zoals je terecht inschatte
Ik heb wel mijn z-wave PIR nog aangepast qua configuration parameters, deze had een lange motion time (bleef 30 seconden op ON hangen, nu 5 wat het minimum is) en een lange blind spot time (8 sec, nu 1).
Het enige probleem nu nog is dat de PIR soms op ON blijft hangen for whatever reason, misschien net het bereik niet lekker genoeg. Maar ik ben hier alvast blij mee, thanks!
i7 9700k + Be-Quiet Dark Rock 4 Pro | Gigabyte Z390 Aorus Ultra | Gigabyte Aorus GTX1080TI | Samsung 970 Pro 512GB + 860 EVO 1TB | 2x8GB DDR4 3000Mhz | Seasonic Platinum 660W | Fractal Design R6 | Acer Predator X34P | M-Audio AV40
Ik heb er nu niks aan, maar in de toekomst wellicht wel.lolgast schreef op zondag 19 april 2020 @ 22:07:
Aangezien Pi-hole oud nieuws is, ben ik overgestapt op AdGuard Home. Mijn flow hierboven ligt dus in de kliko
AdGuard heeft een REST API die je kunt gebruiken om data op te vragen, maar ook om AdGuard volledig mee in te stellen. Dat beidt dus opties voor het synchroniseren van 2 instances. En daar is onderstaande uit voortgekomen.
[Afbeelding]
Het belangrijkste is de 'Adguard-# Filter Stats'. Deze haalt o.a. een lijst met door mij met de hand (un)blocked domeinen op. Die lijst moet natuurlijk gelijk zijn met de tweede instance, om problemen te voorkomen als onze devices van DNS server wisselen. Daarom controleer ik op wijzigingen en als die zijn gevonden formatteert hij de data en stuurt dit vervolgens naar de andere instance. Maakt niet uit op welke van de 2 instances de wijziging plaatsvind. Ik haal elke minuut de gegevens op en stuur die naar een MQTT topic. Die topics worden uitgelezen om de wijzigingen te detecteren. Hierdoor kan ik de data inlezen in meerdere systemen en ben ik niet afhankelijk van de eenmalige actie
Node-RED code: https://pastebin.com/3hGs7DSF. Ik kon hem niet in deze post doen, een post heeft blijkbaar een limiet van 75000 karakter
Als ik een debug op de eerste node zet, zie ik wel de PIR voorbij komen, maar hij schakelt er niet op. Wat kan ik hier fout hebben gedaan?
1
| [{"id":"6b97d2e7.7be05c","type":"tab","label":"Flow 5","disabled":false,"info":""},{"id":"beef97af.67af18","type":"mqtt in","z":"6b97d2e7.7be05c","name":"","topic":"domoticz/out","qos":"2","datatype":"auto","broker":"5d933108.daf91","x":70,"y":140,"wires":[["ee5f28a4.c95fe8"]]},{"id":"ee5f28a4.c95fe8","type":"switch","z":"6b97d2e7.7be05c","name":"Zolder PIR","property":"payload.idx","propertyType":"msg","rules":[{"t":"eq","v":"251","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":270,"y":140,"wires":[["fd5b8bf.ba89e78"]]},{"id":"fd5b8bf.ba89e78","type":"trigger","z":"6b97d2e7.7be05c","op1":"On","op2":"Off","op1type":"str","op2type":"str","duration":"30","extend":true,"units":"s","reset":"","bytopic":"all","name":"","x":490,"y":140,"wires":[["b44910ab.d397d"]]},{"id":"b44910ab.d397d","type":"template","z":"6b97d2e7.7be05c","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"command\": \"switchlight\", \"idx\": 251, \"switchcmd\": \"{{payload}}\"}","output":"str","x":700,"y":140,"wires":[["5e6a35cc.8f163c"]]},{"id":"5e6a35cc.8f163c","type":"mqtt out","z":"6b97d2e7.7be05c","name":"","topic":"domoticz/in","qos":"","retain":"","broker":"5d933108.daf91","x":890,"y":140,"wires":[]},{"id":"5d933108.daf91","type":"mqtt-broker","z":"","name":"Domoticz Master","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"15","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""}] |
Nu 'schakelt' de PIR zichzelf in (wat niet kan) als hij beweging waarneemt.
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Ah ja, sorry verkeerde stukje gekopieerd. In mijn volledige flow staat hij (nu) wel goed, maar reageert er niet op. De volledige flow heeft meerdere PIRs staan, maar ik heb de regel er gelijkwaardig in gezet.Gizz schreef op woensdag 22 april 2020 @ 13:30:
@wervisser Je hebt bij het signaal van je PIR als idx 251 staan, maar vervolgens zet je ook idx 251 aan als lamp. Dus of je PIR is niet 251 en die moet je aanpassen, of je schakelaar / lamp is niet 251 maar wat anders
Nu 'schakelt' de PIR zichzelf in (wat niet kan) als hij beweging waarneemt.
Met behulp van MQTT Explorer en heel veel geduld heb ik onderstaande informatie eruit gevist. Dit wordt verstuurd na een bewegingsmelding van de PIR.
{
"Battery" : 100,
"RSSI" : 12,
"description" : "",
"dtype" : "Light/Switch",
"hwid" : "2",
"id" : "00001000",
"idx" : 251,
"name" : "Zolder hal PIR sensor",
"nvalue" : 0,
"stype" : "Switch",
"svalue1" : "0",
"switchType" : "Motion Sensor",
"unit" : 1
}
De idx vang ik wel af, denk ik, maar de inschakelwaardes voor de lamp kloppen dan niet. Althans de lamp gaat niet aan.
Heb hem nu even zo gemaakt.
1
| [{"id":"fe60501c.0b15a","type":"tab","label":"PIR","disabled":false,"info":""},{"id":"eefb287e.2b6838","type":"mqtt in","z":"fe60501c.0b15a","name":"","topic":"domoticz/out","qos":"2","datatype":"auto","broker":"5d933108.daf91","x":90,"y":200,"wires":[["46ca5a07.270d84","eef8e0da.626e5"]]},{"id":"46ca5a07.270d84","type":"switch","z":"fe60501c.0b15a","name":"Zolder PIR","property":"payload.idx","propertyType":"msg","rules":[{"t":"eq","v":"251","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":290,"y":343,"wires":[["67e1d867.125aa8","bf99559.52f44a8"]]},{"id":"73dc865.e6d8378","type":"telegram sender","z":"fe60501c.0b15a","name":"","bot":"9bf5890a.0d72e8","x":572,"y":187,"wires":[[]]},{"id":"bf99559.52f44a8","type":"function","z":"fe60501c.0b15a","name":"Telegram bericht","func":"msg.payload = {}\nmsg.payload.chatId = '719721025'\nmsg.payload.type = 'message'\nmsg.payload.content = 'zolder'\nreturn msg;","outputs":1,"noerr":0,"x":342,"y":244,"wires":[["73dc865.e6d8378"]]},{"id":"eef8e0da.626e5","type":"switch","z":"fe60501c.0b15a","name":"BGG PIR","property":"payload.idx","propertyType":"msg","rules":[{"t":"eq","v":"276","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":280,"y":56,"wires":[["a7a8362b.bfa9a8","feea5bf2.4e1d58"]]},{"id":"feea5bf2.4e1d58","type":"function","z":"fe60501c.0b15a","name":"Telegram bericht","func":"msg.payload = {}\nmsg.payload.chatId = '719721025'\nmsg.payload.type = 'message'\nmsg.payload.content = 'BGG'\nreturn msg;","outputs":1,"noerr":0,"x":341,"y":136,"wires":[["73dc865.e6d8378"]]},{"id":"a7a8362b.bfa9a8","type":"trigger","z":"fe60501c.0b15a","op1":"On","op2":"Off","op1type":"str","op2type":"str","duration":"30","extend":true,"units":"s","reset":"","bytopic":"all","name":"","x":550,"y":136,"wires":[["187a25a3.efc3ca"]]},{"id":"187a25a3.efc3ca","type":"template","z":"fe60501c.0b15a","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"command\": \"switchlight\", \"idx\": 27, \"switchcmd\": \"{{payload}}\"}","output":"str","x":733,"y":140,"wires":[["f5761832.936228","1d93253d.03629b"]]},{"id":"7bb0444b.4dcc4c","type":"template","z":"fe60501c.0b15a","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"command\": \"switchlight\", \"idx\": 251, \"switchcmd\": \"{{payload}}\"}","output":"str","x":733,"y":240,"wires":[["f5761832.936228","1d93253d.03629b"]]},{"id":"67e1d867.125aa8","type":"trigger","z":"fe60501c.0b15a","op1":"On","op2":"Off","op1type":"str","op2type":"str","duration":"30","extend":true,"units":"s","reset":"","bytopic":"all","name":"","x":551,"y":243,"wires":[["7bb0444b.4dcc4c"]]},{"id":"f5761832.936228","type":"mqtt out","z":"fe60501c.0b15a","name":"","topic":"domoticz/in","qos":"","retain":"","broker":"5d933108.daf91","x":923,"y":180,"wires":[]},{"id":"1d93253d.03629b","type":"debug","z":"fe60501c.0b15a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":940,"y":380,"wires":[]},{"id":"5d933108.daf91","type":"mqtt-broker","z":"","name":"Domoticz Master","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"15","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"9bf5890a.0d72e8","type":"telegram bot","z":"","botname":"Domo181_bot","usernames":"","chatids":"","baseapiurl":"","updatemode":"polling","pollinterval":"300","usesocks":false,"sockshost":"","socksport":"6667","socksusername":"anonymous","sockspassword":"","bothost":"","localbotport":"8443","publicbotport":"8443","privatekey":"","certificate":"","useselfsignedcertificate":false,"sslterminated":false,"verboselogging":false}] |
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Stukje uitleg: ik denk dat nu alles van domoticz/out als tekst (dus een lange zin) in je flow terecht komt als msg.payload. Er is dan geen nette JSON structuur waarin msg.payload.idx bestaat, terwijl je die juist nodig hebt voor je filter. Dus in dit geval gaat er in je flow niks door na je filters en dan stopt de boel.
Soms helpt het om wat meer debug nodes toe te voegen, zodat je na elk stapje kunt checken wat er nou eigenlijk qua data doorgaat.
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Wat ik wil is dat elke 2 weken op vrijdag, startend morgen, de flow wordt afgevuurd. Iemand een idee?
EDIT: ik mis gewoon dagen en weken in cron, met dit 0 7 * * 5 wordt het elke week op de vrijdag.
[ Voor 12% gewijzigd door Sp33dFr34k op 23-04-2020 13:15 ]
i7 9700k + Be-Quiet Dark Rock 4 Pro | Gigabyte Z390 Aorus Ultra | Gigabyte Aorus GTX1080TI | Samsung 970 Pro 512GB + 860 EVO 1TB | 2x8GB DDR4 3000Mhz | Seasonic Platinum 660W | Fractal Design R6 | Acer Predator X34P | M-Audio AV40
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
@Sp33dFr34k Ik denk dat ik het in een function zou oplossen. Functie om te zoeken naar oneven/even weken en daar op voortborduren
1
2
3
4
5
6
7
8
9
10
11
12
13
| Date.prototype.getWeek = function() { var onejan = new Date(this.getFullYear(),0,1); return Math.ceil((((this - onejan) / 86400000) + onejan.getDay()+1)/7); } var weekNumber = new Date().getWeek(); if (weekNumber % 2 === 0){ msg.payload = 'Even week' return msg; } else { msg.payload = 'Oneven week' return [null,msg]; } |
Als je je function node 2 Outputs geeft krijgt elke uitslag zijn eigen uitgang
Dna heb je ook gelijk error handling uitgevoerd door de tijd enkel aan te passen wanneer de actie geslaagd is.
SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N
Je kunt het zo oplossen, je zal een dan wel een dag mee moeten geven waar ie start. Weet niet wat er dan gebeurd als node-red restart. Dan zou je dat ook automatisch kunnen injecten bij start, maar goed je werkt dan om het "probleem" heen. Of in combi met de suggestie hierboven.Sp33dFr34k schreef op donderdag 23 april 2020 @ 13:08:
Ok nieuwe, ik wil elke 2 weken een reminder afvuren in Pushover. Nu zit ik te klooien met cronplus, dat zou de beste oplossing moeten zijn volgens google. Maar elke 2 weken schijnt een probleem te zijn in crontab over het algemeen.
Wat ik wil is dat elke 2 weken op vrijdag, startend morgen, de flow wordt afgevuurd. Iemand een idee?
EDIT: ik mis gewoon dagen en weken in cron, met dit 0 7 * * 5 wordt het elke week op de vrijdag.
:strip_exif()/f/image/YR9WeZzyGDtmK2qN4Pa3Ktve.jpg?f=fotoalbum_large)
@lolgast denk dat jouw manier de beste is, heb nog nooit iets in een functie geknutseld in node-red, dus ga het eens proberen, thanks!
i7 9700k + Be-Quiet Dark Rock 4 Pro | Gigabyte Z390 Aorus Ultra | Gigabyte Aorus GTX1080TI | Samsung 970 Pro 512GB + 860 EVO 1TB | 2x8GB DDR4 3000Mhz | Seasonic Platinum 660W | Fractal Design R6 | Acer Predator X34P | M-Audio AV40
Nee elke 14 dagen en de start is dan op 24e, daar zit dan wel een issue, als je node-red/flow restart/deployed dan zal ie weer beginnen bij de 24e dat werkt dan niet lekker.Sp33dFr34k schreef op vrijdag 24 april 2020 @ 12:30:
Dank voor de suggesties heren! Met bigtimer lukt het me in ieder geval zeker niet helaas. Cron is nog een beetje stoeien, heb al lang zitten klooien, maar ook daar is het lastig. @z1rconium draait jouw suggestie niet elke maand op de 24e? Vraag me af hoe die gaat lopen.
Dan is welke week met een check erachter even/oneven beter en meer reliable.
Gaat het om iets waarbij een dag later de herinnering nog relevant is of is het iets dat echt op dat moment moet gebeuren?
[ Voor 20% gewijzigd door Tsurany op 24-04-2020 13:46 ]
SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N
[ Voor 92% gewijzigd door Andre_J op 24-04-2020 13:52 . Reden: dubbelpost ]
Het gaat om een afval reminderTsurany schreef op vrijdag 24 april 2020 @ 13:45:
@Sp33dFr34k de vraag is ook wat de achterliggende requirement is. Hoe vast is die vrijdag? En wat moet er gebeuren als vanwege een error in bijvoorbeeld connectiviteit die melding niet is afgevuurd? Dan wachten tot twee weken later?
Gaat het om iets waarbij een dag later de herinnering nog relevant is of is het iets dat echt op dat moment moet gebeuren?
Die crontab plus heb ik idd al bekeken, maar daarmee lukt het me niet.
i7 9700k + Be-Quiet Dark Rock 4 Pro | Gigabyte Z390 Aorus Ultra | Gigabyte Aorus GTX1080TI | Samsung 970 Pro 512GB + 860 EVO 1TB | 2x8GB DDR4 3000Mhz | Seasonic Platinum 660W | Fractal Design R6 | Acer Predator X34P | M-Audio AV40
Je timer draait dan vrijwel altijd voor niets maar dat kost qua CPU kracht werkelijk niets.
SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N
I like your thinking, zoiets zat ik ook grofweg te denken, icm het script van lolgast hierboven, en dan nog een stapje wat checkt of het 7AM op een vrijdag is. Moet te doen zijn, en redelijk fullproof icm rebootenTsurany schreef op vrijdag 24 april 2020 @ 14:45:
Dan kan je een timer gebruiken die elk half uur start, controleert of het vandaag een even/oneven week is, controleert of hij vandaag al een bericht verstuurd heeft en zo niet dat bericht verstuurd en wegschrijft dat vandaag al een reminder gestuurd is.
Je timer draait dan vrijwel altijd voor niets maar dat kost qua CPU kracht werkelijk niets.
i7 9700k + Be-Quiet Dark Rock 4 Pro | Gigabyte Z390 Aorus Ultra | Gigabyte Aorus GTX1080TI | Samsung 970 Pro 512GB + 860 EVO 1TB | 2x8GB DDR4 3000Mhz | Seasonic Platinum 660W | Fractal Design R6 | Acer Predator X34P | M-Audio AV40
Echter moet je dan net een developer hebben die Node-RED gebruikt, deze specifieke wens heeft en dan deze plugin gaat schrijven
Al moet ik zeggen dat ik met vergelijkbare commerciële software werk en ook daar hebben we niet zulke plugins vrijelijk beschikbaar, dan gebruiken we ook vaak deze methode. Het is nou eenmaal een vrij specifieke situatie.
SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N
1
| [{"id":"1a2f6b67.809105","type":"debug","z":"f04bfd0f.7f695","name":"","active":true,"console":"false","complete":"false","x":820,"y":600,"wires":[]},{"id":"6b035f91.ebe29","type":"function","z":"f04bfd0f.7f695","name":"get week moment ","func":"Date.prototype.getWeek = function() {\n var onejan = new Date(this.getFullYear(),0,1);\n return Math.ceil((((this - onejan) / 86400000) + onejan.getDay()+1)/7);\n}\nvar date = new Date();\nvar weekNumber = date.getWeek();\nvar day = date.getDay();\n\nif (weekNumber % 2 === 1 && day === 5){\n msg.payload = 'Oneven week en vrijdag'\n return [msg];\n} else {\n msg.payload = 'Elk ander moment'\n return [null,msg];\n}","outputs":2,"noerr":0,"x":550,"y":670,"wires":[["1a2f6b67.809105"],["ee852fc7.de1ba"]]},{"id":"847dac3e.8fd26","type":"inject","z":"f04bfd0f.7f695","name":"hourly @ Fri in morning","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"0 4-11 * * 5","once":false,"onceDelay":0.1,"x":280,"y":670,"wires":[["6b035f91.ebe29"]]},{"id":"ee852fc7.de1ba","type":"debug","z":"f04bfd0f.7f695","name":"","active":true,"console":"false","complete":"false","x":830,"y":740,"wires":[]}] |
Dit draait elk uur op vrijdag tussen 4:00 AM en 12:00 PM, controleer (on)even week en dagnummer (5 = vrijdag).
Als oneven && vrijdag -> output 1.
Anders -> Output 2
Edit:
Nu ik erover nadenk, de controle voor vrijdag in de functionnode komt hiermee natuurlijk te vervallen
[ Voor 6% gewijzigd door lolgast op 24-04-2020 15:12 ]
Ennnnnn het werkt, zojuist ff een testje gedaan, thanks voor de hulp!lolgast schreef op vrijdag 24 april 2020 @ 15:04:
@Sp33dFr34k Voorbeeld
JSON:
1 [{"id":"1a2f6b67.809105","type":"debug","z":"f04bfd0f.7f695","name":"","active":true,"console":"false","complete":"false","x":820,"y":600,"wires":[]},{"id":"6b035f91.ebe29","type":"function","z":"f04bfd0f.7f695","name":"get week moment ","func":"Date.prototype.getWeek = function() {\n var onejan = new Date(this.getFullYear(),0,1);\n return Math.ceil((((this - onejan) / 86400000) + onejan.getDay()+1)/7);\n}\nvar date = new Date();\nvar weekNumber = date.getWeek();\nvar day = date.getDay();\n\nif (weekNumber % 2 === 1 && day === 5){\n msg.payload = 'Oneven week en vrijdag'\n return [msg];\n} else {\n msg.payload = 'Elk ander moment'\n return [null,msg];\n}","outputs":2,"noerr":0,"x":550,"y":670,"wires":[["1a2f6b67.809105"],["ee852fc7.de1ba"]]},{"id":"847dac3e.8fd26","type":"inject","z":"f04bfd0f.7f695","name":"hourly @ Fri in morning","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"0 4-11 * * 5","once":false,"onceDelay":0.1,"x":280,"y":670,"wires":[["6b035f91.ebe29"]]},{"id":"ee852fc7.de1ba","type":"debug","z":"f04bfd0f.7f695","name":"","active":true,"console":"false","complete":"false","x":830,"y":740,"wires":[]}]
Dit draait elk uur op vrijdag tussen 4:00 AM en 12:00 PM, controleer (on)even week en dagnummer (5 = vrijdag).
Als oneven && vrijdag -> output 1.
Anders -> Output 2
Edit:
Nu ik erover nadenk, de controle voor vrijdag in de functionnode komt hiermee natuurlijk te vervallenMaar zo heb je in ieder geval een idee van de mogelijkheden
Ik heb hem wat vereenvoudigd trouwens, even kijken hoe goed dit gaat werken:
- Eerst een inject op specific time, op alleen de vrijdag (draait dan dus 1x per week)
- Dan jouw functie erachter die puur kijkt naar even of oneven week
- Dan de pushover config en post nodes
[ Voor 7% gewijzigd door Sp33dFr34k op 24-04-2020 16:33 ]
i7 9700k + Be-Quiet Dark Rock 4 Pro | Gigabyte Z390 Aorus Ultra | Gigabyte Aorus GTX1080TI | Samsung 970 Pro 512GB + 860 EVO 1TB | 2x8GB DDR4 3000Mhz | Seasonic Platinum 660W | Fractal Design R6 | Acer Predator X34P | M-Audio AV40
Ik heb wel geprobeerd, maar lees alleen de status "playing" uit.
ik zie bij Home Assistant > ontwikkelingshulpmiddelen > toestanden
/f/image/zS82DgT1c7RZFw27HgMCk5Cr.png?f=fotoalbum_large)
kan iemand me opweg helpen of een flow/seqence voorbeeld geven?
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Ik heb inmiddels dit gedaan.Gizz schreef op zondag 26 april 2020 @ 12:04:
@CAD-tekenaar Je zegt nu dat je wel iets hebt geprobeerd, maar dat het niet helemaal werkt zoals je wilt. Als je je huidige flow post is het makkelijker voor anderen om met je mee te denken
Op welke manier kan ik deze waarde uitlezen als deze wijzigt?
1
| [{"id":"b573f8d.b135d08","type":"api-current-state","z":"82294c2d.20d9e","name":"","server":"779d12e2.03b0bc","version":1,"outputs":2,"halt_if":"playing","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"media_player.denon_avr_x2500h","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data.entity_picture","override_data":"msg","blockInputOverrides":false,"x":420,"y":780,"wires":[["c1914d7c.16dbf"],[]]},{"id":"c1914d7c.16dbf","type":"debug","z":"82294c2d.20d9e","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"data.entity_picture.attributes.entity_picture","targetType":"msg","x":860,"y":780,"wires":[]},{"id":"3d582ce2.0039a4","type":"inject","z":"82294c2d.20d9e","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":120,"y":780,"wires":[["b573f8d.b135d08"]]},{"id":"779d12e2.03b0bc","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":false,"cacheJson":true}] |
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
(toch heb ik het gevoel dat ik dit nog niet helemaal snap hoe ik er aan kom, maar het is gelukt)
Met complete msg object zie ik alle waardes van mijn media_player, incl. "entity_picture".
Uiteindelijk zou je een filter moeten toevoegen om een specifieke waarde uit te lezen.
Met welke node kan ik de waarde krijgen wanneer een waarde veranderd?
Als ik juist begrijp wat je bedoelt gebruik je daarvoor Events: state voor. Ik heb even de nodes geïnstalleerdCAD-tekenaar schreef op zondag 26 april 2020 @ 12:25:
Met welke node kan ik de waarde krijgen wanneer een waarde veranderd?
:fill(white):strip_exif()/f/image/ecHz0Ma9gyp18l9jIsW2Xc8d.png?f=user_large)
Nu wordt de flow getriggered op het moment dat er iets veranderd in de state van de Denon. Als het volume wordt veranderd of er iets anders wordt afgespeeld bijvoorbeeld.
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Ik heb je voorstel nagemaakt voor "volume_level" & deployed, maar het reageert bij wijzigingen !Gizz schreef op zondag 26 april 2020 @ 12:33:
[...]
Als ik juist begrijp wat je bedoelt gebruik je daarvoor Events: state voor. Ik heb even de nodes geïnstalleerd
[Afbeelding]
Nu wordt de flow getriggered op het moment dat er iets veranderd in de state van de Denon. Als het volume wordt veranderd of er iets anders wordt afgespeeld bijvoorbeeld.
Volgens mij ben ik geholpen.
Nu eens zoeken hoe ik e.e.a kan casten naar Nest Hub. Heb je misschien tips/voorbeelden?
1
| [{"id":"9f131072.099dc","type":"api-current-state","z":"82294c2d.20d9e","name":"","server":"779d12e2.03b0bc","version":1,"outputs":2,"halt_if":"playing","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"media_player.denon_avr_x2500h","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data.volume_level","override_data":"msg","blockInputOverrides":false,"x":680,"y":1060,"wires":[["b3f1c1cc.c525e"],[]]},{"id":"b3f1c1cc.c525e","type":"debug","z":"82294c2d.20d9e","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"data.volume_level.attributes.volume_level","targetType":"msg","x":1100,"y":1060,"wires":[]},{"id":"1562d473.eac44c","type":"inject","z":"82294c2d.20d9e","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":360,"y":1100,"wires":[["9f131072.099dc"]]},{"id":"c9d238de.b92a18","type":"server-state-changed","z":"82294c2d.20d9e","name":"","server":"779d12e2.03b0bc","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":"media_player.denon_avr_x2500h"},{"property":"icon","value":""}],"entityidfilter":"media_player.denon_avr_x2500h","entityidfiltertype":"exact","outputinitially":true,"state_type":"str","haltifstate":"playing","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":false,"x":240,"y":1060,"wires":[["9f131072.099dc"],[]]},{"id":"779d12e2.03b0bc","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":false,"cacheJson":true}] |
[ Voor 3% gewijzigd door CAD-tekenaar op 26-04-2020 12:49 ]
Ik ben bezig een flow te maken om mijn Envoy (zonnepanelen) uit te lezen. Daarvoor is ook installateur toegang nodig, wat ik inmiddels heb.
Op internet vond ik een geschikte flow, helaas zonder de code. Maar om het werkend te krijgen is er blijkbaar een 'session cookie' nodig.
/f/image/CY9yDONfHccdyLee0SLgH0Ix.png?f=fotoalbum_large)
Zie screenshot wat ik gevonden heb. Al van alles geprobeerd, maar mijn kennis is helaas nog beperkt.
Ik heb een voorbeeld toegevoegd wat ik graag werkend wil hebben.
1
| [{"id":"8d129f43.586c78","type":"function","z":"15d28fa1.a69","name":"Session cookie","func":"\nreturn msg;","outputs":1,"noerr":0,"x":520,"y":80,"wires":[["f2b0aad9.3bdee"]]}] |
Ik heb een ruimte gedfinieerd die heet Woonkamer, hierin heb ik een 3 tal licht objecten in geplaatst waarbij elk object kan bestaan uit afzonderlijke lampen. Deze ruimte kan geschakeld (of eigenlijk getoggled) worden met een smart switch waarbij alles aan of uit gaat, tenzij iemand tussentijds een licht groep geschakeld heetf en dan krijg je dus wat je ook verwacht bij een toggle dat diegene die uit waren weer aan gaan etc.
Hieronder een tree view van de lichten:
- Woonkamer:
- Licht groep 1
* light 1-1
* light 1-2
* light 1-3
- Licht groep 2
* light 2-1
* light 2-2
* light 2-3
- Licht groep 3
* light 3-1
* light 3-2
* light 3-3
Nu vroeg ik me af hoe je onnodig togglen kunt voorkomen?
Ik heb het volgende pallet installed: https://flows.nodered.org/node/node-red-contrib-deconz
Hierin kun je met deconz-get een state aangeven all-on of any-on en hoopte het hiermee af te kunnen vangen maar ben bang dat het onnodig complex wordt en er vast wel een andere manier is?
:fill(white):strip_exif()/f/image/j8I0DR7s9jEidr6UQXZj8c68.png?f=user_large)
Heeft iemand ideeën/suggesties hoe dit toggle gedrag op te kunnen lossen?
Ik hoop dat mijn verhaal duidelijk is ook
/edit:
Wellicht niet helemaal helder maar ik gebruik een ConBee2 stick vandaar het Node Red pallet.
[ Voor 3% gewijzigd door schumi2004 op 29-04-2020 15:43 ]
Maar dit is een inherent probleem aan toggle, daarom zou ik eerder kijken of je daar geen oplossing voor kan bedenken. Waarom wil je een toggle switch gebruiken en niet een dedicated aan knop en een dedicated uit knop?
SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N
Gebruik je ook home-assistant? Dan kun je het probleem vrij eenvoudig oplossen.schumi2004 schreef op woensdag 29 april 2020 @ 13:17:
Ik ben opzoek naar ideeen/mogelijk oplossing voor het volgende.
Ik heb een ruimte gedfinieerd die heet Woonkamer, hierin heb ik een 3 tal licht objecten in geplaatst waarbij elk object kan bestaan uit afzonderlijke lampen. Deze ruimte kan geschakeld (of eigenlijk getoggled) worden met een smart switch waarbij alles aan of uit gaat, tenzij iemand tussentijds een licht groep geschakeld heetf en dan krijg je dus wat je ook verwacht bij een toggle dat diegene die uit waren weer aan gaan etc.
Hieronder een tree view van de lichten:
- Woonkamer:
- Licht groep 1
* light 1-1
* light 1-2
* light 1-3
- Licht groep 2
* light 2-1
* light 2-2
* light 2-3
- Licht groep 3
* light 3-1
* light 3-2
* light 3-3
Nu vroeg ik me af hoe je onnodig togglen kunt voorkomen?
Ik heb het volgende pallet installed: https://flows.nodered.org/node/node-red-contrib-deconz
Hierin kun je met deconz-get een state aangeven all-on of any-on en hoopte het hiermee af te kunnen vangen maar ben bang dat het onnodig complex wordt en er vast wel een andere manier is?
[Afbeelding]
Heeft iemand ideeën/suggesties hoe dit toggle gedrag op te kunnen lossen?
Ik hoop dat mijn verhaal duidelijk is ook
Maak een drietal lichtgroepen aan, met de afzonderlijke lichten. In node-red kun je vervolgens je schakelaar koppelen aan een service node, met service 'toggle' en entity -> de light groep:
/f/image/xowMXAcQX7Hry52SVdWGIXY8.png?f=fotoalbum_large)
Gebruik ook home-assistant ja (icm Conbee2 stick)Kaspers schreef op woensdag 29 april 2020 @ 14:51:
[...]
Gebruik je ook home-assistant? Dan kun je het probleem vrij eenvoudig oplossen.
Maak een drietal lichtgroepen aan, met de afzonderlijke lichten. In node-red kun je vervolgens je schakelaar koppelen aan een service node, met service 'toggle' en entity -> de light groep:
[Afbeelding]
Zal er vanavond eens naar kijken, thanks
/edit
@Kaspers
Voor mijn beeldvorming. Een groep in Phoscon telt niet, de groep met lampen moet aangemaakt zijn in HA?
[ Voor 9% gewijzigd door schumi2004 op 29-04-2020 15:44 ]
Inderdaad. Dat werkt ook vele malen prettiger (is mijn ervaring):schumi2004 schreef op woensdag 29 april 2020 @ 15:37:
[...]
Gebruik ook home-assistant ja (icm Conbee2 stick)
Zal er vanavond eens naar kijken, thanks
/edit
@Kaspers
Voor mijn beeldvorming. Een groep in Phoscon telt niet, de groep met lampen moet aangemaakt zijn in HA?
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
| apiVersion: v1 kind: ConfigMap metadata: name: hass-lights namespace: domotics data: lights.yaml: | --- - platform: group name: Keukenlichten entities: - light.staande_lamp_keuken - light.keuken_spot_1 - light.keuken_spot_2 - light.hanglamp_keuken - platform: group name: Keukenspots entities: - light.keuken_spot_1 - light.keuken_spot_2 - platform: group name: Woonkamerlichten entities: - light.woonkamer_spot_1 - light.woonkamer_spot_2 - light.woonkamer_spot_3 - light.woonkamer_spot_4 - light.hanglamp_woonkamer - light.staande_lamp_woonkamer [...] |
[ Voor 49% gewijzigd door Kaspers op 29-04-2020 17:08 ]
Zelf heb ik Node-red 1.0.3 draaien samen met een Finder modbus. Dit werkt perfect en gebruik de bekende SDM 120 flow, aangepast voor Finder, die ook hier beschreven wordt: YouTube: Eastron SDM120 single phase modbus energy meter
Mijn buurman heeft minder geluk en heeft niet de mogelijkheid tot een Finder modbus en heeft daarom een Eastron SDM120. Zeer mooi, want het orginele flow is ook gebaseerd op een SDM120 ipv Finder. Appeltje eitje dacht ik.
Ik heb de flow wel werkend, maar na een half dag "knalt" hij eruit. Een restart van een flow zorgt ervoor dat hij weer werkt. Ik vermoed dat het ligt aan het feit dat hij de waardes tegelijk ophaalt, terwijl die van mij keurig om de 5 seconden worden opgehaald:
:fill(white):strip_exif()/f/image/1lDbqnDCoXAIiYYyT5VzJxhq.png?f=user_large)
Das heel raar, want de instellingen staan exact hetzelfde als mijn flow en daar pollt hij achter elkaar en "queued" hij de communicatie. Ik heb alles langs gelopen; alle nodes, alle instellingen. Meerdere flows geprobeerd, maar ik snap niet waarom hij bij de buurman alles in 1 keer polled, terwijl het bij mij achter elkaar gebeurt.
De log geeft, zoals in debug stand helemaal niks aan als de informatie niet meer binnen komt.
Enige verschil wat ik kan merken is dat hij node red 1.0.6 draait en ik 1.0.3. Maar juist hierdoor durf ik niet te updaten naar een nieuwe versie om te zien of dit het probleem is. De healthcheck geeft bij mijn buurman inderdaad aan dat hij zeer lang geen gegevens meer opgehaald heeft.
Iemand enig idee waar het aan kan liggen of welke instellingen ik moet aanpassen?
Welke versie van node-red-contrib-modbus gebruikt hij?
Ik ben terug gegaan destijds naar 4.1.3 vanwege problemen (queing - traagheid)
Ik gebruik versie 1.0.5 van node-red.
1
2
3
4
5
| cd .node-red sudo su npm uninstall node-red-contrib-modbus npm install node-red-contrib-modbus@4.1.3 |
Je kan ook de flow even opslaan, wissen, en node-red-contrib-modbus opnieuw installeren en de flow weer importeren. (heb ik ergens gelezen)
En leesvoer: https://github.com/Bianco...?q=is%3Aissue+is%3Aclosed
[ Voor 11% gewijzigd door AUijtdehaag op 29-04-2020 20:42 ]
Tnx, ik heb inderdaad nog niet gechecked of de versie palette verschillend is. Ik vermoed namelijk van wel. Ga hier eens een versie terug. Zelf draai ik 5.2.0. Alhoewel ik op de issue list van github een ding zie waar ik zelf ook last van heb (queue reset niet).AUijtdehaag schreef op woensdag 29 april 2020 @ 20:39:
@grote_oever Probeer eens een node-red-restart via putty.
Welke versie van node-red-contrib-modbus gebruikt hij?
Ik ben terug gegaan destijds naar 4.1.3 vanwege problemen (queing - traagheid)
Ik gebruik versie 1.0.5 van node-red.
code:
1 2 3 4 5 cd .node-red sudo su npm uninstall node-red-contrib-modbus npm install node-red-contrib-modbus@4.1.3
Je kan ook de flow even opslaan, wissen, en node-red-contrib-modbus opnieuw installeren en de flow weer importeren. (heb ik ergens gelezen)
En leesvoer: https://github.com/Bianco...?q=is%3Aissue+is%3Aclosed
Hier ga ik even mee aan de slag. Tnx.
1
2
3
4
5
6
7
8
9
10
11
12
| //background process commandline stap 1. rtl--> sdr output naar /tmp/rtl_sdr_raw // node red vanaf hier stap 2 (flow A) reformat naar JSON --> /tmp/rlt_sdr-JSON // extra "bestand" een cvs file met "wanted" waardes (test) stap 3 A) /tmp/rlt_sdr-JSON import B) splits bepaald veld(capcode) naar aparte key/value C) extract data (alarmcode,postcode & zet datum tijd) in aparte object key/value D) add "test" (false/true) key+value D) op basis van CSV file als match = true .. E) check of "true" en stop dan in bestand A (unwanted) of B (wanted) |
Ik krijg 2 errors ..
- split kan niet overweg met undefined
- andere "error"
Nu is niet elke "json" conform het format wat ik wil ontvangen, ik zou het op kunnen lossen door vooraf elk object alvast te defineren, en later eventueel het object te laten vullen .. maar is dit netjes ?
is er trouwens een manier om de flow van een msg(payload) te debuggen ? ik gebruik nu https://playcode.io/ maar is best veel knip en plak werk .. ik hoop dat er iets is dat direct met je flow(s) kan integeren ..
ik wil eigenlijk elke "error' payload vangen .. by playcode kan ik teminste beter zien waar het fout gaat .. (site is alleen ruk)
Tja vanalles
Nu heb ik het voor elkaar om de waardes van de sensor in NR te krijgen via MQTT. Nu krijg ik onderstaande informatie.
1
| MQTT: Topic: domoticz/in, Message: {"idx":343,"RSSI":8,"nvalue":0,"svalue":"21.70;62.90;3"} |
Aangezien er meer informatie binnen komt wil ik eerst filteren op idx 343. Dit doe ik met een switch die kijkt naar payload.idx 343. Vervolgens krijg ik enkel de juiste informatie.
Nu wil ik echter de 'svalue' splitsen naar temperatuur en luchtvochtigheid. Dit kan met de split functie, maar als ik die ga gebruiken splitst hij alle informatie uit de payload, terwijl ik enkel de 'svalue' string wil opsplitsen.
Iemand anders die al eens een dergelijke flow heeft gemaakt?
/f/image/Yy48n0qCW0vdSkdXsk8KttJU.png?f=fotoalbum_large)
1
| [{"id":"f5374572.0b97c8","type":"tab","label":"Mechanische ventilatie","disabled":false,"info":""},{"id":"d8ee9547.15beb8","type":"mqtt in","z":"f5374572.0b97c8","name":"","topic":"domoticz/in","qos":"2","datatype":"json","broker":"73bf538b.fbeffc","x":550,"y":120,"wires":[["59305eea.79ffa","7fc3746d.5e82cc"]]},{"id":"59305eea.79ffa","type":"switch","z":"f5374572.0b97c8","name":"status","property":"payload.idx","propertyType":"msg","rules":[{"t":"eq","v":"343","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":730,"y":120,"wires":[["c3e928e0.4937e8","86a29f9.95dc46"]]},{"id":"7fc3746d.5e82cc","type":"debug","z":"f5374572.0b97c8","name":"in","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":550,"y":200,"wires":[]},{"id":"c3e928e0.4937e8","type":"split","z":"f5374572.0b97c8","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":910,"y":120,"wires":[["ef308b9a.02b478"]]},{"id":"ef308b9a.02b478","type":"debug","z":"f5374572.0b97c8","name":"split","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":910,"y":200,"wires":[]},{"id":"86a29f9.95dc46","type":"debug","z":"f5374572.0b97c8","name":"status","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":730,"y":200,"wires":[]},{"id":"73bf538b.fbeffc","type":"mqtt-broker","z":"","name":"Badkamer","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":""}] |
Nu eens kijken hoe ik waarde 2 kan gebruiken, zodat wanneer de waarde >60 is, deze een switch op idx kan schakelen.
Deze afbeelding heb ik als string.
msg.data.entity_picture.attributes.entity_picture = "http://cdn-albums.tunein.com/gn/72VC1MV0D5d.jpg"
Hoe kan ik deze afbeelding casten naar mijn Nest Hub?
Ik zie deze cast node, maar krijg de parameters niet goed.
:fill(white):strip_exif()/f/image/MtDD6qKFKYz3n6QgLpH7UNfQ.png?f=user_large)
Kleine update: dit heeft inderdaad probleem opgelost. Hij draait nu stabiel bij de buurman en mijn queue reset probleem is ook met downgrade opgelost.AUijtdehaag schreef op woensdag 29 april 2020 @ 20:39:
@grote_oever Probeer eens een node-red-restart via putty.
Welke versie van node-red-contrib-modbus gebruikt hij?
Ik ben terug gegaan destijds naar 4.1.3 vanwege problemen (queing - traagheid)
Ik gebruik versie 1.0.5 van node-red.
code:
1 2 3 4 5 cd .node-red sudo su npm uninstall node-red-contrib-modbus npm install node-red-contrib-modbus@4.1.3
Je kan ook de flow even opslaan, wissen, en node-red-contrib-modbus opnieuw installeren en de flow weer importeren. (heb ik ergens gelezen)
En leesvoer: https://github.com/Bianco...?q=is%3Aissue+is%3Aclosed
Ik heb in een kamer twee rolluiken hangen. Momenteel schakel ik die via een Group in Domoticz, maar dit herkent hij niet vanuit NR. De payload.type is namelijk Group in plaats van Switch en de idx kan hierdoor vaker voorkomen.
Mochten ze iets anders nodig hebben dan On/Off, dan is het natuurlijk een kleine moeite om in NR alles in te stellen voor rolluik 1 en de node waarin je JSON-template staat te kopiëren, plakken en de IDX aan te passen voor rolluik 2. Tien seconde werk
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Ik heb alleen maar Node-RED draaien om zaken te automatiseren. Verder geen Domoticz of Home Assistant o.i.d. ernaast. Voor grafiekjes InfluxDB & Grafana.
[ Voor 15% gewijzigd door ThinkPad op 04-05-2020 15:07 ]

@ThinkPad, goed punt. De sensor butst nu zijn data door naar Domoticz. Ik dacht dus op die manier te koppelen, maar ik kan waarschijnlijk dan ook wel een tweede controller kiezen en dan naar NR sturen.
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Deze remote is van de Harmony Hub.
De structuur zoals die in de Domoticz-wiki staat lijkt een beetje vreemd omdat het niet helemaal overeenkomt met hoe wij JSONs in NR versturen. In de wiki wordt er vanuit gegaan dat je het in de adresbalk van je browser plakt en daar kun je geen aanhalingstekens en zo gebruiken. Ik kijk altijd even bij eerdere JSONs in NR hoe ik het ook alweer heb omgebouwdwervisser schreef op maandag 4 mei 2020 @ 17:42:
@Gizz Heb je link even bekeken en ik zie daar inderdaad wel de JSON staan, maar hoe kan ik die dan laten aanvullen met mijn variabelen?
1
| /json.htm?type=command¶m=switchscene&idx=&switchcmd= |
wordt bijvoorbeeld in NR:
1
| {"command": "switchscene", "idx": 554, "switchcmd": "Off"} |
De idx is die van je group en On/Off lijkt me evident
Hier kun je node-red-contrib-harmony voor gebruiken lijkt mij? En dan de observe node gebruiken:CAD-tekenaar schreef op maandag 4 mei 2020 @ 20:47:
Kan iemand me op weg helpen hoe ik in Node-Red kan uitlezen welke knop ik indruk van mijn remote?
Deze remote is van de Harmony Hub.
H observe
A node to observe an Activity being triggered on a Harmony Hub through Node-RED
A Harmony Hub needs to be selected from the list or created by clicking on the edit button. The Harmony Hub IP address can be autodetected by clicking on the search button in the configuration node.
When an Activity is switched on the Harmony Hub, the node sends an object with a payload to the output: payload: { activityId: activityId, activityStatus: activityStatus } The activityId is the ID of the current activity, the activityStatus represents the following states: 0 = Hub is off, 1 = Activity is starting, 2 = Activity is started, 3 = Hub is turning off.
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
1
2
3
4
5
6
7
8
9
10
| var idx = msg.topic if ( msg.payload === true ) { msg.payload = { "command": "switchscene", "idx": idx, "switchcmd": "On" }; } else if ( msg.payload === false ) { msg.payload = { "command": "switchscene", "idx": idx, "switchcmd": "Off" }; } return msg |
Ik lees nu: als apparaat met IDX 123 true is, wordt datzelfde apparaat met IDX 123 op On gezet in Domoticz. Maar als je al weer dat IDX 123 true is (afkomstig uit Domoticz?), dan is hij toch al aangezet in Domoticz en hoef jij verder niks te doen?
Maar zoals ik zeg, wellicht zit er iets voor deze node wat het allemaal verklaart
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Omdat terugkoppeling naar Domoticz niet leek te werken, heb ik dit dan ook maar aangepast.
Er staan wat losse nodes in, zonder koppeling dus dat klopt.
1
| [{"id":"52a72466.3c9fcc","type":"tab","label":"Woonkamer","disabled":false,"info":""},{"id":"382700fb.72bac","type":"mqtt in","z":"52a72466.3c9fcc","name":"","topic":"domoticz/out","qos":"2","datatype":"auto","broker":"5d933108.daf91","x":90,"y":942,"wires":[["382fdcc.8f56024"]]},{"id":"1b3ed309.1c20dd","type":"debug","z":"52a72466.3c9fcc","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":590,"y":800,"wires":[]},{"id":"7b03be29.d355a","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Mechanische ventilatie","roomhint":"Algemeen","name":"Ventilatie","passthru":false,"nora":"df4bcc24.09f8d","topic":"334","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1120,"y":1636,"wires":[["9f7f070c.cf4c78"]]},{"id":"382fdcc.8f56024","type":"json","z":"52a72466.3c9fcc","name":"","property":"payload","action":"","pretty":false,"x":270,"y":942,"wires":[["ba2838c9.29aa78"]]},{"id":"1d6da93c.671567","type":"switch","z":"52a72466.3c9fcc","name":"Switch","property":"payload.switchType","propertyType":"msg","rules":[{"t":"cont","v":"On/Off","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":690,"y":440,"wires":[[]]},{"id":"ba2838c9.29aa78","type":"function","z":"52a72466.3c9fcc","name":"Function in on/off","func":"msg.topic = msg.payload.idx\nif (msg.payload.nvalue === 1 || msg.payload.Status === \"On\")\n{\n msg.payload = true\n}\nelse if (msg.payload.nvalue === 0 || msg.payload.Status === \"Off\")\n{\n msg.payload = false\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":630,"y":942,"wires":[["1b3ed309.1c20dd","fbfe3d45.d88fa"]]},{"id":"fbfe3d45.d88fa","type":"switch","z":"52a72466.3c9fcc","name":"Selector","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"","vt":"str"},{"t":"eq","v":"36","vt":"str"},{"t":"eq","v":"34","vt":"str"},{"t":"eq","v":"30","vt":"str"},{"t":"eq","v":"365","vt":"str"},{"t":"eq","v":"28","vt":"str"},{"t":"eq","v":"26","vt":"str"},{"t":"eq","v":"27","vt":"str"},{"t":"eq","v":"37","vt":"str"},{"t":"eq","v":"65","vt":"str"},{"t":"eq","v":"62","vt":"str"},{"t":"eq","v":"68","vt":"str"},{"t":"eq","v":"3","vt":"str"},{"t":"eq","v":"71","vt":"str"},{"t":"eq","v":"32","vt":"str"},{"t":"eq","v":"59","vt":"str"},{"t":"eq","v":"41","vt":"str"},{"t":"eq","v":"40","vt":"str"},{"t":"eq","v":"24","vt":"str"},{"t":"eq","v":"56","vt":"str"},{"t":"eq","v":"50","vt":"str"},{"t":"eq","v":"53","vt":"str"},{"t":"eq","v":"38","vt":"str"},{"t":"eq","v":"22","vt":"str"},{"t":"eq","v":"334","vt":"str"},{"t":"eq","v":"1","vt":"str"}],"checkall":"true","repair":false,"outputs":26,"x":860,"y":942,"wires":[[],["aa19d0e5.4492d"],["e6ae486b.561af8"],["1d88173.de7b5e9"],["58e2a5e9.bb9a1c"],["86452ad8.92c148"],["bb8bf1b1.8c70f"],["7b9aecec.6b60b4"],["27443e41.0e96e2"],["ec39c068.c7687"],["396ce1d4.8013de"],["e10c9cae.a932c"],["a155c2ad.549df"],["84cae8d8.fddaf8"],["ecf8d5b4.f59e78"],["4f3fe744.4a8598"],["c6d71c55.59754"],["32e10d60.655ce2"],["a1e17c65.8e9ac"],["2bab64d7.ecf6fc"],["e9d7e33b.5266b"],["e9d7e33b.5266b"],["42f68547.54cc4c"],["752e84f0.32e7ac"],["7b03be29.d355a"],["4bddd234.dc9dfc"]]},{"id":"9f7f070c.cf4c78","type":"function","z":"52a72466.3c9fcc","name":"Device on/off","func":"var idx = parseInt(msg.topic);\nif ( msg.payload === true )\n{\nmsg.payload = { \"command\": \"switchlight\", \"idx\": idx, \"switchcmd\": \"On\" };\n}\nelse if ( msg.payload === false )\n{\nmsg.payload = { \"command\": \"switchlight\", \"idx\": idx, \"switchcmd\": \"Off\" };\n}\nreturn msg","outputs":1,"noerr":0,"x":1510,"y":942,"wires":[["e2fe4312.d22a4","548dbf84.d8059"]]},{"id":"8b95874.1406a78","type":"mqtt out","z":"52a72466.3c9fcc","name":"","topic":"domoticz/in","qos":"1","retain":"","broker":"5d933108.daf91","x":2270,"y":1180,"wires":[]},{"id":"58e2a5e9.bb9a1c","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"TV","roomhint":"Woonkamer","name":"TV","passthru":false,"nora":"df4bcc24.09f8d","topic":"365","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1110,"y":498,"wires":[["9f7f070c.cf4c78"]]},{"id":"4bddd234.dc9dfc","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Film kijken","roomhint":"Woonkamer","name":"Film kijken","passthru":false,"nora":"df4bcc24.09f8d","topic":"1","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1130,"y":1722,"wires":[["403f844b.b39bac"]]},{"id":"b00422cf.67279","type":"inject","z":"52a72466.3c9fcc","name":"Refresh","topic":"msg.payload","payload":"Refresh","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":730,"y":120,"wires":[["68870079.9d25c","16488092.50eadf","ca84c9b3.a5fa88","1e84be80.f30e71","85bb148c.e6af38"]],"icon":"font-awesome/fa-refresh"},{"id":"68870079.9d25c","type":"function","z":"52a72466.3c9fcc","name":"Manual off","func":" global.set('AutoOn', 1);\n","outputs":1,"noerr":0,"x":800,"y":260,"wires":[[]]},{"id":"16488092.50eadf","type":"function","z":"52a72466.3c9fcc","name":"TV refresh","func":"msg.payload = {\"command\": \"getdeviceinfo\", \"idx\": 566 } \nreturn msg;","outputs":1,"noerr":0,"x":1050,"y":180,"wires":[["a3356a98.18b9b8"]]},{"id":"1e84be80.f30e71","type":"function","z":"52a72466.3c9fcc","name":"Ventilatie","func":"msg.payload = {\"command\": \"getdeviceinfo\", \"idx\": 756 } \nreturn msg;","outputs":1,"noerr":0,"x":1040,"y":60,"wires":[["a3356a98.18b9b8"]]},{"id":"ca84c9b3.a5fa88","type":"function","z":"52a72466.3c9fcc","name":"Hoeklamp","func":"msg.payload = {\"command\": \"getdeviceinfo\", \"idx\": 867 } \nreturn msg;","outputs":1,"noerr":0,"x":1040,"y":120,"wires":[["a3356a98.18b9b8"]]},{"id":"80731b00.701dd8","type":"switch","z":"52a72466.3c9fcc","name":"Group","property":"payload.Type","propertyType":"msg","rules":[{"t":"eq","v":"Group","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":690,"y":500,"wires":[[]]},{"id":"e9d7e33b.5266b","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Alex rolluik","roomhint":"Slaapkamer Alex","name":"Alex rolluik","passthru":false,"nora":"df4bcc24.09f8d","topic":"2","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1130,"y":1456,"wires":[["403f844b.b39bac"]]},{"id":"a3356a98.18b9b8","type":"debug","z":"52a72466.3c9fcc","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1320,"y":80,"wires":[]},{"id":"27443e41.0e96e2","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Woonkamer","roomhint":"Woonkamer","name":"Woonkamer uit","passthru":false,"nora":"df4bcc24.09f8d","topic":"37","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1140,"y":687,"wires":[["9f7f070c.cf4c78"]]},{"id":"86452ad8.92c148","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Toilet lamp","roomhint":"Toilet BGG","name":"Toilet lamp","passthru":false,"nora":"df4bcc24.09f8d","topic":"28","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1130,"y":545,"wires":[["9f7f070c.cf4c78"]]},{"id":"e6ae486b.561af8","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Eetkamer plafond lamp","roomhint":"Woonkamer","name":"Eetkamer plafond lamp","passthru":false,"nora":"df4bcc24.09f8d","topic":"34","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1170,"y":404,"wires":[["9f7f070c.cf4c78"]]},{"id":"1d88173.de7b5e9","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Keuken plafond lamp","roomhint":"Woonkamer","name":"Keuken plafond lamp","passthru":false,"nora":"df4bcc24.09f8d","topic":"30","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1160,"y":451,"wires":[["9f7f070c.cf4c78"]]},{"id":"aa19d0e5.4492d","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Woonkamer plafond lamp","roomhint":"Woonkamer","name":"Woonkamer plafond lamp","passthru":false,"nora":"df4bcc24.09f8d","topic":"36","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1170,"y":356,"wires":[["9f7f070c.cf4c78"]]},{"id":"10975060.58ef8","type":"comment","z":"52a72466.3c9fcc","name":"Begane grond","info":"","x":1130,"y":316,"wires":[]},{"id":"12d35694.6ce719","type":"comment","z":"52a72466.3c9fcc","name":"Slaapkamer Sebas","info":"","x":1150,"y":874,"wires":[]},{"id":"a155c2ad.549df","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Sebas rolluiken","roomhint":"Slaapkamer Sebas","name":"Sebas rolluiken","passthru":false,"nora":"df4bcc24.09f8d","topic":"3","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1140,"y":913,"wires":[["403f844b.b39bac"]]},{"id":"bb8bf1b1.8c70f","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Voordeur lamp","roomhint":"Voordeur","name":"Voordeur lamp","passthru":false,"nora":"df4bcc24.09f8d","topic":"26","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1140,"y":593,"wires":[["9f7f070c.cf4c78"]]},{"id":"7b9aecec.6b60b4","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Hal plafond lamp","roomhint":"Hal begane grond","name":"Hal plafond lamp","passthru":false,"nora":"df4bcc24.09f8d","topic":"27","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1150,"y":640,"wires":[["9f7f070c.cf4c78"]]},{"id":"58a2523a.694bcc","type":"comment","z":"52a72466.3c9fcc","name":"Slaapkamer","info":"","x":1130,"y":1009,"wires":[]},{"id":"ecf8d5b4.f59e78","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Slaapkamer plafond lamp","roomhint":"Slaapkamer","name":"Slaapkamer plafond lamp","passthru":false,"nora":"df4bcc24.09f8d","topic":"32","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1170,"y":1045,"wires":[["9f7f070c.cf4c78"]]},{"id":"4f3fe744.4a8598","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Slaapkamer rolluik","roomhint":"Slaapkamer","name":"Slaapkamer rolluik","passthru":false,"nora":"df4bcc24.09f8d","topic":"59","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1150,"y":1093,"wires":[["9f7f070c.cf4c78"]]},{"id":"c6d71c55.59754","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Badkamer plafond lamp","roomhint":"Badkamer","name":"Badkamer plafond lamp","passthru":false,"nora":"df4bcc24.09f8d","topic":"41","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1170,"y":1179,"wires":[["9f7f070c.cf4c78"]]},{"id":"32e10d60.655ce2","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Badkamer wand lamp","roomhint":"Badkamer","name":"Badkamer wand lamp","passthru":false,"nora":"df4bcc24.09f8d","topic":"40","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1160,"y":1226,"wires":[["9f7f070c.cf4c78"]]},{"id":"6d053532.f9b71c","type":"comment","z":"52a72466.3c9fcc","name":"Badkamer","info":"","x":1120,"y":1141,"wires":[]},{"id":"6315cbc3.d90844","type":"comment","z":"52a72466.3c9fcc","name":"Slaapkamer Alex","info":"","x":1140,"y":1415,"wires":[]},{"id":"42f68547.54cc4c","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Alex plafond lamp","roomhint":"Slaapkamer Alex","name":"Alex plafond lamp","passthru":false,"nora":"df4bcc24.09f8d","topic":"38","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1150,"y":1503,"wires":[["9f7f070c.cf4c78"]]},{"id":"84cae8d8.fddaf8","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Sebas plafond lamp","roomhint":"Slaapkamer Sebas","name":"Sebas plafond lamp","passthru":false,"nora":"df4bcc24.09f8d","topic":"71","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1160,"y":960,"wires":[["9f7f070c.cf4c78"]]},{"id":"752e84f0.32e7ac","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Zolder plafond lamp","roomhint":"Zolder","name":"Zolder plafond lamp","passthru":false,"nora":"df4bcc24.09f8d","topic":"22","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1160,"y":1589,"wires":[["9f7f070c.cf4c78"]]},{"id":"a4c35911.573358","type":"comment","z":"52a72466.3c9fcc","name":"Zolder","info":"","x":1110,"y":1552,"wires":[]},{"id":"a2b31408.265738","type":"comment","z":"52a72466.3c9fcc","name":"Scene","info":"","x":1110,"y":1684,"wires":[]},{"id":"396ce1d4.8013de","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Screen midden","roomhint":"Woonkamer","name":"Screen midden","passthru":false,"nora":"df4bcc24.09f8d","topic":"62","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1140,"y":779,"wires":[["9f7f070c.cf4c78"]]},{"id":"e10c9cae.a932c","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Screen rechts","roomhint":"Woonkamer","name":"Screen rechts","passthru":false,"nora":"df4bcc24.09f8d","topic":"68","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1140,"y":826,"wires":[["9f7f070c.cf4c78"]]},{"id":"ec39c068.c7687","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Screen links","roomhint":"Woonkamer","name":"Screen links","passthru":false,"nora":"df4bcc24.09f8d","topic":"65","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1130,"y":733,"wires":[["9f7f070c.cf4c78"]]},{"id":"85bb148c.e6af38","type":"function","z":"52a72466.3c9fcc","name":"TV refresh","func":"msg.payload = {\"command\": \"getdeviceinfo\", \"idx\": 30 } \nreturn msg;","outputs":1,"noerr":0,"x":1050,"y":220,"wires":[["a3356a98.18b9b8"]]},{"id":"d989ff15.48347","type":"comment","z":"52a72466.3c9fcc","name":"Werkkamer","info":"","x":1130,"y":1275,"wires":[]},{"id":"a1e17c65.8e9ac","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Werkkamer plafond lamp","roomhint":"Werkkamer","name":"Werkkamer plafond lamp","passthru":false,"nora":"df4bcc24.09f8d","topic":"24","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1170,"y":1313,"wires":[["9f7f070c.cf4c78"]]},{"id":"2bab64d7.ecf6fc","type":"nora-switch","z":"52a72466.3c9fcc","devicename":"Werkkamer rolluik","roomhint":"Werkkamer","name":"Werkkamer rolluik","passthru":false,"nora":"df4bcc24.09f8d","topic":"56","onvalue":"true","onvalueType":"bool","offvalue":"false","offvalueType":"bool","x":1150,"y":1364,"wires":[["9f7f070c.cf4c78"]]},{"id":"f9a63845.39f158","type":"template","z":"52a72466.3c9fcc","name":"Gen MQTT On/Off","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"command\": \"switchlight\", \"idx\": {{payload.idx}}, \"switchcmd\": \"{{payload.switchcmd}}\" }","output":"str","x":730,"y":380,"wires":[[]]},{"id":"c598130d.87aa1","type":"join","z":"52a72466.3c9fcc","name":"","mode":"auto","build":"string","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":"false","timeout":"","count":"","reduceRight":false,"x":260,"y":1100,"wires":[[]]},{"id":"403f844b.b39bac","type":"function","z":"52a72466.3c9fcc","name":"Scene on/off","func":"var idx = parseInt(msg.topic);\nif ( msg.payload === true )\n{\nmsg.payload = { \"command\": \"switchscene\", \"idx\": idx, \"switchcmd\": \"On\" };\n}\nelse if ( msg.payload === false )\n{\nmsg.payload = { \"command\": \"switchscene\", \"idx\": idx, \"switchcmd\": \"Off\" };\n}\nreturn msg","outputs":1,"noerr":0,"x":1510,"y":1240,"wires":[["548dbf84.d8059"]]},{"id":"aa772520.d82608","type":"debug","z":"52a72466.3c9fcc","name":"genmqtt","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1970,"y":860,"wires":[]},{"id":"e2fe4312.d22a4","type":"debug","z":"52a72466.3c9fcc","name":"device on off","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1680,"y":860,"wires":[]},{"id":"43ffeb5d.4dfa24","type":"debug","z":"52a72466.3c9fcc","name":"json","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":2010,"y":920,"wires":[]},{"id":"548dbf84.d8059","type":"json","z":"52a72466.3c9fcc","name":"","property":"payload","action":"","pretty":false,"x":1810,"y":1100,"wires":[["43ffeb5d.4dfa24","8b95874.1406a78"]]},{"id":"5d933108.daf91","type":"mqtt-broker","z":"","name":"Domoticz Master","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"15","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"df4bcc24.09f8d","type":"nora-config","z":"","name":"nora config","group":"","notify":false}] |
ik heb een RTL_SDR met RTL_433 waar ik goed kan zien dat mijn kaku remote berichten zend, en hierom lijkt het me goed om met dit "protocol" te beginnen . om te leren.
1
2
3
4
5
6
7
8
| Vdd - 3.3V (P1-01) SI - MOSI (P1-19) SO - MISO (P1-21) CS - SS (P1-24) SCLK - SCK (P1-23) GDO2 - GPIO (P1-22) GDO0 - not used in this demo GND - P1-25 |
ik heb rpi specifieke node(s) maar deze laten je alleen maar I2C,pwm, GPIO pin niks met SPI..
ik heb de MC8xxxx node, (A/D node) RFM69 modules geprobeerd helaas ..
https://www.npmjs.com/package/spi-device,
ook vind ik nergens om bv een node.js library te importeren
Jullie hulp met SPI communicatie op te zetten in node-rd word erg gewaardeerd .. het debuggen/opzetten van communicatie tussen de RPI en de CC1101 is stap 2 ..
Daarnaast wilde ik een msg.reset (via function node) sturen naar een throttle node alleen de orginele payload word gewist door de timestamp van de inject.node.
Doel was een CSV inlezen, dan regel voor regel de input controleren eventueel een waarde wijzigen en dan weer het totaal terug in een (nieuwe) csv stoppen. (lees orgineel overschrijven)
Tja vanalles
Ik denk te begrijpen dat je die NORA-nodes wil gebruiken om via je Google/Nest-speaker te zeggen dat een lamp aan moet, dat in NR op te vangen om vervolgens via MQTT de betreffende lamp aan te zetten in Domoticz.
Wat is dan de functionaliteit van het deel vóór de NORA-nodes? Waarom haal je op wat de huidige staat is van een switch of lamp? Als jij zegt "Lamp 1 aan", dan moet die lamp toch altijd het commando 'On' krijgen? Of hij al aanstond maakt dan niets uit.
Misschien kun je in een paar zinnen uitleggen wat eigenlijk de bedoeling is van de flow
Nog een kleine tip: je gebruikt nu bij al je checks ===. Daarmee check je niet alleen of true gelijk is aan true (om maar een voorbeeld te noemen), maar ook of beide van hetzelfde type zijn. Als de eerste true een string is (simpele tekst) en de tweede een boolean (alleen true of false), dan komt dat niet overeen met ===. In jouw flow lijkt het alleen van belang dat waardes overeenkomen en heb je dus genoeg aan ==. Dat scheelt misschien ergens een iets te kritische if-statement
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Ik denk dat node Observe alleen werkt als je een activiteit start.
Het zal denk ik niet werken als je een andere knop (volume/light/mute/enz) indrukt.
Daar was ik naar op zoek.
De basis flow heb ik ooit eerder van iemand gekregen en ben daar op verder gegaan. Ik heb er eerlijk gezegd niet over nagedacht waarom het stuk voor de NORA nodes staat. Hierbij ben ik er vanuit gegaan dat eerst geluisterd moet worden naar de MQTT boodschappen van Domoticz.
Nu je het zo schrijft, is dat wellicht inderdaad wat onnodig/onzinnig.
De bedoeling van de flow is eigenlijk dat ik via GA een aantal lampen/rolluiken kan schakelen. De lampen lukt overigens, de rolluiken hebben als groep/scene geen zin.
Verder vind ik het wel belangrijk dat NR vervolgens Domoticz op de hoogte brengt dat de status is gewijzigd. Vice-Versa is dat natuurlijk ook handig om te weten. Ongeacht waar ik iets schakel, via de Google Home app, Domoticz of via de GA, moet de status wel mee veranderen.
Heb ik daar dan niet het eerste gedeelte voor nodig?
edit: ik heb net de eerste Domoticz MQTT node in de flow uitgeschakeld en GA werkt, Domoticz en de Google Home worden ook bijgewerkt
[ Voor 7% gewijzigd door wervisser op 05-05-2020 13:26 ]
@wervisser Mooi dat het werkt! Ik denk dat je flow eerder niet goed op gang kwam, omdat je flow zo ingericht was dat het begon met input vanuit Domoticz in plaats van input van GA. Terwijl je GA als trigger wilt hebben om dingen te laten gebeuren
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Wat wil ik? Lees 2 luchtvochtigheids sensors uit, badkamer en voor nu even een buiten sensor, er komt een huiskamer sensor aan.
Als badkamer en buiten vochtigheid met pak m beet 20 uit elkaar liggen, moet de wtw afzuiging hier omhoog.

De bovenste node werkt niet, want de join node verwacht een msg.payload. Maar zodra ik de 2 change nodes verwijder, dan overschrijft hij bij de 2e vochtigheid sensor de msg.payload van de 1e.
De 2e node werkt wel maar niet goed, zodra ik op "deploy" druk haalt hij van beide sensors de waarde op, en dat werkt. Maar zodra bijvoorbeeld 1 vochtigheid waarde omhoog gaat, stuurt de andere sensor niks door, dit omdat die niet van waarde veranderd is.
Ik ben geen function node held, maar dit moet toch wel op te lossen zijn lijkt me?
Ik zou beide sensors los uitlezen,zoals aan de 2e node. Vervolgens zou ik beide sensor een msg.topic meegeven middels de set node. Vervolgens deze 2 joinen. In de function node kleine berekening. (ik ben verder geen pro, maar het werkt in ieder geval)Dacuuu schreef op dinsdag 5 mei 2020 @ 19:52:
Daar ben ik weer eens, zit al een uurtje of 2 te prutten op het volgende.
Wat wil ik? Lees 2 luchtvochtigheids sensors uit, badkamer en voor nu even een buiten sensor, er komt een huiskamer sensor aan.
Als badkamer en buiten vochtigheid met pak m beet 20 uit elkaar liggen, moet de wtw afzuiging hier omhoog.
[Afbeelding]
De bovenste node werkt niet, want de join node verwacht een msg.payload. Maar zodra ik de 2 change nodes verwijder, dan overschrijft hij bij de 2e vochtigheid sensor de msg.payload van de 1e.
De 2e node werkt wel maar niet goed, zodra ik op "deploy" druk haalt hij van beide sensors de waarde op, en dat werkt. Maar zodra bijvoorbeeld 1 vochtigheid waarde omhoog gaat, stuurt de andere sensor niks door, dit omdat die niet van waarde veranderd is.
Ik ben geen function node held, maar dit moet toch wel op te lossen zijn lijkt me?
1
| [{"id":"e96d653f.bd7dd","type":"change","z":"efc7bd79.e3d128","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"badkamer","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":1640,"wires":[["4e9ba5c4.bf27ec"]]},{"id":"79a85a4e.6ee20c","type":"change","z":"efc7bd79.e3d128","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"buiten","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":1700,"wires":[["4e9ba5c4.bf27ec"]]},{"id":"2cda5ccf.0f0e04","type":"inject","z":"efc7bd79.e3d128","name":"badkamer","topic":"","payload":"85","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":200,"y":1620,"wires":[["e96d653f.bd7dd"]]},{"id":"4c5c8e2c.a0e238","type":"inject","z":"efc7bd79.e3d128","name":"buiten","topic":"","payload":"55","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":190,"y":1700,"wires":[["79a85a4e.6ee20c"]]},{"id":"4e9ba5c4.bf27ec","type":"join","z":"efc7bd79.e3d128","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":610,"y":1660,"wires":[["f4515030.b09d3"]]},{"id":"7a35deee.d9b83","type":"debug","z":"efc7bd79.e3d128","name":"","active":true,"tosidebar":true,"console":true,"tostatus":false,"complete":"payload","targetType":"msg","x":1000,"y":1660,"wires":[]},{"id":"f4515030.b09d3","type":"function","z":"efc7bd79.e3d128","name":"Vergelijken","func":"// this is passed a payload which is an object with\n\nif (msg.payload.badkamer - msg.payload.buiten >20) \n{\n msg.payload = \"verschil hoger dan 20\"\n} \nelse\n{\n msg.payload = \"verschil kleiner dan 20\"\n \n}\nreturn msg;","outputs":1,"noerr":0,"x":790,"y":1660,"wires":[["7a35deee.d9b83"]]}] |
Dank! Net 1 minuut voor je reactie had ik een werkende flow te pakken. Maar ik heb die van jou ge-edit zodat die ook werkt! super happy.denuz schreef op dinsdag 5 mei 2020 @ 20:31:
[...]
Ik zou beide sensors los uitlezen,zoals aan de 2e node. Vervolgens zou ik beide sensor een msg.topic meegeven middels de set node. Vervolgens deze 2 joinen. In de function node kleine berekening. (ik ben verder geen pro, maar het werkt in ieder geval)
code:
1 [{"id":"e96d653f.bd7dd","type":"change","z":"efc7bd79.e3d128","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"badkamer","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":1640,"wires":[["4e9ba5c4.bf27ec"]]},{"id":"79a85a4e.6ee20c","type":"change","z":"efc7bd79.e3d128","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"buiten","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":1700,"wires":[["4e9ba5c4.bf27ec"]]},{"id":"2cda5ccf.0f0e04","type":"inject","z":"efc7bd79.e3d128","name":"badkamer","topic":"","payload":"85","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":200,"y":1620,"wires":[["e96d653f.bd7dd"]]},{"id":"4c5c8e2c.a0e238","type":"inject","z":"efc7bd79.e3d128","name":"buiten","topic":"","payload":"55","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":190,"y":1700,"wires":[["79a85a4e.6ee20c"]]},{"id":"4e9ba5c4.bf27ec","type":"join","z":"efc7bd79.e3d128","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":610,"y":1660,"wires":[["f4515030.b09d3"]]},{"id":"7a35deee.d9b83","type":"debug","z":"efc7bd79.e3d128","name":"","active":true,"tosidebar":true,"console":true,"tostatus":false,"complete":"payload","targetType":"msg","x":1000,"y":1660,"wires":[]},{"id":"f4515030.b09d3","type":"function","z":"efc7bd79.e3d128","name":"Vergelijken","func":"// this is passed a payload which is an object with\n\nif (msg.payload.badkamer - msg.payload.buiten >20) \n{\n msg.payload = \"verschil hoger dan 20\"\n} \nelse\n{\n msg.payload = \"verschil kleiner dan 20\"\n \n}\nreturn msg;","outputs":1,"noerr":0,"x":790,"y":1660,"wires":[["7a35deee.d9b83"]]}]
Eerst de modded versie van de jouwe, het gaat vooral om de function node

1
| [{"id":"345e072c.367af8","type":"server-state-changed","z":"6fcdccca.42b164","name":"Badkamer sensor","server":"1997c54b.5ff4fb","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.humidity_158d0001b953c8","entityidfiltertype":"exact","outputinitially":true,"state_type":"num","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":false,"x":124,"y":606.1112308502197,"wires":[["d4ddfaac.475fd8"]]},{"id":"aa444afb.4b27f8","type":"api-current-state","z":"6fcdccca.42b164","name":"","server":"1997c54b.5ff4fb","version":1,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"sensor.br_humidity","state_type":"num","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":606.0000076293945,"y":609.1112308502197,"wires":[["518a0ca9.24bbe4"]]},{"id":"d4ddfaac.475fd8","type":"change","z":"6fcdccca.42b164","name":"","rules":[{"t":"set","p":"badkamer","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":333.00000381469727,"y":608.3333988189697,"wires":[["aa444afb.4b27f8"]]},{"id":"8a3fdb69.e6a608","type":"debug","z":"6fcdccca.42b164","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1049.0000076293945,"y":680.3333988189697,"wires":[]},{"id":"518a0ca9.24bbe4","type":"change","z":"6fcdccca.42b164","name":"","rules":[{"t":"set","p":"buiten","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":864.0000076293945,"y":607.3333988189697,"wires":[["95fcb2df.f1dea"]]},{"id":"95fcb2df.f1dea","type":"function","z":"6fcdccca.42b164","name":"Vergelijken","func":"// this is passed a payload which is an object with\n\nif (msg.badkamer - msg.buiten >20) \n{\n msg.payload = \"verschil hoger dan 20\"\n} \nelse\n{\n msg.payload = \"verschil kleiner dan 20\"\n \n}\nreturn msg;","outputs":1,"noerr":0,"x":1048.0000076293945,"y":608.3333988189697,"wires":[["8a3fdb69.e6a608"]]},{"id":"1997c54b.5ff4fb","type":"server","z":"","name":"Home Assistant","legacy":false,"rejectUnauthorizedCerts":false,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":false}] |
En deze homebrew versie werkt ook goed.

1
| [{"id":"6aec9c9f.22f404","type":"server-state-changed","z":"6fcdccca.42b164","name":"Badkamer sensor","server":"1997c54b.5ff4fb","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.humidity_158d0001b953c8","entityidfiltertype":"exact","outputinitially":true,"state_type":"num","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":false,"x":138,"y":419.0000057220459,"wires":[["18ba44c6.19689b","a7b74028.05b91"]]},{"id":"18ba44c6.19689b","type":"api-current-state","z":"6fcdccca.42b164","name":"","server":"1997c54b.5ff4fb","version":1,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"sensor.br_humidity","state_type":"num","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":461,"y":388.0000057220459,"wires":[["a7b74028.05b91"]]},{"id":"a7b74028.05b91","type":"join","z":"6fcdccca.42b164","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":472.00000381469727,"y":467.00000762939453,"wires":[["bf33940b.71cb08"]]},{"id":"267d009b.a346d","type":"debug","z":"6fcdccca.42b164","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":905.0000076293945,"y":418.0000066757202,"wires":[]},{"id":"bf33940b.71cb08","type":"calculator","z":"6fcdccca.42b164","name":"","inputMsgField":"payload","outputMsgField":"payload","operation":"sub","constant":"","x":715.0000038146973,"y":441.0000057220459,"wires":[["267d009b.a346d"]]},{"id":"1997c54b.5ff4fb","type":"server","z":"","name":"Home Assistant","legacy":false,"rejectUnauthorizedCerts":false,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":false}] |
:strip_exif()/f/image/Q94gWzkjTFprWWV3ZrQlje96.jpg?f=fotoalbum_large)
Het leek mij wel handig om via het Node-RED dashboard een toggleswitch te hebben zodat ik de notificaties evt. ook uit kan zetten. Dit werkt prima, via de switch node check ik op de waarde 'true' is. Punt is alleen dat ik de toggle na uitzetten misschien vergeet weer aan te zetten en de flow dan werkeloos staat te zijn. Ik wil hem daarom bijv. om 08:30 automatisch aanzetten. Schijnbaar is er geen optie om hem default op aan te zetten (is al eens over geklaagd lees ik). Dit lukt nu d.m.v. de inject. Vervelende is alleen, dat zodra het nu 08:30 is, hij een inject gaat doen en de flow dan gaat lopen en ik een pushnotificatie krijg.
Het zal vast iets simpels zijn (ik kan beter gaan slapen op dit tijdstip

TL;DR: Hoe zorg ik dat ik wel de toggle op aan/true kan zetten, maar dat niet de rest van de flow gaat lopen wanneer dit gedaan wordt?
[ Voor 4% gewijzigd door ThinkPad op 06-05-2020 00:58 ]

Deze flow werkt als volgt -->
- een "rate limit" van 1 msg per 3 seconden
- triggert(node) het uitlezen van de CVS en blokkeert daarna (trigger node)
- beide berichten komen in een join (array)
- reset trigger(node)
- stuurt de join door om verder te verwerken ..
wellicht te complex, het is maar een idee
@Gizz nu stel ik de vraag betreft SPI en no response..
Tja vanalles
Flow Context: https://nodered.org/docs/user-guide/context en https://nodered.org/docs/...ng-functions#storing-dataThinkPadd schreef op woensdag 6 mei 2020 @ 00:43:
Het zal vast iets simpels zijn (ik kan beter gaan slapen op dit tijdstip) maar ik kom er even niet uit.
TL;DR: Hoe zorg ik dat ik wel de toggle op aan/true kan zetten, maar dat niet de rest van de flow gaat lopen wanneer dit gedaan wordt?
Je gebruikt een Flow Context om de boolean in op te slaan. Je kan dan simpelweg de boolean value opslaan maar ook een timestamp hoe lang hij onderdrukt moet zijn. In je flow controleer je dan simpelweg of de boolean true is, anders ga je verder. Zo vang je ook null values af.
Om de boolean aan te passen kan je in principe van alles gebruiken. Bijvoorbeeld een timer die elke minuut checked of de suppress timestap al verstreken is maar ook handmatige acties. Je kan ook combinaties hiervan gebruiken. Wellicht zelfs een ESP8266 met fysieke knoppen via MQTT om te triggeren?
Als je een Flow Context gebruikt hoeft de flow die deze waarde aanpast niet verbonden te zijn met een flow die deze waarde uitleest. Dat scheelt dus een hoop gedoe.
Graag verwijs ik je naar deze post van mij: Tsurany in "Node-RED - grafisch 'programmeren' (bijv. voor domotica)"
Bovenaan zie je ook een inject met een function om de Flow Context te resetten.
[ Voor 8% gewijzigd door Tsurany op 06-05-2020 11:18 ]
SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N
Ik blijf tegen de onderstaande foutmelding lopen.
8-5-2020 12:07:25node: Device on/off
function : (error)
"ReferenceError: on is not defined (line 4, col 15)"
1
| [{"id":"25ca59c4.ed4086","type":"mqtt out","z":"f5374572.0b97c8","name":"","topic":"MCU_Badkamer/cmnd/power","qos":"1","retain":"","broker":"5d933108.daf91","x":1130,"y":280,"wires":[]},{"id":"5d933108.daf91","type":"mqtt-broker","z":"","name":"Domoticz Master","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"15","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""}] |
Dan is er nog niemand met kennis en tijd langsgekomen in dit topic. Er zijn natuurlijk geen garanties dat iemand je altijd verder kan helpen. Komt misschien nog
Volgens mij is dit alleen je MQTT-out node en ontbreekt de rest van de flowwervisser schreef op vrijdag 8 mei 2020 @ 12:08:
code:
1 [{"id":"25ca59c4.ed4086","type":"mqtt out","z":"f5374572.0b97c8","name":"","topic":"MCU_Badkamer/cmnd/power","qos":"1","retain":"","broker":"5d933108.daf91","x":1130,"y":280,"wires":[]},{"id":"5d933108.daf91","type":"mqtt-broker","z":"","name":"Domoticz Master","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"15","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
1
| [{"id":"f5374572.0b97c8","type":"tab","label":"Mechanische ventilatie","disabled":false,"info":""},{"id":"5d6a60fb.c63fb","type":"function","z":"f5374572.0b97c8","name":"Luchtvochtigheidscontrole","func":"msg.topic = msg.payload\nif (msg.payload > 50 || msg.payload === on )\n{\n msg.payload = true\n}\nelse if (msg.payload < 50 || msg.payload === off )\n{\n msg.payload = false\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":410,"y":280,"wires":[["e633d6ae.5dfb58","b19e4f23.f609c"]]},{"id":"e633d6ae.5dfb58","type":"function","z":"f5374572.0b97c8","name":"Device on/off","func":"msg.topic = msg.payload\nif ( msg.payload === true )\n{\nmsg.payload = on;\n}\nelse if ( msg.payload === false )\n{\nmsg.payload = off;\n}\nreturn msg","outputs":1,"noerr":0,"x":670,"y":280,"wires":[["25ca59c4.ed4086","6495150f.bacd9c","8f86b9b1.d2ecb8"]]},{"id":"d8ee9547.15beb8","type":"mqtt in","z":"f5374572.0b97c8","name":"DHT22 Temperature","topic":"MCU_Badkamer/DHT22/Temperature","qos":"2","datatype":"json","broker":"5d933108.daf91","x":110,"y":340,"wires":[[]]},{"id":"191f622.e18ef9e","type":"mqtt in","z":"f5374572.0b97c8","name":"DHT22 Humidity","topic":"MCU_Badkamer/DHT22/Humidity","qos":"2","datatype":"json","broker":"5d933108.daf91","x":100,"y":280,"wires":[["5d6a60fb.c63fb","f5aa29b6.af8b18"]]},{"id":"25ca59c4.ed4086","type":"mqtt out","z":"f5374572.0b97c8","name":"","topic":"MCU_Badkamer/cmnd/power","qos":"1","retain":"","broker":"5d933108.daf91","x":1130,"y":280,"wires":[]},{"id":"6495150f.bacd9c","type":"json","z":"f5374572.0b97c8","name":"","pretty":false,"x":870,"y":320,"wires":[["25ca59c4.ed4086","8dcd05d1.631e48"]]},{"id":"8dcd05d1.631e48","type":"debug","z":"f5374572.0b97c8","name":"json","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1040,"y":400,"wires":[]},{"id":"8f86b9b1.d2ecb8","type":"debug","z":"f5374572.0b97c8","name":"device","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":780,"y":460,"wires":[]},{"id":"f5aa29b6.af8b18","type":"debug","z":"f5374572.0b97c8","name":"Humidity","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":330,"y":440,"wires":[]},{"id":"b19e4f23.f609c","type":"debug","z":"f5374572.0b97c8","name":"luchtvochtig","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":540,"y":500,"wires":[]},{"id":"5d933108.daf91","type":"mqtt-broker","z":"","name":"Domoticz Master","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"15","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""}] |
Nu ik dat weet kan ik verder met SPI communicatie via node.js .. .. ik hoop dat ik zover kom dat ik een CC1101 node aan de node-red pallet kan toevoegen ..
Volgende stap word het ontvangen/decoderen/zenden .. maar dat is 6 stappen verder ben nu al blij als ik een data stroom zou zien ..
Tja vanalles
Je moet even wat dingen omdraaien in je topic.wervisser schreef op vrijdag 8 mei 2020 @ 12:54:
Oeps, my bad
1
| MCU_Badkamer/cmnd/power |
Moet bij Tasmota zijn:
1
| cmnd/MCU_Badkamer/power |
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
Sinds enkele weken ben ik met NR, voor de monitoring van technische ruimtes in een appartementencomplex welke via een draadloze node (beetje verwarrend soms, die naam) verzonden wordt via het LoRaWAN netwerk van The Things Network (waar ook weer een topic over loopt op dit forum, maar ik merk hier dat er veel meer aan NR kan hangen haha). Denk aan storingen van (in dit geval, waar de eerste test draait), het ketelhuis. Dat werkt opzich goed, gisteren heb ik daar een deurcontact aan toegevoegd en waar ik in eerste instantie een vertraging (soort anti-dender) wilde inbouwen voor bekende bezoekers, zoals de complexbeheerder, zodat de deur snel geopend en gesloten kan worden, probeer ik nu een andere weg in te slaan.
Deze meldingen gaan via een Telegram BOT naar een handvol personen. Nu ben ik bezig om een "aanmeld" optie in te bouwen waarmee gebruikers van deze app zichzelf kunnen aanmelden, de BOT weet dan de gebruikersnaam en toont deze in de melding op het moment dat een deur open gaat. Nu voor 1 enkele node werkt dat goed, maar er komen meer nodes/devices voor meerdere ruimtes en het is des te gebruiksvriendelijker om daar knoppen voor te maken. Eerste knop "aanmelden" (misschien komen er meer knoppen in de toekomst) en vervolgens krijg je nieuwe knoppen te zien met de verschillende ruimtes waar de gebruiker zich kan aanmelden.
Kort maar krachtig, ik zit wat te vechten om deze knoppen in NR te krijgen. Ik zie wat voorbeelden met reply_markup, maar wat ik dan niet snap, moet er dan al een bericht verstuurd zijn, voordat die knoppen getoond kunnen worden? Volgens mij kijk ik ergens overheen of denk ik te moeilijk
Anyhows, iemand ervaring met knoppen die een commando kunnen versturen?
[ Voor 7% gewijzigd door Raider095 op 08-05-2020 20:36 ]
Deze https://flows.nodered.org/node/node-red-contrib-telegrambot uitbreiding is behoorlijk uitgebreid en kan ook met knoppen in de vorm van een toetsenbord werken.
Hoe doe je trouwens het aanmelden van personen ? Kan je dat delen?
Yes die telegrambot gebruik ik ook, maar qua knoppen kom ik er gewoon nog niet helemaal uit. Ben mezelf wel met terugwerkende kracht door dit topic heen aan het werken, staan best leuke dingen inAndre_J schreef op vrijdag 8 mei 2020 @ 21:05:
Ik weet niet op welke manier je met telegram bot communiceert.
Deze https://flows.nodered.org/node/node-red-contrib-telegrambot uitbreiding is behoorlijk uitgebreid en kan ook met knoppen in de vorm van een toetsenbord werken.
Hoe doe je trouwens het aanmelden van personen ? Kan je dat delen?
Qua aanmelden weet ik ook niet of ik de juiste weg bewandel, maar het werkt...!
Ik gebruik een Telegram Command node. Daar heb ik voor nu even het commando /aanmelden in gezet.
Die gaat vervolgens naar een functienode;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| global.set("aanmelding", msg.originalMessage.from.first_name); if (msg.payload !== undefined) { msg.payload = {}; msg.payload.chatId = msg.originalMessage.chat.id; msg.payload.type = "message"; msg.payload.content = "U bent aangemeld"; msg.payload.reply_markup = { inline_keyboard: [ [{ text: "Yes" }], [{ text: "No" }] ] } return msg; } |
Die 2 knoppen dienen even ter test, maar krijg ik nog niet zichtbaar...
Vervolgens heb ik een functie waarin de triggers staan van de diverse alarmcontacten. Het deurcontact luidt als volgt;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| var aanmelding = global.get("aanmelding"); if (msg.payload.Port4changed) { if (msg.payload.Port4current) { port4 = "*" + port4 + " OPEN*"; if (aanmelding !== null) { port4 += " (" + aanmelding + ")"; global.set("aanmelding", null); } } else port4 = "*" + port4 + " gesloten*"; } else port4 = port4 + " gesloten"; |
Ter voorbereiding op uitbreiding van dit systeem is het een global variabele. Telegram zit in een aparte flow en de monitoring zit in een aparte flow en zo komen er nog wel meer bij in de toekomst. Dit kan resulteren in een aantal weergaves;
Deur OPEN
Deur OPEN (Pietje)
Deur gesloten
So far so good. Verschillende gebruikers kunnen zich 'aanmelden' en die naam verschijnt dan ook netjes. Dus dat deel van de coding zit redelijk goed, los van het feit of het netter kan, haha. Maar dat wil ik dus in knoppen zetten, temeer omdat er in de toekomst meerdere ruimtes komen binnen dit systeem en het voor de gebruikers als leek een beetje werkbaar moet blijven. Click and Go
Die global "aanmelding" wil ik tijdelijk laten bestaan. Stel dat iemand zich 'aanmeldt' maar zich toch bedenkt.. hi, dan blijft die variabele staan. Eigenlijk wil ik daar een time-to-live van bijvoorbeeld 1 minuut tegenover zetten. 1 minuut om daadwerkelijk die ruimte te betreden en de variabele (de naam) te kunnen gebruiken, daarna wordt hij ge-nulled. Sommige dingen freubel ik zelf wel, maar zoiets zit ik ook weer even mee te stoeien..
EDIT: Opgelost mbv de node-red-contrib-timeout. Die wordt getriggerd door de 'aanmeld-functie' en na 30 seconden leegt hij de variabele en stuurt de aanmelder een berichtje dat hij te laat was
[ Voor 15% gewijzigd door Raider095 op 09-05-2020 00:11 ]
Nu dacht ik dat het dan makkelijk zou zijn om de reeds verstuurde MQTT door te sturen naar Domoticz.
Onderstaande flow heb ik gemaakt en de temperatuur en luchtvochtigheid wordt samengevoegd. Nu moet ik die echter nog in een Domoticz HTTP post vormen en daar gaat het mis.
Debug node laat de juiste informatie zien
1
2
3
| 9-5-2020 20:32:56node: 5c41c94.e978b38 humidity : msg.payload : Object { temperature: 22.7, humidity: 43.6 } |
De waarde die Domoticz kan begrijpen is bijvoorbeeld.
1
| MQTT: Topic: domoticz/in, Message: {"idx":343,"RSSI":8,"nvalue":0,"svalue":"21.70;62.90;3"} |
Mijn flow
1
| [{"id":"d8ee9547.15beb8","type":"mqtt in","z":"f5374572.0b97c8","name":"DHT22 Temperature","topic":"MCU_Badkamer/DHT22/Temperature","qos":"2","datatype":"json","broker":"5d933108.daf91","x":110,"y":540,"wires":[["2499a707.4ca5c8","9f3550ed.4630e"]]},{"id":"191f622.e18ef9e","type":"mqtt in","z":"f5374572.0b97c8","name":"DHT22 Humidity","topic":"MCU_Badkamer/DHT22/Humidity","qos":"2","datatype":"json","broker":"5d933108.daf91","x":80,"y":280,"wires":[["5d6a60fb.c63fb","c713d60c.1268b8"]]},{"id":"5c41c94.e978b38","type":"debug","z":"f5374572.0b97c8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":820,"y":560,"wires":[]},{"id":"38cd9b37.fe67b4","type":"join","z":"f5374572.0b97c8","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":530,"y":540,"wires":[["5c41c94.e978b38","814c72c3.459d9"]]},{"id":"814c72c3.459d9","type":"function","z":"f5374572.0b97c8","name":"Format Data","func":"var temp = { payload:\"msg.payload.temperature\" };\nvar humi = { payload:\"msg.payload.humidity\" };;\n\nmsg.payload = {}\n\nmsg.payload.idx = 343\nmsg.payload.nvalue = 0\nmsg.payload.svalue = [temp,humi];\n\nreturn msg;","outputs":1,"noerr":0,"x":630,"y":680,"wires":[["42103c81.1bd244"]]},{"id":"42103c81.1bd244","type":"debug","z":"f5374572.0b97c8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":870,"y":680,"wires":[]},{"id":"2499a707.4ca5c8","type":"debug","z":"f5374572.0b97c8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":210,"y":660,"wires":[]},{"id":"c713d60c.1268b8","type":"change","z":"f5374572.0b97c8","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"humidity","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":310,"y":400,"wires":[["38cd9b37.fe67b4","6d59a395.3b739c"]]},{"id":"9f3550ed.4630e","type":"change","z":"f5374572.0b97c8","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"temperature","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":310,"y":500,"wires":[["38cd9b37.fe67b4","6d59a395.3b739c"]]},{"id":"6d59a395.3b739c","type":"debug","z":"f5374572.0b97c8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":450,"y":700,"wires":[]},{"id":"5d933108.daf91","type":"mqtt-broker","z":"","name":"Domoticz Master","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"15","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""}] |
/f/image/CRPOBqfhyVzBnBXeIEzy21No.png?f=fotoalbum_large)
1
| [{"id":"2b50bc39.c8d00c","type":"mqtt in","z":"fccb946.d8f5f68","name":"","topic":"ESP_fijnstof/DHT22/Temperature","qos":"2","datatype":"json","broker":"c9b2091b.ca27b8","x":130,"y":660,"wires":[["a195e5dd.2acea8"]]},{"id":"a195e5dd.2acea8","type":"change","z":"fccb946.d8f5f68","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"temp","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":660,"wires":[["59e5d6d4.b5151"]]},{"id":"59e5d6d4.b5151","type":"template","z":"fccb946.d8f5f68","name":"DMZ JSON","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"command\": \"udevice\", \"idx\": 570, \"nvalue\": 0, \"svalue\": \"{{flow.temp}};{{flow.hum}};0\"}","output":"json","x":590,"y":680,"wires":[["6aa134ed.2fd68c"]]},{"id":"3cf14fc7.e73d8","type":"mqtt in","z":"fccb946.d8f5f68","name":"","topic":"ESP_fijnstof/DHT22/Humidity","qos":"2","datatype":"json","broker":"c9b2091b.ca27b8","x":120,"y":700,"wires":[["10cf3842.170318"]]},{"id":"10cf3842.170318","type":"change","z":"fccb946.d8f5f68","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"hum","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":700,"wires":[["59e5d6d4.b5151"]]},{"id":"6aa134ed.2fd68c","type":"mqtt out","z":"fccb946.d8f5f68","name":"","topic":"domoticz/in","qos":"","retain":"","broker":"c9b2091b.ca27b8","x":750,"y":680,"wires":[]},{"id":"c9b2091b.ca27b8","type":"mqtt-broker","z":"","name":"","broker":"192.168.1.2","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"15","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""}] |
Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX
1
| [{"id":"f5374572.0b97c8","type":"tab","label":"Mechanische ventilatie","disabled":false,"info":""},{"id":"5d6a60fb.c63fb","type":"function","z":"f5374572.0b97c8","name":"Luchtvochtigheidscontrole","func":"msg.topic = msg.payload\nif (msg.payload > 65 )\n{\n msg.payload = true\n}\nelse if (msg.payload < 60 )\n{\n msg.payload = false\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":350,"y":57,"wires":[["e633d6ae.5dfb58"]]},{"id":"e633d6ae.5dfb58","type":"function","z":"f5374572.0b97c8","name":"Device on/off","func":"msg.topic = msg.payload\nif ( msg.payload === true )\n{\nmsg.payload = \"ON\";\n}\nelse if ( msg.payload === false )\n{\nmsg.payload = \"OFF\";\n}\nreturn msg","outputs":1,"noerr":0,"x":590,"y":57,"wires":[["25ca59c4.ed4086"]]},{"id":"d8ee9547.15beb8","type":"mqtt in","z":"f5374572.0b97c8","name":"DHT22 Temperature","topic":"MCU_Badkamer/DHT22/Temperature","qos":"2","datatype":"json","broker":"5d933108.daf91","x":110,"y":177,"wires":[["602c9bc6.2e3f54"]]},{"id":"191f622.e18ef9e","type":"mqtt in","z":"f5374572.0b97c8","name":"DHT22 Humidity","topic":"MCU_Badkamer/DHT22/Humidity","qos":"2","datatype":"json","broker":"5d933108.daf91","x":100,"y":57,"wires":[["5d6a60fb.c63fb","3b4d28f1.a93e78"]]},{"id":"25ca59c4.ed4086","type":"mqtt out","z":"f5374572.0b97c8","name":"","topic":"cmnd/SO_MV_Fan/POWER","qos":"1","retain":"","broker":"5d933108.daf91","x":840,"y":57,"wires":[]},{"id":"602c9bc6.2e3f54","type":"change","z":"f5374572.0b97c8","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"temp","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":177,"wires":[["e6f8b0d4.51d62"]]},{"id":"e6f8b0d4.51d62","type":"template","z":"f5374572.0b97c8","name":"DMZ JSON","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"command\": \"udevice\", \"idx\": 343, \"nvalue\": 0, \"svalue\": \"{{flow.temp}};{{flow.hum}};0\"}","output":"json","x":550,"y":137,"wires":[["ac9b5064.76fbe"]]},{"id":"3b4d28f1.a93e78","type":"change","z":"f5374572.0b97c8","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"hum","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":117,"wires":[["e6f8b0d4.51d62"]]},{"id":"ac9b5064.76fbe","type":"mqtt out","z":"f5374572.0b97c8","name":"","topic":"domoticz/in","qos":"","retain":"","broker":"5d933108.daf91","x":750,"y":137,"wires":[]},{"id":"5d933108.daf91","type":"mqtt-broker","z":"","name":"Domoticz Master","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"15","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""}] |
Installeer ik NodeRed en OpenHab in een andere host, dan lukt het wel ...
node red is een op zichzelf staand ding, zolang de nodig poort(en) openstaan (firewall) zou dat allemaal toch geen issue mogen zijn..devastator83 schreef op maandag 11 mei 2020 @ 19:25:
Is het iemand gelukt om vanuit Node Red in HomeAssistant een verbinding te maken naar OpenHab (terwijl die in dezelfde PC maar in verschillende dockers draaien)? Om de 1 of andere reden wil dat maar niet lukken.
Installeer ik NodeRed en OpenHab in een andere host, dan lukt het wel ...
Tja vanalles
Meerdere dockers?devastator83 schreef op maandag 11 mei 2020 @ 19:25:
Is het iemand gelukt om vanuit Node Red in HomeAssistant een verbinding te maken naar OpenHab (terwijl die in dezelfde PC maar in verschillende dockers draaien)? Om de 1 of andere reden wil dat maar niet lukken.
Ik denk dat je meerdere containers bedoeld. Hoe zijn deze aangemaakt, gebruiken ze hetzelfde netwerk ?
Wat gebruik jij om te checken wie er thuis is?lolgast schreef op woensdag 6 mei 2020 @ 07:28:
@ThinkPad Ik heb het op deze manier opgelost:
[Afbeelding]
We hebben beiden een iPhone, maar ik weet nog uit m'n Domoticz tijd dat pingen naar een iPhone kansloos is, omdat hij zodra het scherm uitgaat, niet meer reageert op ping.
Misschien kan ik uit m'n UniFi controller ophalen wie er verbonden is met de wifi, dit lijkt wel geschikt: https://docs.joepverhaeg.nl/presence/
Ben nu aan het spelen met die flow uit m'n link, ik kan daarmee nu een array van de clients die verbonden zijn met m'n accespoints ophalen. Eens kijken hoe betrouwbaar dat is

Voor mijn toepassing ("naar wie moet Node-RED pushnotificatie sturen?") is dit snel genoeg. Als je er verlichting mee wilt schakelen als je in het donker thuiskomt dan is het te langzaam vermoed ik en stap je een donkere woonkamer binnen. Maar dat gaat bij mij via Philips Hue die het licht aanzet zodra de bewegingssensor beweging ziet en het donker genoeg is.