Lazer Posté(e) le 3 juin 2022 Signaler Posté(e) le 3 juin 2022 HC3 & HC3L - 5.111.48 - BETA - 03/06/2022 Thank you for using our gateway! Be sure to update to the latest version to enjoy new features and improvements. Main features: 1. Completely new and redesigned process of first gateway configuration in WebUi. 2. Added possibility to test newly added Z-Wave devices during first configuration. What's new: Dashboard Added possibility to use Hold (start move) and Release (stop move) actions on buttons in sidebar for roller shutters. Devices Device roles now visible on the Settings/Devices page. Added missing support for devices which works on HC2/HCL platforms. Added channel designation in the target device selector in Z-Wave association configuration. Slider for level change for roller shutter with role "Device without positioning" removed from control dialog in mobile application. Parameter names are now displayed for Z-Wave devices.** Improved virtual power consumption algorithm for Color Controllers. Elero* Improvements in pairing process. JA Pulse device support added. Nice* Changed default devices names to be more understandable. Improved calibration mechanism for BiDi-Shutter and BiDi-Awning. Improved error handling during pairing processes. UI improvements. Improved removal of disconnected devices. Other Device location (room) added to e-mail and push notifications templates. Updated system packages for performance and stability. Profiles Improved saving for actions in profiles. Quick Apps Added support for Headers in Websocket connections. Scenes Added possibility to rename scenes from within the open editor. Safeguards have been added to prevent incorrect values being entered in Scenarios conditions. Performance improvements related to loading elements in Block Scenes. Added translations for modes and actions for thermostats. Z-Wave Added background polling for sleeping devices**. Improved devices adding process. Updated SDK to v7.17.2 for Yubii Home and Home Center 3 Lite. Performance improvements. Bug fixes: Dashboard Redirection to specific device settings not always works correctly. Elero* Issue with controlling Awnings in some cases (reversed states and/or actions). Energy Wrong rounding up the percentage of summary consumption for devices list in Savings tab. Issue with "Rest" graph in Detailed Consumption graph in General Tab if main energy meter is set. Gateway Connection Empty Z-Wave device templates after downloading them from Slave gateway. Network Listing available networks not always works correctly if the currently connected network has poor quality. Nice* Added device summary shows default names instead of configured ones. It is impossible to control old revision of Era Fit BD and Next Fit BD devices. Inconsistent device renaming during adding wizard in case of different protocols. Other Duplicated scrollbar in WiFi search window. Every logging into the system using mobile application generates redundant events to History. Profiles Wrong unit for Sprinklers watering time. Rooms Drag and drop the rooms not always works correctly. Quick Apps Slider ignores min/max values from the API. Scenes Impossible to edit or create scenes using thermostats in Czech language in some cases. Missing favorite positions condition and trigger for Elero devices. Z-Wave ZW300 devices update fails in some cases. Global polling not always works correctly. Known issues: Z-Wave Engine 3.0 Some Z-Wave devices are not fully compatible with the new version of Z-Wave engine. Gateway connection is not available in the new Z-Wave engine version. * - does not apply to HC3L (Home Center 3 Lite) ** - applies only to Z-Wave Engine 3.0 3 1
ericl78 Posté(e) le 4 juin 2022 Signaler Posté(e) le 4 juin 2022 (modifié) Bon, courage, Mise à jour lancée :=) Mise à jour terminée RAS à l'exception d'un download firmware absolument lent Modifié le 4 juin 2022 par ericl78
Lazer Posté(e) le 4 juin 2022 Auteur Signaler Posté(e) le 4 juin 2022 Aucun souci pour ma part sur ma HC3 de test. J'ai presque envie de l'installer en production, car il y a un bug résolu qui m'embêtait pour les QuickApps : "Slider ignores min/max values from the API" Cette amélioration : "Z-Wave : Improved devices adding process" pourrait être intéressante pour l'inclusion des modules Qubino Fil Pilote... sait-on jamais, c'est à tester.
jjacques68 Posté(e) le 4 juin 2022 Signaler Posté(e) le 4 juin 2022 ah si ! les QA ne se rafraîchissent plus quand on clique sur leurs boutons (webUI et mobile). Mais l'action est réalisée. ça a déjà été relevé sur le forum officiel...
ericl78 Posté(e) le 4 juin 2022 Signaler Posté(e) le 4 juin 2022 Il y a 5 heures, jjacques68 a dit : ah si ! les QA ne se rafraîchissent plus quand on clique sur leurs boutons (webUI et mobile). Mais l'action est réalisée. ça a déjà été relevé sur le forum officiel... Oui, la même chose chez moi, tu as raison Et si tu n'es pas admin, chez moi, il n'affiche plus les QA sur mon iPhone
RHODITIS Posté(e) le 4 juin 2022 Signaler Posté(e) le 4 juin 2022 Excellente surprise à la faveur de cette mise à jour : mes vieux thermostats SRT321 que j'utilisais de manière très satisfaisante avec la HCL, viennent de se remettre miraculeusement à retourner la température sur la HC3. Tout ce que j'étais parvenu à faire c'était de les faire fonctionner bien sûr mais la température retournée était celle du moment de l'inclusion, puis plus rien...
Lazer Posté(e) le 4 juin 2022 Auteur Signaler Posté(e) le 4 juin 2022 Il a toujours parfaitement fonctionné le SRT321 chez moi, c'est étrange ton comportement, l'inclusion s'était peut être mal passée ? @ericl78 ça par contre c'est très embêtant :( Du coup pas de mise à jour en prod, merci pour l'avertissement. Tu l'as bien remonté à Fibaro sur le forum ?
RHODITIS Posté(e) le 4 juin 2022 Signaler Posté(e) le 4 juin 2022 Trois SRT321, plusieurs inclusions avec toujours le même résultat : température immuable... En plus je n'ai rien dû faire pour qu'ils se remettent à vivre. Enfin tout est bien qui finit bien.
Lazer Posté(e) le 4 juin 2022 Auteur Signaler Posté(e) le 4 juin 2022 OK.... ça reste un grand mystère alors. En tout cas c'est résolu
jjacques68 Posté(e) le 4 juin 2022 Signaler Posté(e) le 4 juin 2022 (modifié) y a des trucs bizarre avec cette mise à jour un QA qui me posait jamais de soucis jusqu'à maintenant, et là : pas plus de détails, super... ... Modifié le 4 juin 2022 par jjacques68
Lazer Posté(e) le 4 juin 2022 Auteur Signaler Posté(e) le 4 juin 2022 Tu as bien protégé toutes les fonctions à risque avec un pcall() ? httpClient, json, etc 1
jjacques68 Posté(e) le 4 juin 2022 Signaler Posté(e) le 4 juin 2022 bien vu @Lazer ! pas dans ce QA justement... et y a du HTTP y a plus cas...
ericl78 Posté(e) le 17 juin 2022 Signaler Posté(e) le 17 juin 2022 Le 04/06/2022 à 13:27, jjacques68 a dit : ah si ! les QA ne se rafraîchissent plus quand on clique sur leurs boutons (webUI et mobile). Mais l'action est réalisée. ça a déjà été relevé sur le forum officiel... oui constaté aussi
jjacques68 Posté(e) le 18 juin 2022 Signaler Posté(e) le 18 juin 2022 (modifié) Le 04/06/2022 à 20:47, Lazer a dit : Tu as bien protégé toutes les fonctions à risque avec un pcall() ? je viens donner des news... ça fait donc 14 jours que j'ai protégé mon code avec des pcall(), mais visiblement ça plante, de temps en temps seulement, mais toujours sur la requête HTTP, et le pcall() ne fait rien ?? A moins que je m'y prenne mal, mais je pense pas, j'ai suivi ton tuto @Lazer... Ci-dessous ma fonction synthétisée pour l'exemple : function QuickApp:MaFonction() local status, err = pcall(function() self.http:request("http://...", { options={...}, success = function(response) fibaro.setTimeout(... MaFonction()) end, --appel en boucle tous les x minutes error = function(error) fibaro.setTimeout(... MaFonction()) end }) end) if not status then self:warning('error: ' .. json.encode(error)) end end et quand le QA crash, j'ai pas de message warning avec l'erreur. J'ai toujours : une idée ?? Modifié le 18 juin 2022 par jjacques68
jang Posté(e) le 19 juin 2022 Signaler Posté(e) le 19 juin 2022 (modifié) Il y a 17 heures, jjacques68 a dit : I come to give news... So it's been 14 days since I protected my code with pcall(), but obviously it crashes, from time to time only, but always on the HTTP request, and the pcall() does nothing?? Unless I'm doing it wrong, but I don't think so, I followed your tutorial@Lazer... Below is my synthesized function for the example : and when the QA crashes, I have no warning message with the error. I always have : an idea ?? Remove your pcalls and add this as a separate file in your QA do local function perror(...) fibaro.error(__TAG,...) end function copy(obj) if type(obj) == 'table' then local res = {} for k,v in pairs(obj) do res[k] = copy(v) end return res else return obj end end local httpClient = net.HTTPClient -- protect success/error with pcall and print error function net.HTTPClient(args) local http = httpClient() return { request = function(_,url,opts) opts = copy(opts) local success,err = opts.success,opts.error if opts then opts.timeout = opts.timeout or args and args.timeout end if success then opts.success=function(res) local stat,r=pcall(success,res) if not stat then perror(r) end end end if err then opts.error=function(res) local stat,r=pcall(err,res) if not stat then perror(r) end end end return http:request(url,opts) end } end local settimeout, setinterval, encode, decode = -- gives us a better error messages setTimeout, setInterval, json.encode, json.decode function setTimeout(fun,ms) return settimeout(function() local stat,res = pcall(fun) if not stat then perror(res) end end,ms) end fibaro.setTimeout = function(ms,fun) return setTimeout(fun,ms) end function setInterval(fun,ms) return setinterval(function() local stat,res = pcall(fun) if not stat then perror(res) end end,ms) end fibaro.setInterval = function(ms,fun) return setInterval(fun,ms) end function json.decode(...) local stat,res = pcall(decode,...) if not stat then error(res,2) else return res end end function json.encode(...) local stat,res = pcall(encode,...) if not stat then error(res,2) else return res end end end do local function perror(...) fibaro.error(__TAG,...) end local httpClient = net.HTTPClient -- protect success/error with pcall and print error function net.HTTPClient(args) local http = httpClient() return { request = function(_,url,opts) opts = copy(opts) local success,err = opts.success,opts.error if opts then opts.timeout = opts.timeout or args and args.timeout end if success then opts.success=function(res) local stat,r=pcall(success,res) if not stat then perror(r) end end end if err then opts.error=function(res) local stat,r=pcall(err,res) if not stat then perror(r) end end end return http:request(url,opts) end } end local settimeout, setinterval, encode, decode = -- gives us a better error messages setTimeout, setInterval, json.encode, json.decode function setTimeout(fun,ms) return settimeout(function() local stat,res = pcall(fun) if not stat then perror(res) end end,ms) end fibaro.setTimeout = function(ms,fun) return setTimeout(fun,ms) end function setInterval(fun,ms) return setinterval(function() local stat,res = pcall(fun) if not stat then perror(res) end end,ms) end fibaro.setInterval = function(ms,fun) return setInterval(fun,ms) end function json.decode(...) local stat,res = pcall(decode,...) if not stat then error(res,2) else return res end end function json.encode(...) local stat,res = pcall(encode,...) if not stat then error(res,2) else return res end end end Modifié le 19 juin 2022 par jang 2
jjacques68 Posté(e) le 19 juin 2022 Signaler Posté(e) le 19 juin 2022 @jang thanks I understand, but it's complicated for my basic original little function I will try this.
Lazer Posté(e) le 19 juin 2022 Auteur Signaler Posté(e) le 19 juin 2022 C'est assez simple (et génial) en fait ce que @jang te propose. Il redéfinie toutes les fonctions "à risque" de Fibaro dans un nouveau fichier du QuickApp. Donc à l'utilisation, ça ne change rien, tu continues à utiliser les fonctions normalement (sans t'embêter avec les pcall(), mais elles seront protégées par des pcall() quand même)
jjacques68 Posté(e) le 19 juin 2022 Signaler Posté(e) le 19 juin 2022 oui tout à fait ! L'idée est très bien ! c'est juste que si on commence a redéfinir les fonctions existantes, ça commence à faire compliqué Même si dans la réalité, le code original ne change pas... par contre ce que je comprends pas, c'est pourquoi les redéfinitions sont encadrées par un do end dans le fichier supplémentaire ?
Lazer Posté(e) le 19 juin 2022 Auteur Signaler Posté(e) le 19 juin 2022 En fait c'est plus simple. Puisque justement le code original ne change pas. Pour le do end, je suppose que ça sert à créer une closure pour limiter la portée des variables locales à cette closure (dès fois que ce code soit dans un fichier qui comprend plein d'autres choses) 1
jang Posté(e) le 19 juin 2022 Signaler Posté(e) le 19 juin 2022 Forgot a 'copy' function in original post - added. 1
jang Posté(e) le 19 juin 2022 Signaler Posté(e) le 19 juin 2022 Instead of do : end do local debug = true if debug then : end and set it to false when you found the bug 1 1
jjacques68 Posté(e) le 19 juin 2022 Signaler Posté(e) le 19 juin 2022 (modifié) oulalala !! ça me donne plein d'idées ça Modifié le 19 juin 2022 par jjacques68
henri-allauch Posté(e) le 20 juin 2022 Signaler Posté(e) le 20 juin 2022 (modifié) J'avais lu qu'il était conseillé d'utiliser pcall avec json.encode, json.decode, httpClient ( c'est ce que je fait ) Mais j'ignorais pour setTimeout et setTimer Ils sont aussi dangereux ces deux là ? La solution de @jang semble bien Modifié le 20 juin 2022 par henri-allauch
Messages recommandés