Aller au contenu

Messages recommandés

Posté(e)

J'ai un périphérique virtuel pour gérer mon chauffage.

 

Je souhaite remplacer mes boutons par un "slider"

 

à‡a fonctionne impec avec le code ci-dessous, mais ma question est :

 

Est-il possible de saisir une valeur mini et maxi dans le slider? par ex mini 17 et max 24

Car là , pour mon chauffage ca va de 0 à  100 !

local new_temp = _sliderValue_; 
HC2 = Net.FHttp("192.168.x.xxx",80) 
HC2:setBasicAuthentication("admin", "xxxxxxxx") 


response ,status, errorCode = HC2:GET("/api/panels/heating?id=5") 
jsonTable = json.decode(response) 

 
jsonTable.properties.vacationTemperature = new_temp; 


json = json.encode(jsonTable); 
HC2:PUT("/api/panels/heating?id=5", json) 
fibaro:log("ready")
Posté(e)

Il te faut une fonction de mapping.

function map_range( a1, a2, b1, b2, s )

return b1 + (s-a1)*(b2-b1)/(a2-a1)

end

Ça permet de mapper une valeur s du range a1, a2 dans le range b1, b2. Ici s est la valeur de ton curseur, a1=0, a2=100 et àtoi de définir les températures min et Max (b1 et b2) que tu souhaites.

Envoyé de mon iPhone àl'aide de Tapatalk

Posté(e)

Mettons que tu souhaites régler ton chauffage entre 15 et 25°

Dans ton code LUA, tu ajoutes la déclaration de fonction que je t'ai donné et tu l'appelle de cette manière :

local new_temp = map_range(0, 100, 15, 25, _sliderValue_ );

Si tu mets ton slider àla moitié, tu obtiendra new_temp = 20 (le barycentre de 15 et 25)

Posté(e)

Ca fonctionne bien, j'ai bien ma plage de 15 à  25 au lieu de 0 / 100

 

Mais maintenant comment faire au niveau de l'affichage du slider pour afficher la bonne valeur car si je me met au milieu, sous le slider, j'ai "50" et non "20" ?

 

Exemple, si je veux 23° je doit mettre mon curseur à  "80", pas génial du coup!...

 

Je pense que c'est pas possible...

Posté(e)

Ça je ne sais pas encore te répondre, je n'ai pas encore assez bidouillé mon HC2 ;-)

Envoyé de mon iPhone àl'aide de Tapatalk

Posté(e)

Alors ça c'est vraiment dommage !  :(

J'ai une fonction qui marche et juste un problème au niveau de l'affichage!

 

Je pense ouvrir un ticket sur le Bugtracker, car pouvoir afficher les seuils réels  serait vraiment un plus !

(ou au pire, pouvoir supprimer l'affichage par défaut 0/100, et se servir d'un label...)

Posté(e)

Et oui une vrai mine d'or, mais cette fonction àforce de l'utiliser je la connais par cœur :-)

Envoyé de mon iPhone àl'aide de Tapatalk

Posté(e)

Tout àfait Phil !

Il y a déjàdes tickets la dessus il me semble, je pense avoir aussi remonté l'information mais sans retour...

Posté(e)

Je met le code fini, ça pourra peut être servir à  d'autres !...

Et merci @Gregory  ;)

function map_range( a1, a2, b1, b2, s )
return b1 + (s-a1)*(b2-b1)/(a2-a1)
end

HC2 = Net.FHttp("192.168.x.xxx",80) 
HC2:setBasicAuthentication("admin", "xxxxxxx") 

local new_temp = map_range(0, 100, 15, 25, _sliderValue_ )

response ,status, errorCode = HC2:GET("/api/panels/heating?id=5") 
jsonTable = json.decode(response) 

 
jsonTable.properties.vacationTemperature = new_temp; 


json = json.encode(jsonTable); 
HC2:PUT("/api/panels/heating?id=5", json) 
fibaro:log("ready")

  • Upvote 1
  • 9 mois après...
Posté(e)

bonjour a tous

 

je sollicite votre aide pour la création d'un bouton SLIDER

 

le but d'enregistrer la valeur de mon bouton slider dans une variable  ;)

 

1 bouton SLIDER + 1 bouton SAUVE

  • 1 mois après...
Posté(e)

@moicphil, est ce que tu utilises encore la fonction proposée pour mettre à  jour ton panneau de chauffage avec la V4 ?

Malgré la modification de l'url pour poster la requete de mise à  jour qui est différente et que j'ai changé, je plante ma box "erreur 503" lorsque j'envoie le JSON de cette manière

jsonTable.properties.vacationTemperature = new_temp;

json = json.encode(jsonTable);
HC2:PUT("/api/panels/heating/5", json)

si je passe par une ecriture de ce type  en incluant l'id name la modification est bien effectuée et pas de plantage de la Box

 

 

local NouveauPanel = ('{"id":402,"name":"Zone Jour","properties":{"handTemperature":20,"handTimestamp":1421607008,"vacationTemperature":0}}')
json = json.encode(NouveauPanel);
HC2:PUT("/api/panels/heating/402", NouveauPanel)

la manipulation json.properties me plairait mieux comme tu dois t'en douter  ;)

Posté(e)

Désolé, mais cela fait plusieurs moi que je n'ai plus de "modules liés" , remplacé par un thermostat connecté.

 

Je n'utilise donc plus le panneau Chauffage.

 

Bizarre cette erreur "503"... je n'ai pas vu passer d'autres posts parlant de Bug sur le json.properties.

  -_-

Posté(e)

Oui, j'en suis content. Il n'a jamais planté et je l'ai jamais rebooté ( contrairement à  la HC2  ;) ).

Surtout, je ne voulais plus être dépendant de la box pour gérer mon chauffage, là  si la hc2 claque, ben on pourra toujours piloter le chauffage manuellement.

 

Niveau confort et utilisation c'est quasi pareil qu'avec mon module lié.

Posté(e)

Bah alors pourquoi avoir changé vu que si on plante la box on a toujours le fonctionnement en module lié ? (je sais jsuis chiant  :) )

×
×
  • Créer...