Aller au contenu
neliger

Voir Si Une Lumière Est Allumée Et Tout Éteindre

Recommended Posts

sympa,

comme àchaque fois je me demande si il y pas moins de lire le texte du vifb pour éviter un nouvel import de VD ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Je veux bien mettre le code, mais il y a 2 labels en plus que par le passé

Partager ce message


Lien à poster
Partager sur d’autres sites

bizarrement ce matin le VD ne marche plus il me détecte des lampes allumées alors que tout est éteint

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai toujours ce problème.

il me voit 3 lampes allumées.

 

il y a il un moyen de savoir quels IDs sont concernés ?

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

en effet, j'ai commencé àmodifier le VD pour afficher les lumières allumées, mais il faut que je termine

Partager ce message


Lien à poster
Partager sur d’autres sites

jojo tu es toujours en retard que fais tu donc de tes journée lol

Envoyé de mon SM-G900F en utilisant Tapatalk

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

@mprinfo,

je fais tes commandes ...

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Donc prévoit des frites je viens manger

Envoyé de mon SM-G900F en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai toujours ce problème.

il me voit 3 lampes allumées.

 

il y a il un moyen de savoir quels IDs sont concernés ?

voici donc la v 3.0

Toutes_lumières_v3.0.vfib

Partager ce message


Lien à poster
Partager sur d’autres sites

@jojo, tu peux poster le code stp ;-)

 

Excellentissime :60:

Partager ce message


Lien à poster
Partager sur d’autres sites

volontiers, 

mais tu devras quand-même réimporter le device, car j'ai créé 10 labels

Partager ce message


Lien à poster
Partager sur d’autres sites

Adopté, merci jojo. Super taf.

J'avais trouvé mon probleme sur ce VD, c'était à  cause d'un FGMS que j'avais inseré mais pas encore renommé (il était dans en ID_x) et le VD les voyait comme des lampes ...

 

N'empêche que la c'est pas sympa de savoir.

Une remarque, si je veux supprimer le double click pour éteindre je mets en commentaires quelles lignes ? Car par sur de l'utilité du dble click

Partager ce message


Lien à poster
Partager sur d’autres sites

voici le code du bouton "Tout éteindre, sans le double click:

----------------------------------
-- User Settings
----------------------------------
  
-- Modules àexclure et fonction de traitement (pas raccordés àdes lumières)
-- Peut contenir un id ou un mot clés àchercher dans le nom du module
toExclude = {}
toInclude = {}

----------------------------------
-- DO not change bellow this line
----------------------------------

-- Modules àexclure ou inclure et fonction de traitement (pas raccordés àdes lumières)
-- Peut contenir un id ou un mot clés àchercher dans le nom du module
-- toExclude = {72, "Dispo", "Volet", "Bubendorff"}
function shouldExclude(module)
    for k, v in pairs(toExclude) do
    	if string.find(module.name, v) ~= nil or module.id == v then return true end
    end
	return false
end

function shouldInclude(module)
    for k, v in pairs(toInclude) do
    	if string.find(module.name, v) ~= nil or module.id == v then return true end
    end
	return false
end

HC2 = Net.FHttp("127.0.0.1",11111)

function confirm(msg, labelId, secondes)
    local current = fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value")
    if (current == msg) then
        fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", " ")
    	return true
    else
        fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", msg)
        fibaro:sleep(secondes*1000)
        fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value","")
	return fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value") == " "
    end
end
 
    -- Récupération de la liste des modules
    response = HC2:GET("/api/devices")
    json = json.decode(response)
    -- Boucle sur les modules
    for k, v in ipairs(json) do
	  if ((type(v.properties.isLight) == "string" and type(v.properties.value) == "string") or shouldInclude(v)) and not shouldExclude(v) then
		if v.properties.value == "true" 
          then
		    fibaro:call(v.id, "turnOff")
		  elseif v.properties.value ~= nil and v.properties.value ~="false" then
			if tonumber(v.properties.value) > 0 then
				fibaro:call(v.id, "turnOff")
			end
  		end
	  end
    end -- for

Partager ce message


Lien à poster
Partager sur d’autres sites

au top !

J'ai rajouté dans le bouton du switch off un 

fibaro:sleep(500) 
fibaro:call(fibaro:getSelfId(), "pressButton", "14")

comme c'est des que je switch off, il remet à  0 le compteur

car j'ai sortit le code du main loop pour le mettre dans GEA

Partager ce message


Lien à poster
Partager sur d’autres sites

salut messieurs,

 

@jojo super boulot encore..

 

Un inconvenient pour moi, ca clignote avec le code dans le main loop ;-) mais moi je m'en sers uniquement en fonction du mode de la maison, donc pas de clignotement, j'appuie sur les boutons avec GEA ;-)

 

Merciiiiii

Partager ce message


Lien à poster
Partager sur d’autres sites

@sakkhho,

Je comprends maintenant pourquoi tu ne voulais pas du double click.

Je me demandais justement dans GEA comment il réagirait.

Idée, dans GEA on pourrait mettre 2 fois de suite l'appel à  ce bouton de la VD dans les options, ce qui correspond à  un double click ?

 

@pepite,

Oui ça clignote (uniquement si toutes les lumières sont éteintes) car la main loop appelle un bouton. Je devrais regarder pour tout mettre dans la main loop. => à  ajouter à  la todo

Partager ce message


Lien à poster
Partager sur d’autres sites

bonne idee pour GEA, àtester 2 fois de suite l'appel ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

oué mais je suis pas sur que sur smartphone le double click soit très pratique

perso en mode simple click c'est parfait pour moi

Partager ce message


Lien à poster
Partager sur d’autres sites

@sakkhho,

Je te confirme que le double click fonctionne sans soucis depuis les mobile

 

@pepite,

tu teste depuis GEA et tu nous dis quoi ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

J'ai tout lu et il y a une chose que je ne comprends pas bien...

Steven(je crois) avait posté ce petit bout de code que j'ai un peu modifié et qui fonctionne très bien pour éteindre les lampes.

Il y a peut être une subtilité que je n'ai pas compris, mais V3 ou V4, toutes mes lumières s'éteignent (dimmer, wallplug, fgs...) et rien d'autre.

voici le code:

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

function turnIt(mode)
  -- On parcours les 350 premiers modules
  for i = 1, 2000 do
    -- Si un module est de type Eclairage
    local ret = fibaro:get(i, 'isLight')
    if ((type(ret) == "string" and string.find(ret, "1" )) or "rgb_driver" == fibaro:getType(i) or "com.fibaro.FGRGBW441M" == fibaro:getType(i)) then
	    local DeviceName = fibaro:getName(i); 
        local RoomName = fibaro:getRoomNameByDeviceID(i);
        -- On l'allume ou l'éteint
        fibaro:call(i, mode);
		fibaro:debug(mode.." device "..i.." "..DeviceName.." "..RoomName); 
    end
  end
end
 
--turnIt("turnOn")
turnIt("turnOff")
fibaro:debug("All lights are off");


pourquoi je suis arrivé ici ?

Ce script n'a qu'un défaut, il est un peu lent et il ne s'adapte pas automatiquement au nombre de modules (j'ai 1890 ID...)

Je cherchais un moyen de le limiter aux devices de l'api et ne pas devoir scanner tout.

 

J'ai donc téléchargé la dernière version de jojo et j'ai modifié la partie turn off.

voici le résultat et chez moi ça marche très bien.

Je n'ai peut être pas tout pigé, mais dans le doute, ça pourrait faire avancer le schmilblick...

----------------------------------
-- User Settings
----------------------------------
  
-- Modules à  exclure et fonction de traitement (pas raccordés à  des lumières)
-- Peut contenir un id ou un mot clés à  chercher dans le nom du module
toExclude = {"Pisc"}
toInclude = {}

----------------------------------
-- DO not change bellow this line
----------------------------------

-- Modules à  exclure ou inclure et fonction de traitement (pas raccordés à  des lumières)
-- Peut contenir un id ou un mot clés à  chercher dans le nom du module
-- toExclude = {72, "Dispo", "Volet", "Bubendorff"}
function shouldExclude(module)
    for k, v in pairs(toExclude) do
    	if string.find(module.name, v) ~= nil or module.id == v then return true end
    end
	return false
end

function shouldInclude(module)
    for k, v in pairs(toInclude) do
    	if string.find(module.name, v) ~= nil or module.id == v then return true end
    end
	return false
end

HC2 = Net.FHttp("127.0.0.1",11111)

----------------------------------
-- double click pour confirmer
----------------------------------

-- ----------------------------
-- Ne pas toucher --
-- ----------------------------
function confirm(msg, labelId, secondes)
    local current = fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value")
    if (current == msg) then
        fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", " ")
    	return true
    else
        fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value", msg)
        fibaro:sleep(secondes*1000)
        fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..labelId..".value","")
	return fibaro:getValue(fibaro:getSelfId(), "ui."..labelId..".value") == " "
    end
end
 
-- ----------------------------
-- A vous de jouer ---
-- ----------------------------
local label_id = "lblMessage"               -- l'ID du label qui recevra le message
local duree = 2                             -- la durée max entre 2 clique (en seconde)
local message = "Ré-appuyer dans les "..duree.." secondes pour confirmer" -- le message de confirmation
 
if ( confirm(message, label_id, duree) ) then
      fibaro:log("Confirmé") 
      -- votre code ici en cas de confirmation
    -- Récupération de la liste des modules
	
    response = HC2:GET("/api/devices")
    json = json.decode(response)
    -- Boucle sur les modules
    for k, v in ipairs(json) do
	local ret = fibaro:get(v.id, 'isLight')
    if ((type(ret) == "string" and string.find(ret, "1" )) or "rgb_driver" == fibaro:getType(v.id) or "com.fibaro.FGRGBW441M" == fibaro:getType(v.id)) then
	    local DeviceName = fibaro:getName(v.id); 
        local RoomName = fibaro:getRoomNameByDeviceID(v.id);
        -- On l'allume ou l'éteint
        fibaro:call(v.id, "turnOff");
		fibaro:debug("turnOff".." device "..v.id.." "..DeviceName.." "..RoomName); 
    end
	
    end -- for
  
else 
      fibaro:log("Annulé")  
      -- votre code ici en cas d'annulation
end
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

sans modifier le code il suffisait d'inclurer les ID des devices qui sont gérés des lumieres (WP par exemple)  et exclure ceux qui n'en sont pas.

toExclude = {"Pisc"}
toInclude = {}

Partager ce message


Lien à poster
Partager sur d’autres sites

Le but n'est-t'il de ne pas d'avoir un code qu'il ne faut pas modifier au cas par cas et qui fonctionne pour tout le monde du premier coup ?

Sent from my SM-N910F using Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

en permettant l'utilisation des toExclude et toInclude, cela permet d'inclure ou d'exclure des devices qui doivent être considérés (ou non) dans le turn off général. 

Dans mon exemple, j'ai exclu "Pisc", qui est un WP qui n'est PAS de type light, mais était reconnu comme tel.

J'ai tout essayé, puis je l'ai mis en les exclusions en désespoir de cause.

Ce n'est pas bien, mais cela fonctionne

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×