Modul für ONKYO AV Receiver (und neuere Pioneer AV Receiver)

Begonnen von Loredo, 30 September 2013, 14:52:36

Vorheriges Thema - Nächstes Thema

delMar

Hallo Girgl,

mir erschließt sich leider nicht, welche Kommandos du gerne ganz konkret absetzen möchtest, wie du das schon versucht hast, und welche nicht funktionieren (bzw welche schon).

schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

Christian72D

Ich sehe gerade daß ich in meinem Log folgendes stehen habe:

PERL WARNING: Warning: <control> element has non-unique value in 'id' key attribute: NoVideoInfo at ./FHEM/70_ONKYO_AVR.pm line 1803.

Normal ist das nicht, oder?

delMar

Zitat von: Christian72D am 02 April 2020, 09:23:49
Ich sehe gerade daß ich in meinem Log folgendes stehen habe:

PERL WARNING: Warning: <control> element has non-unique value in 'id' key attribute: NoVideoInfo at ./FHEM/70_ONKYO_AVR.pm line 1803.

Normal ist das nicht, oder?
Im Grunde heißt das, dass das XML, das der AVR hier sendet keinen eindeutigen Wert hat.
Die Meldung kommt vom XML-Parser an sich, nicht vom Modul-spezifischen Code.
Ob das jetzt ein Problem ist, kann ich ad-hoc nicht sagen, dazu müsste ich konkret das XML sehen, dass da reinkommt


schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

Girgl

Hallo Martin,

die Kommandos "tone-front-treble, tone-front-bass, center-temporary-level und subwoofer-temporary-level" funktionieren über das "set Onkyo_AVR Drop-down-Menü" und dem Schieberegler für den Wert in der fhem-Oberfläche nicht. Andere Kommandos aus dem Dropdown wie volume (up/down), channel (up/down), input (up/down), dimmer-level, usw. funktionieren wie sie sollen.
Die Readings von "tone-front-treble, tone-front-bass, center-temporary-level und subwoofer-temporary-level" sind vorhanden und immer aktuell. Ich kann aber über "set Onkyo_AVR rawCommand TFRT'xx'(tone-front-treble) oder TFRB'xx'(tone-front-bass) oder CTL'xx'(center-temporary-level) oder SWL'xx'(subwoofer-temporary-level)" diese Werte ändern.
Es scheint als ob beim senden der Kommandos "tone-front-treble, tone-front-bass, center-temporary-level und subwoofer-temporary-level" zusammen mit dem Schieberegler etwas nicht passt.

Schöne Grüße
Girgl


delMar

Danke, das ist schon viel klarer für mich.
Gabs im Zusammenhang mit Zone 2 auch ein spezielles Problem?
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

Girgl

Nein, keine Probleme. Die Zone 2 nutze ich nur als line-out für aktive Lautsprecher. Ein- und Ausschalten und Quelle wählen funktioniert in Zone 2. Bass,Treble,Sub,Center gibts bei meinem AVR in Zone 2 nicht.

Girgl

Mein Problem mit den nicht funktionierenden Kommandos "tone-front-treble, tone-front-bass, center-temporary-level und subwoofer-temporary-level" habe ich gelöst umgangen in den ich im tabletUi ohne das Slider-Widget arbeite und die rawCommand-Methode benutze.

Trotzdem möcht ich noch mitteilen was ich rausgefunden habe, vielleicht hilfts wem:
Die Kommandos SWL (subwoofer-temporary-level) und CTL (center-temporary-level) mit fixem Level müssen bei meinem AVR (TX-NR686) 3-stellig definiert werden, also SWL+03 oder SWL000 statt SWL+3 oder SWL00. Im Netz bin ich auf eine ISPC-Definitions-Liste von 2016 gestossen die im Gegensatz zu einer Liste aus 2014 teilweise unterscheidet.
Bei den Kommandos tone-front-bass und tone-front-treble blieb die Definition allerdings identisch. Das Logfile zeigt hier:
2020.04.04 09:59:25 3: ONKYO_AVR set Onkyo tone-front-bass 2
2020.04.04 09:59:25 5: ONKYO_AVR Onkyo: called function ONKYO_AVR_SendCommand()
2020.04.04 09:59:25 4: ONKYO_AVR Onkyo: command '+2' is an unregistered command within zone1, be careful! Will be handled as raw command
2020.04.04 09:59:25 4: ONKYO_AVR Onkyo: snd  -> +2 (+2)
2020.04.04 10:00:22 5: SW: 49534350000000100000000b0100000021315057525153544e0d0a

"command '+2' is an unregistered..." da denk ich mir ob das command "+2" nicht "B+2" heißen müsste, oder "TFRB+2". Wegen fehlenden Programmierkentnissen ist hier erstmal Schluss bei mir.

Anbei die beiden ISPC-Listen die ich finden konnte.

Grüße Girgl

drache

Hallo zusammen,

seit ein paar Tagen spiele ich mit FHEM in Kombination mit meinem Pioneer Fayola-System herum. Einschalten, Lautstärke ändern usw. funktioniert wunderbar.
Ich möchte das System via FlareConnect mit meinem Lautsprecher in einem anderen Raum verbinden. Vor einiger Zeit war das Thema schon mal in diesem Thread besprochen worden, aber leider bin ich nicht abschließend schlau draus geworden.

Der Befehl zum Gruppieren befindet sich nicht im Modul, also müsste ich das als rawCommand senden. Der Code dafür müsste das MGS-Kommando sein, wie ich auch dem Quelltext der Enhance Controller App entnehmen konnte: https://github.com/mkulesh/onpc/blob/master/app/src/main/java/com/mkulesh/onpc/iscp/messages/MultiroomGroupSettingMsg.java
So wie es aussieht, muss dem MGS als Parameter XML mitgeschickt werden, allerdings konnte ich nichts erreichen. Diverse Varianten habe ich durchprobiert, aber nichts erreicht.
set WZ.Pioneer rawCommand MGS<mgs zone="1"><groupid>220</groupid><maxdelay>5000</maxdelay><devices><device id="0009B0E0D123" zoneid="1" role="src"/><device id="0009B0E49789" zoneid="1" role="dst"/></devices></mgs>

Ist es generell legitim das XML auf diese Weite anzuhängen? Muss ich da irgendwas escapen? Oder erwartet rawCommand, dass ich das XML vorher in irgendwas ISCP-mäßiges umwandle?

Ich bin euch sehr dankbar für den entscheidenden Hinweis! :)

Viele Grüße!

delMar

Hallo,

rawCommand sollte keine Umwandlung von dir erwarten.
Ich empfehle dir, dich per Telnet mit dem AVR zu verbinden und dann das Kommando per App auszuführen.
Der AVR spiegelt jedes Kommando auf dem Telnet Port, du solltest also sehen, wie das Kommando dort aussieht.
Und das sollte schließlich ein guter Indikator dafür sein, wie du das Kommando absetzen musst.

Im Zweifel gern alles hier reinstellen.

schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

drache

#909
Danke für die rasche Antwort! Ich habe mit per Telnet verbunden und kann auch Kommandos wie PWR00 zum Abschalten erkennen. Der Receiver reagiert auch genauso, wenn ich das als rawCommand absetze. Also prinzipiell bin ich in der Lage, ein Kommando roh an den Receiver zu schicken.

Wenn ich per App die Gruppe einrichte, kommt beim Receiver laut Telnet


ISCP�!1MDI<?xml version="1.0"?><mdi><deviceid>0009B0E0D123</deviceid><netstandby>1</netstandby><currentversion>200</currentversion><zonelist><zone id="1" groupid="140" ch="ST" role="src" roomname="Wohnzimmer" groupname="" powerstate="1" iconid="0" color="0" delay="17000"/><zone id="2" groupid="0" ch="ST" role="none" roomname="" groupname="" powerstate="0" iconid="0" color="0" delay="17000"/><zone id="3" groupid="0" ch="ST" role="none" roomname="" groupname="" powerstate="0" iconid="0" color="0" delay="17000"/><zone id="4" groupid="0" ch="ST" role="none" roomname="" groupname="" powerstate="0" iconid="0" color="0" delay="17000"/></zonelist></mdi>

ISCP
!1CEC00�
ISCP
!1FXP00�
ISCP$!1FLD20466C617265436F6E6E65637420�
ISCP
    !1NSTSxx�
ISCP
!1MMT00�

Sieht für mich erst mal so aus, als müsste ich MDI<?xml ... usw senden.
Problem: Wenn ich das probiere, passiert nichts.

set WZ.Pioneer rawCommand MDI<mdi><deviceid>0009B0E0D123</deviceid><netstandby>1</netstandby><currentversion>200</currentversion><zonelist><zone id="1" groupid="140" ch="ST" role="src" roomname="Wohnzimmer" groupname="" powerstate="1" iconid="0" color="0" delay="17000"/><zone id="2" groupid="0" ch="ST" role="none" roomname="" groupname="" powerstate="0" iconid="0" color="0" delay="17000"/><zone id="3" groupid="0" ch="ST" role="none" roomname="" groupname="" powerstate="0" iconid="0" color="0" delay="17000"/><zone id="4" groupid="0" ch="ST" role="none" roomname="" groupname="" powerstate="0" iconid="0" color="0" delay="17000"/></zonelist></mdi>

Nada. Keinerlei Reaktion darauf. Ein anschließendes WZ.Pioneer rawCommand CEC00 wird hingegend sofort wieder akzeptiert und über Telnet gespiegelt.
Versucht habe ich auch, direkt hintereinander die entsprechenden MDI-Befehle sowohl an das eine als auch an das andere Gerät zu senden, aber beide ignorieren das.
Ich bin etwas ratlos, warum er das ignoriert.

Edit: Nachdenklich macht mich auch, dass es normalerweise eine Reaktion auf falsche Parametrisierung gibt. Sendet man statt PWR00 bspw. ein PWRbla, quittiert das Gerät das durch ISCP!1PWRN/A�. Nachrichten, die mit MDI oder MGS beginnen, werden allerdings nicht mit Fehlermeldungen quittiert.

drache

Nach einigem Rumprobieren bin ich leider immer noch nicht weiter.

Offenbar sehe im im Telnet nur die Antworten des Receivers, aber nicht die Kommandos, die angekommen sind. Gibt es da noch einen anderen Port als 60128, auf dem ich lauschen könnte?

MDI scheint mir nach Spezifikation wirklich nur die Antwort zu sein, während MGS das Kommando zum Setzen der Gruppeninfo sein sollte. Aber weiterhin gibt es keinerlei Reaktion, wenn ich eines dieser Kommandos über FHEM sende. Ich bin wirklich am Ende mit meinem Latein. :(

drache

Endlich bin ich einen entscheidenden Schritt weiter.
Über Debugging der onpc-Android-App kenne ich nun das genaue Kommando und kann es mit einer angepassten EISCP-C#-Anwendung (https://github.com/miracle2k/onkyo-eiscp) auch versenden.
Für die Nachwelt:
MGS<mgs zone="1"><groupid>1</groupid><maxdelay>3000</maxdelay><devices><device id="0009B0E49DEF" zoneid="1"/></devices></mgs>
Wobei unter <devices> die IDs aller Geräte aufgelistet werden, die mit dem Gerät gekoppelt werden, an die man diese Nachricht schickt.

Aber das funktioniert nicht mit FHEM.

Ich habe da so den leisen Verdacht, dass das Modul nicht mit den Leerzeichen im XML klar kommt?

delMar

Danke Drache,
sorry, dass ich nicht aktiver beim debuggen mithelfen kann.

Vielleicht finde ich aber die Zeit, das mit dem Leerzeichen umzusetzen, dann könnte ich zumindest den Fix einchecken, den du dann testen kannst

Danke
schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

spb1987

Zitat von: drache am 29 April 2020, 07:59:29
...
Über Debugging der onpc-Android-App ...

Hi kannst du das etwas genauer aufdröseln?
Ich stehe vor dem gleichen Problem, ich weiß nicht was ich senden muss. Über Telnet scheint es so, dass nicht alle Befehle ankommen.
Ich will eigentlich nur ein Preset vom TuneIn anwählen, allerdings auf einer NCP 302 Box.

Danke

drache

Zitat von: spb1987 am 30 Mai 2020, 12:40:14
Hi kannst du das etwas genauer aufdröseln?

Sorry für die späte Antwort, hab leider keine Benachrichtigung bekommen, dass ich zitiert wurde.

Also, ich habe mir den Quelltext der App heruntergeladen, in Android Studio kompiliert und dann von dort aus aufs Smartphone installiert. Das Smartphone habe ich per USB angeschlossen und per USB-Debugging der App über die Schulter schauen können, sprich, die App zwischendurch anhalten, in den Speicher schauen usw. Ich weiß nicht, ob du dich etwas mit Programmieren auskennst?