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;
}
?>