Moicphil Posté(e) le 11 février 2014 Signaler Posté(e) le 11 février 2014 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")
Gregory Posté(e) le 11 février 2014 Signaler Posté(e) le 11 février 2014 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
Moicphil Posté(e) le 11 février 2014 Auteur Signaler Posté(e) le 11 février 2014 Il me semble avoir vaguement compris ta réponse... Mais concrètement, comment je construis mon code, et comment utiliser la valeur "s" ?
Gregory Posté(e) le 11 février 2014 Signaler Posté(e) le 11 février 2014 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)
Shad Posté(e) le 11 février 2014 Signaler Posté(e) le 11 février 2014 Tiens intéressant cette fonction, je ne la connaissait pas merci
Moicphil Posté(e) le 11 février 2014 Auteur Signaler Posté(e) le 11 février 2014 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...
Gregory Posté(e) le 11 février 2014 Signaler Posté(e) le 11 février 2014 Ç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
Krikroff Posté(e) le 11 février 2014 Signaler Posté(e) le 11 février 2014 @Greg, un adepte de Rosetta Code ! C'est bon signe alors . Une vrai mine d'or: cf. http://rosettacode.org/wiki/Map_range Merci pour le partage. @Phil, pas possible de jouer sur la valeur du slider a ma connaissance . Il faut passer par un Label.
Moicphil Posté(e) le 11 février 2014 Auteur Signaler Posté(e) le 11 février 2014 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...)
Gregory Posté(e) le 11 février 2014 Signaler Posté(e) le 11 février 2014 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
Krikroff Posté(e) le 11 février 2014 Signaler Posté(e) le 11 février 2014 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...
Moicphil Posté(e) le 11 février 2014 Auteur Signaler Posté(e) le 11 février 2014 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") 1
BenjyNet Posté(e) le 12 février 2014 Signaler Posté(e) le 12 février 2014 Oh con... alors là , ça me dépasse...
971jmd Posté(e) le 10 décembre 2014 Signaler Posté(e) le 10 décembre 2014 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
971jmd Posté(e) le 10 décembre 2014 Signaler Posté(e) le 10 décembre 2014 impec sa fonction, j'ai fini par trouver
PITP2 Posté(e) le 18 janvier 2015 Signaler Posté(e) le 18 janvier 2015 @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
Moicphil Posté(e) le 18 janvier 2015 Auteur Signaler Posté(e) le 18 janvier 2015 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.
PITP2 Posté(e) le 18 janvier 2015 Signaler Posté(e) le 18 janvier 2015 Ok merci quand même. Tu n'utilises donc plus ta HC2 pour la gestion du chauffage ? tu utilises un nest ?
Moicphil Posté(e) le 18 janvier 2015 Auteur Signaler Posté(e) le 18 janvier 2015 Si, ma HC2 gère toujours mon chauffage, mais via l'api du fabriquant. J'ai aussi et surtout la possibilité de le piloter manuellement. C'est un GreenMomit >> http://www.domotique-fibaro.fr/index.php/topic/2226-thermostat-greenmomit-et-hc2/ 1
PITP2 Posté(e) le 18 janvier 2015 Signaler Posté(e) le 18 janvier 2015 d'accord et tu en es content par rapport au panneau de chauffage ?
Moicphil Posté(e) le 18 janvier 2015 Auteur Signaler Posté(e) le 18 janvier 2015 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é.
PITP2 Posté(e) le 18 janvier 2015 Signaler Posté(e) le 18 janvier 2015 Bah alors pourquoi avoir changé vu que si on plante la box on a toujours le fonctionnement en module lié ? (je sais jsuis chiant )
Moicphil Posté(e) le 18 janvier 2015 Auteur Signaler Posté(e) le 18 janvier 2015 Si ta hc2 est HS comment enverra tu tes consignes au panneau de chauffage ?
PITP2 Posté(e) le 18 janvier 2015 Signaler Posté(e) le 18 janvier 2015 ah oui je suis d'accord mais tu perds les panneaux mais tu n'es pas sans chauffage quand meme
Messages recommandés