[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.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: bibliothèque de fonctions pour scripts LUA

Message par vil1driver »

A tester

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

function groupToggle(group) 
   if otherdevices_scenesgroups[group] ~= 'Off' then
      groupOff(group) 
   else
      groupOn(group) 
   end           
end

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

   local bt={}
   
	--bt['switch name'] = { 'action On' , 'action Off' }
      bt['test']={'switch("Lumiere Garage")'}
      bt['test 2']={'groupToggle("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

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 vil1driver, t'es au top, ça marche nickel.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: bibliothèque de fonctions pour scripts LUA

Message par vil1driver »

;)
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
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: bibliothèque de fonctions pour scripts LUA

Message par denis_brasseur »

J'utilise la bibliothèque de fonctions pour script LUA, personnalisé avec mes propres fonctions.
La fonction creaVar me pose problème depuis quelques jours :

Code : Tout sélectionner

-- création de variable utilisateur
-- usage
-- creaVar('toto','10') -- pour créer une variable nommée toto comprenant la valeur 10
function creaVar(name,value)
	local api = '/json.htm?type=command&param=saveuservariable'
	local name = '&vname='..url_encode(name)
	local vtype = '&vtype=2'
	local value = '&vvalue='..url_encode(value)
	api = api..name..vtype..value
	os.execute(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..api..'" &')
end
En regardant dans la console et en créant une variable depuis l'interface, la commande envoyé est celle ci :

Code : Tout sélectionner

http://192.168.1.6:8060/json.htm?type=command&param=adduservariable&vname=test&vtype=2&vvalue=essai
Retour si envoi depuis le navigateur :
{
"status" : "OK",
"title" : "AddUserVariable"
}
et non pas

Code : Tout sélectionner

http://192.168.1.6:8060/json.htm?type=command&param=saveuservariable&vname=test&vtype=2&vvalue=essai
Retour si envoi depuis le navigateur :
{
"status" : "ERR"
}
Cela fonctionne ensuite en remplaçant saveuservariable par adduservariable dans la fonction.

Error Updating Variable with version 4.10298 (solved in 4.10299)
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: bibliothèque de fonctions pour scripts LUA

Message par vil1driver »

Ahh les mises à jour.. :?

Merci de ton retour.
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
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

Re: bibliothèque de fonctions pour scripts LUA

Message par garycooper »

Un problème sur la fonction arrondir ?

En utilisation du script PID chauffage, j'ai un défaut qui revient systématiquement dans les logs :
/home/pi/domoticz/scripts/lua/modules.lua:376: attempt to perform arithmetic on local 'num' (a nil value)

Code : Tout sélectionner

-- arrondire
function round(num, dec)
   if num == 0 then
	 return 0
   else
	 local mult = 10^(dec or 0)
	 return math.floor(num * mult + 0.5) / mult
   end
end
Une idée de l'origine du message d'erreur ?
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: bibliothèque de fonctions pour scripts LUA

Message par papoo »

d'après ton log le contenu de la variable num est nil.
cela ne vient pas de la fonction mais des variables passées à la fonction
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: bibliothèque de fonctions pour scripts LUA

Message par denis_brasseur »

un print(num..'-'..dec) avant d'utiliser la fonction round(num, dec) dans ton code devrait te permettre de trouver le coupable.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: bibliothèque de fonctions pour scripts LUA

Message par vil1driver »

Vérifie que tu n'as pas à nouveau un soucis de casse.
Vérifie également que tous tes dispositifs ont bien un nom unique !
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
DomoTiBI
Messages : 93
Inscription : 07 mars 2018, 15:52
Localisation : 46 - Lot

Re: [LUA] Bibliothèque de fonctions

Message par DomoTiBI »

Bonjour,

Séduit par l'idée, je viens de passer pas mal de temps à tenter d’utiliser ces fonction dans un script Dzvents.
Et puis j'ai relu le titre.

Ôtez moi d'un doute. C'est pas possible ?
Raspeberry 3B+ Model B Rev 1.2 - Domoticz 2020.2 - dzVents 3.0.1 - Python 3.7.3
Raspbian GNU/Linux 10 (buster) 4.19.97-v7+#1294

RFXCom
BSO Somfy
Sondes Digoo et Daniu.
Sonoff 4CH pro (flashé)
Alhau - prises Silvercrest et Rhino en 433 Mhz
Répondre