Forum: Mikrocontroller und Digitale Elektronik MSP430, WiPort, Daten an Server senden


von Nico (Gast)


Lesenswert?

Hallo Leute!

Ich hab ein kleines Problem und hoffe, dass Ihr mir vielleicht weiter 
helfen könnt!

Ich möchte Daten mit einem MSP30 über einen WiPort(von Lantronix) in ein 
WLAN senden, was auch alles kein Problem ist. Also ich kann die Daten 
schon super per serielle Schnittstelle ans WLAN senden und mir diese auf 
der entsprechenden IP des WiPorts ansehen.
Jetzt kommt das Problem: der MSP und der WiPort werden von einem 
Akku-Solar-System gespeist und deswegen kann ich die Daten nur ca. 1 mal 
pro Stunde senden. Wie kann ich jetzt sicherstellen, dass mein Server in 
meinem WLAN genau zu der Zeit in der der WiPort die Daten sendet, diese 
auch entgegen nimmt?
Ich möchte die Daten auf dem Server dann mit PHP weiterverarbeiten.

Ich denke nicht das es sinnvoll ist, den Server die ganze Zeit(1h) 
pollen zu lassen oder?
Gibt es vielleicht eine Möglichkeit, dass der WiPort erstmal "Hallo" 
sagen kann und der Server daraufhin anfängt die Daten zu lesen?


Nico

von Michael U. (Gast)


Lesenswert?

Hallo,

vielleicht mache ich jetzt auch einen Denkfehler...

Ich gehe jetzt mal davon aus, daß Server ein HTML-Server im Netz ist.

Der steht ja sowieso rum und wartet auf Seitenaufrufe.
Der WiPort fordert also seine Seite an, füllt das Formular aus und 
schicht es zurück und fertig.

Kommt natürlich auf die Menge der Daten an...

Wenn ich nicht irre, kann man den TCP-Port beim Wi-Port ja auf die 
serielle mappen. Dann müßte Dein MSP30 nur den Seitenaufruf mit einer 
Variablenliste losschicken und Dein Webserver die Variablen-Werte 
entgegennehmen und eine Dummy-Seite als Antwort schicken, die den 
Wi-Port wieder schlafen schickt. Also nur den 
http://meinserver/daten.php?temp=23&feuchte=45&licht=0 oder so ähnlich.

Gruß aus Berlin
Michael

von Nico (Gast)


Lesenswert?

Hallo Michael!

Ja, der Server ist ein HTML-Server im Netz!
Das Problem ist, dass der WiPort die Seite mit den Daten selbst 
generiert.
Der Link funktioniert leider nicht!?

Leider kenne ich mich mit HTML-Sachen nur wenig aus! Es muss doch eine 
Möglichkeit geben das der WiPort per HTML "ein Signal" schickt auf 
welches der Server reagieren kann oder?

Nico

von Rahul D. (rahul)


Lesenswert?

>Es muss doch eine Möglichkeit geben das der WiPort per HTML "ein Signal" >schickt 
auf welches der Server reagieren kann oder?
Das nennt sich "HTTP-Request"...
Damit startet ein Client bei einem Server eine Sitzung.
Wenn dein WiPort nun aber von sich aus eine Website aufbaut, die man von 
aussen sich angucken kann, dann brauchst du auf dem Server einen 
Cron-Job, der in regelmässigen Abständen nach deinem WiPort guckt.
Wenn du allerdings nur die Daten an Server schickst (wie man es bei 
Formularen etc. macht, in Form von 
"www.serverxyz.com/index.htm?a=1&b=2"...), dann solltest du dir mal die 
verschiedenen Methoden ("Get" und "post") des HTTP angucken.

von Nico (Gast)


Lesenswert?

Hallo Rahul!

Ich will wirklich nur Daten an den Server senden!
Mit Cron-Job meinst Du bestimmt das ständige abfragen der Seite vom 
WiPort.....daran hatte ich auch schon gedacht. Ich dachte aber dass es 
da vielleicht zu Problemen kommen kann da ich nur 1 mal pro Stunde 
senden will. Das würde bedeuten das die Webseite immer 1 Stunde offline 
ist, gibt es da keine timeout Probleme beim abfragen der Seite?

von Patti (Gast)


Lesenswert?

Hallo Nico,
schaue Dir doch mal folgende Seiten an:

http://tut.php-q.net/get.html
http://www.html-world.de/program/http_3.php

Kann der Wiport auch eine Webseite bzw. einen Server kontaktieren? Wenn 
ja könnte man mittels get die Daten an den Server schicken.

Gruß Patti

von Nico (Gast)


Lesenswert?

Hat vielleicht noch jemand eine Idee wie ich eine Datenübermittlung 
realisieren könnte?
Mit GET oder POST scheint es nicht zu klappen weil ich ja keinen 
Submit-Button betätigen kann oder!?

Nico

von Nico (Gast)


Lesenswert?

Nachtrag:
Am besten wäre es, wenn der Wiport die Daten nur an den Server senden 
müsste ohne irgendeine Synchronisierung!
Mit der POST-Methode in HTML kann man sowas ähnliches machen, aber nur 
wenn man einen Submit-Button betätigt und das müsste ich automatisieren.
Hat denn keiner eine Idee wie man das tun könnte?

Bin für jeden Tipp dankbar!

Nico

von Rahul D. (rahul)


Lesenswert?

>Mit GET oder POST scheint es nicht zu klappen weil ich ja keinen
>Submit-Button betätigen kann oder!?

Wer muß denn einen Submit-Button drücken?
Bestimmt nicht der WiPort.
Guck dir doch mal an, was an einen Server alles übertragen wird, wenn 
man den Submit-Button drückt. Das sieht dann i.d.R. so aus:

www.blaserver.com/index.htm?A=123&B=4323
Guck dir mal die Doku zum siteplayer an. Da ist das wunderschön 
beschrieben.

von Nico (Gast)


Lesenswert?

Sorry, aber ich kenne mich leider nicht mit HTML usw. aus!
Was meinst Du mit siteplayer?

von Rahul D. (rahul)


Lesenswert?

Den hier:
http://www.siteplayer.com/main_content.htm

>Sorry, aber ich kenne mich leider nicht mit HTML usw. aus!
Du solltest dich dafür nicht entschuldigen, sondern es ändern (kleiner 
Tipp am Rande...).

von Nico (Gast)


Lesenswert?

Aha, danke!
Ich seh da aber ehrlich gesagt keinen Hinweis der mir helfen könnte!

Ich hatte mich nur entschuldigt weil man hier manchmal behandelt wird 
als sei man das letzte nur weil man etwas nicht versteht! Egal!

von Nico (Gast)


Lesenswert?

Cronjob schließe ich aus!
Am besten wäre wirklich, wenn man es in der Form 
"www.blaserver.com/index.htm?A=123&B=4323" realisieren könnte, nur wie 
geht das wenn ich nur eine HTML-Seite generieren kann?
Hat denn kiner 'ne Idee zu meinem Problem?

Nico

von Patti (Gast)


Lesenswert?

Hallo Nico,
der Wiport kann doch, wenn ich mich recht entsinne, auch eine TCP 
Verbindung zu einer IP Adresse + Port aufbauen.
Wichtig ist hierbei aber, dass der Server eine feste IP hat und deine 
Anfrage an dem Port XX von einem Daemon weitergereicht wird. Der Daemon 
ruft dann meinetwegen ein Script auf das dann das macht was Du möchtest.

Gruß Patti



von Anonymous Coward (Gast)


Lesenswert?

Oh mein Gott! :)
Warum genau willst du die Daten an einen _Web_server schicken? Webserver 
sind doch primär dazu da, Webseiten auszugeben.

Schreib ein kleines Serverprogramm auf dem PC, dass in einer einfachen 
Sprache mit dem Mikrocontroller kommuniziert und auf irgendeinem festen 
Port lauscht. Der Mikrocontroller nimmt dann Verbindung zu diesem 
Programm auf und das kann dann mit den Daten machen was du willst, in 
eine Datenbank stellen, plotten, eine Webseite generieren, was weiß ich.


Such mal nach: Sockets, Serverprogrammierung
(Und wenn du dir einen Gefallen tun willst, schreib es nicht in PHP)

Links:
http://de.wikipedia.org/wiki/Socket
http://www.uvomatik.de/programmierung/sockdoc/index.html

von Nico (Gast)


Lesenswert?

Hallo Anonymous!

Ich will die Daten an einen Server schicken um sie dort weiter zu 
verarbeiten!
Kannst Du mir denn in etwa sagen wie so ein kleines Serverprogramm 
aussieht!? In welcher Sprache programmiert man das?
Ich kenne mich leider mit diesen Kommunikationssachen nicht so aus, 
komme aus der Elektronik-Hardwareecke!
Was hast Du gegen PHP? Fand ich ganz gut für den Anfang, weil auch 
verständlich und vergleichbar mit C.

von Mitrofanow (Gast)


Lesenswert?

Kann es sein das du das programm wget suchst?

ein zyklisch ausgeführter befehl:

"wget 192.168.0.x?A=5&E=3" sendet die variablen A=5 und E=3 an deinen 
Server.

Und das ganze ohne einem I...Explorer.
Und dann kannst du auch den cron oder sleep nutzen.

von Mitrofanow (Gast)


Lesenswert?

Übrigens könntest du mal genaueres zu deinem WiPort und dessen Anschluß 
und dessen Ansteuerung mittteilen, würde mich mal interessieren.

von Bernhard (Gast)


Lesenswert?

Hallo,

ich habe so etwas mit nem´ WLAN Modul von Avisaro gemacht 
(www.avisaro.com/html/wlan_module.html)

Ich habe einen normalen Webserver benutzt und dort ein gewöhnliches 
Eingabeformular verwendet. So muss man nichts programmieren.

Von meinem Controller sende ich dann (beim Avisaro Modul) ein 
"at+connect 192.164.0.17 80" (Beispiel)(DNS geht auch). Nach dem "OK" 
kann ich dann direkt Daten schicken. Also ein "GET http: 
..&start=10&wert=20&...". Dabei sind start,wert die Formularfelder.

Sonst könntest Du auch die Daten per EMail verschicken. Das Modul hat 
den EMail Client fertig eingebaut....

Gruß,
Ber

von Nico (Gast)


Lesenswert?

@Mitrofanow:

wget suche ich nicht, das hat sich auch erledigt. Ich habe das jetzt mit 
einem Daemon realisiert, welcher auf dem Server auf eine eingehende 
TCP-Verbindung wartet und daraufhin ein PHP-Script ausführt.
Was genau willst Du zum Wiport wissen?
Der Wiport verbindet einfach gesagt die serielle Schnittstelle mit dem 
WLAN. In meinem Fall sende ich Daten vom µC über die serielle 
Schnittstelle und diese werden auf einer Webseite unter einer bestimmten 
IP + Port dargestellt.

Nico

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.