Forum: Mikrocontroller und Digitale Elektronik Ziel: Einen Sensorwert über Handymodul auf eine Webseite ausgeben. Was muss ich lesen?


von Attila C. (attila)


Lesenswert?

Hallo!

Ich möchte einen Wert über ein GSM Modul (Adafruit FONA) auf einer 
Webseite ausgeben. Vom Sensor zum AVR und weiter zum FONA sollte ich 
schaffen. Alles dannach sind für mich "Böhmische Dörfer".

Wie kommt etwas ins Internet? Wie kommt es von da auf die Webseite? Ist 
das so ähnlich wie UART?

GPRS, TCP/IP, UDP, HTTP, APN,IP, DNS.......ich blicke grade garnichts!

Was muss ich lesen und in welcher Reihenfolge?

Vielen Dank für Tipps!

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Dein Sensor und das GSM-Modul laufen wohl kaum alleine, also ist da ein 
Rechner, der das ganze steuert, z.B. ein Arduino oder Raspi.

Eine der Möglichkeiten, Daten auf den Webserver zu bekommen, ist die, 
dass auf deinem Webserver ein PHP-Skript darauf "lauert", vom eben 
erwähnten Rechner (per TCP über GSM) aufgerufen zu werden. Bei diesem 
Aufruf werden die Sensordaten per GET- oder POST-Statement (eine 
Funktion im HTTP) quasi Huckepack mitgesendet. Das Skript speichert 
diese Sensordaten in einer Datei oder einer Datenbank (meist MySQL).

Wenn dann jemand die Webseite abruft, sorgt ein anderes PHP-Skript 
dafür, dass die Sensorwerte aus eben dieser Datenbank wieder abgerufen 
und z.B. in einer Tabelle oder als Grafik erscheinen ...

Das GSM-Modul ist nur eine der Möglichkeiten, "von Unterwegs" ins 
Internet zu kommen, das ändert an den Technologien zur Erfassung und 
Darstellung von Sensorwerten erstmal garnix. Bei Verwendung eines 
gewöhnlichen PC mit DLS-Anschluss würden genau die geleichen Methoden 
verwendet.

Um mit dem GSM-Modul eine Internetverbindung herzustellen, muss dieses 
in einen speziellen Modus geschaltet werden - da musst du aber alleine 
durch, vor Allem die Anleitung lesen. Wahrscheinlich bekommst du (bzw. 
das GSM-Modul) alle notwendigen IP-Einstellungen (z.B. DNS, vor denen du 
dich fürchtest) automatisch zugewiesen.

: Bearbeitet durch User
von Attila C. (attila)


Lesenswert?

Vielen Dank! Leider hat mir deine Antwort nicht weitergeholfen. Es soll 
ein Atmega 8 werden, kein Arduino oder so.

Mir ist klar dass ich vor allem diese application Note vollständig 
verstehen muss:

https://www.adafruit.com/datasheets/sim800_series_ip_application_note_v1.00.pdf

Mir fehlen allerdings die Grundlagen. Darauf bezog sich meine Frage. Was 
muss ich lesen und in welcher Reihenfolge um diese application Note zu 
verstehen?

von Kai S. (kai1986)


Lesenswert?

Hallo,

ich bin mir nicht sicher, ob ich dich richtig verstanden hab. Ich hab 
herausgelesen, das du folgende Kette umsetzen möchtest:
Sensor -> Controller (ATMega8) -> GSM Modul (beim Sensor) -> GSM Modul 
(zu Hause) -> PC -> Webserver

Attila C. schrieb:
> Wie kommt etwas ins Internet?

Dafür gibt es mehrere Möglichkeiten. Zum einen kann es auf einem Server 
im Internet liegen (der dann in irgend einem Rechenzentrum steht) oder 
du kannst es lokal bei dir zu Hause auf einem Server mit Internetzugang 
liegen haben. Wenn es bei dir lokal liegt benötigst du dann noch einen 
DynDNS Dienst, um deine täglich wechselnde IP Adresse verfolgen zu 
können.
Deine Messwerte müssen dann auf den Server hochgeladen werden (egal ob 
der bei dir zu Hause, oder im Rechenzentrum steht). Dort werden die 
Daten dann gespeichert, entweder in einer Datei oder in einer Datenbank, 
wobei die Datenbank die bessere Option ist (und auch quasi Standard).
Dann musst du eine Website erstellen, die bei Aufruf die Messdaten aus 
der Datenbank abruft und in der gewünschten Weise darstellt.
Zum Hoch- und Runterladen der Daten vom Server (Website ist auch nur 
Runterladen) bietet sich ein PHP Skript an, das als Schnittstelle 
zwischen Datenbank und Website fungiert. Die Website selbst ist eine 
HTML Seite, die mit dem PHP Skript dynamisch erstellt wird.
Hier ist z.B. ein PHP und Datenbank Tutorial:
http://php-einfach.de/
SQL ist die Datenbanksprache und MySQL ist hierbei das 
Datenbankprogramm.

Gruß Kai

PS: Dein GSM Modul ist einfach ein "altes Handy". Damit kannst du nicht 
einfach "das Internet" anrufen und die Daten durchgeben. Bedeutet, du 
musst die Daten selbst im Internet zur Verfügung stellen.

von Holger Z. (boomboommagic)


Lesenswert?

Vom Atmega8 zum GSM-Modul macht hier wenig Sinn.

Nimm ein ESP8266-Modul , sende die Daten vom Atmega8 an das 
ESP8266-Modul per Tx und laß das ESP8266-Modul entweder als Server 
laufen mit Webanzeige oder als Client Broadcast(en) auf eine 
Serverseite.

Für das ESP8266 Modul gibts einige alternative Firmware um sich nicht 
mit AT-Befehlen "quälen" zu müssen :-)

von Attila C. (attila)


Lesenswert?

Die Kette soll z.B. so sein:

Temperatur Sensor --> Atmega8 --> FONA -->internet--> Webseite mit 
Ausgabe der Temperatur

Alles bis zum FONA sollte ich hinbekommen. Wäre die Aufgabe eine SMS zu 
verschicken wäre es wahrscheinlich  kein Problem.

Laut datasheet kann das FONA: TCP oder UDP oder HTTP oder FTP

Hier weiß ich z.B. gar nicht was die 4 verschiedenen Möglichkeiten genau 
sind und welche die Richtige für mich ist.

Wenn ich mir die Wikipedia Artikel zu den 4 Abkürzungen durchlese 
erkenne ich dass mir Grundkenntnisse fehlen.

Was muss ich lesen um den Weg einer Information von A nach B im 
Internet zu vesrtehen?

von Karl H. (kbuchegg)


Lesenswert?

Attila C. schrieb:

> Wenn ich mir die Wikipedia Artikel zu den 4 Abkürzungen durchlese
> erkenne ich dass mir Grundkenntnisse fehlen.

TCP bzw. UDP sind die unten liegenden Schichten. Die kümmern sich um den 
Transport. Vergleichbar etwa der Schicht Kabel+Wählamt bei einem 
herkömmlichen Telefon.
HTTP und FTP sind Dienste, die darauf aufsetzen. Sie benutzen also die 
erstgenannten, damit sie den Transport für sie abwickeln. Vergleichbar 
etwa dem Fax-Gerät, welches die Telefon-Infrastruktur benutzt, um damit 
eine Grafik von A nach B zu bringen.

Netzwerkverkehr ist in Schichten aufgeteilt. Jede Schicht hat ihre 
eigene Aufgabe und benutzt darunterliegende Schichten, um den 
'Kleinkram' für sie zu erledigen.

> Was muss ich lesen um den Weg einer Information von A nach B im
> Internet zu vesrtehen?

Kommt drauf an, wie genau du es wissen willst. Bei deinem FONA Shield 
willst/brauchst du es nicht so genau wissen. Du gibst dem Teil die 
Telefonnummer deines Providers, so dass es eine Telefonverbindung zu ihm 
aufbauen kann. Dann teilst du ihm mit, dass du jetzt gerne ins Internet 
möchtest und sagst ihm zb mittels
1
GET http://www.google.com
dass es die Google-Webseite aufrufen soll. Ich kenn die mitgelieferte 
Software nicht, aber es kann durchaus sein, dass da auch gleich eine 
fertige Funktion dabei ist, der du nur noch den Namen des Servers 
übergibt und die Funktion kümmert sich um den ganzen Rest.

Ergo: Doku von dem FONA Teil studieren. Mitgelieferte Beispiele 
studieren.


Eine ganz andere Frage ist, wo denn eigentlich dein Web-Server steht. 
Denn bis jetzt reden wir ja nur davon, dass du deine Daten auf 
irgendeinem Server ablegst.

von Karl H. (kbuchegg)


Lesenswert?


von Attila C. (attila)


Lesenswert?

Hallo Karl Heinz!

Ich studiere grade HTTP da ich vermute dass ich damit weiter komme.

Die FONA Doku wie auch die Beispiele verstehe ich nicht da mir die 
Grundlagen fehlen. Daher ja auch meine Anfrage hier.

Ich habe eine seit Jahren brachliegende Webseite die sich, so wie ich 
das verstehe, auf einem Server des Anbieters befindet. Dort drauf würde 
ich gerne die Werte meines Sensors schreiben und meine Webseite so 
ummodeln das sie diesen Wert zeigt.

Reichlich naiv? Kann sein aber es hilft vielleicht mir dabei zu helfen 
die richtige Lektüre auszuwählen!

von Karl H. (kbuchegg)


Lesenswert?

Attila C. schrieb:

> Ich studiere grade HTTP da ich vermute dass ich damit weiter komme.

HTTP  Hypertext Transfer Protokoll
FTP   File Transfer Protokoll

FTP ist älter und wird benutzt um ganz einfach Dateien von einem Rechner 
zu einem anderen Rechner zu schieben. (WObei man das mit den Dateien 
nicht unbedingt wörtlich nehmen muss. Der eine Rechner schickt Daten und 
teilt dem anderen Rechner mit, in welcher 'Datei' er die ablegen soll. 
Ob der andere Rechner das auch wirklich tut, weiss der sendende Rechner 
nicht. Genauso umgekehrt. Der empfangende Rechner kann nicht wissen, ob 
sich die Daten wirklich in einer Datei befinden, oder ob der sendende 
Rechner das einfach nur behauptet.

HTTP ist neuer und geht einen Schritt weiter. Der Client (der Browser) 
fordert beim Server eine Datei an. In dieser Datei ist ein Text, in dem 
beschrieben ist, was der Client eigentlich anzeigen soll. In diesen 
Beschreiobungstext eingebettet ist auch die Möglichkeit, dass der 
Browser an dieser Stelle im Text einen sog. Link einbaut. In diesem Link 
ist beschrieben, welche andere Datei der Browser von welchem Rechner 
anfordern und anzeigen soll, wenn der Benutzer da drauf klickt. Das ist 
die Grundidee von HTTP/HTML und damit vom Web. Aber im Prinzip ist es 
auch nichts anderes als "Der Browser fordert vom Server Dateien an, 
interpretiert den Inhalt dieser Datei und zeigt das vorgefundene an".

Damit kommen wir zur Frage: Wenn der Browser irgendeine Datei anfordert, 
woher kommt die denn?
Und an dieser Stelle kommst du ins Spiel. Der Server kann natürlich 
nicht einfach irgendeine Datei ausliefern, sondern er muss schon die mit 
dem richtigen (und auch angefordertem) Namen liefern. Die muss aber 
irgendwer einmal geschrieben haben. Nämlich du. Oder zb irgendein 
anderer Rechner, der diese Datei zu deinem Server dann hochgeladen hat. 
Datei hochladen, das klingt erst mal wie ein Dateitransfer. Und dazu 
gibt es ja FTP (obwohl das mitlerweile mit HTTP auch geht). Denn FTP ist 
ja das File Transfer Protokoll.

> Ich habe eine seit Jahren brachliegende Webseite die sich, so wie ich
> das verstehe, auf einem Server des Anbieters befindet. Dort drauf würde
> ich gerne die Werte meines Sensors schreiben und meine Webseite so
> ummodeln das sie diesen Wert zeigt.

Gut. Dann versuch mal, ob du per FTP an den Speicherplatz deines 
Provirders herankommst. Dazu brauchst du deine Benutzerkennung und dein 
Passwort. Du kannst das zb mit den meisten Browsern machen. Die können 
auch alle FTP. Als Adresse gibst du an
1
ftp://www.meineSeite.de
Dann wird dich der Browser nach Benutzername und Passwort fragen. Ist 
das in Ordnung, dann zeigt dir der Browser ein Inhaltsverzeichnis deines 
SPeicherplatzes bei ihm an. Dort liegen alle Dateien, die du zu ihm 
übertragen hast.

Und genau das gleiche kannst du auch mit dem FONA Modul machen. Du 
kannst deinem FONA Modul den Auftrag geben, per FTP deinen Provider 
anzurufen und dann Inhaltsverzeichnis abrufen, Dateien runter und wieder 
hochladen, etc. Es spricht also nichts dagegen, dass du per FTP eine 
neue 'Datei' auf deinen Webspace hochladest, in der eine Webseite ist, 
in der du deinen Sensorwert eingebaut hast. Das die bei dir nicht als 
Datei vorliegt interessiert keinen, denn das kann der Server sowieso 
nicht feststellen.

Das ist jetzt natürlich mühsam und vor allen Dingen unflexibel. Denn man 
möchte ja eigentlich Werte von Anzege trennen. Wenn sich das Design 
ändert (das in den Dateien per HTML ja festgelegt ist), dann soll das ja 
nicht bedeuten, dass dein Arduino umprogtrammiert werden muss. Denn dann 
müsste ja ein anderer Inhalt in die 'Datei' rein, die der Arduino per 
FTP zum Server hochädt. Daher macht man das oft ein bischen anders. Man 
legt die eigentlichen Daten (die Werte) zb in eine Datenbank. Die auf 
dem Server vorliegende WEb_Seite holt sich den gerade aktuellen Wert aus 
dieser Datenbank, ehe dann der Server die Seite zum Anfrager (Browser) 
ausliefert.
D.h. man muss sich fragen: wie kommt denn jetzt der WErt in diese 
Datenbank?

Man kann dazu einen Trick benutzen. Denn wenn der Browser eine Datei 
anfordert, dann kann der nicht nur den Namen der gesuchten Datei 
angeben, sondern auch noch weitere Werte. Normalerweise steuern die zb. 
welche Daten der Server in die Web Seite einbauen soll. Das muss aber 
nicht so sein. Win PHP Programm kann an diese zusätzlichen Werte in der 
Anfrage herankommen und die zb in die Datenbank speichern. Eine 
eingehende Verbindung beim Server könnte also zb lauten
1
GET http://www.meineDaten.de/store.php?25
(das nach dem ? ist das zurätzliche Argument)
Das bedeutet: lieber Web-Server. Gib mir bitte den Inhalt der Datei
"www.meineDaten.de/store.php"
und als zusätzliches Argument gebe ich dir noch die 25 mit.
Hinter www.meineDaten.de/store.php steht ein PHP Skript (das du 
geschrieben hast), welches nichts anderes macht, als diese 25 in eine 
Datenbank einzutragen. Die Datei store.php existiert nach wie vor, ist 
aber eine Skript-Datei und wird als solche ausgeführt, ehe dann der sich 
daraus ergebende Text zum Browser ausgeliefert wird.

> Reichlich naiv? Kann sein aber es hilft vielleicht mir dabei zu helfen
> die richtige Lektüre auszuwählen!

Ich hätte erst mal gesagt:
Vergiss den Ardunio, vergiss das FONA Modul, schnapp dir ein HTML 
Tutorial und arbeite das durch, wobei du die Übungen mit dem dir zur 
Verfügung stehenden Webspace machst! Schnapp dir Tutorien, die sich mit 
PHP beschäftigen, genauso wie Tutorien die sich mit MySQL beschäftigen. 
Und dann natürlich das Zusammenspiel der beiden. Wenn du das alles drauf 
hast und von deinem PC aus ins laufen kriegst, dann bist du auch 
gerüstet eine Stufe tiefer zu gehen und das ganze dann mit direkter 
Ansteuerung deines FONA Moduls zu machen, welches den Browser Teil 
übernimmt und auf die von dir schon zum Provider hochgeladenen 
HTML-Seiten und PHP Skripte zugreift. Denn den wesentlichen Teil der 
Magie macht nicht dein Ardunio oder das FONA-Modul, sondern die Skripte, 
die beim Provider auf dessen Computern laufen. Denen wiederrum ist es 
egal, ob die "Abfrage" von deinem PC aus kommt, oder ob das ein µC ist. 
Abfrage ist Abfrage und daraus resultiert dann eine Verarbeitungskette, 
die in beiden Fällen identisch ist.

: Bearbeitet durch User
von Attila C. (attila)


Lesenswert?

Karl Heinz!

Erstmal nur der Ordnung halber: Atmega8, kein Arduino oder so.

HTML Tutorial, PHP Tutorial, MySQL Tutorial: Wird gemacht!

Und Final: Vielen Dank! Ziemlich genau das wollte ich wissen!

von Attila C. (attila)


Lesenswert?

Karl Heinz!

Das war hart!!! (Immerhin hatte ich vor 3 Wochen nicht den blassesten 
Schimmer!) Aber ich habe jetzt tatsächlich eine Zahl über das GSM Modul 
auf meine Webseite schreiben können.

Es gilt natürlich jetzt den Code aufzuräumen, zu kommentieren und die 
Ausgabe halbwegs "hübsch" zu machen usw.

Dazu habe ich Fragen die ich hier die Tage mal stellen möchte.

Unterm Strich erst mal: Vielen Dank für deinen Input!!! Ich habe was Du 
geschrieben hast wieder und wieder und wieder gelesen!

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.