Aller au contenu

Messages recommandés

Posté(e)

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
Posté(e)

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)

Posté(e)

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
Posté(e)

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 ?

Posté(e)

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
Posté(e)

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é.

Posté(e)

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
Posté(e)

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 ?

Posté(e)

@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.

Posté(e)

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...

Posté(e)

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

Posté(e)

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
Posté(e)

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 ...

Posté(e)

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"

Posté(e)

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
Posté(e)

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 ;)

Posté(e)

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
Posté(e)

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

Posté(e)

@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 ?

Posté(e)

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.

×
×
  • Créer...