Aller au contenu

Script Allumage Led Fonction Conso Wallplug


lolomail

Messages recommandés

Le script de BenjyNet m'a donné un idée pour des rubans leds que j'ai chez moi au niveau de la télé, l'idée est de démarrer les leds quand il fait nuit et quand la télé marche donc tire du jus sur le wallplug ou elle est branchée.

 

J'ai fais le script suivant:

--[[
%% autostart
%% properties
%% globals
--]]
 
-- Allumage led fonction conso wallplug v 1.0.0 [03-2014]
-- Copyright © 2014 lolomail

local sourceTrigger = fibaro:getSourceTrigger();
local current_conso = 0;

if (
(sourceTrigger["type"] == "autostart")
and
( fibaro:getGlobalValue("Jour_Nuit") == "Jour" )
)
then
  		while true do
		local current_conso = tonumber(fibaro:getValue(66, "valueSensor"));
		fibaro:debug("Conso wallplug " ..current_conso);
		if current_conso > 80 then
				fibaro:debug(os.date() .. " - Télé allumée");
				fibaro:debug(os.date() .. " - LEDs allumées");
				if ( tonumber(fibaro:getValue(132, "value")) < 1 ) then
						fibaro:call(132, "turnOn");
   			   	end
   			   	if ( tonumber(fibaro:getValue(133, "value")) < 1 ) then
						fibaro:call(133, "turnOn");
   			   	end

        end
		if current_conso < 80 then
				fibaro:debug(os.date() .. " - Télévision éteinte");
				fibaro:debug(os.date() .. " - LEDs éteintes");
				if ( tonumber(fibaro:getValue(132, "value")) > 1 ) then
						fibaro:call(132, "turnOff");
   			   	end
   			   	if ( tonumber(fibaro:getValue(133, "value")) > 1 ) then
						fibaro:call(133, "turnOff");				
				end
    	fibaro:sleep(10*1000)
    	end
    	end
end

Il me démarre nickel les rubans quand la conso de la télé passe au delà  de 80w mais quand j'éteins, il n'éteint pas les rubans. J'ai fais une coquille?

 

Merci

Laurent

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Essaye sa

--[[
%% properties
66 value
%% globals
--]]
local sourceTrigger = fibaro:getSourceTrigger();
local current_conso = 0;
local wallplug = 66;
if ((sourceTrigger['type']=='property') and ( fibaro:getGlobalValue("Jour_Nuit") == "Jour" )
)
then
    if (startSource['deviceID']==tostring(wallplug)) then
        local current_conso = tonumber(fibaro:getValue(66, "valueSensor"));
        fibaro:debug("Conso wallplug " ..current_conso);
        if (current_conso > 80) then
            fibaro:debug(os.date() .. " - Télé allumée");
            fibaro:debug(os.date() .. " - LEDs allumées");
            if ( tonumber(fibaro:getValue(132, "value")) < 1 ) then
                fibaro:call(132, "turnOn");
            end
            if ( tonumber(fibaro:getValue(133, "value")) < 1 ) then
                fibaro:call(133, "turnOn");
            end
        elseif current_conso < 80 then
            fibaro:debug(os.date() .. " - Télévision éteinte");
            fibaro:debug(os.date() .. " - LEDs éteintes");
            if ( tonumber(fibaro:getValue(132, "value")) > 1 ) then
                fibaro:call(132, "turnOff");
            end
            if ( tonumber(fibaro:getValue(133, "value")) > 1 ) then
                fibaro:call(133, "turnOff");    
            end
        end
    end
fibaro:sleep(10*1000)
end
Lien vers le commentaire
Partager sur d’autres sites

Je pige pas, je fais la même chose àl'aide d'une scène journalière et une variable Jour/Nuit comme tu as mis d'ailleurs.

Quand j'éteint la tv ça éteint tout, mais ça n'allume les leds et neon que s'il fait nuit.

Qu'est ce qu'il fait de plus le script ?

Lien vers le commentaire
Partager sur d’autres sites

Euh ... je suis peut être un peu con ... mais à  quoi servent les tests sur les modules 132 et 133 ?

Pas besoin de connaitre leurs états initiaux... on les allume ... ou on les éteint ... non ?

 

Donc... en simplifiant, on obtient:

--[[
%% properties
66 value
%% globals
--]]
local sourceTrigger = fibaro:getSourceTrigger();
local current_conso = 0;
local wallplug = 66;

if ((sourceTrigger['type']=='property') and ( fibaro:getGlobalValue("Jour_Nuit") == "Jour" )) then
    if (startSource['deviceID']==tostring(wallplug)) then
        local current_conso = tonumber(fibaro:getValue(66, "valueSensor"));
        fibaro:debug("Conso wallplug " ..current_conso);
        if (current_conso > 80) then
            fibaro:debug(os.date() .. " - Télé allumée");
            fibaro:debug(os.date() .. " - LEDs allumées");

            fibaro:call(132, "turnOn");
            fibaro:call(133, "turnOn");
        else
            fibaro:debug(os.date() .. " - Télévision éteinte");
            fibaro:debug(os.date() .. " - LEDs éteintes");

            fibaro:call(132, "turnOff");
            fibaro:call(133, "turnOff");    
        end
    end
fibaro:sleep(10*1000)
end
Lien vers le commentaire
Partager sur d’autres sites

Ok Xd, m'apprendra à  me relire

--[[
%% properties
66 value
%% globals
--]]
local sourceTrigger = fibaro:getSourceTrigger();
local current_conso = 0;
local wallplug = 66;
if ((sourceTrigger['type']=='property') and ( fibaro:getGlobalValue("Jour_Nuit") == "Jour" )) then
    if (sourceTrigger['deviceID']==tostring(wallplug)) then
        local current_conso = tonumber(fibaro:getValue(66, "valueSensor"));
        fibaro:debug("Conso wallplug " ..current_conso);
        if (current_conso > 80) then
            fibaro:debug(os.date() .. " - Télé allumée");
            fibaro:debug(os.date() .. " - LEDs allumées");
            fibaro:call(132, "turnOn");
            fibaro:call(133, "turnOn");
        elseif (current_conso < 80) then
            fibaro:debug(os.date() .. " - Télévision éteinte");
            fibaro:debug(os.date() .. " - LEDs éteintes");
            fibaro:call(132, "turnOff");
            fibaro:call(133, "turnOff");
        end
    fibaro:sleep(10*1000)
    end
end
Lien vers le commentaire
Partager sur d’autres sites

Euh ... je suis peut être un peu con ... mais à  quoi servent les tests sur les modules 132 et 133 ?

Pas besoin de connaitre leurs états initiaux... on les allume ... ou on les éteint ... non ?

 

Pour info, voir post de @petergebruers mardi 11 mars (19H35) sur forum officiel de Fibaro : ICI

Il porte sur l'intérêt des tests d'état d'un module qui évitent d'adresser des commandes inutiles, surtout dans les boucles, 

 

@Shad, tu les a également supprimés dans ton dernier script ?

Lien vers le commentaire
Partager sur d’autres sites

@I-magin: Mouis... d'accord, je comprend le principe (bien qu'au niveau strictement programmatique, ça n'a aucun sens :-) ! )

 

... par contre, ce n'est pas très rassurant quand à  la robustesse de la HC ... si 4 commandes en 10s (inutiles ou pas) peuvent la 'planter' ... bof bof bof ...

 

Mais merci pour l'info.

Lien vers le commentaire
Partager sur d’autres sites

Ah merde, j'ai copier coller le code d'avant j'avais pas vue que c'était pas le mien ^^ attend tiens

--[[
%% properties
66 value
%% globals
--]]
local sourceTrigger = fibaro:getSourceTrigger();
local current_conso = 0;
local wallplug = 66;
if ((sourceTrigger['type']=='property') and ( fibaro:getGlobalValue("Jour_Nuit") == "Jour" )) then
    if (sourceTrigger['deviceID']==tostring(wallplug)) then
        local current_conso = tonumber(fibaro:getValue(66, "valueSensor"));
        fibaro:debug("Conso wallplug " ..current_conso);
        if (current_conso > 80) then
            fibaro:debug(os.date() .. " - Télé allumée");
            fibaro:debug(os.date() .. " - LEDs allumées");
            if ( tonumber(fibaro:getValue(132, "value")) < 1 ) then
                fibaro:call(132, "turnOn");
            end
            if ( tonumber(fibaro:getValue(133, "value")) < 1 ) then
                fibaro:call(133, "turnOn");
            end
        elseif (current_conso < 80) then
            fibaro:debug(os.date() .. " - Télévision éteinte");
            fibaro:debug(os.date() .. " - LEDs éteintes");
            if ( tonumber(fibaro:getValue(132, "value")) > 1 ) then
                fibaro:call(132, "turnOff");
            end
            if ( tonumber(fibaro:getValue(133, "value")) > 1 ) then
                fibaro:call(133, "turnOff");
            end
        end
    fibaro:sleep(10*1000)
    end
end
Lien vers le commentaire
Partager sur d’autres sites

Ce n'est pas planté la HC2 mais overloader le réseau de communication qui ne sert a rien.

Imagine si tu as des scènes de partout qui balance ce type de commande toutes les secondes...

 

Je cite wikipedia:

Le protocole radio Z-Wave est optimisé pour des échanges à  faible bande passante (entre 9 et 40 kbps) et des appareils sur pile ou alimentés électriquement, par opposition au Wi-Fi par exemple, qui est prévu pour des échanges à  haut débit et sur des appareils alimentés électriquement uniquement.

 

 

Donc, bande passante minimum: 9kps ... faut déjà  pas mal de modules pour 'overloader' le réseau, même à  1 commande par seconde et par module ...

Lien vers le commentaire
Partager sur d’autres sites

Je renouvelle ma suggestion : avant les "turnOff", remplacer le test "value"  > 1 par > 0 

Comme ce sont des wallplug, et si tu veux tester la conso au lieu de ON ou OFF, il faut utiliser "valueSensor"

Lien vers le commentaire
Partager sur d’autres sites

Oui ... revenons au vrai problème  :P !

 

Si j'ai bien compris ... les LEDs s'allument  correctement avec la TV mais ne s'éteignent pas ...

 

Ne serait-ce pas à  cause de ce test ... qui n'est TRUE que pendant la journée ... donc le soir ou la nuit ... bein ... le reste du code n'est plus exécuté ...

if ((sourceTrigger['type']=='property') and ( fibaro:getGlobalValue("Jour_Nuit") == "Jour" )) then
Lien vers le commentaire
Partager sur d’autres sites

Bon j'ai fais les tests:

- Le script de Shad, avec et sans check de la variable jour, que dalle cela ne marche pas

- Mon script, j'ai viré les check pour vérifier les wallplug lors du off, cela a marché la premiere fois puis encombrement du reseau Z-wave j'ai du faire 2-3 reset et supprimer la scène, depuis cela va nickel.

 

En meme temps apres enclenchement de la scène allumage / extenction le wallplug de la télé reporté 45w avec la télé allume quand normalement je tourne autour des 90w. J'avais déjà  remarqué un relevé vizarre de conso lors des précédents test, puis celui ci devenait normal dès que je désactivé la scène. On dirait que quelque chose mets le souc.

 

Bon je sens que je vais laisser poser quelques jours pour revenir plus tard dessus.

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

@Shad:

 

Si comme le dit lolomail, aucun message n'apparait, c'est qu'il y a clairement un problème avec ton premier test:

if ((sourceTrigger['type']=='property') and ( fibaro:getGlobalValue("Jour_Nuit") == "Jour" )) then

D'alleurs, à  quoi sert exactement la première expression ?

Lien vers le commentaire
Partager sur d’autres sites

Oui le problème c'est qu'il ne doit pas relever la consommation comme un trigger, je pense que le problème vient de sa.

Mais j'ai pas eu assez de temps pour joué avec le wallplug, je vais testé dans la journée pour voir.

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...