Aller au contenu

Mes Premières Lignes En Lua


Berale64

Messages recommandés

J'ai essayé de faire un petit truc pour commencer en LUA.

J'ai droit à  un gros message avec "ERROR 403" avant même le premier message de debug.

De plus ma scène devient invisible et je dois rebooter la HC2.

 

J'ai faux ou ???

--[[
%% autostart
%% properties
%% globals
AtHome
–]]

local AllDays ;
local Command ;
local SalonAtHomeON = "19:30" ;
local SalonAtHomeOFF = "21:00" ;

local SalonGoneON = {"17:30" ,"01:30" , "05:20"} ;
local SalonGoneOFF = {"22:30" ,"01:45" , "07:20"} ;

local sourceTrigger = fibaro:getSourceTrigger();
fibaro:debug(sourceTrigger["type"]);
if (sourceTrigger["type"] == "autostart") then

while true do

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
Lien vers le commentaire
Partager sur d’autres sites

Invité chris6783

tu as un 'while true do'

 

premier probleme : il n'y a pas de end pour delimiter le code de la boucle

ensuite dans la boucle tu fais  juste des appels systeme très courts et la boucle va consommer toutes les resources de la HC

 

essaye d'enlever la boucle 'while true' et de te restreindre à  du code linéaire pour débuter, sans boucles ni fonctions.... apres tu pourra attaquer la structure du code avec des boucles et des fonctions. 

Lien vers le commentaire
Partager sur d’autres sites

@Berale24, oui je suis d'accord ... Tu devrais envoyer une demande au support c'est un problème qui est connu ;) mais avant tu devrais aussi vérifier si tu n'as pas un détecteur genre FGK ou FGMS etc en violation et armé car cela provoque justement une erreur 403 en cas d’édition d'une scène.

Lien vers le commentaire
Partager sur d’autres sites

Voilà , c'est bon, ça marche. Ce n'est qu'un début qui ne demande qu'à  évoluer.

 

Cependant, je ne comprends pas pourquoi quand j'ouvre la fenêtre la scène démarre bien en mode "autostart" mais si je fais "Démarrer" je suis en mode Other.

 

Pourquoi dans la fenêtre "Général" la case "Lancer au démarrage" n'apparait plus" ?

--[[
%% autostart
%% properties

%% globals
AtHome
--]]

local AllDays;
local Command;
local SalonAtHomeON = "19:30";
local SalonAtHomeOFF = "21:00";

local SalonGoneON = {"17:30","01:30","05:20"};
local SalonGoneOFF = {"22:30","01:45","07:20"};

local sourceTrigger = fibaro:getSourceTrigger();
fibaro:debug(sourceTrigger["type"]);
if (sourceTrigger["type"] == "autostart") then
  
  while true do
    local currentDate = os.date("*t");
    fibaro:debug("loop");
    local startSource = fibaro:getSourceTrigger();
    
    local TriggerTime = string.format("%02d",currentDate.hour)..":"..string.format("%02d",currentDate.min);
    
    if (currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) then
      AllDays = 1
      else
      AllDays = 0
      end
    
    Command = "";
    
    if (fibaro:getGlobalValue("AtHome") == "YES" and AllDays == 1) then
      if (TriggerTime == SalonAtHomeON) then
        Command = "turnOn";
        elseif (TriggerTime == SalonAtHomeOFF) then
        Command = "turnOff";
        end
      end
    
    if (fibaro:getGlobalValue("AtHome") == "NO" and AllDays == 1) then
      for i = 1,#SalonGoneON do
        if (TriggerTime == SalonGoneON[i]) then
          Command = "turnOn";
        elseif (TriggerTime == SalonGoneOFF[i]) then
        Command = "turnOff";
        end
      end
      end
    
    if (Command ~= "") then
      fibaro:call(46,Command);
      fibaro:call(47,Command);
      fibaro:call(48,Command);
      end
    
    fibaro:sleep(60*1000);
    
    end
  end
  
    
    
    
Lien vers le commentaire
Partager sur d’autres sites

C'est logique car "other" correspond justement àune demande du bouton "démarrer" sur le HC2 ;) . Si tu souhaites tester avec le bouton tu devrais l'ajouter dans ta condition

if (sourceTrigger["type"] == "autostart" or sourceTrigger["type"] == "other") then

;)

Lien vers le commentaire
Partager sur d’autres sites

Cette scène sert dans deux cas. Si je suis chez moi (variable globale AtHome = YES) les lumières du salon s'allument à  19h30 pour s'éteindre à  21h00.

Si je ne suis pas chez moi (variable AtHome =NO) il y a trois séquences d'allumage pour de la simulation de présence.

C'est en fait la transcription de deux scènes en mode bloc en une seule pour se faire la main.

 

L'idée étant de perfectionner ensuite la chose.

 

Le langage LUA est en fait assez simple, la vraie difficulté est le manque de doc sur les fonctions et surtout leurs arguments.

Lien vers le commentaire
Partager sur d’autres sites

ah ok, je pose la question pour trouver le moyen WAF+++ de gerer un MODE MAISON, type present, absent, vacances..alors je me renseigne.

J'ai essaye la presence "smartphone" maos avec les ibidules c'est pas tres tres reactif..donc pas tres WAF

Que pensez-vous des interrupteurs ? ou si vous avez une autre idee je suis preneur...

SI je suis HS, merci aux modos de deplacer, j'ai juste profiter pour explqiuer @Berale24 ma question,rien d'intrusif.. ;-)

Lien vers le commentaire
Partager sur d’autres sites

La gestion du "MODE MAISON" nécessite une intervention manuelle.

J'ai choisi le virtual device, certain utilise le "Google Calendar" .

Je ne crois pas trop au smartphone qui ne peut gérer l'épouse, les enfants, la belle mère !!! :)

 

J'ai le sentiment que le fameux "Fibaro Button" peut être une solution intéressante.

 

Placé prêt de la porte, une petite tape en partant, et voilà  je suis absent, une double tape je suis en vacances.

En liaison avec un virtual device qui donne un visuel de l'état du système, mais aussi une possibilité de changer à  distance si besoin.

Lien vers le commentaire
Partager sur d’autres sites

Je pense qu'il n'y a pas de solution universelle pour détecter la présence de telle ou telle personne, à  moins d'avoir tous une puce implantée sous la peau (patience, ça viendra bientôt.... :/ )

 

Du coup, il faut agréger un maximum d'infos, avec un algorithme pour mélanger tout ça (Biboun avait commencer à  travailler sur le sujet, il avait créé un topic dédié sur le forum) :

- détection des mobiles (WiFi et/ou Bluetooth)

- motion sensor

- Netatmo : capteurs de CO2 et dB

- activité des dimmers

- mise en marche/arrêt de l'alarme

- etc...

 

La maison intelligente qu'on nous promet, sera celle capable de prendre en compte tous les paramètres.

 

Dis autrement : on n'est pas prêt de s'ennuyer, et ce forum a encore de belles années devant lui  :77:

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

@Berale24 et Lazer,

 

Effectivement, rien de très precis pour la gestion d'un mode maison..

 

JE crois que je vais l'orienter vers un interrupteur qui modifierait une variable via un virtual device, qu'en pensez vous ?

 

Oui "le fibaro button" pourrait etre une bonne solution, mais pas sur qu'il soit WAF en terme d'esthetique, ca ressemble un peu à  un bouton d'urgences hihi

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...