Aller au contenu

BenjyNet

Membres confirmés
  • Compteur de contenus

    5 381
  • Inscription

  • Dernière visite

Tout ce qui a été posté par BenjyNet

  1. BenjyNet

    Ici On Parle Lifedomus

    De toute façon sont toutes mortes ces solutions... smarthings et smarthinQ sortiront vainqueurs. Rien que les notifs sur la TV ça pète
  2. BenjyNet

    Maj Hc2 : 4.070 Du 21/01/2016

    Moi je suis pas reparti en v4 stable, je viens d'une version 3.1 et pourtant j'ai pas tous ces soucis. Pas de fuite mémoire en tout cas pour le moment.
  3. BenjyNet

    Maj Hc2 : 4.070 Du 21/01/2016

    Oh punaise !!! Lazer il est déjà en version 5.x et il a ENCORE des plantages !!!
  4. BenjyNet

    Au Revoir Moicphil !

    Vous ne le savez peut être pas mais Phil a décidé de lâcher la domotique et de ne plus faire parti de notre communauté alors il m'a chargé de vous l'annoncer.... Oui phil c'est reconverti.... snifff -> http://www.leboncoin.fr/prestations_de_services/903933158.htm?ca=19_s
  5. BenjyNet

    Au Revoir Moicphil !

    Mouahahah
  6. BenjyNet

    Clap Clap

    Ouais Lazer c'est exact, mais la faute n'est pas seulement celle des profs... l'E.N. n'est pas étrangère au problème. Il faudrait les former les profs justement ! Quand tu vois qu'en 14 ans j'ai pas eu une seule formation technique sur la programmation d'un langage (C, python, XML, HTML, PHP ou autre...), ni sur l'utilisation d'une imprimante 3D (un comble alors que certains de mes élèves ont ça chez eux), ni sur les microcontrôleurs, ni sur.... Enfin bref j'en passe mais déjàque je commence àme sentir àla ramasse, même en m'auto-formant, c'est très clairement que je te dis que dans moins de 10 ans je serais totalement dépassé !! Bon sinon aujourd'hui... je grévise Sur ce je retourne àmon LUA chéri
  7. BenjyNet

    Clap Clap

    Mais QUI parle de prof de technologie ici ???? Qui se moque ????
  8. BenjyNet

    Maj Hc2 : 4.070 Du 21/01/2016

    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.
  9. BenjyNet

    Maj Hc2 : 4.070 Du 21/01/2016

    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 !
  10. BenjyNet

    Maj Hc2 : 4.070 Du 21/01/2016

    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.
  11. BenjyNet

    Maj Hc2 : 4.070 Du 21/01/2016

    Ouais c'est mieux comme ça
  12. BenjyNet

    Maj Hc2 : 4.070 Du 21/01/2016

    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
  13. BenjyNet

    Maj Hc2 : 4.070 Du 21/01/2016

    Nope
  14. BenjyNet

    Maj Hc2 : 4.070 Du 21/01/2016

    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 !
  15. BenjyNet

    Maj Hc2 : 4.070 Du 21/01/2016

    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
  16. BenjyNet

    Maj Hc2 : 4.070 Du 21/01/2016

    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 !
  17. BenjyNet

    Maj Hc2 : 4.070 Du 21/01/2016

    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
  18. BenjyNet

    Yavi - Yet Another Video Intercom

    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
  19. BenjyNet

    Ampli Onkyo Et Hc2

    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 ?
  20. BenjyNet

    Ampli Onkyo Et Hc2

    ------------------------------------------------------------- -- 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
  21. BenjyNet

    Ampli Onkyo Et Hc2

    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 ?
  22. BenjyNet

    Ampli Onkyo Et Hc2

    T'as quoi sur la ligne 430 ? J'ai pas le code du VD dans les mains là.
  23. BenjyNet

    Yavi - Yet Another Video Intercom

    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.
  24. BenjyNet

    Installation De Jeedom Sur Dsm Synology 5.2

    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.
  25. BenjyNet

    Verify Checksum Recovery Tourne En Boucle (V4.033)

    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
×