
Ich würde die json Daten in eine Array laden und sie dann abarbeiten.
Dazu muss man Regeln und Umwandlungen erstellen.
So wird aus
{"PV1":{"POWER_RATIO":"u3_00000064"},"ENERGY":{ "GU I_HOUSE_POW":"fl_44834CC5","GUI_GRID_POW":"fl_423D EB85","GUI_INVERTER_POWER":"fl_80000000","GUI_BAT_ DATA_POWER":"fl_C47ABAD1","GUI_BAT_DATA_FUEL_CHARG E":"fl_4211745D","STAT_STATE":"u8_12","GUI_BAT_ DAT A_OA_CHARGING":"VARIABLE_NOT_FOUND"},"PM1OBJ1":{"P _TOTAL":"fl_423DEB85"}}
PV1_POWER_RATIO=00000064 ENERGY_GU I_HOUSE_POW=1050.3990478516 ENERGY_GUI_GRID_POW=47.479999542236 ENERGY_GUI_INVERTER_POWER=-0 ENERGY_GUI_BAT_ DATA_POWER=-1002.9190063477 ENERGY_GUI_BAT_DATA_FUEL_CHARG E=36.363636016846 ENERGY_STAT_STATE=12 ENERGY_GUI_BAT_ DAT A_OA_CHARGING=NOT_FOUND PM1OBJ1_P _TOTAL=47.479999542236
Diese Werte kann man jetzt nach Loxone übermitteln.
Keine Ahnung ob die Werte so stimmen, ich lasse einfach von HEX nach Float umwandeln.
Basis-Code der Abfrage sieht dann so aus...
<?php
//Senec to Loxone
function get_req($url)
{
$curl = curl_init($url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
$info = curl_getinfo($ch);
curl_close($ch);
return json_decode($data, true);
}
function hex2float($strHex)
{
$hex = sscanf($strHex, "%02x%02x%02x%02x%02x%02x%02x%02x");
$bin = implode('', array_map('chr', $hex));
$array = unpack("Gnum", $bin);
return $array['num'];
}
$ip='192.168.188.152';
$url = 'http://'.$ip.'/lala.cgi';
$json_arr = get_req($url);
foreach ($json_arr as $number => $number_array)
{
foreach ($number_array as $data => $user_data)
{
if (strpos($user_data, 'fl_') === 0)
{
$user_data_new = substr($user_data, strpos($user_data, '_') + 1);
$float = hex2float($user_data_new);
print $number . '_' . $data . '=' . $float . '<br>';
}
else
{
$user_data_new = substr($user_data, strpos($user_data, '_') + 1);
print $number . '_' . $data . '=' . $user_data_new . '<br>';
}
}
}
Das alles muss natürlich noch mit ein WebUI, der Übermittlung an Loxone oder MQTT oder was auch immer versehen werden, und in einer automatische Abfrage alle x Sekunden.
Das ist ja dann die eigentliche Arbeit.

Du kannst noch folguendes machen...
In der Konsole den Befehl ausführen.
curl http://192.168.188.152/data.json -H "Accept: application/json"
Kommentar