Ferengi-Masters Terminverwaltung V2

Für das neue Errorlevel von IPS V2.1 ist eine Änderung der termin.txt notwendig.
Bitte als ersten Eintrag in der termin.txt Anstelle der leeren Zeile
folgenden Arrayinhalt eintragen:


,,,,,,,,,,,,,,,

Damit dürfte die Terminverwaltung keine Fehlermeldung mehr ausgeben.

Da ich mir privat einige neue Funktionen für die Terminverwaltung wünsche wollte ich fragen ob öffentliches Interesse daran besteht, da dies ja immer einen gehörigen Mehraufwand darstellt.
Die neuen Funktionen wären:

[ul]
[li]einmalige Termine können nach Ablauf automatisch gelöscht werden
[/li][li]monatliche Termine können angelegt werden
[/li][li]Möglichkeit einem Termin eine Script ID zuzuordnen welche dann ausgeführt wird (Beispiel Weihnachtsbeleuchtung uvm.)
[/li][/ul]

Hallo Thomas,

also erst mal einen herzlichen Dank dafür das du uns deinen Terminplaner zur Verfügung gestellt hast. (die Erinnerungen in Dashboard findet selbst meine Frau Klasse ) Solltest du die geplanten Funktionen einbauen, hätte ich auch großes Interesse daran. (Mir fallen spontan solche Dinge ein wie -Ständchen beim Aufstehen zu Geburtstagen oder Bergrüßung am Abend zu bestimmten Tagen usw.)
Also ich hoffe, du bleibst dran.

Gruß

Lutz

Hallo Lutz,

schön des sich wenigstens einer meldet.:frowning:
Und danke.:wink:
Wenn das Feadback für die neuen Funktionen so gering ist werde ich da wohl erstmal keine weitere Freizeit reinstecken.

Hallo Thomas,
habe auf V2.1 umgestellt und bekomme folgende Fehlermeldung beim neu erstellen eines Termines.

Notice: Undefined offset: 64 in [.Terminverwaltung erminverwaltung] on line 581

Habe keine Erklärung dafür.

cu uwe

Hallo Uwe,

war mal kurz eine Woche in Italien im Urlaub.
Deshalb kann ich erst jetzt antworten.
Der Fehler ist nicht weiter problematisch, bitte poste mal den Codeabschnitt.
Und hast Du die Änderung hier: http://www.ip-symcon.de/forum/f20/ferengi-masters-terminverwaltung-v2-6993/index3.html#post63205 schon gemacht?

Die Änderung habe ich schon gemacht.

hier die Zeile

$term_arr = explode(",", $term_arr_komplett[$counter]);

cu uwe

Hallo uwe,

habe mir das gerade mal angesehen, da muß ich noch einiges machen. Da ist vieles zu optimieren und diverse Fehler zu beseitigen. Werde das die nächsten Tage erledigen.:wink:

Hoffe alle Fehler sind nun beseitigt. Bitte um kurzes Feadback.
Habe aber erstmal keine weitere Zeit um ein neues Update hochzuladen, da dafür noch weitere Anpassungen notwendig wären. So sollte es aber ersmal gehen.
Bitte entsprechende Codezeilen komplett ersetzen:


	//---------------------------------------------------------------------------
 	//------------------------------ Terminverwaltung ---------------------------
 	//---------------------------------------------------------------------------

	//Datensätze laden oder ersten Datensatz erzeugen

 	if(file_exists($filename)) //Datensätze laden
 	{
   	$termfile = file_get_contents($filename); //Termine in Variable einlesen
   	$term_arr_komplett = explode("
", $termfile); // nach Zeilenumbruch trennen und in array
 	}
 	else //erster Datensatz
 	{
   	$term_neu_komplett = ",,,,,,,,,,,,,,,"."
"; // 1 x Platzhalter String erzeugen
   	$handle=fopen($filename, "w");
   	fwrite($handle,$term_neu_komplett);
   	fclose($handle);
   	SetValueInteger($id_counter,0);
 	}

 	$counter_summe = count($term_arr_komplett); // Werte zählen
 	SetValueInteger($id_counter_summe,$counter_summe-1); //Gesamtsumme der Datensätze

 	//--------------------------- Datensatz vor ---------------------------------

 	if($IPS_COMPONENT == "vor" or $IPS_COMPONENT == "vor_10")
 	{
   	SetValueString($id_term_meldung,"");
   	if($IPS_COMPONENT == "vor")
   	{
      	$counter = GetValueInteger($id_counter);
      	$counter = $counter+1;
      	$werte = count($term_arr_komplett); // Werte zählen
      	if($counter == $werte){$counter=1;} //Am Ende Zähler auf Anfang
      	SetValueInteger($id_counter, $counter);
      	$term_arr = explode(",", $term_arr_komplett[$counter]);
   	}
   	if($IPS_COMPONENT == "vor_10")
   	{
      	$counter = GetValueInteger($id_counter);
      	$counter = $counter+10;
      	if($counter_summe-1 < $counter){return;} // raus wenn Datensatz nicht existiert
      	$werte = count($term_arr_komplett); // Werte zählen
      	if($counter == $werte){$counter=$werte-1;}
      	SetValueInteger($id_counter, $counter);
      	$term_arr = explode(",", $term_arr_komplett[$counter]);
   	}
   	term_anz();
   	return;
 	}

 	//---------------------------- Datensatz zurück -----------------------------

 	if($IPS_COMPONENT == "zur" or $IPS_COMPONENT == "zur_10")
 	{
   	SetValueString($id_term_meldung,"");
   	if($IPS_COMPONENT == "zur")
   	{
      	$counter = GetValueInteger($id_counter);
      	$counter = $counter-1;
      	$werte = count($term_arr_komplett); // Werte zählen
      	if($counter<1){$counter=$werte-1;}
      	SetValueInteger($id_counter, $counter);
      	$term_arr = explode(",", $term_arr_komplett[$counter]);
   	}
   	if($IPS_COMPONENT == "zur_10")
   	{
      	$counter = GetValueInteger($id_counter);
      	$counter = $counter-10;
      	if($counter<1){$counter=1;}
      	SetValueInteger($id_counter, $counter);
      	$term_arr = explode(",", $term_arr_komplett[$counter]);
   	}
   	term_anz();
   	return;
 	}

	//--------------------------- neuer Datensatz -------------------------------

 	if($IPS_COMPONENT == "neu")
 	{
		//Counter auf neuen Datensatz setzen
		SetValueInteger($id_counter, count($term_arr_komplett)); // Werte zählen

	   //leerer Datensatz und aktiv gesetzt
   	$string = array
   	(
   	$id_term_stunde,
   	$id_term_minute,
  		$id_term_tag,
  		$id_term_monat
   	);

   	foreach($string as $value) SetValueString($value, "0");

   	$bool = array
   	(
   	$id_term_einmalig,
   	$id_term_jaerlich,
   	$id_term_mo,
   	$id_term_di,
   	$id_term_mi,
   	$id_term_do,
   	$id_term_fr,
   	$id_term_sa,
   	$id_term_so
   	);

	   foreach($bool as $value) SetValueBoolean($value, false);

   	SetValueBoolean($id_term_aktiv, true);

   	SetValueString($id_term_inhalt, "");

   	SetValueString($id_term_meldung,"Bitte neuen Datensatz eingeben");
 	}

 	//----------------------------- Datensatz löschen ---------------------------

 	if($IPS_COMPONENT == "loe")
 	{
   	$counter = GetValueInteger($id_counter);
   	unset ($term_arr_komplett[$counter]);
   	$term_neu_komplett = implode("
", $term_arr_komplett); // in String zurück
   	$handle=fopen($filename, "w");
   	fwrite($handle,$term_neu_komplett);
   	fclose($handle);

	   $counter = GetValueInteger($id_counter);
   	$counter = $counter-1;
   	if($counter<1){$counter=1;}
   	SetValueInteger($id_counter, $counter);
   	$term_arr = explode(",", $term_arr_komplett[$counter]);

	   //vorherigen Datensatz anzeigen
   	term_anz();

	   $counter_summe = count($term_arr_komplett); // Werte zählen
   	SetValueInteger($id_counter_summe,$counter_summe-1); //Gesatmsumme der Datensätze

	   SetValueString($id_term_meldung,"Datensatz gelöscht");
   	SetValueInteger($id_terminmodus, 6);
  	 	IPS_RunScript($IPS_SELF);
   	return;
 	}

	//----------------------------- Datensatz speichern -------------------------

 	if($IPS_COMPONENT == "speichern")
 	{
   	$counter       = GetValueInteger($id_counter);

		$term_arr[0] = ""; //Timestamp auf Index 0 setzen und an den Anfang des array

	   term_hol();

		//Datensatz prüfen===>

	   //wenn Stundenwert >24 Uhr oder kleiner 0 Uhr
   	if((int)$term_stunde > 24 or (int)$term_stunde < 0 or (int)$term_minute >59 or (int)$term_minute < 0)
   	{
      	SetValueString($id_term_meldung,"Diese Uhrzeit ist nicht möglich.");
      	SetValueBoolean($id_err_time, true);
      	return;
   	}

	   //wenn Stundenwert 24 Uhr und min größer 0
   	if((int)$term_stunde == 24 and (int)$term_minute >0)
   	{
      	SetValueString($id_term_meldung,"Diese Uhrzeit ist nicht möglich.");
      	SetValueBoolean($id_err_time, true);
      	return;
   	}

		//nach Buchstaben und Sonderzeichen suchen
		if(preg_match("/[^0-9]/", $term_arr[11]) or preg_match("/[^0-9]/", $term_arr[12]) or
			preg_match("/[^0-9]/", $term_arr[13]) or preg_match("/[^0-9]/", $term_arr[11]))
		{
        	SetValueString($id_term_meldung,"Datum oder Uhrzeit haben ein falsches Format.");
        	SetValueBoolean($id_err_date, true);
        	SetValueBoolean($id_err_time, true);
        	return;
		}
		else
		{
	   	//Zeitstempel aus Datensatz generieren
   		$term_arr[0] = mktime((int)$term_stunde, (int)$term_minute, 0, (int)$term_monat, (int)$term_tag, 2000);
   	}

	   //wenn jährlich und einmalig und wöchentlich nicht gesetzt
   	if(
   	$term_jaerlich == false and $term_einmalig == false and
   	$term_mo       == false and $term_di       == false and
   	$term_mi       == false and $term_do       == false and
   	$term_fr       == false and $term_sa       == false and $term_so == false)
   	{
      	SetValueString($id_term_meldung,"Wiederholungswert wurde nicht eingegeben.");
      	SetValueBoolean($id_err_einm_jaerl, true);
      	SetValueBoolean($id_err_woch, true);
      	return;
   	}

	   //wenn jährlich und einmalig gesetzt
   	if($term_jaerlich == true and $term_einmalig == true)
   	{
      	SetValueString($id_term_meldung,"Der Wert Jährlich und Einmalig kann nicht gleichzeitig gesetzt werden.");
      	return;
   	}

	   //wenn jährlicher oder einmaliger Termin und Monat >12 oder <1
   	if(
   	$term_jaerlich == true and (int)$term_monat > 12 or
   	$term_jaerlich == true and (int)$term_monat < 1 or
   	$term_einmalig == true and (int)$term_monat > 12 or
   	$term_einmalig == true and (int)$term_monat < 1)
   	{
      	SetValueString($id_term_meldung,"Monatswert größer 12 oder kleiner 1 nicht möglich.");
      	SetValueBoolean($id_err_date, true);
      	return;
   	}

	   //Anzahl der Tage im Monat errechnen
		if($term_monat>0)	$mon_days = cal_days_in_month(CAL_GREGORIAN,(int)$term_monat,date("Y"));

	   //dieses Datum ist nicht möglich
   	if(
   	$term_jaerlich == true and (int)$term_tag > $mon_days or
   	$term_einmalig == true and (int)$term_tag > $mon_days)
   	{
      	SetValueString($id_term_meldung,"Dieses Datum ist in ".date("Y")." nicht möglich.");
      	SetValueBoolean($id_err_date, true);
      	return;
   	}

   	//wenn Wochenwert gesetzt und jährlich gesetzt
   	if(
   	$term_jaerlich == true and $term_mo == true or
   	$term_jaerlich == true and $term_di == true or
   	$term_jaerlich == true and $term_mi == true or
   	$term_jaerlich == true and $term_do == true or
   	$term_jaerlich == true and $term_fr == true or
   	$term_jaerlich == true and $term_sa == true or
   	$term_jaerlich == true and $term_so == true)
   	{
      	SetValueString($id_term_meldung,"Wöchentlicher Termin in Verbindung mit Einmalig oder Jährlich ist nicht möglich.");
      	SetValueBoolean($id_err_einm_jaerl, true);
      	SetValueBoolean($id_err_woch, true);
      	return;
   	}

	   //wenn Wochenwert gesetzt und einmalig gesetzt
   	if(
   	$term_einmalig == true and $term_mo == true or
   	$term_einmalig == true and $term_di == true or
   	$term_einmalig == true and $term_mi == true or
   	$term_einmalig == true and $term_do == true or
   	$term_einmalig == true and $term_fr == true or
   	$term_einmalig == true and $term_sa == true or
   	$term_einmalig == true and $term_so == true)
   	{
      	SetValueString($id_term_meldung,"Wöchentlicher Termin in Verbindung mit Einmalig oder Jährlich ist nicht möglich.");
      	SetValueBoolean($id_err_einm_jaerl, true);
      	SetValueBoolean($id_err_woch, true);
      	return;
   	}

	   //wenn Wochenwert gesetzt und Datum != 0
   	if(
   	$term_tag   != 0 and $term_mo == true or
   	$term_tag   != 0 and $term_di == true or
   	$term_tag   != 0 and $term_mi == true or
   	$term_tag   != 0 and $term_do == true or
   	$term_tag   != 0 and $term_fr == true or
   	$term_tag   != 0 and $term_sa == true or
   	$term_tag   != 0 and $term_so == true or
   	$term_monat != 0 and $term_mo == true or
   	$term_monat != 0 and $term_di == true or
   	$term_monat != 0 and $term_mi == true or
   	$term_monat != 0 and $term_do == true or
   	$term_monat != 0 and $term_fr == true or
   	$term_monat != 0 and $term_sa == true or
   	$term_monat != 0 and $term_so == true)
   	{
      	SetValueString($id_term_meldung,"Wöchentlicher Termin in Verbindung mit einem Datum ist nicht möglich.");
      	SetValueBoolean($id_err_date, true);
      	return;
   	}

	   //wenn termin weniger als 2 Zeichen
   	if(strlen($term_inhalt)<2)
   	{
      	SetValueString($id_term_meldung,"dieser Termineintrag ist zu kurz oder wurde nicht mit Enter bestätigt");
      	SetValueBoolean($id_err_inhalt, true);
      	return;
   	}

	   //wenn Wochenwert gesetzt, Datum auf 0 setzen
   	if(
   	$term_mo == true or
   	$term_di == true or
   	$term_mi == true or
   	$term_do == true or
   	$term_fr == true or
   	$term_sa == true or
   	$term_so == true)
   	{
      	$term_arr[13] = 0;
      	$term_arr[14] = 0;
   	}

	   //wenn jährlich gesetzt, Zeit auf 0 setzen
   	if($term_jaerlich)
   	{
      	$term_arr[11] = 0;
      	$term_arr[12] = 0;
   	}

	   //Fehler löschen
   	SetValueBoolean($id_err_date, false);
   	SetValueBoolean($id_err_time, false);
   	SetValueBoolean($id_err_einm_jaerl, false);
   	SetValueBoolean($id_err_woch, false);
   	SetValueBoolean($id_err_inhalt, false);

	   $term_neu = implode(",", $term_arr); // in String zurück

  	 	$term_arr_komplett[$counter] = $term_neu;
   	sort($term_arr_komplett); // nach Zeit sortieren
   	$term_neu_komplett = implode("
", $term_arr_komplett); // in String zurück
   	$handle=fopen($filename, "w");
   	fwrite($handle,$term_neu_komplett);
   	fclose($handle);

	   SetValueString($id_term_meldung,"Datensatz gespeichert");

	   $counter = 1;// Datensatz 1 anzeigen
   	SetValueInteger($id_counter, $counter);
   	$term_arr = explode(",", $term_arr_komplett[$counter]);
   	term_anz();

   	SetValueBoolean($id_term, false); //Terminsymbol löschen
   	SetValueInteger($id_terminmodus, 6);
   	IPS_RunScript($IPS_SELF);
 	}

 	$counter_summe = count($term_arr_komplett); // Werte zählen
 	SetValueInteger($id_counter_summe,$counter_summe-1); //Gesatmsumme der Datensätze

 	//------------------------------- Funktionen --------------------------------

 	function term_anz() //Datensatz anzeigen
 	{
   	global $term_arr;

	   global $id_term_einmalig, $id_term_jaerlich, $id_term_mo, $id_term_di, $id_term_mi;
   	global $id_term_do, $id_term_fr, $id_term_sa, $id_term_so, $id_term_aktiv, $id_term_stunde;
   	global $id_term_minute, $id_term_tag, $id_term_monat, $id_term_inhalt;
		global $id_err_date, $id_err_time, $id_err_einm_jaerl, $id_err_woch, $id_err_inhalt;

		SetValueBoolean($id_term_einmalig, (bool)$term_arr[1]);
   	SetValueBoolean($id_term_jaerlich, (bool)$term_arr[2]);
   	SetValueBoolean($id_term_mo,       (bool)$term_arr[3]);
   	SetValueBoolean($id_term_di,       (bool)$term_arr[4]);
   	SetValueBoolean($id_term_mi,       (bool)$term_arr[5]);
   	SetValueBoolean($id_term_do,       (bool)$term_arr[6]);
   	SetValueBoolean($id_term_fr,       (bool)$term_arr[7]);
   	SetValueBoolean($id_term_sa,       (bool)$term_arr[8]);
   	SetValueBoolean($id_term_so,       (bool)$term_arr[9]);
   	SetValueBoolean($id_term_aktiv,    (bool)$term_arr[10]);
   	SetValueString($id_term_stunde,   $term_arr[11]);
   	SetValueString($id_term_minute,   $term_arr[12]);
   	SetValueString($id_term_tag,      $term_arr[13]);
   	SetValueString($id_term_monat,    $term_arr[14]);
   	SetValueString($id_term_inhalt,   $term_arr[15]);
    	//Fehler löschen für neue Prüfung
	 	SetValueBoolean($id_err_date, false);
 		SetValueBoolean($id_err_time, false);
 		SetValueBoolean($id_err_einm_jaerl, false);
 		SetValueBoolean($id_err_woch, false);
 		SetValueBoolean($id_err_inhalt, false);
 	}

	function term_hol() //Datensatz holen
 	{
   	global $term_arr, $term_einmalig, $term_jaerlich, $term_mo, $term_di, $term_mi;
   	global $term_do, $term_fr, $term_sa, $term_so, $term_aktiv, $term_stunde;
   	global $term_minute, $term_tag, $term_monat, $term_inhalt;

	   global $id_term_arr, $id_term_einmalig, $id_term_jaerlich, $id_term_mo, $id_term_di, $id_term_mi;
   	global $id_term_do, $id_term_fr, $id_term_sa, $id_term_so, $id_term_aktiv, $id_term_stunde;
   	global $id_term_minute, $id_term_tag, $id_term_monat, $id_term_inhalt;

		$term_einmalig = $term_arr[1]  = GetValueBoolean($id_term_einmalig);
   	$term_jaerlich = $term_arr[2]  = GetValueBoolean($id_term_jaerlich);
   	$term_mo       = $term_arr[3]  = GetValueBoolean($id_term_mo);
   	$term_di       = $term_arr[4]  = GetValueBoolean($id_term_di);
   	$term_mi       = $term_arr[5]  = GetValueBoolean($id_term_mi);
   	$term_do       = $term_arr[6]  = GetValueBoolean($id_term_do);
   	$term_fr       = $term_arr[7]  = GetValueBoolean($id_term_fr);
   	$term_sa       = $term_arr[8]  = GetValueBoolean($id_term_sa);
   	$term_so       = $term_arr[9]  = GetValueBoolean($id_term_so);
   	$term_aktiv    = $term_arr[10] = GetValueBoolean($id_term_aktiv);
   	$term_stunde   = $term_arr[11] = GetValueString($id_term_stunde);
   	$term_minute   = $term_arr[12] = GetValueString($id_term_minute);
   	$term_tag      = $term_arr[13] = GetValueString($id_term_tag);
   	$term_monat    = $term_arr[14] = GetValueString($id_term_monat);
   	$term_inhalt   = $term_arr[15] = GetValueString($id_term_inhalt);
 	}

 	//---------------------------------------------------------------------------


hallo Thomas,
hat alles super geklappt, danke.
Deine Terminverwaltung ist spitze, möchte sie nicht mehr missen.
Was noch sein könnte, automatische löschung der alten Termine und eine zum Termin erstellte Grafik die man einstellen kann.

cu uwe

Schön das alles geht.

…und eine zum Termin erstellte Grafik die man einstellen kann.

Kannst Du das bitte genauer erläutern.

Vielleicht habe ich mich nicht richtig ausgedrückt?
Ich möchte wenn ein Termin dran ist im Designer ein Bild darstellen.
z.B. Termin Blaue Tonne rausstellen, dann ein Bild der blauen Tonne einblenden.

cu uwe

hmm… das ist in sofern nicht ganz einfach, da es dann probleme bei mehreren terminen zum gleichen zeitpunkt geben würde, was ich allerdings machen kann ist eine Script ID dem Termin zuordnen, das werde ich auch definitiv noch machen, hier kannst Du dann ja Dein Bild aufrufen oder Dinge schalten etc.

ja das ist noch besser, kann viele sachen steuern.

cu uwe

Hallo Thomas,

nachdem ich auch einige Fehlermeldungen hatte, bisher aber zu Faul war selbst danach zu suchen, habe ich jetzt dein „update“ ausprobiert. Was soll ich sagen, Klasse! Alle Fehler weg! Danke

Die von dir weiter oben angesprochenen Funktionen würde ich berüßen.

Ciao und weiter so…

andrge

Hallo Thomas,
habe mir Dein Terminplaner runtergeladen und in mein Dashboard integriert, funktioniert wunderbar.
Dein geplantes Feature, automatische Terminlöschung (einmalige Termine) würde ich auch gut finden. Bei der täglichen Arbeit mit Deinem Terminplaner ist mir noch eine Verbesserungsmöglichkeit eingefallen.
Da bei einen Touchscreen die Eingabe mit der Bildschirmtastatur doch ein wenig fummelig ist, wäre eine Datumseingabe durch einen Fingertip in einen Monatskalender (vgl. Outlook) sehr viel einfacher.
Ich habe mir schon Buttons für Gelben Sack; Schwarze Tonne; blaue Tonne; Geburtstag angelegt und spare mir dadurch schon einige Eingaben mittels Bildschirmtastatur.:loveips:

Gruß Peter

Hallo Peter,

arbeite gerade an der Doku für die V2.3, der Code ist schon fertig, werde das die nächsten Tage vorstellen.:slight_smile:

So geschafft, die V2.3 ist fertig und es gibt eine Menge Neues.:slight_smile: (siehe Thread 1:http://www.ip-symcon.de/forum/f20/ferengi-masters-terminverwaltung-v2-6993/#post57534)
Habe mir die Arbeit gemacht eine ausführliche Dokumentation anzufertigen, diese ist als pdf in der zip Datei enthalten.

[ul]
[li]neues Design[/li][li]diverse Bugifxes[/li][li]Anpassung an IPS V2.1[/li][li]neues Datensatzformat (über konvert.php kann altes Format konvertiert werden)[/li][li]wegfall von Fehlervariablen[/li][li]einmalige Termmine können automatisch gelöscht werden[/li][li]Script ID kann ausgeführt werden[/li][li]Parameter an Script kann angegeben werden[/li][/ul]
Viel Spaß!

Hallo Ferengi-Master,

besten Dank für die schöne Terminverwaltung.
Mein Gott, was hast Du dir eine Arbeit mit der Dokumentation gemacht.

Du müsstest mal wie Torro so ein „CD/DVD Wunschzettel“ bei Amazon einrichten.

Ich habe noch eine Frage zur Sprachausgabe.

Ich verstehe das Beispielscript nicht. In der Beschreibung steht:

Zitat: „Sprachausgabe Termin (passiert in der Terminverwaltung)“

Ich habe in deinem Script keinerlei TTS-Befehle gefunden. Wo ist die Sprachausgabe programmiert? Oder besteht da ein Verständnisproblem und die Sprachausgabe muss ich in die „if else“ Anweisung packen, und der Text für die Sprachausgabe kommt lediglich aus dem Script?

Für deine Hilfs besten Dank

Bis dann

Schablone

PS: Alternativ zur CD/DVD Wunschliste könnte ich mir in der Vorweihnachtszeit einen Versand von Marzipankartoffeln vorstellen.
Gesetzt den Fall Du bist auch so eine süße Sau wie ich. :wink:

Hallo Schablone,

Die Sprachausgabe (TTS) muß an die entsprechende Stelle in der Terminverwaltung. Beispiel bei mir:


 //Termine für morgen ansagen
 if($terminmodus == 1 and $erg == -1)
 {
       SetValueBoolean($id_term_mod1_ansage, true);
       TTS_Play(1,"Achtung Termin morgen".$term_inhalt,"meldung",3);
 }        

Die Funktion TTS_Play findest Du hier: http://www.ip-symcon.de/forum/f53/komfortable-tts-ausgabe-funktion-6488/ oder Du nimmst einfach den IPS TTS Befehl.

Nun kannst Du mit meinem Beispiel der Doku aus jedem beliebigen Deiner Scripte heraus die Termine für heute oder morgen ansagen lassen.

Du müsstest mal wie Torro so ein „CD/DVD Wunschzettel“ bei Amazon einrichten.

Der beste Dank für mich sind lobende Worte und der gleiche Spaß mit IPS und seinen Möglichkeiten und Scriptbeispielen. Das reicht völlig.:wink: