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]
ganq
Messages : 368
Enregistré le : 01 avr. 2015, 14:20

Re: Envoyer 2 fois les commandes On/Off

Message par ganq » 20 déc. 2015, 22:41

Super, ca fonctionne...

Merci bcp.
domoticien amateur option bidouille

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.


Aryman
Messages : 8
Enregistré le : 09 mars 2015, 21:50

Re: Envoyer 2 fois les commandes On/Off

Message par Aryman » 09 janv. 2016, 22:37

Bonjour,

Je viens d'essayer ce script mais j'ai toujours une erreur du type. Je débute en LUA et ce n'est pas facile pour trouver l'erreur.
EventSystem: /home/pi/domoticz/scripts/lua/script_device_twice.lua:61: attempt to concatenate a nil value
La ligne du script correspond a :
commandArray['OpenURL']=ip..'/json.htm?type=command&param=saveuservariable&vname=TWICE_'..urlencode(valeur)..'&vtype=2&vvalue='..urlencode(otherdevices_lastupdate[valeur])

Merci pour votre aide
B+ / Rfxcom / Zwave / DIO / FIBARO / SMART HOME / OREGON

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

Re: Envoyer 2 fois les commandes On/Off

Message par vil1driver » 10 janv. 2016, 10:07

salut,

mauvais nommage du switch ?

deennoo
Messages : 4006
Enregistré le : 25 janv. 2015, 02:00

Message par deennoo » 10 janv. 2016, 10:53

Attention aux accents, j'ai du les enlever chez moi

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.


Merangle
Messages : 81
Enregistré le : 18 mars 2015, 23:04

Re: Envoyer 2 fois les commandes On/Off

Message par Merangle » 12 janv. 2016, 10:07

Bonjour

Ayant également des problèmes de switch qui font la sourde d'oreille, j'ai mis en oeuvre le script de vil1driver.
Cependant, même en doublant la commande, parfois l'ordre ne passe pas.

J'ai constaté qu'en arrêtant puis redémarrant le switch manuellement, la commande passe: ce n'est donc pas un problème de portée du RFXcom ou de réception.
Je me proposais donc d'améliorer le script en émettant la commande inverse de celle que je veux émettre puis la commande correcte.
(par exemple si je veux 'On' , je fais d'abord 'Off' puis 'On') d'où le script

Code : Tout sélectionner

             if (chaine=='On') then                                                                                                                                                  
                        commandArray[1]={['Radiateur Parents']='Off'} -- on renvoie la commande inverse                                                                                 
                        commandArray[2]={['Radiateur Parents']='On AFTER 2'} -- on renvoie la commande normale                                                                          
                else                                                                                                                                                                    
                        commandArray[1]={['Radiateur Parents']='On'} -- on renvoie la commande inverse                                                                                  
                        commandArray[2]={['Radiateur Parents']='Off AFTER 2'} -- on renvoie la commande normale  
Mais le switch n'exécute pas la commande inverse

Code : Tout sélectionner

2016-01-12 09:52:15	On
2016-01-12 09:52:11	On
Extrait de la log : le 09:52:11 correspond à la commande initiale envoyée par le script de contrôle du switch en fonction de la consigne
le 09:52:15 correspond au commandArray[2]={['Radiateur Parents']='On AFTER 2'} émis par le script Twice

la commande commandArray[1]={['Radiateur Parents']='Off'} ne semble pas être prise en compte
Auriez-vous une suggestion pour simuler par script ce qui fonctionne manuellement ?

Merci
Synology DS212 + RFXTrx433 + AEon Stick S2
Oregon - Thgr122Nx / Chacon - module 1000w - détecteur de fumée 34131 / OWL -CM180 / Greenwave Multiprise

netstf
Messages : 14
Enregistré le : 17 janv. 2016, 18:38

Re: Envoyer 2 fois les commandes On/Off

Message par netstf » 07 mars 2016, 10:43

Bonjour , j'ai une erreur sur le script peut on m eclairer ?

Error: EventSystem: /home/pi/domoticz/scripts/lua/script_device_twice.lua:71: attempt to concatenate a nil value

Code : Tout sélectionner

-- script_device_twice.lua
--
-- ce script permet de doubler les commandes envoyées à certain périphériques
-- de sorte à fiabiliser leur fonctionnement
-- domoticz agit alors comme un répeteur


--------------------------------
------ Tableau à éditer ------
--------------------------------

 local ip = '192.168.0.17:8080'   -- user:pass@ip:port de domoticz
 
 local switchs={}   

   switchs['0']='Volet cuisine'
   switchs['1']='Volet salon'
   switchs['2']='Volet Salle à manger'
   switchs['3']='Volet ElostF'
   switchs['4']='Volet Maxime'
   switchs['5']='PHILIPS salle manger'
   switchs['6']='PHILIPS salon'
   switchs['7']='Luminaire'
   switchs['8']='Radiateur Sejour'
   switchs['9']='Radiateur Maxime'
   switchs['10']='Radiateur EloStF'
   switchs['11']='Enceinte Bluetooth'
   switchs['12']='Webcam Maxime'
   switchs['13']='Camera'
   switchs['14']='VMC'


      
--------------------------------
-- Fin du tableau à éditer --
--------------------------------

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(switchs) do
            
            
            
         if(uservariables['TWICE_'..valeur..'_On'] == nil) then
            commandArray[tonumber(key)]={['OpenURL']=ip..'/json.htm?type=command&param=saveuservariable&vname=TWICE_'..urlencode(valeur)..'_On&vtype=2&vvalue='..urlencode(otherdevices_lastupdate[valeur])}
            print('TWICE : création variable manquante TWICE_'..valeur..'_On')
         elseif(uservariables['TWICE_'..valeur..'_Off'] == nil) then
            commandArray[tonumber(key)]={['OpenURL']=ip..'/json.htm?type=command&param=saveuservariable&vname=TWICE_'..urlencode(valeur)..'_Off&vtype=2&vvalue='..urlencode(otherdevices_lastupdate[valeur])}
            print('TWICE : création variable manquante TWICE_'..valeur..'_Off')   
         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 
Merci

papoo
Messages : 1882
Enregistré le : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

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

Message par papoo » 14 mai 2016, 22:32

j'ai légèrement modifié le script pour qu'il prenne en compte mes volets
en effet leur état n'est pas On et Off mais Open, closed ou Stopped. j'ai donc remplacé l'appel en dur des variables On et Off par l'état du device (otherdevices[valeur]) pour le test d'existence et la création de la variable associée

Code : Tout sélectionner

		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])   
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github

olixelle
Messages : 2
Enregistré le : 23 janv. 2018, 14:35

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

Message par olixelle » 23 janv. 2018, 14:35

Hello,

juste un petit merci pour ton script, ca fait le boulot :)

phalseb
Messages : 37
Enregistré le : 16 janv. 2018, 17:11
Localisation : Liege Belgique

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

Message par phalseb » 04 mars 2018, 20:50

Bonjour,

J'ai un petit soucis avec le script malheureusement il bug chez moi.

Les variables sont bien crées, j'ai juste modifier le script
local ip = '192.168.1.XX:XXXX' -- user:pass@ip:port de domoticz
(XX: je suis parano même si c'est une ip interne, je n'aime pas les notés sur internet ;-) )

local switchs={}

switchs['0']='Lampe A'
switchs['1']='Lampe B'
switchs['2']='Lampe C'
switchs['3']='Lampe D'
-- switchs['4']='chauffage salon'
-- switchs['5']='chauffage salle de bain'

Mon soucis:
je n'ai pas de "retour d'état" lorsque j'utilise les télécommandes
et pour les lampes B, C, et D lorsque je les utilise dans domoticz elles s'allument puis sétegnent ou inversément.

Avez vous eu ce genre de problème?
Merci de votre aide

Seb
:idea: Phalseb :idea:

boby69300
Messages : 1
Enregistré le : 01 août 2018, 10:58

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

Message par boby69300 » 01 août 2018, 11:34

Bonjour,

Tout d'abord merci pour ce script, qui a solutionné mes problèmes. J'ai galéré un peu avec les variables qui ne voulaient pas se créer automatiquement :shock: , donc pour contourner ce problème j'ai simplement tapé les url dans un navigateur pour afficher le status du switch et j'ai rafraichit la page pour me voir signaler que la variable existait déjà (= variable créée :) :) ).

Je partage aussi ce que j'ai pu constater et qui pourrait expliquer pourquoi certains modules chacon ont du mal à fonctionner correctement, en particulier le 54755 de chez DI-O qui fut un des tous premiers sur le marché. J'ai constaté qu'avec 2 modules cote à cote (ok, non recommandé suivant la notice :!: ), un des modules fonctionnait très bien, et l'autre avait de multiples ratés. Il se trouve que ces modules ont des dates de fabrication différentes au dos (juillet 2014 vs août 2017), et malheureusement le plus récent a une conception revue à la baisse :roll: :

Image

A gauche le plus ancien, à droite le plus récent, on remarque bien les efforts de simplification de DI-O, mais cela se fait certainement au détriment de la fiabilité du signal reçu.

On remarque aussi que la protection thermique du relais à simplement disparu:
Image

Pas terrible de la part de DI-O, mais c'est le jeu de démarrer avec un produit robuste pour attaquer le marché avant de faire plein de productivités techniques pour engranger un max de profit... Bref, si vous avez des modules de 2014, il se peut qu'ils se comportent mieux que ceux plus récents, surtout mis cote à cote. Sinon, il faut soigner votre installation, et espacer au maximum les modules (au moins 8 mètres).
Modifié en dernier par boby69300 le 13 sept. 2018, 08:54, modifié 1 fois.

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