Einrichtung klappt nicht

Moin Leute,
ich bin gerade dabei eine 1-Wire Netzwerk einzurichten und hänge beim einrichten der Temperatursensoren.

Die Einrichtung vom Ethernet Controller 1 von Fa. E-Service war soweit kein Problem. Beim einrichten der Temperatursensoren benutze ich dann das Script von E-Service (Version: V2; Controller 1 Firmware: getestet mit V1.06; IP-Symcon: getestet mit V3.4). Bei der Ausführung findet er aber die überliegende Kategorie und die Registervariable nicht.

Wenn ich durch das Forum stöber ist der Name der Kategorie immer „1-Wire Controller E-Service Online“. Das Script von E-Service erzeugt bei mir aber eine Kategorie mit Namen „1-Wire Controller E-Service Online 1“.

Das Script für die Temperatursensoren erwartet aber eine Kategorie mit Namen „1-Wire Controller E-Service Online“.
Was ist zu tun?

Das letztgenannte Script anpassen …

Dafür reicht mein momentanes Wissen/Mut nicht aus. Hier könnte ich Hilfe benötigen.
Ich wunder mich nur warum man ein Script bereit stellt und dann doch in der Sektion „Hier bitte nichts mehr ändern“ was ändern muss.

<<?
/******************************************************************************
Auswerteskript für 1-Wire Temperatursensoren DS1820, DS18S20 und DS18B20

Version 			2.0
Datum:  			22.07.2015
IPS Version:	3.4
Erstellt von:	Andreas Geisler für eservice-online (http://www.eservice-online.de)


Alle benoetigten Variablen, Skripte und Triggerbedingungen werden automatisch in IP-Symcon angelegt.
Sollte eine Variable geloescht werden, wird eine neue Variable mit dem naechsten Programmdurchlauf angelegt.
*******************************************************************************/

	/*Installation und Konfiguration
	Folgende Schritte mueßen Sie einmalig von Hand ausführen:

	Schritt 1:
	==================
	Kategorie unterhalb des 1-Wire Controller 1 anlegen. Name nach eigenem Wunsch

	Schritt 2:
	==================
	Ein neues Skript unterhalb der Kategorie aus Schritt 1 erstellen. Name nach eigenem Wunsch

	Schritt 3:
	==================
	Zuweisen der Variable des 1-Wire Controller 1
	Kopieren Sie hier den Namen der OWD.exchange Variable*/
	$OWD_exchange = "1_OWD1.exchange";    								//Variable Temperatur
	$OWD_nummer = 1;    //OWD Nummer der Controller Ausgaben    //OWD Nummer

	/*	Schritt 4:
	==================
	Skript 1x per "Ausführen" starten
	FERTIG !!!!!!!!

	Ab jetzt wird das Skript zyklisch aufgerufen und der Stromverbrauch berechnet.

	Viel Spaß mit dem Beispielskript.

	Gerne duefen Sie uns Verbesserungen oder Kritik (gern auch positiv) zu kommen lassen.
	Mail: info@eservice-online.de 	*/



/*	*******************************************************************************
//Fuer Testzwecke koennen Debugausgaben aktiviert werden
// Debug-Modus an=true / aus=false  */
$debug = false;



/********************************************************************************
!!!!!!!!!!!!!!!!!!!!   Ab hier nichts mehr ändern   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
********************************************************************************/

// Übergeordnete Kategorie ermitteln
$parent_controller_id = IPS_GetCategoryIDByName ("1-Wire Controller E-Service Online", 0 );
	if($debug) {echo "1-Wire Controller ID:  $parent_controller_id 
";}

// ID der Registervariablen suchen
$ID_RegisterVariable =  IPS_GetInstanceIDByName("RegisterVariable 1-Wire Controller", $parent_controller_id);
	if($debug) {echo "Register Variable ID:  $ID_RegisterVariable 
";}

// ID der Kategorie suchen
$ID_Category = IPS_GetParent($IPS_SELF);
	if($debug) {echo "Kategorie ID:          $ID_Category 
";}

// Variablen zur Skriptverarbeitung von Controller einlesen und intern verfügbar machen
$temp_var = 	IPS_GetVariableIDByName($OWD_exchange, $parent_controller_id);
	if($debug) {echo "Temperatur Variable:   $temp_var 
";}


// ***************** Start Erstinitialisierung *********************************
if($IPS_SENDER == "Execute")                 						// nur wenn bei "Ausführen"
	{
	// Skript verstecken
   IPS_SetHidden($IPS_SELF, true);
   IPS_SetPosition($IPS_SELF, 99);

		//Ereignis Event für Skript erstellen
		//*****************************************************************
		$EreignisID = @IPS_GetEventIDByName("Update_OWD_$OWD_nummer.exchange", $IPS_SELF);
		if ($EreignisID === false)
			{
			$eid = IPS_CreateEvent(0);                  							//Ausgelöstes Ereignis
			IPS_SetEventTrigger($eid, 1, $temp_var);    							//Bei Änderung von Variable $temp_var
			IPS_SetParent($eid, $_IPS['SELF']);         							//Ereignis zuordnen
			IPS_SetName($eid, "Update_OWD_$OWD_nummer.exchange");								//Namen für Ereignis schreiben
			IPS_SetEventActive($eid, true);             							//Ereignis aktivieren
				if($debug) {echo "Eventbedingung programmiert
";}
			}
		else
    		if($debug) {echo "Ereignis existiert, ID lautet: ". $EreignisID;}
	}
// ****************** Ende Erstinitialisierung *********************************


if($_IPS['SENDER'] == "Variable")
	{
		//Variablen laden
		//******************************************
		$temp_cont   = GetValue ( $temp_var  );

		//Temperaturumrechnung
		//***********************************************
		// Variablen IDs zuweisen und gegebenenfalls anlegen
		$temperatur  	= CreateVariableByName($ID_Category, "Temperatur",	"°C");

		//Berechung Temperatur
		//***********************************************
		$temp = $temp_cont / 100;
		$Roundtemp = round ($temp, 2);
		SetValue ($temperatur , $Roundtemp );							//Ausgabe $RoundFeuchte
			if($debug) { echo "Temperatur: $Roundtemp °C
"; } 	//Debug Ausgabe
	}


// Funktionen
// ****************************************************************************
// Variablen erstellen falls nicht vorhanden und ID entsprechend zuordnen
function CreateVariableByName($id, $name, $type)
	{
	global $IPS_SELF;
	global $ScriptID;
	$vid = @IPS_GetVariableIDByName($name, $id);
	if($vid === false)
		{
		// $vartype: Boolean=0, Integer=1, Float=2, String=3
		if ($type == '°C')   			$vartype = 2;
		if ($type == 'Temperatur')  	$vartype = 2;

		$vid = IPS_CreateVariable($vartype);
		IPS_SetParent($vid, $id);
		IPS_SetName($vid, $name);
		IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");

		if ($type == '°C')	{
			IPS_SetVariableCustomProfile ($vid, "~Temperature");
			IPS_SetPosition($vid, 10); }
		}
		return $vid;
	}

// Eine Function um ein Script im Script-Verzeichnis zu erzeugen
// erstellt von hirschbrat, angepasst wgreipl
function CreateScriptByName($ScriptNAME, $ParentID, $ScriptTEXT)
	{
	global $IPS_SELF;
	$ScriptID = @IPS_GetScriptIDByName($ScriptNAME, $ParentID);
	if ($ScriptID == 0)
		{
		$ScriptID = IPS_CreateScript(0);
		IPS_SetName($ScriptID, $ScriptNAME);
		IPS_SetParent($ScriptID, $ParentID);
		IPS_SetInfo($ScriptID, "This script was created by: #$IPS_SELF#");
		$fh = fopen(IPS_GetKernelDir()."scripts\\".$ScriptID.".ips.php", 'w') or die("can't open file");
		fwrite($fh, $ScriptTEXT);
		fclose($fh);
		$ScriptPath = $ScriptID.".ips.php";     								//Skriptdatei
		IPS_SetScriptFile($ScriptID, $ScriptPath);
		IPS_SetHidden($ScriptID, true);
		IPS_SetPosition($ScriptID, 98);
		}
	return $ScriptID;
	}


?>

Gleich unter dem Block „ab hier nichts mehr ändern“ beim Befehl IPS_GetCategoryIDByName(…) dort einfach hinter Online ein Leerzeichen und eine 1 einfügen.

Ich antworte vom Handy, daher diese etwas komische Formulierung.

Das hat leider auch nicht die Lösung gebracht:( Zusätlich habe ich auch noch die -1- im Eintrag RegisterVariable hinzu gefügt … auch kein Erfolg.
Er legt einfach keine Variable an

Kann es sein das dieses Script für IPS Version 4 nicht gemacht ist?

Wenn Du den Controller lauffähig hast und der Temperatirwert ausgegeben wird, dann lege Dir ein Script an. Dieses triggerst Du auf Änderung der OWDx Variable. Den Wert der Variable teilst Du durch 10 ind schreibst das Ergebnis in eine Variable Deiner Wahl. Geht schnell …

Hallo Der Standart
und erst einmal Danke für deine Hilfe:). Ich habe das jetzt so gemacht wie von dir beschrieben, bis auf den Teiler der ist 100 und funktioniert tadellos.
In der Art und Weise habe ich das auch bei meinem KNX-LCN Gateway mehrfach gemacht. Letzendlich dachte ich aber, dass das Script noch ein paar Vorteile hat.

Hallo,

Wenn ich einen Button-Leser anschliesse erkennt das Script den Leser sowie die Button-Teile aber leider wird nicht aktualisiert wann gelesen wurde

Hat jemand eine Idee wie ich die Anwesenheit eines Buttons erkennen kann?

Mit freundlichen Grüßen