Auf Testversion gebracht, V1.0
This commit is contained in:
@@ -1,10 +1,23 @@
|
||||
{
|
||||
"elements": [
|
||||
{
|
||||
"type": "ValidationTextBox",
|
||||
"name": "IP_Adresse",
|
||||
"caption": "IP-Adresse Go-E",
|
||||
"suffix": ""
|
||||
"type": "Select",
|
||||
"name": "Ladestation",
|
||||
"caption": "Ladestation",
|
||||
"options": [
|
||||
{
|
||||
"caption": "Go-E Wallbox (Alte Version)",
|
||||
"value": 1
|
||||
},
|
||||
{
|
||||
"caption": "Go-E Germini / Germini Flex",
|
||||
"value": 2
|
||||
},
|
||||
{
|
||||
"caption": "Smart-Me Pico",
|
||||
"value": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "NumberSpinner",
|
||||
@@ -14,7 +27,7 @@
|
||||
{
|
||||
"type": "NumberSpinner",
|
||||
"name": "MaxLeistung",
|
||||
"caption": "Maximlalleistung Ladestation"
|
||||
"caption": "Maximalleistung Ladestation"
|
||||
},
|
||||
{
|
||||
"type": "NumberSpinner",
|
||||
@@ -24,18 +37,41 @@
|
||||
{
|
||||
"type": "NumberSpinner",
|
||||
"name": "MaxLeistung_1ph",
|
||||
"caption": "Maximlalleistung Ladestation 1-Phasig"
|
||||
"caption": "Maximalleistung Ladestation 1-Phasig"
|
||||
},
|
||||
{
|
||||
"type": "NumberSpinner",
|
||||
"name": "IdleCounterMax",
|
||||
"caption": "Zyklen zwischen zwei Leisutungsänderungen",
|
||||
"caption": "Zyklen zwischen zwei Leistungsänderungen",
|
||||
"suffix": ""
|
||||
},
|
||||
|
||||
{
|
||||
"type": "Label",
|
||||
"caption": "Aktuell wird nur Go-E ladestation unterstützt!"
|
||||
"type": "ValidationTextBox",
|
||||
"name": "IP_Adresse",
|
||||
"caption": "IP-Adresse Ladestation"
|
||||
},
|
||||
{
|
||||
"type": "ValidationTextBox",
|
||||
"name": "ID",
|
||||
"caption": "ID"
|
||||
|
||||
},
|
||||
{
|
||||
"type": "ValidationTextBox",
|
||||
"name": "Seriennummer",
|
||||
"caption": "Seriennummer"
|
||||
|
||||
},
|
||||
{
|
||||
"type": "ValidationTextBox",
|
||||
"name": "Username",
|
||||
"caption": "Username"
|
||||
|
||||
},
|
||||
{ "type": "PasswordTextBox",
|
||||
"name": "Password",
|
||||
"caption": "Passwort"
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,12 @@ class Ladestation_Universal extends IPSModule
|
||||
$this->RegisterPropertyInteger("MinLeistung_1ph", 1400);
|
||||
$this->RegisterPropertyInteger("MaxLeistung_1ph", 7800);
|
||||
$this->RegisterPropertyString("IP_Adresse", "0.0.0.0");
|
||||
$this->RegisterPropertyInteger("Ladestation", 2);
|
||||
$this->RegisterPropertyString("ID", "");
|
||||
$this->RegisterPropertyString("Seriennummer", "");
|
||||
$this->RegisterPropertyString("Username", "");
|
||||
$this->RegisterPropertyString("Password", "");
|
||||
|
||||
|
||||
// Ladestationspezifische Variabeln
|
||||
$this->RegisterVariableBoolean("Ladebereit", "Ladebereit", "~Switch", 1);
|
||||
@@ -61,8 +67,11 @@ class Ladestation_Universal extends IPSModule
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function SetAktuelle_Leistung(int $power)
|
||||
{
|
||||
|
||||
$internalPower = GetValue($this->GetIDForIdent("Aktuelle_Leistung"));
|
||||
// Aktuelle Leistungsvorgabe setzen
|
||||
SetValue($this->GetIDForIdent("Aktuelle_Leistung"), $power);
|
||||
@@ -154,11 +163,29 @@ class Ladestation_Universal extends IPSModule
|
||||
$ch = curl_init();
|
||||
|
||||
// Setze die URL
|
||||
curl_setopt(
|
||||
if($this->ReadPropertyInteger("Ladestation")==2){
|
||||
curl_setopt(
|
||||
$ch,
|
||||
CURLOPT_URL,
|
||||
"http://" . $this->ReadPropertyString("IP_Adresse") . "/api/status"
|
||||
);
|
||||
);
|
||||
}elseif($this->ReadPropertyInteger("Ladestation")==1){
|
||||
curl_setopt(
|
||||
$ch,
|
||||
CURLOPT_URL,
|
||||
"http://" . $this->ReadPropertyString("IP_Adresse") . "/mqtt?payload="
|
||||
);
|
||||
}
|
||||
elseif($this->ReadPropertyInteger("Ladestation")==3){
|
||||
curl_setopt(
|
||||
$ch,
|
||||
CURLOPT_URL,
|
||||
"https://api.smart-me.com/pico/charging/". $this->ReadPropertyString("ID")
|
||||
);
|
||||
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
|
||||
curl_setopt($ch, CURLOPT_USERPWD, $this->ReadPropertyString("Username") . ":" . $this->ReadPropertyString("Password"));
|
||||
}
|
||||
|
||||
|
||||
// Setze die Option, die Antwort als String zurückzugeben
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
@@ -174,6 +201,7 @@ class Ladestation_Universal extends IPSModule
|
||||
// Dekodiere die JSON-Antwort
|
||||
$data = json_decode($response, true);
|
||||
|
||||
if($this->ReadPropertyInteger("Ladestation")==2||$this->ReadPropertyInteger("Ladestation")==1){
|
||||
// Überprüfe, ob das JSON-Dekodieren erfolgreich war und der Schlüssel "car" existiert
|
||||
if (json_last_error() === JSON_ERROR_NONE && isset($data["car"])) {
|
||||
// Speichere den Wert von "car" in der Variable $status
|
||||
@@ -192,7 +220,33 @@ class Ladestation_Universal extends IPSModule
|
||||
}
|
||||
}
|
||||
}
|
||||
if($this->ReadPropertyInteger("Ladestation")==3){
|
||||
// Überprüfe, ob das JSON-Dekodieren erfolgreich war und der Schlüssel "car" existiert
|
||||
if (json_last_error() === JSON_ERROR_NONE && isset($data["State"])) {
|
||||
// Speichere den Wert von "car" in der Variable $status
|
||||
|
||||
SetValue(
|
||||
$this->GetIDForIdent("Ladeleistung_Effektiv"),
|
||||
round($data["ActiveChargingPower"]*1000)
|
||||
);
|
||||
|
||||
SetValue($this->GetIDForIdent("Fahrzeugstatus"), $data["State"]);
|
||||
|
||||
if($data["MaxAllowedChargingCurrent"]>0 && $data["State"] != 1){
|
||||
if ($data["ActiveChargingPower"]/$data["MaxAllowedChargingCurrent"] > 0.4/* && $data["State"] != 1*/) {
|
||||
SetValue($this->GetIDForIdent("Lademodus"), 1);
|
||||
} elseif ($data["State"] != 1) {
|
||||
SetValue($this->GetIDForIdent("Lademodus"), 0);
|
||||
}
|
||||
}else{
|
||||
//SetValue($this->GetIDForIdent("Lademodus"), 1);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Peak-Wert speichern
|
||||
$this->SetValue("Peak", $Peak);
|
||||
|
||||
@@ -233,9 +287,17 @@ class Ladestation_Universal extends IPSModule
|
||||
|
||||
public function sendPowerToStation($value)
|
||||
{
|
||||
IPS_LogMessage("value", "bei sendpower" . $value);
|
||||
|
||||
if($this->ReadPropertyInteger("Ladestation")==2){
|
||||
$baseUrl ="http://" . $this->ReadPropertyString("IP_Adresse") . "/api/set?";
|
||||
}elseif($this->ReadPropertyInteger("Ladestation")==1){
|
||||
$baseUrl ="http://" . $this->ReadPropertyString("IP_Adresse") . "/mqtt?payload=";
|
||||
}elseif($this->ReadPropertyInteger("Ladestation")==3){
|
||||
$baseUrl ="https://api.smart-me.com/pico/loadmanagementgroup/current/" . $this->ReadPropertyString("Seriennummer") . "?current=";
|
||||
}
|
||||
// Base URL
|
||||
$baseUrl =
|
||||
"http://" . $this->ReadPropertyString("IP_Adresse") . "/api/set?";
|
||||
|
||||
IPS_LogMessage("Ladestation", "Aufgerufene ip" . $baseUrl);
|
||||
$value = $this->convertPowerToCurrent(
|
||||
$value,
|
||||
@@ -243,35 +305,124 @@ class Ladestation_Universal extends IPSModule
|
||||
);
|
||||
// Initialize a cURL session
|
||||
$ch = curl_init();
|
||||
IPS_LogMessage("value", "nach konvertierung" . $value);
|
||||
|
||||
// If value is 0, make a single request
|
||||
if ($value == 0) {
|
||||
$url = $baseUrl . "frc=1";
|
||||
if($this->ReadPropertyInteger("Ladestation")==2){
|
||||
$url = $baseUrl . "frc=1";
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$response = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
return $response;
|
||||
|
||||
}elseif($this->ReadPropertyInteger("Ladestation")==1){
|
||||
$url = $baseUrl . "alw=0";
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$response = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
return $response;
|
||||
|
||||
}elseif($this->ReadPropertyInteger("Ladestation")==3){
|
||||
$url = $baseUrl . "0";
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_POST, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
|
||||
curl_setopt($ch, CURLOPT_USERPWD, $this->ReadPropertyString("Username") . ":" . $this->ReadPropertyString("Password"));
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$response = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
return $response;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
// For value between 1 and 32, make two requests
|
||||
elseif ($value >= 1 && $value <= 32) {
|
||||
// First request
|
||||
$url1 = $baseUrl . "frc=2";
|
||||
curl_setopt($ch, CURLOPT_URL, $url1);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$response1 = curl_exec($ch);
|
||||
|
||||
// Check for errors
|
||||
if (curl_errno($ch)) {
|
||||
curl_close($ch);
|
||||
return "Error:" . curl_error($ch);
|
||||
}
|
||||
if($this->ReadPropertyInteger("Ladestation")==2){
|
||||
$url = $baseUrl . "frc=2";
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$response1 = curl_exec($ch);
|
||||
|
||||
// Check for errors
|
||||
if (curl_errno($ch)) {
|
||||
curl_close($ch);
|
||||
return "Error:" . curl_error($ch);
|
||||
}
|
||||
}elseif($this->ReadPropertyInteger("Ladestation")==1){
|
||||
$url = $baseUrl . "alw=1";
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$response1 = curl_exec($ch);
|
||||
|
||||
// Check for errors
|
||||
if (curl_errno($ch)) {
|
||||
curl_close($ch);
|
||||
return "Error:" . curl_error($ch);
|
||||
}
|
||||
|
||||
}elseif($this->ReadPropertyInteger("Ladestation")==3){
|
||||
// Nichts zu tun für Smart-Me station
|
||||
}
|
||||
|
||||
|
||||
// Second request
|
||||
$url2 = $baseUrl . "amp=$value";
|
||||
|
||||
|
||||
if($this->ReadPropertyInteger("Ladestation")==2){
|
||||
$url2 = $baseUrl . "amp=$value";
|
||||
curl_setopt($ch, CURLOPT_URL, $url2);
|
||||
$response2 = curl_exec($ch);
|
||||
|
||||
// Check for errors
|
||||
if (curl_errno($ch)) {
|
||||
curl_close($ch);
|
||||
return "Error:" . curl_error($ch);
|
||||
}
|
||||
|
||||
// Close cURL session
|
||||
curl_close($ch);
|
||||
|
||||
// Return responses
|
||||
return ;
|
||||
}elseif($this->ReadPropertyInteger("Ladestation")==1){
|
||||
$url2 = $baseUrl . "amp=$value";
|
||||
curl_setopt($ch, CURLOPT_URL, $url2);
|
||||
$response2 = curl_exec($ch);
|
||||
|
||||
// Check for errors
|
||||
if (curl_errno($ch)) {
|
||||
curl_close($ch);
|
||||
return "Error:" . curl_error($ch);
|
||||
}
|
||||
|
||||
// Close cURL session
|
||||
curl_close($ch);
|
||||
|
||||
// Return responses
|
||||
return;
|
||||
|
||||
}
|
||||
elseif($this->ReadPropertyInteger("Ladestation")==3){
|
||||
IPS_LogMessage("value", "value ist " . $value);
|
||||
|
||||
$value2 = $value * 1000;
|
||||
IPS_LogMessage("value", "value2 ist " . $value2);
|
||||
|
||||
$url2 = $baseUrl . $value2;
|
||||
IPS_LogMessage("Ladestation", "Aufgerufene ip" . $url2);
|
||||
|
||||
curl_setopt($ch, CURLOPT_URL, $url2);
|
||||
curl_setopt($ch, CURLOPT_POST, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
|
||||
curl_setopt($ch, CURLOPT_USERPWD, $this->ReadPropertyString("Username") . ":" . $this->ReadPropertyString("Password"));
|
||||
$response2 = curl_exec($ch);
|
||||
IPS_LogMessage("Ladestation", "Antwort" . (curl_getinfo($ch, CURLINFO_HTTP_CODE)));
|
||||
|
||||
// Check for errors
|
||||
if (curl_errno($ch)) {
|
||||
@@ -283,13 +434,17 @@ class Ladestation_Universal extends IPSModule
|
||||
curl_close($ch);
|
||||
|
||||
// Return responses
|
||||
return [$response1, $response2];
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// If value is out of range
|
||||
else {
|
||||
return "Invalid value. Must be between 0 and 32.";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function convertPowerToCurrent($value, $Lademodus)
|
||||
@@ -297,57 +452,59 @@ class Ladestation_Universal extends IPSModule
|
||||
if ($Lademodus == 1) {
|
||||
if ($value == 0) {
|
||||
return 0;
|
||||
} elseif ($value == 4150) {
|
||||
} elseif ($value < 4150) {
|
||||
return 0;
|
||||
} elseif ($value < 4850) {
|
||||
return 6;
|
||||
} elseif ($value == 4850) {
|
||||
} elseif ($value < 5550) {
|
||||
return 7;
|
||||
} elseif ($value == 5550) {
|
||||
} elseif ($value < 6250) {
|
||||
return 8;
|
||||
} elseif ($value == 6250) {
|
||||
} elseif ($value < 6950) {
|
||||
return 9;
|
||||
} elseif ($value == 6950) {
|
||||
} elseif ($value < 7600) {
|
||||
return 10;
|
||||
} elseif ($value == 7600) {
|
||||
} elseif ($value < 8300) {
|
||||
return 11;
|
||||
} elseif ($value == 8300) {
|
||||
} elseif ($value < 9000) {
|
||||
return 12;
|
||||
} elseif ($value == 9000) {
|
||||
} elseif ($value < 9700) {
|
||||
return 13;
|
||||
} elseif ($value == 9700) {
|
||||
} elseif ($value < 10300) {
|
||||
return 14;
|
||||
} elseif ($value == 10300) {
|
||||
} elseif ($value < 11000) {
|
||||
return 15;
|
||||
} elseif ($value == 11000) {
|
||||
} elseif ($value < 11750) {
|
||||
return 16;
|
||||
} elseif ($value == 11750) {
|
||||
} elseif ($value < 12450) {
|
||||
return 17;
|
||||
} elseif ($value == 12450) {
|
||||
} elseif ($value < 13150) {
|
||||
return 18;
|
||||
} elseif ($value == 13150) {
|
||||
} elseif ($value < 13850) {
|
||||
return 19;
|
||||
} elseif ($value == 13850) {
|
||||
} elseif ($value < 14550) {
|
||||
return 20;
|
||||
} elseif ($value == 14550) {
|
||||
} elseif ($value < 15250) {
|
||||
return 21;
|
||||
} elseif ($value == 15250) {
|
||||
} elseif ($value < 15900) {
|
||||
return 22;
|
||||
} elseif ($value == 15900) {
|
||||
} elseif ($value < 16600) {
|
||||
return 23;
|
||||
} elseif ($value == 16600) {
|
||||
} elseif ($value < 17300) {
|
||||
return 24;
|
||||
} elseif ($value == 17300) {
|
||||
} elseif ($value < 18000) {
|
||||
return 25;
|
||||
} elseif ($value == 18000) {
|
||||
} elseif ($value < 18700) {
|
||||
return 26;
|
||||
} elseif ($value == 18700) {
|
||||
} elseif ($value < 19400) {
|
||||
return 27;
|
||||
} elseif ($value == 19400) {
|
||||
} elseif ($value < 20100) {
|
||||
return 28;
|
||||
} elseif ($value == 20100) {
|
||||
} elseif ($value < 20800) {
|
||||
return 29;
|
||||
} elseif ($value == 20800) {
|
||||
} elseif ($value < 21500) {
|
||||
return 30;
|
||||
} elseif ($value == 21500) {
|
||||
} elseif ($value < 22000) {
|
||||
return 31;
|
||||
} elseif ($value >= 22000) {
|
||||
return 32;
|
||||
@@ -356,57 +513,59 @@ class Ladestation_Universal extends IPSModule
|
||||
} elseif ($Lademodus == 0) {
|
||||
if ($value == 0) {
|
||||
return 0;
|
||||
} elseif ($value == 1450) {
|
||||
} elseif ($value < 1450) {
|
||||
return 0;
|
||||
} elseif ($value < 1690) {
|
||||
return 6;
|
||||
} elseif ($value == 1690) {
|
||||
} elseif ($value < 1930) {
|
||||
return 7;
|
||||
} elseif ($value == 1930) {
|
||||
} elseif ($value < 2170) {
|
||||
return 8;
|
||||
} elseif ($value == 2170) {
|
||||
} elseif ($value < 2410) {
|
||||
return 9;
|
||||
} elseif ($value == 2410) {
|
||||
} elseif ($value < 2650) {
|
||||
return 10;
|
||||
} elseif ($value == 2650) {
|
||||
} elseif ($value < 2890) {
|
||||
return 11;
|
||||
} elseif ($value == 2890) {
|
||||
} elseif ($value < 3130) {
|
||||
return 12;
|
||||
} elseif ($value == 3130) {
|
||||
} elseif ($value < 3370) {
|
||||
return 13;
|
||||
} elseif ($value == 3370) {
|
||||
} elseif ($value < 3610) {
|
||||
return 14;
|
||||
} elseif ($value == 3610) {
|
||||
} elseif ($value < 3850) {
|
||||
return 15;
|
||||
} elseif ($value == 3850) {
|
||||
} elseif ($value < 4090) {
|
||||
return 16;
|
||||
} elseif ($value == 4090) {
|
||||
} elseif ($value < 4330) {
|
||||
return 17;
|
||||
} elseif ($value == 4330) {
|
||||
} elseif ($value < 4570) {
|
||||
return 18;
|
||||
} elseif ($value == 4570) {
|
||||
} elseif ($value < 4810) {
|
||||
return 19;
|
||||
} elseif ($value == 4810) {
|
||||
} elseif ($value < 5050) {
|
||||
return 20;
|
||||
} elseif ($value == 5050) {
|
||||
} elseif ($value < 5290) {
|
||||
return 21;
|
||||
} elseif ($value == 5290) {
|
||||
} elseif ($value < 5530) {
|
||||
return 22;
|
||||
} elseif ($value == 5530) {
|
||||
} elseif ($value < 5770) {
|
||||
return 23;
|
||||
} elseif ($value == 5770) {
|
||||
} elseif ($value < 6010) {
|
||||
return 24;
|
||||
} elseif ($value == 6010) {
|
||||
} elseif ($value < 6250) {
|
||||
return 25;
|
||||
} elseif ($value == 6250) {
|
||||
} elseif ($value < 6490) {
|
||||
return 26;
|
||||
} elseif ($value == 6490) {
|
||||
} elseif ($value < 6730) {
|
||||
return 27;
|
||||
} elseif ($value == 6730) {
|
||||
} elseif ($value < 6970) {
|
||||
return 28;
|
||||
} elseif ($value == 6970) {
|
||||
} elseif ($value < 7210) {
|
||||
return 29;
|
||||
} elseif ($value == 7210) {
|
||||
} elseif ($value < 7450) {
|
||||
return 30;
|
||||
} elseif ($value == 7450) {
|
||||
} elseif ($value < 7690) {
|
||||
return 31;
|
||||
} elseif ($value >= 7690) {
|
||||
return 32;
|
||||
@@ -489,5 +648,6 @@ class Ladestation_Universal extends IPSModule
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user