no message

This commit is contained in:
dh
2025-06-04 11:37:34 +02:00
parent 8f2af28cae
commit 5c389e8794
+13 -10
View File
@@ -14,7 +14,7 @@ class SofarWechselrichter extends IPSModule
{ {
parent::Create(); parent::Create();
// Moduleigenschaften // Moduleigenschaften
$this->RegisterPropertyString('IPAddress', ''); $this->RegisterPropertyString('IPAddress', '172.31.70.80');
$this->RegisterPropertyString('LoggerNumber', '0'); // als String $this->RegisterPropertyString('LoggerNumber', '0'); // als String
$this->RegisterPropertyInteger('PollInterval', 60); $this->RegisterPropertyInteger('PollInterval', 60);
$this->RegisterPropertyString('Registers', '[]'); // JSON-String $this->RegisterPropertyString('Registers', '[]'); // JSON-String
@@ -54,21 +54,24 @@ class SofarWechselrichter extends IPSModule
} }
// 2) Variablen löschen (falls entfernt) // 2) Variablen löschen (falls entfernt)
// Alle Kinder-IDs durchlaufen, Variablen mit Ident "Reg<Zahl>" entfernen, // Alle Kinder-IDs durchlaufen, Variablen mit Ident "Reg<Zahl>" entfernen,
// wenn sie nicht mehr in $registers stehen. // wenn sie nicht mehr in $registers stehen.
$validIdents = []; $validIdents = [];
foreach ($registers as $entry) { foreach ($registers as $entry) {
$validIdents[] = 'Reg' . ((int)$entry['RegisterNumber']); $validIdents[] = 'Reg' . ((int)$entry['RegisterNumber']);
} }
$children = IPS_GetChildrenIDs($this->InstanceID); $children = IPS_GetChildrenIDs($this->InstanceID);
foreach ($children as $childID) { foreach ($children as $childID) {
if (@IPS_VariableExists($childID)) { // Nur Variablen berücksichtigen
$info = IPS_GetVariable($childID); $obj = IPS_GetObject($childID);
$ident = $info['VariableIdent']; if ($obj['ObjectType'] !== 2) {
if (substr($ident, 0, 3) === 'Reg') { continue;
if (!in_array($ident, $validIdents)) { }
IPS_DeleteVariable($childID); $ident = $obj['ObjectIdent']; // VariableIdent
} if (substr($ident, 0, 3) === 'Reg') {
if (!in_array($ident, $validIdents)) {
IPS_DeleteVariable($childID);
} }
} }
} }
@@ -142,7 +145,7 @@ class SofarWechselrichter extends IPSModule
} }
$valueRaw = $arr['value']; $valueRaw = $arr['value'];
// bc* für sichere Multiplikation auch bei großen Zahlen / negativer Skalierung // bc* für sichere Multiplikation auch bei großen Zahlen / negativer Skalierung
$value = bcmul((string)$valueRaw, (string)$scale, 4); $value = bcmul((string)$valueRaw, (string)$scale, 4);
SetValueFloat($this->GetIDForIdent($ident), (float)$value); SetValueFloat($this->GetIDForIdent($ident), (float)$value);
} catch (Exception $e) { } catch (Exception $e) {
$this->LogMessage("Fehler Lesen Reg {$regNo}: " . $e->getMessage(), KL_WARNING); $this->LogMessage("Fehler Lesen Reg {$regNo}: " . $e->getMessage(), KL_WARNING);