Hintergrundbild automatisch neu laden

padowa76

Aktives Mitglied
Mitglied seit
23 Jun 2006
Beiträge
1,275
Punkte für Reaktionen
9
Punkte
38
Hallo zusammen,

ich habe auf meinem Snom D385 ein URL zu einem PHP-Script als Hintergrundbild hinterlegt, da ein PNG-Bild mit aktuellen Informationen als Text kombiniert. Im Browser wird das Bild alle 5 Sekunden neu generiert und man sieht den aktualisierten Text. Das Snom zeigt aber nur den Inhalt an, der zum Zeitpunk des ersten Ladens aktuell war, den Refesh im Script bekommt er nicht mit. Kann man das irgendwo einstellen, dass das Snom das Bild selbst alle n Sekunden neu lädt/aktualisiert?

Gruß Patrick
 
Moinsen


Was macht das PHP Skript?
Wenn das PHP dem SNOM eine Minibrowser XML präsentiert, dann sollte dies ( Aktualisierungen ) über das "fetch" Tag passieren.

Hab aber keine Ahnung was das PHP Skript macht.
Scheint ja ein grosses Geheimnis zu sein.
 
Das Script ist kein Geheimnis, in dem Beispiel schreibt es nur das aktuelle Datum/Uhrzeit auf das Bild und liefert quasi ein JPG zurück .. die URL zum Script hab ich Snom unter Hintergrundbild-URL hinterlegt und beim Neustart wird auch das Bild einmalig geladen, allerdings nicht aktualisiert. An der Stelle nimmt er auch keine Datei für den integrierten XML-Browser, hatte das schon mit der Snom Beispiel-URL http://docs.snom.io/xml_minibrowser/examples/xml/SnomIPPhoneImage.xml probiert

Code:
<?php
/*
image.php
*/
header("Refresh:5");
header("Content-type: image/jpeg");
$imgPath = 'vorlage.jpg';
$image = imagecreatefromjpeg($imgPath); (durch Tippfehler stand dort imagecreatefrompng, hat aber nichts mit dem Refresh zu tun)
$color = imagecolorallocate($image, 255, 255, 255);
$datum = date("d.m.Y");
$uhrzeit = date("H:i:s");
$string = $datum . " " . $uhrzeit;
$fontSize = 50;
$x = 175;
$y = 155;
imagestring($image, $fontSize, $x, $y, $string, $color);
imagejpeg($image);
?>
 
Zuletzt bearbeitet:
Gibt Fehlermeldungen aus...
( php image.php )
Code:
php image.php
PHP Warning:  imagecreatefrompng(): 'earth1.jpg' is not a valid PNG file in /UNIONFS/var/www/html/image.php on line 8
PHP Warning:  imagecolorallocate() expects parameter 1 to be resource, bool given in /UNIONFS/var/www/html/image.php on line 9
PHP Warning:  imagestring() expects parameter 1 to be resource, bool given in /UNIONFS/var/www/html/image.php on line 16
PHP Warning:  imagejpeg() expects parameter 1 to be resource, bool given in /UNIONFS/var/www/html/image.php on line 17

Habs mal nach Gutdünken geändert...
PHP:
<?php
/*
image.php
*/
header("Refresh:5");
header("Content-type: image/jpg");
$imgPath = 'sphere.png';
$image = imagecreatefrompng($imgPath);
$color = imagecolorallocate($image, 255, 255, 255);
$datum = date("d.m.Y");
$uhrzeit = date("H:i:s");
$string = $datum . " " . $uhrzeit;
$fontSize = 50;
$x = 175;
$y = 155;
imagestring($image, $fontSize, $x, $y, $string, $color);
return imagejpeg($image);
?>
( Input muss *.png sein - das return macht deutlicher was geliefert wird )

Aber das Problem ist...
Das PHP generiert ein Bild, das SNOM zeigt das Bild.
Denkfehler: Das Bild ist keine HTML
( HTML Header werden nicht ausgewertet )
Deswegen: Gibt es auch keinen: Refresh: 5

Normaler Webbrowser beachtet Header obwohl nur ein Bild geladen wurde und keine HTML...
Bildschirmfoto vom 2020-07-17 14-08-41.png
( Chrome "bastelt" selbständig/automatisch* das HTML um das JPG )

Minibrowser XML ist und bleibt XML und kann an der Stelle wo du die PHP eingetragen hast kein Bild liefern.
XML, oder PHP die XML ausliefert, gehört entweder als Event ( siehe Action Script ) oder als Taste ( Typ Action Script ) eingetragen.
Mit <fetch mil="5000" >http://xmlserver/bildzeit.xml</fetch> oder <fetch mil="5000" >http://xmlserver/bildzeit.php</fetch> wenn die PHP XML ausliefert, soll sie sich dann alle 5000 millisekunden selber aufrufen.
Das wäre das Minibrowser XML Äquivalent zu: Refresh: 5


* Wegen header("content-type: image/jpg");
Als unformatierter Text: header("content-type: text/plain");
 
Zuletzt bearbeitet:
Ja da war ein Tippfehler (war eine ältere Kopie des Scripts was ich von JPG nach PNG geändert hatte ..
sollte $image = imagecreatefromjpeg($imgPath); statt $image = imagecreatefrompng($imgPath); lauten

Ergebnis ist ein Bild .. und das ist leider das Problem .. vermutlich wird sich der Refesh nicht lösen lassen
 
Nimm mal deine Beispiel URL als Grundgerüst.
Leg es auf dem Webbrowser ab.
Dann Taste belegen mit ( Typ Action Script )
Bau das <fetch> ein bis es passt.
Dann kannst du mit PHP und "return" als String die XML mit PHP ausliefern lassen.
( Taste mit *.php belegen nicht vergessen )
Danach ( Erfolgserlebnis ;) ) kannst du beginnen vor dem "return" dein Bild letztendlich als Base64 in einer Variable abzulegen und innerhalb des "return" Strings einzubauen.
Stichwort: Verkettungsoperator
Pass aber beim Quoten auf.
PHP:
return 'Mit Hochkommata angefangen braucht es keine Maske für die "Gänsefüsse" und ist ein "wenig" Stressfreier. Aber die Hochkommata im Text selber müssen \'so\' maskiert werden und umgekehrt.'
 
Zuletzt bearbeitet:
Über eine Action-URL funktioniert das, wenn ich es auf eine Taste lege

Code:
<?xml version="1.0" encoding="UTF-8"?>
<SnomIPPhoneImageFile>
<LocationX>00</LocationX>
<LocationY>00</LocationY>
<URL>snom.php</URL>
<fetch mil="200">snom.xml</fetch>
</SnomIPPhoneImageFile>

-- Zusammenführung Doppelpost gemäß Boardregeln by stoney

@koyaanisqatsi Problem ist hier nur, dass er bei Hintergrundbild-URL nur ein PNG und kein XML aktzeptiert bzw. ausführt, andere Idee war das ganze im der XML-Ruhebildschirm-URL des SIP-Accounts zu hinterlegen. Das Idle Screen XML hat aber wirder kein Refresh
 
Zuletzt bearbeitet von einem Moderator:
Mit anderen Worten...
Es muss also eine XML her, die das Setting für das Hintergrundbild "ändert".
Ja, auch das ist möglich, aber dein Webserver braucht dafür die Erlaubnis.
Beispiel für die Änderung der Settings ( Deutsch/Englisch )
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<SnomIPPhoneText>
<if condition="$(lines:connected)==0">
<if condition="$(set:language)==Deutsch">
<fetch mil="3000">snom://mb_exit#set:language=English</fetch>
<led number="1">off</led>
<text>$(set:language) -> English</text>
</if>
<if condition="$(set:language)==English">
<fetch mil="3000">snom://mb_exit#set:language=Deutsch</fetch>
<led number="1" color="orange">on</led>
<text>$(set:language) -> Deutsch</text>
</if>
</if>
<else>
<fetch mil="3000">snom://mb_exit</fetch>
<led number="1" color="orange">blinkfast</led>
<text>Line BUSY</text>
</else>
</SnomIPPhoneText>
Funktioniert wie ein FlippFlopp Schalter...
Wenn Deutsch dann Englisch ( LED aus )
Wenn Englisch dann Deutsch ( LED an )
Außer es wird gerade telefoniert.
Dann wird nur mit "Line BUSY" für 3s im Display und einer hektisch blinkenden LED genervt.
:p

Siehe für die vorherige Erlaubnis...
https://service.snom.com/display/wiki/mb_trusted_hosts

Wie das Setting für das Hintergrundbild heisst findest du bestimmt alleine raus, oder?
 
Zuletzt bearbeitet:
Merci :)
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.