<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.innovaphone.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wikitest2018</id>
	<title>innovaphone wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.innovaphone.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wikitest2018"/>
	<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Special:Contributions/Wikitest2018"/>
	<updated>2026-05-09T07:42:20Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=50577</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=50577"/>
		<updated>2018-09-26T09:56:33Z</updated>

		<summary type="html">&lt;p&gt;Wikitest2018: /* Known Problems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:3rd Party Input}}&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s useful to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts in the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format, for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
content=&amp;quot;5&amp;quot; for the refresh time&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provides the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will also need the two following scripts, one to get get the sync map and one to get the sync level between each cells.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getsync.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
// la fonction getsync permet de récupérer le chemin de synchro entre les bornes&lt;br /&gt;
// les paramètres passés sont l&#039;adresse ip de la borne master IP (B1)&lt;br /&gt;
// et le port pour se connecter en http et récupérer les infos sur la B1 Master IP&lt;br /&gt;
// cette fonction retourne un tableau orgénisé de la façon suivante&lt;br /&gt;
//  (id(id,primaire, secondaire, synchro sur, perte totale desynchro),id(...))&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
function getsync($ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/GW-DECT/MASTER/mod_cmd.xml?cmd=xml-radios&amp;amp;xsl=dectmaster_radios.xsl&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) $xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
	$retour=array();&lt;br /&gt;
	foreach ($xml-&amp;gt;radio as $radio)&lt;br /&gt;
		{&lt;br /&gt;
		//if (isset($radio-&amp;gt;sync))&lt;br /&gt;
			{&lt;br /&gt;
			$id=strval($radio[&#039;id&#039;]);&lt;br /&gt;
			$prim=strval($radio-&amp;gt;sync[&#039;prim&#039;]);&lt;br /&gt;
			$alt=strval($radio-&amp;gt;sync[&#039;alt&#039;]);&lt;br /&gt;
			$state=strval($radio-&amp;gt;sync[&#039;state&#039;]);&lt;br /&gt;
			$lostcount=strval($radio-&amp;gt;sync[&#039;lost-count&#039;]);&lt;br /&gt;
			if ($prim&amp;lt;&amp;gt;&amp;quot;&amp;quot;) $retour[$id]=array($id,$prim,$alt,$state,$lostcount);&lt;br /&gt;
			unset ($id);&lt;br /&gt;
			unset ($prim);&lt;br /&gt;
			unset ($alt);&lt;br /&gt;
			unset ($state);&lt;br /&gt;
			unset ($lostcount);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	return ($retour);&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getlevel.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function getlevel($tab,$id,$ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/DECT/mod_cmd.xml?cmd=xml-other-bases&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) &lt;br /&gt;
			{&lt;br /&gt;
			$xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
			$xmlreply=str_replace(&amp;quot;r-b&amp;quot;,&amp;quot;rb&amp;quot;,$xmlreply);&lt;br /&gt;
			}&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	if ($xmlreply==&amp;quot;&amp;lt;dect error=\&amp;quot;Dect system is not ready.\&amp;quot;/&amp;gt;&amp;quot;) return ($tab);&lt;br /&gt;
	else&lt;br /&gt;
		{&lt;br /&gt;
		$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
		foreach ($xml-&amp;gt;otherbases-&amp;gt;base as $base)&lt;br /&gt;
			{&lt;br /&gt;
			$rpn=intval($base[&#039;rpn&#039;]);&lt;br /&gt;
			$rssi=intval($base[&#039;rssi&#039;]);&lt;br /&gt;
			$tab[]=(array($id,$rpn,$rssi));&lt;br /&gt;
			}	&lt;br /&gt;
		return ($tab);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change the user/password in these two scripts.&lt;br /&gt;
&lt;br /&gt;
===Additional files===&lt;br /&gt;
&lt;br /&gt;
For the caption on the map you will need the files &#039;&#039;&#039;cartouche.jpg&#039;&#039;&#039;&lt;br /&gt;
[[Image:Exemple.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As mention at the beginning you will need two files, one for the map and one for cells positionning on the map.&lt;br /&gt;
&lt;br /&gt;
So here is an example of the text file &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;B1 Master IP;111;222;1;192.168.0.5;80;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;B2;555;666;2;192.168.0.6;80;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;R1-1;150;250;65;;;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Each line represents one radio point.&lt;br /&gt;
For Base Stations, the line begins with Bxxx&lt;br /&gt;
For Repeater, the line begins with Rxxx. You can add information after the R or B, it will be drawn to the map.&lt;br /&gt;
&lt;br /&gt;
Each field is separated by &#039;;&#039;, the first field is the name, second is the X position on the jpg (in pixel), the third is the Y position, then you will find the real ID of the access point, then the IP address, and at the end the http port.&lt;br /&gt;
&lt;br /&gt;
Note that for repeater IP address and port have no sense ! leave it empty. You must have one &#039;;&#039; at the end of each line.&lt;br /&gt;
&lt;br /&gt;
You must specify the http port because I use NAT feature of the PBX on my network and cells are only reachable through the IPBX.&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
&lt;br /&gt;
* It&#039;s important to respect the repeater ID as described in the documentation. For example repeater 1 on B1 must have ID 65.&lt;br /&gt;
* If you have repeater attached to another repeater, it will be drawn as attach to the same cell.&lt;br /&gt;
* The master IP address must have the ID 1.&lt;br /&gt;
* It works in single cell solution.&lt;br /&gt;
* You must have basic authentication on DECT Cells.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Wikitest2018</name></author>
	</entry>
</feed>