Notificaties in Domoticz toevoegen

Door kazz1980 op dinsdag 10 september 2019 11:26 - Reacties (8)
Categorie: Domoticz, Views: 640

Geen producten, puur software dit keer! Ik had al langere tijd de wens om bij bepaalde gebeurtenissen in mijn Smart Home een berichtje te krijgen op de telefoon. Met name interessant wanneer het alarm af gaat, of wanneer één van de kinderen het alarm uitzet (en mogelijk vergeet weer aan te zetten...). Maar: notificaties instellen bleek een grotere uitdaging dan verwacht. Er is bijna geen documentatie van te vinden en de documentatie die er wel was bleek foutief te zijn! (inmiddels allemaal gefixt... Domoticz is open source immers, dus heb mijn steentje bijgedragen!)

Het doel
Mijn belangrijkste doel was dat ik op mijn mobiel en smart watch een waarschuwing krijg wanneer het alarm af gaat. Tot zover was het alarm enkel een geluidssignaal in huis en alle lampen knipperen in rood en blauw (imitatie Amerikaans zwaailicht... Schrikt best af, en als een inbreker gevoelig mocht zijn voor epileptische aanvallen ligt diegene meteen gestrekt!). Maar goed, uiteindelijk was het verder een dummy systeem... Nergens was het voor mij zichtbaar wanneer het alarm af ging als ik niet daadwerkelijk thuis was. Dus, er moest iets geregeld om een notificatie te krijgen op mijn telefoon (en horloge). De zoektocht begon.

Vele mogelijkheden...
In Domoticz is er onder 'Instellingen> Instellingen > Notifications' veel te vinden over het instellen van notificaties. Er zijn vele services waar gebruik gemaakt kan worden... Na wat uitzoekwerk gekozen voor PushOver. Daar vond ik meerdere goede verhalen over... Maar of deze daadwerkelijk beter is dan de andere diensten? Geen idee! Ik vermoed dat het allemaal min of meer hetzelfde werkt.
Wanneer je gebruik wilt maken van PushOver moet je je eerst aanmelden via https://pushover.net/. Je ontvangt dan een User Key. Vervolgens voeg je een applicatie, te weten Domoticz, toe en krijg je een API Key. Deze beide keys moeten ingevuld op genoemde Notifications pagina in Domoticz. Daarna nog de PushOver app installeren op de telefoon en ook daar de User key opgeven en voila: alles is gereed om notificaties te verzenden... Een simpele druk op de 'Test'-knop in Domoticz bevestigt dit.

Notificaties verzenden vanuit schakelaars, Blockly of LUA
Nu zijn er drie mogelijkheden. Vanuit het 'Schakelaars'- scherm kun je bij iedere schakelaar of sensor een notificatie toevoegen. Je geeft dan aan wanneer er een notificatie verzonden moet, met welke prioriteit en welk bericht deze notificatie mag bevatten. Eventueel kun je ook de default intervallen nog overrulen...
Erg eenvoudig om te doen en het werkt vlekkeloos! In de app kun je instellen dat hoge prioriteit berichten als 'emergency' bericht behandeld worden. Deze spelen dan een geluid af, zelfs wanneer het geluid op de telefoon geheel uitgeschakeld is. Met name voor het alarm systeem ideaal!
Ook vanuit Blockly scripts is het toevoegen van notifcaties eenvoudig. Onder het kopje 'Messages' vind je meteen een blok waarmee een notificatie ingeregeld kan worden op vergelijkbare wijze als bij de Schakelaars/sensoren.

Ik wilde echter de intelligentie om te bepalen wanneer een bericht naar de telefoon gaat in mijn LUA scripts... En daarvoor was een stukje code nodig dat nergens bleek te vinden! Met veel zoekwerk vond ik in de Domoticz Wiki enige informatie, maar de diverse pagina's spraken elkaar tegen en de code bleek niet te werken! Na enig uitzoekwerk ontdekte ik (met hulp van de community) dat er een fout zat in de Wiki... De volgorde van de items was verkeerd. Dit hebben we dus hersteld en de volgende code werkt:


code:
1
commandArray['SendNotification']='subject#body#priority#sound#extraData#subsystem(s)



code:
1
2
3
4
5
6
7
8
9
10
11
12
--[[ 

SendNotification = commandArray[#commandArray + 1] = { SendNotification = 'subject#body#priority#sound#extraData#subSystem1;subSystem2;subSystem'3

subject = string      ==>> required
body = string         ==>> required
priority = number     ==>> optional (-2,-1,0,1,2  = low, moderate, normal, high, emergency) default normal
sound = string        ==>> optional (examples: bike, magic, siren )                        
extraData => ,string  ==>> optional (This is the device name for pushover notifications. leave blank to send to all devices registered with Pushover) Not confirmed with other subsystems.
subSystem ==> string  ==>> optional (examples: pushover, pushover;pushsafer;telegram,  gcm )  default All defined subsystems    

]]--



In mijn geval was het volgende voldoende:

code:
1
commandArray['SendNotification']='Deur#Het alarm gaat af!#2'



Het is nu niet meer te missen wanneer mijn alarm afgaat... En dát was precies de bedoeling...
Deze informatie heb ik ook toegevoegd aan de Domoticz Wiki: zie https://www.domoticz.com/wiki/SendNotification.

Zelf andere ervaring met notificaties in Domoticz? Laat het weten en vooral: vul de Wiki-pagina aan...

Volgende: Binnenkort in dit theater 12-09 Binnenkort in dit theater
Volgende: Yeelight lampen in Homekit 27-08 Yeelight lampen in Homekit

Reacties


Door Tweakers user plofkip, dinsdag 10 september 2019 11:40

En hoe gebruik je nou een #-je in je subject of body? :+

Door Tweakers user kazz1980, dinsdag 10 september 2019 11:48

plofkip schreef op dinsdag 10 september 2019 @ 11:40:
En hoe gebruik je nou een #-je in je subject of body? :+
Gewoon niet doen :P
Heb geen idee... Bij mijn weten is er geen escape key voor oid. Wel kun je variabelen gebruiken overigens in de notificatie...
Bijvoorbeeld:
commandArray['SendNotification']='Deur#Het alarm gaat nu al '..Alarmcounter..' seconden af!#2' (niet echt zinnig voorbeeld, maar het gaat om de syntax)

Door Nat-Water, dinsdag 10 september 2019 12:33

Hm, interessant. Ik heb op dit moment zelf voor mijn Domoticz een Telegram-bot die me berichten stuurt. Voordeel daarvan is dat er ook een PC applicatie is; een soort whatsapp for desktop zeg maar.

Alleen heeft die volgens mij geen prioriteiten, dus binnenkort Pushover even uitproberen.

Door Tweakers user HenriM, dinsdag 10 september 2019 13:08

Je kunt het ook oplossen in LUA scripts door curl aan te roepen. Zo heb ik het zelf ook gedaan.

Zie de API van Pushover: https://pushover.net/api

Voorbeeld:

-- Send snapshot with Pushover
os.execute("curl -s --form-string \"token=my_token\" --form-string \"user=my_user\" --form-string \"message=Deurbel is gedrukt\" -F \"attachment=@/home/pi/domoticz/www/photo_voordeur.jpg\" https://api.pushover.net/1/messages.json 2> /dev/null &")

[Reactie gewijzigd op dinsdag 10 september 2019 13:09]


Door Tweakers user kazz1980, dinsdag 10 september 2019 13:22

Het gebruik van curl in een event script geeft echter het risico dat het gehele event systeem blokkeert gedurende de call... Meestal zijn de API-calls heel snel en is het dus niet echt een probleem, maar het blijft een risico... De call vanuit het LUA script heeft dit probleem niet. Ik gebruik daarom bij voorkeur geen curl.

[Reactie gewijzigd op dinsdag 10 september 2019 13:24]


Door Tweakers user HenriM, dinsdag 10 september 2019 14:03

Als je afsluit met & dan vind het op de background plaats ;-)

Door Tweakers user onok, dinsdag 10 september 2019 14:22

Ik gebruik zelf pushbullet voor notifications op de telefoon. Ik ga er vanuit dat pushover hetzelfde doet. Met pushbullet ben ik iig zeer tevreden, en ze hebben een makkelijke en toegankelijke api :) (en is 100% gratisch)

Door Tweakers user kazz1980, dinsdag 10 september 2019 14:46

HenriM schreef op dinsdag 10 september 2019 @ 14:03:
Als je afsluit met & dan vind het op de background plaats ;-)
Ah, dat wist ik dan weer niet! Interessante extra info... (misschien wil je dat op de Wiki pagina van Domoticz er bij melden??)

Pushbullet was mijn tweede keus. PushOver is inderdaad niet gratis (maar goed... eenmalig 4,5 euro val je ook weer geen buil aan!).

Reactie formulier
(verplicht)
(verplicht, maar wordt niet getoond)
(optioneel)