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. Oui, quitte àne pas assurer le support par exemple. T'achetes, tu te plantes, oneshot, tant pis pour toi, fallait aller voir castoche.
  2. @ Mr Oliver. Je pense, contrairement à ce que vous affirmez dans le post Alarme SATEL Integra-32 , avoir toutes les compétences requises pour pouvoir installer ce genre d'alarme ; mes compétences techniques me le permettent, étant dans le domaine de l'électronique/numérique, ancien ingénieur en robotique et automatismes industriels. C'est bien dommage d'aller voir ailleurs alors que nous avons un revendeur français. J'ai fait des recherches d'installateurs SATEL dans mon coin mais personne ne connait !
  3. Bonjour monsieur OLIVER et bienvenue sur le forum. Pourriez-vous nous indiquer votre politique quand à la vente des produits SATEL pour les particuliers. Je pense que nous sommes nombreux ici à attendre votre réponse sur le sujet. Bien cordialement.
  4. Bon vous n'êtes pas perspicace, je viens de trouver un bug ! Celui qui trouve il a toute mon estime
  5. Oh yeah, Domadoo is in da place ! Bienvenue à toi @Laurent !
  6. Allez je suis bon prince, avant de partir en vacance je vous file la version 1.0.3 en PJ Attention ce n'est pas un VD. Mettez les scripts LUA sur les bons boutons. Si ça marche chez vous, j'updaterai le 1er post et je passerai à la v1.1.0 pour développer de nouvelles fonctionnalités. Je rappelle le change log : -- Update refresh data : set to 2 min -- Improved sending commands and receiving status -- Improved questions results -- Added source -- All scripts are updated Onkyo_TX-NR626_v1.0.3_scripts_lua_only.zip
  7. Ah bah oui cédric, j'avais pas vu
  8. Sisi c'est confirmé ! C'est un CAPTEUR de fumé et non un DETECTEUR qui impose d'être autonome et d'avoir une sirène d'au moins 85dB. Donc ceux qui ont acheté ça en pensant avoir en main quelque chose de conforme pour les assurances ce sont fait n****r ! Fibaro le sait et est en train de travailler sur un DETECTEUR conforme cette fois ci, mais certainement plus gros !
  9. Je viens de regarder le code pour m'inspirer.... J'en ai eu mal à la tête ! Je vais me coucher Par contre si vous savez où il a eu les symboles pour sa police d'écriture à côté de power et source, je suis intéressé ! Dans son code lua on a un simple carré.
  10. Cadeau de la nuit : le main-loop en v1.0.3 (ça marche chez moi, àvoir chez vous) ------------------------------------------------------------- -- Plugin for Onkyo TX-NR626 receiver -- Use port 60128 -- Version 1.0.3 (02-21-2014) -- Author : Jean-christophe Vermandé modified by BenjyNet ------------------------------------------------------------- -- Change log 1.0.2 to 1.0.3 : -- Update refresh data : set to 2 min -- Improved sending commands and receiving status -- Improved questions results -- Added source --------------------------------------------------------c[_]- fibaro:debug('Start process Main Loop v1.0.3'); local _deviceIp = fibaro:get(fibaro:getSelfId(), "IPAddress"); local _devicePort = fibaro:get(fibaro:getSelfId(), "TCPPort"); local _maxRetryProcess = 5; -- Polling time (value in milliseconds) local _polling = 2*60*1000; local _trace = true; device = device or { id = fibaro:getSelfId(), name = "Onkyo TX-NR626", power = 0, volume = 0, source = "unknow", }; function trace(value) if (_trace) then return fibaro:debug(tostring(value)); end end function getPowerState(retry) local retry = retry or 0; local cmd = nil; --notify user fibaro:debug("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 fibaro:debug("POWER status command successufully transmited."); -- amplifier sould return the string sent if success while (cmd == nil and retry < _maxRetryProcess) do fibaro:sleep(60); local result = _tcpSocket:read(); -- check if result is equal than command to confirm success fibaro:debug("Result's lenght : " .. result:len() .. " " .. type(result)); cmd = string.match(result, "PWR%d%d"); if (cmd ~= nil) then fibaro:debug(cmd); local pwr_value = tonumber(cmd:sub(4,5)); fibaro:debug("Result OK : PWR" .. pwr_value); return pwr_value; else fibaro:debug("Result fail, retry process, #" .. retry .. " please wait..."); retry = retry + 1; end end return nil; else if retry < _maxRetryProcess then fibaro:debug("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 fibaro:debug("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 fibaro:debug("Request VOLUME level command successufully transmited."); -- amplifier sould return the string sent if success while (cmd == nil and retry < _maxRetryProcess) do fibaro:sleep(60); local result = _tcpSocket:read(); -- check if result is equal than command to confirm success fibaro:debug("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); fibaro:debug("Result OK : MVL" .. vol_value .. cmd); return vol_value; else fibaro:debug("Result fail, retry process, #" .. retry .. " please wait..."); retry = retry + 1; end end return nil; else if retry < _maxRetryProcess then fibaro:debug("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 fibaro:debug("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 fibaro:debug("Request SOURCE command successufully transmited."); -- amplifier sould return the string sent if success while (cmd == nil and retry < _maxRetryProcess) do fibaro:sleep(60); local result = _tcpSocket:read(); -- check if result is equal than command to confirm success fibaro:debug("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); fibaro:debug("Result OK : SLI" .. src_value .. cmd); local input = nil; if (src_value == 01) then input = "CBL/SAT"; elseif (src_value == 02) then input = "GAME"; elseif (src_value == 03) then input = "AUX"; elseif (src_value == 04) then input = "CEDRIC - STOP TO PLAY !"; elseif (src_value == 05) then input = "PC"; elseif (src_value == 16) then input = "BD/DVD"; elseif (src_value == 34) then input = "PHONO"; elseif (src_value == 35) then input = "TV/CD"; elseif (src_value == 36) then input = "TUNER - FM"; elseif (src_value == 37) then input = "TUNER - AM"; elseif (src_value == 41) then input = "FRONT USB"; elseif (src_value == 43) then input = "NET"; end return (input); else fibaro:debug("Result fail, retry process, #" .. retry .. " please wait..."); retry = retry + 1; end end return nil; else if retry < _maxRetryProcess then fibaro:debug("Retry process, please wait..."); fibaro:sleep(2000); return getSource(retry + 1); end return nil; end end function refreshInterface() if (device.power == true) then fibaro:call(device.id, "setProperty", "ui.lblPowerStatus.value", "ON"); -- update UI volume if (device.volume ~= nil) then fibaro:call(device.id, "setProperty", "ui.VolumeSlider.value", device.volume); end -- update UI input if (device.source ~= nil) then fibaro:call(device.id, "setProperty", "ui.lblInput.value", device.source); 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"); end return true; end function main() -- prepare a global counter if (_count == nil) then trace("HC2 start script at " .. os.date()); _count = 0; end --notify begin of process trace("Start process #".._count..", please wait..."); --open the socket if (_tcpSocket == nil) then _tcpSocket = Net.FTcpSocket(_deviceIp, _devicePort); --set the read timeout _tcpSocket:setReadTimeout(500); end -- Query power status local power = getPowerState(); if (power == 1) then device.power = true; trace("Power is ON"); -- Query volume device.volume = getVolumeLevel(); trace("Volume is "..device.volume); -- Query source device.source = getSource(); trace("Source selected is "..device.source); else device.power = false; trace("Power is OFF"); 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 trace("Process #".._count.." is finish!"); -- increment global counter _count = _count + 1; end -- Start main loop process main(); -- Sleep fibaro:sleep(_polling); -- EOF Main loop
  11. Bon, j'ai un gros bug sur le message de retour, effectivement vous pouvez avoir des soucis. En tout cas, je tiens à vous dire que c'est cool de vous avoir avec des ONKYO. Je peux comme ça avoir des retours sur ce qui marche ou pas et adapter aux plus grands monde ! Encore merci pour votre patience... Edit : Pour toi cédric, tu vas pas être content, mais j'ai pour le moment implémenté que mes entrées mais ça va venir patiente un peu...
  12. Tu es sur quelle entrée làcédric ? Si t'es sur le NET change et met toi sur l'entrée BD/DVD et regarde le debug. J'ai un soucis avec le NET, ça envoie des infos en continu et c'est difficile àrécupérer. Il faut que j'améliore ça.
  13. Bon quel boulet déjà la commande n'était pas bonne ! C'est "ISCP\0\0\0\16\0\0\0\10\1\0\0\0\!1PWR01\0x1A\r\n" si on veut tous les éléments. Je viens de retester, en mettant le message en "dur" genre _tcpSocket:write("ISCP\0\0\0\16\0\0\0\12\1\0\0\0\!1PWRQSTN\0x1A\r\n") ça passe ; mais si je fais dynamique local cmd = "PWRQSTN"; local cmd_length = "12"; _tcpSocket:write(string.format("ISCP\0\0\0\16\0\0\0\%s\1\0\0\0\!1%s\0x1A\r\n", cmd_length, cmd)); bah ça passe plus ! Allez savoir ! Edit, si je mets le premier %s en dur ça ne passe pas non plus. Donc le problème est sur le 2e %s. Pourquoi ça passerai avec PWR01 et pas PWRQSTN ?
  14. Oui pour ton code effectivement même si je pense que le \n perturbera si l'on a plusieurs réponses à la suite. Pour le format du message, regarde là dessus : Data size is the size of the eiSCP data et le data est constitué de !1XXXXX\r donc dans le cas de PWR01 ça fait bien 8 non (5+3) ?
  15. Ok ça marche, je serais sur le tchat si tu veux échanger en live. Je pourrais t'expliquer comment observer les trames tcp avec sokit pour débuger ça.
  16. Tiens j'ai une question bête : Est-ce qu'on peut ouvrir un tcp socket sur la HC2 et le laisser constamment ouvert sachant que l'ampli sur un changement d'état envoie automatiquement le nouvel état ? ou alors Vaut-il mieux intéroger l'ampli et récupérer sa réponse puis fermer le socket ? Avis d'un expert reseau ?
  17. @cedriclocqueneux T'as vérifié alors si le VD se mettais àjour ou pas en attendant 5min ?
  18. Parce que la taille de la commande c'est !1PWR01\n et comme je transmets PWR01 ça fait bien 5 + 3 soit 8 caractères. Bon je viens de voir aussi que j'ai merdé dans la compréhension des communications...ça se voit que je suis une pipe en anglais ? within ça veut dire "dans" et pas "apres". Faut que je regarde donc dans les 50ms si la réponse est bonne sur un changement d'état. Autre chose, en utilisant sokit (pour ceux qui ne connaissent pas ça permet de voir ce qui est envoyé en tcp/udp) je me suis aperçu que l'ampli envoyait parfois 2 réponses en même temps genre : ISCP............!1NLSC0C...ISCP............!1PWR01... et comme je check la position 19-21 forcément que ça ne marche pas !! Il faut que je fasse un string.match sur la réponse pour avoir quelque chose de cohérent ! Vive le boulet ! Bien mais tout ça c'est sur la gestion des retours d'état. Mais je ne comprends toujours pas pourquoi faire ça, ça marche _tcpSocket:write("ISCP\0\0\0\16\0\0\0\8\1\0\0\0!1PWR01\r") _tcpSocket:write("ISCP\0\0\0\16\0\0\0\10\1\0\0\0!1PWRQSTN\r") et pas ça -- Edit code below to send command (if you know it !) ------------- local command = "PWRQSTN"; -- command to PowerOn receiver local msg_cmd = "PowerOn receiver"; -- What should the command do ? local flag_debug = true; -- activate/deactivate debug messages ------------------------------------------------------------------- local cmd_length = tostring(string.len(command) + 3); bytes, errorCode = _tcpSocket:write(string.format("ISCP\0\0\0\16\0\0\0\%s\1\0\0\0!1%s\r", cmd_length, command));
  19. Bon, je me fais chier avec ce code 1.1.0 Je ne comprends absolument pas pourquoi ça ne fonctionne pas si je passe une commande ***QSTN ! Bordel !
  20. @cedricloqueneux Hum tu pourrais m'expliquer ça... Moi je fais une photo pareille, c'est même pas la peine que je rentre àla maison
  21. @Krikroff Et bien ça donne rien de visible, à cause de l'echappement \ On ne voit que ISCP mais c'est normal ça a toujours été le cas. D'ailleurs il n'existerait pas un string.quelquechose qui permettrait de le voir ce message ? Je pense que c'est faisable parce que dans sockit je le vois genre ISCP.........!1PWR01. @cedricloqueneux Ah c'est pas normal ça. Par contre t'as bien attendu 5min ? c'est le polling pour le rafraîchissement du VD. La version 1.0.2 a été rapidement développé à l'aide du code de Krikroff j'ai peut être merdé quelque part, comme je ne suis pas codeur, c'est pas très simple pour moi tout ça @Domodial Attend la version 1.1.0, t'auras ce qu'il faut pour les entrées ou sinon tu mets à la place de COMMAND -> 03
  22. Bon je suis en train de recoder tout ça pour pouvoir développer de nouveaux boutons sans tout retoucher mais j'ai un soucis. Voici le code (attention c'est long) : ------------------------------------------------------------------- -- This code works for any connectable ONKYO receiver whith eISCP -- Code tested on ONKYO TX-NR626 -- Version 1.1.0 by BenjyNet ------------------------------------------------------------------- -- Edit code below to send command (if you know it !) ------------- local command = "PWRQSTN"; -- command to PowerOn receiver local msg_cmd = "PowerOn receiver"; -- What should the command do ? local flag_debug = true; -- activate/deactivate debug messages ------------------------------------------------------------------- fibaro:debug("Start process v1.1.0"); fibaro:log("Try to " .. msg_cmd); local _deviceIp = fibaro:get(fibaro:getSelfId(), "IPAddress"); local _devicePort = fibaro:get(fibaro:getSelfId(), "TCPPort"); local _maxRetryProcess = 5; local function _sendCommand(cmd, retry) local retry = retry or 0; -- notify user if (flag_debug == true) then fibaro:debug("Try to send command " .. cmd .. ", #" .. retry .. " please wait..."); end -- send packet local cmd_length = tostring(string.len(cmd) + 3); bytes, errorCode = _tcpSocket:write(string.format("ISCP\0\0\0\16\0\0\0\%s\1\0\0\0!1%s\r", cmd_length, cmd)); -- check for error if errorCode == 0 then if (flag_debug == true) then fibaro:debug("Command " .. cmd .. " successufully transmited."); end return true; else if retry < _maxRetryPorcess then if (flag_debug == true) then fibaro:debug("Retry process, please wait..."); end fibaro:sleep(1000); return _sendCommand(cmd, retry +1); end return false; end end local function _resultCommand(cmd, retry) local retry = retry or 0; local result_cmd = nil; -- receiver should return the command sent if success while (result_cmd ~= string.sub(cmd, 1, 3) and retry < _maxRetryProcess) do -- notify user if (flag_debug == true) then fibaro:debug("Try to analize result, #" .. retry .. " please wait..."); end fibaro:sleep(60); local result = _tcpSocket:read(); -- check if result is equal than command to confirm sucess result_cmd = string.sub(result, 19, 21); if (flag_debug == true) then fibaro:debug("Result of command : " .. result_cmd); end if (result_cmd ~= string.sub(cmd, 1, 3)) then if (flag_debug == true) then fibaro:debug("Result failed, retry process, please wait..."); end retry = retry + 1; else return result; end end return false; end --open a local socket _tcpSocket = Net.FTcpSocket(_deviceIp, _devicePort); --set the read timeout _tcpSocket:setReadTimeout(250); local sC = _sendCommand(command); if (sC == true) then local rC = _resultCommand(command); -- close socket _tcpSocket:disconnect(); -- destroy object _tcpSocket = nil; if (rC == false) then fibaro:debug("Command " .. command .. " transmited but not confirmed, result ok on receiver ?"); else fibaro:debug("Command " .. command .. " transmited and " .. msg_cmd .. " confirmed"); local cmd_type = command:match("QSTN"); if (cmd_type ~= nil) then fibaro:debug("Retour info àtraiter"); else fibaro:debug("Process terminated !"); end end else fibaro:debug("TCP socket error, Connection failed !"); end Je ne sais pas pourquoi, la commande n'est pas envoyée. On dirait que le message n'est pas formé. Alors que si je demande la commande PWR01 par exemple, ça marche sans problème. Une idée ?
  23. BenjyNet

    Alarme Satel

    Il faut pas flasher en polonais, il faut flasher en anglais avec le flashx polonais !
  24. BenjyNet

    Popcorn Hour

    Ah bah voilàmais c'est très bien tout ça ! Mp envoyé.
×
×
  • Créer...