BenjyNet Posté(e) le 15 février 2014 Auteur Signaler Posté(e) le 15 février 2014 Ouch t'es un couche tard toi Bon, je vais au dodo, je testerai ça demain. Merci en tout cas de ton aide, je l'ai déjàdit mais faut le redire
BenjyNet Posté(e) le 16 février 2014 Auteur Signaler Posté(e) le 16 février 2014 Bon j'ai pas utilisé ce que tu m'as indiqué, j'ai fais à ma sauce. J'ai allègrement pompé sur ce que t'as fait mais par contre je rencontre un soucis sur le mute. J'ai comme affichage pour le powerstatus : ON ou OFF et si c'est avec mute ça devient : ON - Mutting ou OFF - Mutting Alors pour virer le " - Mutting" j'ai fait ça : -- Refresh UI local label = fibaro:getValue(fibaro:getSelfId(), "ui.lblPowerStatus.value"); local labelUpdated = label:gsub(" - Mutting", ""); fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblPowerStatus.value", labelUpdated); Mais ça ne marche pas, ça me retire Mutting mais ça me laisse " - ". Une idée ?
Krikroff Posté(e) le 16 février 2014 Signaler Posté(e) le 16 février 2014 Elle ne te plaisait pas ma fonction parsePowerState ... C'est quoi ta sauce ? Il manque le pattern qui va bien dans le gsub: label:gsub("%s[-]%sMutting", "") Le pattern matching c'est très pratique cf.http://www.lua.org/pil/20.2.html le - est réservé donc il faut utiliser par convention le couple [] pour crée un char-set, le %s c'est pour matcher un espace. Bientôt un super device pour ONKYO, cool JC.
BenjyNet Posté(e) le 16 février 2014 Auteur Signaler Posté(e) le 16 février 2014 Oh punaise, cette page je l'ai lue je ne sais pas combien de fois et c'était sous mes yeux. Pour ma sauce je finis un truc sur le mainloop et je post le VD 1.0.2 en pièce jointe dès que c'est fait. Si tu peux j'aimerai bien que tu regardes le code, histoire de voir si ça tiens la route ou pas. En tout cas merci d'avance pour tes renseignements et pour ton VD qui a permis de développer celui là.
BenjyNet Posté(e) le 16 février 2014 Auteur Signaler Posté(e) le 16 février 2014 Hop, modification du premier post. Le VD est en ligne et fonctionne pas mal. Merci pour tout JC... ton nom est dans le VD bien entendu Bon mais c'est pas tout, maintenant que la base est là , je vais pouvoir agrémenter un peu et utiliser les fonctions de la source NET pour écouter ma radio internet préférée quand je me lève. Pffiou encore du codage
Domodial Posté(e) le 17 février 2014 Signaler Posté(e) le 17 février 2014 Bonjour à tous, J'avais tenté a l'époque d'intégrer mon OnKyo, mais dans le tuto il fallait rentrer une chaine de caractère bizarre, j'avais été jusqu'au bout de la démarche mais il n'a jamais fonctionné. Il est connectable, reseau etc... Je vais essayer avec ce VD car le but est d'allumer l'ampli avec la TV (le contraire ça fonctionne avec le protocole ARP, mais pas pour l'allumage). PS : c'etait justement cette chaine : ISCP\0\0\0\16\0\0\0\9\1\0\0\0!1PWR01\r que j'avais adapté pour mon ampli d'après le doc qu'ils expliquait. Bernie
BenjyNet Posté(e) le 17 février 2014 Auteur Signaler Posté(e) le 17 février 2014 Bah test Domodial. Tu me diras si ça marche, je rajouterai la référence de ton ampli dans le VD si ça fonctionne. Ici avec une TV SONY de 2010, pas du tout "smart", mais "CRC capable", l'ampli allume la TV et si je choisis la source BD/DVD il me positionne sur l'entrée HDMI qui va bien. Si je choisis TV/CD il se met sur la TV (il faut d'ailleurs que j'améliore ça, si c'est possible). Bon j'ai un peu réfléchis cette nuit et il y a des choses qui me dérangent dans le code. Je vais scinder tout ça pour avoir des sous-fonctions plus simples à utiliser ou gérer ou tout simplement comprendre pour réutiliser le code pour créer d'autres boutons (pour ceux que ça intéresse). Par contre les vacances c'est à la fin de la semaine et je pars direct au ski, je serais moins présent mais je vous suivrai là haut de la montagne
Domodial Posté(e) le 17 février 2014 Signaler Posté(e) le 17 février 2014 Oui je vais tester ce soir. Moi aussi tout ce positionnne sur les bonne sources. L'amplificateur s'éteint mais ne s'allume pas automatiquement si je le met en veille. Si je coupe le jus directement il s'allume.
BenjyNet Posté(e) le 17 février 2014 Auteur Signaler Posté(e) le 17 février 2014 Ah j'ai une option pour ça moi, il faut activer le HYBRID STANDBY avec HDMI Through àON (laisse passer le signal HDMI de ta freeplayer par exemple sans allumer l'ampli, idéal pour juste mater la TV par exemple) et NETWORK STANDBY àON (pour écouter/envoyer sur le réseau). Si ton NETWORK STANDBY n'est pas allumé, l'ampli ne répond pas aux commandes réseaux. Pour ce qui est de la commande envoyée par le VD pour l'allumer, c'est une commande qui date des tout premiers modèles INTEGRA commandable par liaison série, elle devrait donc fonctionner !
Domodial Posté(e) le 17 février 2014 Signaler Posté(e) le 17 février 2014 ha ben merci ! Je me souviens vaguement de cette option dans l'ampli, et j'avais rien compris meme avec le mode d'emploi Je regarde, car a la limite c'est juste ce qu'il me faut, mais pour le plaisir j'essaye le VD ce soir.
BenjyNet Posté(e) le 17 février 2014 Auteur Signaler Posté(e) le 17 février 2014 Bon je suis coincé sur un truc débile de newbie je pense. J'en appelle au grand Krikroff... oh grand maitre jedi du codage, grand gourou du virtual device et prophète du lua (c'est un dieu ce gars.. non ?? ) Enfin si quelqu'un d'autre veut s'exprimer il peut hein ! local function _toto(command, retry) local retry = retry or 0; blablabla local result = _parceMessage() if ok then return true else return _toto(command, retry + 1 ); end local function _parceMessage() blablabla return true end Dans ma fonction _parceMessage, est-ce que je peux utiliser les variables passée à la fonction _toto et les variables locales comme retry, crée dans _toto ? Ou alors faut-il repasser à _parceMessage un argument qui sera identique à command par exemple. Autre chose, est-ce que la ligne return _toto(command, retry + 1 ); est correcte sachant que command a été passé en parametre au 1er lancement de la fonction. Hum.. fonction, variables, imbrication.. c'est la m*****
Krikroff Posté(e) le 17 février 2014 Signaler Posté(e) le 17 février 2014 Oui Benjy, la ligne return _toto(command, retry + 1 ); semble bonne . Pour le reste, je suis pas sur de bien tout comprendre... Le meilleur moyen encore d’accéder à une variable de partout c'est d'utiliser une variable Globale: c.a.d crée sans le "local" devant.
Shad Posté(e) le 17 février 2014 Signaler Posté(e) le 17 février 2014 Si je peux te donner un conseil pour la compréhension et facilité à maintenir ton code. Tu devrais éviter d'imbriquer plusieurs fonctions dans une. Rends les toutes "indépendantes", et à chaque fois que tu appelles une fonction du passe les variables que tu veux dedans. Sa t'éviteras pas mal de casse tête. En cas d'évolution tu n'auras pas à toucher a toutes tes fonctions pour faire fonctionner ton code. De plus, justement l'intérêt d'une fonction est de la sortir de ton code pour l'appeler en cas de besoin. Sinon oui, ton return toto me parait bon.
BenjyNet Posté(e) le 17 février 2014 Auteur Signaler Posté(e) le 17 février 2014 Bon ok, je vais laisser comme c'était. Je vais juste modifier pour utiliser une seule et unique fonction pour envoyer une commande pour faire une action ou pour obtenir un statut. En fait actuellement j'ai créé plusieurs fonctions pour chaque bouton. Si c'est un bouton qui doit faire une action, par exemple allumer l'ampli, j'ai une fonction avec test de retour de consigne qui repond true or false. Alors que pour le bouton qui check si l'ampli est allumé j'ai une réponse également true or false mais si c'est pour connaitre l'entrée, j'ai encore une autre fonction qui me retourne le nom de l'entrée. Je vais me pencher sur la question et voir ce que je pourrais obtenir pour justement simplifier la chose et mieux comprendre le code. J'ai pas encore l'esprit logique là dessus. Le codage c'est un métier, c'est clair !
Moicphil Posté(e) le 17 février 2014 Signaler Posté(e) le 17 février 2014 En tout cas, Ben, je te tiens à te féliciter pour le travail réalisé et ta persévérance !
BenjyNet Posté(e) le 17 février 2014 Auteur Signaler Posté(e) le 17 février 2014 Merci Phil mais le gros du boulot a été fait par Krikroff. @ Domodial, ça marche ou pas alors ?
Domodial Posté(e) le 18 février 2014 Signaler Posté(e) le 18 février 2014 dsl j'essaye ce soir, hier j'étais trop épuisé, impossible faire quoi que ce soit ^^
Domodial Posté(e) le 18 février 2014 Signaler Posté(e) le 18 février 2014 Verdict ! C'est de la bombe !! Je n'ai essayé que le bouton On/Off mais ça fonctionne. Mon modèle est le TX-NR509
lionel Posté(e) le 18 février 2014 Signaler Posté(e) le 18 février 2014 (modifié) Verdict ! C'est de la bombe !! Je n'ai essayé que le bouton On/Off mais ça fonctionne. Mon modèle est le TX-NR509 Fayot ! tout ça pour gagner le sondage Lionel, merci de ne pas citer le message précédent. Modifié le 19 février 2014 par moicphil Modération
Domodial Posté(e) le 18 février 2014 Signaler Posté(e) le 18 février 2014 Bon finalement je viens de tout tester. Tout est OK sauf le bouton Toggle qui coupe l'ampli. Est-ce normal ? D'ailleurs ça veut dire quoi Toggle ? (basculer)... pige pas.
BenjyNet Posté(e) le 18 février 2014 Auteur Signaler Posté(e) le 18 février 2014 Oui Toggle ça veut dire basculer. Tu peux de cette façon changer l'état de ton ampli à l'aide d'un seul bouton pour allumer/éteindre. Et comme il n'y a qu'un bouton dans le home c'est pratique. De là tu peux allumer/éteindre et régler le volume... , ça évite de rentrer dans le VirtualDevice juste pour ça.
Domodial Posté(e) le 19 février 2014 Signaler Posté(e) le 19 février 2014 Mouarf t'es un ouf ! Tu as la serie d'icon qui va avec les touches ou pas ?
BenjyNet Posté(e) le 19 février 2014 Auteur Signaler Posté(e) le 19 février 2014 Nope j'ai pas fait encore, je suis sur le développement d'une version un peu plus poussée 1.1.0 En plus je ne suis pas graphiste donc les idées/coups de main pour faire quelque chose de joli, je ne les ais pas forcément.
BenjyNet Posté(e) le 19 février 2014 Auteur Signaler Posté(e) le 19 février 2014 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 ?
Krikroff Posté(e) le 20 février 2014 Signaler Posté(e) le 20 février 2014 Ca donne quoi avec un debug sur string.format("ISCP\0\0\0\16\0\0\0\%s\1\0\0\0!1%s\r", cmd_length, cmd) ?
Messages recommandés