diff --git a/Belevo_Server_Kommunikation/module.php b/Belevo_Server_Kommunikation/module.php index 24737cd..4536d4a 100644 --- a/Belevo_Server_Kommunikation/module.php +++ b/Belevo_Server_Kommunikation/module.php @@ -5,53 +5,25 @@ class Belevo_Server_Kommunikation extends IPSModule public function Create() { - // Zweite Gleiche Variable wird in der Benutzeroberfläche von Symcon angezeigt - //Variable: dynamische Daten - //Property: statische Konfigurationsdaten + // Die Standard-Create() Methode aufrufen parent::Create(); - //Netzbezug - $this->RegisterPropertyFloat("E_PNB_5M_0", 0); - $this->RegisterPropertyInteger("Netzbezug", 0); - /*//Boilerstatus - $this->RegisterPropertyInteger("G_BS_5M_0", 0); - $this->RegisterPropertyInteger("Boilerstatus", 0); - //Boilertemperatur - $this->RegisterPropertyFloat("G_BT_5M_0",0); // Wird an Influx Server gesendet - $this->RegisterPropertyInteger("Boilertemperatur", 0); // Ist, Jetzige Boilertemperatur - //Schaltkontake des Boilers - $this->RegisterPropertyInteger("G_SK_5M_1",0); - $this->RegisterPropertyInteger("Schaltkontakt_1", 0); - $this->RegisterPropertyInteger("G_SK_5M_2",0); - $this->RegisterPropertyInteger("Schaltkontakt_2", 0); - //Schaltkontake des Boilers - $this->RegisterPropertyInteger("G_SK_5M_3",0); - $this->RegisterPropertyInteger("Kontakt_Teillast", 0); - $this->RegisterPropertyInteger("G_SK_5M_4",0); - $this->RegisterPropertyInteger("Kontakt_Volllast", 0); - //Wärmepumpe Status - $this->RegisterPropertyFloat("G_WPS_5M_0",0); - $this->RegisterPropertyInteger("Waermepumpe_Status", 0); - //Wolkenwahrscheinlichkeit - $this->RegisterPropertyFloat("G_WW_5M_0",0); - $this->RegisterPropertyInteger("Wolkenwahrscheinlichkeit", 0); - //Aussentemperatur - $this->RegisterPropertyFloat("G_AT_5M_0",0); - $this->RegisterPropertyInteger("Aussentemperatur", 0); - */ - //$this->RegisterPropertyString("BaseURL","https://brain.belevo.ch/status?nr="); - $this->RegisterPropertyString("BaseURL","http://192.168.20.140:5000/influx"); - $this->RegisterPropertyString("Anlagenummer",0); - $this->RegisterPropertyBoolean("InfluxJaNein", false); - $this->RegisterPropertyArray("ZusatzVariablen",[]); - - $this->RegisterTimer("Timer_Influx", 0, 'IPS_RequestAction(' . $this->InstanceID . ', "GetAction", "");');// 5min = 1000 * 60 * 5 = 300'000ms + // Registrierung der Eigenschaften + $this->RegisterPropertyString("BaseURL", "http://192.168.20.140:5000/influx"); + $this->RegisterPropertyString("Anlagenummer", "0"); + $this->RegisterPropertyBoolean("InfluxJaNein", false); + + // JSON-String für Zusatzvariablen + $this->RegisterPropertyString("ZusatzVariablen", json_encode([])); + + // Timer registrieren + $this->RegisterTimer("Timer_Influx", 0, 'IPS_RequestAction(' . $this->InstanceID . ', "GetAction", "");'); } - + public function ApplyChanges() { parent::ApplyChanges(); - + // Holen Sie sich die Einstellung, ob Influx aktiviert ist $InfluxJaNein = $this->ReadPropertyBoolean("InfluxJaNein"); @@ -60,7 +32,7 @@ class Belevo_Server_Kommunikation extends IPSModule $this->SetTimerInterval("Timer_Influx", 5000); // Alle 5 Sekunden IPS_LogMessage("Belevo_Server_Kommunikation", "Influx Ja"); - // Verarbeite die ZusatzVariablen + // Verarbeite die Zusatzvariablen $this->ProcessZusatzVariablen(); } else { @@ -69,31 +41,32 @@ class Belevo_Server_Kommunikation extends IPSModule IPS_LogMessage("Belevo_Server_Kommunikation", "Influx Nein"); } } - + private function ProcessZusatzVariablen() -{ - // Abrufen der ZusatzVariablen-Liste - $zusatzVariablen = $this->ReadPropertyArray("ZusatzVariablen"); - - // Verarbeitung der Variablen - if (!empty($zusatzVariablen)) { - foreach ($zusatzVariablen as $variable) { - $variablenname = $variable['Variablenname']; - $variableID = $variable['Variable']; - - // Überprüfen, ob die Variable existiert - if (IPS_VariableExists($variableID)) { - $wert = GetValue($variableID); - IPS_LogMessage("ZusatzVariable", "Name: $variablenname, ID: $variableID, Wert: $wert"); - - // Hier können Sie den Wert in die InfluxDB schreiben oder weiterverarbeiten - // Beispiel: $this->WriteToInfluxDB($variablenname, $wert); - } else { - IPS_LogMessage("ZusatzVariable", "Variable mit ID $variableID existiert nicht."); + { + // Abrufen der ZusatzVariablen-Liste + $zusatzVariablen = json_decode($this->ReadPropertyString("ZusatzVariablen"), true); // JSON decodieren + + // Verarbeitung der Variablen + if (!empty($zusatzVariablen)) { + foreach ($zusatzVariablen as $variable) { + $variablenname = $variable['Variablenname']; + $variableID = $variable['Variable']; + + // Überprüfen, ob die Variable existiert + if (IPS_VariableExists($variableID)) { + $wert = GetValue($variableID); + IPS_LogMessage("ZusatzVariable", "Name: $variablenname, ID: $variableID, Wert: $wert"); + + // Hier können Sie den Wert in die InfluxDB schreiben oder weiterverarbeiten + // Beispiel: $this->WriteToInfluxDB($variablenname, $wert); + } else { + IPS_LogMessage("ZusatzVariable", "Variable mit ID $variableID existiert nicht."); + } } } } -} + public function RequestAction($Ident, $Value) @@ -127,13 +100,13 @@ class Belevo_Server_Kommunikation extends IPSModule // Werte in ein Array packen public function MakeJson() { - $an_nummer = $this->ReadPropertyString("Anlagenummer"); // Verwende ReadPropertyString, um die Anlagenummer zu lesen + $an_nummer = $this->ReadPropertyString("Anlagenummer"); // Anlagenummer lesen $InfluxJaNein = $this->ReadPropertyBoolean("InfluxJaNein"); // Werte in ein Array packen $influxData = array( "Value" => array( - "InfluxAllowed" => $InfluxJaNein // Setze InfluxAllowed auf true für den Test + "InfluxAllowed" => $InfluxJaNein // Setze InfluxAllowed ), "Parameter" => array( "Influxadr" => $an_nummer @@ -141,11 +114,12 @@ public function MakeJson() "Tracker" => array() // Initialisiere Tracker als leeres Array ); - // Zusatzvariablen aus den Instanzeigenschaften abrufen - $zusatzVariablen = $this->ReadPropertyArray("ZusatzVariablen"); + // Zusatzvariablen aus dem JSON-String abrufen und dekodieren + $zusatzVariablenJson = $this->ReadPropertyString("ZusatzVariablen"); + $zusatzVariablen = json_decode($zusatzVariablenJson, true); // JSON in Array dekodieren // Protokolliere den Inhalt der Zusatzvariablen - IPS_LogMessage("MakeJson", "Zusatzvariablen Array: " . json_encode($zusatzVariablen)); + IPS_LogMessage("MakeJson", "Zusatzvariablen JSON: " . $zusatzVariablenJson); // Dynamisch Zusatzvariablen zum Tracker hinzufügen if (!empty($zusatzVariablen)) { @@ -163,12 +137,9 @@ public function MakeJson() } } - // Protokolliere den Inhalt des influxData-Arrays vor der JSON-Konvertierung - IPS_LogMessage("MakeJson", "InfluxData Array vor JSON-Konvertierung: " . json_encode($influxData)); - // Array in JSON konvertieren $json = json_encode($influxData); - IPS_LogMessage("Belevo_Server_Kommunikation", "Erstelltes JSON: " . $json); + IPS_LogMessage("MakeJson", "Erstelltes JSON: " . $json); // JSON zurückgeben oder weiterverarbeiten return $json; diff --git a/library.json b/library.json index 1bc75d8..ba98285 100644 --- a/library.json +++ b/library.json @@ -6,7 +6,7 @@ "compatibility": { "version": "7.1" }, - "version": "0.78", + "version": "0.79", "build": 0, "date": 0 } \ No newline at end of file