transmission des arguments au script


transmission des arguments au script

Messagepar merguez07 » 30 Nov 2020 20:57

Bonsoir,

comme tout ceux qui programment des plugins, je suis souvent confronté au problème de la transmission des arguments lorsqu'ils sont supérieurs à trois
Avec 3 arguments pas de problème on peut mettre le premier argument en VAR1 , le deuxième de en VAR2 et le 3ème en VAR3.

Si vous en avez plus, on les met à la suite sur une variable, en prenant soin de séparer chaque variable par une virgule ou un tiret ..... Il faut après faire une traitement (explode) dans le script pour récupérer chaque variable.

Si cette méthode marche, elle n'est pas très lisible dans le périphérique où on ne sait plus à quoi correspond la série de chiffre dans le VAR

Alors comment faire ? si j'ai ouvert ce topic c'est parceque je viens de réaliser qu'il y a beaucoup plus simple

un exemple avec le plugin soleil étendu
l'URL de la requête est
http://localhost/script/?exec=extdsun.php&num=[VAR1]&longlat=[VAR2]&delay=[VAR3]
les variables sont
VAR1 1
VAR2 44.5455471,4.6760496
VAR3 30,06:00,09:00,17:00,23:00

Avouons que les données contenus dans VAR3 ne sont pas très parlantes

Autre forme d'écriture qui ne necessitera plus de ligne de code pour réaffecter les variables :
l'URL de la requête sera :
http://localhost/script/?exec=extdsun.php&[VAR1]&[VAR2]&[VAR3]
les variables seront
VAR1 num=1
VAR2 lat=44.5455471&long=4.6760496
VAR3 delay=30&heurelevemin=06:00&heurelevmax=09:00&heurecoumini=17:00&heurecoumax=23:00

Avouez que c'est plus clair (et simplifie le code)
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 2346
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: transmission des arguments au script

Messagepar KikiFUNstyle » 30 Nov 2020 21:07

Moi je dis OUI !
Pas bête comme idée pourquoi ne pas y avoir pensé avant :p
ZWave / RFXCom / broadlink RM /Google Mini / Yeelight / Xiaomi Vacuum V1 / Shelly <3 / Node-RED <3 <3
[Store] Shelly
KikiFUNstyle
 
Messages : 908
Inscription : 24 Avr 2014
Localisation : Toulouse

Re: transmission des arguments au script

Messagepar thrymartin » 01 Déc 2020 04:41

mon dieu, l'eau chaude de christophe colomb qui coupe l'oeuf du fil du beurre

excellent :-) !!!
thrymartin
 
Messages : 920
Inscription : 03 Mars 2019
Localisation : La Réunion

Re: transmission des arguments au script

Messagepar opa95 » 01 Déc 2020 10:26

Bonjour
Merci pour ce rappel qui devrait être utile à certains et que j'utilise depuis mes premiers scripts. Désolé, je n'avais pas pensé que ça aurait pu être utile à certains.
On peut aussi utiliser les "notes de l'utilisateur" ou alterner dans [VAR3] les "," et les ";". C'est vrai que le "=" est plus clair.
J'utilise souvent les notes de l'utilisateur et simplement l'initiale dans [VAR3] pour éviter les chaînes trop longues : il m'arrive d'avoir 6 valeurs à transmettre; exemple : T,1;C,2;H,3... mais c'est vrai que le "=" est plus parlant.
L'intérêt d'utiliser un symbole et "explode" est aussi de ne pas imposer l'ordre des valeurs ou de ne pas les mettre toutes, même si ça alourdit un peu le script.
Peut-être pourrions nous faire une rubrique "script B A BA" ou "astuces de script pour les nuls" où l'on pourrait mettre toutes les astuces, même les plus évidentes sans crainte du ridicule : ça pourrait être utile à des débutants et parfois à des moins débutants.
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: transmission des arguments au script

Messagepar merguez07 » 01 Déc 2020 19:14

opa95 a écrit:Peut-être pourrions nous faire une rubrique "script B A BA" ou "astuces de script pour les nuls" où l'on pourrait mettre toutes les astuces, même les plus évidentes sans crainte du ridicule : ça pourrait être utile à des débutants et parfois à des moins débutants.


c'est fait
tuto 1 -->Programmation des scripts Eedomus
tuto 2 -->SmartDevice
tuto 3 -->Le déclenchement de règles
scripts -->Météo du jour | GH Thermostat | TotalWatt | Detecfire | smartbattery
Skype Eedomus -->lien vers le skype Eedomus
merguez07
 
Messages : 2346
Inscription : 15 Sep 2017
Localisation : Le Teil en Ardèche

Re: transmission des arguments au script

Messagepar dommarion » 25 Juin 2023 18:39

Bonjour,
Lorsque les variables ne sont en fait que des paramètres fixes et indépendant de l'installation du plugin, alors il est possible de les transmettre sans utiliser VAR
exemple:
http://localhost/script/?exec=extdsun.php&num=[VAR1]&longlat=[VAR2]&delay=[VAR3]&debug=1
Lors de l'installation du plugin, certaines information peuvent être saisies et être mises aussi dans la requête. Elles seront fixes, mais dépendantes de l'installation.
On peut ajouter beaucoup de données à transmettre au script de cette manière là, il suffit de mettre tout cela dans le fichier JSON.
Bon dimanche
dommarion
OpenWeather|Phases soleil|HeatzyV2|SFR Tv| Concaténateur|HP Yamaha|SomfyV3|Epson|Seuils n étages|Baie 2 vantaux|Deezer|Intégrale|Authorization Digest|TV Philips|SmartThings|fonctions PHP|Tuya Smartlife|CozyTouch2
dommarion
 
Messages : 558
Inscription : 28 Déc 2020

Re: transmission des arguments au script

Messagepar opa95 » 26 Juin 2023 08:09

Bonjour
dommarion a écrit:Bonjour,
Lorsque les variables ne sont en fait que des paramètres fixes et indépendant de l'installation du plugin, alors il est possible de les transmettre sans utiliser VAR
exemple:
http://localhost/script/?exec=extdsun.php&num=[VAR1]&longlat=[VAR2]&delay=[VAR3]&debug=1
Lors de l'installation du plugin, certaines information peuvent être saisies et être mises aussi dans la requête. Elles seront fixes, mais dépendantes de l'installation.
On peut ajouter beaucoup de données à transmettre au script de cette manière là, il suffit de mettre tout cela dans le fichier JSON.
Bon dimanche
dommarion

D'accord avec toi.
Lorsque les données sont peu variables (debug peut être nécessaire en cas de problème, mais pas tout le temps) j'ai tendance à utiliser la fenêtre de test pour activer certaines options et à stocker la plupart des données/paramètres (transmis dans la chaîne de commande ou les VAR) dans un tableau (par exemple $params) que je sauve en mémoire (saveVariable($mem,$params)) et que je récupère très simplement ($params=loadVariable($mem)). On peut donc adapter les paramètres depuis la fenêtre de test sans avoir à renvoyer ceux qui n'ont pas été modifiés. :)
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 723
Inscription : 04 Fév 2019
Localisation : Val d'Oise


Retour vers Entraide programmation plugins

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)