Aller au contenu

Recommended Posts

Quick App - Remote Denon

Voici un QA pour piloter un amplificateur Audio-Vidéo de la Marque DENON.

Il est calibré selon mes besoins mais vous pouvez ajouter facilement les fonctions que vous souhaitez sur votre amplificateur.

Avec mon neveu (et oui encore lui) nous sommes parti du Vd réalisé par @sebcbien sur le forum pour les amplificateur MARANTZ qui est une filiale de DENON.

Les codes sont presque tous les mêmes. Les commandes passent par Telnet (port 23 par défaut).

Le QA n'est peut-être pas parfait mais je n'ai pas eu de bugs.

Vous pouvez le modifier et l'améliorer à votre convenance.

Pour le paramètrage, tout est expliqué dans le header.

QA-DENON.png.81d2418c886003003e43932b7f82937f.png

Code:

--------------------------------------------------------------------------------------------------------------------------------------
-- QuickApp Amplificateur Audio-Vidéo DENON AVR-X3200W
-- Commutateur binaire
-- HISTORIQUE
-- Adapté de https://www.domotique-fibaro.fr/topic/3263-telecommande-pour-marantz-sr6008-et-similaires-5008-7008-etc/?tab=comments#comment-46332
-- V3.2 (10/01/2015) Remote Marantz de SebcBien
-- HC3 Version:
-- V1.0 (14/05/2020) Remote Denon pour Home center 3 par fredokl et Maxime pour le site www.domotique-fibaro.fr
-- Utilistaion :
--      La connexion à l'amplifivateur Audio-Vidéo se fait par TELNET (port:23 par défaut)
--      Créer les variables "ip" & "port"
--      Ajouter les commandes que vous souhaitez dans la partie "RÉGLAGES UTILISATEUR"
--      Toutes les modifications se font dans la partie "RÉGLAGES UTILISATEUR"
--      À l'excepter des noms des appareils que vous utilisez chez vous
--              ==> voir QuickApp:onDataReceived(data)
--                      ==> VOS APPAREILS ICI
-- Vous pouvez le modifier et l'améliorer à votre guise.
--------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------
--                                                      PARAMÈTRES UTILISATEUR                                                      --
--------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------
QuickApp._VERSION = "1.0" 
function QuickApp:onInit()
    __TAG = "QA_"..plugin.mainDeviceId.."DENON"
    self:trace("DEBUT ========================================================")
    self.ip = self:getVariable("ip")
    self.port = tonumber(self:getVariable("port"))
    self:setVariable("mute", "0")
    self.sock = net.TCPSocket() -- création d'une instance TCPSocket
    self.isOn = false
    self.isconnected = false
    self:connect()    
    self.pollingTime = 1000*60 -- 1min
    self:refresh()
end
--------------------------------------------------------------------------------------------------------------------------------------
-- ON & OFF
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:turnOn() self:debug("Turn On") self:sendCommand("PWON") self:getinfo() end
function QuickApp:uibtnonOnReleased(event) self:turnOn() end
function QuickApp:turnOff()self:debug("Turn off") self:sendCommand("PWSTANDBY") self:getinfo() end
function QuickApp:uibtnoffOnReleased(event) self:turnOff() end
--------------------------------------------------------------------------------------------------------------------------------------
-- Boutons de volume
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:uibtnvol30OnReleased(event) self:SetVol(30) self:getinfo() end
function QuickApp:uibtnvol40OnReleased(event) self:SetVol(40) self:getinfo() end
function QuickApp:uibtnvol50OnReleased(event) self:SetVol(50) self:getinfo() end
function QuickApp:uibtnvol60OnReleased(event) self:SetVol(60) self:getinfo() end

function QuickApp:uibtnmuteOnOff(event)
    if self:getVariable("mute") == "0" then
        self:setVariable("mute","1")
        self:sendCommand("MUON") 
        self:updateProperty("value", true)       
        self:getinfo()
    elseif self:getVariable("mute") == "1" then
        self:setVariable("mute", "0")
        self:sendCommand("MUOFF")
        self:updateProperty("value", false)        
        self:getinfo()
    end
end
--------------------------------------------------------------------------------------------------------------------------------------
-- FORMATS SONORS
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:uiddOnReleased(event) self:debug("Dolby Digital") self:sendCommand("MSDOLBY DIGITAL") self:getinfo() end
function QuickApp:uidtsOnReleased(event) self:debug("DTS") self:sendCommand("MSDTS SURROUND") self:getinfo() end
function QuickApp:ui7chstOnReleased(event) self:debug("7 Canaux Stereo") self:sendCommand("MSMCH STEREO") self:getinfo() end
--------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------
--                                                 NE RIEN TOUCHER À PARTIR D'ICI                                                   --
--------------------------------------------------------------------------------------------------------------------------------------
-- VOLUME & SLIDER
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:SetVol(value)
    if value < 10 then value = "0" ..value end
    self:sendCommand("MV" ..tostring(value))
    self:trace("Volume", value)
end

function QuickApp:uivolumeOnChanged(event)
   local value = event.values[1]
   self:SetVol(value)
   self:getinfo()
end
--------------------------------------------------------------------------------------------------------------------------------------
-- REQUÊTE HTTP
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:getinfo()
    self:sendCommand("PW?") -- Power
    self:sendCommand("SI?")  -- source
    self:sendCommand("MS?") -- format sono
    self:sendCommand("MV?") -- volume
    end

function QuickApp:uigetinfo()
self:getinfo()
end

function QuickApp:sendCommand(strToSend)
local command = strToSend .."\r"
    self.sock:write(command, {
        success = function() -- fonction qui sera déclenchée lorsque les données seront correctement envoyées
            --self:trace("data sent" ..command)
        end,
        error = function(err) -- fonction qui sera déclenchée en cas d'erreur de transmission de données
            self:trace("error while sending data")
        end
    })
end
 
-- méthode pour lire les données du socket
-- puisque la méthode elle-même a été bouclée, elle ne doit pas être appelée depuis un autre emplacement que QuickApp:connect()
function QuickApp:waitForResponseFunction()
    self.sock:read({ -- lire un paquet de données depuis le socket
        success = function(data)
            self:onDataReceived(data) -- traitement des données reçues
            self:waitForResponseFunction() -- lecture en boucle des données
        end,
        error = function() -- une fonction qui sera appelée en cas d'erreur lors de la tentative de réception de données, par ex. déconnexion d'un socket
            self:trace("response error")
            self.sock:close() -- socket fermé
            fibaro.setTimeout(5000, function() self:connect() end) -- tentative de reconnexion (toutes les 5 secondes)
        end
    })
end
 
-- méthode pour ouvrir une connexion TCP.
-- si la connexion réussit, la boucle de lecture des données sera appelée QuickApp:waitForResponseFunction ()
function QuickApp:connect()
    self.sock:connect(self.ip, self.port, { -- connexion à l'appareil avec l'adresse IP et le port spécifiés
        success = function() -- la fonction sera déclenchée si la connexion est correcte
            self:trace("connected")
            self.isconnected = true
            self:waitForResponseFunction() -- lancement d'une "boucle" de lecture de données
        end,
        error = function(err) -- une fonction qui sera déclenchée en cas de connexion incorrecte, par ex. timeout
            self.sock:close() -- fermeture du socket
            self:warning("connection error")
            self:updateView("lblSource", "text", "Source: N/A")
            self:updateView("lblSur", "text", "Format Sonor: N/A")
            self:updateView("lblVolStat", "text", "Volume: N/A")
            self:updateView("Slidervolume", "value", "0")
            fibaro.setTimeout(5000, function() self:connect() end) -- tentative de reconnexion (toutes les 5 secondes)
        end,
    })
end
 
-- fonction de gestion des données lues
-- normalement c'est là que les données rapportées par l'appareil seront traitées
function QuickApp:onDataReceived(data)
    --self:trace("onDataReceived", data)
    power = string.find(data, "PW.")
    volume = string.find(data, "MV%d")
    formatsonor = string.find(data, "MS.")
    source = string.find(data, "SI.")
    if power then
        if string.sub(data, 3, #data - 1) == "STANDBY" then
                self.isOn = false
                self:updateView("lblSource", "text", "Source: N/A")
                self:updateView("lblSur", "text", "Format Sonor: N/A")
                self:updateView("lblVolStat", "text", "Volume: N/A")
                self:updateView("Slidervolume", "value", "0")
                self:updateProperty("value", false)
        else self.isOn = true self:updateProperty("value", true)
        end
    end
    if self.isOn then
        if volume then
            local statSliderVol = string.sub(data, 3, #data-1)
            if string.len(statSliderVol) == 3 then statSliderVol = string.sub(statSliderVol, 1, 2) end
            self:updateView("lblVolStat", "text", "Volume: " ..statSliderVol .." %")
            self:updateView("Slidervolume", "value", statSliderVol) -- updating the text for 'Slidervolume'.
        end
        if formatsonor then
        self:updateView("lblSur", "text", "Mode Surround: " ..string.sub(data, formatsonor + 2))
        self:trace("Mode Surround: " ..string.sub(data, formatsonor + 2))
        end
        if source then
        source = string.sub(data, source + 2)
            sourcetable = {
                -- VOS APPAREILS ICI -------------------------------------------
                MPLAY = "APPLE TV4",
                --SAT/CBL = "FREEBOX", --A VERIFIER SUR AMPLI ET PC
                BD = "PS4",
                TV = "TV SONY"
                -- VOS APPAREILS ICI -------------------------------------------
            }
            translatesource = sourcetable[string.sub(source, 1, #source -1)]
            if translatesource == nil then translatesource = source end
            self:updateView("lblSource", "text", "Appareil connecté: " ..translatesource)
            self:trace("Appareil connecté: " ..translatesource)
            self:trace("FIN ========================================================")
        end
    end
end
--------------------------------------------------------------------------------------------------------------------------------------
-- REFRESH
--------------------------------------------------------------------------------------------------------------------------------------
-- fonction refresh du QA
function QuickApp:refresh()
if self.isconnected then 
self:getinfo()
end
fibaro.setTimeout(self.pollingTime, function() self:refresh() end) -- looping part
end
--------------------------------------------------------------------------------------------------------------------------------------
--                                                              FIN DU CODE                                                         --
--------------------------------------------------------------------------------------------------------------------------------------

QuickApp:

QA-DENON.fqa

Icônes On & Off:

1337254382_DENONAVRX3400H_ON.png.2428e440a7d97e1cd5ffb063a5c23a4a.png1624611184_DENONAVRX3400H_OFF.png.e13fbb6f175ec233601c4a14fb44ef7c.png

 

 

 

 

Modifié par fredokl
Modification du Header
  • Like 4

Partager ce message


Lien à poster
Partager sur d’autres sites

super @fredokl, dès que j'ai ma HC3 je ferai les motifs pour supporter HEOS à partir de ton QA 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Dommage mon il me faut pour onkyo

J'ai regardé mais j'ai comprend rien au code du VD sonos sur ma hc2

Envoyé de mon BLA-L29 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 15/05/2020 à 12:18, mprinfo a dit :

Dommage mon il me faut pour onkyo
J'ai regardé mais j'ai comprend rien au code du VD sonos sur ma hc2
 

Onkyo ! :rolleyes:... quelle idée aussi ! :P

:2:

 

  • Like 1
  • Haha 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello,

 

Je te remercie d'avoir crée ce tuto :-)

 

J'aurai quelques questions:

 

Je possède un ampli Marantz (SR5013) avec une HC3 et quand j'essaie d'implémenter le code j'obtiens ce message d'erreur:

[17.11.2020] [11:01:01] [ERROR] [QUICKAPP432]: QuickApp crashed[17.11.2020] [11:01:01] [ERROR] [QUICKAPP432]: Unknown error occurred: void connect(TCPSocket&,std::string const&,int)

 

Je pense qu'il n'arrive pas à créer le socket de connexion directement sur mon ampli

 

Voici la partie de code dont j'ai modifié:

--------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------
--                                                      PARAMÈTRES UTILISATEUR                                                      --
--------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------
QuickApp._VERSION = "1.0" 
function QuickApp:onInit()
    __TAG = "QA_"..plugin.mainDeviceId.."Marantz"
    self:trace("DEBUT ========================================================")
    self.ip = self:getVariable("172.22.22.26")
    self.port = tonumber(self:getVariable("23"))
    self:setVariable("mute""0")
    self.sock = net.TCPSocket() -- création d'une instance TCPSocket
    self.isOn = false
    self.isconnected = false
    self:connect()    
    self.pollingTime = 1000*60 -- 1min
    self:refresh()
end
 
 
J'ai essayé le port 5'000 et le port 10443 (port du http) mais rien à faire, impossible d'établir la connexion.
 
Et ma 2ème question:
je dois mettre quoi comme nom ID, onReleased lorsque je créer mon bouton, ou barre de son?
 
Désolé, mais c'est ma 1er QA et j'ai essayé de comprendre un maximum sur le forum, mais je ne possède que des bout de réponse par-ci par-là.
 
Un tout grand merci d'avance pour vos réponses :)
 

Partager ce message


Lien à poster
Partager sur d’autres sites

Voici le logs d'erreur au complet:

 

[18.11.2020] [16:49:00] [TRACE] [QA_432MARANTZ]: DEBUT ========================================================
[18.11.2020] [16:49:00] [WARNING] [QA_432MARANTZ]: Variable 172.22.22.26 not found
[18.11.2020] [16:49:00] [WARNING] [QA_432MARANTZ]: Variable 23 not found
[18.11.2020] [16:49:00] [ERROR] [QUICKAPP432]: QuickApp crashed
[18.11.2020] [16:49:00] [ERROR] [QUICKAPP432]: Unknown error occurred: void connect(TCPSocket&,std::string const&,int)

Partager ce message


Lien à poster
Partager sur d’autres sites

tu ne dois pas changer les lignes self.ip et self.port

tu dois créer des variables qui s'appellent ip et port dans la configuration du QA

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui tu peux aussi faire comme cela

self.ip = "172.22.22.26"

Au lieu de cela

self.ip = self:getVariable("172.22.22.26")



Envoyé de mon BLA-L29 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 13 heures, Cardane a dit :

tu ne dois pas changer les lignes self.ip et self.port

Oui, c'est changé mais je l'avais changé directement dans l'initation de connexion à travers le socket

 

 self.sock:connect("172.22.22.26", "23", {
 
mais j'ai remis comme de base et j'ai mis directement les varaibles:
 
    self.ip = "172.22.22.26"
    self.port = "23"
 
Malheureusement:
[19.11.2020] [09:16:03] [TRACE] [QA_432_C'EST_PAS_MARANTZ]: DEBUT ========================================================
[19.11.2020] [09:16:03] [ERROR] [QUICKAPP432]: QuickApp crashed
[19.11.2020] [09:16:03] [ERROR] [QUICKAPP432]: Unknown error occurred: void connect(TCPSocket&,std::string const&,int)
 
Bon j'ai essayé de supprimer tous les label et boutons pour voir si cela pouvait empêcher la connexion à cause d'une éventuelle erreur dans le code mais il reste tjs bloqué void connect(TCPSocket&,std::string const&,int)
 
J'ai même tenté plusieurs autre port mais rien à faire à savoir: 80, 8080 1255 mais rien à faire.
 
Si seulement j'arrivai à faire fonctionner au moins la connexion, après je pourrai tester les différentes commandes.
 
Le problème de l'application officiel de la remote du marantz c'est qu'elle bouffe toute la batterie et que 1x sur 15 elle fonctionne sans que j'ai besoin d'arrêter le processus sur mon samsung S10+ :( 
Vous avez un lien vers de la documentation sur ces quick:app ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors j'ai contrôlé depuis un pc branché sur le même réseau pour savoir si le port 23 est bien ouvert et en mode écoute

 

C:\PortQryV2>portqry -n 172.22.22.26 -e 23
 
Querying target system called:
 
 172.22.22.26
 
Attempting to resolve IP address to a name...
 
Failed to resolve IP address to name
 
querying...
 
TCP port 23 (telnet service): LISTENING
 
Tout semble ok, est-ce que je dois trouver une option dans mon ampli pour lui autoriser de recevoir des commandes par telnet?
 
 
J'ai également été voir sur le doc officiel de fibaro pour voir si la méthode employé dans le code ci-dessus est toujours d'actualité et la réponse c'est oui:
 
3
4
5
6
7
8
9
10
11
12
function QuickApp:onInit()
    self.sock = net.TCPSocket()
 
    self.sock:connect(self.ip, self.port, {
        success = function()
            self:debug("connected")
        end,
        error = function(message)
            self:debug("connection error:", message)
        end,
    })
end
 
Tout semble être ok mais impossible de faire fonctionner.
 
Je remets le code entier :
--------------------------------------------------------------------------------------------------------------------------------------
-- QuickApp Amplificateur Audio-Vidéo DENON AVR-X3200W
-- Commutateur binaire
-- HISTORIQUE
-- Adapté de https://www.domotique-fibaro.fr/topic/3263-telecommande-pour-marantz-sr6008-et-similaires-5008-7008-etc/?tab=comments#comment-46332
-- V3.2 (10/01/2015) Remote Marantz de SebcBien
-- HC3 Version:
-- V1.0 (14/05/2020) Remote Denon pour Home center 3 par fredokl et Maxime pour le site www.domotique-fibaro.fr
-- Utilistaion :
--      La connexion à l'amplifivateur Audio-Vidéo se fait par TELNET (port:23 par défaut)
--      Créer les variables "ip" & "port"
--      Ajouter les commandes que vous souhaitez dans la partie "RÉGLAGES UTILISATEUR"
--      Toutes les modifications se font dans la partie "RÉGLAGES UTILISATEUR"
--      À l'excepter des noms des appareils que vous utilisez chez vous
--              ==> voir QuickApp:onDataReceived(data)
--                      ==> VOS APPAREILS ICI
-- Vous pouvez le modifier et l'améliorer à votre guise.
--------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------
--                                                      PARAMÈTRES UTILISATEUR                                                      --
--------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------
QuickApp._VERSION = "1.0" 
function QuickApp:onInit()
    __TAG = "QA_"..plugin.mainDeviceId.."DENON"
    self:trace("DEBUT ========================================================")
    self.ip = "172.22.22.26"
    self.port = "23"
    self:setVariable("mute""0")
    self.sock = net.TCPSocket() -- création d'une instance TCPSocket
    self.isOn = false
    self.isconnected = false
    self:connect()    
    self.pollingTime = 1000*60 -- 1min
    self:refresh()
end
--------------------------------------------------------------------------------------------------------------------------------------
-- ON & OFF
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:turnOn() self:debug("Turn On") self:sendCommand("ZMON") self:getinfo() end
function QuickApp:uibtnonOnReleased(event) self:turnOn() end
function QuickApp:turnOff()self:debug("Turn off") self:sendCommand("ZMOFF") self:getinfo() end
function QuickApp:uibtnoffOnReleased(event) self:turnOff() end
--------------------------------------------------------------------------------------------------------------------------------------
-- Boutons de volume
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:uibtnvol30OnReleased(event) self:SetVol(30) self:getinfo() end
function QuickApp:uibtnvol40OnReleased(event) self:SetVol(40) self:getinfo() end
function QuickApp:uibtnvol50OnReleased(event) self:SetVol(50) self:getinfo() end
function QuickApp:uibtnvol60OnReleased(event) self:SetVol(60) self:getinfo() end
 
function QuickApp:uibtnmuteOnOff(event)
    if self:getVariable("mute") == "0" then
        self:setVariable("mute","1")
        self:sendCommand("MUON"
        self:updateProperty("value"true)       
        self:getinfo()
    elseif self:getVariable("mute") == "1" then
        self:setVariable("mute""0")
        self:sendCommand("MUOFF")
        self:updateProperty("value"false)        
        self:getinfo()
    end
end
--------------------------------------------------------------------------------------------------------------------------------------
-- FORMATS SONORS
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:uiddOnReleased(event) self:debug("Dolby Digital") self:sendCommand("MSDOLBY DIGITAL") self:getinfo() end
function QuickApp:uidtsOnReleased(event) self:debug("DTS") self:sendCommand("MSDTS SURROUND") self:getinfo() end
function QuickApp:ui7chstOnReleased(event) self:debug("7 Canaux Stereo") self:sendCommand("MSMCH STEREO") self:getinfo() end
--------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------
--                                                 NE RIEN TOUCHER À PARTIR D'ICI                                                   --
--------------------------------------------------------------------------------------------------------------------------------------
-- VOLUME & SLIDER
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:SetVol(value)
    if value < 10 then value = "0" ..value end
    self:sendCommand("MV" ..tostring(value))
    self:trace("Volume", value)
end
 
function QuickApp:uivolumeOnChanged(event)
   local value = event.values[1]
   self:SetVol(value)
   self:getinfo()
end
--------------------------------------------------------------------------------------------------------------------------------------
-- REQUÊTE HTTP
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:getinfo()
    self:sendCommand("PW?"-- Power
    self:sendCommand("SI?")  -- source
    self:sendCommand("MS?"-- format sono
    self:sendCommand("MV?"-- volume
    end
 
function QuickApp:uigetinfo()
self:getinfo()
end
 
function QuickApp:sendCommand(strToSend)
local command = strToSend .."\r"
    self.sock:write(command, {
        success = function() -- fonction qui sera déclenchée lorsque les données seront correctement envoyées
            --self:trace("data sent" ..command)
        end,
        error = function(err) -- fonction qui sera déclenchée en cas d'erreur de transmission de données
            self:trace("error while sending data")
        end
    })
end
 
-- méthode pour lire les données du socket
-- puisque la méthode elle-même a été bouclée, elle ne doit pas être appelée depuis un autre emplacement que QuickApp:connect()
function QuickApp:waitForResponseFunction()
    self.sock:read({ -- lire un paquet de données depuis le socket
        success = function(data)
            self:onDataReceived(data) -- traitement des données reçues
            self:waitForResponseFunction() -- lecture en boucle des données
        end,
        error = function() -- une fonction qui sera appelée en cas d'erreur lors de la tentative de réception de données, par ex. déconnexion d'un socket
            self:trace("response error")
            self.sock:close() -- socket fermé
            fibaro.setTimeout(5000function() self:connect() end-- tentative de reconnexion (toutes les 5 secondes)
        end
    })
end
 
-- méthode pour ouvrir une connexion TCP.
-- si la connexion réussit, la boucle de lecture des données sera appelée QuickApp:waitForResponseFunction ()
function QuickApp:connect()
    self.sock:connect(self.ip, self.port, { -- connexion à l'appareil avec l'adresse IP et le port spécifiés
        success = function() -- la fonction sera déclenchée si la connexion est correcte
            self:trace("connected")
            self.isconnected = true
            self:waitForResponseFunction() -- lancement d'une "boucle" de lecture de données
        end,
        error = function(err) -- une fonction qui sera déclenchée en cas de connexion incorrecte, par ex. timeout
            self.sock:close() -- fermeture du socket
            self:warning("connection error")
            self:updateView("lblSource""text""Source: N/A")
            self:updateView("lblSur""text""Format Sonor: N/A")
            self:updateView("lblVolStat""text""Volume: N/A")
            self:updateView("Slidervolume""value""0")
            fibaro.setTimeout(5000function() self:connect() end-- tentative de reconnexion (toutes les 5 secondes)
        end,
    })
end
 
-- fonction de gestion des données lues
-- normalement c'est là que les données rapportées par l'appareil seront traitées
function QuickApp:onDataReceived(data)
    --self:trace("onDataReceived", data)
    power = string.find(data, "PW.")
    volume = string.find(data, "MV%d")
    formatsonor = string.find(data, "MS.")
    source = string.find(data, "SI.")
    if power then
        if string.sub(data, 3, #data - 1) == "STANDBY" then
                self.isOn = false
                self:updateView("lblSource""text""Source: N/A")
                self:updateView("lblSur""text""Format Sonor: N/A")
                self:updateView("lblVolStat""text""Volume: N/A")
                self:updateView("Slidervolume""value""0")
                self:updateProperty("value"false)
        else self.isOn = true self:updateProperty("value"true)
        end
    end
    if self.isOn then
        if volume then
            local statSliderVol = string.sub(data, 3, #data-1)
            if string.len(statSliderVol) == 3 then statSliderVol = string.sub(statSliderVol, 12end
            self:updateView("lblVolStat""text""Volume: " ..statSliderVol .." %")
            self:updateView("Slidervolume""value", statSliderVol) -- updating the text for 'Slidervolume'.
        end
        if formatsonor then
        self:updateView("lblSur""text""Mode Surround: " ..string.sub(data, formatsonor + 2))
        self:trace("Mode Surround: " ..string.sub(data, formatsonor + 2))
        end
 
    end
end
--------------------------------------------------------------------------------------------------------------------------------------
-- REFRESH
--------------------------------------------------------------------------------------------------------------------------------------
-- fonction refresh du QA
function QuickApp:refresh()
if self.isconnected then 
self:getinfo()
end
fibaro.setTimeout(self.pollingTime, function() self:refresh() end-- looping part
end
--------------------------------------------------------------------------------------------------------------------------------------
--                                                              FIN DU CODE                                                         --
--------------------------------------------------------------------------------------------------------------------------------------
 
 
Je vous remercie d'avance pour vos réponses

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors, j'ai testé abec Putty les commandes qui sont dans le fichier excel et cela fonctionne parfaitement.

Donc du côté réseau et ampli tout est ok.

Partager ce message


Lien à poster
Partager sur d’autres sites

connais pas sur les Marantz, mais sur certains modèle de DENON il y avait effectivement une option dans le menu de config

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai trouvé ça dans les paramètres:

 

Commande réseau

Toujours actif 

 
 
Mais c'est ok, car avev putty, je peux directement envoyer mes commandes sur l'ampli et ca fonctionne.
Modifié par HadesCH

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors, j'ai trouvé le problème et il provenait du code.

 

En fait, la variable self.port ne doit pas être entouré de "", car dans le code initial:

self.port = tonumber(self:getVariable("port"))

On lui indique de faire un cast d'une variable de type texte (string) en nombre, du coup j'ai mis directement mon chiffre et c'est ok

    self.ip = "172.22.22.26"
    self.port = 23

 

[20.11.2020] [07:23:09] [TRACE] [QA_434MARANTZ]: DEBUT ========================================================
[20.11.2020] [07:23:09] [TRACE] [QA_434MARANTZ]: connected
[20.11.2020] [07:24:09] [TRACE] [QA_434MARANTZ]: Mode Surround: MCH STEREO
[20.11.2020] [07:25:09] [TRACE] [QA_434MARANTZ]: Mode Surround: MCH STEREO
[20.11.2020] [07:25:09] [TRACE] [QA_434MARANTZ]: Appareil connecté: SAT/CBL
[20.11.2020] [07:25:09] [TRACE] [QA_434MARANTZ]: FIN ========================================================

 

Voilou, du coup j'espère que ça pourrait aider qqun qui passe par là et qui voudrait récupérer cette quick app :) 

 

Modifié par HadesCH

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour

 

Pour ceux qui comme moi voudrait un peut plus de fonction pour ce QA

Pour info il fonction aussi pour un AVC-X8500HA

J'ai ajouter des sources (Tuner, DVD, TV, ect)

Le contrôle (haut, bas, gauche, droite, back, info,ect)

quelques formats sonors supplémentaire

J'ai récupérer ces infos et les ai adapter a ce QA

 

Ou trouver la liste complète des commandes?

Merci

--------------------------------------------------------------------------------------------------------------------------------------
-- Sources
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:iTuner(event)     self:debug("Input: Tuner")      self:sendCommand("SITUNER") self:getinfo() end
function QuickApp:iDvd(event)       self:debug("Input: DVD")        self:sendCommand("SIDVD") self:getinfo() end
function QuickApp:iBluray(event)    self:debug("Input: Blu-ray")    self:sendCommand("SIBD") self:getinfo() end
function QuickApp:iTv(event)        self:debug("Input: TV")         self:sendCommand("SITV") self:getinfo() end
function QuickApp:iSatcbl(event)    self:debug("Input: SAT/CBL")    self:sendCommand("SISAT/CBL") self:getinfo() end
function QuickApp:iGame(event)      self:debug("Input: Game")       self:sendCommand("SIGAME") self:getinfo() end
function QuickApp:iAux1(event)      self:debug("Input: Aux1")       self:sendCommand("SIAUX1") self:getinfo() end
function QuickApp:iNet(event)       self:debug("Input: Net")        self:sendCommand("SINET") self:getinfo() end
function QuickApp:iIradio(event)    self:debug("Input: iRadio")     self:sendCommand("SIIRADIO") self:getinfo() end
--------------------------------------------------------------------------------------------------------------------------------------
-- Control
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:info(event)       self:debug("Info")          self:sendCommand("MNINF") self:getinfo() end
function QuickApp:options(event)    self:debug("Options")       self:sendCommand("MNOPT") self:getinfo() end
function QuickApp:back(event)       self:debug("Back")          self:sendCommand("MNRTN") self:getinfo() end
function QuickApp:setup(event)      self:debug("Setup")         self:sendCommand("MNMEN ON") self:getinfo() end
function QuickApp:up(event)         self:debug("Up")            self:sendCommand("MNCUP") self:getinfo() end
function QuickApp:down(event)       self:debug("Down")          self:sendCommand("MNCDN") self:getinfo() end
function QuickApp:left(event)       self:debug("Left")          self:sendCommand("MNCLT") self:getinfo() end
function QuickApp:right(event)      self:debug("Right")         self:sendCommand("MNCRT") self:getinfo() end
function QuickApp:enter(event)      self:debug("Enter")         self:sendCommand("MNENT") self:getinfo() end
--------------------------------------------------------------------------------------------------------------------------------------
-- FORMATS SONORS
--------------------------------------------------------------------------------------------------------------------------------------
function QuickApp:DolbyD(event)     self:debug("Dolby Digital")         self:sendCommand("MSDOLBY DIGITAL") self:getinfo() end
function QuickApp:DTS(event)        self:debug("DTS")                   self:sendCommand("MSDTS SURROUND") self:getinfo() end
function QuickApp:Multicanal(event) self:debug("7 Canaux Stereo")       self:sendCommand("MSMCH STEREO") self:getinfo() end
function QuickApp:Stereo(event)     self:debug("Surround: Stereo")      self:sendCommand("MSSTEREO") self:getinfo() end
function QuickApp:rockArena(event)  self:debug("Surround: Rock Arena")  self:sendCommand("MSROCK ARENA") self:getinfo() end
function QuickApp:jazzClub(event)   self:debug("Surround: Jazz Club")   self:sendCommand("MSJAZZ CLUB") self:getinfo() end
function QuickApp:Movie(event)      self:debug("Surround: mode Movie")  self:sendCommand("MSMOVIE") self:getinfo() end
function QuickApp:Music(event)      self:debug("Surround: mode Music")  self:sendCommand("MSMUSIC") self:getinfo() end
function QuickApp:Game(event)       self:debug("Surround: mode Game")   self:sendCommand("MSGAME") self:getinfo() end

ce qui donne cela

 

denon QA.png

Modifié par flacon030

Partager ce message


Lien à poster
Partager sur d’autres sites

@flacon030 Content de voir que ce QA  intéresse encore du monde.

Voici le fichier que j'ai utilisé pour trouver mes commandes pour le QA.

En espérant que cela te conviendra.

AVR-3808CISerialProtocol_Ver5.2.0a.pdf

Modifié par fredokl

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci

Oui j'ai trouvé ce document, se qui m'a permis de faire mes modifications

Merci a toi pour ce QA

En plus il est toujours fonctionnel sur les dernière génération d’amplis denon

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello. Une question sur ces HC Denon. J'ai un avr 2000 et 2300w... Et depuis plusieurs années, denon a verrouillé les web radio... Avez vous une solution et peut-être une nouvelle feature pour cette qa ;)

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

hello @TitiXsi..  sur le AVR2300w tu n'as pas HEOS ? si oui tu as accès aux Web radios gratuitement 

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 9 heures, Cardane a dit :

hello @TitiXsi..  sur le AVR2300w tu n'as pas HEOS ? si oui tu as accès aux Web radios gratuitement 

Très bonne question.. Tu diffuses via ton portable sur le Denon ? Si tel est le cas, ce n'est pas mon but recherché:)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

non, pas du tout, mais je pilote mes petites enceintes déportées Heos à partir de mon AVR. 

Mais j'ai vérifié, il faut que le numero de ton modèle se termine par H, sinon Heos n'est pas présent dessus. Si oui, ce n'est qu'une source de plus pour l'Avr et entre autre les web radios via TuneIn

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 22/11/2023 à 18:28, Cardane a dit :

hello @TitiXsi..  sur le AVR2300w tu n'as pas HEOS ? si oui tu as accès aux Web radios gratuitement 

Et bien je confirme que je n'ai pas heos...vous alors, je ne sais où il est caché... :ph34r:

Partager ce message


Lien à poster
Partager sur d’autres sites

×