Aller au contenu

Recommended Posts

@zozotte

local fenetreAUTO = GEA.add( {{"Global", "Zib_Ouverture_R17", "0"},{"Global", "Chauffage", "AUTO"}}, -1, "", {{"VirtualDevice", id["VD_CHAUF_SDJ"], 4}, {"MaxTime", 1}})
local fenetreCONF = GEA.add( {{"Global", "Zib_Ouverture_R17", "0"},{"Global", "Chauffage", "CONF"}}, -1, "", {{"VirtualDevice", id["VD_CHAUF_SDJ"], 7}, {"MaxTime", 1}})
local fenetreECO = GEA.add( {{"Global", "Zib_Ouverture_R17", "0"},{"Global", "Chauffage", "ECO"}}, -1, "", {{"VirtualDevice", id["VD_CHAUF_SDJ"], 8}, {"MaxTime", 1}})
GEA.add( {"Global", "Zib_Ouverture_R17", "1"}, -1, "", {
   {"VirtualDevice", id["VD_CHAUF_SDJ"], 6}, 
   {"RestartTask", fenetreECO},
   {"RestartTask", fenetreAUTO},
   {"RestartTask", fenetreCONF},
})

Me semble plus cohérent.

Partager ce message


Lien à poster
Partager sur d’autres sites

@sebcbien

Je ne vois pas le soucis :)

 

En fait, GEA a raison  .. je m'explique. GEA agit de manière séquentielle en respectant l'ordre des commandes décrites pas l'utilisateur.

 

Reprenons ton code

 

1.  GEA.add({{"Global", "Porte_Gar_Action", "Demande_Fermeture"},{"Global", "Porte_Garage", "Not_Closed"}}, -1, "Demande Fermeture Porte Garage GEA à  #time#", {{"turnOn",id["REMOTE_GARAGE"]}})

2.  GEA.add({{"Global", "Porte_Gar_Action", "Demande_Fermeture"},{"Global", "Porte_Garage", "Closed"}}, -1, "Demande Fermeture Inutile", {{"Global", "Porte_Gar_Action", "En_Attente"}})

 

Lors du changement de la variable globale "Porte_Gar_Action", GEA va executé :

1. La ligne en verte si Porte_Gar_Action = "Demande_Fermeture" et que "Porte_Garage" = "Not_Closed" et il va activé ta REMOTE_GARAGE

A moins que je me trompe mais il est probable que {"turnOn", id["REMOTE_GARAGE"]} va modifié la valeur de "Porte_Garage" en la mettant sur "Closed"

2. la ligne orange s'éxecute car la ligne du dessus à  indirectement modifier la variable "Porte_Garage" en la mettant su "Closed".

 

Je peux me tromper mais cela me semble cohérent comme raisonnement.

 

Je confirme que j'avais eu un soucis similaire pour les SceneActivation donc je les avais mis dans un Scene au lieu de GEA avec des if...elseif...end !

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut Steven, 

Comme j'ai cherché deux jours sur ce problème, j'avais simplifié et enlevé les actions.

Et de toute façon, la seule chose qui change la variable globale Closed et Not_closed est le sabot magnétique de l'alarme (c'est GEA qui surveille l'état et change la VG). Il faut attendre 2 bonnes secondes que la porte se mette en mouvement, et que le contact magnétique s'éloigne suffisamment du capteur pour que la VG ne change.

Et ça n'expliquerais pas pourquoi Global! sur Not_Closed fonctionne.

Pour le _ je pense que j'avais testé, mais je vais re-vérifier cet PM en rentrant chez moi.

 

En tout cas le principe marche bien et je sais que j'ai le même style de porte de garage que toi car je me suis inspiré de ton post sur un blog pour la domotiser ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

@zozotte

local fenetreAUTO = GEA.add( {{"Global", "Zib_Ouverture_R17", "0"},{"Global", "Chauffage", "AUTO"}}, -1, "", {{"VirtualDevice", id["VD_CHAUF_SDJ"], 4}, {"MaxTime", 1}})
local fenetreCONF = GEA.add( {{"Global", "Zib_Ouverture_R17", "0"},{"Global", "Chauffage", "CONF"}}, -1, "", {{"VirtualDevice", id["VD_CHAUF_SDJ"], 7}, {"MaxTime", 1}})
local fenetreECO = GEA.add( {{"Global", "Zib_Ouverture_R17", "0"},{"Global", "Chauffage", "ECO"}}, -1, "", {{"VirtualDevice", id["VD_CHAUF_SDJ"], 8}, {"MaxTime", 1}})
GEA.add( {"Global", "Zib_Ouverture_R17", "1"}, -1, "", {
   {"VirtualDevice", id["VD_CHAUF_SDJ"], 6}, 
   {"RestartTask", fenetreECO},
   {"RestartTask", fenetreAUTO},
   {"RestartTask", fenetreCONF},
})

Me semble plus cohérent.

 

Sauf que pour arreter le chauffage, j'ai basculé ma variable CHAUFFAGE vers ARRET donc je n'ai plus la valeur d'avant (désolée ca n'etait pas visible dans les lignes)... :) j'ai 2 alternatives si pas gérable avec les taches: créer une variable qui stocke la valeur ou ajouter un if dans le VM chauffage (modification de ton module partagé) mais ca serait puissant de le faire tourner sur GEA :)

 

sinon pour le soucis des globales, voici d'autres observations qui aideront peut etre;

GEA.add({{"Global", "Mode_Maison", "Absence|Vacances"},{"Global", "Alarme", "0"}} , 10*60, "Information - Alarme enclenchée", {{"Global", "Alarme", "1"}})
GEA.add( {{"Global", "Mode_Maison", "Eveil"}, {"Global!", "Chauf_Z1_History", "Nil"}, estHiver}, 30, "", {{"CopyGlobal", "Chauf_Z1_History", "Chauf_Z1_Mode"},{"Global", "Chauf_Z1_History", "Nil"}, {"VirtualDevice", id["VD_CHAUF_Z1"], 17}})
GEA.add( {{"Global", "Mode_Maison", "Eveil"}, {"Global", "scheduleGroup", "Vacances"}}, 30, "", {{"Global", "scheduleGroup", "Normal"}})
GEA.add( {{"Global", "Conges", "1"}, {"Global", "scheduleGroup", "Normal"}}, 30, "", {{"Global", "scheduleGroup", "Conges"}}) 
GEA.add( {{"Global", "Conges", "0"}, {"Global", "scheduleGroup", "Conges"}}, 30, "", {{"Global", "scheduleGroup", "Normal"}}) 

2 globales ou plus dans la condition et se déclenchent comme attendu

(local estHiver = {"Global", "Mode_Saison", "Hiver"})

 

GEA.add( {{"Global", "Mode_Maison", "Eveil"}}, -1, "", {{"Global", "Imperihome", "Bonjour"}, imperihome})

la variable est enregistrée et imperihome se déclenche

GEA.add( {{"Global", "Mode_Maison", "Eveil"}}, -1, "", {{"Global", "Imperihome", "Intrusion detectée. Photo envoyée, la police arrive"}, imperihome})

la variable n'est pas enregistrée, une erreur apparait dans le log GEA

 

Serait il possible que le soucis soit lié aux valeurs des globales ? probleme avec caractères spéciaux ou espace à  la lecture ou l'écriture ?

 

Si tu as besoin que je teste quelque chose, n'hésites pas !

 

PS: j'avais prévu de me mettre à  Lua et pouvoir commencer à  aider à  debugger si besoin pendant les vacances mais...difficile de tout faire :(

 
 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

au fait, je suis en HC2 v4.030 maintenant et j'ai bien mis true GEA 5.02

Partager ce message


Lien à poster
Partager sur d’autres sites

moi dans mes tests, je n'avais pas réussi à  modifier le comportement en changeant le message push, mais il y a une autre personne qui a eu le cas quelques pages avant.

Ceci dit, les virgules apostrophes, guillemets et autres, c'est un peu chercher les problèmes  :rolleyes:

Partager ce message


Lien à poster
Partager sur d’autres sites

je viens de tester plusieurs valeurs de variable et voici les résultats:

 

commande utilisée:

GEA.add( {{"Global", "Mode_Maison", "Eveil"}}, -1, "", {{"Global", "Imperihome", "abcdefg"}})

fonctionne: "Bonjour", "Intrusion", "test test", "test test test"

ne fonctionne pas: "abcdefg"

 

Je ne comprends pas...

Partager ce message


Lien à poster
Partager sur d’autres sites

Etrange tout cela. Personnellement, tout les matins Imperihome me dit ceci :

 

"Nous sommes le " .. os.date("%b %B") .. "...il est " .. os.date("%I heures %m") .. "La température extérieur est de " .. fibaro:getValue(135, "ui.lblExtTemp.value") .. " degrés" .. "Nous sommes le " .. today .."..." .. "...Il pleut" .. "...Les chambres sont éteintes"   .. "Les rendé vous de la journée sont .." .... etc etc
 
Le message peux donc être très long et comporté des caractère bizarre.
 
Le seul traitement que je fais est de remplacer les espaces " " par un "+"  avant de l'envoyer au TTS
status, response = HC2:GET("/api/rest/speech/tts?text="..message:gsub(" ", "+"))

---

 

Je vais faire des test sur les variables globales mais sérieusement, je ne vois pas d'où pourrait venir le soucis.

Partager ce message


Lien à poster
Partager sur d’autres sites

précision, c'est la modification de la variable qui ne fonctionne pas ! (j'ai mis de coté le TTS avec Imperihome pour tester...)

c'est tellement bizzare que je n'arrete pas de regarder si je n'ai pas fait une faute de syntaxe...

Partager ce message


Lien à poster
Partager sur d’autres sites

Voici un script qui permet de tester les Variable Globales :

local globalVariable = "Test"

local phrases = {
 	"abcdefg", 
    "test test test",
    "test d'accèà ênt",
    "test caractères _",
    "test super long lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad ",
    "Nous sommes en phase de test",
}
-- Ne passe pas : 
-- "test caractères ?!)(&",
-- "test caractères %"


split = function(text, sep)
  local sep, fields = sep or ":", {}
  local pattern = string.format("([^%s]+)", sep)
  text:gsub(pattern, function(c) fields[#fields+1] = c end)
  return fields
end

trim = function(s)
  return (s:gsub("^%s*(.-)%s*$", "%1"))
end

match = function(s, p)
  if (type(s) == "nil") then
    return type(p) == "nil"
  end
  s = tostring(s)
  p = tostring(p)
  local words = split(p, "|")
  for i = 1, #words do
    if (string.match(s, trim(words[i]))) then 
      return true 
    end
  end	
  return false
end

for _,v in pairs(phrases) do
    print(v)
    fibaro:setGlobal(globalVariable, v)
    fibaro:sleep(1000)
    assert(fibaro:getGlobalValue(globalVariable) == v, fibaro:getGlobalValue(globalVariable) .. " n'est pas " .. v)
    assert(match(fibaro:getGlobalValue(globalVariable), v), fibaro:getGlobalValue(globalVariable) .. " ne match pas " .. v)
end
print("<span style=color:green>All tests passed successfully</span>")

J'ai repris les méthode match, split et trim directement de GEA pour être certain de leur fonctionnement.

Au vu de mes tests, les seules caractères qui ne passe pas sont les caractères utilisés pour les regex tel que "?.%" ce qui est normal car ce test est plus rigide encore que GEA.

 

Si vous voulez bien tester ce script avec vos phrases cela pourrait pointé sur un éventuel soucis.

 

Merci d'avance.

Partager ce message


Lien à poster
Partager sur d’autres sites

Voilà , test passé, mais je ne comprends pas ce que fait le print

J'ai misdes debug pour suivre et je n'ai aucune erreur

J'ai fait tourner ça en main loop de VD et dans une scène

DEBUG] 14:52:22: abcdefg
[DEBUG] 14:52:23: test test test
[DEBUG] 14:52:24: test d'accèà ênt
[DEBUG] 14:52:25: test caractères _
[DEBUG] 14:52:26: test super long lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad
[DEBUG] 14:52:27: Nous sommes en phase de test
[DEBUG] 14:52:27: All tests passed successfully

Mais ceci ne passait pas: 

Garage 7 min 97% -> 96%

 ... pourtant dans un GEA isolé, je reçoit bien le push

 

ceci non plus ne passe pas,  

 "Fermeture ratée ré-essai à  #time#",

ou   

"Fermeture ratée ré - essai à  #time#"

mais ceci passe:  

 "Fermeture ratée réessai à  #time#",

Ok je continue, je vais tester en ré-incluant dans le GEA principal

Partager ce message


Lien à poster
Partager sur d’autres sites

Essaie de mettre un - dans le scénario de test stp.

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu verra que le caractère "-" ne passe pas ... chose que je n'avais pas prévu :(

Partager ce message


Lien à poster
Partager sur d’autres sites

copier coller exacte de ton script et voici pour moi

 

  1. local phrases = {"abcdefg","test test test","test d'accèà ênt","test caractères _","test super long lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad lslddassadasdasdadasdasdasd asdadasdasdadadasdada ada sdad ","Nous sommes en phase de test",}
[DEBUG] 15:18:34: abcdefg
[ERROR] 15:18:35: line 52: attempt to concatenate a nil value

Partager ce message


Lien à poster
Partager sur d’autres sites

ok, rien de grave il suffit de le savoir

 

Je supprime mes tests, pas valables car j'avais un dead node sur la porte du garage :/

 

je referai des tests tantôt, je dois aller chez le médecin avec mon plus jeune.

Partager ce message


Lien à poster
Partager sur d’autres sites

test pas valabe, suprimé

Partager ce message


Lien à poster
Partager sur d’autres sites

Au lieu de te prendre la tête, voici une nouvelle version qui corrige les soucis tel que les - et les % dans une variable globale. 

Cela corrige aussi le problème de détection des RGB (allumé ou non)

Correction aussi des derniers éléments détectés.

 

En bref, une version qui tourne sans bug connu.

 

 

GEA._5_10.lua

Partager ce message


Lien à poster
Partager sur d’autres sites

je vous lis depuis tout à  l'heure et un grand merci à  vous et particulièrement à  STEVEN !  :60:

vous etes des as !

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est pas dit qu'on va pas trouvé d'autres bug .. vu la quantité de lignes je serais surpris que tout tourne comme un moulin.

 

Mais bon ... en cherchant ensemble on arrive à  avancer  ;)

 

@sebcbien 

J'espère que c'est juste pour un contrôle.

Partager ce message


Lien à poster
Partager sur d’autres sites

@Steven non rien de grave :-) mais que c'est long dans une salle d'attente :-(

Sent From my Vic20

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

 Merci à  Steven de remonter sur le pont. :60:

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité chris6783

Oui merci àSteven et a tous ceux (et celles) qui continuent àfaire progresser GEA. Perso je commence juste àcomprendre le principe du code... Il reste du chemin, mais la route est interressante.

Partager ce message


Lien à poster
Partager sur d’autres sites

Gea 4.10 mis à  jour sur github

 

De mon côté, j'essaye d'isoler le plus possible pourquoi deux scripts gea dans deux instances marchent mais si on les rassemblent ils ne tournent plus bien

 

Il y a un cas ou gea semble "saturer" sur le décodage des global et fait n'importe quoi

 

déjà  2h de recherches, je continue

Partager ce message


Lien à poster
Partager sur d’autres sites

×