Seit SMA HM2 Update auf 2.07.5.R , Peaks im Graphen

Seit dem Update des SMA Home Manager 2 auf Version 2.07.5.R vom 22.10.2021, habe ich immer sehr große Peaks in den Graphen, die glaub so nicht vorkommen sollen.

image

Ich habe im Script ein IF Anweisung eingebaut die Werte >100000 nicht speichert.

Hat jemand der das Script verwendet das gleiche Problem?

Da das Thema im Archiv liegt, habe ich hier ein neues Thema aufgemacht.

Danke
richimaint

Um welche Variable handelt es sich denn da bei dir?

Bei mir sieht das gelieferte Array so aus:

Array
(
    [Timestamp] => 1635144303
    [TimestampUtc] => Array
        (
            [__type] => DateTime
            [DateTime] => 2021-10-25T06:45:02
            [Kind] => Utc
        )

    [PV] => 351
    [FeedIn] => 0
    [GridConsumption] => 826
    [DirectConsumption] => 351
    [SelfConsumption] => 351
    [SelfSupply] => 351
    [TotalConsumption] => 1177
    [DirectConsumptionQuote] => 100
    [SelfConsumptionQuote] => 100
    [AutarkyQuote] => 30
    [BatteryIn] => 0
    [BatteryOut] => 0
    [BatteryChargeStatus] => 0
    [OperationHealth] => 
    [BatteryStateOfHealth] => 
    [ModuleTemperature] => 
    [EnvironmentTemperature] => 
    [WindSpeed] => 
    [Insolation] => 
    [BatteryMode] => 
    [InfoMessages] => Array
        (
        )

    [WarningMessages] => Array
        (
        )

    [ErrorMessages] => Array
        (
        )

    [Info] => Array
        (
        )

)
Array
(
    [0] => Array
        (
            [TimeStamp] => 2021-10-25T00:00:00
            [WeatherId] => 100
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,89
            [IsConsumptionRecommended] => 
        )

    [1] => Array
        (
            [TimeStamp] => 2021-10-25T01:00:00
            [WeatherId] => 100
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 1,02
            [IsConsumptionRecommended] => 
        )

    [2] => Array
        (
            [TimeStamp] => 2021-10-25T02:00:00
            [WeatherId] => 100
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 1,02
            [IsConsumptionRecommended] => 
        )

    [3] => Array
        (
            [TimeStamp] => 2021-10-25T03:00:00
            [WeatherId] => 100
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 1,02
            [IsConsumptionRecommended] => 
        )

    [4] => Array
        (
            [TimeStamp] => 2021-10-25T04:00:00
            [WeatherId] => 100
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,97
            [IsConsumptionRecommended] => 
        )

    [5] => Array
        (
            [TimeStamp] => 2021-10-25T05:00:00
            [WeatherId] => 100
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 1
            [IsConsumptionRecommended] => 
        )

    [6] => Array
        (
            [TimeStamp] => 2021-10-25T06:00:00
            [WeatherId] => 100
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 1,08
            [IsConsumptionRecommended] => 
        )

    [7] => Array
        (
            [TimeStamp] => 2021-10-25T07:00:00
            [WeatherId] => 100
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 1,49
            [IsConsumptionRecommended] => 
        )

    [8] => Array
        (
            [TimeStamp] => 2021-10-25T08:00:00
            [WeatherId] => 101
            [PvMeanPower] => 0,15
            [PvEnergy] => 531538.74
            [ConsumptionForecast] => 1,33
            [IsConsumptionRecommended] => 
        )

    [9] => Array
        (
            [TimeStamp] => 2021-10-25T09:00:00
            [WeatherId] => 1
            [PvMeanPower] => 0,75
            [PvEnergy] => 2683217.07
            [ConsumptionForecast] => 0,78
            [IsConsumptionRecommended] => 
        )

    [10] => Array
        (
            [TimeStamp] => 2021-10-25T10:00:00
            [WeatherId] => 1
            [PvMeanPower] => 2,04
            [PvEnergy] => 7328427.3
            [ConsumptionForecast] => 0,78
            [IsConsumptionRecommended] => 
        )

    [11] => Array
        (
            [TimeStamp] => 2021-10-25T11:00:00
            [WeatherId] => 1
            [PvMeanPower] => 3,64
            [PvEnergy] => 13091337.9
            [ConsumptionForecast] => 0,66
            [IsConsumptionRecommended] => 1
        )

    [12] => Array
        (
            [TimeStamp] => 2021-10-25T12:00:00
            [WeatherId] => 1
            [PvMeanPower] => 5,26
            [PvEnergy] => 18921161.7
            [ConsumptionForecast] => 0,69
            [IsConsumptionRecommended] => 1
        )

    [13] => Array
        (
            [TimeStamp] => 2021-10-25T13:00:00
            [WeatherId] => 0
            [PvMeanPower] => 6,12
            [PvEnergy] => 22018210.2
            [ConsumptionForecast] => 1,38
            [IsConsumptionRecommended] => 1
        )

    [14] => Array
        (
            [TimeStamp] => 2021-10-25T14:00:00
            [WeatherId] => 1
            [PvMeanPower] => 5,93
            [PvEnergy] => 21333339.000000004
            [ConsumptionForecast] => 0,81
            [IsConsumptionRecommended] => 1
        )

    [15] => Array
        (
            [TimeStamp] => 2021-10-25T15:00:00
            [WeatherId] => 1
            [PvMeanPower] => 4,78
            [PvEnergy] => 17206158.599999998
            [ConsumptionForecast] => 0,53
            [IsConsumptionRecommended] => 1
        )

    [16] => Array
        (
            [TimeStamp] => 2021-10-25T16:00:00
            [WeatherId] => 1
            [PvMeanPower] => 3,36
            [PvEnergy] => 12082212.899999999
            [ConsumptionForecast] => 0,53
            [IsConsumptionRecommended] => 1
        )

    [17] => Array
        (
            [TimeStamp] => 2021-10-25T17:00:00
            [WeatherId] => 1
            [PvMeanPower] => 1,49
            [PvEnergy] => 5377164.84
            [ConsumptionForecast] => 0,57
            [IsConsumptionRecommended] => 
        )

    [18] => Array
        (
            [TimeStamp] => 2021-10-25T18:00:00
            [WeatherId] => 3
            [PvMeanPower] => 0,07
            [PvEnergy] => 235129.0113
            [ConsumptionForecast] => 0,64
            [IsConsumptionRecommended] => 
        )

    [19] => Array
        (
            [TimeStamp] => 2021-10-25T19:00:00
            [WeatherId] => 103
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,69
            [IsConsumptionRecommended] => 
        )

    [20] => Array
        (
            [TimeStamp] => 2021-10-25T20:00:00
            [WeatherId] => 103
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,65
            [IsConsumptionRecommended] => 
        )

    [21] => Array
        (
            [TimeStamp] => 2021-10-25T21:00:00
            [WeatherId] => 103
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,69
            [IsConsumptionRecommended] => 
        )

    [22] => Array
        (
            [TimeStamp] => 2021-10-25T22:00:00
            [WeatherId] => 103
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,74
            [IsConsumptionRecommended] => 
        )

    [23] => Array
        (
            [TimeStamp] => 2021-10-25T23:00:00
            [WeatherId] => 103
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,64
            [IsConsumptionRecommended] => 
        )

    [24] => Array
        (
            [TimeStamp] => 2021-10-26T00:00:00
            [WeatherId] => 103
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,55
            [IsConsumptionRecommended] => 
        )

    [25] => Array
        (
            [TimeStamp] => 2021-10-26T01:00:00
            [WeatherId] => 103
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,45
            [IsConsumptionRecommended] => 
        )

    [26] => Array
        (
            [TimeStamp] => 2021-10-26T02:00:00
            [WeatherId] => 103
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,49
            [IsConsumptionRecommended] => 
        )

    [27] => Array
        (
            [TimeStamp] => 2021-10-26T03:00:00
            [WeatherId] => 103
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,46
            [IsConsumptionRecommended] => 
        )

    [28] => Array
        (
            [TimeStamp] => 2021-10-26T04:00:00
            [WeatherId] => 103
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,43
            [IsConsumptionRecommended] => 
        )

    [29] => Array
        (
            [TimeStamp] => 2021-10-26T05:00:00
            [WeatherId] => 103
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,45
            [IsConsumptionRecommended] => 
        )

    [30] => Array
        (
            [TimeStamp] => 2021-10-26T06:00:00
            [WeatherId] => 103
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,5
            [IsConsumptionRecommended] => 
        )

    [31] => Array
        (
            [TimeStamp] => 2021-10-26T07:00:00
            [WeatherId] => 103
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,62
            [IsConsumptionRecommended] => 
        )

    [32] => Array
        (
            [TimeStamp] => 2021-10-26T08:00:00
            [WeatherId] => 103
            [PvMeanPower] => 0,17
            [PvEnergy] => 614165.265
            [ConsumptionForecast] => 0,65
            [IsConsumptionRecommended] => 
        )

    [33] => Array
        (
            [TimeStamp] => 2021-10-26T09:00:00
            [WeatherId] => 3
            [PvMeanPower] => 0,48
            [PvEnergy] => 1722750.2999999998
            [ConsumptionForecast] => 0,63
            [IsConsumptionRecommended] => 
        )

    [34] => Array
        (
            [TimeStamp] => 2021-10-26T10:00:00
            [WeatherId] => 3
            [PvMeanPower] => 0,97
            [PvEnergy] => 3498055.74
            [ConsumptionForecast] => 0,59
            [IsConsumptionRecommended] => 
        )

    [35] => Array
        (
            [TimeStamp] => 2021-10-26T11:00:00
            [WeatherId] => 3
            [PvMeanPower] => 1,69
            [PvEnergy] => 6070497.3
            [ConsumptionForecast] => 0,56
            [IsConsumptionRecommended] => 1
        )

    [36] => Array
        (
            [TimeStamp] => 2021-10-26T12:00:00
            [WeatherId] => 3
            [PvMeanPower] => 2,6
            [PvEnergy] => 9366891.2999999989
            [ConsumptionForecast] => 0,55
            [IsConsumptionRecommended] => 1
        )

    [37] => Array
        (
            [TimeStamp] => 2021-10-26T13:00:00
            [WeatherId] => 3
            [PvMeanPower] => 3,29
            [PvEnergy] => 11827863.9
            [ConsumptionForecast] => 1,12
            [IsConsumptionRecommended] => 1
        )

    [38] => Array
        (
            [TimeStamp] => 2021-10-26T14:00:00
            [WeatherId] => 3
            [PvMeanPower] => 3,4
            [PvEnergy] => 12239147.7
            [ConsumptionForecast] => 0,65
            [IsConsumptionRecommended] => 1
        )

    [39] => Array
        (
            [TimeStamp] => 2021-10-26T15:00:00
            [WeatherId] => 3
            [PvMeanPower] => 3,08
            [PvEnergy] => 11105310.6
            [ConsumptionForecast] => 0,62
            [IsConsumptionRecommended] => 1
        )

    [40] => Array
        (
            [TimeStamp] => 2021-10-26T16:00:00
            [WeatherId] => 3
            [PvMeanPower] => 2,5
            [PvEnergy] => 8988497.1
            [ConsumptionForecast] => 0,57
            [IsConsumptionRecommended] => 1
        )

    [41] => Array
        (
            [TimeStamp] => 2021-10-26T17:00:00
            [WeatherId] => 3
            [PvMeanPower] => 1,36
            [PvEnergy] => 4888557.54
            [ConsumptionForecast] => 0,55
            [IsConsumptionRecommended] => 
        )

    [42] => Array
        (
            [TimeStamp] => 2021-10-26T18:00:00
            [WeatherId] => 2
            [PvMeanPower] => 0,03
            [PvEnergy] => 111437.58600000001
            [ConsumptionForecast] => 0,6
            [IsConsumptionRecommended] => 
        )

    [43] => Array
        (
            [TimeStamp] => 2021-10-26T19:00:00
            [WeatherId] => 102
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,67
            [IsConsumptionRecommended] => 
        )

    [44] => Array
        (
            [TimeStamp] => 2021-10-26T20:00:00
            [WeatherId] => 102
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,84
            [IsConsumptionRecommended] => 
        )

    [45] => Array
        (
            [TimeStamp] => 2021-10-26T21:00:00
            [WeatherId] => 102
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,82
            [IsConsumptionRecommended] => 
        )

    [46] => Array
        (
            [TimeStamp] => 2021-10-26T22:00:00
            [WeatherId] => 102
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,86
            [IsConsumptionRecommended] => 
        )

    [47] => Array
        (
            [TimeStamp] => 2021-10-26T23:00:00
            [WeatherId] => 102
            [PvMeanPower] => 0
            [PvEnergy] => 0
            [ConsumptionForecast] => 0,67
            [IsConsumptionRecommended] => 
        )

)

Ich werte nur einige Forecast Daten aus, da ist es mir noch nicht aufgefallen.

Burkhard

Weiß ich nicht, ist das aus dem Script? Ich meine aber den SMA Home Manager2 !?

<?php 

if ($_IPS["SENDER"] == "RegisterVariable")                               // über Register Var ausgeführt 
{ 

    
    $Data  = RegVar_GetBuffer($_IPS["INSTANCE"]);                 // im Puffer der Instanz vorhandene Daten in $data kopieren 
    $Data .= $_IPS["VALUE"];                                                        // neu empfangene Daten an $data anhängen 
    $CRLF  = ",\n"; 
    $HexData = bin2hex($Data); 
    SetValue(27718 /*[Energie Zähler\SMA Home Manager\txt]*/, substr($HexData,417, 16 )); 

    $HexData1=((float)hexdec(substr($HexData,64, 8 ))/10);
    
    if ($HexData1 < 100000)
{
    
    SetValue(31366/*[Energie Zähler\SMA Home Manager\Bezug - Summe]*/,(float)hexdec(substr($HexData,64, 8 ))/10); 


    SetValue(27370/*[Energie Zähler\SMA Home Manager\Einspeisung - Summe]*/,(float)hexdec(substr($HexData,104, 8 ))/10); 

    SetValue(33116/*[Energie Zähler\SMA Home Manager\Bezug - L1]*/,(float)hexdec(substr($HexData,336, 8 ))/10); 
    SetValue(13975/*[Energie Zähler\SMA Home Manager\Bezug - L2]*/,(float)hexdec(substr($HexData,624, 8 ))/10); 
    SetValue(59784 /*[Energie Zähler\SMA Home Manager\Bezug - L3]*/,(float)hexdec(substr($HexData,912, 8 ))/10); 
    SetValue(55956 /*[Energie Zähler\SMA Home Manager\Einspeisung - L1]*/,(float)hexdec(substr($HexData,376, 8 ))/10); 
    SetValue(10794/*[Energie Zähler\SMA Home Manager\Einspeisung - L2]*/,(float)hexdec(substr($HexData,664, 8 ))/10); 
    SetValue(57682/*[Energie Zähler\SMA Home Manager\Einspeisung - L3]*/,(float)hexdec(substr($HexData,952, 8 ))/10); 


    SetValue(58491 /*[Energie Zähler\SMA Home Manager\Bezogene Energie]*/,(float)hexdec(substr($HexData,80, 16 ))/3600000); 
    SetValue(44790/*[Energie Zähler\SMA Home Manager\Eingespeiste Energie]*/,(float)hexdec(substr($HexData,120, 16 ))/3600000); 
}
} 
?>

Das ist aus dem von dir verlinkten Skript. Das liest die Prognose Daten aus dem Sunny Portal.

Dann meinst du wohl ein anderes Skript, dass die Daten aus dem HM2 ausliest. Da benutze ich mein eigenes Skript:

Burkhard

Ja ich meine das die Daten aus HM2 ausliest.

Selbe Problem hier… Home Manager 2.

Alle 30 sec. ca ein Schluckauf und Millionen kwh Verbrauch ^^

Dieses Script.

<?

if ($_IPS["SENDER"] == "RegisterVariable")                               // über Register Var ausgeführt
{
    $Data  = RegVar_GetBuffer($_IPS["INSTANCE"]);                 // im Puffer der Instanz vorhandene Daten in $data kopieren
    $Data .= $_IPS["VALUE"];                                                        // neu empfangene Daten an $data anhängen
    $CRLF  = ",\n";
    $HexData = bin2hex($Data);
//    SetValue(23031, substr($HexData,417, 16 ));

    SetValue(20236,(float)hexdec(substr($HexData,64, 8 ))/10);
    SetValue(55279,(float)hexdec(substr($HexData,104, 8 ))/10);

   // SetValue(57365,(float)hexdec(substr($HexData,320, 8 ))/10);
  //  SetValue(38361,(float)hexdec(substr($HexData,608, 8 ))/10-(float)hexdec(substr($HexData,648, 8 ))/10);
  //  SetValue(22899,(float)hexdec(substr($HexData,896, 8 ))/10);
    //SetValue(12345,(float)hexdec(substr($HexData,5347080, 36000 ))/1000);
	
	
	SetValue(14431,(float)hexdec(substr($HexData,80, 16 ))/3600000);
    SetValue(30067,(float)hexdec(substr($HexData,120, 16 ))/3600000);
	
}
?>

Auch bei mir das gleiche Problem nach dem Update des SHM2.0. Zeitweise kommen auch für alle ausgelesenen Werte „Nullen“ an.
Im PV Forum ist das Thema auch schon aufgefallen Sunny Home Manager Version 2.07.5.R
Evtl gibt es da ja noch irgendwelche Infos die uns helfen…

Grüße
LCNRookie

Da schreibt im SMA Forum einer etwas von einem Workaround Script.
Ich bin kein Coder… kann man das bei unserem Script integrieren ?

(function(i) {

if(i > 100000 ) return ;

return parseFloat(i);

})(input)

In meinem Skript oben habe ich auch bereits einen Workaround drin.
Ich habe es so gelöst, wenn für die Variable (Energie Zähler\SMA Home Manager\Bezug - Summe) der Wert über 100.000 steigt, alle anderen Variablen auch nicht geschrieben werden.

Ich benötige nur noch Hilfe, wie man aus dem Archiv(DB), also in den CSV Dateien,die Peaks rauslöschen kann. Am besten mit Notepadd++.

richimaint

Könnt ihr bestätigen dass bei euch auch Nullwerte kommen? Wenn ich im Debug der RegVar schaue ist das Telegramm nicht 608 Bytes lang sondern 58 Bytes. Wäre es möglich im Skript auf die korrekte Länge von 608 Bytes zu prüfen? Das würde zwar das eigentliche Problem nicht lösen aber zumindest die Nullwerte erschlagen.

Grüße
LCNRookie

Vielleicht hilft dir mein kleines Bereinigungsskript weiter:

        $test = true;

        define('ID_ARCHIVE_HANDLER', IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0]);

        //Variablen mit zu prüfenden Maximalwerten
        define('VARIABLES', [
        22262 => 13*1000
        , 45345 => 400*1000*1000
        , 35932 => 400*1000*1000
        ]);

        $start_time = strtotime('2019-01-01 00:00:00');
        $end_time = time();

        foreach (VARIABLES as $variable_id => $Grenzwert ) {
            $values = AC_GetLoggedValues(ID_ARCHIVE_HANDLER, $variable_id, $start_time, $end_time, 0);
            echo PHP_EOL . sprintf('GetLoggedValues: Variable: %s, Grenzwert: %s', $variable_id, $Grenzwert) . PHP_EOL;

            $reaggregate = false;
            foreach ($values as $i => $iValue) {
                if ($iValue['Value'] >= $Grenzwert) {
                    echo sprintf('Key: %s: TimeStamp: %s, Value: %s', $i, date('Y-m-d G:i:s', $values[$i]['TimeStamp']), $values[$i]['Value']) . PHP_EOL;
                    if (!$test){
                        AC_DeleteVariableData(ID_ARCHIVE_HANDLER, $variable_id, $values[$i]['TimeStamp'], $values[$i]['TimeStamp']);
                        $reaggregate = true;
                    }
                }
            }

            if ($reaggregate) {
                AC_ReAggregateVariable(ID_ARCHIVE_HANDLER, $variable_id);
            }
        }

1 „Gefällt mir“

Habs mal ausprobiert. Danke !
Kann das Script diese denn auch direkt löschen oder wie mache ich das nun ?
Angezeigt werden Sie mir in der Ausgabe, sind im Archivhandler aber noch da.

image

Test auf false setzen!

Da warst du schneller :stuck_out_tongue: Habs beim Scrollen eben noch gesehen Danke !
Super Script

Ich musste im @bumaas Script, die Endzeit „$end_time = time()“ auf eine 1/4h
„$end_time = ($start_time + 900)“ einkürzen.
Ich hatte zu viele Werte geloggt und somit ist glaub das Script bzw. IPS überfordert und stürzt ab.
Ist natürlich mühsam das jetzt zu bereinigen.
richimaint

Guten Morgen,
ich bin zwar lange mit ipsymcon am arbeiten habe aber die funktionsweise der scripte hier nicht verstanden.
Ich habe einen Multicast socket angelegt und das script hier erstellt. Wenn das script manuell ausgeführt wird kommen Daten welche meiner Meinung nach auch stimmen.
Wenn ich das script in Webfront aufrufe kommen nur Fehler aber keine Daten.
Was mache ich Falsch. Bzw. wie komme ich aus einem Script zu Werten die Angezeigt werden können. Danke

Dieses Script hier:

<?PHP
declare(strict_types=1);

// OBIS Parameter
$list_sum   = []; //Summen
$list_sum['00010400'] = ['OBIS' => '0140', 'divisor' => 10, 'name' => 'Real Power +'];
$list_sum['00010800'] = ['OBIS' => '0180', 'divisor' => 3600000, 'name' => 'Counter Real Power +'];
$list_sum['00020400'] = ['OBIS' => '0240', 'divisor' => 10, 'name' => 'Real Power -'];
$list_sum['00020800'] = ['OBIS' => '0280', 'divisor' => 3600000, 'name' => 'Counter Real Power -'];
$list_sum['00030400'] = ['OBIS' => '0340', 'divisor' => 10, 'name' => 'Reactive Power +'];
$list_sum['00030800'] = ['OBIS' => '0380', 'divisor' => 3600000, 'name' => 'Counter ReReactive Power +'];
$list_sum['00040400'] = ['OBIS' => '0440', 'divisor' => 10, 'name' => 'Reactive Power -'];
$list_sum['00040800'] = ['OBIS' => '0480', 'divisor' => 3600000, 'name' => 'Counter ReReactive Power -'];
$list_sum['00090400'] = ['OBIS' => '0940', 'divisor' => 10, 'name' => 'Apparent Power +'];
$list_sum['00090800'] = ['OBIS' => '0980', 'divisor' => 3600000, 'name' => 'Counter Apparent Power +'];
$list_sum['000a0400'] = ['OBIS' => '1040', 'divisor' => 10, 'name' => 'Apparent Power -'];
$list_sum['000a0800'] = ['OBIS' => '1080', 'divisor' => 3600000, 'name' => 'Counter Apparent Power -'];
$list_sum['000d0400'] = ['OBIS' => '1340', 'divisor' => 1000, 'name' => 'Power Faktor'];
$list_sum['000e0400'] = ['OBIS' => '1440', 'divisor' => 1000, 'name' => 'Network Frequency'];

$list_l1   = []; //Phase 1
$list_l1['00150400'] = ['OBIS' => '2140', 'divisor' => 10, 'name' => 'Real Power +'];
$list_l1['00150800'] = ['OBIS' => '2180', 'divisor' => 3600000, 'name' => 'Counter Real Power +'];
$list_l1['00160400'] = ['OBIS' => '2240', 'divisor' => 10, 'name' => 'Real Power -'];
$list_l1['00160800'] = ['OBIS' => '2280', 'divisor' => 3600000, 'name' => 'Counter Real Power -'];
$list_l1['00170400'] = ['OBIS' => '2340', 'divisor' => 10, 'name' => 'Reactive Power +'];
$list_l1['00170800'] = ['OBIS' => '2380', 'divisor' => 3600000, 'name' => 'Counter ReReactive Power +'];
$list_l1['00180400'] = ['OBIS' => '2440', 'divisor' => 10, 'name' => 'Reactive Power -'];
$list_l1['00180800'] = ['OBIS' => '2480', 'divisor' => 3600000, 'name' => 'Counter ReReactive Power -'];
$list_l1['001d0400'] = ['OBIS' => '2940', 'divisor' => 10, 'name' => 'Apparent Power +'];
$list_l1['001d0800'] = ['OBIS' => '2980', 'divisor' => 3600000, 'name' => 'Counter Apparent Power +'];
$list_l1['001e0400'] = ['OBIS' => '3040', 'divisor' => 10, 'name' => 'Apparent Power -'];
$list_l1['001e0800'] = ['OBIS' => '3080', 'divisor' => 3600000, 'name' => 'Counter Apparent Power -'];
$list_l1['001f0400'] = ['OBIS' => '3140', 'divisor' => 1, 'name' => 'Power'];
$list_l1['00200400'] = ['OBIS' => '3240', 'divisor' => 1000, 'name' => 'Voltage'];
$list_l1['00210400'] = ['OBIS' => '3340', 'divisor' => 1000, 'name' => 'Network Frequency'];

$list_l2   = []; //Phase 2
$list_l2['00290400'] = ['OBIS' => '4140', 'divisor' => 10, 'name' => 'Real Power +'];
$list_l2['00290800'] = ['OBIS' => '4180', 'divisor' => 3600000, 'name' => 'Counter Real Power +'];
$list_l2['002a0400'] = ['OBIS' => '4240', 'divisor' => 10, 'name' => 'Real Power -'];
$list_l2['002a0800'] = ['OBIS' => '4280', 'divisor' => 3600000, 'name' => 'Counter Real Power -'];
$list_l2['002b0400'] = ['OBIS' => '4340', 'divisor' => 10, 'name' => 'Reactive Power +'];
$list_l2['002b0800'] = ['OBIS' => '4380', 'divisor' => 3600000, 'name' => 'Counter ReReactive Power +'];
$list_l2['002c0400'] = ['OBIS' => '4440', 'divisor' => 10, 'name' => 'Reactive Power -'];
$list_l2['002c0800'] = ['OBIS' => '4480', 'divisor' => 3600000, 'name' => 'Counter ReReactive Power -'];
$list_l2['00310400'] = ['OBIS' => '4940', 'divisor' => 10, 'name' => 'Apparent Power +'];
$list_l2['00310800'] = ['OBIS' => '4980', 'divisor' => 3600000, 'name' => 'Counter Apparent Power +'];
$list_l2['00320400'] = ['OBIS' => '5040', 'divisor' => 10, 'name' => 'Apparent Power -'];
$list_l2['00320800'] = ['OBIS' => '5080', 'divisor' => 3600000, 'name' => 'Counter Apparent Power -'];
$list_l2['00330400'] = ['OBIS' => '5140', 'divisor' => 1, 'name' => 'Power'];
$list_l2['00340400'] = ['OBIS' => '5240', 'divisor' => 1000, 'name' => 'Voltage'];
$list_l2['00350400'] = ['OBIS' => '5340', 'divisor' => 1000, 'name' => 'Network Frequency'];

$list_l3   = []; //Phase 3
$list_l3['003d0400'] = ['OBIS' => '4140', 'divisor' => 10, 'name' => 'Real Power +'];
$list_l3['003d0800'] = ['OBIS' => '4180', 'divisor' => 3600000, 'name' => 'Counter Real Power +'];
$list_l3['003e0400'] = ['OBIS' => '4240', 'divisor' => 10, 'name' => 'Real Power -'];
$list_l3['003e0800'] = ['OBIS' => '4280', 'divisor' => 3600000, 'name' => 'Counter Real Power -'];
$list_l3['003f0400'] = ['OBIS' => '4340', 'divisor' => 10, 'name' => 'Reactive Power +'];
$list_l3['003f0800'] = ['OBIS' => '4380', 'divisor' => 3600000, 'name' => 'Counter ReReactive Power +'];
$list_l3['00400400'] = ['OBIS' => '4440', 'divisor' => 10, 'name' => 'Reactive Power -'];
$list_l3['00400800'] = ['OBIS' => '4480', 'divisor' => 3600000, 'name' => 'Counter ReReactive Power -'];
$list_l3['00450400'] = ['OBIS' => '4940', 'divisor' => 10, 'name' => 'Apparent Power +'];
$list_l3['00450800'] = ['OBIS' => '4980', 'divisor' => 3600000, 'name' => 'Counter Apparent Power +'];
$list_l3['00460400'] = ['OBIS' => '5040', 'divisor' => 10, 'name' => 'Apparent Power -'];
$list_l3['00460800'] = ['OBIS' => '5080', 'divisor' => 3600000, 'name' => 'Counter Apparent Power -'];
$list_l3['00470400'] = ['OBIS' => '5140', 'divisor' => 1, 'name' => 'Power'];
$list_l3['00480400'] = ['OBIS' => '5240', 'divisor' => 1000, 'name' => 'Voltage'];
$list_l3['00490400'] = ['OBIS' => '5340', 'divisor' => 1000, 'name' => 'Network Frequency'];

if ($_IPS['SENDER'] === 'Execute'){
    //zum Testen
    $hraw = '534d4100000402a000000001024c001060690174b33a68d524a6a271000104000000000000010800000000005628897000020400000075be00020800000000037a39805000030400000000000003080000000000657b04c0000404000000093d0004080000000000436dbad00009040000000000000908000000000065e92c48000a04000000761b000a08000000000388d3e3f8000d0400000003e5000e04000000c359001504000000000000150800000000000deb6e9800160400000029d8001608000000000145ab1fd00017040000000000001708000000000020aa986000180400000003c700180800000000001e3635d0001d040000000000001d08000000000017db2560001e040000002a04001e0800000000014b33af58001f0400000012710020040000037ecc00210400000003e4002904000000000000290800000000003c4ae980002a040000002524002a0800000000010e795978002b040000000000002b0800000000002cedd9c0002c04000000023f002c08000000000012d341d800310400000000000031080000000000407691a80032040000002535003208000000000115096da0003304000000109a0034040000037fbc00350400000003e6003d040000000000003d0800000000001747a358003e0400000026c3003e080000000001316a7908003f040000000000003f0800000000002142e340004004000000033700400800000000001bc49530004504000000000000450800000000001fa4e6a000460400000026e5004608000000000136d71f6800470400000011340048040000037b7200490400000003e5900000000203055200000000';
} else {
    // Prepare data
    $hraw = bin2hex(RegVar_GetBuffer($_IPS['INSTANCE']) . $_IPS['VALUE']); // im Puffer der Instanz vorhandene Daten holen und um die letzten Werte ergänzen
}

//Zählerkennung
$offset = 0;
$len = 4;
//echo hexToStr(substr($hraw, $offset * 2, $len * 2)) . PHP_EOL;

//ProtokollID
$offset = 16;
$len = 2;
//echo (substr($hraw, $offset * 2, $len * 2)) . PHP_EOL;

//gruppe
$offset = 8;
$len = 2;
//echo (substr($hraw, $offset * 2, $len * 2)) . PHP_EOL;

//zaehlerkennung
$offset = 18;
$len = 6;
//echo (substr($hraw, $offset * 2, $len * 2)) . PHP_EOL;

//Messzeitpunkt
$offset = 24;
$len = 4;
//echo (substr($hraw, $offset * 2, $len * 2)) . PHP_EOL;

$offset += $len;
$finished = false;

while (!$finished){

    //obis Id
    $len = 4;
    $id = substr($hraw, $offset * 2, $len * 2);
    if ($id === '00000000'){
        $finished = true;
        continue;
    }
    $offset += $len;


    //obis Messwert
    $len = (int) substr($id, 2 * 2, 2); //die Länge entspricht der Messart (Byte 2)

    if (isset($list_sum[$id])){
        $value = substr($hraw, $offset * 2, $len * 2);
        $res_sum[$list_sum[$id]['name']] = base_convert(substr($hraw, $offset * 2, $len * 2), 16, 10) / $list_sum[$id]['divisor'];
    } elseif (isset($list_l1[$id])) {
        $value = substr($hraw, $offset * 2, $len * 2);
        $res_l1[$list_l1[$id]['name']] = base_convert(substr($hraw, $offset * 2, $len * 2), 16, 10) / $list_l1[$id]['divisor'];
    } elseif (isset($list_l2[$id])) {
        $value = substr($hraw, $offset * 2, $len * 2);
        $res_l2[$list_l2[$id]['name']] = base_convert(substr($hraw, $offset * 2, $len * 2), 16, 10) / $list_l2[$id]['divisor'];
    } elseif (isset($list_l3[$id])) {
        $value = substr($hraw, $offset * 2, $len * 2);
        $res_l3[$list_l3[$id]['name']] = base_convert(substr($hraw, $offset * 2, $len * 2), 16, 10) / $list_l3[$id]['divisor'];
    } elseif($id = '90000000') {
        $len = 4;
        $value = substr($hraw, $offset * 2, $len * 2);
        //echo sprintf('%s Softwareversion: %s', $id, $value) . PHP_EOL;
    } else {
        trigger_error ("$id unbekannt");
        $finished = true;
    }
    $offset += $len;

}

// zum Testen
if ($_IPS['SENDER'] === 'Execute'){

    print_r($res_sum);
    print_r($res_l1);
    print_r($res_l2);
    print_r($res_l3);
    return;
}

SetChangedValueFloat(20807, $res_l1['Real Power +']); //Bezug L1
SetChangedValueFloat(35978, $res_l2['Real Power +']); //Bezug L2
SetChangedValueFloat(49204, $res_l1['Real Power +']); //Bezug L3
SetChangedValueFloat(24942, $res_sum['Real Power +']); //Bezug gesamt
SetChangedValueFloat(43989, $res_sum['Counter Real Power +']); //Bezug Zähler

SetChangedValueFloat(44961, $res_l1['Real Power -']); //Einspeisung L1
SetChangedValueFloat(58571, $res_l2['Real Power -']); //Einspeisung L2
SetChangedValueFloat(31960, $res_l3['Real Power -']); //Einspeisung L3
SetChangedValueFloat(35568, $res_sum['Real Power -']); //Einspeisung gesamt
SetChangedValueFloat(47491, $res_sum['Counter Real Power -']); //Einspeisung Zähler

SetChangedValueFloat(32048, max(GetValueFloat(21200) - $res_sum['Real Power -'], 0)); //Eigenversorgung
SetChangedValueFloat(34179, max(GetValueFloat(21200) + $res_sum['Real Power +'] - $res_sum['Real Power -'], 0)); //Verbrauch

function SetChangedValueFloat(int $id, float $value){
    if (GetValueFloat($id) !== $value){
        SetValueFloat($id, $value);
    }
}


function hexToStr($hex){
    $string='';
    for ($i=0; $i < strlen($hex)-1; $i+=2){
        $string .= chr(hexdec($hex[$i].$hex[$i+1]));
    }
    return $string;
}

Ich bin länger mit IP Symcon beschäftigt habe mich aber bzgl php scripte nie getraut. Jetzt habe ich ein Script von hier übernommen und es manuel ausgeführt. Hierbei kommen Daten welche stimmen auch an. Wenn ich das script in Webfront aufrufe passiert entweder nichts oder es kommt zu mehreren fehlermeldungen.
Wie kann ich die Daten/Werte aus dem script mir im Webfront anzeigen lassen.
Danke

Ich fürchte mit einer so pauschalen Fragestellung wirst du wenig Hilfe bekommen (können).

Was ist denn das für ein Skript, was macht es (welchen Output generiert es)?

Es macht schon einen Unterschied, ob ein Skript einfach Text auf dem Bildschirm ausgibt, eine Variable beschreibt, irgendwas im Hintergrund tut, aber nichts ausgibt…

Wenn du das Skript im WebFront verlinkst, kannst du es dort ausführen. Beschreibt es z.B. irgendwelche Variablen, müsstest du diese ebenfalls verlinken, um ihren Inhalt im WebFront zu sehen.

Gruß
Slummi

<?PHP
declare(strict_types=1);

// OBIS Parameter
$list_sum   = []; //Summen
$list_sum['00010400'] = ['OBIS' => '0140', 'divisor' => 10, 'name' => 'Real Power +'];
$list_sum['00010800'] = ['OBIS' => '0180', 'divisor' => 3600000, 'name' => 'Counter Real Power +'];
$list_sum['00020400'] = ['OBIS' => '0240', 'divisor' => 10, 'name' => 'Real Power -'];
$list_sum['00020800'] = ['OBIS' => '0280', 'divisor' => 3600000, 'name' => 'Counter Real Power -'];
$list_sum['00030400'] = ['OBIS' => '0340', 'divisor' => 10, 'name' => 'Reactive Power +'];
$list_sum['00030800'] = ['OBIS' => '0380', 'divisor' => 3600000, 'name' => 'Counter ReReactive Power +'];
$list_sum['00040400'] = ['OBIS' => '0440', 'divisor' => 10, 'name' => 'Reactive Power -'];
$list_sum['00040800'] = ['OBIS' => '0480', 'divisor' => 3600000, 'name' => 'Counter ReReactive Power -'];
$list_sum['00090400'] = ['OBIS' => '0940', 'divisor' => 10, 'name' => 'Apparent Power +'];
$list_sum['00090800'] = ['OBIS' => '0980', 'divisor' => 3600000, 'name' => 'Counter Apparent Power +'];
$list_sum['000a0400'] = ['OBIS' => '1040', 'divisor' => 10, 'name' => 'Apparent Power -'];
$list_sum['000a0800'] = ['OBIS' => '1080', 'divisor' => 3600000, 'name' => 'Counter Apparent Power -'];
$list_sum['000d0400'] = ['OBIS' => '1340', 'divisor' => 1000, 'name' => 'Power Faktor'];
$list_sum['000e0400'] = ['OBIS' => '1440', 'divisor' => 1000, 'name' => 'Network Frequency'];

$list_l1   = []; //Phase 1
$list_l1['00150400'] = ['OBIS' => '2140', 'divisor' => 10, 'name' => 'Real Power +'];
$list_l1['00150800'] = ['OBIS' => '2180', 'divisor' => 3600000, 'name' => 'Counter Real Power +'];
$list_l1['00160400'] = ['OBIS' => '2240', 'divisor' => 10, 'name' => 'Real Power -'];
$list_l1['00160800'] = ['OBIS' => '2280', 'divisor' => 3600000, 'name' => 'Counter Real Power -'];
$list_l1['00170400'] = ['OBIS' => '2340', 'divisor' => 10, 'name' => 'Reactive Power +'];
$list_l1['00170800'] = ['OBIS' => '2380', 'divisor' => 3600000, 'name' => 'Counter ReReactive Power +'];
$list_l1['00180400'] = ['OBIS' => '2440', 'divisor' => 10, 'name' => 'Reactive Power -'];
$list_l1['00180800'] = ['OBIS' => '2480', 'divisor' => 3600000, 'name' => 'Counter ReReactive Power -'];
$list_l1['001d0400'] = ['OBIS' => '2940', 'divisor' => 10, 'name' => 'Apparent Power +'];
$list_l1['001d0800'] = ['OBIS' => '2980', 'divisor' => 3600000, 'name' => 'Counter Apparent Power +'];
$list_l1['001e0400'] = ['OBIS' => '3040', 'divisor' => 10, 'name' => 'Apparent Power -'];
$list_l1['001e0800'] = ['OBIS' => '3080', 'divisor' => 3600000, 'name' => 'Counter Apparent Power -'];
$list_l1['001f0400'] = ['OBIS' => '3140', 'divisor' => 1, 'name' => 'Power'];
$list_l1['00200400'] = ['OBIS' => '3240', 'divisor' => 1000, 'name' => 'Voltage'];
$list_l1['00210400'] = ['OBIS' => '3340', 'divisor' => 1000, 'name' => 'Network Frequency'];

$list_l2   = []; //Phase 2
$list_l2['00290400'] = ['OBIS' => '4140', 'divisor' => 10, 'name' => 'Real Power +'];
$list_l2['00290800'] = ['OBIS' => '4180', 'divisor' => 3600000, 'name' => 'Counter Real Power +'];
$list_l2['002a0400'] = ['OBIS' => '4240', 'divisor' => 10, 'name' => 'Real Power -'];
$list_l2['002a0800'] = ['OBIS' => '4280', 'divisor' => 3600000, 'name' => 'Counter Real Power -'];
$list_l2['002b0400'] = ['OBIS' => '4340', 'divisor' => 10, 'name' => 'Reactive Power +'];
$list_l2['002b0800'] = ['OBIS' => '4380', 'divisor' => 3600000, 'name' => 'Counter ReReactive Power +'];
$list_l2['002c0400'] = ['OBIS' => '4440', 'divisor' => 10, 'name' => 'Reactive Power -'];
$list_l2['002c0800'] = ['OBIS' => '4480', 'divisor' => 3600000, 'name' => 'Counter ReReactive Power -'];
$list_l2['00310400'] = ['OBIS' => '4940', 'divisor' => 10, 'name' => 'Apparent Power +'];
$list_l2['00310800'] = ['OBIS' => '4980', 'divisor' => 3600000, 'name' => 'Counter Apparent Power +'];
$list_l2['00320400'] = ['OBIS' => '5040', 'divisor' => 10, 'name' => 'Apparent Power -'];
$list_l2['00320800'] = ['OBIS' => '5080', 'divisor' => 3600000, 'name' => 'Counter Apparent Power -'];
$list_l2['00330400'] = ['OBIS' => '5140', 'divisor' => 1, 'name' => 'Power'];
$list_l2['00340400'] = ['OBIS' => '5240', 'divisor' => 1000, 'name' => 'Voltage'];
$list_l2['00350400'] = ['OBIS' => '5340', 'divisor' => 1000, 'name' => 'Network Frequency'];

$list_l3   = []; //Phase 3
$list_l3['003d0400'] = ['OBIS' => '4140', 'divisor' => 10, 'name' => 'Real Power +'];
$list_l3['003d0800'] = ['OBIS' => '4180', 'divisor' => 3600000, 'name' => 'Counter Real Power +'];
$list_l3['003e0400'] = ['OBIS' => '4240', 'divisor' => 10, 'name' => 'Real Power -'];
$list_l3['003e0800'] = ['OBIS' => '4280', 'divisor' => 3600000, 'name' => 'Counter Real Power -'];
$list_l3['003f0400'] = ['OBIS' => '4340', 'divisor' => 10, 'name' => 'Reactive Power +'];
$list_l3['003f0800'] = ['OBIS' => '4380', 'divisor' => 3600000, 'name' => 'Counter ReReactive Power +'];
$list_l3['00400400'] = ['OBIS' => '4440', 'divisor' => 10, 'name' => 'Reactive Power -'];
$list_l3['00400800'] = ['OBIS' => '4480', 'divisor' => 3600000, 'name' => 'Counter ReReactive Power -'];
$list_l3['00450400'] = ['OBIS' => '4940', 'divisor' => 10, 'name' => 'Apparent Power +'];
$list_l3['00450800'] = ['OBIS' => '4980', 'divisor' => 3600000, 'name' => 'Counter Apparent Power +'];
$list_l3['00460400'] = ['OBIS' => '5040', 'divisor' => 10, 'name' => 'Apparent Power -'];
$list_l3['00460800'] = ['OBIS' => '5080', 'divisor' => 3600000, 'name' => 'Counter Apparent Power -'];
$list_l3['00470400'] = ['OBIS' => '5140', 'divisor' => 1, 'name' => 'Power'];
$list_l3['00480400'] = ['OBIS' => '5240', 'divisor' => 1000, 'name' => 'Voltage'];
$list_l3['00490400'] = ['OBIS' => '5340', 'divisor' => 1000, 'name' => 'Network Frequency'];

if ($_IPS['SENDER'] === 'Execute'){
    //zum Testen
    $hraw = '534d4100000402a000000001024c001060690174b33a68d524a6a271000104000000000000010800000000005628897000020400000075be00020800000000037a39805000030400000000000003080000000000657b04c0000404000000093d0004080000000000436dbad00009040000000000000908000000000065e92c48000a04000000761b000a08000000000388d3e3f8000d0400000003e5000e04000000c359001504000000000000150800000000000deb6e9800160400000029d8001608000000000145ab1fd00017040000000000001708000000000020aa986000180400000003c700180800000000001e3635d0001d040000000000001d08000000000017db2560001e040000002a04001e0800000000014b33af58001f0400000012710020040000037ecc00210400000003e4002904000000000000290800000000003c4ae980002a040000002524002a0800000000010e795978002b040000000000002b0800000000002cedd9c0002c04000000023f002c08000000000012d341d800310400000000000031080000000000407691a80032040000002535003208000000000115096da0003304000000109a0034040000037fbc00350400000003e6003d040000000000003d0800000000001747a358003e0400000026c3003e080000000001316a7908003f040000000000003f0800000000002142e340004004000000033700400800000000001bc49530004504000000000000450800000000001fa4e6a000460400000026e5004608000000000136d71f6800470400000011340048040000037b7200490400000003e5900000000203055200000000';
} else {
    // Prepare data
    $hraw = bin2hex(RegVar_GetBuffer($_IPS['INSTANCE']) . $_IPS['VALUE']); // im Puffer der Instanz vorhandene Daten holen und um die letzten Werte ergänzen
}

//Zählerkennung
$offset = 0;
$len = 4;
//echo hexToStr(substr($hraw, $offset * 2, $len * 2)) . PHP_EOL;

//ProtokollID
$offset = 16;
$len = 2;
//echo (substr($hraw, $offset * 2, $len * 2)) . PHP_EOL;

//gruppe
$offset = 8;
$len = 2;
//echo (substr($hraw, $offset * 2, $len * 2)) . PHP_EOL;

//zaehlerkennung
$offset = 18;
$len = 6;
//echo (substr($hraw, $offset * 2, $len * 2)) . PHP_EOL;

//Messzeitpunkt
$offset = 24;
$len = 4;
//echo (substr($hraw, $offset * 2, $len * 2)) . PHP_EOL;

$offset += $len;
$finished = false;

while (!$finished){

    //obis Id
    $len = 4;
    $id = substr($hraw, $offset * 2, $len * 2);
    if ($id === '00000000'){
        $finished = true;
        continue;
    }
    $offset += $len;


    //obis Messwert
    $len = (int) substr($id, 2 * 2, 2); //die Länge entspricht der Messart (Byte 2)

    if (isset($list_sum[$id])){
        $value = substr($hraw, $offset * 2, $len * 2);
        $res_sum[$list_sum[$id]['name']] = base_convert(substr($hraw, $offset * 2, $len * 2), 16, 10) / $list_sum[$id]['divisor'];
    } elseif (isset($list_l1[$id])) {
        $value = substr($hraw, $offset * 2, $len * 2);
        $res_l1[$list_l1[$id]['name']] = base_convert(substr($hraw, $offset * 2, $len * 2), 16, 10) / $list_l1[$id]['divisor'];
    } elseif (isset($list_l2[$id])) {
        $value = substr($hraw, $offset * 2, $len * 2);
        $res_l2[$list_l2[$id]['name']] = base_convert(substr($hraw, $offset * 2, $len * 2), 16, 10) / $list_l2[$id]['divisor'];
    } elseif (isset($list_l3[$id])) {
        $value = substr($hraw, $offset * 2, $len * 2);
        $res_l3[$list_l3[$id]['name']] = base_convert(substr($hraw, $offset * 2, $len * 2), 16, 10) / $list_l3[$id]['divisor'];
    } elseif($id = '90000000') {
        $len = 4;
        $value = substr($hraw, $offset * 2, $len * 2);
        //echo sprintf('%s Softwareversion: %s', $id, $value) . PHP_EOL;
    } else {
        trigger_error ("$id unbekannt");
        $finished = true;
    }
    $offset += $len;

}

// zum Testen
if ($_IPS['SENDER'] === 'Execute'){

    print_r($res_sum);
    print_r($res_l1);
    print_r($res_l2);
    print_r($res_l3);
    return;
}

SetChangedValueFloat(20807, $res_l1['Real Power +']); //Bezug L1
SetChangedValueFloat(35978, $res_l2['Real Power +']); //Bezug L2
SetChangedValueFloat(49204, $res_l1['Real Power +']); //Bezug L3
SetChangedValueFloat(24942, $res_sum['Real Power +']); //Bezug gesamt
SetChangedValueFloat(43989, $res_sum['Counter Real Power +']); //Bezug Zähler

SetChangedValueFloat(44961, $res_l1['Real Power -']); //Einspeisung L1
SetChangedValueFloat(58571, $res_l2['Real Power -']); //Einspeisung L2
SetChangedValueFloat(31960, $res_l3['Real Power -']); //Einspeisung L3
SetChangedValueFloat(35568, $res_sum['Real Power -']); //Einspeisung gesamt
SetChangedValueFloat(47491, $res_sum['Counter Real Power -']); //Einspeisung Zähler

SetChangedValueFloat(32048, max(GetValueFloat(21200) - $res_sum['Real Power -'], 0)); //Eigenversorgung
SetChangedValueFloat(34179, max(GetValueFloat(21200) + $res_sum['Real Power +'] - $res_sum['Real Power -'], 0)); //Verbrauch

function SetChangedValueFloat(int $id, float $value){
    if (GetValueFloat($id) !== $value){
        SetValueFloat($id, $value);
    }
}


function hexToStr($hex){
    $string='';
    for ($i=0; $i < strlen($hex)-1; $i+=2){
        $string .= chr(hexdec($hex[$i].$hex[$i+1]));
    }
    return $string;
}

Es liest Daten aus einem SMA Home manager aus. Ich möchte gerne Die Daten die es liefert angezeigt bekommen.

Mhh… Also wenn ich es richtig sehe (bin gerade mobil drin und muss viel scrollen), dann ist das nicht das Skript, sondern die Textausgabe des Skripts (sieht nach dem Output von print_r() aus). Ich sehe zumindest nirgendwo etwas, wo was ausgelesen würde.

Wenn du das im WebFront haben willst, könntest du den Output von print_r() in eine String-Variable (Text- oder HTMLBox) umleiten und diese Variable dann im WebFront einbinden.