découverte de dzVents

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
krissam44
Messages : 10
Inscription : 27 juil. 2017, 20:04

découverte de dzVents

Message par krissam44 »

Bonjour,

Je découvre domoticz et son écosystème, en particulier dzVents.
Dans le menu Réglages/Plus d'options/Evènements, j'arrive sur l'éditeur et je sélectionne dzVents comme langage de script.
J'ai repris un exemple du wiki domoticz :

Code : Tout sélectionner

return {
    active = true,
    on = {
        'Dio 54755'
    },
    execute = function(domoticz, device)
        -- your script logic goes here, something like this:

        if (device.state == 'On') then
            domoticz.notify('I am on!')
        end
    end
}
Rien n'apparaît dans le log et je ne reçois aucune notification (NMA Android).

L'éditeur enregistre le script sous /opt/domoticz/scripts/lua .
Je l'ai déplacé sous /opt/domoticz/scripts/lua/dzVents/scripts... cela ne change rien.

Qu'ai-je loupé ?
Merci de votre aide, cordialement.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: découverte de dzVents

Message par vil1driver »

Salut,

Je n'ai jamais rien trouvé d'attirant chez dzvents..

Code : Tout sélectionner

commandArray = {} 

if (devicechanged["Dio 54755"] == "On")  then
        commandArray['SendNotification']='subject#body#0'
end

return commandArray 
Et basta :D
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
krissam44
Messages : 10
Inscription : 27 juil. 2017, 20:04

Re: découverte de dzVents

Message par krissam44 »

Salut, merci du retour.

Ton script fonctionne... évidemment mais j'ai le message suivant dans la log :

Error: EventSystem: in essai1: [string "commandArray = {} ..."]:3: attempt to index global 'devicechanged' (a nil value)

Il me semblait que la syntaxe dzVents serait plus facile d'apprentissage... that's all.
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: découverte de dzVents

Message par Neutrino »

Moi j'aime bien dzVents, l'objet domoticz avec ses méthodes et ses attributs me facilite vraiment la vie.
C'est une question de goût aussi.
Pour ton code, tu es en v1 ou v2 ?
Pour la v2 :

Code : Tout sélectionner

return {
    active = true,
    on = {
    	devices = {
        	'Dio 54755',
        }
    },
    execute = function(domoticz, device)
        -- your script logic goes here, something like this:

        if (device.state == 'On') then
            domoticz.notify('I am on!', '', domoticz.PRIORITY_LOW)
        end
    end
}
Source : http://www.domoticz.com/wiki/%27dzVents ... ng_scripts

Un autre exemple qui lance mon aspirateur robot en mon absence s'il n'a pas été lancé depuis plus de 3 jours :

Code : Tout sélectionner

return {
	active = true,                  
	on = {
		timer = {'every minute'},    
	},

	execute = function(domoticz) 
		hombot = domoticz.devices('Hombot') --nom du selector qui controle l'aspirateur
		
		domoticz.log("Présence depuis "..domoticz.devices('Présence Maison').lastUpdate.minutesAgo.." minutes",domoticz.LOG_DEBUG)
		domoticz.log("hombot depuis "..hombot.lastUpdate.hoursAgo.." heures",domoticz.LOG_DEBUG)
		domoticz.log("Etat maison "..domoticz.devices('Présence Maison').state,domoticz.LOG_DEBUG)
		
		if (domoticz.devices('Présence Maison').lastUpdate.minutesAgo > 5) 
		and domoticz.devices('Présence Maison').state == 'Closed'
		and hombot.lastUpdate.hoursAgo > 36 then
		--absence de plus de 5 minutes et hombot pas lancé depuis 3 jours.
			hombot.dimTo(20) --start
			domoticz.notify('Hombot','Nettoyage en cours',domoticz.PRIORITY_LOW)
			
		end
	end
}
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
krissam44
Messages : 10
Inscription : 27 juil. 2017, 20:04

Re: découverte de dzVents

Message par krissam44 »

Merci Neutrino,

Avec ta syntaxe, cela fonctionne.
Autre question de néophyte : Quand on écrit le script avec l'éditeur interne, il est enregistré dans :
"/opt/domoticz/scripts/dzVents/generated_scripts/".
Où dois-je stocker ceux-ci j'écrit avec notepad++, par exemple, que j'upload sur le raspberry ?

Sinon, entre du pur lua et du dzVents quel langage génère le moins de consommation cpu ?

Merci pour vos réponses, cordialement.
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: découverte de dzVents

Message par Neutrino »

krissam44 a écrit :Merci Neutrino,
Où dois-je stocker ceux-ci j'écrit avec notepad++, par exemple, que j'upload sur le raspberry ?
Tout simplement dans le répertoire "domoticz/scripts/dzVents/"

Pour le CPU, je pense que ça se vaut.
En fait, il faut jongler entre le lua classique et le dzVents suivant ce que l'ont souhaite faire.
L'avantage aussi de dzvents est que tu peux facilement faire un script qui se déclenche toutes les minutes paires et sur la mise à jour de tous les devices commençant par "Temp*" par exemple.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Répondre