Aller au contenu

Messages recommandés

Posté(e)

Bonsoir,

J'ai quelques petits soucis avec mon code attaché.

 

Le code fonctionne correctement c'est à  dire à  chaque détection, la lumière s'allume pour le temps spécifié.

 

Mais le problème set que vu que je 'aimerais pas allumer la lumière la journée, j'ai spécifié avec la fonction os.date l'intervalle horaire.

Dès lors, le code ne fonctionne plus;

j'ai entre autre une erreur du style: " [ERROR] 20:59:20: line 12: attempt to compare number with nil"

 

Quelqu'un pourrait m'aider?

Merci

 

 

:

 

 

post-1368-0-63043100-1416687559_thumb.png

Posté(e)

Je ne peux pas t'aider sur ton code mais le mieux pour tous est d'utiliser les balises pour le code LUA.

Sinon voici la scène que j'utilise en mode bloc avec une variable jour/nuit.

 

Scene Allumer

Posté(e)

Pourquoi passer par du LUA ou un scénario : Tu peux associer directement le FGMS au FGS, et cela fonctionne parfaitement. Et après dans les paramètres du FGMS tu lui dis de ne s'allumer que lorsqu'il fait moins qu'un seuil de luminosité.

Exemple de paramètre àentrer (Que j'ai chez moi sur 3 FGMS) :

name;value;description
UIMessageSendTime;0;
ClassConfigure;0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
ClassGeneric;49;
ClassSupport;48,49,86,112,114,122,128,132,133,134,142,143,145,156,239;
ClassVersion;1,1,1,1,1,1,1,1,1,1,1,1,1,1,1;
DeviceControlType;0;
DeviceIcon;51;
Disabled;0;
EmailNotificationID;0;
EmailNotificationType;0;
EndPoint;0;
IsBatteryOperated;1;
Log; ;
LogTemp;;
NeedConfigure;5;
NodeID;28;
ParametersTemplate;270;
ParentID;1;
PollingRetryError;0;
PollingTime;;
PollingTimeNext;;
PollingTimeSec;0;
ProductInfo;1,15,8,0,16,1,2,4;
PushNotificationID;0;
PushNotificationType;0;
RequestNodeNeighborState;0;
RequestNodeNeighborStateTimeStemp;0;
SensorSupport;;
ShowChildren;0;
SmsNotificationID;0;
SmsNotificationType;0;
SortOrder;999;
Type;;
Unit;kPa;
UnitSensor;;
UserDescription;;
Value;0;
ValueSensor;;
ZwaveCompany;Fibar Group;
ZwaveInfo;3,3,67;
ZwaveVersion;2,4;
Parameters;[
  {
    "id": 1,
    "size": 1,
    "value": 15,
    "lastSetValue": 15
  },
  {
    "id": 2,
    "size": 1,
    "value": 8,
    "lastSetValue": 8
  },
  {
    "id": 3,
    "size": 1,
    "value": 0,
    "lastSetValue": 0
  },
  {
    "id": 4,
    "size": 1,
    "value": 2,
    "lastSetValue": 2
  },
  {
    "id": 6,
    "size": 2,
    "value": 8,
    "lastSetValue": 8
  },
  {
    "id": 8,
    "size": 1,
    "value": 2,
    "lastSetValue": 2
  },
  {
    "id": 9,
    "size": 2,
    "value": 100,
    "lastSetValue": 100
  },
  {
    "id": 12,
    "size": 1,
    "value": 0,
    "lastSetValue": 0
  },
  {
    "id": 14,
    "size": 1,
    "value": 255,
    "lastSetValue": 255
  },
  {
    "id": 16,
    "size": 1,
    "value": 0,
    "lastSetValue": 0
  },
  {
    "id": 20,
    "size": 1,
    "value": 30,
    "lastSetValue": 30
  },
  {
    "id": 22,
    "size": 2,
    "value": 30,
    "lastSetValue": 30
  },
  {
    "id": 24,
    "size": 1,
    "value": 0,
    "lastSetValue": 0
  },
  {
    "id": 26,
    "size": 1,
    "value": 0,
    "lastSetValue": 0
  },
  {
    "id": 40,
    "size": 2,
    "value": 0,
    "lastSetValue": 0
  },
  {
    "id": 42,
    "size": 2,
    "value": 300,
    "lastSetValue": 300
  },
  {
    "id": 60,
    "size": 1,
    "value": 0,
    "lastSetValue": 0
  },
  {
    "id": 62,
    "size": 2,
    "value": 600,
    "lastSetValue": 600
  },
  {
    "id": 64,
    "size": 2,
    "value": 600,
    "lastSetValue": 600
  },
  {
    "id": 66,
    "size": 2,
    "value": 65531,
    "lastSetValue": 65531
  },
  {
    "id": 80,
    "size": 1,
    "value": 6,
    "lastSetValue": 6
  },
  {
    "id": 81,
    "size": 1,
    "value": 10,
    "lastSetValue": 10
  },
  {
    "id": 82,
    "size": 2,
    "value": 0,
    "lastSetValue": 0
  },
  {
    "id": 83,
    "size": 2,
    "value": 1000,
    "lastSetValue": 1000
  },
  {
    "id": 86,
    "size": 1,
    "value": 18,
    "lastSetValue": 18
  },
  {
    "id": 87,
    "size": 1,
    "value": 28,
    "lastSetValue": 28
  },
  {
    "id": 89,
    "size": 1,
    "value": 1,
    "lastSetValue": 1
  }
];
AssociationSet;[
  {
    "groupID": 1,
    "devices": [
      1,
      2
    ]
  },
  {
    "groupID": 2,
    "devices": [
      1
    ]
  },
  {
    "groupID": 3,
    "devices": [
      1
    ]
  }
];
AssociationView;[
  {
    "groupID": 1,
    "devices": [
      1,
      2
    ]
  },
  {
    "groupID": 2,
    "devices": [
      1
    ]
  },
  {
    "groupID": 3,
    "devices": [
      1
    ]
  }
];
Dead;0;

Posté(e)

Merci @fab971; Tu pense qu'il n'y a rien àfaire en LUA ?

Oui, mais il faut attendre que les spécialistes du LUA se lancent.

Fait une recherche sur le site, tu auras des exemples.

Posté(e)

Merci@ Nico, mais tu ne trouves pas que c'est plus élégant en juste quelques lignes en LUA?

C'est formidable ton association mais un peu trop lourd non?

 

Mais je te remercie  pour cette idée.

Posté(e)

Je ne suis pas spécialiste LUA, mais dans ton code, ligne 12, tu mélanges un peu tout.

Je ne peux pas copier coller la ligne car tu as mis un screenshot, mais làtu compares un coup une chaine, un coup un nombre, un coup tu appelles la variable direct, et l'autre comme si c'était un tableau[]

J'ai du mal àcomprendre ce que tu voulais tester sur cette ligne...

Posté(e)

if (sonde_mouvement == '1' and sonde_mouvement['hour'] >= 18 and sonde_mouvement['hour'] <= 07then

 

Sur cette ligne j'aimerais juste dire que si les condition du variable "sonde_mouvement" sont réunis c'est à  dire si la variable est active et l'heure est comprise entre 18:00 et 07:00 alors il faut exécuter la routine;

 

@Lazer, Tu penses que ce n'est pas juste comme façon de déclarer?

Posté(e)

j'avais pas vu non plus, au dessus, tu déclares ta variable sonde_mouvement puis tu l'écrase immédiatement ligne suivante par autre chose.

Poste tout ton code, j'essaierai de bricoler quelque chose avec

Posté(e)

OK, voici le code:

 

-------------------

--[[
%% properties
7 value
%% globals
--]]

--local sonde_mouvement     

local sonde_mouvement = os.date("*t");
sonde_mouvement = fibaro:getValue(7, 'value')
    
    if (sonde_mouvement == '1' and sonde_mouvement['hour'] >= 18 and sonde_mouvement['hour'] <= 07) then
      --if (sonde_mouvement == '1') then
      fibaro:debug("statut lumiere rez= ON");    
    fibaro:call(39, 'turnOn');    
    fibaro:sleep(500000);     
      fibaro:debug("statut lumiere rez= OFF");    
    fibaro:call(39, 'turnOff');
    
    end

-------------------

Posté(e)

Essaye ça, non testé :

--[[
%% properties
7 value
%% globals
--]]

--local sonde_mouvement     

local currentDate = os.date("*t")
local sonde_mouvement = fibaro:getValue(7, 'value')

if ( sonde_mouvement and (currentDate.hour >= 18 or currentDate.hour <= 7) ) then
	fibaro:debug("statut lumiere rez= ON");    
	fibaro:call(39, 'turnOn');    
	fibaro:sleep(500000);     
	fibaro:debug("statut lumiere rez= OFF");    
	fibaro:call(39, 'turnOff');
end

Par contre, le gros sleep() c'est crade.

Ce que tu veux faire se fait simplement avec GEA, sans coder de LUA, tu devrais faire un tour sur les topics GEA et Support GEA.

  • Upvote 1
Posté(e)

Yes!! ça fonctionne du premier coup.

 

Normalement après 7:00 demain, la détection ne devrait plus être en marche jusqu'à  18:00.

Merci beaucoup @Lazer.

 

Je veis suivre ton conseil et voir un peu à  quoi ça ressemble ce GEA.

Posté(e)

Mode GEA ON :)
 

--[[
%% properties
7 value
%% globals
--]]

-- Eteint la lampe après 5 minutes
local autoOff = GEA.add(39, 5*60, "", {{"turnOff"}})
-- Allume la lampe et redémarre le timer des 5 minutes
GEA.add(7, -1, "", {{"turnOn", 39}, {"RestartTask", autoOff}, {"Time", "18:00", "07:00"} })
Posté(e)

930546TShirt.png

Photo prise par un traître qui mérite le bà»cher. 

 

J'avais préparer le T-Shirt pour faire concurrence au badge miniature de fredo lors d'une rencontre entre personne de bonne compagnie ... bien évidement à  l'exception du traître qui a pris la photo.

  • Upvote 3
Posté(e)

@ OK Steven,

Ce soir je vais débuter par tester ton code pour les lumières pour l'initiation. J'aimerais comprendre vraiment le fonctionnement de GEA.

J'ai bien compris que ce n'est pas un module virtuel qu'il faut importer et juste adapter les identifiants et l'adresse IP plus les id des modules.

ça a l'air beaucoup plus complexe et demande plus de logique de programmation.

 

Donc si je comprends bien les choses:

 

J'ai crée le GEA_tasks, j'ai crée un scenario" vide" dans scène que j'avais appelé GEA. J'ai inséré ton script GEA.lua dans ma scène GEA.

basé sur ton code, tu me conseilles de tout supprimer et de réadapter tout ce dont j'ai besoin?

Par exemple, comme je ne vais pas faire de scénario concernant l'ouverture d'un garage ou frigo,....je peux enlever cette partie.

Mes questions peuvent paraître bêtes, mais le but c'est de commencer sur une bonne base.

 

Merci d'avance de ton précieux support.

  • 1 an après...
Posté(e)

 

Mode GEA ON :)

 

--[[
%% properties
7 value
%% globals
--]]

-- Eteint la lampe après 5 minutes
local autoOff = GEA.add(39, 5*60, "", {{"turnOff"}})
-- Allume la lampe et redémarre le timer des 5 minutes
GEA.add(7, -1, "", {{"turnOn", 39}, {"RestartTask", autoOff}, {"Time", "18:00", "07:00"} })

 

je déterre ce topic pour poser une petite question: dans l'exemple GEA donné qui consiste à  créer un allumage automatique sur détection avec extinction automatique au bout de 5 minutes, je comprends que s'il y a détection pendant le premier intervalle de 5 minutes, GEA va quand même éteindre la lampe au bout de 5 minutes. 

Y a t'il un moyen avec GEA de repousser le timer de 5 minutes en 5 minutes en cas de détection ?

×
×
  • Créer...