Aller au contenu

BenjyNet

Membres confirmés
  • Compteur de contenus

    5 384
  • Inscription

  • Dernière visite

  • Jours gagnés

    80

Tout ce qui a été posté par BenjyNet

  1. BenjyNet

    Clap Clap

    Mais QUI parle de prof de technologie ici ???? Qui se moque ????
  2. Mais non ils me gonflent pas plus que ça !! Je pourrais faire pareil aussi mais.... ça existe, autant l'utiliser alors (même si je double, j'ai le countScene en plus du nombre d'instance dans les paramètres). Faut juste que sache ce qui appelle 2 fois la scène (ou plus) àun moment donné mais je vois pas quoi.
  3. J'ai un soucis identique avec l'IPX qui déclenche un scène sur changement d'état d'une entrée. Le problème c'est qu'il n'y a pas d'anti-rebond sur les entrées de l'IPX et que ça lance parfois 20 scènes d'un coup. Je limite dans le code bien sur àune seule instance mais le triangle jaune me rappelle qu'il y a un soucis. Finalement c'est chiant ce triangle, entre les qubino qui n'ont pas de template et les scènes qui se multiplient, ça te fait peur pour rien !
  4. Bah moi j'ai juste une instance sauf une fois toute les lunes où j'en ai 2. La dernière double était il y a quelques jours. Alors est-ce que c'est du au redémarrage de la box, je sais pas mais je pense pas.
  5. Exact aussi et faut changer la ligne 13 et 12 aussi. J'avais pas fait gaffe qu'il donnait un code pour une VG. A force on s'y perd
  6. Exact J'ai pas les yeux en face des trous ! Edit : Mais ça change rien J'ai toujours l'erreur, ça vient bien du code de mprinfo mais je vois pas ce qui cloche !
  7. C'est rien, moi aussi j'ai pas les yeux en face de trous avec ces gosses malades toute la nuit !! Bon maintenant j'ai une erreur àla con sur une ligne qui n'existe pas ! [DEBUG] 11:17:36: line 66: Assertion failed: Expected string [DEBUG] 11:28:42: line 66: Assertion failed: Expected string Et voilàle code tout con --[[ %% properties 117 value %% globals --]] local trigger = fibaro:getSourceTrigger() if (trigger["type"] == "property") then IDTrigger = tonumber(trigger["deviceID"]) nomTrigger = trigger["name"] valeurTrigger = fibaro:getGlobalValue(nomTrigger) fibaro:debug("Nom du déclencheur = " .. nomTrigger .. " - ID = " .. IDTrigger .. " - Valeur : " .. valeurTrigger) end if (fibaro:countScenes() > 1) then fibaro:abort() end local id_lights = {4,5,6} local id_mvt = 117 local id_lux = 119 local id_plug_tv = 19 fibaro:debug("Conso TV : " .. fibaro:get(id_plug_tv, "power") .. " W - Mvt : " .. fibaro:getValue(id_mvt, "value") .. " - Lumino : " .. fibaro:getValue(id_lux, "value") .. " lux") if (tonumber(fibaro:getValue(id_mvt, "value")) > 0 and tonumber(fibaro:getValue(id_lux, "value")) <= 25) then for i, v in ipairs(id_lights) do fibaro:call(v, "turnOn") end fibaro:debug("allumage") elseif (tonumber(fibaro:getValue(id_mvt, "value")) == 0 and (tonumber(fibaro:getValue(id_plug_tv, "power")) < 78 or tonumber(fibaro:getValue(id_lux, "value")) > 50)) then for i, v in ipairs(id_lights) do fibaro:call(v, "turnOff") end fibaro:debug("extinction") end
  8. Hum mouais même si ça n'a aucun intérêt pour la suite du code ça pourrait juste permettre de comprendre ce qui la déclenche 2 fois (sur mouvement c'est sûr, mais l'autre ??). Roh en plus tu codes avec les pieds, manque une parenthèse !
  9. Moi j'ai un truc zarbi que j'arrive pas àcomprendre avec ces histoires de nombre d'instances. J'ai une scène déclenchée par le capteur de mouvement du motion sensor et elle arrive àse déclencher 2 fois, c'est étrange non ? Elle devrait se déclencher qu'en cas de détection et d'arrêt de détection, des états qui ne peuvent donc pas se croiser normalement. Je comprends pas là --[[ %% properties 117 value %% globals --]] local id_lights = {4,5,6} local id_mvt = 117 local id_lux = 119 local id_plug_tv = 19
  10. J'ai laissé de l'ABS 1 an en extérieur et ça a tenu le coup. Le PLA je sais pas c'est de l'amidon de maïs après tout
  11. Ligne 376 tu rajoutes fibaro:debug(device.source), juste apres le "then". Parce que si ça se trouve c'est une entrée que j'ai pas. T'as regardé si elle est référencée dans la table input en debut de code ton entrée ?
  12. ------------------------------------------------------------- -- Plugin for Onkyo TX-NR626 receiver -- Use port 60128 -- Version 1.1.1 (04-16-2014) -- Author : Jean-christophe Vermandé modified by BenjyNet ------------------------------------------------------------- -- Change log 1.1.0 to 1.1.1 : -- Infinite loop in main loop rectified -- Minor bugs fixed --------------------------------------------------------c[_]- fibaro:debug('Start process Main Loop v1.1.1'); local _deviceIp = fibaro:get(fibaro:getSelfId(), "IPAddress"); local _devicePort = fibaro:get(fibaro:getSelfId(), "TCPPort"); local _maxRetryProcess = 5; local _trace = false; -- Polling time (here = 2 min), you can change this local _polling = 2*60*1000; -- Name of your inputs, you can change this input = { [00] = "VIDEO1 - VCR/DVR", [01] = "VIDEO2 - CBL/SAT", [02] = "VIDEO3 - GAME/TV - GAME", [03] = "VIDEO4 - AUX", [04] = "VIDEO5 - AUX2", [05] = "VIDEO6 - PC", [16] = "BD/DVD", [34] = "PHONO", [35] = "TV/CD", [36] = "TUNER - FM", [37] = "TUNER - AM", [38] = "TUNER", [41] = "FRONT USB", [42] = "REAR USB", [43] = "NET", [46] = "BLUETOOTH" }; -- Name of your listenning modes, you can change this mode = { [00] = "STEREO", [01] = "DIRECT", [02] = "SURROUND", [03] = "GAME-RPG", [04] = "THX", [05] = "GAME-ACTION", [06] = "GAME-ROCK", [08] = "ORCHESTRA", [09] = "UNPLUGGED", [10] = "STUDIO-MIX", [11] = "TV LOGIC", [12] = "ALL CH STEREO", [13] = "THEATER-DIMENSIONAL", [14] = "GAME-SPORT", [15] = "MONO", [17] = "PURE AUDIO", [19] = "FULL MONO", [22] = "AUDISSEY DSX", [23] = "WHOLE HOUSE MODE", [35] = "STAGE", [37] = "ACTION", [38] = "MUSIC", [46] = "SPORTS", [64] = "STRAIGHT DECODE", [65] = "DOLBY EX", [66] = "THX CINEMA", [67] = "THX SURROUND EX", [68] = "THX MUSIC", [69] = "THX GAMES", [80] = "THX CINEMA 2, U2/S2/II/S CINEMA", [81] = "THX MUSIC MODE, THX U2/S2/II/S MUSIC", [82] = "THX GAMES MODE, THX U2/S2/II/S GAMES", [128] = "PLII/PLIIx MOVIE", [129] = "PLII/PLIIx MUSIC", [130] = "NEO:6 CINEMA/NEO:X CINEMA", [131] = "NEO:6 MUSIC/NEO:X MUSIC", [132] = "PLII/PLIIx THX CINEMA", [133] = "NEO:6/NEO:X THX CINEMA", [134] = "PLII/PLIIx GAME", [137] = "PLII/PLIIx THX GAMES", [140] = "NEO:6/NEO:X THX GAMES", [141] = "PLII/PLIIx THX MUSIC", [142] = "NEO:6/NEO:X THX MUSIC", [144] = "PLIIz HEIGHT", [148] = "PLIIz HEIGHT + THX CINEMA", [149] = "PLIIz HEIGHT + THX MUSIC", [150] = "PLIIz HEIGHT + THX GAMES", [151] = "PLIIz HEIGHT + THX U2/S2 CINEMA", [152] = "PLIIz HEIGHT + THX U2/S2 MUSIC", [153] = "PLIIz HEIGHT + THX U2/S2 GAMES", [154] = "NEO:X GAME", [160] = "PLIIx/PLII MOVIE + AUDISSEY DSX", [161] = "PLIIx/PLII MUSIC + AUDISSEY DSX", [162] = "PLIIx/PLII GAME + AUDISSEY DSX", [167] = "DOLBY EX + AUDISSEY DSX" }; -- Device parameters device = device or { id = fibaro:getSelfId(), power = 0, mute = 0, volume = 0, source = "unknown", lst_mode = "unknown" }; -- Functions' declarations ------------------------------------ function trace(value) if (_trace) then return fibaro:debug(tostring(value)); end end function split(pString, pPattern) local Table = {} local fpat = "(.-)" .. pPattern local last_end = 1 local s, e, cap = pString:find(fpat, 1) while s do if s ~= 1 or cap ~= "" then table.insert(Table,cap) end last_end = e+1 s, e, cap = pString:find(fpat, last_end) end if last_end <= #pString then cap = pString:sub(last_end) table.insert(Table, cap) end return Table end function getPowerState(retry) local retry = retry or 0; local cmd = nil; --notify user trace("Request Power STATUS, #" .. retry .. " please wait..."); --send packet bytes, errorCode = _tcpSocket:write("ISCP\0\0\0\16\0\0\0\12\1\0\0\0\!1PWRQSTN\0x1A\r\n"); -- check for error if errorCode == 0 then trace("Power STATUS command successufully transmited."); fibaro:sleep(55); -- amplifier sould return the string sent if success while (cmd == nil and retry < _maxRetryProcess) do local result = _tcpSocket:read(); -- check if result is equal than command to confirm success trace("Result's lenght : " .. result:len() .. " " .. type(result)); cmd = string.match(result, "PWR%d%d"); if (cmd ~= nil) then trace(cmd); local pwr_value = tonumber(cmd:sub(4,5)); trace("Result OK : PWR" .. pwr_value); return pwr_value; else trace("Result fail, retry process, #" .. retry .. " please wait..."); retry = retry + 1; end end return nil; else if retry < _maxRetryProcess then trace("Retry process, please wait..."); fibaro:sleep(2000); return getPowerState(retry + 1); end return nil; end end function getVolumeLevel(retry) local retry = retry or 0; local cmd = nil; --notify user trace("Request Volume LEVEL, #" .. retry .. " please wait..."); --send packet bytes, errorCode = _tcpSocket:write("ISCP\0\0\0\16\0\0\0\12\1\0\0\0\!1MVLQSTN\0x1A\r\n"); -- check for error if errorCode == 0 then trace("Request Volume LEVEL command successufully transmited."); fibaro:sleep(55); retry = 0; -- amplifier sould return the string sent if success while (cmd == nil and retry < _maxRetryProcess) do local result = _tcpSocket:read(); -- check if result is equal than command to confirm success trace("Result's lenght : " .. result:len() .. " " .. type(result)); cmd = string.match(result, "MVL.."); if (cmd ~= nil) then local vol_value = tonumber(cmd:sub(4, 5), 16); trace("Result OK : MVL" .. vol_value .. cmd); return vol_value; else trace("Result fail, retry process, #" .. retry .. " please wait..."); retry = retry + 1; end end return nil; else if retry < _maxRetryProcess then trace("Retry process, please wait..."); fibaro:sleep(2000); return getVolumeLevel(retry + 1); end return nil; end end function getSource(retry) local retry = retry or 0; local cmd = nil; --notify user trace("Request SOURCE, #" .. retry .. " please wait..."); --send packet bytes, errorCode = _tcpSocket:write("ISCP\0\0\0\16\0\0\0\12\1\0\0\0\!1SLIQSTN\0x1A\r\n"); -- check for error if errorCode == 0 then trace("Request SOURCE command successufully transmited."); fibaro:sleep(55); -- amplifier sould return the string sent if success while (cmd == nil and retry < _maxRetryProcess) do local result = _tcpSocket:read(); -- check if result is equal than command to confirm success trace("Result's lenght : " .. result:len() .. " " .. type(result)); cmd = string.match(result, "SLI.."); if (cmd ~= nil) then local src_value = tonumber(cmd:sub(4, 5), 16); trace("Result OK : SLI" .. src_value .. cmd); return src_value; else trace("Result fail, retry process, #" .. retry .. " please wait..."); retry = retry + 1; end end return nil; else if retry < _maxRetryProcess then trace("Retry process, please wait..."); fibaro:sleep(2000); return getSource(retry + 1); end return nil; end end function getMute(retry) local retry = retry or 0; local cmd = nil; --notify user trace("Request MUTE, #" .. retry .. " please wait..."); --send packet bytes, errorCode = _tcpSocket:write("ISCP\0\0\0\16\0\0\0\12\1\0\0\0\!1AMTQSTN\0x1A\r\n"); -- check for error if errorCode == 0 then trace("Request MUTE command successufully transmited."); fibaro:sleep(55); -- amplifier sould return the string sent if success while (cmd == nil and retry < _maxRetryProcess) do local result = _tcpSocket:read(); -- check if result is equal than command to confirm success trace("Result's lenght : " .. result:len() .. " " .. type(result)); cmd = string.match(result, "AMT.."); if (cmd ~= nil) then local mute_value = tonumber(cmd:sub(4,5)); trace("Result OK : AMT" .. mute_value .. cmd); return mute_value; else trace("Result fail, retry process, #" .. retry .. " please wait..."); retry = retry + 1; end end return nil; else if retry < _maxRetryProcess then trace("Retry process, please wait..."); fibaro:sleep(2000); return getMute(retry + 1); end return nil; end end function getLstMode(retry) local retry = retry or 0; local cmd = nil; --notify user trace("Request LISTENING MODE, #" .. retry .. " please wait..."); --send packet bytes, errorCode = _tcpSocket:write("ISCP\0\0\0\16\0\0\0\12\1\0\0\0\!1LMDQSTN\0x1A\r\n"); -- check for error if errorCode == 0 then trace("Request LISTENING MODE command successufully transmited."); fibaro:sleep(55); -- amplifier sould return the string sent if success while (cmd == nil and retry < _maxRetryProcess) do local result = _tcpSocket:read(); -- check if result is equal than command to confirm success trace("Result's lenght : " .. result:len() .. " " .. type(result)); cmd = string.match(result, "LMD.."); if (cmd ~= nil and cmd ~= "LMDN/") then local mode_value = tonumber(cmd:sub(4,5), 16); trace("Result OK : LMD" .. mode_value .. cmd); return mode_value; else trace("Result fail, retry process, #" .. retry .. " please wait..."); retry = retry + 1; end end return nil; else if retry < _maxRetryProcess then trace("Retry process, please wait..."); fibaro:sleep(2000); return getLstMode(retry + 1); end return nil; end end function getAudioOutMode(retry) local retry = retry or 0; local cmd = nil; --notify user trace("Request AUDIO OUT MODE, #" .. retry .. " please wait..."); --send packet bytes, errorCode = _tcpSocket:write("ISCP\0\0\0\16\0\0\0\12\1\0\0\0\!1IFAQSTN\0x1A\r\n"); -- check for error if errorCode == 0 then trace("Request AUDIO OUT MODE command successufully transmited."); fibaro:sleep(55); -- amplifier sould return the string sent if success while (cmd == nil and retry < _maxRetryProcess) do local result = _tcpSocket:read(); -- check if result is equal than command to confirm success trace("Result's lenght : " .. result:len() .. " " .. type(result)); cmd = string.match(result, "IFA(.+)\n"); if (cmd ~= nil and cmd:len() > 5) then trace(cmd .. cmd:len()); local audio_value = split(cmd,","); trace("Result OK : LMD" .. audio_value[5] .. cmd); return audio_value[5]; else trace("Result fail, retry process, #" .. retry .. " please wait..."); retry = retry + 1; end end return "STRAIGHT DECODE"; else if retry < _maxRetryProcess then trace("Retry process, please wait..."); fibaro:sleep(2000); return getAudioOutMode(retry + 1); end return nil; end end function refreshInterface() if (device.power == true) then local label = fibaro:getValue(device.id, "ui.lblPowerStatus.value"); if (label == "OFF") then fibaro:call(device.id, "setProperty", "ui.lblPowerStatus.value", "ON"); end -- update UI volume if (device.volume ~= nil) then fibaro:debug("Volume is "..device.volume); fibaro:call(device.id, "setProperty", "ui.VolumeSlider.value", device.volume); else fibaro:debug("Error, Volume not updated"); end -- update UI input if (device.source ~= nil) then fibaro:debug("Source selected is "..input[device.source]); fibaro:call(device.id, "setProperty", "ui.lblInput.value", input[device.source]); else fibaro:debug("Error, Source not updated"); end -- update UI mute if (device.mute ~= nil) then fibaro:debug("Mute is set to "..device.mute); if (device.mute == 1 and label:match("Mutting") == nil) then local labelUpdated = label .. " - Mutting"; fibaro:call(device.id, "setProperty", "ui.lblPowerStatus.value", labelUpdated); elseif (device.mute == 0 and label:match("Mutting") == "Mutting") then local labelUpdated = label:gsub("%s[-]%sMutting", ""); fibaro:call(device.id, "setProperty", "ui.lblPowerStatus.value", labelUpdated); end else fibaro:debug("Error, Mute not updated"); end -- update UI mode if (device.lst_mode ~= nil) then fibaro:call(device.id, "setProperty", "ui.lblCurrentMode.value", device.lst_mode); else fibaro:debug("Error, Listening mode not updated"); end else fibaro:call(device.id, "setProperty", "ui.lblPowerStatus.value", "OFF"); fibaro:call(device.id, "setProperty", "ui.lblInput.value", "unknown"); fibaro:call(device.id, "setProperty", "ui.VolumeSlider.value", "0"); fibaro:call(device.id, "setProperty", "ui.lblCurrentMode.value", "unknown"); end return true; end function main() -- prepare a global counter if (_count == nil) then fibaro:debug("HC2 start script at " .. os.date()); _count = 0; end --notify begin of process fibaro:debug("Start process #".._count..", please wait..."); --open the socket if (_tcpSocket == nil) then _tcpSocket = Net.FTcpSocket(_deviceIp, _devicePort); --set the read timeout _tcpSocket:setReadTimeout(1000); end -- Query power status local power = getPowerState(); if (power == 1) then device.power = true; fibaro:debug("Power is ON "); fibaro:sleep(100); -- Query volume device.volume = getVolumeLevel(); fibaro:sleep(100); -- Query source device.source = getSource(); fibaro:sleep(100); -- Query mute device.mute = getMute(); fibaro:sleep(100); -- Query mode local temp = getLstMode(); if (temp ~= nil) then fibaro:debug("Listenning Mode is set to "..mode[temp]); if (temp == 64) then fibaro:sleep(100); device.lst_mode = getAudioOutMode(); else device.lst_mode = mode[temp]; end end elseif (power == 0) then device.power = false; fibaro:debug("Power is OFF "); else fibaro:debug("No Response... check later..."); end -- call refresh interface to repaint UI refreshInterface(); -- dispose socket if (_tcpSocket ~= nil) then -- close socket _tcpSocket:disconnect(); -- destroy object _tcpSocket = nil; end --notify end of process fibaro:debug("Process #".._count.." is finish!"); -- increment global counter _count = _count + 1; end -- Start main loop process main(); -- Sleep fibaro:sleep(_polling); -- EOF Main loop
  13. Donc il n'a pas réussi àrécupérer la source mais normalement j'ai pas de debug sur la ligne 429 parce que c'est lui qui te crée une erreur ! Si la source n'est pas récupérée, tu ne peux pas afficher une variable "nil", logique non ? J'ai retrouvé mon code du main loop, tu veux que je te le post ?
  14. T'as quoi sur la ligne 430 ? J'ai pas le code du VD dans les mains là.
  15. Boitier étanche = imprimante 3D. Un coup de Solidworks, un coup de reprap avec - PLA ou ABS - et - Silicone ou NinjaFlex/FilaFlex & co - et en avant guingamp ! Bon je vous l'accorde c'est pas hyper esthétique mais ça peut marcher. Après on peut peut être combiner de l'alu et de l'impression 3D ou de l'usinage CFAO.
  16. Ouais c'est très facile de tester sur le NAS avec docker . On peut coller aussi un stick Enocean derrière, ça marche également.
  17. Moi je l'ai lancé aussi et je pense qu'il y a un problème de refresh sur l'UI. Le "cheking......." reste même si c'est fini
  18. Me semble qu'ils sont plus zigbee eux.
  19. Mais non Lazer... pff t'es tombé dans le panneau. Me faut une clé Enocean et je vaos attendre la 2.0 pour tester.
  20. Je passe mon tour aussi, je file chez jeedom...
  21. BenjyNet

    Borne Wifi

    Ah ouais quand même. Le truc fixé au plafond, il se voit quoi !
  22. BenjyNet

    Borne Wifi

    Fais des photos jojo pour voir un peu la taille....
×
×
  • Créer...