Aller au contenu

Messages recommandés

Posté(e)

Bonjour tout le monde !

 

Petite question rapide : (enfin je crois)

 

j'arrive très facilement à récupérer des valeurs grâce à l'API de la HC2, exemple :

 

je récupère la valeur suivante : l'heure défini dans le panneau de chauffage du lundi matin, comme ceci :

local Pannel = api.get("/panels/heating/61")

print(Pannel.properties["monday"].morning["hour"])

ça marche nickel ! j'utilise souvent cette méthode...

 

Par contre si je veux écrire dans l'API, il faut utiliser un "PUT" ! -> ok

mais y a t'il une méthode plus simple que le Net.HTTP ?

On peut pas l'attaquer directement  comme pour la lecture ? genre api.put ..........

 

merci à vous !

Posté(e)

ok mais il faut avant faire un HC2 net.httpclient, puis récupérer le json, le décoder, le modifier et le rencoder et seulement après faire le PUT...

 

C'est long...

Posté(e)

Oui je pense que tu as tout bon 

perso je suis nul en lua j'arrive a faire juste quelque truc et en cherchant beaucoup

Posté(e)

ben ce que je pige pas c'est qu'on peut relever les valeurs avec une facilité énorme (voir mon code dans le premier post) et pour les modifier, il faut 30 lignes de code... :(

Posté(e)

Salut, 

 

Qu'est ce que tu veux faire exactement ? 

 

Un exemple de tinman pour la suppression d'une alerte template 


 

---============= Suppression alerte Template =================
 -- Scene à ne lancer qu'une fois ---
 
local devices = api.get('/devices')
for _, dev in ipairs(devices) do
   if (dev.properties.parametersTemplate == "0") then
     if  (dev.parentId > 3) then
        -- "execute order 66" (66 was once device with template)
        -- now it does not have any parameters, so we can use it
        dev.properties.parametersTemplate = 66
        -- set to parent device
        api.put('/devices/' .. dev.parentId, dev)
        -- if other slaves exists, do it as well
        api.put('/devices/' .. dev.id, dev)
           
        -- "give fibaro a break" :)
        fibaro:sleep(1000)
      
        -- we have no temmplate, so select to not use any template!!!
        dev.properties.useTemplate = false
        api.put('/devices/' .. dev.parentId, dev)
        -- if other slaves exists, do it as well
        api.put('/devices/' .. dev.id, dev)
      
        -- "give fibaro a break" :)
        fibaro:sleep(1000)
      
        -- and hide parent device (when changing template parent shows up, bug?)
        dev.visible = false
        api.put('/devices/' .. dev.parentId, dev)
      
        fibaro:debug("changed module: " .. dev.name .. " with id: " .. dev.id)
     end
  end
end

 

Posté(e)

alors je viens d'essayer ceci :

local Pannel = api.get("/panels/heating/61")

print("AVANT modif = "..Pannel.properties["monday"].morning["hour"])

--modification
Pannel.properties["monday"].morning["hour"] = "8"

api.put(Pannel.properties["monday"].morning["hour"])

print("APRES modif = "..Pannel.properties["monday"].morning["hour"])

et voici le resultat du debug :

[DEBUG] 17:44:33: AVANT modif = 7
[DEBUG] 17:44:33: APRES modif = 8

MAIS la valeur dans le panneau de chauffage ne change pas !!! ???

heat.png.d191aa05ad9f1f6902c32fc746cea91c.png

 

Je sèche, j'ai essayé beaucoup de variante...

Posté(e)

C'est quoi ce PUT tout pourri :-)

api.put(Pannel.properties["monday"].morning["hour"])

 

Allez, encore un effort, peut-être ? :-)

api.put("/panels/heating/61", Pannel)

 

  • Upvote 1
Posté(e)

Si ca peut aider :

 

  • Passage en mode vacances :
-- Thermostat : 5°C
local HC2 = Net.FHttp("127.0.0.1", 11111)
local response, status, errorCode = HC2:GET("/api/panels/heating/1")
if tonumber(errorCode) == 0 and tonumber(status) == 200 and response ~= nil and response ~= "" then
	local jsonTable = json.decode(response)
	jsonTable.properties.vacationTemperature = 5
	local newJson = json.encode(jsonTable)
	HC2:PUT("/api/panels/heating", newJson)
end

 

  • Passage en mode normal :
-- Thermostat : mode normal
local HC2 = Net.FHttp("127.0.0.1", 11111)
local response, status, errorCode = HC2:GET("/api/panels/heating/1")
if tonumber(errorCode) == 0 and tonumber(status) == 200 and response ~= nil and response ~= "" then
	local jsonTable = json.decode(response)
	jsonTable.properties.vacationTemperature = 0
	local newJson = json.encode(jsonTable)
	HC2:PUT("/api/panels/heating", newJson)
end

 

  • Upvote 1
Posté(e)
Il y a 2 heures, Steven a dit :

C'est quoi ce PUT tout pourri :-)

:2:

je dois être fou mais je comprends toujours pas la syntaxe :

Il y a 2 heures, Steven a dit :

api.put("/panels/heating/61", Pannel)

 

Ma variable "Pannel" contient le "chemin" pour accéder à la valeur que je souhaite modifier ?? !!! (Pannel.properties["monday"].morning["hour"])

Elle ne contient pas la valeur elle-même !!

j'ai essayé cela aussi, mais sans succès :

local Pannel = api.get("/panels/heating/61")
api.put(Pannel.properties["monday"].morning["hour"], "8")

 

@Lazer : je connais cette méthode, mais je voulais pas utiliser le net.fhttp ;)

 

(L'objectif de ma demande est de pourvoir modifier le panneau de chauffage dynamiquement depuis un VD. Et je vourdrai utiliser la commande api.put)

Posté(e)

Tu fais comme tu veux, moi j'aime bien les Net.Fhttp, mais si tu préfères les coups de PUT... :P

 

Sinon sur le forum il existe au moins 2 bons exemples de gestion du panneau de chauffage en LUA, écris par @JossAlf et @Jojo.

Posté(e) (modifié)
Il y a 23 heures, jjacques68 a dit :

--modification Pannel.properties["monday"].morning["hour"] = "8"

ben tu l'as fait, comme avant, en fait faut re"PUT"er tout le json après modif de la valeur


 

local Pannel = api.get("/panels/heating/61")

print("AVANT modif = "..Pannel.properties["monday"].morning["hour"])

--modification
Pannel.properties["monday"].morning["hour"] = "8"

api.put("/panels/heating/61", Pannel)

print("APRES modif = "..Pannel.properties["monday"].morning["hour"])

Dans l'exemple de @Lazer, c'est pour cela : "Newjson" ;-) :2:

Modifié par pepite
Posté(e)

Punaise mais c'est pas possible !!!!

 

pourtant pas compliquer quand même !!!

 

Je vais finir par flinguer la box... !!!

 

Vais finir par faire du bon vieux net.fhttp...

×
×
  • Créer...