Anbindung von Pioneer AVR

Begonnen von Erasor, 29 April 2013, 11:07:24

Vorheriges Thema - Nächstes Thema

50watt

#90
Danke für die neue Version!

Beim reading "input" wird bei mir nicht der korrekte Name angezeigt:

via telnet:
?F
FN06
?RGB06
RGB061VDR/XBMC


In Fhem wird jedoch:
input vdrXbmc
angezeigt.

Erwarten würde ich: input VDR/XBMC
Der Schrägstrich fehlt und die Großschreibung passt nicht.
RaspberryPi, EnOcean PI
Sonos Play1, Connect
Eltako FT55, FSB61, FAM12, FSR12-4x

grywnn

Das ist Absicht.
Aus der von dir geposteten AVGuidlines ;)
Zitatinput:
Auswahl von Hardwarekanälen (HDMI, DVB-S, PAL, DVI) oder Softwarekanälen (Airplay, IPTV, IP-Radiostream) die das zu steuernde Gerät aktiv schalten soll (zur Darstellung auf TV, Kanalwahl bei AV-Receivern etc.). Da diese Kanäle je nach Gerät und Modellreihen unterschiedliche Bezeichnungen besitzen, sollten alle möglichen Bezeichnungen in Form von lowerCamelCaps angeboten werden.
...ich schmeisse daher alle Sonderzeichen raus, und wandle in camelCaps um.
Daher wird aus VDR/XBMC vdrXbmc

Paul

So ich habe auch die heutige Version geladen, leider mit dem gleichen Ergebnis ich bekomme alle Daten vom Receiver. Aber die befehle von Fhem kommen nicht an. Kann es sein das Du das /n doch wieder raus genommen hast?

Werde mal probieren wenn ich das einfüge ob dann was ankommt.
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

50watt

Lieber grywnn,

ich persönlich würde es toll finden, wenn dein Modul in FHEM offiziell eingecheckt werden könnte, dann hätten wir eine weitere AV-Receiver-Reihe die FHEM unterstützen würde.

Was meinst du?

Was da zu tun wäre, steht unter anderem hier:
http://forum.fhem.de/index.php/topic,11338.msg78788.html#msg78788
ZitatAm besten ist es, wenn du Rudolf König eine E-Mail schickst in dem du ihn fragst, ob du das Modul in FHEM einchecken kannst.

Voraussetzung dafür ist, dass du dich um die Weiterentwicklung/Fehlerbehebung des Moduls kümmern würdest und im Forum Usersupport leisten würdest.

Desweiteren müsste dein Modul um die Command-Reference ergänzt werden (in deutsch und englisch). Dazu befinden sich am Ende jedes Modul 2 POD-Abschnitte, wo die deutsche und englische Dokumentation enthalten ist.

Anbei deine letzte Version mit den 2 POD-Abschnitten  8) ...
RaspberryPi, EnOcean PI
Sonos Play1, Connect
Eltako FT55, FSB61, FAM12, FSR12-4x

50watt

zone: eigenes device je Zone?

Manche Pioneer Modelle haben mehrere Audio/Video Ausgänge, die auch in unterschiedlichen Räumen sein können -> "Zonen".
Wie sollen Zonen implementiert werden?

YAMAHA_AVR implementiert jede Zone als eigenes Gerät (mit "Main Zone" als default).
Im thread zu "einheitliche kommandos für av geräte" http://forum.fhem.de/index.php/topic,13784.105.html halten andre, Markus und Loredo das auch für eine gute Idee ;-)
RaspberryPi, EnOcean PI
Sonos Play1, Connect
Eltako FT55, FSB61, FAM12, FSR12-4x

grywnn

"Mein" Modul ...  :o
Das wird dem Ganzen nicht ganz gerecht, ich bin hier auf halber Strecke aus Eigeninteresse reingegrätscht und habe die Entwicklung ... ähäm ... man könnte fast sagen "an mich gerissen".
Den Löwenteil haben eigentlich Erasor, sirphunk und janlau geleistet. Ohne deren Grundlagen hätte ich nämlich nie die Basis gehabt um mit meinen bis dato minimalen (aber langsam wachsenden) Perl Kenntnissen anzusetzen und die Entwicklung voranzutreiben.

@Erasor,janlau,sirphunk
Wenn ich euren Segen habe übernehme ich das gerne, kümmere mich auch um Fehlerbehebung etc. und lasse das Modul in FHEM offiziell einchecken.

@50watt
Die Zone als 2. device einzurichten macht Sinn.
Ich muss mir das allerdings mal in Ruhe ansehen wie das am Besten zu machen ist.
Und Merci für das POD :)

@Paul
das \n ist definitiv noch drin.
In der Datei gibts ein
sub PIONEER_AVR_SendCommand($$;$)
Darin ist zwischen $tel->put(...) und $tel->print(...) ein
select(undef,undef,undef,0.1);
Versuch doch bitte mal ob es hilft wenn du daraus
select(undef,undef,undef,0.15);
oder
select(undef,undef,undef,0.2);
machst.

grywnn

@Paul:
Läuft dein FHEM zufällig auf einem Windows System?

Erasor

Meinen Segen hast du. Ich freue mich sehr, dass das Modul nun doch noch weiterentwickelt wird! :-)

Gesendet von meinem Nexus 4 mit Tapatalk


Paul

Nein fhem läuft bei mir auf nen cubietruck.

Werde es mal mit der Änderung "0.2" probieren.
Ich glaube seinerzeit \n eingefügt weil der pioneer ne "pause" brauchte
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

grywnn

Ja das select(undef,undef,undef,0.1); ist ein trick um ein 0.1s Delay zu erzeugen.
Es gibt aber auch noch eine Alternative zum select(), das wäre mein nächster Versuch... aber erst mal Testen ob die 0.1 nicht einfach zu wenig sind.

janlau

Meinen Segen hast du ebenfalls und ich finde es eine gute Idee das Modul einzureichen, da es sich mittlerweile echt sehen lassen kann. :)

Paul

das mit select(undef,undef,undef,0.2); klappt leider auch nicht.

Habe das schalten nochmals mit Putty über eine telnet-Verbindung probiert damit geht es wunderbar.

eins ist mir aber aufgefallen, der erste Befehl wird ignoriert:

1spk
E04
1spk
SPK1


deshalb hatte ich wohl so geschaltet vu\n1spk
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

grywnn

OK eine Idee hab ich noch:
Versuch doch bitte mal in der Zeile vor den select() aus dem
$tel->put("");
ein
$tel->put("XY");
zu machen, falls das nicht hilft
$tel->put("VU");

Hintergrund:
Ja, die Pioneer Doku besagt das der Receiver erst mal mit einem Leerbefehl aufgeweckt werden muss.
Vielleicht reicht bei dir dazu der leere put() nicht aus...?

Paul

Danke für den Hinweis klappt aber auch nicht.

Ich habe es doch an der richtigen Stelle geändert?

} else {
$tel->put("VU");
select(undef,undef,undef,0.2);
$tel->print("\n".$command);
if ( substr($command,0,1) eq "?" ) {
# Display Updates (FL), Leerzeilen und quitierte Returns überspringen
while ( substr($response, 0, 2) eq "FL" || $response eq "R" || $response eq '' ) {
$response=$tel->getline();
if(!defined($response)) {
Log 4,"$name: Timeout reading from $host:$port";
return '';
}
# trim Whitespace, insbesondere Newline am Ende
$response =~ s/^\s+//;
$response =~ s/\s+$//;
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

grywnn

Paul, das ist die richtige Zeile.
Ich hab mittlerweile aber noch was gefunden was durchaus auch für dein Problem verantwortlich sein kann...
Bitte Teste mal die neue angehängte Version.

Diese hat noch einige weiter Neuerungen:
1. Ich hab das Setzen der "state" Variable überarbeitet, Inhalt lässt sich jetzt in stateFormat festlegen
2. Ich hab das initiale Lesen der Input-Namen noch mal ein wenig optimiert
3. Ich hab die Zonen ausgelagert!!!
Das heisst es muss jetzt für die 2. (und ggf. 3.) Zone ein eigenes Device in FHEM angelegt werden, das dann komplett getrennt vom Haupt-Device gesteuert werden kann.

Das define sieht folgendermassen aus

define <name> PIONEER_AVR <IP-Addresse oder Hostname> [<Port>] [<zone>] [<Status_Interval>]

Als zone wird main, zone2 und zone3 akzeptiert, default ist main.
Bsp
define AV_Receiver PIONEER_AVR 192.168.0.10     # Wenn nichts anderes angegeben ist wird die Main Zone benutzt.
attr AV_Receiver room Wohnzimmer

# zweite Zone einrichten
define AV_Receiver_Zone2 PIONEER_AVR 192.168.0.10 8102 zone2
attr AV_Receiver_Zone2 room Schlafzimmer

Zone 2/3 Beherrscht power on/off, volumeStraight, volume, volumeUp/Down, mute on/off und input analog zur Hauptzone.
Der listeningMode wird von der MainZone gelesen und gesetzt (da gibts keinen gesonderten Befehl für die anderen Zonen. Ich glaub den nehme ich bei Zone 2/3 noch raus...?)
speakers, play und stop hab ich bei Zone 2/3 rausgelassen weils da kein getrennten Befehle gibt.

Ich nutze selber keine Zonen, daher bitte intensiv testen!

Am Besten dazu das device erst mal löschen, dann das Modul neu laden, dann die devices für die Zone(n) neu anlegen.

Frohe Ostern!!