Aller au contenu

Possibilité De Changer L'icone Des Pièces ?


JackyB

Recommended Posts

Bonjour,

est'il possible de modifier en LUA l'icone des pièces suivant l'état d'un capteur ?

voici le code utilisé dans Main Loop de mon VD

-----------------------------------------------------

local MaVariable2
 
MaVariable2 = fibaro:getValue(75, 'value')
 
if (MaVariable2 == '0') then
  --Porte fermée
  fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", 56)
  fibaro:call(16, "setProperty", "currentIcon", 1003)
else
  --Porte ouverte
  fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", 55)
  fibaro:call(16, "setProperty", "currentIcon", 1001)
end
----------------------------------------------------
 
Pour le VD c'est Ok par contre l'icone de la pièce ne change pas ?
 
Cordialement
Jacky
 
Lien vers le commentaire
Partager sur d’autres sites

lorsque je regarde l'api

http://<IP HC2>/api/rooms

cela devrait être possible en modifiant le json de la pièce.

Voici ce que je fait pour changer l'icone d'un thermomètre par exemple

----------------------------------
-- User Settings
----------------------------------
local DeviceID = 84
local IconeID = 1015
----------------------------------
-- DO not change bellow this line
----------------------------------
HC2 = Net.FHttp("127.0.0.1",11111)
-- préparation du nouveau json
NouvelleIcone = '{"properties":{"deviceIcon":'..IconeID..'}}'
-- écriture du nouveau json
payload = "/api/devices/" ..DeviceID
HC2:PUT(payload, NouvelleIcone)

Lien vers le commentaire
Partager sur d’autres sites

Testé le code indiqué mais sans succès...

ci dessous le code utilisé :

 

---------------------------------------

local MaVariable2
local DeviceID = 16
local IconeID = 1015
 
MaVariable2 = fibaro:getValue(75, 'value')
 
if (MaVariable2 == '0') then
  --Porte fermée
  fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", 56)
  --fibaro:call(16, "setProperty", "currentIcon", 1003)
  IconeID = 1003
else
  --Porte ouverte
  fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", 55)
  --fibaro:call(16, "setProperty", "currentIcon", 1001)
  IconeID = 1001
end
----------------------------------
-- DO not change bellow this line
----------------------------------
HC2 = Net.FHttp("127.0.0.1",11111)
-- préparation du nouveau json
NouvelleIcone = '{"properties":{"deviceIcon":'..IconeID..'}}'
-- écriture du nouveau json
payload = "/api/devices/" ..DeviceID
HC2:PUT(payload, NouvelleIcone)
------------------------------------------------------
Lien vers le commentaire
Partager sur d’autres sites

petite remarque : pour que ton code soit plus facilement lisible, utilise le bouton <> pour l'insérer.

faits le json d'une de tes pièces et tu verras que là, ce n'est pas le numéro de l'icône, mais le nom complet de comment il a sauvé l'icône qui est utilisé

Lien vers le commentaire
Partager sur d’autres sites

lace l'api pour voir ce qu'il y a dedans:

htttp://<IP BOX>/api/rooms

 

et tu trouveras qqch comme ceci

 

  • {
    • "id": 4,
    • "name": "Salon",
    • "sectionID": 4,
    • "icon": "room_kominek",
    • "defaultSensors": {
      • "temperature": 116,
      • "humidity": 117,
      • "light": 0
      },
    • "defaultThermostat": 115,
    • "sortOrder": 1
    },
  • {
    • "id": 5,
    • "name": "SdB Rez",
    • "sectionID": 4,
    • "icon": "room_prysznic",
    • "defaultSensors": {
      • "temperature": 236,
      • "humidity": 238,
      • "light": 237
      },
    • "defaultThermostat": 233,
    • "sortOrder": 2
    },

et ici pour la room 4, c'est room_kominek

 

je dirais pour toi User1003 au lieu de 1003.

A essayer

Lien vers le commentaire
Partager sur d’autres sites

Désolé mais je n'y arrive pas... ci-dessous le code, j'ai essayé avec les " et sans cela ne change rien...

local MaVariable2
local DeviceID = 16
local IconeID = 1015

MaVariable2 = fibaro:getValue(75, 'value')

if (MaVariable2 == '0') then
  --Porte fermée
  fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", 56)
  --fibaro:call(16, "setProperty", "currentIcon", 1003)
  IconeID = "User1003"
else
  --Porte ouverte
  fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", 55)
  --fibaro:call(16, "setProperty", "currentIcon", 1001)
  IconeID = "User1001"
end
----------------------------------
-- DO not change bellow this line
----------------------------------
HC2 = Net.FHttp("127.0.0.1",11111)
-- préparation du nouveau json
NouvelleIcone = '{"properties":{"deviceIcon":'..IconeID..'}}'
-- écriture du nouveau json
payload = "/api/devices/" ..DeviceID
HC2:PUT(payload, NouvelleIcone)
Lien vers le commentaire
Partager sur d’autres sites

Je ne vois pas de propriété du nom "deviceIcon" mais "icon"  :P

 

Et ne pas oublié que lorsque l'on change directement le json, le rafraîchissement n'est pas automatique, il faut recharger la page voir relancer l'application Android/iPhone.

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...