[DzBasic] Une autre façon de scripter

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
cyril21
Messages : 10
Inscription : 25 avr. 2021, 08:46
Localisation : 28
Contact :

[DzBasic] Une autre façon de scripter

Message 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
Dernière modification par cyril21 le 20 mai 2021, 08:38, modifié 4 fois.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message 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.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
cyril21
Messages : 10
Inscription : 25 avr. 2021, 08:46
Localisation : 28
Contact :

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

Message 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é 4437 fois
manu663
Messages : 103
Inscription : 06 août 2016, 14:35

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

Message par manu663 »

Super !
On va faire rigoler les "jeunes" mais enfin un langage qui nous parle plus facilement ! :D
Merci !
ogulf
Messages : 445
Inscription : 15 juin 2017, 14:41

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

Message par ogulf »

663 dans le suffixe.... c'est ton âge ?? :o
:mrgreen: :lol:
Domoticz Stable sur RPi3 + RFPlayer + ZWave+ + RFLink R48 :
- 11 x RF660P
- 1 x FGSD-002
- 10 x F007TH
- 5 x Emcoluxr EV1527 + 4 x NAS-DS01Z
- 4 x NAS-PD02Z
- 1 x Shelly 1PM
manu663
Messages : 103
Inscription : 06 août 2016, 14:35

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

Message par manu663 »

C'est pas beau de se moquer des "vieux" ! ;)
Dernière modification par manu663 le 25 avr. 2021, 15:53, modifié 1 fois.
ogulf
Messages : 445
Inscription : 15 juin 2017, 14:41

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

Message par ogulf »

Je suis du même côté de la barrière que toi ;)
Domoticz Stable sur RPi3 + RFPlayer + ZWave+ + RFLink R48 :
- 11 x RF660P
- 1 x FGSD-002
- 10 x F007TH
- 5 x Emcoluxr EV1527 + 4 x NAS-DS01Z
- 4 x NAS-PD02Z
- 1 x Shelly 1PM
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

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

Message 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 !
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
cyril21
Messages : 10
Inscription : 25 avr. 2021, 08:46
Localisation : 28
Contact :

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

Message 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...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message 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 :)
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Répondre