Ajouter un délai entre deux commandes HTTP avec Blocky

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
Répondre
Nicogluck
Messages : 112
Inscription : 24 nov. 2014, 14:54

Ajouter un délai entre deux commandes HTTP avec Blocky

Message par Nicogluck »

Bonjour à tous,

Ma demande peut sembler surprenante, mais j'essaie de résoudre un problème avec mon matériel.

Je dispose d'une carte de 16 relais IP de Sainsmart. La fabrication est correcte visuellement, mais il arrive que cette carte plante de temps en temps (plus aucune réaction à l'envoi des commandes HTTP pour activer les relais ou demander leur état). Les deux cartes que j'ai achetées ont la même maladie.
Seule solution : la débrancher puis la rebrancher. A l'heure où on essaie de tout automatiser, ça craint un max !! :x

Bref, je m'en sers pour piloter mes radiateurs via fils pilote, et j'utilise 2 relais pour chaque radiateur (pour gérer 3 ordres différents), donc j'envoie deux lignes HTTP pour commander un état spécifique d'un radiateur.
Je me dis que ce plantage peut probablement provenir du fait que les deux requêtes HTTP sont envoyées trop vite à la carte (quasiment en même temps).

J'en arrive à ma question : comment définir un délai entre deux commandes HTTP, dans mes scripts Blocky ?

Grand merci à tous pour vos précieuses réponses !
A part cette carte de relais, je ne sais pas comment gérer mes fils pilote (excepté IPX800).
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart
hobbe
Messages : 111
Inscription : 15 déc. 2014, 15:33

Re: Ajouter un délai entre deux commandes HTTP avec Blocky

Message par hobbe »

Nicogluck a écrit :J'en arrive à ma question : comment définir un délai entre deux commandes HTTP, dans mes scripts Blocky ?
Personnellement, je ne sais pas :oops:

Mais je suis tombé là-dessus sur le forum anglophone : Sleep in blocky?

Sinon, en lua, il y ces méthodes.

Bon courage !
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Ajouter un délai entre deux commandes HTTP avec Blocky

Message par vil1driver »

salut,

il est possible de le faire en lua,
blocky je ne connais pas trop mais à mon avis si tu n'as pas trouvé le bon block, c'est que ce n'est pas possible.

j'ai envie de te conseiller de regarder comment transcrire ton blocky en script lua.
perso je le ferai en lua en tout cas.....

mais si tu préfère une solution graphique, ce que je te propose c'est de:
créer des interrupteurs virtuels (un pour chaque relai de ta carte ex:relai1, relai2..) dans l'interface
et mettre tes requêtes de commande http dans 'Action On:' 'Action Off:'et de définir le délai 'Sur le retard:' que tu souhaites,
puis créer des scènes correspondant aux ordres fil pilote (ex:scène confort-raditeur1 = relai1 On + relai2 Off)
depuis ton blocky tu appelles directement les scènes =)
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Nicogluck
Messages : 112
Inscription : 24 nov. 2014, 14:54

Re: Ajouter un délai entre deux commandes HTTP avec Blocky

Message par Nicogluck »

A passer du temps sur Blocky et fouiner pour trouver des solutions, je me rends compte aussi qu'éviter les scripts, c'est aussi passer à côté d'innombrables possibilités.

Bon ben... j'ai plus qu'à me mettre les mains dans le cambouis !
A quand passe le bus pour la prochaine formation LUA ?
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Ajouter un délai entre deux commandes HTTP avec Blocky

Message par vil1driver »

lua n'est pas si compliqué une fois que l'on a les quelques commandes utiles en tête.

mais tant que blocky fait l'affaire, lua peut bien attendre =)
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Nicogluck
Messages : 112
Inscription : 24 nov. 2014, 14:54

Re: Ajouter un délai entre deux commandes HTTP avec Blocky

Message par Nicogluck »

Ca y est, j'ai mis un pied dans le LUA... :-S
Je tâtonne mais ça avance.

En fouinant, j'ai trouvé la fonction luup.sleep (delay) en spécifiant une valeur en millisecondes.
Mais bon, trop facile...

Le terminal de Domoticz me renvoit :
" Error: .../domoticz/scripts/lua/script_device_dressingoff.lua:11: attempt to index global 'luup' (a nil value) "

Ca inspire quelqu'un ?
Je ne trouve pas la bonne syntaxe pour cette commande.

Merci.
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart
jackslayter
Messages : 1040
Inscription : 30 sept. 2014, 14:40
Localisation : Isère (38)

Re: Ajouter un délai entre deux commandes HTTP avec Blocky

Message par jackslayter »

Moi j'ai arrêté les blocky (trop simple et compliqué a la fois et trop beugué)je suis passé au lua/bash , certes c'est un cap a passer mais après c'est que du bonheur
Raspberry Pi + RFLink + Domoticz Beta
Oregon - 3x Thgr122Nx / Chacon - micromodule 200w, télécommande 3b et 16b, 2x module 1000w, détecteur de fumée, contact de porte, 2x prise 3500w / OWL - CM180 / TRC02 v2 RGB 3M / Cheap - PIR, contact de porte
hobbe
Messages : 111
Inscription : 15 déc. 2014, 15:33

Re: Ajouter un délai entre deux commandes HTTP avec Blocky

Message par hobbe »

Nicogluck a écrit :Ca y est, j'ai mis un pied dans le LUA... :-S
Je tâtonne mais ça avance.

En fouinant, j'ai trouvé la fonction luup.sleep (delay) en spécifiant une valeur en millisecondes.
Mais bon, trop facile...

Le terminal de Domoticz me renvoit :
" Error: .../domoticz/scripts/lua/script_device_dressingoff.lua:11: attempt to index global 'luup' (a nil value) "

Ca inspire quelqu'un ?
Je ne trouve pas la bonne syntaxe pour cette commande.

Merci.
Non luup.sleep ne vient pas de LUA, c'est pour les box Vera je crois.

Essaye plutôt l'une des méthodes indiquées ici : http://lua-users.org/wiki/SleepFunction
(en fonction de ton OS)
Nicogluck
Messages : 112
Inscription : 24 nov. 2014, 14:54

Re: Ajouter un délai entre deux commandes HTTP avec Blocky

Message par Nicogluck »

Voilà ! Ca marche !

Pour ceux que ça intéresse, la fonction sleep détaillée comme ci-dessous fonctionne dans un script pour Domoticz :

function sleep(n)
if n > 0 then os.execute("ping -n " .. tonumber(n+1) .. " localhost > NUL") end
end


Pour les débutants (comme moi), il faut copier-coller ces 3 lignes en début de script puis insérer sleep(délai_en_secondes) où vous avez besoin d'une temporisation.
Dernière modification par Nicogluck le 16 mars 2015, 20:03, modifié 1 fois.
Synology DS415play / RFXCom / récepteurs 433 / sondes temp+hygro Oregon / cartes relais Sainsmart
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Ajouter un délai entre deux commandes HTTP avec Blocky

Message par vil1driver »

À savoir qu'il y a un timeout sur le temps d'exécution des script lua.
Si le script met plus de 10s à s'exécuter, il sera stopé pour ne pas pénaliser l'exécution des autres en attente.

mais j'aurais plutôt utilisé la vraie commande sleep à la place de ping

Code : Tout sélectionner

function sleep(n)
  os.execute("sleep " .. tonumber(n))
end

commandArray = {}

sleep(5)

...
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Répondre