Mach mal bitte ein '{{fmt}}' bei Beschriftung rein, also die Hochkommas ringsrum!
P.S: hast Du mal die Zeile gecheckt und auf Prüfen gedrückt?!?!
Mach mal bitte ein '{{fmt}}' bei Beschriftung rein, also die Hochkommas ringsrum!
P.S: hast Du mal die Zeile gecheckt und auf Prüfen gedrückt?!?!
Du hast in beiden Fällen recht - vielen Dank für die rasche Hilfe.
Mit den Anführungszeichen klappts - die Doku genauer lesen hätts vermutlich gebracht.
Das liegt vermutlich daran dass ich bisher noch nie ein Anführungszeichen benötigt habe - ich werde nun mal alle Zeilen prüfen.
Auf Prüfen hab ich nicht gedrückt - Die Fehlermeldung hätte mich vermutlich nur verwirrt ![]()
Evaluierung von Beschriftung: Error (syntax error, unexpected token ")")
Ich verwende dieses Script, um das jeweilige Sonos Logo (Sender oder Album) per FTP auf das Display zu übertragen. Ausgelöst zb. bei Änderung der Station ID im Sonos:
<?php
$MediaID = 25410; // Media-Objekt-ID
IPS_Sleep(5000);
// Inhalt aus Media-Objekt holen
$data = base64_decode(IPS_GetMediaContent($MediaID));
// Bild-Ressource erzeugen
$src_img = imagecreatefromstring($data);
$src_width = imagesx($src_img);
$src_height = imagesy($src_img);
// Maximalmaße definieren
$max_width = 200;
$max_height = 200;
// Verhältnis berechnen
$scale = min($max_width / $src_width, $max_height / $src_height);
$new_width = (int)($src_width * $scale);
$new_height = (int)($src_height * $scale);
// Neues Bild erstellen
$dst_img = imagecreatetruecolor($new_width, $new_height);
// Transparenz für PNG erhalten
imagealphablending($dst_img, false);
imagesavealpha($dst_img, true);
// Proportional skalieren
imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $new_width, $new_height, $src_width, $src_height);
// Temporäre Datei speichern
$local_file = IPS_GetKernelDir() . "media/cover_scaled.png";
imagepng($dst_img, $local_file);
// Speicher freigeben
imagedestroy($src_img);
imagedestroy($dst_img);
// --- FTP Upload ---
$ftp_server = "192.168.90.8";
$ftp_user = "ftp";
$ftp_password = "123456";
$remote_file = "/cover.png";
$conn_id = @ftp_connect($ftp_server);
if ($conn_id && @ftp_login($conn_id, $ftp_user, $ftp_password)) {
@ftp_pasv($conn_id, true); // Passivmodus
if (@ftp_put($conn_id, $remote_file, $local_file, FTP_BINARY)) {
IPS_LogMessage("FTP Upload", "Skaliertes Bild erfolgreich hochgeladen: $remote_file");
} else {
IPS_LogMessage("FTP Upload", "Fehler beim Upload!");
}
} else {
IPS_LogMessage("FTP Upload", "FTP-Verbindung oder Login fehlgeschlagen!");
}
@ftp_close($conn_id);
$variableID = 33366;
$status = GetValueInteger($variableID);
$targetID = 44123;
WWXRD_SendJSONL($targetID, [
'page' => 2,
'id' => 11,
'obj' => 'img',
'x' => 20,
'y' => 150,
'auto_size' => 0,
'w' => 200,
'h' => 200,
'src' => "L:/cover.png"
]);
?>
Cool, aber warum startet Dein Script mit 5 Sekunden warten?
Propiere ich am WE mal aus!
Weil es bei einem Senderwechsel ein paar Sekunden dauert, bis sich das Senderlogo aktualisiert. Ist noch keine perfekte Lösung, eher ein Workaround. Dein Modul ist wirklich klasse und es ergeben sich damit sehr viele Möglichkeiten. Ich spiele mittlerweile schon viele Stunden damit herum. ![]()
So siehts aktuell aus:

@pitti Bei so einer ähnlichen Geschichte habe ich mal aufgegeben.
Dazu habe ich mal eine Frage:
Ich schicke auch ein Bild per FTP zu einem Display, direkt per Script, das aktualisiert sich aber erst, wenn ich das Display „reboote“. Kannst Du mir mal auf die Sprünge helfen? Was hilft ohne reboot?
Das musst @tomfes beantworten, wie es bei ihm abläuft. Ich habe mit FTP gar nicht erst angefangen ![]()
Ich wäre auf den Befehls string „Seite neu laden“ scharf, schätze der könnte helfen?
Den gibt es ja:
Ich lese gerade, man kann sogar …
To delete individual objects, you can issue the pXbY.delete command.
Vielleicht hilft das
Wenn Du die Seite neu lädst schickst Du laut Debug
22.08.2025, 15:26:40 | SendCommand | Topic: hasp/plate7zollnr2/command/ Command: run /pages.jsonl
und wenn Du synchronisierst? Kommt irgendwie nicht im Debug an.
Wie würde der Script Befehl aussehen?
Siehe weiter oben mein Post 310……
Das funktioniert einwandfrei
Das funktioniert, DANKE.
Das habe ich auch schon versucht, leider aber liefern nicht alle Sender ein Cover.
Darum habe ich es wieder verworfen.
Ich formatiere aber stattdessen mit einen Script die Variable ‚gerade läuft‘, so dass auch beim hören eines Radiosenders Künstler und Titel vernünftig dargestellt werden.
Wie bei den Senderlogos wird auch hier häufig kein Künstler und Titel in die entsprechenden Variablen ausgegeben
<?php
// IDs der IP-Symcon-Variablen
$sourceVarID = 52487; // Variable mit Interpret und Titel
$interpretVarID = 35537; // Hier die ID der Variable für den Interpreten eintragen
$titleVarID = 17381; // Hier die ID der Variable für den Titel eintragen
// Wert aus der Quell-Variable holen
$rawData = GetValueString($sourceVarID);
// Trennzeichen prüfen und Interpret/Titel extrahieren
if (strpos($rawData, ' | ') !== false) {
list($title, $interpret) = explode(' | ', $rawData, 2);
} elseif (strpos($rawData, ' - ') !== false) {
list($interpret, $title) = explode(' - ', $rawData, 2);
} elseif (strpos($rawData, ' ˗ ') !== false) {
list($interpret, $title) = explode(' ˗ ', $rawData, 2);
} else {
// Falls kein bekanntes Trennzeichen gefunden wurde, alles als Titel speichern
$title = $rawData;
$interpret = "Unbekannt";
}
// Groß-/Kleinschreibung korrigieren
$interpret = ucwords(strtolower(trim($interpret)));
$title = ucwords(strtolower(trim($title)));
// Werte in die IP-Symcon-Variablen schreiben
SetValueString($interpretVarID, $interpret);
SetValueString($titleVarID, $title);
Das macht im Script folgender Teil:
WWXRD_SendJSONL($targetID, [
‚page‘ => 2,
‚id‘ => 11,
‚obj‘ => ‚img‘,
‚x‘ => 20,
‚y‘ => 150,
‚auto_size‘ => 0,
‚w‘ => 200,
‚h‘ => 200,
‚src‘ => „L:/cover.png“
]);
Musst du nur auf deine Page und das Objekt, dass das Logo beinhaltet ändern.
Danke, ich hatte den Ansatz gebraucht, damit ich ein Wetterbild einer Webkamera in mein 7" Display bekomme.
Flackert zwar bei der Übertragung, aber ok.
Falls jemand das Script brauchen kann um z.B. ein Media/Kamerabild auf das Display bringen will, einfach hier melden.
Ich habe diesen Befehl im Script gesetzt:
WWXRD_SendJSONL(38313, ['page' => 3,'id' => 4,'obj' => 'img','src' => "L:/Flbg1.png"]);
Nachdem mich das Flackern bei jedem FTP Upload doch gestört hat, habe ich einen anderen Web probiert. Ich lade nun das Cover Bild aus IP Symcon auf einen Webserver (In meinem Fall eine NAS) und lade das Bild auf dem Minidisplay per http von dort. Das Funktioniert schnell und ohne Flackern.
<?php
$MediaID = 25410; // Media-Objekt-ID
IPS_Sleep(1000);
// Inhalt aus Media-Objekt holen
$data = base64_decode(IPS_GetMediaContent($MediaID));
// Bild-Ressource erzeugen
$src_img = imagecreatefromstring($data);
$src_width = imagesx($src_img);
$src_height = imagesy($src_img);
// Maximalmaße definieren
$max_width = 200;
$max_height = 200;
// Verhältnis berechnen
$scale = min($max_width / $src_width, $max_height / $src_height);
$new_width = (int)($src_width * $scale);
$new_height = (int)($src_height * $scale);
// Neues Bild erstellen
$dst_img = imagecreatetruecolor($new_width, $new_height);
// Transparenz für PNG erhalten
imagealphablending($dst_img, false);
imagesavealpha($dst_img, true);
// Proportional skalieren
imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $new_width, $new_height, $src_width, $src_height);
// Temporäre Datei speichern
$local_file = IPS_GetKernelDir() . "media/cover_scaled.png";
imagepng($dst_img, $local_file);
// Speicher freigeben
imagedestroy($src_img);
imagedestroy($dst_img);
// --- FTP Upload auf NAS---
$ftp_server = "xxx.xxx.xxx.xxx";
$ftp_user = "****";
$ftp_password = "******";
$remote_file = "web/cover.png";
$conn_id = @ftp_connect($ftp_server);
if ($conn_id && @ftp_login($conn_id, $ftp_user, $ftp_password)) {
@ftp_pasv($conn_id, true); // Passivmodus
if (@ftp_put($conn_id, $remote_file, $local_file, FTP_BINARY)) {
IPS_LogMessage("FTP Upload", "Skaliertes Bild erfolgreich hochgeladen: $remote_file");
} else {
IPS_LogMessage("FTP Upload", "Fehler beim Upload!");
}
} else {
IPS_LogMessage("FTP Upload", "FTP-Verbindung oder Login fehlgeschlagen!");
}
@ftp_close($conn_id);
$variableID = 33366;
$status = GetValueInteger($variableID);
$targetID = 44123;
IPS_Sleep(500); // 0,5 Sek. warten
WWXRD_SendJSONL($targetID, [
'page' => 2,
'id' => 11,
'obj' => 'img',
'x' => 20,
'y' => 150,
'auto_size' => 0,
'w' => 200,
'h' => 200,
'src' => "http://xxx.xxx.xxx.xxx/cover.png"
]);
?>
Könnte man auch die Http ADR vom Symcon Raspi und dann das File aus dem Media Ordner nehme, als ohne den Umweg einer NAS Geschichte?
Also so~ ![]()
WWXRD_SendJSONL($targetID, [
'page' => 3,
'id' => 4,
'obj' => 'img',
//'x' => 20,
//'y' => 150,
//'auto_size' => 0,
//'w' => 200,
//'h' => 200,
'src' => "http://192.168.0.87/var/lib/symcon/media/cover_scaled.png"
// ist die ADR vom Symcon Raspi
]);
Edit: Ist sicher ein Problem mit den Raspi Rechten?
Ich wolltes es vorhin nicht schreiben, aber - ja - man kann es auch einfach in den user Ordner legen
(/var/lib/symcon/user). Mit den Rechten solltest Du keine Probleme haben, symcon ist ja root ![]()
Direkt aus dem media Verzeichnis haste glaube ich kein websever zur Verfügung!
Ja, aber was muss dann in der Zeile ‚src‘ drin stehen?
Ich habe es auf Windows laufen. Grundsätzlich wäre es das Einfachste, den Symcon Webserver zu verwenden. Ich kann das cover.png file auch problemlos über das Script in den Webfront\user ordner schreiben. Allerdings bin ich mit der Abfrage über den Browser gescheitert, daher bin ich den Umweg über die NAS gegangen.