Page 1 sur 1

découverte de dzVents

Publié : 27 juil. 2017, 20:19
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.

Re: découverte de dzVents

Publié : 27 juil. 2017, 20:57
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

Re: découverte de dzVents

Publié : 27 juil. 2017, 21:23
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.

Re: découverte de dzVents

Publié : 27 juil. 2017, 23:29
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
}

Re: découverte de dzVents

Publié : 28 juil. 2017, 09:08
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.

Re: découverte de dzVents

Publié : 28 juil. 2017, 11:23
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.