Hallo zusammen,
mal wieder eine blöde Frage eines „Nichtprogrammierers“ . Ich habe mir auch schon unter „Wie kann ich 2.0“ und bei google alles mögliche angeschaut und probiert, scheitere aber gerade an folgender Aufgabe.
Möchte einfach nur mehrere Wenn dies dann das Abfragen…
Folgende Varianten habe ich probiert, komme aber nicht richtig weiter:
Variante 1: Hier bekomme ich null Rückmeldung. Kein Fehler aber auch kein Echo.
<?php
//Variablen Auslesen
$PV_Leistung_W = GetValue(30069 /*[PHP_Module\SMA\PV Leistung aktuell gesamt]*/);
$Wallboxladestati = GetValue(41219 /*[Gewerke\Energiemanagement\e-Auto\Status\Wert]*/);
if ($PV_Leistung_W >= 4100 & $PV_Leistung_W < 4800 & $Wallboxladestati =66)
{
ModBus_WriteRegister(40330 /*[Gewerke\Energiemanagement\e-Auto\Ladeleistung setzen]*/, 6);
ModBus_WriteCoil(15130 /*[Gewerke\Energiemanagement\e-Auto\Charge enable]*/, true);
echo "lade 6A";
}
if ($PV_Leistung_W >= 4800 & $PV_Leistung_W < 5200 & $Wallboxladestati =66)
{
ModBus_WriteRegister(40330 /*[Gewerke\Energiemanagement\e-Auto\Ladeleistung setzen]*/, 7);
ModBus_WriteCoil(15130 /*[Gewerke\Energiemanagement\e-Auto\Charge enable]*/, true);
echo "lade 7A";
}
if ($PV_Leistung_W >= 5200 & $Wallboxladestati =66)
{
ModBus_WriteRegister(40330 /*[Gewerke\Energiemanagement\e-Auto\Ladeleistung setzen]*/, 8);
ModBus_WriteCoil(15130 /*[Gewerke\Energiemanagement\e-Auto\Charge enable]*/, true);
echo "lade 8A";
}
if ($PV_Leistung_W < 4100)
{
ModBus_WriteRegister(40330 /*[Gewerke\Energiemanagement\e-Auto\Ladeleistung setzen]*/, 6);
ModBus_WriteCoil(15130 /*[Gewerke\Energiemanagement\e-Auto\Charge enable]*/, false);
echo "keine Ladung";
}
Variante 2: Auch hier kein Fehler aber auch kein Echo. Hier müsste ich bestimmt bei switch ($PV_Leistung_W) noch mehr angeben, aber try & Error hat auch nichts gebracht.
```php
<?php
//Variablen Auslesen
$PV_Leistung_W = GetValue(30069 /*[PHP_Module\SMA\PV Leistung aktuell gesamt]*/);
$Wallboxladestati = GetValue(41219 /*[Gewerke\Energiemanagement\e-Auto\Status\Wert]*/);
switch ($PV_Leistung_W)
{
case ($PV_Leistung_W >= 4100 & $PV_Leistung_W < 4800 & $Wallboxladestati =66):
ModBus_WriteRegister(40330 /*[Gewerke\Energiemanagement\e-Auto\Ladeleistung setzen]*/, 6);
ModBus_WriteCoil(15130 /*[Gewerke\Energiemanagement\e-Auto\Charge enable]*/, true);
echo "lade 6A";
break;
case ($PV_Leistung_W >= 4800 & $PV_Leistung_W < 5200 & $Wallboxladestati =66):
ModBus_WriteRegister(40330 /*[Gewerke\Energiemanagement\e-Auto\Ladeleistung setzen]*/, 7);
ModBus_WriteCoil(15130 /*[Gewerke\Energiemanagement\e-Auto\Charge enable]*/, true);
echo "lade 7A";
break;
case ($PV_Leistung_W >= 5200 & $Wallboxladestati =66):
ModBus_WriteRegister(40330 /*[Gewerke\Energiemanagement\e-Auto\Ladeleistung setzen]*/, 8);
ModBus_WriteCoil(15130 /*[Gewerke\Energiemanagement\e-Auto\Charge enable]*/, true);
echo "lade 8A";
break;
case ($PV_Leistung_W < 4100):
ModBus_WriteRegister(40330 /*[Gewerke\Energiemanagement\e-Auto\Ladeleistung setzen]*/, 6);
ModBus_WriteCoil(15130 /*[Gewerke\Energiemanagement\e-Auto\Charge enable]*/, false);
echo "nicht laden";
break;
}
Variante 3: Diese Variante funktioniert bedingt. Auch wenn eigentlich case 2 befolgt werden müsste weil $PV_Leistung_W größer 4800W beträgt, nimmt er immer nur den ersten case und setzt 6A.
<?php
//Variablen Auslesen
$PV_Leistung_W = GetValue(30069 /*[PHP_Module\SMA\PV Leistung aktuell gesamt]*/);
$Wallboxladestati = GetValue(41219 /*[Gewerke\Energiemanagement\e-Auto\Status\Wert]*/);
switch ($PV_Leistung_W)
{
case ($PV_Leistung_W >= 4100):
ModBus_WriteRegister(40330 /*[Gewerke\Energiemanagement\e-Auto\Ladeleistung setzen]*/, 6);
ModBus_WriteCoil(15130 /*[Gewerke\Energiemanagement\e-Auto\Charge enable]*/, true);
echo "lade 6A";
break;
case ($PV_Leistung_W >= 4800):
ModBus_WriteRegister(40330 /*[Gewerke\Energiemanagement\e-Auto\Ladeleistung setzen]*/, 7);
ModBus_WriteCoil(15130 /*[Gewerke\Energiemanagement\e-Auto\Charge enable]*/, true);
echo "lade 7A";
break;
case ($PV_Leistung_W >= 5200):
ModBus_WriteRegister(40330 /*[Gewerke\Energiemanagement\e-Auto\Ladeleistung setzen]*/, 8);
ModBus_WriteCoil(15130 /*[Gewerke\Energiemanagement\e-Auto\Charge enable]*/, true);
echo "lade 8A";
break;
case ($PV_Leistung_W < 4100):
ModBus_WriteRegister(40330 /*[Gewerke\Energiemanagement\e-Auto\Ladeleistung setzen]*/, 6);
ModBus_WriteCoil(15130 /*[Gewerke\Energiemanagement\e-Auto\Charge enable]*/, false);
echo "nicht laden";
break;
}
Ist mir immer wieder unangenehm für solche eigentlich einfachen Dinge zu fragen, aber ich hab nun alle Möglichkeiten durch.
Ich habe sogar if Abfragen in einem Case versucht zu erstellen… ^^
Schöne Ostern allen !
Gruß Zeppi