Aller au contenu

Messages recommandés

Posté(e)

En réalité, un cycle se décompose comme ceci :

 

Situation de départ :  WallPlug en stop

Mise en route d'un cycle : WallPlug en On et la première partie du cycle consiste à  chauffer l'eau, ce qui consomme environ 2000 watts de manière constante

En cours de cycle : Une fois l'eau chaude, la consommatation redescent environ entre 0 et 150 Watts mais change toutes les 2 ou 3 secondes en passant par 0.

A la fin d'un cycle : La consommation redevient constant à  4.6 - 4.7 Watt.

 

En gros, j'aimerai que pour considérer le cycle terminé, il faut que la conso soit inférieur à  5 w pendant 2 minutes par exemple et au bout de 5 min, on met le WallPlug à  OFF

Pour la mise en service, ça peut être si le WallPlug est ON pendant 1 min, alors début d'un cycle.

 

Possible à  votre avis ?

Posté(e)

je suis maintenant devenu un FAN de GEA, et c'est un excellent exemple pour commencer àapréhender l'outil.

Il te faudra l'apprivoiser, puis ce sera parti

Posté(e)

Bien, alors voilà  où j'en suis :

 

J'ai mis en service le GEA de base sur ma HC2.

 

J'ai modifié le GEA de base en y ajoutant les ID de l'ensemble de mes périphériques.

 

Si j'ai bien compris, maintenant je vais essayer de créer des événements...

 

Je continue de vous tenir au courant pour l'analyse de la machine à  laver ;)

Posté(e)

Vu la complexité du truc et le peu de temps que j'ai ày accorder, je clos cette conversation pour créer un sujet dédié àmon projet global GEA, qui me servira en même temps de pense bête et aidera peut être d'autres personnes du forum.

Posté(e)

J'ai pas la possibilité de tester mais si quelqu'un a le courage :

--[[
% properties
120 value
--]]

local smartphone = 504		-- identifiant du smartphone pour recevoir les push
local wallplug = 120		-- identifiant de wallplug du lave-linge
local autoOff = true		-- true si le wallplug doit être éteint àla fin des cycles

-- ---------------------------------------
-- Paramétrage des cycles de lavage
-- respecter l'ordre
-- ----------------------------------------
local cycles = {
	{name="Preparation", watts={min=0, max=5.0}, push="En attente de démarrage"},
	{name="Chauffage", watts={min=500, max=5000}, push="Chauffage en cours"},
	{name="Lavage", watts={min=0,max=500}, push="Lavage détecté"},
	{name="Fin", watts={min=0, max=5.0}, push="Fin du programme"}
}

-- ========================================
-- NE PAS TOUCHER
-- ========================================
function getConso(seconds)
	local fin = os.time()
	local t = os.date("*t", fin)
	t.sec = t.sec - seconds
	local debut = os.time{year=t.year, month=t.month, day=t.day, hour=t.hour, min=t.min, sec=t.sec}
	local res = api.get("/energy/"..debut.."/"..fin.."/compare/devices/power/"..wallplug)
	return res[1].min, res[1].max, res[1].avg
end  

local estAllume = tonumber(fibaro:getValue(wallplug, "value")) > 0

function check()
	-- Si le module est allumé
	if (tonumber(fibaro:getValue(wallplug, "value")) > 0 ) then 
		-- on regarde la conso des 5 dernières secondes
		local min,max = getConso(5)
		local prochaine = cycles[1]
		if (min >= prochaine.watts.min and max <= prochaine.watts.max) then
			-- si c'est la bonne, on envoi un push
			print(prochaine.name)
			fibaro:call(smartphone, "sendPush", prochaine.push)
			--fibaro:setGlobal("Pushbullet", prochaine.push)
			table.remove(cycles, 1)
		end
		--print(min .. " " .. max)
		-- si toutes les étapes n'ont pas encore été consumée, on relance la contrôle dans 5 secondes
		if (#cycles > 0) then 
			setTimeout(function() check() end, 5000) 
		else
			if (autoOff) then
				fibaro:call(wallplug, "turnOff")
			end
		end
	end
end


if (estAllume) then
	print("Wallplug .. [" .. wallplug .. "] allumé")
	check()
else
	print("Wallplug .. [" .. wallplug .. "] éteint")
end
Posté(e)

Bon, je reviens vers vous un peu tard... pas mal de boulot.

 

Verdict : Il ne se passe rien. curieusement aucune notification et les ID des périphériques (Wallplug et Smartphone OK).

 

Dans l'écran sous le scenario :

 

[DEBUG] 12:51:16: Wallplug .. [137] éteint

 

Une idée ? Peut-être une variable à  créer ?

Posté(e)

J'ai pu testé et c'est la même chose chez moi...rien.

J'analyse et testé comme il faut ce week-end et je reviens avec un script qui fonctionne.

  • Upvote 1
Posté(e)

Vos femmes doivent vous aimer tous les 2 à  vous battre à  faire des machines :) :)

 

Sinon le script ci dessus, il va juste y avoir un souci, c'est que moi il peut enchainer avec un séchage... Et là  c'est le drame pour le script !

  • Upvote 1
Posté(e)

Salut

 

Si ca peut vous aider, perso pour etre notifié quand ma machine est finie.

J'utilise 2 variables et ce script.

 

ca fonctionne à  tous les coups ;)

--[[
%% autostart
%% properties
212 power
%% globals
--]]

local Heure = os.date("%H:%M", os.time())  
local power_socket = 212
local powerlive = fibaro:getValue(power_socket, "power") 

  fibaro:debug("Puissance = "..powerlive.." Watt")
if (fibaro:countScenes()>1)
then
 fibaro:abort();
  end
local run = 0
local power_socket = 212
local currentDate = os.date("*t");
local power = fibaro:getValue(power_socket, "power")
local counter = 0

if ( tonumber(fibaro:getValue(power_socket, "power")) > 35 ) and run == 0 then
  local start = (os.time())
  fibaro:debug("Machine en route")
  fibaro:debug("Puissance = "..power.." Watt")
run = 1
end


while run == 1 do

if ( tonumber(fibaro:getValue(power_socket, "power")) < 4.4) then
     counter = counter + 1
    local power2 = fibaro:getValue(power_socket, "power")
        fibaro:debug('counter = ' ..counter.. " : "..power2.."Watt")
    end
          if ( tonumber(fibaro:getValue(power_socket, "power")) > 4.4 ) then
      counter = 0
    end
       if ( tonumber(fibaro:getValue(power_socket, "power")) < 4.4) and counter > 60 then
          fibaro:debug("Machine finie.")
          local Heure = os.date("%H:%M", os.time())  
          local power3 =  fibaro:getValue(power_socket, "power")
          fibaro:debug("Puissance 3 = "..power3.." Watt")
         
		  
		  fibaro:setGlobal("SMS", "La machine est finie, il est : " .. Heure)
         -- fibaro:setGlobal("TTS", "La machine à  laver est finie")
          fibaro:setGlobal("pushover", "La machine est finie, il est : " .. Heure)
         -- fibaro:sleep(2000)
        --  fibaro:startScene(27) -- tts
          fibaro:call(36, "pressButton", "1") --sms lua
          fibaro:call(36, "pressButton", "2") --sms lua  
          fibaro:call(11, "pressButton", "4") --pushover lua  
          fibaro:call(105, "setColor", "255", "0", "255", "0") --rgb salon
          fibaro:call(119, "setColor", "255", "0", "255", "0") --rgb cuisine
          fibaro:sleep(12*1000)
          fibaro:call(105, "turnOff")
          fibaro:call(119, "turnOff") 
		   
run = 0
       end
 
  fibaro:sleep(1*1000)
end
  • Upvote 1
Posté(e)

Merci @moicphil

Je cherche un script plus générique avec la possibilité de tracer toutes les cycles d'une machine à  laver, chauffe-eau, ... et un peu moins coà»tant en terme de ressources CPU. Pour l'instant, l'avantage du tien est QU'IL FONCTIONNE  :60: mais j'ai bon espoir que le mien aussi dans pas longtemps  ;)

 

 

Bon, quand je regarde le script que j'ai fourni, cela prouve que je suis capable de fournir de la m...  j'ai pas encore testé mais en tout cas, le 1er bug est déjà  à  la 2ème ligne ... et oui, j'ai oublié un % ... dans l'entête, il doit toujours y avoir %%.

  • Upvote 1
Posté(e)

Steven, me plait bien au final, MoicPhil aussi, et comme ça un trucs de geek en plus pour Mme :) :)

Posté(e)

@NICO : En vrai macho qui se respecte, je n'arrête pas de demander à  ma compagne de procéder au lavage du linge :2:

 

@MoicPhil : Beau boulot ;)

 

@Steven : J'ai ajouté le % et j'avoue que je ne l'avais pas vu non plus ! Malheureusement, j'ai modifié le script avec une machine qui fonctionnait et l'ordre n'a donc pas fonctionné mais j'ai quand même eu une notification. Je teste sur la prochaine machine.

 

Petit défi supplémentaire, j'aimerai en plus de la notification que mon Sonos Play 1 indique "La machine est terminée"... 

×
×
  • Créer...