diff --git a/Belevo_Server_Kommunikation/module.php b/Belevo_Server_Kommunikation/module.php index e37636f..32d91ce 100644 --- a/Belevo_Server_Kommunikation/module.php +++ b/Belevo_Server_Kommunikation/module.php @@ -9,7 +9,7 @@ class Belevo_Server_Kommunikation extends IPSModule parent::Create(); // Registrierung der Eigenschaften - $this->RegisterPropertyString("BaseURL", "http://192.168.20.140:5000/influx"); + $this->RegisterPropertyString("BaseURL", "https://brain.belevo.ch/storedata"); $this->RegisterPropertyString("Anlagenummer", "0"); $this->RegisterPropertyBoolean("InfluxJaNein", false); @@ -18,6 +18,11 @@ class Belevo_Server_Kommunikation extends IPSModule $this->RegisterPropertyString("Variable","0"); // Datenpunkt kann im Syncom ausgewählt werden $this->RegisterPropertyString("Variablenname","0"); // Name für Influxaufzeichnung $this->RegisterPropertyString("Gerätenummer","0"); + $this->RegisterPropertyString("Ortschaft","0"); + + $this->RegisterVariableInteger("Wolkenwarscheinlichkeit", "Wolkenwarscheinlichkeit"); + $this->RegisterVariableInteger("Temperatur", "Temperatur"); + // Timer registrieren $this->RegisterTimer("Timer_Influx", 0, 'IPS_RequestAction(' . $this->InstanceID . ', "GetAction", "");'); @@ -32,7 +37,7 @@ class Belevo_Server_Kommunikation extends IPSModule if ($InfluxJaNein) { // Timer auf 5 Minuten setzen - $this->SetTimerInterval("Timer_Influx", 5000); // Alle 5 Minuten -> 5*60*1000=300000 + $this->SetTimerInterval("Timer_Influx", 300); // Alle 5 Minuten -> 5*60*1000=300000 IPS_LogMessage("Belevo_Server_Kommunikation", "Influx Ja"); @@ -44,6 +49,40 @@ class Belevo_Server_Kommunikation extends IPSModule } } + private function getWetter($bn, $pw, $loc) { + // URL mit Parametern zusammenstellen + $url = "https://brain.belevo.ch/v2wetter?loc=" . urlencode($loc) . "&nr=" . urlencode($bn); + + // HTTP-Anfrage-Header einstellen + $headers = [ + "id: $pw" + ]; + + // cURL-Initialisierung + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + + // HTTP-Anfrage ausführen und Antwort erhalten + $response = curl_exec($ch); + curl_close($ch); + + // Antwort in ein Array dekodieren + $data = json_decode($response, true); + + // Überprüfen, ob die benötigten Felder vorhanden sind und zurückgeben + if (isset($data['forecast']['forecastday'][0]['hour'][5]['temp_c']) && isset($data['forecast']['forecastday'][0]['hour'][8]['cloud'])) { + return [ + 'temp' => $data['forecast']['forecastday'][0]['hour'][5]['temp_c'], + 'cloud' => $data['forecast']['forecastday'][0]['hour'][8]['cloud'] + ]; + } + + // Fehlerbehandlung + return null; + } + private function ProcessZusatzVariablen() { // Abrufen der ZusatzVariablen-Liste @@ -106,7 +145,13 @@ class Belevo_Server_Kommunikation extends IPSModule $baseURL = $this->ReadPropertyString("BaseURL"); $anlagenummer = $this->ReadPropertyString("Anlagenummer"); - + + $answer = getWetter($anlagenummer, $this->ReadPropertyString("Gerätenummer"), $this->ReadPropertyString("Ortschaft")); + + $this->SetValue("Temperatur", $answer[0]); + $this->SetValue("Wolkenwarscheinlichkeit", $answer[1]); + + if (!empty($json)) { // Kombiniere die URL mit der Anlagenummer $fullURL = $baseURL;