Also hier noch mal eine Zusammenfassung. Ich möchte gerne zwei eHz (ein SML, ein MOD) auslesen. Hierzu gibt es jeweils eine I/O Instanz - Client Socket. SML wird alle 1 Minute gestartet. MOD alle 3 Minuten.
Die Scripte hierfür sehen sehr ähnlich aus:
SML
<?
IPS_SetProperty(10649 /*[Client Socket SML Stromzähler Haus]*/, "Open", true); //I/O Instanz soll aktiviert sein.
IPS_ApplyChanges(10649 /*[Client Socket SML Stromzähler Haus]*/); //Neue Konfiguration übernehmen
?>
MOD
<?
IPS_SetProperty(21343 /*[Client Socket MOD Stromzähler Solar]*/, "Open", true); //I/O Instanz soll aktiviert sein.
IPS_ApplyChanges(21343 /*[Client Socket MOD Stromzähler Solar]*/ );
?>
Danach folgen jeweils ein Cutter und eine Register Variable. Letztere startet dann jeweils ein Script, welches die empfangenen Daten in Variablen schreibt.
SML
<?
// Leistung aktuell
SetValueFloat(39675 /*[Scripte\Stromzähler Haus\Leistung aktuell temp]*/ ,hexdec($_IPS['VALUE'])/10);
IPS_SetProperty(10649 /*[Client Socket SML Stromzähler Haus]*/, "Open", false);
IPS_ApplyChanges(10649 /*[Client Socket SML Stromzähler Haus]*/ );
?>
MOD
<?
$eHZdata = array("1-0:0.0.0*255" => 19662 , //Zählernummer
"1-0:2.8.1*255" => 26252 , //kWh erwirtschaftet
"1-0:96.5.5*255" => 26904 , //Status HEX
"0-0:96.1.255*255" => 24726 , //unbekannt
);
$string = explode("
", trim($_IPS['VALUE']));
print_r($string);
for($i = 0; $i < count($string); $i++)
{
$id = strstr($string[$i], "(", true);
$value = strstr($string[$i], "(");
$data = substr(trim($value), 1, -1);
if(strstr($data, "-"))
{
SetValue($eHZdata[$id], (string)$data);
}
else
{
SetValue($eHZdata[$id], (float)$data);
}
}
IPS_SetProperty(21343 /*[Client Socket MOD Stromzähler Solar]*/, "Open", false); //I/O Instanz soll aktiviert sein.
IPS_ApplyChanges(21343 /*[Client Socket MOD Stromzähler Solar]*/ );
?>
Aus irgendeinem Grund laufen beide Konstrukte nicht mehr. Und das erst seit dem Upgrade auf V4.0.
Weiß jemand Rat bzw. hat eine Idee?