Bauplan Schaltplan Geräte über das WLAN fernsteuern mit Flyport
Das hier kurz vorgestellte Flyport Modul will natürlich etwas näher erforscht werden. Auf der OpenPICUS Webseite findet man einige Beispielprogramme, die sich hierzu als Ausgangspunkt für eigene Projekte eignen. Um erst einmal einen kleinen Einblick in das Konzept sowie die Funktionsweise des Flyport Moduls zu bekommen, muss man die entsprechenden Quelltexte studieren.

Das Flyport Modul erfüllt eigentlich mehrere Aufgaben:

Zum einen ist es ein Mikrocontroller Modul, welches Steueraufgaben erfülllen kann, zum Anderen enthält es einen TCP/IP Stack, mit dem es über das Netzwerk kommunizieren kann. Interessant wird dann die Kombination von beidem. Damit kann man übers Netzwerk Steuerungsaufgaben ausführen.

Als erstes Projekt habe ich versucht, die vorhandenen Beispielcodes so abzuändern, dass dabei ein kleines Programm herauskommt, mit welchem man Geräte über das Netzwerk ein und ausschalten lassen.

Die Bedienung ist recht einfach, es gibt 3 Scripten,

output_toggle.cgi

output_on.cgi

output_off.cgi

Beispiel: http://192.168.0.200/output_on.cgi?port=1

die man mit dem Parameter port=n (n=0..4)

aufrufen kann, welche dann den entsprechenden Port steuern. Nach Ausführung wird eine kleine Liste ausgegeben mit dem aktuellen Zustand der 5 Flyport IO Leitungen. (Standardmässig hat der Flyport 5 Stück davon)

Nun ist es so, dass der Webserver keine cgi-Scripten ausführen kann. Stattdessen wird bei jedem Seitenaufruf die Funktion HTTPExecuteGet(void) aus HTTPApp.c aufgerufen.

In dieser Funktion kann man feststellen, welche Datei abgerufen wurde und je nach Dateinamen dann die verschiedenen Parameter abfragen und die Aktionen ausführen.

HTTP_IO_RESULT HTTPExecuteGet(void)
{
BYTE *ptr;
BYTE filename[20];

//Puffer filename mit angefordertem Filenamen laden
MPFSGetFilename(curHTTP.file, filename, 20);


// Wenn das Toggle-Script angefragt wurde....
if(!memcmppgm2ram(filename, "output_toggle.cgi", 17))
{
// Feststellen, welcher Ausgang
ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"port");
//Entsprechenden Port Umschalten
switch(*ptr)
{

case '0':
IOPut(o1,toggle);
break;
case '1':
IOPut(o2,toggle);
break;
case '2':
IOPut(o3,toggle);
break;
case '3':
IOPut(o4,toggle);
break;
case '4':
IOPut(o5,toggle);
break;
}

}

Doch wie kommt man nun zur Rückmeldung über den Webserver ?

Hierzu kann der Webserver dynamisch beim Ausliefern einer Webseite eine Funktion aufrufen, welche einen Wert in den HTML-Text einfügt. Diese dynamischen Variablen werden mit ~ gekennzeichnet. Der Text ~led(0)~ in den cgi-Datein führt also dazu, dass die zugehörige dynamische Callback Funktion HTTPPrint_led(WORD num) aus HTTPApp.c aufgerufen wird, welche dann "on the Fly" ihren Rückgabewert in die ausgelieferte Datei schreibt.

Port Status 0 ~led(0)~<br>
Port Status 1 ~led(1)~<br>
Port Status 2 ~led(2)~<br>
Port Status 3 ~led(3)~<br>
Port Status 4 ~led(4)~<br>

Dieser Code gibt also fünf Zeilen aus, in jeder Zeile wird für led(x) der entsprechende Rüclgabewert der Funktion HTTPPrint_led eingefügt:

void HTTPPrint_led(WORD num)
{
// Determine which LED
switch(num)
{
case 0:
num = IOGet(o1);
break;
case 1:
num = IOGet(o2);
break;
case 2:
num = IOGet(o3);
break;
case 3:
num = IOGet(o4);
break;
case 4:
num = IOGet(o5);
break;
default:
num = 0;
}

// Print the output
TCPPut(sktHTTP, (num?'1':'0'));
return;

Damit lassen sich dann schon recht komplexe Web-Anwendungen schreiben. In dem hier zu findenen Beispielcode sind die HTML Files sowie die Datei HTTPApp.c enthalten, diese kann man mit der openPicus IDE kompilieren und erhält so ein Flyport Modul, mit welchem man über das Drahtlose Netzwerk Geräte ein und Ausschalten kann. Natürlich benötigt man noch entsprechende Hardware drum herum (Netzeteil, Optokoppler, Relais etc), aber diese Anwendung sollte ja nur die prinzipielle Vorgehensweise zeigen.

Bauteile für dieses Projekt - Anzeigen:
Aktive Bauelemente

Passive Bauelemente


Weitere Informationen,Grundlagen,Bauanleitung,Schaltplan, Links zum Thema
Anzeigen:

Neueste Artikel
Anzeigen:
Aktuelle Newsbeiträge
Sie sind Besucher Nr. 1211943