Shelly 1 pm plus nur 3 Sensoren?
Moderator: Ulrich
- Schwarzermann
- Beiträge: 304
- Registriert: Sa 9. Okt 2021, 11:16
- Wohnort: 87733
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 11 Mal
Shelly 1 pm plus nur 3 Sensoren?
Ich spiele gerade mit einem Shelly 1 pm plus rum um eine alte Bloomberg WWWP smart zumachen das Addon kann 5 Sensoren auslesen die soolaranzeige zeig mir aber nur 3 Temp sensoren an kann man diese erweitern das 5 angezeigt werden vielen Dank.
Der mit sympatischen Vollmeise
-
- Beiträge: 1865
- Registriert: Do 25. Jun 2020, 13:40
- Hat sich bedankt: 18 Mal
- Danksagung erhalten: 92 Mal
Re: Shelly 1 pm plus nur 3 Sensoren?
na nix einfacher als das...rein in die .php und den part raussuchen und um 2 sensoren 4-5 ergänzen
SMA Tripower 8/Growatt MIN 3000 TL-XE/1500S/SPH 4600,4 ARK LV,10kWh
ELWA DC WW Puffer m. 300L/Gesamt PV Leistung 20,5kWp gesteuert mit Pi4 und Pi5
hier stehen alle Geräte>> viewtopic.php?f=13&t=1069
ELWA DC WW Puffer m. 300L/Gesamt PV Leistung 20,5kWp gesteuert mit Pi4 und Pi5
hier stehen alle Geräte>> viewtopic.php?f=13&t=1069
- Schwarzermann
- Beiträge: 304
- Registriert: Sa 9. Okt 2021, 11:16
- Wohnort: 87733
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 11 Mal
Re: Shelly 1 pm plus nur 3 Sensoren?
ja in die PHP hab ich schon geschaut nur sind da mehrere einträge mit den Sensoren und bevor ich darin jetzt rum doktore und danach nichts mehr geht Frag ich lieber im vorraus
Der mit sympatischen Vollmeise
- Schwarzermann
- Beiträge: 304
- Registriert: Sa 9. Okt 2021, 11:16
- Wohnort: 87733
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 11 Mal
Re: Shelly 1 pm plus nur 3 Sensoren?
Code: Alles auswählen
<?php
/*****************************************************************************
// Solaranzeige Projekt Copyright (C) [2016-2020] [Ulrich Kunz]
//
// Dieses Programm ist freie Software. Sie können es unter den Bedingungen
// der GNU General Public License, wie von der Free Software Foundation
// veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß
// Version 3 der Lizenz oder (nach Ihrer Option) jeder späteren Version.
//
// Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es
// Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne
// die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN
// BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.
//
// Ein original Exemplar der GNU General Public License finden Sie hier:
// http://www.gnu.org/licenses/
//
// Dies ist ein Programmteil des Programms "Solaranzeige"
//
// Es dient dem Auslesen von Shelly Geräten mit WLAN Schnittstelle
// Das Auslesen wird hier mit einer Schleife durchgeführt. Wie oft die Daten
// ausgelesen und gespeichert werden steht in der user.config.php
//
// Gen 1 Device Typen:
// SH2LED-1
// SHAIR-1
// SHBDUO-1
// SHBLB-1
// SHBTN-1
// SHBTN-2
// SHCB-1
// SHCL-255
// SHDIMW-1
// SHDM-1
// SHDM-2
// SHDW-1
// SHDW-2
// SHEM
// SHEM-3
// SHGS-1
// SHHT-1
// SHIX3-1
// SHMOS-01
// SHPLG-1
// SHPLG2-1
// SHPLG-AU1
// SHPLG-IT1
// SHPLG-S
// SHPLG-U1
// SHPLG-UK1
// SHRGBW2
// SHRGBWW-01
// SHSEN-1
// SHSM-01
// SHSPOT-1
// SHSW-1
// SHSW-21
// SHSW-25
// SHSW-44
// SHSW-L
// SHSW-PM
// SHUNI-1
// SHVIN-1
// SHWT-1
// *****************************************************************************
// Implementiert:
// Shelly Pro 3EM
// Shelly Pro EM
// Shelly 3EM
// Shelly EM
// Shelly Plus 1
// Shelly Plus 1PM
// Shelly Plus Plug S
// Shelly PM mini
// Shelly SHPLG-S
*****************************************************************************/
$path_parts = pathinfo($argv[0]);
$Pfad = $path_parts['dirname'];
if (!is_file($Pfad . "/1.user.config.php")) {
// Handelt es sich um ein Multi Regler System?
require $Pfad . "/user.config.php";
}
require_once $Pfad . "/phpinc/funktionen.inc.php";
if (!isset($funktionen)) {
$funktionen = new funktionen();
}
$Tracelevel = 7; // 1 bis 10 10 = Debug
$RemoteDaten = true;
$Device = "WR"; // WR = Wechselrichter
$Version = "";
$Start = time(); // Timestamp festhalten
$funktionen->log_schreiben("----------------- Start shelly.php ------------------ ", "|--", 6);
$funktionen->log_schreiben("Zentraler Timestamp: " . $zentralerTimestamp, " ", 8);
$aktuelleDaten = array();
$aktuelleDaten["zentralerTimestamp"] = $zentralerTimestamp;
setlocale(LC_TIME, "de_DE.utf8");
if (!is_file($Pfad . "/1.user.config.php")) {
if ((int) substr(trim($FreierSpeicher), 0, -1) < 4) {
// Minimum von 4 GB freier speicher muss zur Verfügung stehen.
$funktionen->log_schreiben(substr(trim($FreierSpeicher), 0, -1) . " GB freier Speicher steht auf der SD-Karte / USB Stick zur Verfügung.", "!! ", 2);
$funktionen->log_schreiben("Das ist zu wenig! Ist der gesamte Speicherplatz freigegeben? Bitte prüfen!", "!! ", 2);
}
}
// Hardware Version ermitteln.
// $Platine = "Raspberry Pi Model B Plus Rev 1.2";
$funktionen->log_schreiben("Hardware Version: " . $Platine, " ", 8);
if ($WR_IP == "0.0.0.0" and $WR_Port == "0") {
$funktionen->log_schreiben("Es handelt sich um einen Shelly H&T, der nur sporadisch über den Script shellyinput.php Daten meldet.", "H&T", 7);
goto Ausgang;
}
/*****************************************************************************
// Die Status Datei wird dazu benutzt, um die Leistung des Reglers
// pro Tag zu speichern.
// Achtung! Dieser Wert wird jeden Tag um Mitternacht auf 0 gesetzt.
//
*****************************************************************************/
$StatusFile = $Pfad . "/database/" . $GeraeteNummer . ".WhProTag.txt";
if (file_exists($StatusFile)) {
/***************************************************************************
// Daten einlesen ...
***************************************************************************/
$aktuelleDaten["WattstundenGesamtHeute"] = file_get_contents($StatusFile);
$aktuelleDaten["WattstundenGesamtHeute"] = round($aktuelleDaten["WattstundenGesamtHeute"], 2);
$funktionen->log_schreiben("WattstundenGesamtHeute: " . $aktuelleDaten["WattstundenGesamtHeute"], " ", 8);
if (empty($aktuelleDaten["WattstundenGesamtHeute"])) {
$aktuelleDaten["WattstundenGesamtHeute"] = 0;
}
if (date("H:i") == "00:00" or date("H:i") == "00:01") { // Jede Nacht 0 Uhr
$aktuelleDaten["WattstundenGesamtHeute"] = 0; // Tageszähler löschen
$rc = file_put_contents($StatusFile, "0");
$funktionen->log_schreiben("WattstundenGesamtHeute gelöscht.", " ", 5);
}
} else {
$aktuelleDaten["WattstundenGesamtHeute"] = 0;
/***************************************************************************
// Inhalt der Status Datei anlegen.
***************************************************************************/
$rc = file_put_contents($StatusFile, "0");
if ($rc === false) {
$funktionen->log_schreiben("Konnte die Datei kwhProTag_ax.txt nicht anlegen.", " ", 5);
}
}
$COM1 = fsockopen($WR_IP, $WR_Port, $errno, $errstr, 5);
if (!is_resource($COM1)) {
$funktionen->log_schreiben("Kein Kontakt zum Wechselrichter " . $WR_IP . " Port: " . $WR_Port, "XX ", 3);
$funktionen->log_schreiben("Exit.... ", "XX ", 3);
goto Ausgang;
}
$aktuelleDaten["AC"]["Gesamtleistung"] = 0;
$i = 1;
do {
$funktionen->log_schreiben("Die Daten werden ausgelesen...", "+ ", 9);
/****************************************************************************
// Ab hier werden die Shelly's ausgelesen.
//
//
****************************************************************************/
// Füllen der Variablen falls es sich um einen Shelly EM handelt, der nur eine Phase hat.
$aktuelleDaten["OK"] = 0;
$URL = "shelly";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten != false) {
if (isset($Daten["app"])) {
// Es ist ein pro Gerät
$aktuelleDaten["Info"]["Type.Text"] = $Daten["app"];
$aktuelleDaten["Info"]["Firmware.Text"] = $Daten["fw_id"];
$aktuelleDaten["Info"]["Modell.Text"] = $Daten["model"];
$aktuelleDaten["Info"]["Shelly.Text"] = $Daten["id"];
$aktuelleDaten["Info"]["Generation"] = $Daten["gen"];
$funktionen->log_schreiben("Shelly Plus Typ: " . $aktuelleDaten["Info"]["Type.Text"], " ", 5);
} else {
// Es ist ein älteres Gerät
$aktuelleDaten["Info"]["Type.Text"] = $Daten["type"];
$aktuelleDaten["Info"]["Firmware.Text"] = $Daten["fw"];
$aktuelleDaten["Info"]["Generation"] = "1";
$funktionen->log_schreiben("Shelly Typ: " . $aktuelleDaten["Info"]["Type.Text"], " ", 5);
}
if (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "PRO3EM") {
$URL = "rpc/shelly.getstatus";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
goto Ausgang;
}
$aktuelleDaten["AC"]["Spannung_R"] = $Daten["em:0"]["a_voltage"];
$aktuelleDaten["AC"]["Spannung_S"] = $Daten["em:0"]["b_voltage"];
$aktuelleDaten["AC"]["Spannung_T"] = $Daten["em:0"]["c_voltage"];
$aktuelleDaten["AC"]["Strom_R"] = $Daten["em:0"]["a_current"];
$aktuelleDaten["AC"]["Strom_S"] = $Daten["em:0"]["b_current"];
$aktuelleDaten["AC"]["Strom_T"] = $Daten["em:0"]["c_current"];
$aktuelleDaten["AC"]["Wirkleistung_R"] = $Daten["em:0"]["a_act_power"];
$aktuelleDaten["AC"]["Wirkleistung_S"] = $Daten["em:0"]["b_act_power"];
$aktuelleDaten["AC"]["Wirkleistung_T"] = $Daten["em:0"]["c_act_power"];
$aktuelleDaten["AC"]["PowerFactor_R"] = $Daten["em:0"]["a_pf"];
$aktuelleDaten["AC"]["PowerFactor_S"] = $Daten["em:0"]["b_pf"];
$aktuelleDaten["AC"]["PowerFactor_T"] = $Daten["em:0"]["c_pf"];
$aktuelleDaten["AC"]["Gesamtleistung"] = $Daten["em:0"]["total_act_power"];
$aktuelleDaten["Summen"]["Wh_VerbrauchGesamt_R"] = $Daten["emdata:0"]["a_total_act_energy"];
$aktuelleDaten["Summen"]["Wh_VerbrauchGesamt_S"] = $Daten["emdata:0"]["b_total_act_energy"];
$aktuelleDaten["Summen"]["Wh_VerbrauchGesamt_T"] = $Daten["emdata:0"]["c_total_act_energy"];
$aktuelleDaten["Summen"]["Wh_EinspeisungGesamt_R"] = $Daten["emdata:0"]["a_total_act_ret_energy"];
$aktuelleDaten["Summen"]["Wh_EinspeisungGesamt_S"] = $Daten["emdata:0"]["b_total_act_ret_energy"];
$aktuelleDaten["Summen"]["Wh_EinspeisungGesamt_T"] = $Daten["emdata:0"]["c_total_act_ret_energy"];
$aktuelleDaten["Summen"]["Wh_Gesamt_Verbrauch"] = $Daten["emdata:0"]["total_act"];
$aktuelleDaten["Summen"]["Wh_Gesamt_Einspeisung"] = $Daten["emdata:0"]["total_act_ret"];
$aktuelleDaten["Summen"]["Wh_Heute"] = $aktuelleDaten["WattstundenGesamtHeute"];
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "PROEM") {
$URL = "rpc/shelly.getstatus";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
goto Ausgang;
}
$aktuelleDaten["AC"]["Spannung"] = $Daten["em1:0"]["voltage"];
$aktuelleDaten["AC"]["Strom"] = $Daten["em1:0"]["current"];
$aktuelleDaten["AC"]["Leistung"] = $Daten["em1:0"]["act_power"];
$aktuelleDaten["AC"]["Gesamtleistung"] = $Daten["em1:0"]["act_power"];
$aktuelleDaten["Summen"]["Wh_Gesamt"] = $Daten["em1data:0"]["total_act_energy"];
$aktuelleDaten["AC"]["Frequenz"] = $Daten["em1:0"]["freq"];
$aktuelleDaten["Service"]["ShellyTemperatur"] = $Daten["switch:0"]["temperature"]["tC"];
$aktuelleDaten["Service"]["RelaisKontakt"] = (int) $Daten["switch:0"]["output"];
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "SHEM") {
$URL = "status";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
$funktionen->log_schreiben("Status Werte sind falsch... nochmal lesen.", " ", 3);
if ($i >= 6) {
$funktionen->log_schreiben(var_export($funktionen->read($WR_IP, $WR_Port, $URL), 1), "o=>", 9);
break;
}
$i++;
continue;
}
$aktuelleDaten["AC"]["Spannung_R"] = $Daten["emeters"][0]["voltage"];
if (isset($Daten["emeters"][0]["current"])) {
$aktuelleDaten["AC"]["Strom_R"] = $Daten["emeters"][0]["current"];
}
$aktuelleDaten["Summen"]["Wh_VerbrauchGesamt_R"] = $Daten["emeters"][0]["total"];
$aktuelleDaten["Summen"]["Wh_EinspeisungGesamt_R"] = $Daten["emeters"][0]["total_returned"];
if (isset($Daten["emeters"][0]["pf"])) {
$aktuelleDaten["AC"]["PowerFactor_R"] = $Daten["emeters"][0]["pf"];
}
$aktuelleDaten["AC"]["Wirkleistung_R"] = $Daten["emeters"][0]["power"];
$aktuelleDaten["OK"] = $Daten["relays"][0]["is_valid"];
if ($aktuelleDaten["OK"] == false) {
$aktuelleDaten["Service"]["OK"] = 0;
}
$aktuelleDaten["Ueberlastung"] = $Daten["relays"][0]["overpower"];
if ($aktuelleDaten["Ueberlastung"] == false) {
$aktuelleDaten["Service"]["Ueberlastung"] = 0;
}
$aktuelleDaten["Relaisstatus"] = $Daten["relays"][0]["ison"];
if ($aktuelleDaten["Relaisstatus"] == false) {
$aktuelleDaten["Service"]["Relaisstatus"] = 0;
}
$aktuelleDaten["Summen"]["Wh_Gesamt_Verbrauch"] = $aktuelleDaten["Summen"]["Wh_VerbrauchGesamt_R"];
$aktuelleDaten["Summen"]["Wh_Gesamt_Einspeisung"] = $aktuelleDaten["Summen"]["Wh_EinspeisungGesamt_R"];
// Negative Werte sind Einspeisung!
$aktuelleDaten["AC"]["Gesamtleistung"] = $aktuelleDaten["AC"]["Wirkleistung_R"];
if (isset($Daten["emeters"][1]["power"])) {
$aktuelleDaten["AC"]["Spannung_S"] = $Daten["emeters"][1]["voltage"];
if (isset($Daten["emeters"][1]["current"])) {
$aktuelleDaten["AC"]["Strom_S"] = $Daten["emeters"][1]["current"];
}
$aktuelleDaten["AC"]["Wh_VerbrauchGesamt_S"] = $Daten["emeters"][1]["total"];
$aktuelleDaten["AC"]["Wh_EinspeisungGesamt_S"] = $Daten["emeters"][1]["total_returned"];
if (isset($Daten["emeters"][1]["pf"])) {
$aktuelleDaten["AC"]["PowerFactor_S"] = $Daten["emeters"][1]["pf"];
}
$aktuelleDaten["AC"]["Wirkleistung_S"] = $Daten["emeters"][1]["power"];
$aktuelleDaten["Summen"]["Wh_Gesamt_Verbrauch"] = $aktuelleDaten["Summen"]["Wh_VerbrauchGesamt_R"] + $aktuelleDaten["Summen"]["Wh_VerbrauchGesamt_S"];
$aktuelleDaten["Summen"]["Wh_Gesamt_Einspeisung"] = $aktuelleDaten["Summen"]["Wh_EinspeisungGesamt_R"] + $aktuelleDaten["Summen"]["Wh_EinspeisungGesamt_S"];
// Negative Werte sind Einspeisung!
$aktuelleDaten["AC"]["Gesamtleistung"] = $aktuelleDaten["AC"]["Wirkleistung_R"] + $aktuelleDaten["AC"]["Wirkleistung_S"];
$aktuelleDaten["Summen"]["Wh_Heute"] = $aktuelleDaten["WattstundenGesamtHeute"];
}
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "SHEM-3") {
$URL = "status";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
$funktionen->log_schreiben("Status Werte sind falsch... nochmal lesen.", " ", 3);
if ($i >= 6) {
$funktionen->log_schreiben(var_export($funktionen->read($WR_IP, $WR_Port, $URL), 1), "o=>", 9);
break;
}
$i++;
continue;
}
$aktuelleDaten["AC"]["Spannung_R"] = $Daten["emeters"][0]["voltage"];
$aktuelleDaten["AC"]["Spannung_S"] = $Daten["emeters"][1]["voltage"];
$aktuelleDaten["AC"]["Spannung_T"] = $Daten["emeters"][2]["voltage"];
if (isset($Daten["emeters"][0]["current"])) {
$aktuelleDaten["AC"]["Strom_R"] = $Daten["emeters"][0]["current"];
$aktuelleDaten["AC"]["Strom_S"] = $Daten["emeters"][1]["current"];
$aktuelleDaten["AC"]["Strom_T"] = $Daten["emeters"][2]["current"];
} else {
$aktuelleDaten["AC"]["Strom_R"] = 0;
$aktuelleDaten["AC"]["Strom_S"] = 0;
$aktuelleDaten["AC"]["Strom_T"] = 0;
}
$aktuelleDaten["Summen"]["Wh_VerbrauchGesamt_R"] = $Daten["emeters"][0]["total"];
$aktuelleDaten["Summen"]["Wh_VerbrauchGesamt_S"] = $Daten["emeters"][1]["total"];
$aktuelleDaten["Summen"]["Wh_VerbrauchGesamt_T"] = $Daten["emeters"][2]["total"];
$aktuelleDaten["Summen"]["Wh_EinspeisungGesamt_R"] = $Daten["emeters"][0]["total_returned"];
$aktuelleDaten["Summen"]["Wh_EinspeisungGesamt_S"] = $Daten["emeters"][1]["total_returned"];
$aktuelleDaten["Summen"]["Wh_EinspeisungGesamt_T"] = $Daten["emeters"][2]["total_returned"];
if (isset($Daten["emeters"][0]["pf"])) {
$aktuelleDaten["AC"]["PowerFactor_R"] = $Daten["emeters"][0]["pf"];
$aktuelleDaten["AC"]["PowerFactor_S"] = $Daten["emeters"][1]["pf"];
$aktuelleDaten["AC"]["PowerFactor_T"] = $Daten["emeters"][2]["pf"];
} else {
$aktuelleDaten["AC"]["PowerFactor_R"] = 1;
$aktuelleDaten["AC"]["PowerFactor_S"] = 1;
$aktuelleDaten["AC"]["PowerFactor_T"] = 1;
}
$aktuelleDaten["AC"]["Wirkleistung_R"] = $Daten["emeters"][0]["power"];
$aktuelleDaten["AC"]["Wirkleistung_S"] = $Daten["emeters"][1]["power"];
$aktuelleDaten["AC"]["Wirkleistung_T"] = $Daten["emeters"][2]["power"];
$aktuelleDaten["OK"] = $Daten["relays"][0]["is_valid"];
if ($aktuelleDaten["OK"] == false) {
$aktuelleDaten["Service"]["OK"] = 0;
}
$aktuelleDaten["Service"]["Ueberlastung"] = $Daten["relays"][0]["overpower"];
if ($aktuelleDaten["Service"]["Ueberlastung"] == false) {
$aktuelleDaten["Service"]["Ueberlastung"] = 0;
}
$aktuelleDaten["Service"]["Relaisstatus"] = $Daten["relays"][0]["ison"];
if ($aktuelleDaten["Service"]["Relaisstatus"] == false) {
$aktuelleDaten["Service"]["Relaisstatus"] = 0;
}
$aktuelleDaten["Summen"]["Wh_Gesamt_Verbrauch"] = ($aktuelleDaten["Summen"]["Wh_VerbrauchGesamt_R"] + $aktuelleDaten["Summen"]["Wh_VerbrauchGesamt_S"] + $aktuelleDaten["Summen"]["Wh_VerbrauchGesamt_T"]);
$aktuelleDaten["Summen"]["Wh_Gesamt_Einspeisung"] = ($aktuelleDaten["Summen"]["Wh_EinspeisungGesamt_R"] + $aktuelleDaten["Summen"]["Wh_EinspeisungGesamt_S"] + $aktuelleDaten["Summen"]["Wh_EinspeisungGesamt_T"]);
// Negative Werte sind Einspeisung!
$aktuelleDaten["AC"]["Gesamtleistung"] = ($aktuelleDaten["AC"]["Wirkleistung_R"] + $aktuelleDaten["AC"]["Wirkleistung_S"] + $aktuelleDaten["AC"]["Wirkleistung_T"]);
$aktuelleDaten["Summen"]["Wh_Heute"] = $aktuelleDaten["WattstundenGesamtHeute"];
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "PLUS1") {
$URL = "rpc/shelly.getstatus";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
goto Ausgang;
}
if (isset($Daten["switch:0"])) {
$aktuelleDaten["Service"]["ShellyTemperatur"] = $Daten["switch:0"]["temperature"]["tC"];
$aktuelleDaten["Service"]["RelaisKontakt"] = (int) $Daten["switch:0"]["output"];
if (isset($Daten["switch:0"]["input"])) {
$aktuelleDaten["Service"]["RelaisSchalter"] = (int) $Daten["switch:0"]["input"];
}
}
if (isset($Daten["temperature:100"])) {
$aktuelleDaten["Service"]["ExtTemperatur:100"] = $Daten["temperature:100"]["tC"];
}
if (isset($Daten["temperature:101"])) {
$aktuelleDaten["Service"]["ExtTemperatur:101"] = $Daten["temperature:101"]["tC"];
}
if (isset($Daten["temperature:102"])) {
$aktuelleDaten["Service"]["ExtTemperatur:102"] = $Daten["temperature:102"]["tC"];
}
if (isset($Daten["temperature:103"])) {
$aktuelleDaten["Service"]["ExtTemperatur:103"] = $Daten["temperature:103"]["tC"];
}
if (isset($Daten["temperature:104"])) {
$aktuelleDaten["Service"]["ExtTemperatur:104"] = $Daten["temperature:104"]["tC"];
}
if (isset($Daten["humidity:100"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:101"] = $Daten["humidity:102"]["rh"];
}
if (isset($Daten["humidity:101"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:102"] = $Daten["humidity:102"]["rh"];
}
if (isset($Daten["humidity:102"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:102"] = $Daten["humidity:102"]["rh"];
}
$funktionen->log_schreiben(var_export($aktuelleDaten, 1), " ", 10);
$funktionen->log_schreiben(print_r($Daten, 1), " ", 10);
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "PLUS1PM") {
$URL = "rpc/shelly.getstatus";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
goto Ausgang;
}
if (isset($Daten["switch:0"])) {
$aktuelleDaten["Service"]["ShellyTemperatur"] = $Daten["switch:0"]["temperature"]["tC"];
$aktuelleDaten["Service"]["RelaisKontakt"] = (int) $Daten["switch:0"]["output"];
if (isset($Daten["input:0"]["state"])) {
$aktuelleDaten["Service"]["RelaisSchalter"] = (int) $Daten["input:0"]["state"];
}
$aktuelleDaten["AC"]["Spannung"] = $Daten["switch:0"]["voltage"];
$aktuelleDaten["AC"]["Strom"] = $Daten["switch:0"]["current"];
$aktuelleDaten["AC"]["Leistung"] = $Daten["switch:0"]["apower"];
$aktuelleDaten["AC"]["Gesamtleistung"] = $Daten["switch:0"]["apower"];
$aktuelleDaten["AC"]["Energie"] = $Daten["switch:0"]["aenergy"]["total"];
}
if (isset($Daten["temperature:100"])) {
$aktuelleDaten["Service"]["ExtTemperatur:100"] = $Daten["temperature:100"]["tC"];
}
if (isset($Daten["temperature:101"])) {
$aktuelleDaten["Service"]["ExtTemperatur:101"] = $Daten["temperature:101"]["tC"];
}
if (isset($Daten["temperature:102"])) {
$aktuelleDaten["Service"]["ExtTemperatur:102"] = $Daten["temperature:102"]["tC"];
}
if (isset($Daten["temperature:103"])) {
$aktuelleDaten["Service"]["ExtTemperatur:103"] = $Daten["temperature:103"]["tC"];
}
if (isset($Daten["temperature:104"])) {
$aktuelleDaten["Service"]["ExtTemperatur:104"] = $Daten["temperature:104"]["tC"];
}
if (isset($Daten["humidity:100"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:101"] = $Daten["humidity:102"]["rh"];
}
if (isset($Daten["humidity:101"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:102"] = $Daten["humidity:102"]["rh"];
}
if (isset($Daten["humidity:102"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:102"] = $Daten["humidity:102"]["rh"];
}
$funktionen->log_schreiben(var_export($aktuelleDaten, 1), " ", 10);
$funktionen->log_schreiben(print_r($Daten, 1), " ", 10);
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "PLUS2PM") {
$URL = "rpc/shelly.getstatus";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
goto Ausgang;
}
if (isset($Daten["switch:0"])) {
$aktuelleDaten["Service"]["ShellyTemperatur"] = $Daten["switch:0"]["temperature"]["tC"];
$aktuelleDaten["Service"]["RelaisKontakt"] = (int) $Daten["switch:0"]["output"];
if (isset($Daten["input:0"]["state"])) {
$aktuelleDaten["Service"]["RelaisSchalter"] = (int) $Daten["input:0"]["state"];
}
$aktuelleDaten["AC"]["Spannung"] = $Daten["switch:0"]["voltage"];
$aktuelleDaten["AC"]["Strom"] = $Daten["switch:0"]["current"];
$aktuelleDaten["AC"]["Leistung"] = $Daten["switch:0"]["apower"];
$aktuelleDaten["AC"]["Frequenz"] = $Daten["switch:0"]["freq"];
$aktuelleDaten["AC"]["Gesamtleistung"] = $Daten["switch:0"]["apower"];
$aktuelleDaten["AC"]["Energie"] = $Daten["switch:0"]["aenergy"]["total"];
}
if (isset($Daten["switch:1"])) {
$aktuelleDaten["Service"]["ShellyTemperatur2"] = $Daten["switch:1"]["temperature"]["tC"];
$aktuelleDaten["Service"]["RelaisKontakt2"] = (int) $Daten["switch:1"]["output"];
if (isset($Daten["input:1"]["state"])) {
$aktuelleDaten["Service"]["RelaisSchalter2"] = (int) $Daten["input:1"]["state"];
}
$aktuelleDaten["AC"]["Spannung2"] = $Daten["switch:1"]["voltage"];
$aktuelleDaten["AC"]["Strom2"] = $Daten["switch:1"]["current"];
$aktuelleDaten["AC"]["Leistung2"] = $Daten["switch:1"]["apower"];
$aktuelleDaten["AC"]["Frequenz2"] = $Daten["switch:1"]["freq"];
$aktuelleDaten["AC"]["Gesamtleistung2"] = $Daten["switch:1"]["apower"];
$aktuelleDaten["AC"]["Energie2"] = $Daten["switch:1"]["aenergy"]["total"];
}
if (isset($Daten["temperature:100"])) {
$aktuelleDaten["Service"]["ExtTemperatur:100"] = $Daten["temperature:100"]["tC"];
}
if (isset($Daten["temperature:101"])) {
$aktuelleDaten["Service"]["ExtTemperatur:101"] = $Daten["temperature:101"]["tC"];
}
if (isset($Daten["temperature:102"])) {
$aktuelleDaten["Service"]["ExtTemperatur:102"] = $Daten["temperature:102"]["tC"];
}
if (isset($Daten["temperature:103"])) {
$aktuelleDaten["Service"]["ExtTemperatur:103"] = $Daten["temperature:103"]["tC"];
}
if (isset($Daten["temperature:104"])) {
$aktuelleDaten["Service"]["ExtTemperatur:104"] = $Daten["temperature:104"]["tC"];
}
if (isset($Daten["humidity:100"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:101"] = $Daten["humidity:102"]["rh"];
}
if (isset($Daten["humidity:101"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:102"] = $Daten["humidity:102"]["rh"];
}
if (isset($Daten["humidity:102"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:102"] = $Daten["humidity:102"]["rh"];
}
$funktionen->log_schreiben(var_export($aktuelleDaten, 1), " ", 10);
$funktionen->log_schreiben(print_r($Daten, 1), " ", 10);
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "PLUSPMMINI") {
$URL = "rpc/shelly.getstatus";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
goto Ausgang;
}
if (isset($Daten["pm1:0"])) {
$aktuelleDaten["AC"]["Spannung"] = $Daten["pm1:0"]["voltage"];
$aktuelleDaten["AC"]["Strom"] = $Daten["pm1:0"]["current"];
$aktuelleDaten["AC"]["Leistung"] = $Daten["pm1:0"]["apower"];
$aktuelleDaten["AC"]["Gesamtleistung"] = $Daten["pm1:0"]["apower"];
$aktuelleDaten["AC"]["Energie"] = $Daten["pm1:0"]["aenergy"]["total"];
$aktuelleDaten["AC"]["Frequenz"] = $Daten["pm1:0"]["freq"];
}
if (isset($Daten["temperature:100"])) {
$aktuelleDaten["Service"]["ExtTemperatur:100"] = $Daten["temperature:100"]["tC"];
}
if (isset($Daten["temperature:101"])) {
$aktuelleDaten["Service"]["ExtTemperatur:101"] = $Daten["temperature:101"]["tC"];
}
if (isset($Daten["temperature:102"])) {
$aktuelleDaten["Service"]["ExtTemperatur:102"] = $Daten["temperature:102"]["tC"];
}
if (isset($Daten["temperature:103"])) {
$aktuelleDaten["Service"]["ExtTemperatur:103"] = $Daten["temperature:103"]["tC"];
}
if (isset($Daten["temperature:104"])) {
$aktuelleDaten["Service"]["ExtTemperatur:104"] = $Daten["temperature:104"]["tC"];
}
if (isset($Daten["humidity:100"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:101"] = $Daten["humidity:102"]["rh"];
}
if (isset($Daten["humidity:101"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:102"] = $Daten["humidity:102"]["rh"];
}
if (isset($Daten["humidity:102"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:102"] = $Daten["humidity:102"]["rh"];
}
$funktionen->log_schreiben(var_export($aktuelleDaten, 1), " ", 10);
$funktionen->log_schreiben(print_r($Daten, 1), " ", 10);
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "PRO2") {
$URL = "rpc/shelly.getstatus";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
goto Ausgang;
}
if (isset($Daten["switch:0"])) {
$aktuelleDaten["Service"]["ShellyTemperatur1"] = $Daten["switch:0"]["temperature"]["tC"];
$aktuelleDaten["Service"]["RelaisKontakt1"] = (int) $Daten["switch:0"]["output"];
if (isset($Daten["input:0"]["state"])) {
$aktuelleDaten["Service"]["RelaisSchalter1"] = (int) $Daten["input:0"]["state"];
}
}
if (isset($Daten["switch:1"])) {
$aktuelleDaten["Service"]["ShellyTemperatur2"] = $Daten["switch:1"]["temperature"]["tC"];
$aktuelleDaten["Service"]["RelaisKontakt2"] = (int) $Daten["switch:1"]["output"];
if (isset($Daten["input:0"]["state"])) {
$aktuelleDaten["Service"]["RelaisSchalter2"] = (int) $Daten["input:1"]["state"];
}
}
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "PLUSHT") {
$URL = "rpc/shelly.getstatus";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
goto Ausgang;
}
if (isset($Daten["temperature:0"])) {
$aktuelleDaten["Service"]["Temperatur"] = $Daten["temperature:0"]["tC"];
}
if (isset($Daten["humidity:0"])) {
$aktuelleDaten["Service"]["Luftfeuchte"] = $Daten["humidity:0"]["rh"];
}
if (isset($Daten["temperature:1"])) {
$aktuelleDaten["Service"]["ExtTemperatur"] = $Daten["temperature:1"]["tC"];
}
if (isset($Daten["humidity:1"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte"] = $Daten["humidity:1"]["rh"];
}
if (isset($Daten["devicepower:0"])) {
$aktuelleDaten["Service"]["Batterie"] = $Daten["devicepower:0"]["battery"]["V"];
$aktuelleDaten["Service"]["Batteriestatus"] = $Daten["devicepower:0"]["battery"]["percent"];
$aktuelleDaten["Service"]["Stromversorgung_vorhanden"] = $Daten["devicepower:0"]["external"]["present"];
}
$funktionen->log_schreiben(var_export($aktuelleDaten, 1), " ", 10);
$funktionen->log_schreiben(print_r($Daten, 1), " ", 10);
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "SHSW-1") {
$URL = "rpc/shelly.getstatus";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
goto Ausgang;
}
if (isset($Daten["meters"])) {
$aktuelleDaten["AC"]["Leistung"] = $Daten["meters"]["0"]["power"];
$aktuelleDaten["Service"]["Button"] = $Daten["inputs"]["0"]["input"];
}
if (isset($Daten["meters"]["0"]["total"])) {
$aktuelleDaten["AC"]["Gesamtleistung"] = $Daten["meters"]["0"]["total"];
}
if (isset($Daten["relais"]["0"]["ison"])) {
$aktuelleDaten["Relais"]["Kontakt1"] = $Daten["relais"]["0"]["ison"];
}
$funktionen->log_schreiben("Wifi Signalstärke: " . $Daten["wifi_sta"]["rssi"], " ", 7);
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "SHSW-PM") {
$URL = "status";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
$funktionen->log_schreiben("Keine Antwort vom Shelly. Ausgang." . print_r($Daten, 1), " ", 7);
goto Ausgang;
}
if (isset($Daten["meters"])) {
$aktuelleDaten["AC"]["Leistung"] = $Daten["meters"]["0"]["power"];
$aktuelleDaten["Service"]["Button"] = $Daten["inputs"]["0"]["input"];
}
if (isset($Daten["meters"]["0"]["total"])) {
$aktuelleDaten["AC"]["Gesamtleistung"] = $Daten["meters"]["0"]["total"];
$aktuelleDaten["AC"]["Zaehler_0"] = $Daten["meters"]["0"]["counters"]["0"];
$aktuelleDaten["AC"]["Zaehler_1"] = $Daten["meters"]["0"]["counters"]["1"];
$aktuelleDaten["AC"]["Zaehler_2"] = $Daten["meters"]["0"]["counters"]["2"];
}
if (isset($Daten["temperature"])) {
$aktuelleDaten["Service"]["ShellyTemperatur"] = $Daten["temperature"];
}
$funktionen->log_schreiben("Wifi Signalstärke: " . $Daten["wifi_sta"]["rssi"], " ", 7);
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "PLUSPLUGS") {
$URL = "rpc/shelly.getstatus";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
goto Ausgang;
}
if (isset($Daten["switch:0"])) {
$aktuelleDaten["AC"]["Spannung"] = $Daten["switch:0"]["voltage"];
$aktuelleDaten["AC"]["Strom"] = $Daten["switch:0"]["current"];
$aktuelleDaten["AC"]["Leistung"] = $Daten["switch:0"]["apower"];
$aktuelleDaten["AC"]["Gesamtleistung"] = $Daten["switch:0"]["apower"];
$aktuelleDaten["AC"]["Energie"] = $Daten["switch:0"]["aenergy"]["total"];
$aktuelleDaten["AC"]["RelaisKontak1"] = $Daten["switch:0"]["output"];
}
if (isset($Daten["temperature:100"])) {
$aktuelleDaten["Service"]["ExtTemperatur:100"] = $Daten["temperature:100"]["tC"];
}
if (isset($Daten["temperature:101"])) {
$aktuelleDaten["Service"]["ExtTemperatur:101"] = $Daten["temperature:101"]["tC"];
}
if (isset($Daten["temperature:102"])) {
$aktuelleDaten["Service"]["ExtTemperatur:102"] = $Daten["temperature:102"]["tC"];
}
if (isset($Daten["temperature:103"])) {
$aktuelleDaten["Service"]["ExtTemperatur:103"] = $Daten["temperature:103"]["tC"];
}
if (isset($Daten["temperature:104"])) {
$aktuelleDaten["Service"]["ExtTemperatur:104"] = $Daten["temperature:104"]["tC"];
}
if (isset($Daten["humidity:100"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:100"] = $Daten["humidity:100"]["rh"];
}
if (isset($Daten["humidity:101"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:101"] = $Daten["humidity:101"]["rh"];
}
if (isset($Daten["humidity:102"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:102"] = $Daten["humidity:102"]["rh"];
}
$funktionen->log_schreiben(var_export($aktuelleDaten, 1), " ", 10);
$funktionen->log_schreiben(print_r($Daten, 1), " ", 10);
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "MINIPMG3") {
$URL = "rpc/shelly.getstatus";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
goto Ausgang;
}
if (isset($Daten["pm1:0"])) {
$aktuelleDaten["AC"]["Spannung"] = $Daten["pm1:0"]["voltage"];
$aktuelleDaten["AC"]["Strom"] = $Daten["pm1:0"]["current"];
$aktuelleDaten["AC"]["Leistung"] = $Daten["pm1:0"]["apower"];
$aktuelleDaten["AC"]["Gesamtleistung"] = $Daten["pm1:0"]["apower"];
$aktuelleDaten["AC"]["Energie"] = $Daten["pm1:0"]["aenergy"]["total"];
$aktuelleDaten["AC"]["Frequenz"] = $Daten["pm1:0"]["freq"];
$aktuelleDaten["AC"]["Energie_Minute0_Wh"] = round($Daten["pm1:0"]["aenergy"]["by_minute"][0] / 1000, 5);
$aktuelleDaten["AC"]["Energie_Minute1_Wh"] = round($Daten["pm1:0"]["aenergy"]["by_minute"][1] / 1000, 5);
$aktuelleDaten["AC"]["Energie_Minute2_Wh"] = round($Daten["pm1:0"]["aenergy"]["by_minute"][2] / 1000, 5);
$aktuelleDaten["AC"]["Timestamp_Minute0"] = $Daten["pm1:0"]["aenergy"]["minute_ts"];
}
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "SHPLG-S") {
$URL = "status";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
$funktionen->log_schreiben("Status Werte sind falsch... nochmal lesen.", " ", 3);
if ($i >= 6) {
$funktionen->log_schreiben(var_export($funktionen->read($WR_IP, $WR_Port, $URL), 1), "o=>", 9);
break;
}
$i++;
continue;
}
$aktuelleDaten["AC"]["Gesamtleistung"] = $Daten["meters"]["0"]["power"];
$aktuelleDaten["AC"]["Leistung_Minute_0"] = $Daten["meters"]["0"]["counters"]["0"];
$aktuelleDaten["AC"]["Leistung_Minute_1"] = $Daten["meters"]["0"]["counters"]["1"];
$aktuelleDaten["AC"]["Leistung_Minute_2"] = $Daten["meters"]["0"]["counters"]["2"];
$aktuelleDaten["AC"]["Energie"] = $Daten["meters"]["0"]["total"];
$aktuelleDaten["Summen"]["Wh_Gesamt"] = $Daten["meters"]["0"]["total"];
$aktuelleDaten["Summen"]["Wh_Heute"] = $aktuelleDaten["WattstundenGesamtHeute"];
if (isset($Daten["relais"]["0"]["ison"])) {
$aktuelleDaten["Relais"]["Kontakt1"] = $Daten["relais"]["0"]["ison"];
}
$funktionen->log_schreiben("Wifi Signalstärke: " . $Daten["wifi_sta"]["rssi"], " ", 7);
$aktuelleDaten["Service"]["Temperatur"] = $Daten["temperature"];
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "PRO2PM") {
$URL = "rpc/shelly.getstatus";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
goto Ausgang;
}
if (isset($Daten["switch:0"])) {
$aktuelleDaten["Service"]["ShellyTemperatur"] = $Daten["switch:0"]["temperature"]["tC"];
$aktuelleDaten["Service"]["RelaisKontakt"] = (int) $Daten["switch:0"]["output"];
if (isset($Daten["input:0"]["state"])) {
$aktuelleDaten["Service"]["RelaisSchalter"] = (int) $Daten["input:0"]["state"];
}
$aktuelleDaten["AC"]["Spannung"] = $Daten["switch:0"]["voltage"];
$aktuelleDaten["AC"]["Strom"] = $Daten["switch:0"]["current"];
$aktuelleDaten["AC"]["Leistung"] = $Daten["switch:0"]["apower"];
$aktuelleDaten["AC"]["Frequenz"] = $Daten["switch:0"]["freq"];
$aktuelleDaten["AC"]["Gesamtleistung"] = $Daten["switch:0"]["apower"];
$aktuelleDaten["AC"]["Energie"] = $Daten["switch:0"]["aenergy"]["total"];
}
if (isset($Daten["switch:1"])) {
$aktuelleDaten["Service"]["ShellyTemperatur2"] = $Daten["switch:1"]["temperature"]["tC"];
$aktuelleDaten["Service"]["RelaisKontakt2"] = (int) $Daten["switch:1"]["output"];
if (isset($Daten["input:1"]["state"])) {
$aktuelleDaten["Service"]["RelaisSchalter2"] = (int) $Daten["input:1"]["state"];
}
$aktuelleDaten["AC"]["Spannung2"] = $Daten["switch:1"]["voltage"];
$aktuelleDaten["AC"]["Strom2"] = $Daten["switch:1"]["current"];
$aktuelleDaten["AC"]["Leistung2"] = $Daten["switch:1"]["apower"];
$aktuelleDaten["AC"]["Frequenz2"] = $Daten["switch:1"]["freq"];
$aktuelleDaten["AC"]["Gesamtleistung2"] = $Daten["switch:1"]["apower"];
$aktuelleDaten["AC"]["Energie2"] = $Daten["switch:1"]["aenergy"]["total"];
}
if (isset($Daten["temperature:100"])) {
$aktuelleDaten["Service"]["ExtTemperatur:100"] = $Daten["temperature:100"]["tC"];
}
if (isset($Daten["temperature:101"])) {
$aktuelleDaten["Service"]["ExtTemperatur:101"] = $Daten["temperature:101"]["tC"];
}
if (isset($Daten["temperature:102"])) {
$aktuelleDaten["Service"]["ExtTemperatur:102"] = $Daten["temperature:102"]["tC"];
}
if (isset($Daten["temperature:103"])) {
$aktuelleDaten["Service"]["ExtTemperatur:103"] = $Daten["temperature:103"]["tC"];
}
if (isset($Daten["temperature:104"])) {
$aktuelleDaten["Service"]["ExtTemperatur:104"] = $Daten["temperature:104"]["tC"];
}
if (isset($Daten["humidity:100"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:101"] = $Daten["humidity:102"]["rh"];
}
if (isset($Daten["humidity:101"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:102"] = $Daten["humidity:102"]["rh"];
}
if (isset($Daten["humidity:102"])) {
$aktuelleDaten["Service"]["ExtLuftfeuchte:102"] = $Daten["humidity:102"]["rh"];
}
$funktionen->log_schreiben(var_export($aktuelleDaten, 1), " ", 10);
$funktionen->log_schreiben(print_r($Daten, 1), " ", 10);
} else {
$URL = "rpc/shelly.getstatus";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
$URL = "status";
$Daten = $funktionen->read($WR_IP, $WR_Port, $URL);
if ($Daten === false) {
goto Ausgang;
}
}
$funktionen->log_schreiben(var_export($aktuelleDaten, 1), " ", 9);
$funktionen->log_schreiben("Dieses Gerät ist noch nicht implementiert. Bitte per eMail melden: support@solaranzeige.de", " ", 1);
$funktionen->log_schreiben("\n" . $aktuelleDaten["Info"]["Type.Text"] . "\n" . print_r($Daten, 1), " ", 1);
goto Ausgang;
}
} else {
goto Ausgang;
}
/****************************************************************************
// ENDE REGLER AUSLESEN ENDE REGLER AUSLESEN ENDE REGLER AUSLESEN
****************************************************************************/
$funktionen->log_schreiben("Gesamtleistung: " . $aktuelleDaten["AC"]["Gesamtleistung"] . " Watt", " ", 6);
/****************************************************************************
// Die Daten werden für die Speicherung vorbereitet.
****************************************************************************/
if (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "SHEM") {
$aktuelleDaten["Info"]["Produkt.Text"] = "Shelly EM";
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "PRO3EM") {
$aktuelleDaten["Info"]["Produkt.Text"] = "Shelly Pro 3EM";
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "PROEM") {
$aktuelleDaten["Info"]["Produkt.Text"] = "Shelly Pro EM";
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "SHEM-3") {
$aktuelleDaten["Info"]["Produkt.Text"] = "Shelly 3EM";
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "PLUS1") {
$aktuelleDaten["Info"]["Produkt.Text"] = "Shelly Plus 1";
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "PLUS1PM") {
$aktuelleDaten["Info"]["Produkt.Text"] = "Shelly Plus 1PM";
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "PLUSPMMINI") {
$aktuelleDaten["Info"]["Produkt.Text"] = "Shelly Plus PM Mini";
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "PRO2") {
$aktuelleDaten["Info"]["Produkt.Text"] = "Shelly Pro 2";
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "SHSW-PM") {
$aktuelleDaten["Info"]["Produkt.Text"] = "Shelly 1PM";
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "PLUSPLUGS") {
$aktuelleDaten["Info"]["Produkt.Text"] = "Shelly Plus Plug S";
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "MINIPMG3") {
$aktuelleDaten["Info"]["Produkt.Text"] = "Shelly PM mini Gen3";
} elseif (strtoupper($aktuelleDaten["Info"]["Type.Text"]) == "SHPLG-S") {
$aktuelleDaten["Info"]["Produkt.Text"] = "Shelly Plug S";
}
$aktuelleDaten["Regler"] = $Regler;
$aktuelleDaten["Info"]["Objekt.Text"] = $Objekt;
$aktuelleDaten["zentralerTimestamp"] = ($aktuelleDaten["zentralerTimestamp"] + 10);
$funktionen->log_schreiben(print_r($Daten, 1), " ", 9);
$aktuelleDaten["Summen"]["Wh_GesamtHeute"] = $aktuelleDaten["WattstundenGesamtHeute"];
/****************************************************************************
// User PHP Script, falls gewünscht oder nötig
****************************************************************************/
if (file_exists("/var/www/html/shelly_math.php")) {
include 'shelly_math.php'; // Falls etwas neu berechnet werden muss.
}
Der mit sympatischen Vollmeise
- Schwarzermann
- Beiträge: 304
- Registriert: Sa 9. Okt 2021, 11:16
- Wohnort: 87733
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 11 Mal
Re: Shelly 1 pm plus nur 3 Sensoren?
Code: Alles auswählen
/**************************************************************************
// Alle ausgelesenen Daten werden hier bei Bedarf als mqtt Messages
// an den mqtt-Broker Mosquitto gesendet.
// Achtung! Die Übertragung dauert ca. 30 Sekunden!
**************************************************************************/
if ($MQTT) {
$funktionen->log_schreiben("MQTT Daten zum [ $MQTTBroker ] senden.", " ", 1);
require $Pfad . "/mqtt_senden.php";
}
if (date("Y.W") <= "2024.30") {
// Woche xx
$funktionen->log_schreiben(print_r($aktuelleDaten, 1), " ", 5);
} else {
$funktionen->log_schreiben(print_r($aktuelleDaten, 1), " ", 8);
}
/****************************************************************************
// Zeit und Datum
****************************************************************************/
// Der Regler hat keine interne Uhr! Deshalb werden die Daten vom Raspberry benutzt.
$aktuelleDaten["Statistik"]["Timestamp"] = time();
$aktuelleDaten["Statistik"]["Monat"] = date("n");
$aktuelleDaten["Statistik"]["Woche"] = date("W");
$aktuelleDaten["Statistik"]["Wochentag.Text"] = strftime("%A", time());
$aktuelleDaten["Statistik"]["Datum.Text"] = date("d.m.Y");
$aktuelleDaten["Statistik"]["Uhrzeit.Text"] = date("H:i:s");
/****************************************************************************
// InfluxDB Zugangsdaten ...stehen in der user.config.php
// falls nicht, sind das hier die default Werte.
****************************************************************************/
$aktuelleDaten["InfluxAdresse"] = $InfluxAdresse;
$aktuelleDaten["InfluxPort"] = $InfluxPort;
$aktuelleDaten["InfluxUser"] = $InfluxUser;
$aktuelleDaten["InfluxPassword"] = $InfluxPassword;
$aktuelleDaten["InfluxDBName"] = $InfluxDBName;
$aktuelleDaten["InfluxDaylight"] = $InfluxDaylight;
$aktuelleDaten["InfluxDBLokal"] = $InfluxDBLokal;
$aktuelleDaten["InfluxSSL"] = $InfluxSSL;
$aktuelleDaten["Demodaten"] = false;
/*********************************************************************
// Daten werden in die Influx Datenbank gespeichert.
// Lokal und Remote bei Bedarf.
*********************************************************************/
if ($InfluxDB_remote) {
// Test ob die Remote Verbindung zur Verfügung steht.
if ($RemoteDaten) {
$rc = $funktionen->influx_remote_test();
if ($rc) {
$rc = $funktionen->influx_remote($aktuelleDaten);
if ($rc) {
$RemoteDaten = false;
}
} else {
$RemoteDaten = false;
}
}
if ($InfluxDB_local) {
$rc = $funktionen->influx_local($aktuelleDaten);
}
} else {
$rc = $funktionen->influx_local($aktuelleDaten);
}
if (is_file($Pfad . "/1.user.config.php")) {
// Ausgang Multi-Regler-Version
$Zeitspanne = (1 - (time() - $Start));
$funktionen->log_schreiben("Multi-Regler-Ausgang. " . $Zeitspanne, " ", 2);
if ($Zeitspanne > 0) {
sleep($Zeitspanne);
}
break;
} else {
$funktionen->log_schreiben("Schleife: " . ($i) . " Zeitspanne: " . (floor((54 - (time() - $Start)) / ($Wiederholungen - $i + 1))), " ", 9);
sleep(floor((54 - (time() - $Start)) / ($Wiederholungen - $i + 1)));
}
if ($Wiederholungen <= $i or $i >= 6) {
$funktionen->log_schreiben("OK. Daten gelesen.", " ", 9);
$funktionen->log_schreiben("Schleife " . $i . " Ausgang...", " ", 8);
break;
}
$i++;
} while (($Start + 54) > time());
if (isset($aktuelleDaten["Info"]["Firmware.Text"]) and isset($aktuelleDaten["Regler"])) {
/*********************************************************************
// Jede Minute werden bei Bedarf einige Werte zur Homematic Zentrale
// übertragen.
*********************************************************************/
if (isset($Homematic) and $Homematic == true) {
$funktionen->log_schreiben("Daten werden zur HomeMatic übertragen...", " ", 8);
require $Pfad . "/homematic.php";
}
/*********************************************************************
// Sollen Nachrichten an einen Messenger gesendet werden?
// Bei einer Multi-Regler-Version sollte diese Funktion nur bei einem
// Gerät aktiviert sein.
*********************************************************************/
if (isset($Messenger) and $Messenger == true) {
$funktionen->log_schreiben("Nachrichten versenden...", " ", 8);
require $Pfad . "/meldungen_senden.php";
}
$funktionen->log_schreiben("OK. Datenübertragung erfolgreich.", " ", 7);
} else {
$funktionen->log_schreiben("Keine gültigen Daten empfangen.", "!! ", 6);
}
/*****************************************************************************
// Die Status Datei wird dazu benutzt, um die Leistung des Reglers
// pro Tag zu speichern.
// Achtung! Dieser Wert wird jeden Tag um Mitternacht auf 0 gesetzt.
// Leistung in Watt / 60 Minuten, da 60 mal in der Stunde addiert wird.
*****************************************************************************/
if (file_exists($StatusFile) and isset($aktuelleDaten["Info"]["Firmware.Text"])) {
/***************************************************************************
// Daten einlesen ... ( Watt * Stunden ) pro Tag = Wh
***************************************************************************/
$whProTag = file_get_contents($StatusFile);
// aktuellen Wert in die Datei schreiben:
$whProTag = ($whProTag + round(($aktuelleDaten["AC"]["Gesamtleistung"] / 60), 2));
$rc = file_put_contents($StatusFile, $whProTag);
$funktionen->log_schreiben("WattstundenGesamtHeute: " . round($whProTag, 2), " ", 5);
}
Ausgang:
/*********/
/****/
fclose($COM1);
$funktionen->log_schreiben("----------------- Stop shelly.php ------------------ ", "|--", 6);
return;
?>
Der mit sympatischen Vollmeise
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste