Applikation zum Web-IO Digital:
iPhone optimierte Webseiten für Web-IO Anwendungen
Die hier gezeigten Techniken nehmen zwar Bezug auf das Apple iPhone, können aber durch Anpassung der Anzeigegröße an die Displayauflösung auch für jedes andere, internetfähige Mobiltelefon umgesetzt werden. Einzige Voraussetzung ist die Unterstützung von JavaScript und im speziellen von HTTP-Request-Objekten (AJAX-Technik).
Was die Anzeige des iPhone betrifft, gibt es zwei Varianten:
Um die Erstellung der Webseite einfach zu
halten, sollte man sich für eine Variante entscheiden und die Webseite
entsprechend aufbauen.
Bei vorhandenem WLAN-Zugang funktioniert das gezeigte Beispiel auch auf allen iPod Touch Modellen!
Beispiel - Raumklima mit dem iPhone Anzeigen
Im ersten Beispiel sollen Temperatur, Luftfeuchte und Luftdruck von einem Web-Thermo-Hygrobarographen gemessen und als dynamische Webseite auf dem iPhone angezeigt werden.
Wie bereits angedeutet, ist es bei Webseiten, die speziell für das iPhone optimiert sein sollen wichtig, die verwendeten HTML-Elemente von Größe und Position pixelgenau zu definieren.
Die Zeichnung soll bei der Anordnung der Elemente und beim Verständnis des folgenden Quelltextes helfen.
<user.htm>
<html>
<head>
<title>Aktuelles Klima</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="viewport" content="width=320" />
<style type="text/css">
<!--
* { font-family:Verdana, Helvetica;}
.description
{
position:absolute;
text-align:center;
font-size:18px;
left:0px;
height:20px;
width:320px;
}
.value
{
position:absolute;
background-color:#99CCFF;
text-align:center;
font-size:60px;
left:0px;
height:80px;
width:320px;
}
-->
</style>
</head>
Der Quelltext beginnt mit dem Web-IO spezifischen Tag <user.htm>, welches das Web-IO für die interne Zuordnung ins File-System benötigt. Das <user.htm> Tag wird vom Web-IO nicht an den Browser weitergegeben.
Dann folgt der normale <Head>-Bereich der Webseite. Wichtig ist die Angabe "viewport". Hiermit wird das normalerweise vom iPhone praktizierte Auszoomen der Webseite auf 320 Pixel begrenzt, so dass die Webseite immer komplett und in der gewünschten Skalierung angezeigt wird.
Im weiteren Verlauf des Quelltextes werden DIV-Elemente zur Beschreibung und Anzeige der Werte angelegt. Für diese Elemente finden sich entsprechende CSS-Style Informationen im Kopf der Seite. Unter anderem um Höhe und linke Position zu definieren.
<body>
<div class="description" style="top:10px; ">
Temperatur
</div>
<div id="temperature" class="value" style="top:30px;">
<w&t_tags=t1>°C
</div>
<div class="description" style="top:120px;">
Relative Luftfeuchte
</div>
<div id="humidity" class="value" style="top:140px;">
<w&t_tags=h1> %
</div>
<div class="description" style="top:230px; ">
Luftdruck
</div>
<div id="pressure" class="value" style="top:250px;">
<w&t_tags=pa>hPa
</div>
</body>
</html>
Es folgt der <body>-Bereich der Webseite. Hier werden die im Kopf definierten CSS-Klassen so wie die top-Angaben genutzt, um die einzelnen DIV-Elemente in Position zu bringen. Den DIV-Elementen, in den später die akualisierten Werte angezeigt werden sollen, wird jeweils eine ID zugeteilt. Als Anzeige Text werden spezielle W&T-Tags eingetragen. Diese Tags werden vom Web-IO beim Laden der Seite in den Browser durch den gerade gültigen Wert ersetzt.
<script language="JavaScript" type="text/javascript">
function DataRequest(sendstring)
{
var xmlHttp = window.ActiveXObject ?
new ActiveXObject("Microsoft.XMLHTTP") : xmlHttp = new XMLHttpRequest();
if(xmlHttp)
{
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4)
{
if(xmlHttp.status== 200)
{
var ReceiveData = xmlHttp.responseText.split(";");
document.getElementById('temperature').innerHTML= ReceiveData[0].substring(0,ReceiveData[0].length-2) + '°C';
document.getElementById('humidity').innerHTML = ReceiveData[1]
document.getElementById('pressure').innerHTML = ReceiveData[2]
xmlHttp=null;
}
}
}
xmlHttp.open("GET",sendstring, true);
xmlHttp.setRequestHeader("Connection","close");
xmlHttp.setRequestHeader("If-Modified-Since","Thu, 1 Jan 1970 00:00:00 GMT");
xmlHttp.send(null);
maintimer = setTimeout("DataRequest('single')",5000);
}
}
DataRequest('single');
</script>
Kernstück der Webseite ist der JavaScript Teil, der im <head>-Bereich der Webseite untergebracht wird. Hier wird mittels der DataRequest Funktion das Kommando single zum Web-IO gesendet. Das Web-IO sendet Semikolon-getrennt die Werte für Temperatur, Luftfeuchte und Luftdruck zurück. Über das Split-Statement werden die Werte separiert und in ein Variablenarray geschrieben.
Mit der Methode document.getElementById()
werden die entsprechenden
DIV-Elemente zur Anzeige ausgewählt und die aktuellen Werte eingetragen.
Über einen Timer geschieht das zyklisch alle 5000ms Sekunden.
Die Webseite ist damit fertig und muss nur noch in das Web-IO hochgeladen werden.
Kein Problem: Wir stellen Ihnen den Web-Thermo-Hygrobarometer gerne kostenlos für 30 Tage zur Verfügung. Einfach Musterbestellung ausfüllen, wir liefern das Web-IO zum Test auf offene Rechnung. Wenn Sie das Gerät innerhalb von 30 Tagen zurück schicken, schreiben wir die Rechnung komplett gut.