[LUA] Bibliothèque de fonctions

Vous avez créé 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.
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

Re: bibliothèque de fonctions pour scripts LUA

Message par landaisbenj »

Bon j'ai créé ma fonction je testerai plus tard. Dommage de ne pas avoir le retour de la commande quand meme:

Code : Tout sélectionner

function makeVar(name,value)
    if uservariables[name]==nil then
    	local url = 'curl '..domoticzURL..'/json.htm?type=command&param=saveuservariable&vname='..url_encode(name)..'&vtype=2&vvalue='..url_encode(value)
        os.capture(url, false)
    else
    	local url = 'curl '..domoticzURL..'/json.htm?type=command&param=updateuservariable&vname='..url_encode(name)..'&vtype=2&vvalue='..url_encode(value)
        os.capture(url, false)
    end
end
Et en passant je voyais l'utilisation de tes logs, je voulais proposer la mienne pour ceux qui veulent:

Code : Tout sélectionner

function log(txt,lvl)
    if lvl==nil then
        print("<font color='green'>" .. script .. ' ' .. txt .. "</font>")
    elseif lvl>=3 then
        error(script .. ' ' .. txt)
    else
        if lvl<=debug then
            if lvl==1 then
                print("<font color='yellow'>" .. script .. ' ' .. txt .. "</font>")
            elseif lvl==2 then
                print("<font color='red'>" .. script .. ' ' .. txt .. "</font>")
            end
        end
    end
end
Avec debug= le niveau de debug a afficher
et chaques log avec son propre niveau. Un niveau superieur ou egale a 3 pour afficher un erreure systematique, ou sans niveau pour afficher un log systematique.
Le niveau 1 me sert pour des infos et le niveau 2 me sert pour les retours de commande en general.
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
vulbas
Messages : 411
Inscription : 24 janv. 2017, 18:45

Re: bibliothèque de fonctions pour scripts LUA

Message par vulbas »

salut à tous,
j'utilise le script_device_remote.lua pour utiliser des boutons simple appui. donc je veux un appui = on un appui = off.

dans le script ça marche tres bien pour un switch. la ou àa se gatte c'est pour un groupe que j'ai creer dans scenario.
j'arrive à avoir l'allumage mais pas l'extinction.
au passage merci à vil1driver, c'est top

Code : Tout sélectionner

-- script_device_remote.lua


-- chargement des modules (http://easydomoticz.com/forum/viewtopic.php?f=17&t=3940)
dofile('/home/pi/domoticz/scripts/lua/modules.lua')

local debug = false  -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir


commandArray = {} 
--------------------------------
------ Tableau à éditer ------
--------------------------------

   local bt={}
   
	--bt['switch name'] = { 'action On' , 'action Off' }
      bt['test']={'switch("Lumiere Garage")'}
      bt['test 2']={'groupOn("Lumiere Salon Blanc")','groupOff("Lumiere Salon Blanc")'}
	  
    -- etc.. 

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



   for bouton, action in pairs(bt) do
		if (devicechanged[bouton] == 'On') then
			log('REMOTE: '..bouton..' switched On > '..action[1],debug)
			load(action[1])()
			break
		elseif (devicechanged[bouton] == 'Off') then
			log('REMOTE: '..bouton..' switched Off > '..action[2],debug)
			load(action[2])()
			break
		end
   end

return commandArray

mon bouton de test 2
vil1.PNG
vil1.PNG (10.62 Kio) Consulté 6348 fois

et mon groupe qui envois deux commandes
vil.PNG
vil.PNG (12.99 Kio) Consulté 6348 fois
si vous avez une idée je suis preneur.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: bibliothèque de fonctions pour scripts LUA

Message par vil1driver »

Salut,

Test 2 est un pushOn dont ne passe jamais à Off,
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
vulbas
Messages : 411
Inscription : 24 janv. 2017, 18:45

Re: bibliothèque de fonctions pour scripts LUA

Message par vulbas »

ben mon test 1 est aussi un pushon et il passe bien sur off, du coup je seche.
je devrais choisir on/off du coup ? j'ai testé en on/off pour test 2 et c'est pareil, juste le on fonctionne.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: bibliothèque de fonctions pour scripts LUA

Message par vil1driver »

Ton test 1 n'a qu'une action sur On qui est de changer l'État de la lampe.
A chaque On de test, la lampe passe á On puis Off pui On etc...

Ton groupe fonctionne manuellement ?

Tu pourrais passer debug à true et poster le log de Domoticz ?
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
vulbas
Messages : 411
Inscription : 24 janv. 2017, 18:45

Re: bibliothèque de fonctions pour scripts LUA

Message par vulbas »

merci de te pencher sur mon probleme.
mon group fonctionne bien avec on et off dans DZ
j'ai activé le local debug dans le script

voilà quand je lance un appui sur la TC et mon bouton test2

Code : Tout sélectionner

 2019-04-13 14:19:58.506 Status: LUA: REMOTE: test 2 switched On > groupOn("Lumiere Salon Blanc") 
  2019-04-13 14:19:48.873 Status: User: vulbas initiated a scene/group command  
et la un 2eme appui

Code : Tout sélectionner

 2019-04-13 14:27:19.496 Status: LUA: REMOTE: test 2 switched On > groupOn("Lumiere Salon Blanc") 
 2019-04-13 14:27:19.537 Status: User: vulbas initiated a scene/group command 
voila pour celui qui fonctionne (test) avec appui sur la tc

Code : Tout sélectionner

 2019-04-13 14:28:58.549 Status: LUA: REMOTE: test switched On > switch("Lumiere Garage") 
 2019-04-13 14:28:58.598 Status: User: vulbas initiated a switch command (530/Lumiere Garage/Toggle)
et le 2eme appui

Code : Tout sélectionner

  2019-04-13 14:30:28.279 Status: LUA: REMOTE: test switched On > switch("Lumiere Garage") 
 2019-04-13 14:30:28.352 Status: User: vulbas initiated a switch command (530/Lumiere Garage/Toggle)
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: bibliothèque de fonctions pour scripts LUA

Message par vil1driver »

Tout semble correct
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
vulbas
Messages : 411
Inscription : 24 janv. 2017, 18:45

Re: bibliothèque de fonctions pour scripts LUA

Message par vulbas »

etrange alors....

j'ai fait une video, je ne sais pas si ça va aider mmais bon

https://www.youtube.com/watch?v=vw47UST ... e=youtu.be
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: bibliothèque de fonctions pour scripts LUA

Message par vil1driver »

Je me répète mais ton bouton n'envoie que On comme le montre les logs.

Il est donc normal de ne jamais exécuter la commande qui correspond à la réception d'un Off

La seule solution que je vois serait de créer la fonction groupToggle pour qu'à chaque exécution l'état du groupe soit inversé (idem la fonction switch('lampe'))
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
vulbas
Messages : 411
Inscription : 24 janv. 2017, 18:45

Re: bibliothèque de fonctions pour scripts LUA

Message par vulbas »

pourtant ça marche avec mon autre bouton dans DZ, le Switch lampe. . il faudrait donc que mon bouton envois une commande on suivi d'une commande off, donc pas avec le meme code d'envois ?
Répondre