Ja, alles da. Der Zähler wird per PHP abgefragt:
Code: Alles auswählen
<?php
$username='xxx';
$password='xxx';
$url='https://smart-me.com:443/api/Devices/[ID des Zählers]';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout after 30 seconds
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
$result=curl_exec ($ch);
curl_close ($ch);
...
Die Rückmeldung sieht dann so aus (1-phasiger Zähler):
Code: Alles auswählen
{
"Id": "[ID des Zählers]",
"Name": "Wallbox",
"Serial": xxx,
"DeviceEnergyType": 1,
"FamilyType": 3,
"ActivePower": 0.001143,
"ActivePowerUnit": "kW",
"CounterReading": 4411.039505,
"CounterReadingUnit": "kWh",
"CounterReadingT1": 4411.039505,
"CounterReadingT2": 0,
"CounterReadingImport": 4411.042001,
"CounterReadingExport": 0.002496,
"SwitchOn": true,
"Voltage": 233.1,
"VoltageL1": 233.1,
"Current": 0.007,
"PowerFactor": 0.658,
"PowerFactorL1": 0.658,
"ActiveTariff": 1,
"ValueDate": "2018-11-29T19:29:32.9271869"
}
Hab mir mal die anderen json Module und die Anleitung zum Erstellen von Modulen angesehen. Meine Programmiergrundkenntnisse reichen da leider bei weitem nicht aus. Ich hätte noch das PHP Skript um die benötigten Werte als Auszug in die json zu schreiben. Hab leider keinen Schimmer wie das in ein Shell Script umzusetzen wäre:
Code: Alles auswählen
...
// aktuelle Leistung lesen
$startstring1 = "ActivePower\":";
// bis zum nächsten html tag bzw. Zeichenfolge nach relevanten Einträgen
$endstring1 = ",";
// Nun werden die Daten entsprechend gefiltert.
$leistung = strstr($result,$startstring1);
$leistung = str_replace($startstring1,"",$leistung);
$leistung = strstr($leistung,$endstring1,TRUE);
$leistung = $leistung * 1000;
$leistung = round($leistung);
// aktuellen Zählerstand lesen
$startstring1 = "CounterReading\":";
// bis zum nächsten html tag bzw. Zeichenfolge nach relevanten Einträgen
$endstring1 = ",";
// Nun werden die Daten entsprechend gefiltert.
$stand = strstr($result,$startstring1);
$stand = str_replace($startstring1,"",$stand);
$stand = strstr($stand,$endstring1,TRUE);
$stand = $stand;
$stand = round($stand);
// aktuellen Strom lesen
$startstring1 = "Current\":";
// bis zum nächsten html tag bzw. Zeichenfolge nach relevanten Einträgen
$endstring1 = ",";
// Nun werden die Daten entsprechend gefiltert.
$strom = strstr($result,$startstring1);
$strom = str_replace($startstring1,"",$strom);
$strom = strstr($strom,$endstring1,TRUE);
// $strom = $strom;
// $strom = round($strom);
// aktuelle Spannung lesen
$startstring1 = "Voltage\":";
// bis zum nächsten html tag bzw. Zeichenfolge nach relevanten Einträgen
$endstring1 = ",";
// Nun werden die Daten entsprechend gefiltert.
$spannung = strstr($result,$startstring1);
$spannung = str_replace($startstring1,"",$spannung);
$spannung = strstr($spannung,$endstring1,TRUE);
// $spannung = $spannung * -1000;
$spannung = round($spannung);
// aktuellen Leistungsfaktor lesen
$startstring1 = "PowerFactor\":";
// bis zum nächsten html tag bzw. Zeichenfolge nach relevanten Einträgen
$endstring1 = ",";
// Nun werden die Daten entsprechend gefiltert.
$faktor = strstr($result,$startstring1);
$faktor = str_replace($startstring1,"",$faktor);
$faktor = strstr($faktor,$endstring1,TRUE);
// $faktor = $faktor * -1000;
// $faktor = round($faktor);
// Ausgabe
echo ("{\"Watt über alle Phasen\": $leistung,
\"Zählerstand kWh\": $stand,
\"Phase 1 A\": $strom }");
?>