Aller au contenu

Panneaux De Chauffage En Fonction Mode Vacances / Mode De Chauffage


Messages recommandés

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

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

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

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)

 

Posté(e) (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 :angry:
    •  
  • 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é par MAM78
Posté(e)

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

Posté(e)

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 ?

×
×
  • Créer...