Envoyer 2 fois les commandes On/Off (send twice)

Vous avez crée 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.
Soyez précis quant aux prérequis, les manips à faire pour que votre bijou fonctionne (des chmod ?, un apt-get à faire ...)
Décrivez précisément son fonctionnement
Placez votre code entre [Quote] et {/Quote]
Thierry_06
Messages : 70
Enregistré le : 02 janv. 2017, 11:02
Localisation : Alpes maritimes

Re: Envoyer 2 fois les commandes On/Off (send twice)

Message par Thierry_06 »

Bonjour

J'ai un problème avec le script de Vil1driver modifié par papoo pour les volets roulants
J'explique :

- pour tous les interrupteurs ça fonctionne parfaitement comme on peut le voir sur le log

- pour les volets roulants ( somfy avec RFXCom)

si je demande la fermeture du volet , le script envoie bien l'ordre de fermer mais la seconde commande ( qui logiquement devrait être la même) est stop

Une bonne âme pourrait il m'indiquer la voie à suivre pour résoudre ce problème

Code : Tout sélectionner

2018-08-23 10:48:30.032 (RFXCOM) Lighting 6 (Applique_Salon)
2018-08-23 10:48:30.018 Status: User: Admin initiated a switch command (1/Applique_Salon/On)
2018-08-23 10:48:30.086 Status: LUA: TWICE : Applique_Salon -> On
2018-08-23 10:48:30.088 Status: EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_device_twice.lua
2018-08-23 10:48:31.106 (RFXCOM) Lighting 6 (Applique_Salon)
2018-08-23 10:48:31.131 Status: LUA: TWICE : Applique_Salon -> On
2018-08-23 10:48:31.132 Status: EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_device_twice.lua
2018-08-23 10:48:32.160 (RFXCOM) Lighting 6 (Applique_Salon)
2018-08-23 10:48:42.884 (RFXCOM) Temp (Temp Chauffage)
2018-08-23 10:48:44.052 (RFXCOM) Temp (Temp Eau Chaude)
2018-08-23 10:48:47.841 (RFXCOM) Lighting 6 (Applique_Salon)
2018-08-23 10:48:47.822 Status: User: Admin initiated a switch command (1/Applique_Salon/Off)
2018-08-23 10:48:47.889 Status: LUA: TWICE : Applique_Salon -> Off
2018-08-23 10:48:47.890 Status: EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_device_twice.lua
2018-08-23 10:48:48.935 (RFXCOM) Lighting 6 (Applique_Salon)
2018-08-23 10:48:48.989 Status: LUA: TWICE : Applique_Salon -> Off
2018-08-23 10:48:48.990 Status: EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_device_twice.lua
2018-08-23 10:48:50.031 (RFXCOM) Lighting 6 (Applique_Salon)



2018-08-23 10:48:59.243 (RFXCOM) RFY (Volet_roulant_Chambre_1)
2018-08-23 10:48:59.232 Status: User: Admin initiated a switch command (6/Volet_roulant_Chambre_1/Off)
2018-08-23 10:48:59.297 Status: LUA: TWICE : Volet_roulant_Chambre_1 -> Open
2018-08-23 10:48:59.299 Status: EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_device_twice.lua
2018-08-23 10:49:00.345 (RFXCOM) RFY (Volet_roulant_Chambre_1)
2018-08-23 10:49:00.399 Status: LUA: TWICE : Volet_roulant_Chambre_1 -> Stopped
2018-08-23 10:49:00.400 Status: EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_device_twice.lua
2018-08-23 10:49:01.437 (RFXCOM) RFY (Volet_roulant_Chambre_1)
2018-08-23 10:49:14.201 (RFXCOM) Temp (Temp Exterieur Lampe)

Le script utilisé

Code : Tout sélectionner

 script_device_twice.lua
--
-- ce script permet de doubler les commandes envoyees aux switchs 
-- de sorte a  fiabiliser leur fonctionnement
-- domoticz agit alors comme un repeteur


--------------------------------
------ Tableau a editer ------
--------------------------------

 local ip = '192.168.xxx.xxx:xxxx'   -- user:pass@ip:port de domoticz
 
 local switch={} 
  
   switch['0']='Cafetiere'
   switch['1']='Entree'
   switch['2']='Applique_Salon'
   switch['3']='Bandeau_Cuisine'
   switch['4']='Eclairage_Jardin'
   switch['5']='Module_Kyala'
   switch['6']='Globe'
   switch['7']='Lampadaire_Boule'
   switch['8']='PC_Ventilateur'
   switch['9']='Prise_commandee'
   switch['10']='Volet_roulant_Salon'
   switch['11']='Volet_roulant_Cuisine'
   switch['12']='Volet_roulant_Chambre_1'
   switch['13']='Volet_roulant_Chambre_2'
 


-- etc..
      
--------------------------------
-- Fin du tableau a editer --
--------------------------------

time = os.date("*t") 

function timedifference(s)
   year = string.sub(s, 1, 4)
   month = string.sub(s, 6, 7)
   day = string.sub(s, 9, 10)
   hour = string.sub(s, 12, 13)
   minutes = string.sub(s, 15, 16)
   seconds = string.sub(s, 18, 19)
   t1 = os.time()
   t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
   difference = os.difftime (t1, t2)
   return difference
end

function urlencode(str)
   if (str) then
   str = string.gsub (str, "\n", "\r\n")
   str = string.gsub (str, "([^%w ])",
   function (c) return string.format ("%%%02X", string.byte(c)) end)
   str = string.gsub (str, " ", "+")
   end
   return str
end

commandArray = {}


   for key, valeur in pairs(switch) do

            
             if(uservariables['TWICE_'.. valeur ..'_'.. otherdevices[valeur]] == nil) then
            commandArray[tonumber(key)]={['OpenURL']=ip..'/json.htm?type=command&param=saveuservariable&vname=TWICE_'..urlencode(valeur)..'_'.. otherdevices[valeur] ..'&vtype=2&vvalue='..urlencode(otherdevices_lastupdate[valeur])}
            print('TWICE : creation variable manquante TWICE_'..valeur..'_'.. otherdevices[valeur])
        elseif(uservariables['TWICE_'.. valeur..'_'.. otherdevices[valeur]] == nil) then
            commandArray[tonumber(key)]={['OpenURL']=ip..'/json.htm?type=command&param=saveuservariable&vname=TWICE_'..urlencode(valeur)..'_'..otherdevices[valeur]..'&vtype=2&vvalue='..urlencode(otherdevices_lastupdate[valeur])}
            print('TWICE : creation variable manquante TWICE_'..valeur..'_'.. otherdevices[valeur])   
   
            
        elseif (devicechanged[valeur] and timedifference(uservariables['TWICE_'..valeur..'_'..otherdevices[valeur]]) > 5) then
            commandArray[valeur] = otherdevices[valeur]..' AFTER 1'
             commandArray['Variable:TWICE_'..valeur..'_'..otherdevices[valeur]]=otherdevices_lastupdate[valeur]
            print('TWICE : '..valeur.. ' -> ' ..otherdevices[valeur])
       end
      
               
   end



return commandArray


vil1driver
Messages : 5475
Enregistré le : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Envoyer 2 fois les commandes On/Off (send twice)

Message par vil1driver »

Je n'utilise pas somfy mais n'est ce pas le fonctionnement normal ?
2 commandes identiques successives ne font pas stop ?
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

Thierry_06
Messages : 70
Enregistré le : 02 janv. 2017, 11:02
Localisation : Alpes maritimes

Re: Envoyer 2 fois les commandes On/Off (send twice)

Message par Thierry_06 »

Bonjour

Non deux appuis successifs ne fait pas stopper le volet . Il y a un bouton monté un bouton descente et un bouton stop .
Avant j'avais dans un scenario de départ de la maison la répétition de la même commande de fermeture des volets à 4 secondes d'intervalle parce que mes volets sont un peu récalcitrant ils n’obéissent pas toujours au premier ordre ( comme les enfants ;) )

Et là , je voulais améliorer et uniformiser la procédure ..... et ça ne marche pas .

miralant
Messages : 139
Enregistré le : 02 mars 2018, 14:33

Re: Envoyer 2 fois les commandes On/Off (send twice)

Message par miralant »

Bonjour,

J'ai un problème sur la création des variables (dans le log)

Code : Tout sélectionner

2019-02-10 18:21:04.869 Error: Error opening url: 192.168.1.21:8080/json.htm?type=command¶m=saveuservariable&vname=TWICE_Salon%5FLampadaire_On&vtype=2&vvalue=2019%2D02%2D09+22%3A17%3A45
J'avoue que je vois pas pourquoi il me transforma la chaine (apres command, le caractère bizarre). Si je lance la commande de l'API en corrigeant via un navigateur, ma variable est bien crée.

baliku
Messages : 9
Enregistré le : 31 mai 2018, 18:39

Re: Envoyer 2 fois les commandes On/Off (send twice)

Message par baliku »

Bonjour,

Merci encore pour tout ton travail sur domoticz c'est vraiment agréable...

Bref, j'ai quelques questions sur ce script (qui vient en complément du PID) :
-Le script doit il être en Trigger :ALL ou DEVICE ?
-dans les log je n'ai pas d'erreur mais dans les 2 cas j'ai :
2019-12-01 15:19:06.839 Status: LUA: TWICE : création variable manquante TWICE_TSdB1_On
2019-12-01 15:19:06.839 Status: LUA: TWICE : création variable manquante TWICE_TSdB2_On
2019-12-01 15:19:06.839 Status: LUA: TWICE : création variable manquante TWICE_TCh1_On
2019-12-01 15:19:06.839 Status: LUA: TWICE : création variable manquante TWICE_TCh2_On
2019-12-01 15:19:06.839 Status: LUA: TWICE : création variable manquante TWICE_TCh3_On
2019-12-01 15:19:06.839 Status: EventSystem: Fetching URL 192.168.1.10:8084/json.htm?type=command&param=saveuservariable&vname=TWICE_TCh2_On&vtype=2&vvalue=2019%2D12%2D01+15%3A10%3A02 after 0.2 seconds...
2019-12-01 15:19:06.840 Status: EventSystem: Fetching URL 192.168.1.10:8084/json.htm?type=command&param=saveuservariable&vname=TWICE_TCh3_On&vtype=2&vvalue=2019%2D12%2D01+15%3A10%3A03 after 0.2 seconds...
2019-12-01 15:19:06.840 Status: EventSystem: Fetching URL 192.168.1.10:8084/json.htm?type=command&param=saveuservariable&vname=TWICE_TSdB1_On&vtype=2&vvalue=2019%2D12%2D01+15%3A10%3A04 after 0.2 seconds...
2019-12-01 15:19:06.840 Status: EventSystem: Fetching URL 192.168.1.10:8084/json.htm?type=command&param=saveuservariable&vname=TWICE_TSdB2_On&vtype=2&vvalue=2019%2D12%2D01+15%3A10%3A05 after 0.2 seconds...
2019-12-01 15:19:06.840 Status: EventSystem: Fetching URL 192.168.1.10:8084/json.htm?type=command&param=saveuservariable&vname=TWICE_TCh1_On&vtype=2&vvalue=2019%2D12%2D01+15%3A10%3A01 after 0.2 seconds...
2019-12-01 15:19:06.840 Status: EventSystem: Script event triggered: Send_Twice
qui se répète indéfiniment toute les secondes, est-ce normal ?
-Les variables TWICE_TSdB1_On n'apparaissent pas dans variable utilisateur, dois-je les créer pour arrêter ça ?

En tous cas merci encore.
NAS Syno, Last Stable Ver°
RFLink 433.92+NRF24L01 : 6 THN132N, 5 KIT_FP433TEMP / ++MiLights / ++DI-O
HarmonyHub : FreeRev, TV LG, Amp Sony
Cabasse StreamAmp100, 3 Awox StriimLightWifi
KLF200 : 5 Somfy IO
IFTTT : GoogleAgenda
Blockly, DzVents, Bash
Tasker

vil1driver
Messages : 5475
Enregistré le : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Envoyer 2 fois les commandes On/Off (send twice)

Message par vil1driver »

Salut,

La commande pour créer les variables n'est plus bonne.. Je corrige.

Le Trigger est indiqué : device

Ps: ce script est incompatible avec le PID, les 2 script ne doivent pas agir sur les mêmes devices
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