Aller au contenu

Messages recommandés

Posté(e)

Oui pas de problème pour cumuler des filtres, tu peux essayer ceci: /api/devices/?roomID=232&interface=light&visible=true ;)

 

 

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

 

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

 

 

Posté(e)

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

 

Posté(e)

Le filtre correspondant est en l’occurrence: 

{ roomID=232, visible = "true", properties = {isLight = "true"} }

 

Posté(e)

Hein :) !!! Tu utilises quoi pour passer le filtre, un callActionGroup ?

Posté(e)

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 ?

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

Posté(e)

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)

 

Posté(e)

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 !

 

 

 

Posté(e)

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

Tu as raison, ton problème est résolu :74: c'est l'essentiel.

Posté(e)

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

 

Posté(e)

Tu peux essayer ceci dans une nouvelle scène LUA et en adaptant 

local x = api.get("/devices/?name=DEVICE_NAME_XXX")
print(json.encode(x))

 

Posté(e)

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 !

Posté(e)

Pourtant je crois voir l’ID dans la réponse dans la scène, à la fin non ?
ID 136

×
×
  • Créer...