[DzBasic] Une autre façon de scripter
Publié : 25 avr. 2021, 09:41
Bonjour à tous,
Je dois dire que ce forum regorge d'idées géniales et de super conseils en tout genre
C'est assez stimulant, et parce que la domotique (et domoticz en particulier) m'intéresse beaucoup, j'aimerai partager avec vous un script que j'ai développé. Il est parti d'une idée que je dois à Papoo avec son "script de notification ultime".
Je n'ai pas trouvé d'équivalent, mais peut-être ai-je raté un sujet ou un site.
Ce script apporte une autre façon d'automatiser dans Domoticz avec les commandes les plus utilisées. Il se base sur un langage simple, équivalent à la syntaxe de notre bon vieux Basic.
Comment il marche ?
Le code "basic-like" est à déposer dans la description de votre device. Il sera interprété par dzBasic lorsque un événement survient (timer ou device update).
Voici quelques exemples:
Je prépare le dépôt du script dans Github avec un README (c'est aussi beaucoup de boulot, je vais faire au plus vite).
Je ferai un post lorsqu'il sera prêt. J'espère qu'il vous sera utile... en tout cas je l'utilise actuellement, et une fois le langage un peu maitrisé on peut rapidement répondre aux besoins les plus courants.
Intéressé(e) ?
---- EDIT
Voici donc le lien vers le GitHub du projet
: https://github.com/casanoe/dzBasic
---- EDIT
J'ai ajouté des exemples issus pour la plupart de ma conf domoticz: https://github.com/casanoe/dzBasic/blob ... XAMPLES.md
---- EDIT
* Quelques améliorations et corrections.
* Encore plus d'exemples: https://github.com/casanoe/dzBasic/blob ... XAMPLES.md
* Des plugins issus d'idées de ce forum (parties du code réutilisable probablement ailleurs):
https://github.com/casanoe/dzBasic/tree/master/plugins
- Waze (calcul de durée de trajet, basé sur l'adresse postale ou lat/lon)
- Meteo (météo Openweathermap, basé sur l'adresse postale ou lat/lon)
- Netatmo (récupération d'infos pour le chauffage, la caméra présence...)
- Vigilance (météo France)
- Biginfo (informations utiles comme les congés, jours férés, WE, infos géographiques, saison, zone scolaire automatique...)
---- EDIT
* Beta 5 : quelques optimisations
Je dois dire que ce forum regorge d'idées géniales et de super conseils en tout genre
C'est assez stimulant, et parce que la domotique (et domoticz en particulier) m'intéresse beaucoup, j'aimerai partager avec vous un script que j'ai développé. Il est parti d'une idée que je dois à Papoo avec son "script de notification ultime".
Je n'ai pas trouvé d'équivalent, mais peut-être ai-je raté un sujet ou un site.
Ce script apporte une autre façon d'automatiser dans Domoticz avec les commandes les plus utilisées. Il se base sur un langage simple, équivalent à la syntaxe de notre bon vieux Basic.
Comment il marche ?
Le code "basic-like" est à déposer dans la description de votre device. Il sera interprété par dzBasic lorsque un événement survient (timer ou device update).
Voici quelques exemples:
Code : Tout sélectionner
dzbasic
-- increases by 5% the dimmer light level every minute. Stops at 50%.
auto dim 5,50 after 1
-- turn off the device when it has been on for 60 minutes
auto off 60
-- Switch on the devices "Bulb 0", "Bulb 1", "Bulb 2"...
switch on, "Bulb %d"
-- turn off the device when it has been on for 2 minutes
-- and no motion has been detected by neither of the "motion1" nor the "motion2" device
auto off when minutesago >= 2, state "motion1,motion2" = alloff
Code : Tout sélectionner
dzbasic
-- execute the block 'on/endon' when the switch is turned on
on dz_switchon
-- print a text in the domoticz log
print "switch %%name%% is on"
-- execute the url, and wait the result
url "http:// domogeek.entropialux.com/vigilance/28/all"
-- update a text device named 'vigilance'
-- with the result of the http request (json in this case).
-- result is recorded in '$$' like a table
update $$["vigilancerisk"], "vigilance"
endon
Code : Tout sélectionner
dzbasic
$min = 30
-- execute the block when the device has been updated for 30min or more
on minutesago >= $min
-- call the plugin 'meteo' , result is recorded in '$$' variable
call meteo
-- update other devices
update $$["prevision"][2]["meteo"], "Meteo tomorrow"
update $$["rain"], "Today rain"
update $$["%rain"][1], "Rain proba in 1h"
-- update this device
update $$["meteo"]
endon
Je ferai un post lorsqu'il sera prêt. J'espère qu'il vous sera utile... en tout cas je l'utilise actuellement, et une fois le langage un peu maitrisé on peut rapidement répondre aux besoins les plus courants.
Intéressé(e) ?
---- EDIT
Voici donc le lien vers le GitHub du projet
---- EDIT
J'ai ajouté des exemples issus pour la plupart de ma conf domoticz: https://github.com/casanoe/dzBasic/blob ... XAMPLES.md
---- EDIT
* Quelques améliorations et corrections.
* Encore plus d'exemples: https://github.com/casanoe/dzBasic/blob ... XAMPLES.md
* Des plugins issus d'idées de ce forum (parties du code réutilisable probablement ailleurs):
https://github.com/casanoe/dzBasic/tree/master/plugins
- Waze (calcul de durée de trajet, basé sur l'adresse postale ou lat/lon)
- Meteo (météo Openweathermap, basé sur l'adresse postale ou lat/lon)
- Netatmo (récupération d'infos pour le chauffage, la caméra présence...)
- Vigilance (météo France)
- Biginfo (informations utiles comme les congés, jours férés, WE, infos géographiques, saison, zone scolaire automatique...)
---- EDIT
* Beta 5 : quelques optimisations