Page 5 sur 5

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

Publié : 23 août 2018, 11:29
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


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

Publié : 24 août 2018, 08:14
par vil1driver
Je n'utilise pas somfy mais n'est ce pas le fonctionnement normal ?
2 commandes identiques successives ne font pas stop ?

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

Publié : 24 août 2018, 11:53
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 .

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

Publié : 10 févr. 2019, 18:24
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.

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

Publié : 01 déc. 2019, 15:25
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.

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

Publié : 01 déc. 2019, 16:16
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

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

Publié : 03 déc. 2021, 16:31
par multinet
Bonjour

Suite à une mise a jour de domoticz en 2021.1 ce scripts semble ne plus fonctionner (on off en boucle)

qq aurait il un scripts à jour?

merci!

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

Publié : 19 déc. 2022, 19:10
par victor81
je deterre le post
ca a l'air de fonctionner pour la derniere version stable 2022.1
en tout cas pas d'erreur dans les log

edit: de temps en temps, il tourne en boucle
comme je l'utilise pour des chauffages, je vais l'arreter du coup ;)

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

Publié : 25 déc. 2024, 11:28
par Flying Domotic
Si les équipements commandés sont sensibles aux ratés (genre chauffage), il faut peut être se poser la question de la technologie à utiliser ? En tous cas, la radio ne semble pas adaptée, à te lire ;-)

ZigBee peut être ?