Page 1 sur 2

[DzBasic] Une autre façon de scripter

Publié : 25 avr. 2021, 09:41
par cyril21
Bonjour à tous,

Je dois dire que ce forum regorge d'idées géniales et de super conseils en tout genre :D
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 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 :D : 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

Re: [DzVents] DzBasic - Une autre façon de scripter

Publié : 25 avr. 2021, 10:17
par Keros
Bonjour cyril21 et bienvenue sur le forum ;)

Si je comprends bien, ça ressemble un petit peu avec la bibliothèque de fonctions : le but est de simplifier l'écriture des commandes.

Re: [DzVents] DzBasic - Une autre façon de scripter

Publié : 25 avr. 2021, 10:30
par cyril21
Merci pour ton message !
C'est en effet une façon de simplifier les commandes, mais ce n'est pas une bibliothèque lua pour dzVents.
Sur un screenshot, c'est peut-être plus parlant:
dzbasic1.png
dzbasic1.png (302.96 Kio) Consulté 4428 fois

Re: [DzVents] DzBasic - Une autre façon de scripter

Publié : 25 avr. 2021, 12:41
par manu663
Super !
On va faire rigoler les "jeunes" mais enfin un langage qui nous parle plus facilement ! :D
Merci !

Re: [DzVents] DzBasic - Une autre façon de scripter

Publié : 25 avr. 2021, 13:25
par ogulf
663 dans le suffixe.... c'est ton âge ?? :o
:mrgreen: :lol:

Re: [DzVents] DzBasic - Une autre façon de scripter

Publié : 25 avr. 2021, 14:50
par manu663
C'est pas beau de se moquer des "vieux" ! ;)

Re: [DzVents] DzBasic - Une autre façon de scripter

Publié : 25 avr. 2021, 15:16
par ogulf
Je suis du même côté de la barrière que toi ;)

Re: [DzVents] DzBasic - Une autre façon de scripter

Publié : 25 avr. 2021, 17:52
par denis_brasseur
cyril21 a écrit : 25 avr. 2021, 09:41 Intéressé(e) ?
Oui, beaucoup !!

J'aime beaucoup le script de notification ultime de papoo, celui ci devrait me plaire !

Re: [DzVents] DzBasic - Une autre façon de scripter

Publié : 25 avr. 2021, 19:47
par cyril21
Voilà, j'ai déposé les fichiers sur Github:
https://github.com/casanoe/dzBasic

dzBasic nécessite une version récente de Domoticz (2020, dzVents 3.1.5 mini).
Il y a sûrement encore des bugs. Je ferai de mon mieux pour les corriger saves vos retours.
J'espère que cela vous sera utile...

Re: [DzVents] DzBasic - Une autre façon de scripter

Publié : 25 avr. 2021, 21:42
par Keros
@cyril21, je te propose d'éditer ton premier post de ce sujet pour y rajouter ton lien GitHub, ou d'autres infos que tu voudrais rajouter par la suite.

Pour cela, remonte à ton premier message, en haut à droite du message, il y a un petit bouton carré avec un crayon : il te permettra d'éditer ton message ;)

Bravo pour ce travail :)