Aller au contenu
neliger

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

Recommended Posts

Re, ca faisait longtemps ;-) 

 

Pour les noms normal, la variable message est simple pour le moment, sans les noms. C'était juste pour tester le fonctionnement. 

 

local message = "Lampes allumées, voulez-vous les éteindre ?"
["message"]=message
Il y a 1 heure, CharlesO a dit :

il les off toutes sans attendre ma réponse 

Alors la, c'est encore moi, un vite rapide copier coller du boulot... ;-)

Donc efface ceci dans la scène des push interactifs (c'est pour cela que cela a éteint sans attendre ta réponse)

 

-- Scène d'extinction ----
for _,v in ipairs(fibaro:getDevicesId({properties = {isLight=true}})) do
     fibaro:call(v, "turnOff")
end

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

good

pour les off automatique c est réglé ! GG

reste plus que le message

ps : il envoi 2 push (1 du message avec la question oui/non et 1 info: action "question" has already been handled on another device)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

1 info ? tu peux faire une copie d'écran ? stp. 

Partager ce message


Lien à poster
Partager sur d’autres sites

Re, 

 

Tu peux tester la scène de push Interactive

----------------------------------
-- User Settings
----------------------------------
--- Scene Interactive push -------
local Smartphone = XX
local id_de_la_scene_qui_eteint = XX
-- 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"}
toExclude = {92}
--================================
--======== FONCTIONS =============
--================================
function shouldExclude(module)
    for _, v in pairs(toExclude) do
        if string.find(module.name, v) ~= nil or module.id == v then return true end
    end
    return false
end
----------------------------------

local message = ""
-- Récupération de la liste des modules
local jsonTable = api.get("/devices")
-- Boucle sur les modules
    for device = 1, #jsonTable do
-- look for lighting devices
        if jsonTable[device].interfaces and not shouldExclude(jsonTable[device]) then
            for interface = 1, #jsonTable[device].interfaces do
                if jsonTable[device].interfaces[interface] == "light" then
                    local DeviceValue = tonumber(jsonTable[device].properties.value)
                        if (DeviceValue and DeviceValue > 0) or (jsonTable[device].properties.value == "true") then
                        --fibaro:debug(" id: "..jsonTable[device].id.." is "..jsonTable[device].name.." type: "..jsonTable[device].interfaces[interface])
                        --fibaro:debug(" value: "..jsonTable[device].properties.value..". Turning Off")
                            local DeviceName = fibaro:getName(jsonTable[device])
                            DeviceName = string.gsub(DeviceName," ","_")
                            if (message ~= "") then
                                message = message .. ", "
                            end
                            message = message .. DeviceName
                        end
                end
            end
        end
    end
if (message ~= "") then
        if (message:find(",")) then
            message = message .. " sont allumés, voulez-vous les éteindre ?"
        else
            message = message .. " est allumé, voulez-vous l'éteindre ?"
        end
        api.post('/mobile/push', {
            ["mobileDevices"]={Smartphone},
            ["message"]=message,
            ["title"]='Question:',
            ["category"]='YES_NO',
            ["data"]={["sceneId"]=id_de_la_scene_qui_eteint}
            }
        )
end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

salut

le push ne marche plus

merci

Modifié par CharlesO

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 11 heures, pepite a dit :

1 info ? tu peux faire une copie d'écran ? stp. 

 

IMG_0595.PNG

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 2 heures, CharlesO a dit :

le push ne marche plus

merci

T'as modifié les IDs ?

 

J'ai jamais eu cette info, et je n'en ai jamais entendu parler.

Partager ce message


Lien à poster
Partager sur d’autres sites

non rien toucher on reviendra dessus plus tard

pour le moment après la dernier modif que tu ma demander de faire le push ne marche plus

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut a tous

salut pepite tu a du nouveau ?

par ou tu veux continuer pour trouver le probleme du push ?

merci

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 22/5/2017 à 20:46, pepite a dit :

local Smartphone = XX local id_de_la_scene_qui_eteint = XX

Bonjour,

 

Du nouveau ? Je ne peux pas tester à ta place ? 

Dans la dernière scène as tu bien modifié les IDS au niveau des variables ?

 

Je vais rajouter des debug pour voir où cela coince.

Partager ce message


Lien à poster
Partager sur d’autres sites

Dans la dernière scène as tu bien modifié les IDS au niveau des variables ?

Oui

 

je ne sais par ou tester

j attend les debug

merci encores

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Re,

avec les debugs, on en saura un peu plus de ce qui ne fonctionne pas.  ;-)


 

----------------------------------
-- User Settings
----------------------------------
--- Scene Interactive push -------
local Smartphone = XX
local id_de_la_scene_qui_eteint = XX
fibaro:debug("Smartphone : " ..Smartphone.. " - ID Scène extinction : " ..id_de_la_scene_qui_eteint)

-- 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"}
toExclude = {92}

--================================
--======== FONCTIONS =============
--================================
function shouldExclude(module)
    for _, v in pairs(toExclude) do
        if string.find(module.name, v) ~= nil or module.id == v then return true end
    end
    return false
end
----------------------------------

local message = ""
-- Récupération de la liste des modules
local jsonTable = api.get("/devices")
-- Boucle sur les modules
    for device = 1, #jsonTable do
        fibaro:debug("entree dans la boucle jsonTable")
    -- look for lighting devices
        if jsonTable[device].interfaces and not shouldExclude(jsonTable[device]) then
            for interface = 1, #jsonTable[device].interfaces do
                if jsonTable[device].interfaces[interface] == "light" then
                    local DeviceValue = tonumber(jsonTable[device].properties.value)
                        if (DeviceValue and DeviceValue > 0) or (jsonTable[device].properties.value == "true") then
                            fibaro:debug(" id: "..jsonTable[device].id.." is "..jsonTable[device].name.." type: "..jsonTable[device].interfaces[interface])
                            fibaro:debug(" value: "..jsonTable[device].properties.value..". Turning Off")
                            local DeviceName = jsonTable[device].name
                            fibaro:debug("Devices allumés : " ..DeviceName)
                            DeviceName = string.gsub(DeviceName," ","_")
                            fibaro:debug("Devices allumés underscore: " ..DeviceName)
                            if (message ~= "") then
                                message = message .. ", "
                                fibaro:debug("Message virgule : " ..message)
                            end
                            message = message .. DeviceName
                            fibaro:debug("Message avec noms : " ..message)
                        end
                end
            end
        end
    end
if (message ~= "") then
        if (message:find(",")) then
            message = message .. " sont allumés, voulez-vous les éteindre ?"
            fibaro:debug("Message SONT ALLUMES : " ..message)
        else
            message = message .. " est allumé, voulez-vous l'éteindre ?"
            fibaro:debug("Message EST ALLUME : " ..message)
        end
        api.post('/mobile/push', {
            ["mobileDevices"]={Smartphone},
            ["message"]=message,
            ["title"]='Question:',
            ["category"]='YES_NO',
            ["data"]={["sceneId"]=id_de_la_scene_qui_eteint}
            }
        )
end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

question or subject : quand et ou doit on utiliser ca :

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

 

merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Voila le resulta du debug :

 

DEBUG] 14:39:26: Smartphone : 397 - ID Scène extinction : 223
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable

[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable

[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable

[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable

[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable

[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable
[DEBUG] 14:39:27: entree dans la boucle jsonTable

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Question bete : tu avais des lampes allumées ;-) ?

 

Bon changement de fusil d'épaules car je comprends pas ou je me plante avec ce code.

Suis parti sur la même base que la scène d'extinction en filtrant sur les lumières ;-) et en modifiant le code du master
@Steven

----------------------------------
-- User Settings
----------------------------------
--- Scene Interactive push -------
local Smartphone = XX
local id_de_la_scene_qui_eteint = XX
fibaro:debug("Smartphone : " ..Smartphone.. " - ID Scène extinction : " ..id_de_la_scene_qui_eteint)
----------------------------------------------------------------------

local message = ""

for _,v in ipairs(fibaro:getDevicesId({properties = {isLight=true}})) do
    fibaro:debug("entree dans la boucle filtrée LUMIERE")
    local DeviceName = fibaro:getName(v)
    local DeviceValue = tonumber(fibaro:getValue(v, "value"))
        if DeviceValue > 0 then
            DeviceName = string.gsub(DeviceName," ","_")
            fibaro:debug("Lampes Allumées : " ..DeviceName)
            if (message ~= "") then
                message = message .. ", "
            end
        message = message .. DeviceName
        fibaro:debug("Message : " ..message)
        end
end

if (message ~= "") then
  if (message:find(","))then
    message = message .. " sont allumés, voulez-vous les éteindre ?"
  else
    message = message .. " est allumé, voulez-vous l'éteindre ?"
  end
 
   api.post('/mobile/push', {
            ["mobileDevices"]={Smartphone},
            ["message"]=message,
            ["title"]='Question:',
            ["category"]='YES_NO',
            ["data"]={["sceneId"]=id_de_la_scene_qui_eteint}
            }
        )
end

 

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a une heure, CharlesO a dit :

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

L' entête de la scène te permet de déclencher une scène sur un évènement, ce qui évite de faire boucler une scène. Le déclenchement sur "evenment" est à préféré dès que c'est possible en fonction du besoin, c'est plus optimisé en terme de charge.

Partager ce message


Lien à poster
Partager sur d’autres sites

la voila le debug :

DEBUG] 15:53:56: Smartphone : 397 - ID Scène extinction : 223
[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE
[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE
[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE
[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE
[DEBUG] 15:53:56: Lampes Allumées : lumiere_Parentale
[DEBUG] 15:53:56: Message : lumiere_Parentale
[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE
[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE
[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE
[DEBUG] 15:53:57: entree dans la boucle filtrée LUMIERE

ex.....

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 1 minute, pepite a dit :

L' entête de la scène te permet de déclencher une scène sur un évènement, ce qui évite de faire boucler une scène. Le déclenchement sur "evenment" est à préféré dès que c'est possible en fonction du besoin, c'est plus optimisé en terme de charge.

et alors dans notre cas ? besoin ou pas ?

Partager ce message


Lien à poster
Partager sur d’autres sites
à l’instant, CharlesO a dit :

la voila le debug :

DEBUG] 15:53:56: Smartphone : 397 - ID Scène extinction : 223
[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE
[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE
[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE
[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE
[DEBUG] 15:53:56: Lampes Allumées : lumiere_Parentale
[DEBUG] 15:53:56: Message : lumiere_Parentale
[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE
[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE
[DEBUG] 15:53:56: entree dans la boucle filtrée LUMIERE
[DEBUG] 15:53:57: entree dans la boucle filtrée LUMIERE

ex.....

ps : ca a envoyer le push

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 18 minutes, CharlesO a dit :

ps : ca a envoyer le push

Avec les noms ?

 

 

Modifié par pepite

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 18 minutes, CharlesO a dit :

et alors dans notre cas ? besoin ou pas ?

Pourquoi pas, mais cela t'obligera à mettre TOUS les ID de TOUTES les lumieres sous %%properties.

Partager ce message


Lien à poster
Partager sur d’autres sites
à l’instant, pepite a dit :

Pourquoi pas, mais cela t'obligera à mettre TOUS les ID de TOUTES les lumieres sous %%properties.

il y a un aventage ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello, 

est ce que ce VD a été adapté à la HC3 ? je l'utilise régulièrement sur ma HC2

 

merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Voici une fonction que j'utilise dans l'un de mes QuickApp pour éteindre toutes les lumières de la maison :

-- LightOff
-- 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
local lightsToExclude = {12, 345, 678}


--
-- Bouton : Éteint les lumières
--
function QuickApp:LightOff(event)
	local function shouldExclude(device)
		for _, v in pairs(lightsToExclude) do
			if device.id == v or string.find(device.name, v) ~= nil then
				return true
			end
		end
		return false
	end
	local devices = api.get("/devices?property=isLight")
	if type(devices) == "table" then
		for i = 1, #devices do
			local device = devices[i]
			if not shouldExclude(device) then
				local value = tonumber(device.properties.value)
				if type(value) == "boolean" and value or type(value) == "number" and value > 0 then
					local roomName = fibaro.getRoomNameByDeviceID(device.id)
					self:trace("Found device", device.id, ":", device.name, roomName, "(value", tostring(value)..") => call turnOff")
					fibaro.call(device.id, "turnOff")
				end
			end
		end
	else
		self:error("Impossible de lister les modules")
	end
end

Il te suffit d'appeler la fonction LightOff() depuis un bouton de ton QuickApp.

Et personnaliser les éventuelles lumières à exclure dans la table lightsToExclude

 

  • Like 2

Partager ce message


Lien à poster
Partager sur d’autres sites

×