Aller au contenu

Messages recommandés

Posté(e)

Bonjour à  tous cher amis domoticien :)

 

Voilà , faute de temps j'avais complétement délaisser ma HC2 et depuis 1 semaine, je reprends.

 

Après avoir jouer avec tous mes modules et quelques scènes en mode graphique dont je m'aperçois vite des limites, j'arrive au LUA et là , c'est le drame.

 

Je ne suis absolument pas programmeur et j'avoue avoir passé pas mal d'heure à  essayer de scripter un petit truc mais sans succès.

 

Si ça vous dit d'enrichir le forum et surtout de m'aider à  mettre en place ce script, n'hésitez pas :)

 

Donc voici le contexte :

- La Machine à  Laver est reliée à  un WallPlug.

- Quand le WallPlug est allumé et que la machine est également allumé mais ne fonctionne pas, elle consomme 4,6 w mini.

- A plein régime, elle monte à  plus de 2000w mais ensuite, une fois que l'eau est chaude, elle tourne plus vers les 120 - 140 w voire moins.

- Une fois le cycle de lavage complètement terminé, la machine reviens à  4,6w.

 

L'idée du script :

 

Je souhaiterais que la HC2 vérifier constamment si une machine est en cours ou pas.

Si une machine est en cours et qu'elle se termine, alors la HC2 envoie une notification push sur mon téléphone.

 

J'ai trouvé ceci mais pas pour HC2 :

https://www.kzenjoy.net/2015/domoticz-notification-de-votre-machine-a-laver/

 

J'ose même pas vous poster les tests que j'ai fait en LUA :)

 

A suivre donc...

 

 

  • Upvote 1
Posté(e)

ou bien tu utilises GEA. Il te sera très utile pour plein d'autres automatismes également.

Pour celui-ci : 1 ligne pour t'informer du début de la machine, et 1 ligne pour t'informer quand elle est finie

Posté(e)

Merci de vos réponses rapide !
 

Moicphil, j'avais bien vu ça mais je suis incapable de décoder le script et mon objectif est double, j'aimerai tant qu'a faire apprendre en plus de faire fonctionner ce script ;)
Je vais y regarder en détail et je vous tiens au courant.

 

Jojo, merci également mais alors là  GEA, je pige rien ! ^_^

Posté(e)

Si on se base sur la consommation électrique, c'est assez simple.

 

Il te faut d'abord créer une variable global (exemple : "LAVELINGE") qui sera utilisée pour savoir si le lave linge est en cours de lavage ou non.

 

Puis utiliser le script suivant ... NON TESTE

 

Il faut remplace le 100 par l'ID de ton wallplug (dans l'entête ET id_wallplug = XXX)

Et l'ID de ton portable (id_portable = XXX)

 

Cela devrait fonctionner

--[[
%% properties
100 value
--]]

local id_wallplug = 100
local id_portable = 2

local consoArret = 4.6   -- en dessous de cette valeur on considère le lave-linge comme arrêté
local globalVariable = "LAVELINGE"

local conso = fibaro:getValue(id_wallplug, "value")
local status = fibaro:getGlobalValue(globalVariable)

-- la 1ère fois, la variable est vide donc on l'initialise à  OFF
if (status == "") then fibaro:setGlobal(globalVariable, "OFF")

if (conso <= consoArret) then
	-- arret de la machine
	if (status ~= "OFF") then
		-- si le status n'est pas encore à  OFF, on averti l'utilisateur de la fin
		fibaro:call(id_portable, "sendPush", "Fin du cycle de lavage")
	end
	fibaro:setGlobal(globalVariable, "OFF")
else
	if (status ~= "RUNNING") then
		-- si le status n'est pas encore à  RUNNING, on averti l'utilisateur du démarrage
		fibaro:call(id_portable, "sendPush", "Démarrage du lavage")
	end	
	fibaro:setGlobal(globalVariable, "RUNNING")
end
Posté(e)

Waouh, Merci beaucoup Steven,

 

Je viens de mettre en place cette scène en l'adaptant très facilement avec mes ID.

 

Reste plus qu'a attendre la prochaine machine :P

 

Je vous tiens au courant.

 

Encore merci !

Posté(e)

Bon, j'étais confiant mais ça ne marche pas du premier coup.

 

Le code suivant :

--[[
%% properties
137 value
%% events
%% globals
--]]
 
local id_wallplug = 137
local id_portable = 96
 
local consoArret = 5   -- en dessous de cette valeur on considère le lave-linge comme arrêté
local globalVariable = "LAVELINGE"
 
local conso = fibaro:getValue(id_wallplug, "value")
local status = fibaro:getGlobalValue(globalVariable)
 
-- la 1ère fois, la variable est vide donc on l'initialise à  OFF
if (status == "") then fibaro:setGlobal(globalVariable, "OFF")

if (conso <= consoArret) then
	-- arret de la machine
	if (status ~= "OFF") then
		-- si le status n'est pas encore à  OFF, on averti l'utilisateur de la fin
		fibaro:call(id_portable, "sendPush", "Fin du cycle de lavage")
	end
	fibaro:setGlobal(globalVariable, "OFF")
else
	if (status ~= "RUNNING") then
		-- si le status n'est pas encore à  RUNNING, on averti l'utilisateur du démarrage
		fibaro:call(id_portable, "sendPush", "Démarrage du lavage")
	end	
	fibaro:setGlobal(globalVariable, "RUNNING")
end

Me retourne l'erreur : suivante :

 [DEBUG] 10:42:37: line 33: 'end' expected (to close 'if' at line 18) near 

J'ai donc ajouté un END à  la ligne 19 comme ceci :

--[[
%% properties
137 value
%% events
%% globals
--]]
 
local id_wallplug = 137
local id_portable = 96
 
local consoArret = 5   -- en dessous de cette valeur on considère le lave-linge comme arrêté
local globalVariable = "LAVELINGE"
 
local conso = fibaro:getValue(id_wallplug, "value")
local status = fibaro:getGlobalValue(globalVariable)
 
-- la 1ère fois, la variable est vide donc on l'initialise à  OFF
if (status == "") then fibaro:setGlobal(globalVariable, "OFF")
end
if (conso <= consoArret) then
	-- arret de la machine
	if (status ~= "OFF") then
		-- si le status n'est pas encore à  OFF, on averti l'utilisateur de la fin
		fibaro:call(id_portable, "sendPush", "Fin du cycle de lavage")
	end
	fibaro:setGlobal(globalVariable, "OFF")
else
	if (status ~= "RUNNING") then
		-- si le status n'est pas encore à  RUNNING, on averti l'utilisateur du démarrage
		fibaro:call(id_portable, "sendPush", "Démarrage du lavage")
	end	
	fibaro:setGlobal(globalVariable, "RUNNING")
end

Et maintenant j'ai cette erreur :

 [DEBUG] 10:44:52: line 20: attempt to compare string with number

Une idée ?

 

Posté(e)

Oups, en effet, désolé pour le END

 

Remplace la ligne

local conso = fibaro:getValue(id_wallplug, "value")

par

local conso = tonumber(fibaro:getValue(id_wallplug, "value"))
Posté(e)

Un grand merci Steven, en effet, plus de problème DEBUG.

 

Toutefois, je viens de tester de mettre en service la machine et aucune notification de démarrage reçue.

 

J'attends la fin du cycle et vous tiens au courant si la notification de fin fonctionne.

Posté(e)

es-tu sûr de l'id de ton device ?

tu peux la vérifier ainsi

http://<IP Box>/api/devices?type=iOS_device

vérifie également que ton device soit sélectionné dans "Configuration -> Access control" pour recevoir des notifs

Posté(e)

En effet, un problème d'ID qui ne correspondait pas !

 

A la mise en service du script, je reçois de suite la notif fin de cycle.

 

Reste plus qu'a tester en mode de fonctionnement normal :)

 

Je vous tiens au courant.

Posté(e)

C'est curieux en fait, au démarrage de la machine, je reçois une notification qui indique "Fin de cycle de lavage" et puis plus rien.

 

Voici l'état de la conso pendant le cycle.

 

Capture

 

Ne faudrait-il pas que la mesure de conso soit inférieur à  4,6w pendant 2 min par exemple ?

Posté(e)

Juste pour situé, voici où j'en suis au niveau du code :

--[[
%% properties
137 value
%% events
%% globals
--]]
 
local id_wallplug = 137 --ID du Wallplug de la machine
local id_portable = 95 --ID du téléphone qui reçoit les notifications
local consoArret = 5   -- en dessous de cette valeur on considère le lave-linge comme arrêté
local globalVariable = "LAVELINGE" --Variable LAVELINGE
local conso = tonumber(fibaro:getValue(id_wallplug, "value")) --Variable = àla consomation actuelle du WallPlug
local status = fibaro:getGlobalValue(globalVariable) --Variable qui mémorise l'état du Lavelinge
 
-- la 1ère fois, la variable est vide donc on l'initialise àOFF
if (status == "") then fibaro:setGlobal(globalVariable, "OFF")
end

-- Si la conso est inférieure ou égale àla valeur mini définit dans consoArrêt
if (conso <= consoArret) then

	-- Arret de la machine
	if (status ~= "OFF") then
		-- si le status n'est pas encore àOFF, on averti l'utilisateur de la fin
        -- Envoie d'une notification sur le portable en mode Push
		fibaro:call(id_portable, "sendPush", "Machine terminée")
	end

	fibaro:setGlobal(globalVariable, "OFF")
    -- Et Passage de la variable statut àOFF

else
	if (status ~= "RUNNING") then
		-- si le status n'est pas encore àRUNNING, on averti l'utilisateur du démarrage
        -- Envoie d'une notification sur le portable en mode Push
		fibaro:call(id_portable, "sendPush", "Démarrage de la machine àlaver")
	end	

	fibaro:setGlobal(globalVariable, "RUNNING")
    -- Et Passage de la variable statut àRUNNING
end
Posté(e)

moi, j'aurais mis power et pas value

Egalement, je ne modifie la variable que si nécessaire, jamais pour rien

Voici le code que je te propose d'essayer

--[[
%% properties
137 power
%% events
%% globals
--]]
 
local id_wallplug = 137 --ID du Wallplug de la machine
local id_portable = 95 --ID du téléphone qui reçoit les notifications
local consoArret = 5   -- en dessous de cette valeur on considère le lave-linge comme arrêté
local globalVariable = "LAVELINGE" --Variable LAVELINGE
local conso = tonumber(fibaro:getValue(id_wallplug, "power")) --Variable = àla consomation actuelle du WallPlug
local status = fibaro:getGlobalValue(globalVariable) --Variable qui mémorise l'état du Lavelinge
 
-- la 1ère fois, la variable est vide donc on l'initialise àOFF
if (status == "") then fibaro:setGlobal(globalVariable, "OFF")
end
 
-- Si la conso est inférieure ou égale àla valeur mini définit dans consoArrêt
if (conso <= consoArret) then
 
	-- Arret de la machine
	if (status ~= "OFF") then
		-- si le status n'est pas encore àOFF, on averti l'utilisateur de la fin
        -- Envoie d'une notification sur le portable en mode Push
		fibaro:call(id_portable, "sendPush", "Machine terminée")
	    -- Et Passage de la variable statut àOFF
		fibaro:setGlobal(globalVariable, "OFF")
	end
  
else
	if (status ~= "RUNNING") then
		-- si le status n'est pas encore àRUNNING, on averti l'utilisateur du démarrage
        -- Envoie d'une notification sur le portable en mode Push
		fibaro:call(id_portable, "sendPush", "Démarrage de la machine àlaver")
	    -- Et Passage de la variable statut àRUNNING
		fibaro:setGlobal(globalVariable, "RUNNING")
	end	
 
end

en fait regarde dans le json du device

http://<IP Box>/api/devices/<# id>

Posté(e)

Ok, je viens de modifier le script et je vous tiens au courant.

 

Merci de votre aide et aucun souci Steven, j'essaye de comprendre et vous m'aidez beaucoup tout les deux ;)

 

Petite remarque : A chaque modification du script, je dois le démarrer avec le bouton démarrer et là , j'ai directement la notification "Fin de cycle".

Posté(e)

Normalement, ce script doit s'exécuter automatiquement à  chaque changement de consommation de ta prise.

 

N'oublie pas de créer la variable globale : LAVELINGE

Posté(e)

Bon ça y est, les notifications arrivent.... sans arrêt à  chaque modification de la valeur du WallPlug j'ai l'impression.

 

Au démarrage de la machine 2-3 minutes où rien ne se passe et depuis, notification toute les 10 secondes ! :)

 

Je vais annuler le script en attendant la modif :P

Posté(e)

es-tu sûr et certain que la variable prédéfinie LAVELINGE est correctement crée, avec les 2 valeurs possibles "OFF" et "RUNNING"

EN RESPECTANT la casse ?

Posté(e)

Tout à  fait.

 

Je pense que le souci vient du fait que la machine ne cesse de passer de 0 à  xxx Watt sans arrêt et à  chaque fois que ça passe sous et au dessus des 5w, ça notif.

×
×
  • Créer...