MAM78 408 Signaler ce message Posté(e) 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é 10 juin 2017 par MAM78 Partager ce message Lien à poster Partager sur d’autres sites
Nico 2 170 Signaler ce message Posté(e) 10 juin 2017 Oui, cela fonctionne. Par contre tu as la main sur la propriété room en lua ? Partager ce message Lien à poster Partager sur d’autres sites
pepite 1 272 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
MAM78 408 Signaler ce message Posté(e) 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é 10 juin 2017 par MAM78 Partager ce message Lien à poster Partager sur d’autres sites
pepite 1 272 Signaler ce message Posté(e) 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) Partager ce message Lien à poster Partager sur d’autres sites
MAM78 408 Signaler ce message Posté(e) 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é 12 juin 2017 par MAM78 Partager ce message Lien à poster Partager sur d’autres sites
MAM78 408 Signaler ce message Posté(e) 12 juin 2017 Allo les experts, l'un de vous aurait la solution ? Partager ce message Lien à poster Partager sur d’autres sites
Nico 2 170 Signaler ce message Posté(e) 12 juin 2017 Mais cela ne fonctionne pas avec le 0 ? Partager ce message Lien à poster Partager sur d’autres sites
MAM78 408 Signaler ce message Posté(e) 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 Partager ce message Lien à poster Partager sur d’autres sites
pepite 1 272 Signaler ce message Posté(e) 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 ? Partager ce message Lien à poster Partager sur d’autres sites