DENON AVR 3808 Integration

Hi Ihr,

ich hab die Scripte von philipp erfolgreich eingebunden - zumindest das Empfangen der Stausmeldungen vom DENON (2309, per Seriell-USB-Adapter und SILEX an IPS angebunden).
Offensichtlich habe ich aber den Umgang mit dem System zum Senden von Befehlen an den DENON noch nicht verstanden.
Was habe ich bereits gemacht:

1x Serialport-Instanz für den DENON eingerichtet (COM6)
1x Cutter-Instanz mit übergeordneter Instanz "DENON serial COM6) eingerichtet
1x Register-Variable mit übergeordneter Instanz „Cutter“ angelegt, Zielscript ist DENON_Status
beide Scripte von Philipp im ersten Post innerhalb der Kategorie „DENON“ angelegt: 1x DENON_Status und 1x DENON_Functions,

nun habe ich innerhalb der Kategorie DENON ein Testscript angelegt mit folgendem Code:


<?
includeNamedScript("DENON_Functions");

DENON_Mute(31198 /*[Denon]*/, OFF);
?>

wenn ich das Scrip in der IPS-Konsole ausführe bekomme ich folgende Fehlermeldung:

Fatal error: Call to undefined function includeNamedScript() in [Denon est] on line 2

was mache ich falsch? -> die ID „31198“ ist die von der Kategorie „DENON“, sollte das nicht eher die serielle Schnittstelle (COM6) sein (hab ich natürlich probiert, gibt noch mehr Fehler)?

Hallo,

die ID muss korrekterweise die ID des I/O Portes sein. Also bei dir die ID des seriellen Portes.

Aber genau das ist auch das Problem. Das Functions Script ist für einen ClientSocket geschrieben, und nicht für den seriellen Port.

Das siehst Du im Functionsscript an den ganzen Befehlen welche mit CSCK_ beginnen. Wenn du diese Befehle durch die Befehlssyntax für den Seriellen Port ersetzt, sollte es klappen.

Gruß Philipp

ahh - verstanden,
danke für die Erklärung :wink:
Dann bau ich das mal um

Hi philipp,

kurze Rückmeldung: es funktioniert tadellos, hab „CSCK“ in den Functions gegen „COMPort“ getauscht und schon läuft’s :wink:
…Mal wieder ein Erfolgserlebnis für mich als Neueinsteiger.

Kann es sein, dass Du noch nicht alle Funktionen/Events eingebaut hast? Ich hab gestern vergebnich nach den QuickSelect-Funktionen (QUICK1 - QUICK3) gesucht und nicht gefunden.
Ich versuche mal, das in die Scripts mit einzubauen, befürchte aber dass mein know-How noch nicht ausreichend ist (für die Functions reicht’s gerade noch aber bei den Status schaue ich „wie ein Schwein ins Uhrwerk“)

Hallo,

ich habe nun die QuickSelcet Funktion sowohl im Lesecript wie auch in der Functions eingebaut.

Die aktuellen Scripte sind im ersten Eintrag von diesem Thread gepflegt.

Falls Fehler auftreten bitte ich um kurze Rückinfo.

Gruß

Philipp

Hi philipp,

nachdem ich meine serielle Anbindung des 2309 auf Eis gelegt habe (z.B. die Volume-Steuerung war einfach nicht praktikabel), habe ich das Thema nun erneut aufgenommen um jetzt einen 3311 anzubinden. Die Grundfuktionen klappen aauch perfekt. Allerdings habe ich regelmässig Fehler im Log:


IPS-Err-PHP  2011-04-03 14:55:45.495  Notice: Undefined variable: value
   Error in Script C:\IP-Symcon\scripts\17630.ips.php on Line 184
   10 in IPSLogger.ips.php (call IPSLogger_Out)
   20 in IPSLogger_PhpErrorHandler.ips.php (call IPSLogger_Err)
  184 in 17630.ips.php (call IPSLogger_PhpErrorHandler)


Offensichtlich liegt das daran, dass der 3311 eine Reihe neuer 3-stelliger Events sendet (Beispiel: „NSE“, Request Onscreen Display Information List, Quelle: Protokoll-Doku 3311) - das war bei meinem 2309 nicht relevant (da wäre das nur beim iPod der Fall gewesen, hab ich nicht). Da ich PHP-Seitig noch nicht so richtig fit bin, kannst Du mir Tipps geben, wie die neuen Events und Informationen in Dein Script eingebaut werden können?

so, hab den Übeltäter gefunden:

das hier in philipp’s Script


case "PS": //Sound
   $pssub=substr($data,2,2);
   switch($pssub)
   {
      case "TO": //Tone Defeat
         $item = "ToneDefeat";
         $vtype = 0;
         if ($data == "PSTONE DEFEAT ON")
         {
         $value = true;
         }
         if ($data == "PSTONE DEFEAT OFF")
         {
         $value = false;
         }
         DenonSetValue($item, $value, $vtype);
        break;

muss getauscht werden gegen


case "PS": //Sound
   $pssub=substr($data,2,2);
   switch($pssub)
   {
      case "TO": //Tone Defeat
         $item = "ToneCTRL";
         $vtype = 0;
         if ($data == "PSTONE CTRL ON")
         {
         $value = true;
         }
         elseif ($data == "PSTONE CTRL OFF")
         {
         $value = false;
         }
         DenonSetValue($item, $value, $vtype);
        break;

ich war also auf dem Holzweg. Dafür hab ich die Scripts annähernd kapiert und reichlich neue Funktionen eingebaut :wink:

Und wo sind die neuen Funktionen ? :slight_smile:

Anti

bei mir in den Scripts :smiley:

Immer locker bleiben, ich werd’s noch veröffentlichen. Ich hab die Funktionenn nur sehr hektisch und kaum dokumentiert ins Script geschmiert dass das niemendem zugemutet werden kann. Es sind auch noch nicht alle Funktionen drin, schon gar nicht getestet. Wird also noch dauern.

OK?

Ich würde eher sagen, man muss das Script um deine Definition erweitern und nicht austauschen, oder?

Somit bleibt meines Erachtens das Script universell einsetzbar.

Gruß Philipp

yes, alles bis auf „PSTONE CTRL ON“ wird erweitert.

Und warum lässt Du das nicht auch drin?

Beiden alten Receivern gab und gibt es diese Version doch weiterhin.

Der Wert wird ja mit unterschiedlichen Paramtern geliefrt und wird auch in einer anderen Variablen gespeichert. Von daher können doch beide parallel im Script bleiben. Dadurch bleibt es universell nutzbar.

Gruß

Philipp

Hi philipp,

wenn das so geht gerne. Ich probier die Tage mal aus ob das ohne Probleme läuft. Wenn ja sollten beide Varianten ins Script.

Ok,

falls ich heute Abend kurz Zeit finde poste ich mal kurz wie ich es gemeint habe, dann kansst Du es ja mal bei dir rein nehemen und schauen obs geht.

Philipp

Hi,

das „AV Receiver Modul“ steht immer noch auf meiner Liste :wink:

Gruss
Coyote

wie jetzt? so ein richtiges IPS-Modul? - a la Tonic und tommi?

ja das wär klasse, haben wollen!

:confused:

Hast Du schon eine konkrete Planung oder ist das noch im visionären Status?

Ich würde behaupten irgendwo dazwischen :wink:

Ertse Ideen wurden dazu bereirts ausgetauscht, aber die lieb Zeit:confused:

Gruß Philipp

na denn lohnt es sich wohl, doch noch Energie in die Scripte zu stecken :wink:

Hi,

energie in Skripte schadet nie bei hobby-Themen :wink:

Ausserdem entstehen so Ideen und Problemlösungen.

Derzeit arbeit ich an meinem ersten echten Modul („Viessmann Heizungssteuerung“, senden und empfangen geht schon ;)).

Im Vergleich dazu dürfte ein „AV Receiver“-Modul einfacher sein, aber - wie Philip schon schrieb - die liebe Zeit.

Angedacht sind jedenfalls:
Ein AV-Modul für Denon, Pioneer und Marantz (also AVR mit offengelegter COM/Socket Kommunikation) welches Statusvariablen inkl. Interaktion (Quellenwahl, Lautstärke setzen, etc.) bieten soll.

Ich sage mal vorsichtig: Q4/2011.

Gruss
Coyote

Hi philipp.

ich habs mal für beide AVR-Varianten eingebaut. Bei mir funktioniert es, vielleicht kann das jemand mit einem AVR3809 o.Ä. testen und mir Feedback geben:


		case "TO": //Tone Defeat/Tone Control
			$pssubsub=substr($data,7,2);
			switch($pssubsub)
			{
			case "CT": //Tone Control (AVR 3311)
				$item = "ToneCTRL";
				$vtype = 0;
				if ($data == "PSTONE CTRL ON")
				{
					$value = true;
				}
				elseif ($data == "PSTONE CTRL OFF")
				{
					$value = false;
				}
				DenonSetValue($item, $value, $vtype);
			break;

			case "DE": //Tone Defeat (AVR 3808)
				$item = "ToneDefeat";
				$vtype = 0;
				if ($data == "PSTONE DEFEAT ON")
				{
					$value = true;
				}
				elseif ($data == "PSTONE DEFEAT ON")
				{
					$value = false;
				}
				DenonSetValue($item, $value, $vtype);
			break;
			}
		break;