Aller au contenu

Messages recommandés

Posté(e) (modifié)

Si ça se trouve, sur HC2 ils ont fait comme sur HC3.... c'est à dire la suppression de la possibilité de rebooter la box via le code LUA.

 

Je n'ai plus d'HC2, donc je ne pourrai pas investiguer d'avantage.

 

Modifié par Lazer
Posté(e)

Slt Lazer, Pas de soucis, 

Mon GEA a planté aujourd'hui donc je vais pouvoir être plus précis.

En fait, de manière aléatoire, c'est à dire parfois au bout de plusieurs jours et parfois au bout d'une heure, mon GEA plante et toujours avec la même erreur

[DEBUG] 02:04:28: 2022-05-10 02:04:28.152671 [ error] API: Host not found (authoritative)
[DEBUG] 02:04:28: ... vérification en cours #529 @15870s...
[DEBUG] 02:04:28: 2022-05-10 02:04:28.154409 [ error] timer handler failed with error: /opt/fibaro/scenes/43.lua:716: attempt to index field 'globalvalue' (a nil value)

et la ligne 716 chez moi ramène à la fonction

    restarttask = {name="RestartTask", 
                    getValue=function(taskid) return GEA.globalvalue:find("|R_" .. taskid.."|") end,
                    action=function(taskid) if (type(taskid) ~= "table") then taskid = {taskid} end for i=1, #taskid do if (taskid[i]=="self") then taskid[i]=GEA.currentEntry.id end GEA.globalvalue = GEA.globalvalue:gsub("|R_" .. taskid[i].."|", ""):gsub("|M_" .. taskid[i] .. "{(%d+)}|", ""):gsub("|S_" .. taskid[i].."|", "") .. "|R_" .. taskid[i].."|" end end

et plus précisément le getValue :

getValue=function(taskid) return GEA.globalvalue:find("|R_" .. taskid.."|") end,
                    

Du coup,  pour essayer de feinter le problème, j'ai mis des tâches pour reboot la HC2 toutes les 2h parce que sinon tout plante et toute ma programmation chauffage s'arrête.

Autant vous dire que ça été particulièrement galère cet hiver.

 

J'en appelle donc à une âme charitable car mon code n'a pas changé depuis des années et cette satané v4 qui m'a tout cassée...

Posté(e)

Il faudrait prier très fort que @Steven passe par ici pour se pencher sur ton problème, c'est le seul qui maitrise le code GEA sur HC2.

 

Mais ta remarque est étrange, la v4 elle est vieille maintenant, et elle fonctionne super bien avec GEA, j'ai fonctionné ainsi pendant des années, sans rencontrer de plantages de GEA.

Posté(e)

Oui, je sais, c'est très bizarre.

Sinon, il me reste la solution de repartir d'une version vierge de GEA et de rajouter mes appels de fonction 1 par 1

JE peux tenter le coup au point ou j'en suis et si Steven passe hé bien tant mieux pour moi ;)

Posté(e)

Arf, je viens de trouver dis donc.

J'ai créé une nouvelle scène avec rien dedans à part 

 

    -- Début de journée, on vérifie si on est en vacances aujourd'hui
    GEA.add( {"Time", "00:02", "00:04"}, 30, "", {"VirtualDevice", 259, 1} )
    
    -- === Chauffage Sèche Serviette Parents === --
    GEA.add( {{"Days", "Monday,Tuesday,Wednesday,Thursday,Friday"},{"Time", "05:30", "05:32"}}, 30, "", {"turnOn", id["SECHE_SERVIETTE_RDC"]} )
    
  	-- Eteindre après 1heure 10 minutes
  	GEA.add(id["SECHE_SERVIETTE_RDC"], 1*70*60, "", {{"turnOff"}})    

et ca plante immédiatement toujours sur la même fonction.

Et je viens de remarquer que dans le code, il y a une coquille

au tout début, il est écrit

  GEA.checkEvery = 30
  GEA.portables = {256} 
  GEA.globalvariables = "GEA_Tasks6"
  GEA.language = "fr"

Hors la variable globale qui est créée par la suite est GEA_Tasks  (miss click sur le 6)

 

En relançant en tirant le 6 ça a l'air de passer et en fait, en regardant dans les vieilles versions de GEA, je crois que l'erreur est arrivée entre la 6.05 et la 6.10 car je la vois également dans mon 6.10.

Je relance donc tout avec la correction pour voir si c'est bien cela. D'ici demain soir j'en aurais le coeur net

Posté(e)

Perdu, j'ai encore eu l'erreur cette nuit. Tjs la même : 


[DEBUG] 02:05:33: 2022-05-11 02:05:33.327566 [ error] API: Host not found (authoritative)
[DEBUG] 02:05:33: ... vérification en cours #576 @17280s...
[DEBUG] 02:05:33: 2022-05-11 02:05:33.329407 [ error] timer handler failed with error: /opt/fibaro/scenes/43.lua:716: attempt to index field 'globalvalue' (a nil value)

et c'est cette fonction restarttask qui m'embête mais je ne sais pas d'où se fait l'appel

Posté(e) (modifié)

Salut à tous

 

comment interprétée le code suivant :

 

GEA.add({"Sensor-" , id["FRIGO"], 10}, 20*60"PANNE CONGELO" , {...
 
si la consommation est inférieur à 10 durant 20mm. ou. si la consommation est inférieur à 10 dans 20mm 
 
 
Je souhaite réaliser un code qui surveille la consommation d'un congélateur
 
Si mon congélateur n'a pas consommé 10 W dans les 20 minutes alors .....
 
 

merci de votre aide

 

 

 

 

 

 

 

 

 

 

 

 

Modifié par 971jmd
Posté(e)
Il y a 2 heures, 971jmd a dit :

Salut à tous

 

comment interprétée le code suivant :

 

GEA.add({"Sensor-" , id["FRIGO"], 10}, 20*60"PANNE CONGELO" , {...
 
si la consommation est inférieur à 10 durant 20mm. ou. si la consommation est inférieur à 10 dans 20mm 
 
 
Je souhaite réaliser un code qui surveille la consommation d'un congélateur
 
Si mon congélateur n'a pas consommé 10 W dans les 20 minutes alors .....
 
 

merci de votre aide

 

 

 

 

 

 

 

 

 

 

 

 

Bonjour,

sauf erreur, 

durant = depuis

donc,

« Si mon congélateur n'a pas consommé 10 W depuis 20 minutes alors ..... »

  • Like 1
Posté(e)

Slt Jmd, à l'époque, j'avais mis :

   -- on le désactive si conso à moins de 40W depuis 5 minutes
 
    --GEA.add ({{"Sensor-", id["SECHE_LINGE"], 40}, id["SECHE_LINGE"]}, 5*60, "", {{"turnOff", id["SECHE_LINGE"]}})

ca doit répondre à ton besoin

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

Bonjour,

 

je souhaite déclencher des extracteurs d'air 15 min toutes les heures.

j'avais déjà posté cette demande et il me semble que cela fonctionnait.....mais plus à l'heure actuelle ....

 

Citation
------ ventilation cave
GEA.add(true60*60"", {"Repeat"}, {"TurnOn"16315*60})
GEA.add(true60*60"", {"Repeat"}, {"TurnOn"16515*60})

merci d'avance pour votre aide.

Modifié par cseb62
Posté(e)
Il y a 2 heures, Lazer a dit :

Il faut que tu entoures les 2 actions par des accolades.

Comme cela ?

Citation
------ ventilation cave
GEA.add(true60*60"", {{"Repeat"}, {"TurnOn"16315*60}})
GEA.add(true60*60"", {{"Repeat"}, {"TurnOn"16515*60}})

 

Posté(e)

Bonjour,

D'après la doc de GEA 7.x il y a

-- "httpGet" : Exécute une requête HTTP
 

mais ça ne fonctionne pas (enfin, je n'ai pas réussi) pour des requêtes https.

Notmal ? Y a-t-il un truc ?

Merci et bon pm

Posté(e) (modifié)
il y a 5 minutes, jojo a dit :

ça ne fonctionne pas

comment te dire poliment.... ?

 

les logs, tout ça... merci ;)

 

EDIT :
 

GEA.debug = true
GEA.lldebug = true

Avec ça on est bon

 

Modifié par Lazer
Posté(e)

sorry pour la réponse tardive, je n'ai pas eu de notif de ta réponse.

Je venais pour supprimer mon post car ça fonctionne, sauf (validé après des 10zaines d'essais) quand j'ai un H (majuscule, pas minuscule) dans mon paramètre value1.

C'est tellement étrange/spécifique qu'on oublie, bien que quand j'entre la même url dans mon browser, c'est ok.

Je GEA démarre bien automatiquement, mais l'instruction ne fait juste rien ...

Posté(e)

Ah, je pense que le navigateur fait automatiquement la correction de casse, ce que je ne fait pas la HC3.

 

Avec le GEA.debug = true tu aurais vu le code de retour http, le message de retour ou d'erreur, etc, bref de quoi diagnostiquer.

Comme on en discutait sur l'autre topic, il faut user et abuser de ce paramètre de debug, c'est fait pour, ça date de GEA sur HC2 et Steven pensait à tout :13:

  • 3 semaines après...
Posté(e)

bonjour,

La question a probablement déjà été posée, mais je n'ai pas le courage de parcourir les >450 pages du topic ...

 

Je souhaite  comparer la valeur de 2 modules (plus précisément si module1>module2, alors valeur module2 = valeur module1)

 

Mais la fonction GEA

GEA.add( {"Value+", 73, 50}

compare la valeur du module 73 à la valeur fixe 50.

 

Avez-vous une astuce ? 

Posté(e)

bon, du coup j'ai trouvé une manière de contourner le problème.

J'utilise ceci

GEA.add ({"Value!", id["PISCINE_TMP"], 0}, 0, '', 
         {"QuickApp", id["GESTIONPISCINE"], "TmpLast"})

à chaque changement (ok, au prochain cycle) de "PISCINE_TMP" j'appelle un QA qui fera la comparaison....

 

Ca devrait fonctionner, mais j'aurais aimé rester 100% GEA ...

Posté(e) (modifié)

Je crois que c'est possible en imbriquant les "Value".

Un truc dans le genre :

GEA.add( {"Value+", id["1er_module"], {"Value", id["2nd_module"]}}, ...

A tester...

 

EDIT : autrement si ça ne fonctionne pas, et plutôt que de passer par un QA externe, tu devrais pouvoir y arriver en pur GEA avec 2 autres méthodes :

  • "VariableCache"
  • "Function"

 

EDIT 2 :

Non testé, mais ça devrait fonctionner ainsi avec "Function" :

GEA.add({"Function", function(a, b) return a > b end, {"Value", id["1er_module"]}, {"Value", id["2nd_module"]}}, ...

 

Pour VariableCache, il faudra faire en 2 lignes : 1 première règle qui met la valeur du 1er module dans la variable en cache, et la seconde règle pour la comparaison entre le 2nd module et la variable en cache.

 

Mais si ça fonctionne avec les "Value" imbriqués, c'est le plus simple.

 

Modifié par Lazer
Posté(e)

merci, je vais essayer et dirai quoi.

Ceci dit, je souhaite finaliser mon idée initiale car je risque d'avoir besoins de cela plus tard.

J'ai donc une question très basique :

Comment mettre à jour la valeur (ici la température) d'un module AUTRE que celui où tourne le QA.

J'ai bien trouvé ceci

    self:updateProperty("value", value)

mais ça ne fonctionne que pour le module lui-même (self:).

 

Je souhaiterais remplacer self: par l'id d'un module ...

 

Basique non ? (et comme mon copain Google n'a pas voulu me donner la réponse, je la pose ici)

Posté(e)

Et bien justement en appelant la fonction updateProperty.

N'oublie pas que toutes les fonctions des QuickApps sont automatiquement exportées, donc on peut les appeler de partout.

C'est très pratique et très simple au final.

 

En LUA :

fibaro.call(id, "updateProperty", "value", 123)

Et on peut modifier ainsi les autres propriétés que "value", par exemple "power", "energy", "batteryLevel", etc...

Note que hub.call() c'est le nouveau nom officiel à utiliser depuis le dernier firmware stable, même si Fibaro a annoncé qu'ils allaient conserver la rétro-compatibilité avec toutes les fonctions fibaro.*

 

Via l'API :

/api/callAction?deviceID=123&name=updateProperty&arg1=value&arg2=123

 

 

 

  • Thanks 1
×
×
  • Créer...