Cisco IP Phone und Symcon

So, alles ist nun in IPS unter /webfront/user/cisco abgelegt.
Ich habe die Scripte am Anfang des Threads angepasst.
Durch den Wegfall des zusätzlichen WebServers ist die Komplexität gesunken.

Hallo Wolfgang,
ich habe jetzt mein Cisco 7970G bekommen und versuche gerade, Deine Skripte zum Laufen zu bekommen. Ich vermute, dass Du das Ganze unter Windows betreibst, denn auf dem Raspberry habe ich so einige Probleme. Mit einigem Troubleshooting bin ich jetzt soweit, dass auf dem Telefon das Hauptmenü angezeigt wird. Danach ist dann aber Schluss und menu.php findet das Include-File „_header_xml.inc“ nicht. Google brachte mich auch nicht weiter. Ist dies ein von Dir geschriebenes Include?

Danke und Gruß
Peter

Hallo Peter,
in der include sind nur die ersten Zeilen (Post #4) Services.XML drin, die den Header für XML setzen. In Grunde bist du schon einen sehr grossen Sprung nach vorne gegangen. Die Menüs haben den gleichen Aufbau wie das Hauptmenü.
Die Lösung ist plattformneutral. Die Telefone benötigen die Dateien ISO 8irgendwas und nicht utf8.
Ich bin Ende April wieder erreichbar und kann notwendige Dateien auch per PN zur Verfügung stellen.
Aber alles was du benötigst steht in den Posts.
Viel Spass !

Moin, vielen Dank für diesen Showcase. Habe mir auch so ein 7965 besorgt und spiele damit rum. Mittlwereile kann ich mit dem Telefon sogar telefonieren und im Display grinst mich auch das UFP-Logo an :smiley:

Probleme bereiten mir die php-Dateien für die Schnellwahltasten: Der Request läuft und kommt in IPS mit der ID auch an, aber ich muss aus der execute-Datei den xml header entfernen. Ansonsten bekomme ich auf dem Display:

Parse error: syntax error, unexpected ‚version‘ (T_STRING) in C:\IP-Symcon om\cisco\befehl-execute.php on line 1…

irgendetwas habe ich da wohl falsch verstanden. Bekommt man eigentlich auch irgendwie Zugriff auf die LEDs hinter den Kurzwahltasten ? Die scheinen ja gelb+grün zu können.

Grüße,
Tom

Moin Tom,
diese Fehlermeldungen hatte ich auch. Es liegt vermutlich an der PHP-Installation, die in unserem Fall ein „<?xml …“ als Beginn des PHP-Scripts interpretiert. Ich habe es wie folgt geändert:

<?php
header("Content-type: text/xml; charset=ISO-8859-1");
header("Connection: close");
header("Expires: -1");
header("Refresh: 4; URL=SoftKey:Beenden");
echo '<?xml version="1.0" encoding="iso-8859-1"?>';
echo '<CiscoIPPhoneImageFile onAppFocusLost="SoftKey:Aktualisieren">';

Unabhängig von dieser Fehlermeldung muss vermutlich auch in der Datei services.php noch doppelt vorhandenen Code entfernt werden:

echo '<CiscoIPPhoneGraphicFileMenu appId="Cisco/Unity">';
echo '<Prompt>Du bist hier: ' . $name . '</Prompt>';
echo '<LocationX>-1</LocationX><LocationY>-1</LocationY>';
echo '<URL>'.$serverIPaddr.'services-bild.php</URL>';

Viele Grüße
Peter

Danke, Peter !

<?php
header("Content-type: text/xml; charset=ISO-8859-1"); 
header("Connection: close");
header("Expires: -1");
header("Refresh: 4; URL=SoftKey:Beenden");
echo '<?xml version="1.0" encoding="iso-8859-1"?>';
echo '<CiscoIPPhoneImageFile onAppFocusLost="SoftKey:Aktualisieren">';
echo '<Title>Server</Title>';
echo '<LocationX>-1</LocationX><LocationY>-1</LocationY>';
echo '<Depth>16</Depth><URL>http://chekow/cisco/befehl-execute-bild.php?ID='.$_GET['ID'].'</URL>';
echo '<SoftKeyItem><Name>Zurück</Name><URL>SoftKey:Exit</URL><Position>1</Position></SoftKeyItem>';
echo '</CiscoIPPhoneImageFile>';
?>

Ein Schrittchen weiter: Jetzt kommt ein leeres Fenster mit der Überschrift „Dienste“ und den Softbuttons „Aktual.“ und „Beenden“, die beide keine Funktion haben (außer dass der Request erneut aufgerufen wird). Leider kann ich dieses Fenster dann auch nicht mehr schließen.

Ich übe weiter … ob jemand hier mal die angepassten Dateien erneut veröffentlichen mag ? Ich schätze, die Sprachunterschiede ziehen sich durch alle Skripte.

Bei der Taste Weltkugel erscheint exakt das gleiche Fenster (ohne Inhalt mit Überschrift ‚Dienste‘) - aber das lässt sich auch wieder schließen.

Hallo Tom,
bei mir laufen die (von mir geänderten) Skripte auch noch nicht komplett. Ich scheitere momentan daran, dass in den Skripten auf viele IPS-Variablen referenziert wird, die bei mir entweder nicht vorhanden oder andere IDs haben. Ich bin daher dazu übergegangen, das Rad für meine Bedürfnisse noch mal neu zu erfinden. Dauert zwar länger, aber ich weiß dann, was ich mache :wink: Ansonsten sind Wolfangs Skripte super und zum Lernen sehr gut geeignet.

Mir ist noch aufgefallen, dass Du in Deinem Code in der Zeile

echo '<CiscoIPPhoneImageFile onAppFocusLost="SoftKey:Aktualisieren">';

statt „Update“ „Aktualisieren“ verwendest. Ich vermute, dass das Telefon damit nicht klar kommt, denn „SoftKey:Update“ ist nicht ein beliebger String, sondern die Bezeichnung (URI) eines Softkeys aus einer definierten Liste . Probiere mal, ob ein Austausch mit „Update“ Dich weiterbringt.
Für Troubleshooting rufe ich die Skripte manchmal einfach mit „php <scriptname>“ auf. Das funktioniert dann nicht immer, aber man erkennt dabei ganz gut PHP bezogene Syntaxfehler.

Gruß
Peter

ja, stimmt. Das hatte ich aber gemacht, da Update nicht ging, da habe ich es mal auf deutsch probiert, da Wolfgangs Telefon offensichtlich auf englisch eingestellt ist.

Mittlerweile vermute ich einen Fehler in der services.php - Die wird bei mir aufgerufen, das sehe ich an internen Debugpunkten. Den header musste ich da auch anpassen. Trotzdem bekomme ich damit nur ein leeres Fenster auf dem Display… Erwartet habe ich ein „Du bist hier: unbekannt“, da ja nur echos drin sind.

<?php
header("Content-type: text/xml; charset=ISO-8859-1");
$server = "http://chekow/cisco/";

if ( isset($_GET['name']) ) {
  SetValue(17662,$_GET['name']);
 if ($_GET['name'] == 'SEP...') { $name = "Esszimmer"; };
 if ($_GET['name'] == 'SEP...') { $name = "Küche"; };
 if ($_GET['name'] == 'SEP...') { $name = "Kinderzimmer"; };
 if ($_GET['name'] == 'SEP...') { $name = "Schlafzimmer"; };
} else {
 $name = "unbekannt";
}
echo '<CiscoIPPhoneGraphicFileMenu appId="Cisco/Unity">';
echo '<Prompt>Du bist hier: ' . $name . '</Prompt>';
echo '<LocationX>-1</LocationX><LocationY>-1</LocationY>';
echo '<URL>http://chekow/cisco/services-bild.php</URL>';

echo '<MenuItem><Name>Licht</Name><URL>'.$server.'menu.php?ID=42927&R=10</URL></MenuItem>';
echo '<MenuItem><Name>Strom</Name><URL>'.$server.'menu.php?ID=43964&R=60</URL></MenuItem>';
echo '<MenuItem><Name>Rolladen</Name><URL>'.$server.'menu.php?ID=22939&R=60</URL></MenuItem>';
echo '<MenuItem><Name>Heizung</Name><URL>'.$server.'menu.php?ID=42155&R=60</URL></MenuItem>';
echo '<MenuItem><Name>Modus</Name><URL>'.$server.'menu.php?ID=36903&R=60</URL></MenuItem>';
echo '<MenuItem><Name>Infos</Name><URL>'.$server.'infos.php</URL></MenuItem>';
echo '<MenuItem><Name>PiaCam</Name><URL>'.$server.'camera.php</URL></MenuItem>';

echo '<MenuItem><Name>-</Name><URL></URL></MenuItem>';
echo '<MenuItem><Name>-</Name><URL></URL></MenuItem>';

echo '<MenuItem><Name>Anrufliste</Name><URL>'.$server.'anrufliste.php</URL></MenuItem>';
echo '<MenuItem><Name>Intern</Name><URL>'.$server.'intern.php</URL></MenuItem>';
echo '<MenuItem><Name>Telefonbuch</Name><URL>'.$server.'directory.php</URL></MenuItem>';

echo '</CiscoIPPhoneGraphicFileMenu>';
?>

hab ich es überhaupt richtig verstanden, dass dieses Script auch im WebServer Verzeichnis liegen soll ? Ich bin mir unsicher, ob die echos da landen, wo sie sollen. Da ich kein Webfront hab, habe ich das dort hin gepackt, wo die anderen cisco-Script auch liegen.

Verwurstet habe ich das mit:

<servicesURL>http://chekow/cisco/services.php</servicesURL>

in der conf - und wie gesagt, es startet ja auch (in meiner Debug-Var steht die SEP-ID)

wenn ich die services-php direkt aufrufe, erhalte ich auch:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<CiscoIPPhoneGraphicFileMenu appId=„Cisco/Unity“>
<Prompt>Du bist hier: unbekannt</Prompt>
<LocationX>-1</LocationX>
<LocationY>-1</LocationY>
<URL>http://chekow/cisco/services-bild.php</URL>
<MenuItem>
<Name>Licht</Name>
<URL>http://chekow/cisco/menu.php?ID=42927&R=10</URL>
</MenuItem>
<MenuItem>
<Name>Strom</Name>
<URL>http://chekow/cisco/menu.php?ID=43964&R=60</URL>
</MenuItem>
<MenuItem>
<Name>Rolladen</Name>
<URL>http://chekow/cisco/menu.php?ID=22939&R=60</URL>
</MenuItem>
<MenuItem>
<Name>Heizung</Name>
<URL>http://chekow/cisco/menu.php?ID=42155&R=60</URL>
</MenuItem>
<MenuItem>
<Name>Modus</Name>
<URL>http://chekow/cisco/menu.php?ID=36903&R=60</URL>
</MenuItem>
<MenuItem>
<Name>Infos</Name>
<URL>http://chekow/cisco/infos.php</URL>
</MenuItem>
<MenuItem>
<Name>PiaCam</Name>
<URL>http://chekow/cisco/camera.php</URL>
</MenuItem>
<MenuItem>
<Name>-</Name>
<URL/>
</MenuItem>
<MenuItem>
<Name>-</Name>
<URL/>
</MenuItem>
<MenuItem>
<Name>Anrufliste</Name>
<URL>http://chekow/cisco/anrufliste.php</URL>
</MenuItem>
<MenuItem>
<Name>Intern</Name>
<URL>http://chekow/cisco/intern.php</URL>
</MenuItem>
<MenuItem>
<Name>Telefonbuch</Name>
<URL>http://chekow/cisco/directory.php</URL>
</MenuItem>
</CiscoIPPhoneGraphicFileMenu>

Nachtrag

möglicherweise habe ich auch eine falsche Firmware, könnte ich mir vorstellen. Ich versuch mal die von Wolfgang zu finden …

Wenn ich meine services.php aufrufe,
bekomme ich

<?xml version="1.0" encoding="iso-8859-1"?>
<CiscoIPPhoneGraphicFileMenu appId="Cisco/Unity">
	<Prompt>Du bist hier: unbekannt</Prompt>
	<LocationX>-1</LocationX>
	<LocationY>-1</LocationY>
	<URL>http://192.168.100.70/user/cisco/services-bild.php</URL>
	<MenuItem>
		<Name>Licht</Name>
		<URL>http://192.168.100.70/user/cisco/menu.php%3FID=11657&R=10</URL>
	</MenuItem>
...

Unterschiede zu deiner Ausgabe:

<?xml version="1.0" encoding="iso-8859-1"?> fehlt bei Dir. Meine services.php beginnt mit den Zeilen
<?php
header("Content-type: text/xml; charset=ISO-8859-1");
echo '<?xml version="1.0" encoding="iso-8859-1"?>';

Die „&“ Zeichen sind bei Dir nicht mit „&“ umschrieben (deine XML-Ausgabe führt in meinem XML-Checker zu Fehlermeldungen).

Bei mir gab es außerdem das Problem, dass die „?“ im http-Querystring vom Telefon verschluckt wurden und alles rechts vom ? nicht mehr an den Server geschickt wurde. Ich habe daher das „?“ mit „%3F“ codiert. Warum das so ist, weiß ich nicht. Bei anderen Skripten hatte ich mit dem ? keine Probleme.
Kontrollieren kannst Du die Antworten vom Telefon in der access.log des Servers (bei Symcon: /var/log/symcon/access*.log).

Vielleicht noch ein genereller Tipp:
Auf der Seite (Link) wird beschrieben, wie man mit Stylesheets erreichen kann, dass man sich die Ausgaben des Servers auch im Browser anzegen lassen (man braucht dann bei der Fehlersuche teilweise gar kein Telefon mehr). Dazu packt man sich die Datei CiscoIPPhone.xslt mit den Stylesheets in das Skriptverzeichnis und fügt dann in den PHP-Scripten nach den header()-Ausgaben die Zeile

 echo '<?xml-stylesheet version="1.0" href="CiscoIPPhone.xslt" type="text/xsl"?>';

ein. Diese Zeile wird vom Telefon überlesen, stört dort also nicht.

Gruß
Peter

Danke nochmal, Peter !

Leider hänge ich gerade bei dem Problem, dass ich mich an dem Firmwareupdate versucht habe. Seit dem hängt das Telefon in der Bootschleife und bekommt irgendwie nicht die Daten.

Ich habe zig Anleitungen durchgelesen, aber so gut wie alle beziehen sich auf einen DHCP mit TFTP - aber ich und wohl auch einige andere nutzen ja den DHCP der Fritze und einen getrennten tftp, der ja in der CNF Datei angegeben wird.
Kann es sein, dass beim FW-Update diese Einstellung in der cnf Datei irrelevant ist ? Falls ja, wie bringe ich dem Telefon bei, dass es sich die FW von einem anderen Server zieht ? Die notwendigen DHCP Tags lassen sich in der Fritze ja leider wohl nicht setzen. Oder muss man zum FW-Update einen eigenen DHCP mit tftp aufsetzen ?

uiuiuiui:confused:
Tom

Der TFTP32 bringt einen eigenen DHCP Server mit (den in der Fritze ausschalten). Ganz wichtig !!! ist es, das Log zu beobachten (separater Reiter im TFTP).
Alle Fehler und Fortschritte sind dort genau zu beobachten - ich habe die letzten drei Tage ebenfalls auf diesem Feld gekämpft.
Und Geduld - hier dauert es teilweise Minuten nach einem Reboot, bis irgendetwas erkennbar ist.

Ansonstern: noch ist mein (Halb-)Wissen einigermaßen frisch - bei Fragen hierzu … einfach fragen :stuck_out_tongue:

LG Tom

Hallo Tom,
hast Du Deinen TFTP-Server im Telefon in den Settings->Netzwerkeinstellungen->IP4-Konfiguration eingetragen? Irgendwas mit „Alternativer TFTP-Server“ (so ungefähr, in bin gerade nicht am Gerät).

EDIT: ich bin nach dieser Anleitung vorgegangen.

Gruß
Peter

Neee,

das Telefon sucht / findet den TFTP-Server recht fix ohne das am Telefon IRGENDETWAS eingestellt ist.
Da ja keine Firmware drauf ist, hat es nur eine Art Not-Boot Routine.

Die fixe Einstellung kommt erst später und kann per XML oder am Telefon direkt erfolgen.

Ich hänge Dir mal ein Logfile von einem erfolgreichen Firmwareupdate mit bei:

20.04.2016

FW frisch aufspielen inkl. Config


Rcvd DHCP Rqst Msg for IP 0.0.0.0, Mac 5C:8D:4E:3D:95:37 [20/04 12:47:46.182]
Freeing item 192.168.2.202 5C:8D:4E:3D:95:37 [20/04 12:47:46.182]
Previously allocated address 192.168.2.219 acked [20/04 12:47:46.182]
Adding option 82, length: 19 ; CirID: <AVM*ûÎÂ ä>; RemID: <\ìN=ò7>;  [20/04 12:47:46.182]
Message truncated (length was 8) [20/04 12:47:46.192]
Rcvd DHCP Discover Msg for IP 0.0.0.0, Mac 00:26:99:EF:FD:23 [20/04 12:47:52.114]
IP address 192.168.2.202 flushed from ARP table [20/04 12:47:52.124]
DHCP: proposed address 192.168.2.202 [20/04 12:47:55.255]
Rcvd DHCP Rqst Msg for IP 0.0.0.0, Mac 00:26:99:EF:FD:23 [20/04 12:47:55.279]
Previously allocated address 192.168.2.202 acked [20/04 12:47:55.279]
Connection received from 192.168.2.202 on port 49747 [20/04 12:48:28.946]
Read request for file <term65.default.loads>. Mode octet [20/04 12:48:28.946]
Using local port 65104 [20/04 12:48:28.946]
<term65.default.loads>: sent 2 blks, 667 bytes in 0 s. 0 blk resent [20/04 12:48:28.946]
Connection received from 192.168.2.202 on port 52675 [20/04 12:49:00.236]
Read request for file <jar45sip.9-3-1ES26.sbn>. Mode octet [20/04 12:49:00.236]
Using local port 65105 [20/04 12:49:00.236]
<jar45sip.9-3-1ES26.sbn>: sent 3698 blks, 1893314 bytes in 3 s. 0 blk resent [20/04 12:49:03.827]
Connection received from 192.168.2.202 on port 52841 [20/04 12:49:39.939]
Read request for file <cnu45.9-3-1ES26.sbn>. Mode octet [20/04 12:49:39.939]
Using local port 65106 [20/04 12:49:39.939]
<cnu45.9-3-1ES26.sbn>: sent 1136 blks, 581548 bytes in 1 s. 0 blk resent [20/04 12:49:40.950]
Connection received from 192.168.2.202 on port 51503 [20/04 12:50:13.841]
Read request for file <apps45.9-3-1ES26.sbn>. Mode octet [20/04 12:50:13.841]
Using local port 65107 [20/04 12:50:13.841]
<apps45.9-3-1ES26.sbn>: sent 9068 blks, 4642392 bytes in 9 s. 0 blk resent [20/04 12:50:22.273]
Connection received from 192.168.2.202 on port 50178 [20/04 12:51:05.247]
Read request for file <dsp45.9-3-1ES26.sbn>. Mode octet [20/04 12:51:05.247]
Using local port 65108 [20/04 12:51:05.247]
<dsp45.9-3-1ES26.sbn>: sent 711 blks, 363807 bytes in 0 s. 0 blk resent [20/04 12:51:05.867]
Rcvd DHCP inform Msg for IP 192.168.2.238, Mac C4:34:6B:48:38:65 [20/04 12:51:17.992]
Rcvd DHCP inform Msg for IP 192.168.2.238, Mac C4:34:6B:48:38:65 [20/04 12:51:20.993]
Connection received from 192.168.2.202 on port 49918 [20/04 12:51:38.149]
Read request for file <cvm45sip.9-3-1ES26.sbn>. Mode octet [20/04 12:51:38.149]
Using local port 65109 [20/04 12:51:38.150]
<cvm45sip.9-3-1ES26.sbn>: sent 5254 blks, 2689901 bytes in 5 s. 0 blk resent [20/04 12:51:43.200]
Rcvd DHCP Rqst Msg for IP 0.0.0.0, Mac 00:26:99:EF:FD:23 [20/04 12:52:40.097]
Previously allocated address 192.168.2.202 acked [20/04 12:52:40.097]
Connection received from 192.168.2.202 on port 51024 [20/04 12:53:39.086]
Read request for file <CTLSEP002699EFFD23.tlv>. Mode octet [20/04 12:53:39.086]
File <CTLSEP002699EFFD23.tlv> : error 2 in system call CreateFile Das System kann die angegebene Datei nicht finden. [20/04 12:53:39.086]
Connection received from 192.168.2.202 on port 50490 [20/04 12:54:09.686]
Read request for file <ITLSEP002699EFFD23.tlv>. Mode octet [20/04 12:54:09.686]
File <ITLSEP002699EFFD23.tlv> : error 2 in system call CreateFile Das System kann die angegebene Datei nicht finden. [20/04 12:54:09.686]
Connection received from 192.168.2.202 on port 51548 [20/04 12:54:40.276]
Read request for file <ITLFile.tlv>. Mode octet [20/04 12:54:40.276]
File <ITLFile.tlv> : error 2 in system call CreateFile Das System kann die angegebene Datei nicht finden. [20/04 12:54:40.276]
Connection received from 192.168.2.202 on port 52994 [20/04 12:55:11.096]
Read request for file <SEP002699EFFD23.cnf.xml>. Mode octet [20/04 12:55:11.096]
Using local port 65422 [20/04 12:55:11.096]
<SEP002699EFFD23.cnf.xml>: sent 34 blks, 17183 bytes in 0 s. 0 blk resent [20/04 12:55:11.176]
Connection received from 192.168.2.202 on port 50711 [20/04 12:56:15.397]
Read request for file <CTLSEP002699EFFD23.tlv>. Mode octet [20/04 12:56:15.397]
File <CTLSEP002699EFFD23.tlv> : error 2 in system call CreateFile Das System kann die angegebene Datei nicht finden. [20/04 12:56:15.397]
Connection received from 192.168.2.202 on port 52024 [20/04 12:56:45.986]
Read request for file <ITLSEP002699EFFD23.tlv>. Mode octet [20/04 12:56:45.986]
File <ITLSEP002699EFFD23.tlv> : error 2 in system call CreateFile Das System kann die angegebene Datei nicht finden. [20/04 12:56:45.996]
Connection received from 192.168.2.202 on port 49695 [20/04 12:57:16.603]
Read request for file <ITLFile.tlv>. Mode octet [20/04 12:57:16.604]
File <ITLFile.tlv> : error 2 in system call CreateFile Das System kann die angegebene Datei nicht finden. [20/04 12:57:16.604]
Connection received from 192.168.2.202 on port 51516 [20/04 12:57:47.417]
Read request for file <SEP002699EFFD23.cnf.xml>. Mode octet [20/04 12:57:47.417]
Using local port 59044 [20/04 12:57:47.417]
<SEP002699EFFD23.cnf.xml>: sent 34 blks, 17183 bytes in 0 s. 0 blk resent [20/04 12:57:47.451]
Connection received from 192.168.2.202 on port 52744 [20/04 12:58:49.909]
Read request for file <CTLSEP002699EFFD23.tlv>. Mode octet [20/04 12:58:49.912]
File <CTLSEP002699EFFD23.tlv> : error 2 in system call CreateFile Das System kann die angegebene Datei nicht finden. [20/04 12:58:49.912]
Connection received from 192.168.2.202 on port 51371 [20/04 12:59:20.510]
Read request for file <ITLSEP002699EFFD23.tlv>. Mode octet [20/04 12:59:20.512]
File <ITLSEP002699EFFD23.tlv> : error 2 in system call CreateFile Das System kann die angegebene Datei nicht finden. [20/04 12:59:20.512]
Connection received from 192.168.2.202 on port 50713 [20/04 12:59:51.104]
Read request for file <ITLFile.tlv>. Mode octet [20/04 12:59:51.104]
File <ITLFile.tlv> : error 2 in system call CreateFile Das System kann die angegebene Datei nicht finden. [20/04 12:59:51.104]
Connection received from 192.168.2.202 on port 49279 [20/04 13:00:21.914]
Read request for file <SEP002699EFFD23.cnf.xml>. Mode octet [20/04 13:00:21.914]
Using local port 50367 [20/04 13:00:21.914]
<SEP002699EFFD23.cnf.xml>: sent 34 blks, 17235 bytes in 0 s. 0 blk resent [20/04 13:00:21.944]
Connection received from 192.168.2.202 on port 51443 [20/04 13:01:10.529]
Read request for file <User_Germany/be-sip.jar>. Mode octet [20/04 13:01:10.529]
File <User_Germany\be-sip.jar> : error 3 in system call CreateFile Das System kann den angegebenen Pfad nicht finden. [20/04 13:01:10.529]
Connection received from 192.168.2.202 on port 51783 [20/04 13:01:41.435]
Read request for file <Net_German/g3-tones.xml>. Mode octet [20/04 13:01:41.435]
File <Net_German\g3-tones.xml> : error 3 in system call CreateFile Das System kann den angegebenen Pfad nicht finden. [20/04 13:01:41.436]
Connection received from 192.168.2.202 on port 51899 [20/04 13:02:12.869]
Read request for file <dialplan.xml>. Mode octet [20/04 13:02:12.869]
Using local port 50370 [20/04 13:02:12.869]
<dialplan.xml>: sent 1 blk, 71 bytes in 0 s. 0 blk resent [20/04 13:02:12.869]
Connection received from 192.168.2.202 on port 52250 [20/04 13:02:43.539]
Read request for file <Softkey.xml>. Mode octet [20/04 13:02:43.549]
Using local port 50371 [20/04 13:02:43.549]
<Softkey.xml>: sent 12 blks, 5878 bytes in 0 s. 0 blk resent [20/04 13:02:43.569]

LG Tom

Hi,

Telefon ist wieder da - es ging tatsächlich nicht ohne DHCP und TFTP in einem, getrennt hatte ich es einfach nicht hinbekommen.

Jetzt weiter probieren, gebracht hat das FW-Update leider nix

EDIT:
das war etwas vorschnell: Das Fenster auf den Softkeys funzt jetzt, auch eine Grafik bekomme ich da rein.

Die Taste mit der Weltkugel will aber nicht, immer noch ein leeres Fenster, diesmal mit „Services“ als Überschrift. Auch die zusätzliche Zeile

echo ‚<?xml version=„1.0“ encoding=„iso-8859-1“?>‘;
bringt da bei mir nichts. Den Hinweis mit den „&“ habe ich nicht verstanden, die sind doch bei mir mit & kodiert.

Ich bin wieder da.

Wenn es offene Fragen gibt, dann kann ich gerne Antworten!

Was mir so einfällt auf die vorigen Posts:

  • Die Tastenbeleuchtung der Schnellwahltasten kann man nicht direkt ansteuern
  • Damit das Telefon den TFTP Server findet muss dieser im DHCP Server als Option 150 eingetragen werden - Fritzbox DHCP lässt sich im „normal“ Modus nicht mit Optionen füttern
  • Die Telefone mögen kein UTF8, alle Dateien müssen ISO-8859-1 codiert sein

Wenn ihr mir einen Webspeicher zur Verfügung stellen könnt (kein Youtu…) dann dreh ich noch ein Video von der funktionierenden Installation.

Hier noch aktuelle Versionen der Dateien - mit der Nutzung des IPS eigenen Webservers auf Port 80:

services.php

<?php
$refresh = 5;
include '_head.inc';
include '_header_xml.inc';

if ( isset($_GET['name']) ) {
 if ($_GET['name'] == 'SEP00000') { $name = "Esszimmer"; };
 if ($_GET['name'] == 'SEP00000') { $name = "Küche"; };
} else {
 $name = "unbekannt";
}

echo '<CiscoIPPhoneGraphicFileMenu appId="Cisco/Unity">';

echo '<Prompt>Du bist hier: ' . $name . '</Prompt>';
echo '<LocationX>-1</LocationX><LocationY>-1</LocationY>';
echo '<URL>'.$server .'services-bild.php</URL>';

echo '<MenuItem><Name>Licht</Name><URL>'.$server.'menu.php?ID=42927&R=10</URL></MenuItem>';
echo '<MenuItem><Name>Strom</Name><URL>'.$server.'menu.php?ID=43964&R=60</URL></MenuItem>';
echo '<MenuItem><Name>Rolladen</Name><URL>'.$server.'menu.php?ID=22939&R=60</URL></MenuItem>';
echo '<MenuItem><Name>Heizung</Name><URL>'.$server.'menu.php?ID=42155&R=60</URL></MenuItem>';
echo '<MenuItem><Name>Modus</Name><URL>'.$server.'menu.php?ID=36903&R=60</URL></MenuItem>';
echo '<MenuItem><Name>Infos</Name><URL>'.$server.'infos.php</URL></MenuItem>';
echo '<MenuItem><Name>PiaCam</Name><URL>'.$server.'camera.php</URL></MenuItem>';

echo '<MenuItem><Name>-</Name><URL></URL></MenuItem>';
echo '<MenuItem><Name>-</Name><URL></URL></MenuItem>';

echo '<MenuItem><Name>Anrufliste</Name><URL>'.$server.'anrufliste.php</URL></MenuItem>';
echo '<MenuItem><Name>Intern</Name><URL>'.$server.'intern.php</URL></MenuItem>';
echo '<MenuItem><Name>Telefonbuch</Name><URL>'.$server.'directory.php</URL></MenuItem>';

echo '</CiscoIPPhoneGraphicFileMenu>';
?>

_head.inc

<?php
$server = "http://10.10.10.3/user/cisco/";
?>

_header_xml.inc

<?php
header("Content-Type: text/xml; charset:ISO-8859-1");
header("Connection: close");
header("Expires: -1");
if ($refresh <> "") {
	header("Refresh: ".$refresh); 
}
echo '<?xml version="1.0" encoding="iso-8859-1"?>';
echo '<?xml-stylesheet version="1.0" href="CiscoIPPhone.xslt" type="text/xsl"?>';
?>

befehl-execute.php

<?php
header("Content-type: text/xml");
header("Connection: close");
header("Expires: -1");
header("Refresh: 4; URL=SoftKey:Exit");
echo '<?xml version="1.0" encoding="iso-8859-1"?>';
echo '<CiscoIPPhoneImageFile onAppFocusLost="SoftKey:Update">';
echo '<Title>Server</Title>';
echo '<LocationX>-1</LocationX><LocationY>-1</LocationY>';
echo '<Depth>16</Depth><URL>http://10.10.10.3/user/cisco/befehl-execute-bild.php?ID='.$_GET['ID'].'</URL>';
echo '<SoftKeyItem><Name>Zurück</Name><URL>SoftKey:Exit</URL><Position>1</Position></SoftKeyItem>';
echo '</CiscoIPPhoneImageFile>';
?>

befehl-execute-bild.php

<?php
include '_head.inc';

try {
	$predata = IPS_RunScriptWaitEx(45298, Array("ID" => $_GET['ID']));
	$data = base64_decode($predata);
	$im = imagecreatefromstring($data);
	if ($im !== false) {
    	header('Content-Type: image/png');
    	imagepng($im);
    	imagedestroy($im);
	} else {
  		ob_clean();
  		header('Content-Type: image/png');
  		$im = imagecreatefrompng("http://10.10.10.3/user/cisco/befehl-execute-fehler.png");
  		imagepng($im);
  		imagedestroy($im);
	}
} catch (Exception $e) {
 	ob_clean();
 	header('Content-Type: image/png');
 	$im = imagecreatefrompng("http://10.10.10.3/user/cisco/befehl-execute-fehler.png");
 	imagepng($im);
 	imagedestroy($im);
}
?>

menu.php

<?php
if (isset($_GET['R']) ) {
	$refresh = $_GET['R'];
} else {
    $refresh = 0;
}

include '_header_xml.inc';

if ( isset($_GET["ID"]) ) {
	echo IPS_RunScriptWait($_GET['ID']); 
} else {
	echo "kein Objekt angegeben";
}
?>

Danke für die neuen Versionen. Trotz Fehlschläge ist das alles megaspannend.

ich trau mich das fast nicht zu fragen, aber was genau ist im der Codierung gemeint ? In PSPAD habe ich nur die Optionen ISO-8859-2 und einen Haufen andere wie UTF-8 und ANSI. Ich habe ANSI genommen und war der Meinung, dass das richtig ist - denn zumindest kommt ja ein leeres Fenster.

Ich fang mit den neuen Dateien jetzt mal von vorne an :slight_smile:

Kurze Frage am Rande: Lässt sich eine Kurzwahl auch so konfigurieren, dass der Request abgesendet wird, ohne ein Fenster auf dem Display zu öffnen ? Ich hätte da gerne Kommandos drauf, die woanders signalisiert werden bzw. wo es überflüssig ist.

LG,
Tom

Da geht es nur um den Header der XML Dateien. Wie die PHP Dateien formatiert sind ist nicht so wild (ausser bei Sonderzeichen).

Ich habe selbst auch ewig gebraucht die Tücken der Telefone zu verstehen :))
Zudem reagiert jede Firmware wieder ganz individuell. Am Ende bin ich bei der 8.5 geblieben.

Gesendet von meinem Nexus 5X mit Tapatalk

Die kurzwahltasten können auch ohne Meldung gedrückt werden.

Gesendet von meinem Nexus 5X mit Tapatalk

Hm, fehlt da evt. noch die CiscoIPPhone.xslt ? Die finde ich nirgends…

bei der exeute.php ist die oben übrigens ein „<“ am Anfang verloren gegangen- merkt man aber auch schnell :wink:

EDIT:
ja, die xslt lässt sich im Netz finden, die brauch man noch. Jetzt sehe ich das Hauptmenü auch korrekt im Browser - aber das Display bleibt leer.

Ich habe die 8.5.4 drauf - oder magst du einen Link zur „richtigen“ FW senden ? Kann jetzt ja fast nur am Telefon liegen… oder an der CONF … aber aufgerufen wird die services ja…

Hallo Tom,
hast Du mal geprüft, ob Dein Telefon die services.php wirklich aufruft (und findet)? Prüfen kannst Du das in den Server-Logs des Webservers.

Gruß
Peter