NEWS
[Aufruf] DENON & Marantz Adapter
-
Hi Leute,
ich habe begonnen einen DENON Adapter zu schreiben, es wäre cool wenn der ein oder andere diesen auf grundlegende Funktionalität prüfen könnte.
Ich habe den Adapter bislang mit einem Denon AVR-X1200W und einem Marantz SR5009 getestet.
Ebenfalls wäre es sehr hilfreich, welche Funktionen gewünscht sind, hierzu bitte unter: https://github.com/foxriver76/ioBroker.denon/issues ein Issue eröffnen. Darf gerne auch auf deutsch beschrieben werden.
Eine deutsche Beschreibung von Installation bis Bedienung findet ihr hier:
https://github.com/foxriver76/ioBroker. … /README.md
Sollte jemand Fragen haben, bitte hier im Thread schreiben.
beste Grüße
fox
-
Hey Fox,
hoffe magst auch Entwickler-Feedback?
-
www Verzeichnis weg wenn Du es nicht brauchst. Ebenso "widget" - es sei denn es ist wirklich ein Widget dabei! (Muss nicht)
-
wenn Du für Admin v2 keine Konfig-Seite anbieten willst dann index.html aus dem Admin Verzeichnis entfernen. Oder richtig implementieren
-
docs-Ordner mit Doku füllen oder entfernen (inkl. io-package.json)
-
Travis-CI/Appveyor bitte auch für Dich aktivieren (Dort anmelden mit deinem GitHub-Account) und dann einen Commit machen … dann laufen die tests automatisch
-
io-package.json: Adapter-typ bestimmt am besten "multimedia", oder ?!
-
io-package.sjon: in native fehlt die definition deiner IP-Variable die du im Admin konfigurieren lässt mit Standardwert
-
am besten nimm anstelle "connected" einen State "info.connection" wie andere Adapter auch.Das nutzt Admin automatisch um gelb/grün anzuzeigen. Also einen Channel info und darin State connection. Siehe andere Adapter
-
Die ganzen States die "statisch" sind kannst Du auch einfach in die io-package.json in "instanceObjects" eintragen dann werden die automatisch angelegt. SOnst bitte immer setObjectNotExists nutzen, da bei setObject die Objektdefinitoon immer überschrieben wird - blöd wenn jemand z.B. History aktiviert hat, Dann fliegt die Konfig jedes mal weg.
-
Du hast a Beginn vom Code noch ein "on(statechange)" ... wirfs raus machst DU ja weiter unten nochmal
-
Auch checkPassowrd/checkGroup kann raus, oder ?!
Sonst passt alles
-
-
hoffe magst auch Entwickler-Feedback? `
Klar.
- docs-Ordner mit Doku füllen oder entfernen (inkl. io-package.json) `
Wo wird der docs Ordner herangezogen? Hatte eigentlich vor die Doku erst mal in der README zu führen. Wenn das schlechter Stil ist, würde ich es jedoch anpassen.
- Travis-CI/Appveyor bitte auch für Dich aktivieren (Dort anmelden mit deinem GitHub-Account) und dann einen Commit machen … dann laufen die tests automatisch `
Travis hatte ich schon, habe jetzt noch das für Windows hinzugefügt.
Vielen Dank für dein Feedback, werde es bestmöglich umsetzen.
beste Grüße
fox
-
- docs-Ordner mit Doku füllen oder entfernen (inkl. io-package.json) `
Wo wird der docs Ordner herangezogen? Hatte eigentlich vor die Doku erst mal in der README zu führen. Wenn das schlechter Stil ist, würde ich es jedoch anpassen. `
"Noch" nirgends … soll für die nächste Version der iobroker Webseite genutzt werden um Alle Adapter da drin zu haben.
- Travis-CI/Appveyor bitte auch für Dich aktivieren (Dort anmelden mit deinem GitHub-Account) und dann einen Commit machen … dann laufen die tests automatisch `
Travis hatte ich schon, habe jetzt noch das für Windows hinzugefügt. `
Hatte aber auch Travis nicht bei den Commits im Github gesehn … da sollte ein grüne Häckchen kommen. -
"Noch" nirgends … soll für die nächste Version der iobroker Webseite genutzt werden um Alle Adapter da drin zu haben. `
Danke dir. Dann werde ich das mal mit auf die Agenda packen.
Travis hatte ich schon, habe jetzt noch das für Windows hinzugefügt.
Hatte aber auch Travis nicht bei den Commits im Github gesehn … da sollte ein grüne Häckchen kommen.
Das funktioniert soweit. AppVeyor nun auch s. Anhang.
6392_bildschirmfoto_vom_2018-06-02_00-32-36.png -
Perfekt, dann ich blind
-
Hi,
super, endlich ein Denon-Adapter 8-) Ich habe einen Denon AVR-X1200W und teste sehr gerne. Bislang steuere ich diesen über ein eigenes Script (mit einigen Anregungen von hier aus dem Forum), mit dem ich auch den Status auslese in Datenpunkten etc.
Bei der Installation im ioBroker allerdings folgende Fehlermeldung:
$ ./iobroker url "https://github.com/foxriver76/ioBroker.denon/tarball/master " install "https://github.com/foxriver76/ioBroker.denon/tarball/master npm install "https://github.com/foxriver76/ioBroker.denon/tarball/master --production --prefix "/opt/iobroker" (System call) /bin/sh: 1: Syntax error: Unterminated quoted string ERROR: host.raspberrypi Cannot install "https://github.com/foxriver76/ioBroker.denon/tarball/master: 2 ERROR: process exited with code 25
-
@Mic:Bei der Installation im ioBroker allerdings folgende Fehlermeldung:
$ ./iobroker url "https://github.com/foxriver76/ioBroker.denon/tarball/master " install "https://github.com/foxriver76/ioBroker.denon/tarball/master npm install "https://github.com/foxriver76/ioBroker.denon/tarball/master --production --prefix "/opt/iobroker" (System call) /bin/sh: 1: Syntax error: Unterminated quoted string ERROR: host.raspberrypi Cannot install "https://github.com/foxriver76/ioBroker.denon/tarball/master: 2 ERROR: process exited with code 25 ```` `
Bitte das Leerzeichen nach der URL weg machen
-
@Mic:super, endlich ein Denon-Adapter 8-) Ich habe einen Denon AVR-X1200W und teste sehr gerne. Bislang steuere ich diesen über ein eigenes Script (mit einigen Anregungen von hier aus dem Forum), mit dem ich auch den Status auslese in Datenpunkten etc. `
Da du ja bereits ein eigenes Skript nutzt, wäre es für mich interessant zu wissen, welche Funktionalitäten du über ioBroker (mit deinem Skript) bereits nutzt/gerne nutzen möchtest.
Da es mir etwas schwer fällt abzuschätzen, in wie weit manche Funktionen Priorität haben. Ich selbst nutze mein AVR nur sehr oberflächlich würde ich sagen.
beste Grüße
fox
P.S.: falls dein Skript über den Port 23 mit deinem AVR kommuniziert, muss das Skript die Verbindung schließen, damit der Adapter eine aufbauen kann. (habe ich auch mal in der README vermerkt)
-
Bitte das Leerzeichen nach der URL weg machen `
Oh mein Gott, sorry, shame on meDa du ja bereits ein eigenes Skript nutzt, wäre es für mich interessant zu wissen, welche Funktionalitäten du über ioBroker (mit deinem Skript) bereits nutzt/gerne nutzen möchtest.
Da es mir etwas schwer fällt abzuschätzen, in wie weit manche Funktionen Priorität haben. Ich selbst nutze mein AVR nur sehr oberflächlich würde ich sagen. `
Ich nutze auch nur ein paar Sachen: ein, aus, Kanalwechsel, dabei lauter/leiser: z.B. Kanal zum Fernsehen auf 50%, für Hintergrund-Musik 40%.
Unten folgt eine Funktion, der ich den gewünschten Kanal und die Lautstärke übergebe. Sie schaltet den Denon dann auch an, falls dieser noch aus ist.
Wie Du siehst, ist es ein ziemliches "Gebastle" mit Zeitverzögerung usw., aber es läuft.
Ich werde mir morgen mal Deinen Adapter dann näher ansehen, danke auch für Deinen Hinweis wegen dem Port 23.
/** * @desc Denon Receiver: Bestimmten Kanal setzen und die Lautstärke in % * @opt strTargetInputSel: z.B: "MPLAY" oder "TUNER" * @opt intVolumeLevelPercent - Lautstärke in % */ function global_m_Denon_SetInput(strTargetInputSel, intTargetVolumeInPercent) { // Update status first. global_m_Denon_UpdateStatus(); // Then, check status 250ms later. // Führen wir 250ms später aus, einfach um sicherzustellen, dass der aktuelle Status in den Datenpunkten steht. setTimeout(function() { // Get Status var denonStatus = { InpSel: getState('javascript.0.me.denon-status.InputSelection').val, isMute: getState('javascript.0.me.denon-status.isMuteOn').val, isPwrOn: getState('javascript.0.me.denon-status.isPowerOn').val, VolPerc: getState('javascript.0.me.denon-status.VolumeLevel').val + 80 }; // Commands if(denonStatus.isPwrOn === true) { // ==== Denon ist bereits an. ==== /* Falls die aktuelle Lautstärke leiser ist als die gewünschte, so wechseln wir erst den Kanal. Damit vermeiden wir, dass es kurzfristig lauter wird :-) */ if (denonStatus.VolPerc < intTargetVolumeInPercent) { // Weg 1 - aktuelle Lautstärke ist leiser, also erst Kanal wechseln if(strTargetInputSel !== denonStatus.InpSel) global_m_Denon_Command ('PutZone_InputFunction/' + strTargetInputSel, 0); global_m_Denon_Volume (intTargetVolumeInPercent, 2000); // 2000 echt nötig, sonst schaltet er nicht } else if (denonStatus.VolPerc > intTargetVolumeInPercent) { // Weg 2 - aktuelle Lautstärke ist lauter, also erst leiser machen vor Kanalwechsel global_m_Denon_Volume (intTargetVolumeInPercent, 0); if(strTargetInputSel !== denonStatus.InpSel) global_m_Denon_Command ('PutZone_InputFunction/' + strTargetInputSel, 250); } else { // Weg 3 - Lautstärke bleibt unverändert if(strTargetInputSel !== denonStatus.InpSel) global_m_Denon_Command ('PutZone_InputFunction/' + strTargetInputSel, 0); } } else { // ==== Denon ist noch aus. Anderes Timing hier ;-) ==== global_m_Denon_Command ('PutZone_OnOff/ON', 0); if(strTargetInputSel !== denonStatus.InpSel) global_m_Denon_Command ('PutZone_InputFunction/' + strTargetInputSel, 1000); if (denonStatus.VolPerc !== intTargetVolumeInPercent) global_m_Denon_Volume (intTargetVolumeInPercent, 2000); } }, 250); }
Hier nur zum Verständnis noch die anderen beiden Functions, die ich verwende:
/** * @desc Denon Receiver: Kommando übergeben * @opt strCommand - Kommando, z.B. 'PutZone_OnOff/ON' * @opt intDelayInMilliseconds - Verzögerung in Millisekunden, falls gewünscht */ function global_m_Denon_Command (strCommand, intDelayInMilliseconds) { var denon_url = getState('javascript.0.me.preset.denon_URL').val; setTimeout(function() { require("request")(denon_url + strCommand); g_myLog('Denon-Kommando: ' + strCommand); }, intDelayInMilliseconds); }
/** * @desc Denon Receiver: Lautstärke setzen in %. Wird dann automatisch umgewandelt. * @opt intVolumeLevelPercent - Lautstärke in % * @opt intDelayInMilliseconds - Verzögerung in Millisekunden, falls gewünscht */ function global_m_Denon_Volume (intVolumeLevelPercent, intDelayInMilliseconds) { // Volume wird so berechnet: XX-80, d.h. eine Lautstärke von 45: 45-80=-35 var intVolumeCalculated = (intVolumeLevelPercent - 80); // Sicherheit: Lautstärke nicht über 60% (= -20)! if (intVolumeCalculated > -20) intVolumeCalculated = -20; // Set Volume finally: global_m_Denon_Command ("PutMasterVolumeSet/" + intVolumeCalculated, intDelayInMilliseconds); // Falls Receiver auf "Mute": würde man über Kommando "PutVolumeMute/off" aussschalten. Irrelevant, da sowohl bei Kanalwechsel als auch Lautstärkeänderung Mute abgeschalten wird. }
-
Hallo fox,
sehr gut. Ich war ja kurz davor auch einen Denon-Adapter zu schreiben, nach dem es ja einen angefangenen Adapter gibt und ein ein ziemlich umfangreiches https://forum.iobroker.net/viewtopic.php?f=21&t=3032&start=40#p82336 .
Ich habe den Adapter mal kurz angetestet. Bisher sieht es gut aus, aber ein ausführlichen Test werde ich die Tage noch machen.
Was ich vermisse: Zonen-Steuerung. Zone 2 ein/aus (am Besten noch Lautstärke direkt setzen) wäre gut (nutze ich für Alexa-Steuerung, um im Esszimmer die Musik einzuschalten. Das Steuerungsprotokoll gibt ja alles her.
Ich hab dazu auch schon mal ein Issue aufgemacht.
Grüße
Daniel
-
Das setzen der Lautstärke für die MZ geht auch über den State (s. readme).
Danke fürs erste Feedback. Die Zonensteuerung neben der Main werde ich zeitnah implementieren.
beste Grüße
fox
-
So, ich hab den Adapter auch mal angetestet und er macht alles was er soll
Weiß nicht, ob es hier noch Leute gibt, die über FM Radio hören, aber dann wäre wohl gut, wenn man da über einen State die voreingestellten Sender auswählen kann. (ich selbst brauch das aber nicht)
-
Hi,
danke das du hier einen Adapater baust.
Leider schlägt die Installation bei mir fehl:
$ ./iobroker url "https://github.com/foxriver76/ioBroker.denon/tarball/master " --debug install "https://github.com/foxriver76/ioBroker.denon/tarball/master npm install "https://github.com/foxriver76/ioBroker.denon/tarball/master --production --save --prefix "/opt/iobroker" (System call) /bin/sh: 1: Syntax error: Unterminated quoted string ERROR: host.ioBrokerBETRIEB Cannot install "https://github.com/foxriver76/ioBroker.denon/tarball/master: 2 ERROR: process exited with code 25
Woran kann dies liegen ?
Gruß
Michael
Okay mein Fehler habe den Beitrag oben übersehen. Wenn das Leerzeichen rauskommt klappt alles.
-
Selbes Problem wie oben –> Bitte kein Leerzeichen nach der URL machen. Habe ich irgendwo einen blöden Link gepostet, wo ein Leerzeichen am Ende ist? Da es schon zum zweiten mal auftritt.
-
URL https://github.com/foxriver76/ioBroker.denon geht übrigens auch
-
Was ich vermisse: Zonen-Steuerung. Zone 2 ein/aus (am Besten noch Lautstärke direkt setzen) wäre gut (nutze ich für Alexa-Steuerung, um im Esszimmer die Musik einzuschalten. Das Steuerungsprotokoll gibt ja alles her.
Ich hab dazu auch schon mal ein Issue aufgemacht. `
Hi Daniel,
ich habe versucht die Zone2 zu integrieren (3. Zone ist derzeit nicht integriert, falls dein AVR diese unterstützt), wenn der Adapter Zwei-Zonen fähig ist, werden automatisch entsprechende States angelegt. Leider kann ich relativ wenig damit testen. Wäre super, wenn du die aktuelle Version ausprobieren könntest.
beste Grüße
fox
-
Hallo Fox,
habe die Zone 2 angetestet. Du hast es so gebaut, dass der Adapter erst einen Z2-Befehl empfangen muss und die States für ZONE2 dann erst erzeugt.
Ist im Prinzip OK für mich, hat zumindest prima funktioniert.
ZONE2-Power, Volume-Up/Down, Volume (Wert setzen), Input und Mute funktionieren prima (Werte setzen Status abfragen).
Quickselects nutze ich nicht bzw. wüsste ich auch nicht, dass die für die Zone 2 überhaupt funktionieren.
Eine Zone 3 hat mein AVR nicht.
Sonst prima, Danke!
Weitere Tests folgen in den nächsten Tagen.
Grüße
Daniel
-
Hallo Fox,
eine Sache ist mir grad aufgefallen:
bei zone2.powerState = false, kommt kein Acknowledge, d.H. es wird kein entsprechender Wert zurückgelesen.
M.E. liegt das daran, dass bei der Zone 2 die Status-Werte "Z2ON" und "Z2OFF" sind und nicht wie beim globalem Powerstate "PWON" und "PWSTANDBY".
Edit:
Hab grad gesehen, ist ja so drin mit Z2OFF bei handleResponse. Aber es will nicht, wenn ich über ioBroker den State auf false setze. Der Wert bleibt rot.
Edit2:
sehr merkwürdig, manchmal geht es, manchmal nicht. Beim Ausschalten wird jedenfalls über Telnet immer "PWSTANDBY" und "Z2OFF" gesendet, sofern die Zone 2 alleine eingeschaltet war (Main-Zone off).
Ist Main-Zone und Zone 2 on, dann geht es ohne Probleme, da wird dann beim ausschalten von Zone 2 natürlich auch nur Z2OFF gesendet.
Hier mal ein Auszug aus meinem Telnet mitschnitt (das sind nur die gelesenen Werte, gesteuert habe ich über ioBroker, mitgeschnitten über einen anderen PC).
-- nur ZONE 2 eingeschaltet PWON Z2ON -- ZONE 2 wieder aus PWSTANDBY Z2OFF -- alles eingeschaltet PWON ZMON MV29 MVMAX 98 MV11 MVMAX 98 PWON SSINFAISFSV 441 Z2ON -- hier nur Zone 2 abgeschaltet Z2OFF -- Zone 2 wieder dazugeschaltet Z2ON -- Zone 2 wieder aus Z2OFF
-
Edit2:
sehr merkwürdig, manchmal geht es, manchmal nicht. Beim Ausschalten wird jedenfalls über Telnet immer "PWSTANDBY" und "Z2OFF" gesendet, sofern die Zone 2 alleine eingeschaltet war (Main-Zone off).
Ist Main-Zone und Zone 2 on, dann geht es ohne Probleme, da wird dann beim ausschalten von Zone 2 natürlich auch nur Z2OFF gesendet. `
Hi Daniel,Kannst du den Adapter mal auf debug stellen?
Ich denke du weißt wie, ansonsten: Unter dem Tab Instanzen auf das runde Icon mit dem Männchen das beim hovern Expertenmodus anzeigt und dann auf Log Stufe hinter dem Denon Adapter klicken und debug selektieren.
Dann loggt der Adapter z.B. Incoming data: Z2OFF
Hier wäre interessant, was da steht in den Fällen in denen es nicht klappt.
beste Grüße und danke fürs testen
fox