Anbindung von Pioneer AVR

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

Vorheriges Thema - Nächstes Thema

Paul

#75
Hallo so ich habe einen Pioneer 920.

Mit dem Modul wird mein Pioneer richtig ausgelesen, nur das senden der Befehle klappt nicht.

Hatte bisher mit einem Dummy Schalter die Speaker per telnet umgeschaltet:

use Net::Telnet)
my $tab = new Net:Telnet (Timéout => 50, Port 0> 8102;
my $fh1 = $tab->dump_log("telnetclient.txt");
my $fh2 = $tab ->input_log("tenetclient_input.txt");
my $fh3 = $tab ->output_log("telnetclient_output.txt");

$tab->open ("192.168.178.xx"),
$tab->print("vu\n2spk");


Würde es reichen in er PM folgende Zeilen zu ändern?

####Speakers
elsif ( $a[1] eq "speakers" ) {
if ($a[2] eq "off") {
PIONEER_AVR_SendCommand($hash, "0SPK");
} elsif ($a[2] eq "A") {
PIONEER_AVR_SendCommand($hash, "vu\n1SPK");
} elsif ($a[2] eq "B") {
PIONEER_AVR_SendCommand($hash, "vu\n2SPK");
} elsif ($a[2] eq "A+B") {

PIONEER_AVR_SendCommand($hash, "3SPK");
}
readingsSingleUpdate($hash, "speakers", $a[2], 1 );
}
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

P.A.Trick

Mir ist noch aufgefallen, dass das Modul fhem teilweise arg verzögert (siehe Screenshot).
Es liegt scheinbar an der Funktion GetStatusTimer. Kann man da etwas gegen tun?
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

grywnn

@Raven
das XM Radio hab ich aus dem Pioneer PDF, keine Ahnung was das ist :)

@Paul
Erschliesst sich mir nicht ganz...
Das was du da an den Pioneer schickst
vu\n1SPK
...sind eigentlich zwei Befehle:
VU und 1SPK.
das \n dazwischen ist ein Return.
Du schickst also erst ein "Volume Up" und dann einen Wechsel der Speaker. Das macht eigentlich keinen Sinn.
Funktionieren denn die anderen Sachen, zB Lautstärkenwahl und Input?

@Patrick
In der momentanen Implementierung wird für jeden Wert der im Status abgefragt wird einen neue Telnet Verbindung aufgemacht.
Das ist leider nicht unbedingt effektiv, weil dabei jedesmal etwa 0.2s draufgehen (x6 Readings = 1.2s für den kompletten Status)
Reagiert der Pioneer auf eine der Anfragen nicht wird schlimmer, dann zieht das Telnet Timeout, und da ist der kleinste Wert leider 1s.
Dass kann passieren wenn der Pioneer einen Befehl nicht kennt, zB wenn das Modell keine Zonen unterstützt.
Ich hatte schon mal überlegt ob man das nicht in einem Rutsch auslesen kann, aber das wird was komplizierter.
Aber ich schau mal :)

Paul

Nein kein Befehl wird ausgeführt.

Leider

Wenn ich bei meiner funktionierenden Methode  nur den Befehl 1spk
abschicke passiert auch nicht nur in Verbindung mit vu/n
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

P.A.Trick

Zitat von: grywnn am 14 April 2014, 16:51:54

@Patrick
In der momentanen Implementierung wird für jeden Wert der im Status abgefragt wird einen neue Telnet Verbindung aufgemacht.
Das ist leider nicht unbedingt effektiv, weil dabei jedesmal etwa 0.2s draufgehen (x6 Readings = 1.2s für den kompletten Status)
Reagiert der Pioneer auf eine der Anfragen nicht wird schlimmer, dann zieht das Telnet Timeout, und da ist der kleinste Wert leider 1s.
Dass kann passieren wenn der Pioneer einen Befehl nicht kennt, zB wenn das Modell keine Zonen unterstützt.
Ich hatte schon mal überlegt ob man das nicht in einem Rutsch auslesen kann, aber das wird was komplizierter.
Aber ich schau mal :)

Eventuell kannst du ja eine Fork Methode wie beim XBMC Modul einbauen, damit ist es wesentlich besser bei mir geworden.
Anbei nochmal die Daten von einem Tag via Apptime.
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

50watt

Zitat von: grywnn am 09 April 2014, 23:20:52
@LightStorm
die permanente Verbindung hätte leider das Riesenproblem das (zumindest mein) Pioneer nur eine Verbindung gleichzeitig zulässt.
Wenn ich per Telnet von der Konsole aus mit der Kiste verbunden bin funktioniert zB die iOS App nicht mehr.
Kommt daher nicht in Frage, auch wenn schön wäre, da der Pioneer jede Statusänderungnderung auf dem Telnet Kanal quittiert. Man würde dann zB in FHEM sofort sehen wenn man per Fernbedienung am Pioneer zB die Lautstärke verändert.
...
TAUSEND DANK für dieses so tolle Modul!
Zur permanenten Telnet-Verbindung:
Zumindest beim VSX923 können im Webinterface mehrere Ports geöffnet werden (siehe Screenshot anbei). Je Port kann eine Telnet-Session laufen.
(Der Default-Port 8102 ist zusätzlich geöffnet).
Der Befehl zum Auslesen aller Ports:
?SUM
SUM08101999999999900023

Hier ist also Port1: 8101, Port2 und Port3 sind aus, Port 4: 23

Um nur den ersten Port auszulesen:
?STM
STM08101


Um nur den 2. Port auszulesen:
?STN
STN99999


So kann eine permanente Telnet Session von Fhem zum Pioneer offen bleiben und gleichzeitig funktioniert die Smartphone App.
Welche Pioneer Geräte dieses Feature unterstützen, kann ich nicht sagen...
RaspberryPi, EnOcean PI
Sonos Play1, Connect
Eltako FT55, FSB61, FAM12, FSR12-4x

grywnn

Tjaaaaa das musste ich doch direkt mal vom Büro aus testen, also mein VSX-921 unterstützt ?SUM etc schon mal leider nicht (der hat noch nicht mal ein Webinterface :) )
Ich halte das mal als Option im Hinterkopf, müsste daher aber als Alternative zum Polling implementiert werden (da es nicht alle Geräte unterstützen) und dürfte nicht ganz einfach sein.

Ich hab mich aber Gestern Abend noch mal hingesetzt und das Lesen der Reading überarbeitet und ausserdem die Telnet Timeouts angepasst.
Patrick das sollte in deinem Apptime seeeeehr deutlich zur Geltung kommen.
Readings werden jetzt nicht mehr einzeln, sondern auf einen Rutsch gelesen - Bei mir funktionierts, bitte Testet das mal auf euren Kisten, bin nicht ganz sicher obs da nicht eventuell Timing Probleme geben kann.
Daher bitte prüfen ob wirklich alle Readings regelmässig aktualisiert werden. Ihr seht das ja im Webinterface. Wenn der Pioneer an ist sollten alle Reading immer ein aktuelles Datum aufweisen, wenn er aus ist nur "power".
Ausserdem hab ich vor allen Befehlen noch ein \n ergänzt, Paul, hoffentlich beseitigt das dein Problem.

50watt

VSX923 ist ausgeschaltet.
Auf einen StatusRequest von Fhem antwortet Pioneer mit:

R
VOL082
MUT1
FN02
E02
E02
PWR1


Die Readings von

  • Power
  • Mute
  • Input
  • Volume
werden hier auch regelmäßig aktualisiert, wenn der Pioneer ausgeschaltet ist :-)
RaspberryPi, EnOcean PI
Sonos Play1, Connect
Eltako FT55, FSB61, FAM12, FSR12-4x

50watt

Ist es ein Ziel dieses Modules, sich nach den Fhem DevelopmentGuidelinesAV zu richten?

Das reading "volume" sollte laut http://www.fhemwiki.de/wiki/DevelopmentGuidelinesAV einen Wert zwischen 0 und 100 annehmen können, hier ist es jedoch kleiner 0 (aktuell z.B. -39.5)
RaspberryPi, EnOcean PI
Sonos Play1, Connect
Eltako FT55, FSB61, FAM12, FSR12-4x

jenscz

Ein VolumeUP bringt:

Undefined subroutine &main::PIONEER_AVR_GetVolume called at ./FHEM/70_PIONEER_AVR.pm line 291.

und fhem zum Absturz
CCU3 mit 6xHMW-IO-12-Sw7-DR,1x HMW-LC-Bl1-DR, Bewegungsmeldern .....
Gardena Smart IrrigationControl (ic24)

grywnn

@jenscz
Arghh das hab ich übersehen... wird korrigiert.

@50watt
Hey das kannte ich noch gar nicht!
Klar, das solten wir berücksichtigen. Das aktuelle volume entspricht dann wohl volumeStraight, ein Prozentwert für volume lässt sich ohne weiteres Berechnen.

Update folgt später :)

Paul

Ich finde das mit der volumensangabe nicht gut der pioneer zeigt minuswerte an und warum sollten die in fhem nicht so angezeigt werden?

Soll ich dann immer mit nem Taschenrechner umrechnen?
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

grywnn

Zitat von: Paul am 15 April 2014, 20:12:36
Ich finde das mit der volumensangabe nicht gut der pioneer zeigt minuswerte an und warum sollten die in fhem nicht so angezeigt werden?

Soll ich dann immer mit nem Taschenrechner umrechnen?

Nein das musst du nicht :)
Es wird ein Reading und einen Slider namens "volume" geben der von 0-100 geht, und ein Reading plus Slider namens "volumeStraight" für die Dezibelwerte.
Wenn du (wie ich) lieber die Dezibel hast kannst du volume ignorieren und volumeStraight nutzen.
Hintergedanke dabei ist, das man zB mehrere Verstärker verschiedner Bauart in eine structure packen kann, und dann für die ganze structure gemeinsam die volume setzen kann, auch wenn die internen volume Werte der Geräte unterschiedlich sind.
Das remotecontrol Modul freut sich auch wenns ein Gerät antrifft das die volume von 0-100 regelt.

Update folgt irgendwann Morgen :)

P.A.Trick

Zitat von: grywnn am 15 April 2014, 15:07:42

Ich hab mich aber Gestern Abend noch mal hingesetzt und das Lesen der Reading überarbeitet und ausserdem die Telnet Timeouts angepasst.
Patrick das sollte in deinem Apptime seeeeehr deutlich zur Geltung kommen.
Readings werden jetzt nicht mehr einzeln, sondern auf einen Rutsch gelesen - Bei mir funktionierts, bitte Testet das mal auf euren Kisten, bin nicht ganz sicher obs da nicht eventuell Timing Probleme geben kann.
Daher bitte prüfen ob wirklich alle Readings regelmässig aktualisiert werden. Ihr seht das ja im Webinterface. Wenn der Pioneer an ist sollten alle Reading immer ein aktuelles Datum aufweisen, wenn er aus ist nur "power".
Ausserdem hab ich vor allen Befehlen noch ein \n ergänzt, Paul, hoffentlich beseitigt das dein Problem.

In der Tat funktioniert - Dank'Dir!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

grywnn

Und hier die aktuellste Version:
- volumeStraight als Reading und set Befehl hinzugefügt, das alte Reading volume benutzt jetzt Prozentwerte
- volumeUp / Down funktioniert wieder
- listeningModes sind jetzt in camelCase geschrieben, Gleiches gilt für die inputs

Nach dem Austausch des Moduls ein Mal das device Löschen und neu Anlegen, oder ein shutdown restart auslösen - dann werden die listeningModes neu gesetzt.

Aktuelle Todos:
- listeningModes filtern je nach Modell
- nicht verfügbare Befehle Filtern je nach Modell
- deaktivierte Inputs filtern (falls möglich)
- Laden der Input-Namen beschleunigen passiert allerdings nur ein Mal beim define)
- Reading "presence" einbauen (erreichbar / nicht erreichbar), state entsprechend anpassen

Sonst noch Wünsche? :)