Aller au contenu

Krikroff

Modérateurs
  • Compteur de contenus

    6 715
  • Inscription

  • Dernière visite

  • Jours gagnés

    124

Tout ce qui a été posté par Krikroff

  1. Je ferais un truc comme ça pour la logique de traitement local on = "ISCP\0\0\0\16\0\0\0\11\1\0\0\0!1PWR01\r"; local off = "ISCP\0\0\0\16\0\0\0\11\1\0\0\0!1PWR00\r"; parsePowerState = function(str) if (str ~= nil and string.len(str) == 24) then local r = str:match('!1PWR(.+)\r'); if (r ~= nil) then return tonumber(r); end end return 0; end fibaro:debug(parsePowerState(on)); fibaro:debug(parsePowerState(off)); local result = on; if (parsePowerState(result) == 1) then fibaro:debug("Ampli sur ON"); elseif (parsePowerState(result) == 0) then fibaro:debug("Ampli sur OFF"); else -- TODO end
  2. Et pourquoi pas : if (tonumber(cmd_value) > 1 and retry < _maxRetryProcess) then return _checkPowerState(retry + 1); else return tonumber(cmd_value); end mais quelles sont valeurs possibles pour cmd_value ? PS: aussi, pour "catcher" plus facilement le code en phase de conception tu peux enlever le pcall
  3. Benjy, il me semble que le code return tonumber(cmd_value); ne sera jamais exécuté car avant tu as un return dans ton if mais aussi dans ton else ...
  4. JP Encausse fait un travail génial S.A.R.A.H . Il faut au moins jeter un œil !
  5. Oui c'est faisable mais les virtual devices ne sont pas optimisés pour cela... Il faut attendre la V4 pour cela je pense!
  6. Encore en déplacement aujourd'hui je ne vais donc pas pouvoir d'aider pour l'instant ! Mais je suis certain que c'est un problème d’échappement cf. la sorite du debug... j'ai ma petite idée sur la question , peut être dans la soirée ou demain.
  7. T’inquiètes Benjy, il y a des oreilles pour t’écouter . C'est cool que ça avance bien ! Je me demande pourquoi le string.sub(result, 22, 23) marche et pas le reste, un problème d’échappement dans la chaine peut-être ? un fibaro:debug ne sortait rien ?
  8. Toujours pas ? C'est fou ça... Merci pour cette rectification Phil Il reste open remote alors même si je ne toujours pas très convaincu ! Si tu as le temps et les connaissances: php ou .net pour la logique métier etc. et JQuery pour le Front End
  9. Je pense que ta scène ne redémarre pas a cause du if (sourceTrigger["type"] == "autostart") then La condition autostart est il me semble vérifiée uniquement si la scène est mise àjour ou lorsque le service du HC2 redémarré. Tu peux essayer en enlevant cette condition ?
  10. Krikroff

    Biométrie avec le HC2

    Effectivement il est plutôt pas mal, mais 600 Euros pour le V600 c'est un peu abusé juste pour la biométrie ! Greg tu risques bien de faire fortune avec ton projet
  11. Oui c'est tout àfait possible mais il faut un minimum de connaissance pour cela car beaucoup de techno sont àmettre en œuvre, avec de la motivation OUI ! Sinon tu connais ImperiHome, c'est sur android mais cela pourrait répondre àtes besoins peut-être ?
  12. Salut Benjy , oui pour l'IP et le Port il faut utiliser fibaro:get(fibaro:getSelfId(), "IPAddress") et fibaro:get(fibaro:getSelfId(), "TCPPort") ... Je vais essayer de jeter un œil sur le retour d'info dans la soirée si possible
  13. Bienvenue Stéphane
  14. Bienvenue sur le forum Senseibr ... Tu auras bien le temps de changer d'avis
  15. Krikroff

    Biométrie avec le HC2

    Le sujet m’intéresse aussi, rien de biométrique en Natif Z-wave il me semble !
  16. Peux tu poster la scène 1 ? Étrange... C'est quoi la version de ton HC2 ? stable ou bêta ?
  17. oui 89 est l' ID du périphérique virtuel
  18. Tu peux essayer ce code qui devrait logiquement faire un mute sur un ampli Onkyo ? --[[ %% properties %% globals --]] fibaro:log("Start process"); local _deviceIp = "192.168.1.49"; local _devicePort = 60128; local _maxRetryProcess = 2; local function _process(retry) retry = retry or 0; --open the socket local tcpSocket = Net.FTcpSocket(_deviceIp, _devicePort); --set the read timeout tcpSocket:setReadTimeout(250); --notify user fibaro:log("Try Mute on, #" .. retry .. " please wait..."); fibaro:sleep(250); --send packet local bytes, errorCode = tcpSocket:write("ISCP\0\0\0\16\0\0\0\9\1\0\0\0!1AMT00\r"); --check for error if errorCode == 0 then --cli should return the string sent if success local result = tcpSocket:read(); -- could compare to the encoded version of the call to confirm success fibaro:log(result); fibaro:sleep(1000); return true; else if retry < _maxRetryProcess then fibaro:log("Retry process, please wait..."); fibaro:sleep(1000); return _process(retry + 1); end return false; end end local f, result = pcall(_process); if (f) then if (result == true) then fibaro:log("Command successufully transmited."); else fibaro:log("Cannot send command!"); end else fibaro:log("Error: " .. f); end Adaptation de mon code par fuuss et rafal_II du fofo inter fibaro. c'est par ici: http://forum.fibaro.com/viewtopic.php?t=2974 rafal_II a publié un VD qui pourrait t'aider
  19. Peux tu ajouter un fibaro:debug dans ta scène ID#4 afin de voir si réellement elle démarre ou pas ...
  20. Krikroff

    Simulation de Présence

    Moi j'ai une variable prédéfinie "Phases journée" avec Jour et Nuit. Cette variable est mise à jour avec une scène. Mais une variable simple marche très bien aussi par ex: "sunsetHour" avec comme valeur 0, mis à jour aussi avec une scène. Pour le CAST en Lua je fais souvent cela : local currentTime = tonumber(os.date("%H%M")); if (currentTime >= tonumber(string.format("%02d%02d", "11", "00"))) then -- TODO ... end pour la mise à jour de la variable je ferais un truc comme ça... Ps: il y a des debugs pour bien comprendre ... local currentTime = os.date("%H%M"); fibaro:debug("currentTime: " .. tonumber(currentTime)); local sunriseHour = string.gsub(fibaro:getValue(1, 'sunriseHour'), ":", ""); fibaro:debug("sunriseHour: " .. tonumber(sunriseHour)); local sunsetHour = string.gsub(fibaro:getValue(1, "sunsetHour"), ":", ""); fibaro:debug("sunsetHour: " .. tonumber(sunsetHour)); if (tonumber(currentTime) >= tonumber(sunriseHour) and tonumber(currentTime) <= tonumber(sunsetHour)) then fibaro:debug("Day Time..."); else fibaro:debug("Night Time..."); end
  21. Krikroff

    Simulation de Présence

    Pour tester l'heure soit tu fais une convention en timestamp pour travailler sur du numérique soit tu utilises os.difftime (t2, t1)... http://www.lua.org/pil/22.1.html L'utilisation d'une variable jour / nuit n'est pas inintéressante bien au contraire, àtoi de voir ! Envoyé de mon iPhone.
  22. Krikroff

    Arrondi En Lua

    Tu peux utiliser la fonction "insérer un extrait de code" c'est <> dans l'éditeur (sous le ).
  23. Il est impossible de créer directement une variable avec des lettres. Il faut créer la variable avec 0 par exemple et la mettre àjour avec un fibaro:setGlobal et la tout est ok: lettres, true/false, etc...
  24. Krikroff

    Simulation de Présence

    je trouve étrange la ligne 115, oui effectivement c'est pas une variable global mais une variable système avec une heure donc pourquoi une comparaison true/false ? Donc il doit manquer une variable qui est mise àjour avec un code comme celui-ci depuis un scène: --[[ %% autostart %% properties %% globals --]] local sourceTrigger = fibaro:getSourceTrigger(); if (sourceTrigger["type"] == "autostart") then while true do 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) == fibaro:getValue(1, "sunsetHour")) ) ) then fibaro:setGlobal("sunsetHour", true); end ou juste une comparaison si heure > fibaro:getValue(1, "sunsetHour")... Mais je suis aussi fatigué donc ...
  25. Krikroff

    Simulation de Présence

    Pourrais tu vérifier l'état de la variable sunsetHour dans le panneau Variables lorsque le script devrait fonctionner ? Il devrait aussi avoir dans le debug une ligne Todays sunset: ...
×
×
  • Créer...