Krikroff Posté(e) le 14 mars 2020 Signaler Posté(e) le 14 mars 2020 Oui pas de problème pour cumuler des filtres, tu peux essayer ceci: /api/devices/?roomID=232&interface=light&visible=true
jjacques68 Posté(e) le 14 mars 2020 Auteur Signaler Posté(e) le 14 mars 2020 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}} } },
jjacques68 Posté(e) le 14 mars 2020 Auteur Signaler Posté(e) le 14 mars 2020 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...
Krikroff Posté(e) le 14 mars 2020 Signaler Posté(e) le 14 mars 2020 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
Krikroff Posté(e) le 14 mars 2020 Signaler Posté(e) le 14 mars 2020 Le filtre correspondant est en l’occurrence: { roomID=232, visible = "true", properties = {isLight = "true"} }
jjacques68 Posté(e) le 14 mars 2020 Auteur Signaler Posté(e) le 14 mars 2020 il y a 15 minutes, Krikroff a dit : { roomID=232, visible = "true", properties = {isLight = "true"} } euuuuuuh, ce filtre me ferme les volets ????
Krikroff Posté(e) le 14 mars 2020 Signaler Posté(e) le 14 mars 2020 Hein !!! Tu utilises quoi pour passer le filtre, un callActionGroup ?
Krikroff Posté(e) le 14 mars 2020 Signaler Posté(e) le 14 mars 2020 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 ?
Krikroff Posté(e) le 14 mars 2020 Signaler Posté(e) le 14 mars 2020 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.
jjacques68 Posté(e) le 14 mars 2020 Auteur Signaler Posté(e) le 14 mars 2020 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)
Krikroff Posté(e) le 14 mars 2020 Signaler Posté(e) le 14 mars 2020 Peut-être simplement parce que le callActionGroup est codé avec les pieds 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 !
jjacques68 Posté(e) le 14 mars 2020 Auteur Signaler Posté(e) le 14 mars 2020 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 1
Krikroff Posté(e) le 14 mars 2020 Signaler Posté(e) le 14 mars 2020 à 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 ... 1
jjacques68 Posté(e) le 14 mars 2020 Auteur Signaler Posté(e) le 14 mars 2020 mais non, faut être positif on ca couper court sinon le topic va être pollué rapidement...
Krikroff Posté(e) le 14 mars 2020 Signaler Posté(e) le 14 mars 2020 Tu as raison, ton problème est résolu c'est l'essentiel.
jjacques68 Posté(e) le 17 mars 2020 Auteur Signaler Posté(e) le 17 mars 2020 @Krikroff : ce filtre ne peut pas fonctionner ? sur la propriété "name" ? api.get("/devices/?name=PIR_auto_"..roomID)
Krikroff Posté(e) le 17 mars 2020 Signaler Posté(e) le 17 mars 2020 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
jjacques68 Posté(e) le 17 mars 2020 Auteur Signaler Posté(e) le 17 mars 2020 ben ça marche depuis le navigateur !! et pas depuis la scène ???
Krikroff Posté(e) le 17 mars 2020 Signaler Posté(e) le 17 mars 2020 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))
jjacques68 Posté(e) le 17 mars 2020 Auteur Signaler Posté(e) le 17 mars 2020 ben j'ai la même réponse que dans le navigateur !! bon attends c'est quoi ce bordel...
jjacques68 Posté(e) le 17 mars 2020 Auteur Signaler Posté(e) le 17 mars 2020 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 !
Krikroff Posté(e) le 17 mars 2020 Signaler Posté(e) le 17 mars 2020 Pourtant je crois voir l’ID dans la réponse dans la scène, à la fin non ? ID 136
Messages recommandés