Aller au contenu
lolomail

Script Allumage Led Fonction Conso Wallplug

Recommended Posts

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Essaie de passer la valeur contrôlée (si lumière allumée) à  zéro au lieu de 1, ce qui donne > 0 au lieu de > 1

 

NB : Et pour le contrôle si module éteint : == 0 (au lieu de < 1)

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Post ton code avec ce qu'il veut que tu fasse que je regarde si tu veux.

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon j'ai fais un test hier, le script de Shad ne marche pas :(.

J'ai mis la scène en active, aucun message dans le debug, on dirait que le script n'est pas déclenché.

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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 ?

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
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...

Partager ce message


Lien à poster
Partager sur d’autres sites

Ce que j'ai oublie de préciser les modules 132 et 133 sont dies wallplug sur lesquels sont branches les alim des rubans LED

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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 ...

Partager ce message


Lien à poster
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"

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon je teste tout cela ce soir et je vous fais un retour ;)

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

Hier lors des test j'avais modifier "jour" en "nuit" et pas de réaction :(.

Shad a fait un modif sur une des premières lignes de détection de la conso, je test asap ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Sinon, tu vires le test 'Jour/Nuit' pour l'instant, histoire d'isoler les problèmes ...

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

Mon code marche pas ???

 

je ferais des tests demain.

 Promis je te rend sa fonctionnelle ^^

Partager ce message


Lien à poster
Partager sur d’autres sites

Nope il en fonctionne pas, j'ai aucun des messages de débug qui apparaisent même si je tire plus de 100W :(

 

Milles merci Shad pour ton aide :D

Partager ce message


Lien à poster
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 ?

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

×