DjBen65 Posté(e) le 26 décembre 2015 Signaler Posté(e) le 26 décembre 2015 Bonjour à vous et Joyeux Noà«l J'aimerais apprendre les bases du LUA, mais je n'ai pas trouvé de tutos simplifié… Auriez-vous des liens? En vous remerciant. Bonne journée
Peter Posté(e) le 26 décembre 2015 Signaler Posté(e) le 26 décembre 2015 Hello As tu regarder dans les tuto car tu as ceci http://www.domotique-fibaro.fr/index.php/topic/185-lua-le%C3%A7on-1-%E2%80%93-allumer%C3%A9teindre-%E2%80%93-module-binaire/ Leçon n°1 ne me demande pas de t'aider en lua car en 1 ans j'ai pas eu le temps d'en apprendre beaucoup j'essaie et quand je suis bloquer je demande au pro qu'il y a sur ce tres bon forum 2
DjBen65 Posté(e) le 26 décembre 2015 Auteur Signaler Posté(e) le 26 décembre 2015 Bonjour, Merci, si je l'avais regardé mais, il manque les actions disponibles (pas forcément toutes, mais les plus courantes) et la structure des lignes de codes. Merci pour le leçon 1 Bonne journée!
DjBen65 Posté(e) le 26 décembre 2015 Auteur Signaler Posté(e) le 26 décembre 2015 Je pense avoir trouvé : http://tutoriels.domotique-store.fr/content/76/72/fr/programmation-en-lua-sur-home-center-2.html
Berale64 Posté(e) le 26 décembre 2015 Signaler Posté(e) le 26 décembre 2015 Une méthode simple consiste àfaire une scène en mode block puis de la convertir en lua. Tu apprendras ainsi beaucoup et vite.
DjBen65 Posté(e) le 26 décembre 2015 Auteur Signaler Posté(e) le 26 décembre 2015 C'est vrai que c'est pas mal! Mais bon sans les bases c'est un peu chaud encore… J'ai essayé de "faire" cette scène : --[[ %% autostart %% properties %% globals --]] local sourceTrigger = fibaro:getSourceTrigger(); function tempFunc() local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); if ( ( ((currentDate.wday == 1 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "09:59") ) ) then fibaro:call(10, "turnOn"); end setTimeout(tempFunc, 60*1000) end if (sourceTrigger["type"] == "autostart") then tempFunc() else local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); if ( startSource["type"] == "other" ) then fibaro:call(10, "turnOn"); end end local sourceTrigger = fibaro:getSourceTrigger(); function tempFunc() local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); 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) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "19:00") ) ) then fibaro:call(10, "turnOff"); end setTimeout(tempFunc, 60*1000) end if (sourceTrigger["type"] == "autostart") then tempFunc() else local currentDate = os.date("*t"); local startSource = fibaro:getSourceTrigger(); if ( startSource["type"] == "other" ) then fibaro:call(10, "turnOff"); end end Mais cela n'a pas vraiment fonctionné, je pense qu'il y a un soucis au niveau des triggers… Le principe s'est d'allumer un WallPlug à 9h59 du mardi au samedi et de l'éteindre quoi qu'il arrive à 19h. Le tout dans une seule scène.
Peter Posté(e) le 26 décembre 2015 Signaler Posté(e) le 26 décembre 2015 Hello Berale24 a raison et je n'y est pas penser pour la convention bloc>lua tu peut apprendre beaucoup comme ca Si tu àla Scene du dessus en mode bloc poste la je pourrais t'aider Sinon si tu débute vois aussi avec Gea c'est un peut plus facile àappréendé que le lua
DjBen65 Posté(e) le 26 décembre 2015 Auteur Signaler Posté(e) le 26 décembre 2015 Le GEA? Qu'est-ce? En tout cas voici les 2 scènes en mode bloc :
Peter Posté(e) le 26 décembre 2015 Signaler Posté(e) le 26 décembre 2015 Tu peut ajouter àla scene de demarrage la condition Et dans les parenthèses + ton wallplug avec extinction et dans la case rouge tu rajoute 32400 qui sont les heures transformer en seconde et normalement cela doit fonctionner Désoler pour ma première reponse je ne voulais pas te froissé ( leçon 1) Je sais que c'est pas évident de commencer en plus y as pas de docs Dit moi si c'est ok la je suis sur iPad donct pas facile de te faire une scene mais plus tard je pourrais Pour Gea (gestionnaire d'événements automatique) Regarde sur le forum recherche GEA perso je trouve ça plus simple que le lua et c'est aussi puissant Si t'as un souci n'hésite pas
DjBen65 Posté(e) le 26 décembre 2015 Auteur Signaler Posté(e) le 26 décembre 2015 D'accord, je vais tester ça Par contre, il faut que le WallPlug soit allumé un 1ere fois pour que le décompte s'enclenche… Parfois je dois ouvrir (très rarement) le dimanche ou/et le lundi (pour les fêtes par exemple) et donc la je l'allume manuellement. Dans le cas de cette scène l'extinction ne se fera que manuellement, non? Non pas de froissage Ok je vais essayer de regarder si j'ai le temps entre les clients. Merci
Peter Posté(e) le 26 décembre 2015 Signaler Posté(e) le 26 décembre 2015 Non regarde je te met une copie de scene pour le sapin il s'allume et s'éteint tout seul tout les jours entre 18h et 21h30 Puis s'éteint Mais il faut pas oublier d'activer scene active et lancement au demarrage
Berale64 Posté(e) le 26 décembre 2015 Signaler Posté(e) le 26 décembre 2015 Il me semble que tu te lances dans des trucs très compliqués avec des settimeout et des fonctions etc ... voilà un truc tout simple qui allume selon tes conditions et qui éteint sans condition, donc même si tu allumes manuellement. --[[ %% autostart %% properties %% globals --]] While true do local currentDate = os.date("*t"); local triggerTime = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min); if ((currentDate.wday == 1 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and triggerTime == "09:59")then fibaro:call(10, "turnOn"); end if (triggerTime == "19:00") then fibaro:call(10, "turnOff); end fibaro:sleep(60*1000); end
Peter Posté(e) le 26 décembre 2015 Signaler Posté(e) le 26 décembre 2015 @DjBen65 Tu vois vraiment des pros Merci Berale24 sa m'aide aussi àcomprendre
DjBen65 Posté(e) le 26 décembre 2015 Auteur Signaler Posté(e) le 26 décembre 2015 Il me semble que tu te lances dans des trucs très compliqués avec des settimeout et des fonctions etc ... voilà un truc tout simple qui allume selon tes conditions et qui éteint sans condition, donc même si tu allumes manuellement. --[[ %% autostart %% properties %% globals --]] While true do local currentDate = os.date("*t"); local triggerTime = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min); if ((currentDate.wday == 1 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and triggerTime == "09:59")then fibaro:call(10, "turnOn"); end if (triggerTime == "19:00") then fibaro:call(10, "turnOff); end fibaro:sleep(60*1000); end Ah oui nettement plus clair! Merci Je vais tester ça Le "fibaro:sleep(60*1000)", à quoi sert-il?
Berale64 Posté(e) le 26 décembre 2015 Signaler Posté(e) le 26 décembre 2015 Ce script est une boucle infinie qui commence en ligne 9 et se termine en 22. Le sleep correspond àune pause de 1mn. 1000 correspond à1 seconde. Donc, toutes les minutes on regarde si c'est l'heure d'actionner le WP.
DjBen65 Posté(e) le 26 décembre 2015 Auteur Signaler Posté(e) le 26 décembre 2015 D'accord, merci. Par contre j'ai une Syntaxe Error 7 (True)…
DjBen65 Posté(e) le 29 décembre 2015 Auteur Signaler Posté(e) le 29 décembre 2015 Il me semble que tu te lances dans des trucs très compliqués avec des settimeout et des fonctions etc ... voilà un truc tout simple qui allume selon tes conditions et qui éteint sans condition, donc même si tu allumes manuellement. --[[ %% autostart %% properties %% globals --]] While true do local currentDate = os.date("*t"); local triggerTime = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min); if ((currentDate.wday == 1 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and triggerTime == "09:59")then fibaro:call(10, "turnOn"); end if (triggerTime == "19:00") then fibaro:call(10, "turnOff); end fibaro:sleep(60*1000); end Bonjour à vous! Je pense qu'il y a un petit soucis sur le script, il coupe et redémarre assez souvent :
DjBen65 Posté(e) le 29 décembre 2015 Auteur Signaler Posté(e) le 29 décembre 2015 Est-ce que ce code est bon? --[[ %% autostart %% properties 39 power %% globals --]] while true do local currentDate = os.date("*t"); local triggerTime = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min); if ((currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and triggerTime == "09:50") then fibaro:call(39, "turnOn"); end if (( tonumber(fibaro:getValue(39, "power")) < 10 ) and ((triggerTime >= "19:10") or (triggerTime <= "8:00)) then fibaro:call(39, "turnOff"); end fibaro:sleep(60*1000); end Merci
Messages recommandés