Aller au contenu

Exemple gestion des volets tout simple


jjacques68

Messages recommandés

il y a 14 minutes, jjacques68 a dit :

j'essaye avec ça mais sans succès

 


local ListeLights = {
    args = {},
    filters = {
        {filter = "roomID", value = {roomID}},
        {filter = "and", value = {filter = "isLight", value = {true}}}
    }
}

 

voilà la bonne syntaxe

local ListeLights = {
    args = {},
    filters = {
        {filter = "roomID", value = {roomID}},
    }
},
{
    args = {},
    filters = {
        {filter = "isLight", value = {true}}
    }
},

 

Lien vers le commentaire
Partager sur d’autres sites

il y a 14 minutes, Krikroff a dit :

 /api/devices/?roomID=232&interface=light&visible=true

 

j'essaye ça sans succès : api.get("/devices/?roomID=232&properties.isLight=true")

 

le soucis est que "isLight" est une sous propriété de "properties", alors du coup je sais pas si le cumul peut marcher dans ce cas...

 

 

Lien vers le commentaire
Partager sur d’autres sites

Properties est une collection tu peux passer autant de propriété que nécessaire de la manière suivante: 

property=[nom,valeur]&property=[nom,valeur]&property=[nom,valeur]

 

Pour ton besoin il suffit logiquement de faire:

 

?roomID=232&property=[isLight,true]&visible=true

 

Lien vers le commentaire
Partager sur d’autres sites

bas non faut pas, pourquoi tu n'adaptes tout simplement pas te scène ?? Du coup je ne comprends pas pourquoi nous parlons de la propriété isLight ?

Lien vers le commentaire
Partager sur d’autres sites

Il y a 11 heures, jjacques68 a dit :

Donc ça simplifie beaucoup la scène initiale : 

 


fibaro.debug("Volets", "Volets - start Scene")

local Trigger = sourceTrigger
local Tel = tonumber(fibaro.getGlobalVariable("Phone_JJ"))
local Message = ""
local ListeDevice = api.get("/devices/?type=com.fibaro.FGRM222")
local IDVoletSalon = 38

----------------------
--SUNSET
----------------------
if Trigger.property == "sunset" then
    fibaro.debug("Volets", "Volets - Sunset Trigger")
    Message = "Fermeture des volets"

    for k,v in pairs(ListeDevice) do
        --Volet du salon : le fermer que si absent et porte fermée
        if v.id == IDVoletSalon then
            if fibaro.getValue(56, "value") == false and fibaro.getValue(36, "value") == false then
                fibaro.call(38, "close")
            end
        else
            fibaro.call(v.id, "close")    
        end
    end
end

----------------------
--SUNRISE
----------------------
if Trigger.property == "sunrise" then
    fibaro.debug("Volets", "Volets - Sunrise Trigger")
    Message = "Ouverture des volets"
    for k,v in pairs(ListeDevice) do               
        fibaro.call(v.id, "open")    
    end
end

fibaro.alert("push", {Tel}, Message)

 

merci @Krikroff !

 

ah c’est dommage qu’on ne puisse pas mettre ce genre de filtre sur la “catégories“ du module...

Ceci est la bonne solution, tu ne pourras jamais faire la même chose avec un callActionGroup ;)

 

De plus derrière un callActionGroup il n'y que du lua donc même pas un gain de performance.

Lien vers le commentaire
Partager sur d’autres sites

alors je fais un point :

 

je veux allumer toutes les lumières d'une pièce dans une scène, triggée par un PIR :

 

avec ça ça marche nickel :

local TriggerID = 80 --sourceTrigger.id
local roomID = api.get("/devices/"..TriggerID).roomID
local ListeLightsInRoom = api.get("/devices/?roomID="..roomID.."&property=[isLight,true]")

for k,v in pairs(ListeLightsInRoom) do
    fibaro.call(v.id, "turnOff") --turnOn
end

 

avec ça j'ai les volets qui bouge :) :

local TriggerID = 80
local roomID = api.get("/devices/"..TriggerID).roomID

local ListeLightsInRoom = {roomID=roomID, properties = {isLight = true}}

fibaro.callGroupAction("turnOn", ListeLightsInRoom)

 

Lien vers le commentaire
Partager sur d’autres sites

Peut-être simplement parce que le callActionGroup est codé avec les pieds :rolleyes:

 

:police:

 

Si cela fonctionne

local ListeLightsInRoom = api.get("/devices/?roomID="..roomID.."&property=[isLight,true]")
for k,v in pairs(ListeLightsInRoom) do
    fibaro.call(v.id, "turnOff") --turnOn
end

C'est une solution plus qu'acceptable !

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

le callActionGroup() m'a actionné TOUS les actionneurs de la maison !!!

Il m'a foutu un bordel monstre !

 

Oui tu as raison, j'arrête avec ce truc...

Je pense aussi que c'est bien mieux !!

 

api.get("/devices/?roomID="..roomID.."&property=[isLight,true]")

ça ça marche très bien, on va pas se torturer :) 

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

à l’instant, jjacques68 a dit :

le callActionGroup() m'a actionné TOUS les actionneurs de la maison !!!

Il m'a foutu un bordel monstre !

Je l'ai constaté régulièrement sur HC2, du coup ça confirme bien ce que je pense depuis un petit moment à savoir qu'une très grosse partie du HC3 = HC2 voila voila et la marmotte elle met le chocolat dans le papier d'alu ...

 

:98:

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

Si si logiquement cela fonctionnement très bien ! Si tu essaies directement via ton navigateur de la manière suivante

 

http://xxx.xxx.xxx.xxx/api/devices/?name=DEVICE_NAME_XXX

 

Lien vers le commentaire
Partager sur d’autres sites

ah punaise non, j'ai pas la même réponse !

 

voici depuis l'appel d'une scène : 

 

[{"baseType":"com.fibaro.actor","interfaces":["quickApp"],"actions":{"turnOff":0,"turnOn":0,"toggle":0},"name":"PIR_Room_232","modified":1584422260,"parentId":0,"type":"com.fibaro.binarySwitch","properties":{"deviceIcon":1011,"saveLogs":false,"logTemp":"","typeTemplateInitialized":true,"state":true,"log":"","uiCallbacks":[],"value":true,"userDescription":"","viewLayout":{"$jason":{"head":{"title":"quickApp_device_57"},"body":{"sections":{"items":[]},"header":{"style":{"height":"0"},"title":"quickApp_device_57"}}}},"categories":["other"],"deviceControlType":20,"smsNotificationType":0,"smsNotificationID":0,"dead":false,"emailNotificationID":0,"deadReason":"","manufacturer":"","pushNotificationType":0,"emailNotificationType":0,"quickAppVariables":[],"pushNotificationID":0,"mainFunction":"-- Binary switch type should handle actions turnOn, turnOff\n-- To update binary switch state, update property \"value\" with boolean\n\nfunction QuickApp:turnOn()\n self:debug(\"binary switch turned on\")\n self:updateProperty(\"value\", true)\nend\n\nfunction QuickApp:turnOff()\n self:debug(\"binary switch turned off\")\n self:updateProperty(\"value\", false) \nend\n\n-- To update controls you can use method self:updateView(<component ID>, <component property>, <desired value>). Eg: \n-- self:updateView(\"slider\", \"value\", \"55\") \n-- self:updateView(\"button1\", \"text\", \"MUTE\") \n-- self:updateView(\"label\", \"text\", \"TURNED ON\") \n\n-- This is QuickApp inital method. It is called right after your QuickApp starts (after each save or on gateway startup). \n-- Here you can set some default values, setup http connection or get QuickApp variables.\n-- To learn more, please visit: https://manuals.fibaro.com/\n\nfunction QuickApp:onInit()\n self:debug(\"onInit\")\nend\n","model":""},"viewXml":true,"roomID":232,"visible":true,"configXml":false,"sortOrder":107,"created":1584422260,"isPlugin":true,"id":136,"enabled":true}]

et voici depuis le nagiateur :

 

[{"id":136,"name":"PIR_Room_232","roomID":232,"type":"com.fibaro.binarySwitch","baseType":"com.fibaro.actor","enabled":true,"visible":true,"isPlugin":true,"parentId":0,"viewXml":true,"configXml":false,"interfaces":["quickApp"],"properties":{"categories":["other"],"dead":false,"deadReason":"","deviceControlType":20,"deviceIcon":1011,"emailNotificationID":0,"emailNotificationType":0,"log":"","logTemp":"","mainFunction":"-- Binary switch type should handle actions turnOn, turnOff\n-- To update binary switch state, update property \"value\" with boolean\n\nfunction QuickApp:turnOn()\n    self:debug(\"binary switch turned on\")\n    self:updateProperty(\"value\", true)\nend\n\nfunction QuickApp:turnOff()\n    self:debug(\"binary switch turned off\")\n    self:updateProperty(\"value\", false)    \nend\n\n-- To update controls you can use method self:updateView(<component ID>, <component property>, <desired value>). Eg:  \n-- self:updateView(\"slider\", \"value\", \"55\") \n-- self:updateView(\"button1\", \"text\", \"MUTE\") \n-- self:updateView(\"label\", \"text\", \"TURNED ON\") \n\n-- This is QuickApp inital method. It is called right after your QuickApp starts (after each save or on gateway startup). \n-- Here you can set some default values, setup http connection or get QuickApp variables.\n-- To learn more, please visit: https://manuals.fibaro.com/\n\nfunction QuickApp:onInit()\n    self:debug(\"onInit\")\nend\n","manufacturer":"","model":"","pushNotificationID":0,"pushNotificationType":0,"quickAppVariables":[],"saveLogs":false,"smsNotificationID":0,"smsNotificationType":0,"state":true,"typeTemplateInitialized":true,"uiCallbacks":[],"userDescription":"","value":true,"viewLayout":{"$jason":{"body":{"header":{"style":{"height":"0"},"title":"quickApp_device_57"},"sections":{"items":[]}},"head":{"title":"quickApp_device_57"}}}},"actions":{"toggle":0,"turnOff":0,"turnOn":0},"created":1584422260,"modified":1584422260,"sortOrder":107}]

et biensûr j'ai besoin de l'id

 

c'est pour ça que : api.get("/devices/?name=PIR_Room_"..roomID).id    ne donne rien !

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...