…und hoffte, dass das mit der IPS 2.1, die ich eigentlich nach Anleitung erfolgreich migriert hatte, so weiter geht. Aber die Knadenfrist für das direkte Schreiben in eine Stringvariable durch Registervariable scheint mit der V2.1 abgelaufen zusein, denn danach liefen entsprechende Scripts nicht mehr.
Keine Frage… ich habe mit RegVar_Get u. Set… IPS_SENDER, VALUE u. INSTANCE herumprobiert und jetzt zum 3. mal meine alte V2.0 zurück gespielt.
Wenn mir jetzt nochmal jemand die Zusammenhänge anhand meines eigenen Scripts erklären könnte, dann würde ich es vielleicht besser verstehen und alle weiteren selbst umsetzen können.
Ich möchte einfach die nächsten 3 Wochen (bis der Stress im neuen Jahr wieder los geht) dazu nutzen, die V2.1 respektive Beta 2.2 zu migrieren, um auf dem Laufenden zu bleiben.
Hier mein „Lieblingsscript“ zum Auswerten eines Leveljet über die ser. Schnittstelle:
<?
/*
*************************************************
Heizöl-Füllstand überwachen (LEVELJET)
*************************************************
File : LEVELJET_LOG.ips.php
Trigger : Variable LEVELJET
Interval : 1 Sekunde
*/
if (GetValueString(32686 /*[0. Keller\Heizung\LevelJet (Keller)]*/ ) == "")
return;
if (!IPS_SemaphoreEnter("RegisterVariable_Log_run",1))
return;
IPS_Sleep(800);
$buffer = GetValueString(32686 /*[0. Keller\Heizung\LevelJet (Keller)]*/ );
SetValueString(32686 /*[0. Keller\Heizung\LevelJet (Keller)]*/ ,"");
list($usec, $sec) = explode(" ", microtime());
$start_time = strftime("%H:%M:%S",$sec);
// Debugmodus = true schreibt Log - false beendet Logging
$ldebug = false;
// Datenblock zerlegen und Menge errechnen
$length = strlen($buffer);
if ($ldebug)
echo "Länge: ". $length ."
";
if ($length == 11)
{
$high_byte = ord($buffer{7});
$low_byte = ord($buffer{6});
$menge = $high_byte * 256 *10 + $low_byte * 10;
SetValueInteger(55389 /*[0. Keller\Heizung\Heizöltank Füllstand (Keller)]*/ ,$menge);
}
if ($ldebug){
// Logfile öffnen (Pfad und Datei)
$handle = fopen("H:/LevelJet/testlog.txt","a");
// Message verarbeiten
$length = strlen($buffer);
if ($length !== 0)
{
fwrite($handle,$start_time." > ");
for ($i=0; $i<$length; $i++)
{
$dbyte = ord($buffer{$i});
fwrite($handle, set_byte($dbyte)." ");
}
fwrite($handle,"
");
}
fclose($handle);
}
function set_byte($byte){
if ($byte < 16)
return "0".dechex($byte);
else
return dechex($byte);
}
IPS_SemaphoreLeave("RegisterVariable_Log_run");
?>
Die Registervariable hätte die ID 48762 und schreibt bisher in die Stringvariable mit der ID 32686 (siehe Script) und das Script wurde durch diese Variable bei Update getriggert.
Wie muss ich nun die Verbindung zur Registervariable umsetzen, dass es wieder läuft.
Bitte um Hilfe für einen, der gerne sagt… „never changing a running sytem“ (oder in dem Fall auch Dummie genannt)… aber nun dazu gezwungen ist, um die Vorteile der neuen Versionen zu erleben.
Diese Registervariable-Geschichte war bisher das Einzigste, was mich von einem Update abhielt :rolleyes:
Ich hoffe, dass meine Frage, da der thread ja im Wiki gelinkt ist, die „Angelegenheit“ nicht zu sehr aufbläht. Aber u.U. hilft es dem Einen oder Anderen den Sachverhalt noch besser zu verstehen…