DTMF & Audio

Da gewöhnlich mein DECT Telefon immer in Reichweite ist, benutze ich es außerdem um meine Audio-Anlage zu steuern.
Das anliegende Skript ist für das SONOS System - lässt sich aber problemlos auf andere Systeme umschreiben.

Test - RUF AN ! JETZT !! 04504 / 715165

Mit einer Eingabe einer:

-3- gelangt der Anrufer in das „Mega-Vote-Event-Menü“, hier kann er bestimmen, wie ihm IP-Symcon gefällt.
Es kann eine Schulnote von 1 bis 6 vergeben werden.
-4- Anrufbeantworter
-5- Zeitansage: deutsch
-6- Zeitansage: englisch
-7- Sound - System > im Skript: case 71:

  • leiser

lauter

0 Stop
1 Play
2 Senderwechsel > 0 bis 9 > im Skript: case 712:
3 ZBV

Musik gibt es über das Telefon NICHT zu hören, dafür die Befehle (WAV als Anlage)

MST

<?
$delay = 100;
$allowed_numbers = Array(); //leer = alle
//Aktive Verbindungen ausgeben
//print_r(ISDN_GetActiveConnections(37323 /*[ISDN_SMS\ISDN Module 49]*/));
if($IPS_SENDER == "ISDN") {
    //Informationen ins Meldungsfenster ausgeben
    //echo "Event: ".$ISDN_EVENT."
";
   if($ISDN_EVENT != "Disconnect"){
      $callinfo = ISDN_GetConnectionInfo(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION);
      //Mehr Informationen ausgeben
      //print_r($callinfo);
   }
   //Je nach Ereigniss eine Aktion ausführen
   switch($ISDN_EVENT) {
      case "Incoming":
      SetValue(36280 /*[ISDN_SMS\Nummer des Anrufers]*/, $callinfo['CallingNumber']);
      //Anruf annehmen? (Entweder leeres Array oder Nummer ist enthalten)
      if((sizeof($allowed_numbers) == 0)
         or in_array($callinfo['CallingNumber'], $allowed_numbers))
      {
         SetValue(23014 /*[ISDN_SMS\ISDN Menü Flag]*/, 1); // Incoming
         IPS_Sleep(5000);
         ISDN_AcceptCall(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION); //Anruf annehmen
         SetValue(23014 /*[ISDN_SMS\ISDN Menü Flag]*/, 2); // ISDN_CONNECTION
         SetValue(14553 /*[ZBV_Test_QC\Dashboard\IPS Anrufer]*/, GetValue(14553 /*[ZBV_Test_QC\Dashboard\IPS Anrufer]*/) +1);
      }
      break;
      case "Connect":
         if (GetValue(25457 /*[ISDN_SMS\ISDN Module 49\IPS ruft jemanden an]*/) == 3){
	         IPS_Sleep(500);
	         $file = IPS_GetKernelDir()."sounds\\weckdienst.wav";
	         $len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
	         IPS_Sleep($len + $delay);
	         $file = IPS_GetKernelDir()."sounds\\h1.wav";
	         $len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
	         IPS_Sleep($len + $delay);
          } else {
	         $file = IPS_GetKernelDir()."sounds\\willkommen.wav";
	         $len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
	         IPS_Sleep($len);
	         $file = IPS_GetKernelDir()."sounds\\hauptmenue.wav";
	         $len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
	         IPS_Sleep($len + $delay);
	         $file = IPS_GetKernelDir()."sounds\\wahl.wav";
	         ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
         }
         	SetValue(23014 /*[ISDN_SMS\ISDN Menü Flag]*/, 3); // Hauptmenue
		break;
      case "Disconnect":
      //Aktion, wenn Anruf beendet wurde
      SetValue(23014 /*[ISDN_SMS\ISDN Menü Flag]*/, 0); // Disconnect
      SetValue(25457 /*[ISDN_SMS\ISDN Module 49\IPS ruft jemanden an]*/, 0);
      break;
      case "PlayFinish":
      //Aktion, wenn Wav abgespielt wurde
      break;
      case "DTMF":
         switch(GetValue(23014 /*[ISDN_SMS\ISDN Menü Flag]*/)) {
            case 3:  // Menü - Auswahl
               switch($ISDN_DATA)  {
                  //Aktion wenn 0 gedrückt wird
                  case "0":

                  break;
                    case "2":
                     $file = IPS_GetKernelDir()."sounds\\ips_mega_vote.wav";
                     $len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     return;
                  case "3":
                     $file = IPS_GetKernelDir()."sounds\\voteevent.wav";
                     $len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     IPS_Sleep($len + $delay);
                     $file = IPS_GetKernelDir()."sounds\\zahl1bis6.wav";
                     ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     SetValue(23014 /*[ISDN_SMS\ISDN Menü Flag]*/, 31); // Mega Vote
                     return;
                  case "4":  // AB
                     $file = IPS_GetKernelDir()."sounds\\ab_und_auflegen.wav";
                     $len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     IPS_Sleep($len + $delay);
                     $file = IPS_GetKernelDir()."sounds\\beep.wav";
                     $len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     IPS_Sleep($len + $delay);
                     $stamp = date("H_i_s");
                     ISDN_RecordWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, "D:/Daten/AB_Ansagen/ab".$stamp.".wav");
                     SetValue(16427 /*[ZBV_Test_QC\Dashboard\Neue AB Meldung]*/, True);
                     return;
                  case "5":  // // Zeit deutsch
                     $date = getdate();
                     $hrs = $date['hours'];
                     $min = $date['minutes'];
                     $file = IPS_GetKernelDir()."sounds\\zeit/" . $hrs . "uhr.wav";
                     $len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     IPS_Sleep($len + $delay);
                     $file = IPS_GetKernelDir()."sounds\\zeit/" . $min . "minute.wav";
                     $len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     return;
                  case "6": // Zeit englisch
                     $file = IPS_GetKernelDir()."temp.wav";
                     $text = "The Time is ".date("H:i");
                     TTS_GenerateFile(38200 /*[Media IR\Text To Speech]*/, $text, $file, 6);
                     ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     return;
                  case "7":
                     $file = IPS_GetKernelDir()."sounds\\musik_menue.wav";
                     $len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     SetValue(23014 /*[ISDN_SMS\ISDN Menü Flag]*/, 71); // Musik
                     return;
                  //Aktion wenn falsche Taste gedrückt wird
                  default:
                  	$file = IPS_GetKernelDir()."sounds\
ofunction.wav";
                     ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     return;
            }   // switch($ISDN_DATA)

             case 31:    // Mega Vote
                  if((int)$ISDN_DATA < 7) {
                     $file = IPS_GetKernelDir()."sounds\\eingegeben.wav";
                     $len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     IPS_Sleep($len + $delay);
                     $file = IPS_GetKernelDir()."sounds\\".$ISDN_DATA.".wav";
                     $len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     IPS_Sleep($len + $delay);
                     SetValue(58697 /*[ZBV_Test_QC\Dashboard\Last Vote]*/, $ISDN_DATA);
                     $file = IPS_GetKernelDir()."sounds\\registriert.wav";
                     $len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     SetValue(21212 /*[ZBV_Test_QC\Dashboard\Mega Vote Anrufer]*/, GetValue(21212 /*[ZBV_Test_QC\Dashboard\Mega Vote Anrufer]*/) +1);
                     IPS_Sleep($len + $delay);
                     $file = IPS_GetKernelDir()."temp.wav";
                     $text = "Your Call was Number: " .GetValue(21212 /*[ZBV_Test_QC\Dashboard\Mega Vote Anrufer]*/);
                     TTS_GenerateFile(38200 /*[Media IR\Text To Speech]*/, $text, $file, 6);
                     $len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     IPS_Sleep($len + $delay);
                     $file = IPS_GetKernelDir()."sounds\	extnachricht.wav";
                     $len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     IPS_Sleep($len + $delay);
                     $file = IPS_GetKernelDir()."sounds\\ende.wav";
                     $len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                      SetValue(23014 /*[ISDN_SMS\ISDN Menü Flag]*/, 3); // Menü

                  } else {
                     $file = IPS_GetKernelDir()."sounds\\falsch.wav";
                     ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                  }
                    return;
                       
               case 71:
               echo $ISDN_DATA;
                     if( $ISDN_DATA == "*") {
                     	$file = IPS_GetKernelDir()."sounds\\lauter.wav";
                     	$len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                       	IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "SetVolume", "Volume" => 25));
                     	return;
							}
							if( $ISDN_DATA == "#") {
                     	$file = IPS_GetKernelDir()."sounds\\leiser.wav";
                     	$len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     	IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "SetVolume", "Volume" => 10));
                     	return;
							}
							if((int)$ISDN_DATA ==0) {
                       	$file = IPS_GetKernelDir()."sounds\\stop.wav";
                     	$len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     	IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "Pause", "Sender" => "none"));
                       	return;
							}
							if((int)$ISDN_DATA ==1) {
                       	$file = IPS_GetKernelDir()."sounds\\play.wav";
                     	$len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     	IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "Play", "Sender" => "none"));
                       	return;
							}
							if((int)$ISDN_DATA ==2) {
                     	$file = IPS_GetKernelDir()."sounds\
euer_sender.wav";
                     	$len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     	SetValue(23014 /*[ISDN_SMS\ISDN Menü Flag]*/, 712); // neuer Sender
                     	return;
							}
							
							if((int)$ISDN_DATA ==9) {
                     	$file = IPS_GetKernelDir()."sounds\\hauptmenue.wav";
      						$len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                         SetValue(23014 /*[ISDN_SMS\ISDN Menü Flag]*/, 3); // Hauptmenue
     		              	return;
								}
							
                     	$file = IPS_GetKernelDir()."sounds\\keine_funktion.wav";
                     	ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                    return;
						   
                  case 712:
                     SetValue(23014 /*[ISDN_SMS\ISDN Menü Flag]*/, 71); // Musik-Menü
                  	if((int)$ISDN_DATA ==0) {
                     	$file = IPS_GetKernelDir()."sounds\
dr2.wav";
                     	$len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                       	IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "SetRadio", "Sender" => "x-rincon-mp3radio://ndr-ndr2-hi-wma.wm.llnwd.net/ndr_ndr2_hi_wma"));
								IPS_Sleep(1000);
								IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "Play", "Sender" => "none"));
                    		return;
							}
                     if((int)$ISDN_DATA ==1) {
                     	$file = IPS_GetKernelDir()."sounds\\welle_nord.wav";
                     	$len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                       	IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "SetRadio", "Sender" => "x-rincon-mp3radio://ndr-ndr1wellenord-hi-wma.wm.llnwd.net/ndr_ndr1wellenord_hi_wma"));
								IPS_Sleep(1000);
								IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "Play", "Sender" => "none"));
                 			return;
							}
							if((int)$ISDN_DATA ==2) {
                     	$file = IPS_GetKernelDir()."sounds\\klassik_radio.wav";
                     	$len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     	IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "SetRadio", "Sender" => "x-rincon-mp3radio://players.creacast.com/creacast/klassik/playlist.pls"));
								IPS_Sleep(1000);
								IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "Play", "Sender" => "none"));
                 			return;
							}
							if((int)$ISDN_DATA ==3) {
                     	$file = IPS_GetKernelDir()."sounds\\chill_musik.wav";
                     	$len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     	IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "SetRadio", "Sender" => "x-rincon-mp3radio://di.fm/mp3/lounge.pls"));
								IPS_Sleep(1000);
								IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "Play", "Sender" => "none"));
                     	return;
							}
							if((int)$ISDN_DATA ==4) {
                     	$file = IPS_GetKernelDir()."sounds\\jazz.wav";
                     	$len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     	IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "SetRadio", "Sender" => "x-rincon-mp3radio://www.sky.fm/mp3/smoothjazz.pls"));
								IPS_Sleep(1000);
								IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "Play", "Sender" => "none"));
                     	return;
							}
							if((int)$ISDN_DATA ==5) {
                     	$file = IPS_GetKernelDir()."sounds\\pop.wav";
                     	$len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     	IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "SetRadio", "Sender" => "x-rincon-mp3radio://lsd.newmedia.nacamar.net/bb/redirect.lsc?content=live&media=mp3&stream=ndr/n-joy.mp3"));
								IPS_Sleep(1000);
								IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "Play", "Sender" => "none"));
                     	return;
							}
							if((int)$ISDN_DATA ==6) {
                     	$file = IPS_GetKernelDir()."sounds\\dance.wav";
                     	$len = ISDN_PlayWave(37323 /*[ISDN_SMS\ISDN Module 49]*/, $ISDN_CONNECTION, $file);
                     	IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "SetRadio", "Sender" => "x-rincon-mp3radio://stream2141.init7.net:80"));
								IPS_Sleep(1000);
								IPS_RunScriptEx(34210 /*[Media IR\Sonos V2]*/, Array("Befehl" => "Play", "Sender" => "none"));
                     	return;
							}
		} // switch($flagisdn)
	}
}

?>

sounds.zip (201 KB)

Hi,

Welche Hardware wird dafür benötigt?

Gruß.

Noch Fragen?!?

Wenn du mit deiner Frage etwa folgendes sagen wolltest:

Hääää??? Wie kann man denn sein Telefon mit IPS verbinden?

Dann wird dich die reichlich belohnen.