statt ein, ein JSON-Strig verwendet für generisch dynamische werte

This commit is contained in:
belevo\mh
2024-11-05 14:27:58 +01:00
parent 70f4503d35
commit 8c8570c7af
2 changed files with 44 additions and 73 deletions

View File

@@ -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;

View File

@@ -6,7 +6,7 @@
"compatibility": {
"version": "7.1"
},
"version": "0.78",
"version": "0.79",
"build": 0,
"date": 0
}