Aller au contenu

Messages recommandés

Posté(e) (modifié)

Si comme moi vous avez votre sèche-linge à  l'autre bout de la maison et que vous désirez savoir à  quel moment il est terminé, voici un petit script utilisant un wallplug pour vérifier la consommation de ce dernier.

Bien sur il faudra adapter en fonction du votre.

 

En cadeau des petits icônes pour les 5 états :

 

gallery_11_7_25697.pnggallery_11_7_25698.pnggallery_11_7_25699.pnggallery_11_7_25700.pnggallery_11_7_25701.png

 

Tout d'abord un petit relevé des consommations, nous obtenons ceci pour un cycle complet de chauffage :

 

gallery_11_7_42165.jpg

 

Un peu plus en détail sur le défoulement à  la fin :

 

gallery_11_7_1350.jpg

 

Reste plus qu'à  repérer les différentes phases en fonction de la consommation de la machine à  l'aide d'un script sans prétention :

--[[
%% autostart
%% properties
%% globals
--]]

-- Tumble dryer - scene process check v 1.0.3 [03-2015]
-- Copyright © 2014 BenjyNet

local sourceTrigger = fibaro:getSourceTrigger();
local id_wallplug = 42;
local current_conso = 0;
local power = 0;

if (sourceTrigger["type"] == "autostart") then
	fibaro:debug("Script sèche-linge démarré");
	while true do
    local flag = 0;
	current_conso = tonumber(fibaro:getValue(id_wallplug, "power"));
	if current_conso > 500 then
		power = 1;
		fibaro:debug(os.date() .. " - Start tumble dryer");
		fibaro:debug(os.date() .. " - PHASE 1");
		fibaro:sleep(5*60*1000); -- wait 5 min
		while current_conso > 500 do
			fibaro:sleep(2*60*1000); -- check conso every 2 min
			current_conso = tonumber(fibaro:getValue(id_wallplug, "power"));
		end
		fibaro:debug(os.date() .. " - PHASE 2");
		while current_conso > 100 do
			fibaro:sleep(1*60*1000); -- check conso every min
			current_conso = tonumber(fibaro:getValue(id_wallplug, "power"));
		end
		fibaro:debug(os.date() .. " - PHASE 3");
		while (current_conso > 2 and flag < 149) do
			if current_conso > 100 then
				flag = 0;
				current_conso = tonumber(fibaro:getValue(id_wallplug, "power"));
			else
				flag = flag + 1;
				current_conso = tonumber(fibaro:getValue(id_wallplug, "power"));
			end
			-- fibaro:debug(flag);
			fibaro:sleep(2*1000); -- check conso every 2s
		end
		fibaro:debug(os.date() .. " - Tumble dryer process terminated - flag : " .. flag .. " conso : " .. current_conso);
		-- Send notification to cellphone here
                fibaro:call(9, "sendEmail", "Sèche-linge", "Processus terminé");
		fibaro:call(101, "sendPush", "Le sèche-linge est terminé");
	end
	if current_conso > 2 then
		power = 1;
		fibaro:debug(os.date() .. " - Tumble dryer power ON - Please power OFF");
		--fibaro:call(10, "setProperty", "currentIcon", 1009);
		current_conso = tonumber(fibaro:getValue(id_wallplug, "power"));
	end
	if (current_conso == 0 and power == 1) then
		power = 0;
		fibaro:debug(os.date() .. " - Tumble dryer power OFF");
		--fibaro:call(10, "setProperty", "currentIcon", 1008);
	end
	fibaro:sleep(5*60*1000); -- check if tumbler dryer is ON every 5 min
	end
end
Modifié par BenjyNet
  • Upvote 6
Posté(e)

Ahah ma femme est une blagueuse :) Elle m'a remis une nouvelle machine, juste derrière la précédente sans éteindre le seche-linge. Résultat, je suis bloqué dans ma boucle qui regarde si elle l'a éteint ! Une petite modification s'impose ! Je vois ça et vous le post sur le 1er post dès que c'est fait.

Posté(e)

Bon je viens de modifier mon script, mais les pros, est-ce que vous savez si on peut modifier les icones à  la volée comme dans les VD ?

J'ai essayé avec fibaro:call(scene_id,"setProperty","currentIcon",1008); mais ça ne marche pas.

Posté(e)

je fais cela pour changer le label d'un bouton dans un vd, il faut l'adapter pour ton besoin mais le principe reste le même ;)

local deviceToEdit = fibaro:getSelfId();
local ID = "btnOnOffAllScenes";
--Block all scenes execution
--Unblock scenes execution
 
HC2 = Net.FHttp("192.168.1.220",80);
HC2:setBasicAuthentication("admin", "admin");
--get the device to change
response ,status, errorCode = HC2:GET("/api/virtualDevices?id="..deviceToEdit)
 
if (tonumber(status) == 200) then   
  jsonTable = json.decode(response);
  for key,value in pairs(jsonTable.properties.rows) do    
    name = jsonTable.properties.rows[key].elements[1].name;
    --fibaro:debug(name);
    if(name==ID) then
      n = key;
      match = true;      
      caption = jsonTable.properties.rows[n].elements[1].caption;
      fibaro:debug(caption);
      break;
    end
  end
  --
  if (match) then
    fibaro:debug(name .." found, caption is [".. caption .."]");
    jsonTable.properties.rows[n].elements[1].caption = "Unblock scenes execution"  
    -- send back
    json = json.encode(jsonTable);
    response2 ,status2, errorCode2 = HC2:PUT("/api/virtualDevices?id="..deviceToEdit, json);
    if (tonumber(errorCode2)==0) then
      fibaro:debug("Edit complete text set "..status2)
    else
      fibaro:debug("Error update "..errorCode2)
    end 
    
  else
    fibaro:debug(ID .. " not found!")
  end
else
  fibaro:debug("error");
end

:)

Posté(e)

Bon en utilisant l'api si j'ai bien compris je dois d'abord récupérer une table json - json.decode avec un HC2:GET puis je dois modifier cette table et la replacer avec un json.encode et un HC2:PUT.

Et est-ce que faire ça permet de rafraîchir la page et donc de voir le changement d'icone ? ou faudra-t-il faire F5 àla mano ?

Posté(e)

Je remettais pas à0 ma variable flag. Donc au bout de quelques machines le script ne rentrait plus dans la phase 3 et disait machine terminé alors que non !

C'est corrigé dans le post initial. Faudra que je le fasse evoluer pour modifier les icones en fonction du cycle, j'aime le côté visuel et en plus c'est tres waf ;)

Posté(e)

Ok je viens de regarder les deux et j'ai vu que tu as déplacé le flag mais je préférais avoir la confirmation. Bon je vais faire la modif sur mes deux scripts :)

Pour les icônes cela pourrait être sympa.

×
×
  • Créer...