Aller au contenu

HC3 & HC3L - 5.111.48 - BETA - 03/06/2022


Messages recommandés

Posté(e)

 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

  • Like 3
  • Thanks 1
Posté(e) (modifié)

Bon, courage, Mise à jour lancée :=)

 

Mise à jour terminée RAS à l'exception d'un download firmware absolument lent 

 

 

 

Modifié par ericl78
Posté(e)

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.

Posté(e)

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...

Posté(e)
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

 

 

Posté(e)

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...

 

 

Posté(e)

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 ?

Posté(e)

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.

 

 

 

Posté(e) (modifié)

y a des trucs bizarre avec cette mise à jour :wacko:

un QA qui me posait jamais de soucis jusqu'à maintenant, et là :

image.png.55ca50b05ceff3ccd4a2be2b0174c37f.png

 

pas plus de détails, super... ...

Modifié par jjacques68
  • 2 semaines après...
Posté(e)
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

Posté(e) (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 :

image.png.55ca50b05ceff3ccd4a2be2b0174c37f.png

 

une idée ?? :) 

 

Modifié par jjacques68
Posté(e) (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 :

image.png.55ca50b05ceff3ccd4a2be2b0174c37f.png

 

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é par jang
  • Like 2
Posté(e)

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)

Posté(e)

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 ?

Posté(e)

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)

  • Like 1
Posté(e)

Instead of 

do
:
end

do

local debug = true
if debug then
:
end

and set it to false when you found the bug

  • Thanks 1
  • Upvote 1
Posté(e) (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é par henri-allauch
×
×
  • Créer...