Hallo Marco,
hier hast mein Script zum aus probieren, ist so ähnlich wie die anderen auch.
Ich benutzte meine Script auch für die Überprüfung ob ein- oder ausgeschaltet ist
- DummyInstanz anlegen mit Namen für Zähler z.B. Spülmaschine
- Skript darunter anlegen
- Anfangstand Zähler und Zählerkonstante anpassen
- Skript einmal ausführen
- Ereignis auf Skript anlegen bei Variablenänderung 1-Wire Zähler
<?
//Anfangstand Zähler
$Start_Zaehler = 11.86; //z.B. 123.45
$Start_S0_Zaehler = 12555 ; //12345
//Zählerkonstante in Wh angeben
$ZK = 0.5/1000;
$SelfID = $IPS_SELF;
$Sender = $IPS_SENDER;
//print_r (IPS_GetObject($IPS_SELF));
$Object = IPS_GetObject($SelfID);
$ObjectID = $Object['ObjectID'];
$ParentID = $Object['ParentID'];
$InfoID = 0;
$InfoID = $Object['ObjectInfo'];
//print_r(IPS_GetObject($ParentID));
$Parent = IPS_GetObject($ParentID);
$Name = $Parent['ObjectName'];
@$Vari = explode(";",GetValueString ($InfoID));
//echo $Name;
//print_r ($Vari);
switch ($Sender)
{
case "Variable":
{
$Zaehlerstand_neu = $IPS_VALUE;
$Zaehlerstand_alt = GetValueInteger ($Vari[2]);
//IPS_LogMessage ("Verbrauch: ",$Start_Zaehler+(($Zaehlerstand_neu-$Start_S0_Zaehler)*$ZK));
if ($Zaehlerstand_neu > ($Zaehlerstand_alt+2)) //Standbyverluste
{
//Startzeit
if (@IPS_GetScriptTimer($SelfID) == 0)
{
SetValueString ($Vari[6],date("H:i:s"));
SetValueInteger ($Vari[7],time());
//Endzeit
SetValueString ($Vari[8],"--:--");
//Akt.Laufzeit
SetValueString ($Vari[10],"--:--");
echo "time gesetzt";
}
else
{
//Akt.Laufzeit
$time = time()-GetValueInteger($Vari[7])-3600;
SetValueString ($Vari[10],(date("H:i:s",$time)));
}
IPS_SetScriptTimer($SelfID, 180);
//Leistung hochzählen
$Start = GetValueFloat($Vari[0]);
$Neu = $Start+(($Zaehlerstand_neu-$Start_S0_Zaehler)*$ZK);
SetValueFloat($Vari[4],$Neu); //Ändern
//Ein/Aus
SetValueBoolean($Vari[3],true);
}
SetValueInteger ($Vari[2],$Zaehlerstand_neu);
break;
}
case "TimerEvent":
{
IPS_SetScriptTimer($IPS_SELF, 0);
//Wärmepumpe Ein/Aus
SetValueBoolean($Vari[3],false);
//Letzter Wert Speichern
$Akt = GetValueFloat($Vari[4]);
SetValueFloat($Vari[1],$Akt);
//Endzeit
SetValueString ($Vari[8],date("H:i:s"));
SetValueInteger ($Vari[9], time());
//Akt.Laufzeit
SetValueString ($Vari[10],"--:--");
echo $IPS_SENDER;
break;
}
case "Execute":
{
//Variable Variablen
$Meldungen = @IPS_GetObjectIDByName($Name."_Variablen",$ObjectID);
if ($Meldungen == 0)
{
$Meldungen = IPS_CreateVariable(3);
IPS_SetParent($Meldungen, $ObjectID);
IPS_SetName($Meldungen,$Name."_Variablen");
IPS_SetPosition($Meldungen, 205);
IPS_SetInfo($Meldungen, "This Variable was created by Script");
IPS_SetInfo($ObjectID,$Meldungen);
echo $Name."_Variablen erfolgreich eingerichtet \r";
}
//Variable Start Zähler
$ID[0] = @IPS_GetObjectIDByName("Start Zähler",$ObjectID);
if ($ID[0] == 0)
{
$ID[0] = IPS_CreateVariable(2);
IPS_SetParent($ID[0], $ObjectID);
IPS_SetName($ID[0],"Start Zähler");
IPS_SetPosition($ID[0], 5);
IPS_SetInfo($ID[0], "This Variable was created by Script");
IPS_SetVariableCustomProfile($ID[0], "~Electricity");
SetValueFloat ($ID[0],$Start_Zaehler);
echo "Start Zähler erfolgreich eingerichtet \r";
}
//Variable Start S0-Zähler
$ID[1] = @IPS_GetObjectIDByName("Start S0-Zählerstand",$ObjectID);
if ($ID[1] == 0)
{
$ID[1] = IPS_CreateVariable(1);
IPS_SetParent($ID[1], $ObjectID);
IPS_SetName($ID[1],"Start S0-Zählerstand");
IPS_SetPosition($ID[1], 8);
IPS_SetInfo($ID[1], "This Variable was created by Script");
SetValueInteger ($ID[1],$Start_S0_Zaehler);
echo "Start S0-Zählerstand erfolgreich eingerichtet \r";
}
//Variable letzter S0-Zählerstand
$ID[2] = @IPS_GetObjectIDByName("S0-Zählerstand_alt",$ObjectID);
if ($ID[2] == 0)
{
$ID[2] = IPS_CreateVariable(1);
IPS_SetParent($ID[2], $ObjectID);
IPS_SetName($ID[2],"S0-Zählerstand_alt");
IPS_SetPosition($ID[2], 11);
IPS_SetInfo($ID[2], "This Variable was created by Script");
echo "S0-Zählerstand_alt erfolgreich eingerichtet \r";
}
//Variable Gerät EIN/AUS
$ID[3] = @IPS_GetObjectIDByName($Name,$ParentID);
if ($ID[3] == 0)
{
$ID[3] = IPS_CreateVariable(0);
IPS_SetParent($ID[3], $ParentID);
IPS_SetName($ID[3],$Name);
IPS_SetPosition($ID[3], 0);
IPS_SetInfo($ID[3], "This Variable was created by Script");
IPS_SetVariableCustomProfile($ID[3], "~Switch");
echo $Name." erfolgreich eingerichtet \r";
}
//Variable Verbrauch
$ID[4] = @IPS_GetObjectIDByName("Verbrauch ".$Name." Insgesamt",$ParentID);
if ($ID[4] == 0)
{
$ID[4] = IPS_CreateVariable(2);
IPS_SetParent($ID[4], $ParentID);
IPS_SetName($ID[4],"Verbrauch ".$Name." Insgesamt");
IPS_SetPosition($ID[4], 5);
IPS_SetInfo($ID[4], "This Variable was created by Script");
IPS_SetVariableCustomProfile($ID[4], "~Electricity");
echo "Verbrauch ".$Name." Insgesamt erfolgreich eingerichtet \r";
IPS_SetPosition($SelfID, 50);
IPS_SetHidden($SelfID, true); //Objekt verstecken
}
// Pseudo-Skript
$ID[5] = @IPS_GetScriptIDByName("Pseudo",$ObjectID);
if ($ID[5] == 0)
{
$ID[5] = IPS_CreateScript(0);
IPS_SetParent($ID[5], $ObjectID);
IPS_SetName($ID[5],"Pseudo");
IPS_SetPosition($ID[5], 216);
IPS_SetInfo($ID[5], "This Script was created by Script");
echo "Pseudo Skript erfolgreich eingerichtet \r";
IPS_SetHidden($ID[5], true); //Objekt verstecken
IPS_SetVariableCustomAction($ID[3], $ID[5]);
}
//Variable Startzeit
$ID[6] = @IPS_GetObjectIDByName("Startzeit",$ParentID);
if ($ID[6] == 0)
{
$ID[6] = IPS_CreateVariable(3);
IPS_SetParent($ID[6], $ParentID);
IPS_SetName($ID[6],"Startzeit");
IPS_SetPosition($ID[6], 14);
IPS_SetInfo($ID[6], "This Variable was created by Script");
IPS_SetVariableCustomProfile($ID[6], "~String");
echo "Startzeit erfolgreich eingerichtet \r";
}
//Variable Startzeit timestamp
$ID[7] = @IPS_GetObjectIDByName("Startzeit_timestamp",$ObjectID);
if ($ID[7] == 0)
{
$ID[7] = IPS_CreateVariable(1);
IPS_SetParent($ID[7], $ObjectID);
IPS_SetName($ID[7],"Startzeit_timestamp");
IPS_SetPosition($ID[7], 17);
IPS_SetInfo($ID[7], "This Variable was created by Script");
IPS_SetVariableCustomProfile($ID[7], "~String");
echo "Startzeit_timestamp erfolgreich eingerichtet \r";
}
//Variable Endzeit
$ID[8] = @IPS_GetObjectIDByName("Endzeit",$ParentID);
if ($ID[8] == 0)
{
$ID[8] = IPS_CreateVariable(3);
IPS_SetParent($ID[8], $ParentID);
IPS_SetName($ID[8],"Endzeit");
IPS_SetPosition($ID[8], 17);
IPS_SetInfo($ID[8], "This Variable was created by Script");
IPS_SetVariableCustomProfile($ID[8], "~String");
echo "Endzeit erfolgreich eingerichtet \r";
}
//Variable Endzeit timestamp
$ID[9] = @IPS_GetObjectIDByName("Endzeit_timestamp",$ObjectID);
if ($ID[9] == 0)
{
$ID[9] = IPS_CreateVariable(1);
IPS_SetParent($ID[9], $ObjectID);
IPS_SetName($ID[9],"Endzeit_timestamp");
IPS_SetPosition($ID[9], 19);
IPS_SetInfo($ID[9], "This Variable was created by Script");
IPS_SetVariableCustomProfile($ID[9], "~String");
echo "Endzeit_timestamp erfolgreich eingerichtet \r";
}
//Variable Akt.Laufzeit
$ID[10] = @IPS_GetObjectIDByName("Akt.Laufzeit",$ParentID);
if ($ID[10] == 0)
{
$ID[10] = IPS_CreateVariable(3);
IPS_SetParent($ID[10], $ParentID);
IPS_SetName($ID[10],"Akt.Laufzeit");
IPS_SetPosition($ID[10], 20);
IPS_SetInfo($ID[10], "This Variable was created by Script");
IPS_SetVariableCustomProfile($ID[10], "~String");
echo "Akt.Laufzeit erfolgreich eingerichtet \r";
}
//ID Meldungen
$IDS = implode(";",$ID);
SetValueString($Meldungen,$IDS);
}
}
?>