Aller au contenu

Messages recommandés

Posté(e)

@Steven,

 

J'obtiens une erreur avec "batteries".

Cette ligne:

GEA.add({"Batteries", 90}, 24*60*60, "", {{"Repeat"}})

me retourne ceci:

[DEBUG] 22:10:03: [ 90 ] isActivate : checking : batteries Mouvement Salon [Repeat]
[DEBUG] 22:10:03: [ 90 ] isActivate : checking : batteries KeyFob [Repeat]
[DEBUG] 22:10:03: [ 90 ] isActivate : checking : batteries Minimote [Repeat]
[DEBUG] 22:10:03: [ 90 ] !!! ERROR !!! : vérification [Repeat]

 

J'ai testé ce bout de code provenant de GEA:

for i = 1, 350 do
  if (string.find(fibaro:get(i, 'isBatteryOperated'), "1" )) then
    local batt = fibaro:getValue(i, 'batteryLevel')
    fibaro:debug(fibaro:getName(i) .. ": " .. batt)
  end
end

et j'obtiens ceci:

[DEBUG] 22:03:13: Mouvement Salon: 91
[DEBUG] 22:03:13: KeyFob: 90
[DEBUG] 22:03:13: Minimote:
[DEBUG] 22:03:13: Porte Terrasse: 80
[DEBUG] 22:03:13: Porte Cuisine: 80
[DEBUG] 22:03:13: Sonnette:
[DEBUG] 22:03:13: Porte entrée: 100
[DEBUG] 22:03:13: Porte entrée: 80
[DEBUG] 22:03:13: Porte entrée: 80
[DEBUG] 22:03:13: Détecteur de Choc: 83
[DEBUG] 22:03:13: Détecteur d'incendie: 100
[DEBUG] 22:03:13: Inondation: 61
[DEBUG] 22:03:13: Porte entrée: 100
[DEBUG] 22:03:13: Porte entrée: 100
[DEBUG] 22:03:13: Porte entrée: 100
[DEBUG] 22:03:13: Porte entrée: 100
[DEBUG] 22:03:13: Porte entrée: 100
[DEBUG] 22:03:13: Détecteur de Choc: 100
[DEBUG] 22:03:13: 81: 100 

 

J'ai un module, une sonnette, avec batterie qui retourne aucune valeur pour sa batterie.

Je pense que la fonction "log" ne prévoit pas ce cas.

Posté(e)

@Shurka973

 

J'ai exactement la même erreur.

 

EDIT : dans mon cas il s'agit des minimotes, c'est un peut normal elles sont hors champ.

EDIT 2 : sans parler minimotes mais avec un capteur x à  pile et "Batteries" ça me met l'erreur.

Avec une ligne de commande "Battery" pas d'erreur, et msg reçu.

 

"Batteries" dépend peut être de la 3.50 beta ?

Posté(e)

Merci pour ce retour.

 

La correction est en cours sur la 3.50.

 

Le bug est que la Minimote nous retourne une donnée mais vide ("") au lieu de rien du tout (nil).

Ce n'était donc pas le log mais la ligne juste en dessous :(

 

if (batt and tonumber(batt) <= tonumber(id[2]) or tonumber(batt) == 255) then 

Posté(e)

Merci Steven.

 

J'ai donc modifié la ligne ainsi:

if (batt and batt ~= "" and tonumber(batt) <= tonumber(id[2]) or tonumber(batt) == 255) then

J'ai oublié de préciser que j'utilise le 3.50 beta.

Posté(e)

Pour "batteries", ça fonctionne avec la petite modification du dessus.


 


J'ai un souci avec la lampe du couloir que j'allume de plusieurs façons: le détecteur de choc (éteint dans 30s), l'ouverture de la porte (éteint dans 3mn) et l'interrupteur (éteint dans 10mn). L'interrupteur est rarement utilisé.


Le script se prend le pied dans l'extinction de la lampe: elle peut rester allumer ou s'éteindre dans 2s.


 


Ma reflexion:


Il faudrait peut-être ajouter une fonction "GEA.delete" pour que l'on puisse supprimer une tache.


Dans ce cas, la fonction "GEA.add" devrait retourner un id à  sa création ou bien elle prendrait comme paramètre un tag qui serait utilisé pour sa suppression.


 

 

Posté(e)

Ok, je vois ce que tu voudrais faire.

 

Supprimer un élément n'est pas réalisable. On ne peux pas supprimer un élément d'une liste que l'on est entrain de parcourir. On pourrait le supprimer après avoir parcouru la liste mais dans ce cas, il y a le risque que la tache que l'on voulait supprimer soit quand même exécutée une fois.

 

Donc le moyen le plus simple est de ne rien supprimer mais de désactivé. Exemple

 

local id1 = GEA.add(....)

local id2 = GEA.add(....)

local id3 = GEA.add(.... {"Suspend", {id1, id2}})

 

Le soucis est qu'il faut donc que id1 et id2 soit connu avant, donc on ne peux plus inversé l'ordre ... grrrr pas bon.

 

Autre possibilité :

 

GEA.suspend(id3, {id1, id2})

 

On respect l'ordre, on casse rien .. dès que l'id3 est exécuté on va dire au id1 et id2 qu'ils sont "FAIT" donc on ne les traitera plus.

 

Satisfaisant comme solution ?

Posté(e)

Je n'avait pas penser à  la possibilité de suspendre les règles au lieu de les supprimer.

 

Ca devrait être bon.

 

Pas trop compliqué à  implémenter ?

Posté(e)

Change la manuellement dans le panneau des variables

Surtout pas, si jamais il a le plugin de Krikoff sur l'update de la HC2 ou de la Freebox cela va les lui mettre en rade en passant des variables de type 192.168.192.0 àNaN...

Posté(e)

Bonjour,

 

Me revoila avec mes volets :15: , je veux virer les scènes qui commandent l'ouverture et fermeture des volets et les remplacer par des commandes dans le GEA :PB)

 

Steven tu avais écrit:

GEA.add({"Time", "Sunrise>07:30", "Sunset<21:00"}, 60, "", {{"Group", 1},{"Group", 2}})
GEA.add({"Group", 1}, 60, "Ouverture volet - #time#", {{"Open", ID_VOLET1, 50}})
GEA.add({"Group", 1}, 90, "Ouverture volet - #time#", {{"Open", ID_VOLET2, 50}})
GEA.add({"Group", 1}, 120, "Ouverture volet - #time#", {{"Open", ID_VOLET3, 50}})

Si je comprends bien:

{"Group", 1}

Est pour le le levé de soleil et

{"Group", 2}

Est pour le coucher de soleil, correct???

 

Voici le début de ce que j'ai rédigé:

-- Gestion ouverture volets
-- Définition variable
local absent = {"Global", "Absence", "0"}							-- si "Absence" = "0"
local travail = {"Global", "repos", "0"}						        -- si "repos" = "0"
local repos = {"Global", "repos", "1"}								-- si "repos" = "1"

-- Ouverture en semaine
local group20 = {absent, travail} 						-- absence = 0 / période = travail

-- Ouverture en week-end
local group21 = {absent, repos} 						-- absence = 0 / période = repos

-- Ouverture en repos
local group22 = {absent, repos} 						-- absence = 0 / période = repos

L'idée est de géré des ouvertures et fermetures différentes en semaine / week-end plus repos, j'ai dans l'idée de mettre une variable à  basculer à  la valeur repos pour les jours férier. Cela via un virtual device.

 

Mes questions:

- Comment j'intègre l'heure de levée et couché dans ce cas là ?

- La syntaxe {"Group", 1} est équivalente group1?

- Une meilleure idée pour gérer la période travail / weekend / repos? Car là  faudra que chaque vendredi et dimanche je change la période via le VD. Créer une commande pour changer la variable ces jours là  via le GEA?

 

Merci de votre aide :60:

Posté(e)

Salut Steven 

 

J'aurais une question à  poser sur la scène ci-jointe, peux tu éventuellement la corriger si possible car il me semble qu’auparavant  ils remontaient seul si je les baissés manuellement et ce n'est plus le cas maintenant, je ne comprend pas !!

D'avance merci  :) 

-- Si la luminosité est supérieur à  1000 Lux pendant 10 minutes entre Sunrise et 13h, on ferme les volets 19 SAM 2, 24 Volet cuisine, 17 SAM 1
GEA.add({"Value+", 41,1000}, 5*60, "Fermeture des volets Est Partiel #value# Lux #time#", {{"Time","Sunrise+30","13:00"},{"Close",19,35},{"Close",24,35},{"Close",17,35},{"DST"}})

local si_pas_ouvert = {"If", {{"Value-", 19, 95},{"Value-", 24, 95},{"Value-", 17,95},{"Repeat"}}} -- On monte les volets uniquement si UN n'est pas complètement remonté
-- Si la luminosité est inférieur à  800 Lux pendant 10 minutes entre Sunrise+30 et 18 h, on ouvre les volets 19 SAM 2, 24 Volet cuisine, 17 SAM 1
GEA.add({"Value-", 41,800}, 10*60, "Remontée des volets Est par manque de luminosité #value# Lux #time#", {{"Time","Sunrise+30","13:00"},{"Open",19,100},{"Open",24,100},{"Open",17,100},{"DST"},si_pas_ouvert})

post-495-0-33426100-1401638600_thumb.png

Posté(e)

 

Mes questions:

- Comment j'intègre l'heure de levée et couché dans ce cas là ?

- La syntaxe {"Group", 1} est équivalente group1?

- Une meilleure idée pour gérer la période travail / weekend / repos? Car là  faudra que chaque vendredi et dimanche je change la période via le VD. Créer une commande pour changer la variable ces jours là  via le GEA?

 

Merci de votre aide :60:

 

Voici une idée... déjà , on oublie les groupes,trop compliqué.Cela a été remplacé par le IF,,,, démonstration.

-- Gestion ouverture volets
-- Définition variable
local absent = {"Global", "Absence", "0"}	-- si "Absence" = "0"
local travail = {"Global", "repos", "0"}	-- si "repos" = "0"
local repos = {"Global", "repos", "1"}		-- si "repos" = "1"
 
-- Ouverture en semaine
GEA.add(..........., {{"If", {absent}}, {"Days", "Weekdays"}, {"Time", "Sunrise>07:30", "Sunset"}})

-- Ouverture en week-end
GEA.add(..........., {{"If", {absent}}, {"Days", "Weekend"}, {"Time", "Sunrise>08:30", "Sunset"}})
 
-- Ouverture en repos
GEA.add(..........., {{"If", {absent, repos}}})

Après tu peux aussi ajouter des dates pour les vacances. Par exemple : 

-- Ouverture pendant les vacances
GEA.add(..........., {{"If", {absent}}, {"Dates", "15/07/2014", "30/07/2014"}})
  • Upvote 1
Posté(e)

 

Salut Steven 

 

J'aurais une question à  poser sur la scène ci-jointe, peux tu éventuellement la corriger si possible car il me semble qu’auparavant  ils remontaient seul si je les baissés manuellement et ce n'est plus le cas maintenant, je ne comprend pas !!

D'avance merci  :) 

 

Salut Diuck, j'ai pas très bien compris la question, mais j'ai repéré une erreur dans ton script :

local si_pas_ouvert = {"If", {{"Value-", 19, 95},{"Value-", 24, 95},{"Value-", 17,95}}} -- On monte les volets uniquement si UN n'est pas complètement remonté
-- Si la luminosité est inférieur à  800 Lux pendant 10 minutes entre Sunrise+30 et 18 h, on ouvre les volets 19 SAM 2, 24 Volet cuisine, 17 SAM 1
GEA.add({"Value-", 41,800}, 10*60, "Remontée des volets Est par manque de luminosité #value# Lux #time#", {{"Time","Sunrise+30","13:00"},{"Open",19,100},{"Open",24,100},{"Open",17,100},{"DST"},si_pas_ouvert, {"Repeat"}})
 

Le Repeat était dans le IF et ce n'est pas sa place. C'était peut-être la cause du soucis.

 

Tiens moi au courant.

Posté(e)

Merci Steven pour ta réponse  :)

 

j'essaye de t'expliquer au mieux mon problème

 

Comme le détail le code ci dessus mes volets descendent lorsqu'il y a du soleil jusque la pas de problème, il ma fallu le remonter via l’interrupteur cet après midi mais normalement il dois redescendre pour reprendre ca place mais rien je viens de refaire le test en modifiant l'emplacement de "Repeat" mais toujours la même chose je ne comprend plus pourtant il me semble que cela fonctionné bien avant !!

-- Si la luminosité est supérieur à  1000 Lux pendant 10 minutes entre Sunrise et 13h, on ferme les volets 19 SAM 2, 24 Volet cuisine, 17 SAM 1
GEA.add({"Value+", 41,1000}, 5*60, "Fermeture des volets Est Partiel #value# Lux #time#", {{"Time","Sunrise+30","13:00"},{"Close",19,35},{"Close",24,35},{"Close",17,35},{"DST"}})

local si_pas_ouvert = {"If", {{"Value-", 19, 95},{"Value-", 24, 95},{"Value-", 17,95}}} -- On monte les volets uniquement si UN n'est pas complètement remonté 
-- Si la luminosité est inférieur à  800 Lux pendant 10 minutes entre Sunrise+30 et 18 h, on ouvre les volets 19 SAM 2, 24 Volet cuisine, 17 SAM 1
GEA.add({"Value-", 41,800}, 1*60, "Remontée des volets Est par manque de luminosité #value# Lux #time#", {{"Time","Sunrise+30","23:00"},{"Open",19,100},{"Open",24,100},{"Open",17,100},{"DST"},si_pas_ouvert,{"Repeat"}})

Je viens de faire un test qui fait remonté le volet il me faut modifier les valeurs       local si_pas_ouvert = {"If", {{"Value-", 19, 100},{"Value-", 24, 100},{"Value-", 17,100}}} mais je recois des notifications en permanence  :angry:

Posté(e) (modifié)

Ce n'est pas dans ta première ligne qu'l faut mettre le repeat? Celle qui gère la fermeture des volets.

 

Pour le "si_pas_ouvert" le test est si les trois volets sont entre 0 et 94% (GEA ne fait pas de OU dans les conditions)

 

Pour la fermeture, tes conditions [si luminosité > 1000 pendant 5mn ET Heure entre levé du soleil +30mn ET 13H00 ET durant heure d'été] , Si tu as ouvert un volet après 13H00 même si la luminosité > 1000, il est normal que ton volet ne se referme pas.

 

Oups, j'ai relus plus attentivement.

 

C'est le si_pas_ouvert , si tu as un volet ouvert (commandé manuellement) la condition n'est plus rempli donc les 2 autres volet ne s'ouvriront pas automatiquement.

 

Mais bon je crains de ne pas bien avoir compris la description du problème.

Modifié par HANSOLO
Posté(e) (modifié)

Non ne tiens pas compte des heures et des lux  je les avais ajusté en conséquence  ;)

 

 

Actuellement voila mes réglages le volets  19 est ouvert à  83 pourents il devrais remonter normalement mais rien !! 

GEA.add({"Value+", 41,1000}, 5*60, "Fermeture des volets Est Partiel #value# Lux #time#", {{"Time","Sunrise+30","13:00"},{"Close",19,35},{"Close",24,35},{"Close",17,35},{"DST"}})

local si_pas_ouvert = {"If", {{"Value-", 19,98},{"Value-", 24, 98},{"Value-", 17,98}}} -- On monte les volets uniquement si UN n'est pas complètement remonté 
-- Si la luminosité est inférieur à  800 Lux pendant 10 minutes entre Sunrise+30 et 18 h, on ouvre les volets 19 SAM 2, 24 Volet cuisine, 17 SAM 1
GEA.add({"Value-", 41,800}, 1*60, "Remontée des volets Est par manque de luminosité #value# Lux #time#", {{"Time","Sunrise+30","01:00"},{"Open",19,100},{"Open",24,100},{"Open",17,100},{"DST"},si_pas_ouvert,{"Repeat"}})

Ok merci  :)

Modifié par Diuck
Posté(e) (modifié)

Ok,ok,si j'ai bien compris, tes volets se sont fermés car la luminosité était supérieur à  1000 Lux. Ce qui est normal. Ensuite, tu as ouvert manuellement un ou plusieurs volets et tu es surpris qu'ils ne se referme pas tout seul vu que la luminosité est toujours supérieur à  1000.

 

Voici donc le fonctionnement de GEA pour que tu puisses mieux cerné se genre de piège :

 

- Un fois que la condition est atteinte pendant la durée précisée, les actions sont effectuées et la commande est suspendue

- Un fois que la condition ne sera plus atteinte, le commande sera à  nouveau valable

- En revanche, si le paramètres "Repeat" est précisée, la commande ne sera jamais suspendue

 

Donc dans ton cas, si à  la ligne 2, tu rajoutes {"Repeat"}. toutes les 5 minutes GEA descendra tes volets si la luminosité est supérieur à  1000Lux et que la tranche horaire est respectée. Donc si tu l'ouvres manuellement, il va le redescendre MAIS toutes les 5 minutes tu vas te prendre un push... beurkk.

Donc il faudrait le descendre uniquement s'ils sont ouvert.

 

Allez on attaque: 


local si_ouvert = {"If", {{"Value+", 19,65},{"Value+", 24, 65},{"Value+", 17,65}}}

GEA.add({"Value+", 41,1000}, 5*60, "Fermeture des volets Est Partiel #value# Lux #time#", {{"Time","Sunrise+30","13:00"},{"Close",19,35},{"Close",24,35},{"Close",17,35},{"DST"}, {"Repeat"}, si_ouvert})
 

Cela donne :

Si la luminosité est > 1000 Lux et que le soleil est levé de puis plus de 30mn, jusqu'à  13h00 en été. On ferme les volets de 35% toutes (repeat) les 5 minutes MAIS uniquement s'ils sont ouvert à  plus de 65%.

 

Cela devrait être pas trop mail.

 

Edit : si tu as quand même le push toutes les 5 minutes ... augmente de 65% à  70% pour essayer.

Modifié par Steven
Posté(e) (modifié)

Merci Steven

Pour te donner l'exemple présent  toutes les 1 MN je reçois un Push alors que les volets sont ouvert si j'en baisse 1 il va remonter sans problème  {{"Value-", 19,100},{"Value-", 24, 100},{"Value-", 17,100}}}  valeur a 100 MAIS LE PUSH !!

 

si toutefois je change le valeur  {{"Value-", 19,98},{"Value-", 24, 98},{"Value-", 17,98}}}  à  98  plus rien ne se passe plus de push ni de remonté de volet

GEA.add({"Value+", 41,1000}, 5*60, "Fermeture des volets Est Partiel #value# Lux #time#", {{"Time","Sunrise+30","13:00"},{"Close",19,35},{"Close",24,35},{"Close",17,35},{"DST"}})

local si_pas_ouvert = {"If", {{"Value-", 19,100},{"Value-", 24, 100},{"Value-", 17, 100}}} -- On monte les volets uniquement si UN n'est pas complètement remonté 
-- Si la luminosité est inférieur à  800 Lux pendant 10 minutes entre Sunrise+30 et 18 h, on ouvre les volets 19 SAM 2, 24 Volet cuisine, 17 SAM 1
GEA.add({"Value-", 41,800}, 1*60,"Remontée des volets Est par manque de luminosité #value# Lux #time#", {{"Time","Sunrise+30","01:00"},{"Open",19,100},{"Open",24,100},{"Open",17,100},{"DST"},si_pas_ouvert,{"Repeat"}})

Je vais tester ton code  ;)

Modifié par Diuck
Posté(e)

Salut Steven je reviens encore avec mes volets la M---E , je viens de faire un constat et j'ai besoin de tes lumières, je t'explique

 

Alors pour le moment ils sont montés car manque de luminosité jusque la tout est normale si je baisse un volet via l'interrupteur je pense oui je dis bien je pense qu'il devrait remonter ? mais non :(  donc j'ai effectué un test à  toi de me dire si cela a du sens !  actuellement le temps est 1*60 mais la il ne se passe rien au delà  des 1 mn par contre si je modifie à  0.60 et que je baisse un volet à  ce moment la il remonte car manque de luminosité, c'est cela que je voudrais mettre en place avec un temps plus large mais bon si pas possible je resterais en l'état et j’arrêterais de te prendre la tête avec ça ;)

 

 

dans la config ci-dessous il ne remontent pas si j'en baisse un via l’interrupteur

-- Si la luminosité est supérieur à  200 Lux pendant 10 minutes entre 13h et Sunset, on baisse les volets 20 salon, 25 AR cuisine, 48 Chambre parents, 49 Chambre Lucas  
GEA.add({"Value+", 44,220}, 5*60, "Fermeture des volets Ouest Partiel #value# Lux #time#", {{"Time", "13:00", "Sunset"},{"Close",20,55},{"Close",25,60},{"Close",48,60},{"Close",49,60},{"DST"}})

local si_pas_ouvert = {"If", {{"Value-", 20, 98},{"Value-", 25, 95},{"Value-",48, 99},{"Value-",49, 98}}} -- On monte les volets uniquement si UN n'est pas complètement remonté 100/100
-- Si la luminosité est inférieur à  60 Lux pendant 10 minutes entre 13h et Sunset, on remonte les volets 20 salon, 25 AR cuisine, 48 Chambre parents, 49 Chambre Lucas
GEA.add({"Value-", 44,50},1*60,"Remontée des volets Ouest par manque de luminosité #value# Lux #time#", {{"Time", "13:00", "Sunset"},{"Open",20,100},{"Open",25,100},{"Open",48,100},{"Open",49,100},{"DST"},{"Repeat"},si_pas_ouvert})
 

Dans celle ci ils remontent il suffit d'en baisser un seul et il remonte

-- Si la luminosité est supérieur à  200 Lux pendant 10 minutes entre 13h et Sunset, on baisse les volets 20 salon, 25 AR cuisine, 48 Chambre parents, 49 Chambre Lucas  
GEA.add({"Value+", 44,220}, 5*60, "Fermeture des volets Ouest Partiel #value# Lux #time#", {{"Time", "13:00", "Sunset"},{"Close",20,55},{"Close",25,60},{"Close",48,60},{"Close",49,60},{"DST"}})

local si_pas_ouvert = {"If", {{"Value-", 20, 98},{"Value-", 25, 95},{"Value-",48, 99},{"Value-",49, 98}}} -- On monte les volets uniquement si UN n'est pas complètement remonté 100/100
-- Si la luminosité est inférieur à  60 Lux pendant 10 minutes entre 13h et Sunset, on remonte les volets 20 salon, 25 AR cuisine, 48 Chambre parents, 49 Chambre Lucas
GEA.add({"Value-", 44,50},0*60,"Remontée des volets Ouest par manque de luminosité #value# Lux #time#", {{"Time", "13:00", "Sunset"},{"Open",20,100},{"Open",25,100},{"Open",48,100},{"Open",49,100},{"DST"},{"Repeat"},si_pas_ouvert})
  

Si tu as une suggestion, ou j'ai peut être fait n'importe quoi à  toi de me dire ce que tu en pense

Merci d'avance Steven et désolé de t'-------er avec ca  ;)

Posté(e)

Pour moi ta condition si_pas_ouvert fait que tes 4 volet doivent êtres fermés en même temps pour qu'ils s'ouvrent.

 

Comme déjà  écrit c'est du ET pas du OU.

 

Après le fait de mettre 0x60 qui ouvre ton volet est peut-être un bug du GEA.

 

Si tu veux du OU il faut faire une ligne par volet, en éclatant ta condition si_pas_ouvert

Posté(e)

Un grand merci Hansolo  :)

 

Je crois que tu as raison ceci explique cela je vais essayer ce que tu me conseil  :( créer une ligne par volet je verrais bien.

 

Je pense à  un truc si une ligne par volet veut dire 8 volets donc 8 lignes alors 8 notifications push à  chaque ouverture et fermeture  :angry: c'est même pas pensable 

×
×
  • Créer...