MAM78 Posté(e) le 10 juin 2017 Signaler Posté(e) le 10 juin 2017 (modifié) Il y a 2 heures, Nico a dit : Hum mais pour faire une modif, ce ne sera pas très WAF au niveau horaire Je pense avoir trouvé la solution et du coup celle-ci sera plus WAF puisqu'elle conserve la possibilité de faire des modifications de planification depuis les panneaux. L'idée est d'avoir 2 panneaux : l'un pour les vacances (A) l'autre pour le reste du temps (B) Utiliser la propriété rooms (qui contient les identifiants des pièces pilotées par le panneau) pour déterminer le panneau qui sera actif. Seul l'un des deux panneaux aura sa propriété rooms renseigné. L'autre sera vide et sera donc pas effet inactif. Il suffira lors de la bascule en vacances scolaires : de lire le json du panneau (B) de sauvegarder dans une variable la propriété rooms de modifier le json panneau vacance (B) en vidant la propriété rooms sauvegarder le json panneau vacance (B) de lire le json du panneau vacance (A) de modifier le json panneau vacance (A) en modifiant la propriété rooms par le contenu de la variable sauvegardée précédemment sauvegarder le json panneau vacance (A) Et du coup, c'est le panneau (A) qui devient actif. Idem pour la période hors vacances en inversant l'ordre de panneaux. Qu'est-ce que vous en pensez ? Y a plus qu'à coder cela et vérifier que cela marche. Bien évidement, cela devrait également fonctionner pour la panneau climatisation (AV). Modifié le 10 juin 2017 par MAM78
Nico Posté(e) le 10 juin 2017 Signaler Posté(e) le 10 juin 2017 Oui, cela fonctionne. Par contre tu as la main sur la propriété room en lua ?
pepite Posté(e) le 10 juin 2017 Signaler Posté(e) le 10 juin 2017 Excellent mam :-). Tu peux aussi simplifier le code avec des api.get et api.put :-) Et tu peux aller jusqu a properties avec le get je pense Envoyé de mon Nexus 5X en utilisant Tapatalk
MAM78 Posté(e) le 10 juin 2017 Signaler Posté(e) le 10 juin 2017 (modifié) @Nico oui j'ai bien accès à la propriété rooms. @pepite,tu veux dire quelque chose comme ça ? local HC2 = Net.FHttp("127.0.0.1",11111) local panelHorsVacances = 194 local panelEnVacances = 234 local VarVacances = "Oui" responseHV ,status, errorCode = HC2:GET("/api/panels/heating/"..panelHorsVacances) jsonTableHV = json.decode(responseHV) responseEV ,status, errorCode = HC2:GET("/api/panels/heating/"..panelEnVacances) jsonTableEV = json.decode(responseEV) if VarVacances == "Oui" then SaveRooms = jsonTableEV.properties.rooms jsonTableEV.properties.rooms = jsonTableHV.properties.rooms jsonTableHV.properties.rooms = SaveRooms else SaveRooms = jsonTableHV.properties.rooms jsonTableHV.properties.rooms = jsonTableEV.properties.rooms jsonTableEV.properties.rooms = SaveRooms end json = json.encode(jsonTableHV) HC2:PUT("/api/panels/heating/"..panelHorsVacances, json) json = json.encode(jsonTableEV) HC2:PUT("/api/panels/heating/"..panelEnVacances, json) Modifié le 10 juin 2017 par MAM78
pepite Posté(e) le 10 juin 2017 Signaler Posté(e) le 10 juin 2017 Salut @MAM78, Je pensais plutôt à quelquechose comme ceci, non testé local panelHorsVacances = 194 local panelEnVacances = 234 local VarVacances = "Oui" local panelEV = api.get("/panels/heating/"..panelEnVacances) local panelHV = api.get("/panes/heating/"..panelHorsVacances) if VarVacances == "Oui" then SaveRooms = panelEV.properties.rooms panelEV.properties.rooms = panelHV.properties.rooms panelHV.properties.rooms = SaveRooms else SaveRooms = panelHV.properties.rooms panelHV.properties.rooms = panelEV.properties.rooms panelEV.properties.rooms = SaveRooms end api.put("/heating/panels/" ..panelHorsVacances, panelHV) api.put("/heating/panels/"..panelEnVacances, panelEV)
MAM78 Posté(e) le 11 juin 2017 Signaler Posté(e) le 11 juin 2017 (modifié) Hello @pepite j'ai bien réussi à intégrer les fonctions api.get et api.put mais j'ai un souci pour mettre à jour un objet tableau dans le json de ma requête. dans le json, j'ai ceci (un tableau qui correspond aux pièces associés 6 & 7 à mon panneau) : "rooms":[6,7]} Je voudrais effacer les données de la propriété rooms. si je la fais depuis l'interface utilisateur, j'ai ça : "rooms":[]} J'ai essayé de multiples façons, mais aucune ne me donne le résultat équivalant à l'interface utilisateur. Voici ce que j'ai essayé : jsonTablePanellEV.properties.rooms = "" résultat = "rooms":[6,7]} (aucune MAJ) jsonTablePanellEV.properties.rooms = "[0]" résultat = "rooms":[6,7]} (aucune MAJ) jsonTablePanellEV.properties.rooms = "[]" résultat = [ERROR] 23:58:56: line 19: attempt to index field 'rooms' (a string value) jsonTablePanellEV.properties.rooms = {} résultat = "rooms":[6,7]} (aucune MAJ) jsonTablePanellEV.properties.rooms[1] = nil jsonTablePanellEV.properties.rooms[2] = nil résultat = "rooms":[6,7]} (aucune MAJ) jsonTablePanellEV.properties.rooms[1] = 0 jsonTablePanellEV.properties.rooms[2] = 0 jsonTablePanellEV.properties.rooms[1] = "" fait planter la boxe, obligé de faire un reboot jsonTablePanellEV.properties.rooms[1] = 0 jsonTablePanellEV.properties.rooms[2] = 0 "rooms":[0]} c'est presque bon, le zéro ne devrait pas poser de PB, puisque cette room n'existe pas count = #jsonTablePanellEV.properties.rooms for i=0, count do jsonTablePanellEV.properties.rooms=nil end résultat = "rooms":[6,7]} (aucune MAJ) Modifié le 12 juin 2017 par MAM78
MAM78 Posté(e) le 12 juin 2017 Signaler Posté(e) le 12 juin 2017 Allo les experts, l'un de vous aurait la solution ?
Nico Posté(e) le 12 juin 2017 Signaler Posté(e) le 12 juin 2017 Mais cela ne fonctionne pas avec le 0 ?
MAM78 Posté(e) le 12 juin 2017 Signaler Posté(e) le 12 juin 2017 Pour le moment, je n'ai pas constaté de PB, mais dans le doute, je préférerais avoir la même chose que l'interface utilisateur. Si possible
pepite Posté(e) le 12 juin 2017 Signaler Posté(e) le 12 juin 2017 Salut @MAM78, Alors là, la subtilité ;-) et n'utilisant pas le panneau de chauffage ;-) rien de domotiser Je n'en ai aucune idée, j'aurais fait comme toi, nil ou "" ou "nil" .. D'ailleurs, je ne sais pas comment en LUA ne rien mettre pour que tu te retrouves comme avec l'interface ?
Messages recommandés