Menü-Icon einer WebFront-Seite dynamisch anpassen

Hallo, gibt es irgendeine Möglichkeit das Menü-Icon einer WebFront-Seite dynamisch anzupassen?

Screenshot 2023-07-10 124503

Das Icon einer Variable ändert sich ja z.B. mit IPS_SetIcon($varAktuell, "Tree");

$wfid = 12926; // Konfigurator des Webfronts
$items = IPS_GetProperty($wfid, 'Items');
$arr = json_decode($items, true);
$len = count($arr);
for($i=0;$i<$len;$i++){
    if(strpos($arr[$i]['Configuration'], '"title":"Parken"')!==false){
        //print $arr[$i]['Configuration']."\n"; // <-- nur zur Info, wie die Zeile aussieht, einmalig nutzen
        $arr[$i]['Configuration'] = '{"title":"Parken","alignmentType":1,"ratioType":1,"ratioTarget":1,"ratio":300,"icon":"Cat"}';
        break;
    }
}
$neu = json_encode($arr);

IPS_SetProperty($wfid, 'Items', $neu);
IPS_ApplyChanges($wfid);

Vielen Dank an @tobiasr für den funktionierenden Code!!
Mein Problem ist hierbei nur, das ich keine Titel sondern nur Icons für das Webfront verwende (s. Screen im ersten Beitrag).
Könnte man die Konfiguration für das ändern der Icons nicht auch direkt auf die Item-ID beziehen anstatt erst den Titel zu suchen (welcher bei mir nicht vorhanden ist)?
Die print-Ausgabe liefert mir folgendes Ergebnis:

{"title":"","ratio":50,"icon":"Sun","alignmentType":1}

Das Icon bleibt auch nicht immer dasselbe, sondern soll sich je nach Wetterlage dynamisch ändern (z.B. Sun, Rainfall, etc.).

Das Script, welches später das Icon ändern soll, kennt ja über $_IPS['OLDVALUE'] auch den alten Wert. Damit müsste man eigentlich diese Zeile vollständig Zusammenbauen können und dann darauf filtern.

$_IPS['OLDVALUE']

…ist mir bisher nicht bekannt gewesen, wäre aber ein denkbarer Lösungsansatz und bin hiermit schon wieder leicht überfordert :thinking:

Im ersten Schritt das Script mal stark abspecken auf sowas:

IPS_LogMessage('WetterIcon', print_r($_IPS,true)); exit;

Und das Script zum ausführen durch Variablenänderung! bringen. Danach ins Meldungsfenster gucken.

Zweiter Schritt: ALTE Variable zusammenbauen, welche

'"title":"Parken"'

ersetzt.

$alterWert = '{"title":"","ratio":50,"icon":"'.$_IPS['OLDVALUE'].'","alignmentType":1}';

Synchron dazu den neuen Wert zusammenbauen mit $_IPS['VALUE']

Bearbeitungsgrund: Tippfehler bei $_IPS Variable.

Worauf bezieht sich die Variable $IPS welche bestimmt definiert werden muß?
Und was muss bei 'WetterIcon' eingesetzt werden?

Das sind Grundlagen und die Variable ist $_IPS nicht $IPS