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 : 67
Enregistré le : 02 janv. 2017, 11:02
Localisation : Alpes maritimes

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

Message par Thierry_06 » 23 août 2018, 11:29

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


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


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

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

Message par vil1driver » 24 août 2018, 08:14

Je n'utilise pas somfy mais n'est ce pas le fonctionnement normal ?
2 commandes identiques successives ne font pas stop ?

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

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

Message par Thierry_06 » 24 août 2018, 11:53

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 : 114
Enregistré le : 02 mars 2018, 14:33

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

Message par miralant » 10 févr. 2019, 18:24

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.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre