Forum: Mikrocontroller und Digitale Elektronik AVR NET-IO Daten auf FTP-SERVER


von Juppo N. (juppo)


Lesenswert?

hallo an alle

Bin immer noch mit der web-anbindung vom avr web-io beschäftigt.

Internetverbindung haben ich nun ,entweder mit der Fa.Medex über openVPN 
oder öffentliche adresse.

Nun möchte ich auf meine internet server ,da wo meine homepage zb. liegt 
eine Datei anlegen ,öffnen, beschreiben usw.

Wie bekommt man das hin?
Gibt es html oder js befehle die das machen?

oder muss ich auf eine ganz ander ebene ,da es ja kein html protokoll 
ist?

Gruß juppo

von STK500-Besitzer (Gast)


Lesenswert?

Und wenn du uns das jetzt noch mal in verständlicher Form schreiben 
würdest, dann könnte man dir auch helfen...

von Juppo N. (juppo)


Lesenswert?

Ok

Also
AVR-WEB-IO (Pollin) Hardware mit Radig Software vorhanden.

Am Ehternet Port ein GSM Modem das eine TCP Internet verbindung 
herstellt.

Das GSM Modem hat eine öffentliche IP Nummer (momentan 80.187.24.221:81)

Das läuft wunder bar.

Nun möchte ich zb.die Temperaturen die der AVR einsammelt alle 5 min in 
eine Date auf meinen Wepspace speichern.

Mit Filezilla kann ich die Daten dann einsehen.

also eine FTP Client erstellen,oder gibt es Javascript/html befehle die 
das erledigen.

Gruß Juppo

von STK500-Besitzer (Gast)


Lesenswert?

>also eine FTP Client erstellen,oder gibt es Javascript/html befehle die
>das erledigen.

Einen FTP-Client zu programmieren stelle ich mich schon interessant 
vor...

Einfacher wäre es wohl, per PHP-Script die NETIO-Website in gewissen 
Zeitabständen herunter zu laden und dort dann die Werte aus dem 
HTML-Code herauszufiltern.

von Leo H. (Gast)


Lesenswert?

Über HTML/JS kannst du von "außerhalb" prinzipiell nichts auf dem Server 
speichern.
Das wäre ja ein Einfallstor für jeden Hacker...

Du kannst allerdings auf dem Server ein Script laufen lassen, dass für 
dich die Daten speichert.
In der URL übergibst du dann deinen Datensatz (Stichwort PHP GET).

So eine URL könnte z.B. so aussehen 
www.meinserver.de/NetIO/Messwerte_Speichern.php?sensor=15&temperatur=25. 
6&zeit=17:00:00

Im PHP-Script hättest du dann auf die einzelnen Parameter mittels 
$_GET['sensor'] usw. Zugriff.
Die Werte kannst du dann überprüfen (wichtig!) und in deine 
Messwerte-Liste ablegen lassen.
Am Ende gibt das Script z.B. nur "OK" aus, damit das NetIO-Modul weiß, 
dass alles funktioniert hat.
Kommt kein "OK", oder z.B. "Error xyz", muss es die Daten anpassen bzw. 
neu versenden.

Wichtig ist, dass du die eingehenden Daten zumindest ganz grob 
überprüfst.
Nicht das jemand deinen Server findet und ihm so eine Anfrage gibt: 
"Messwerte_Speichern.php?sensor=evil_virus&temperatur=kill_server&zeit=n 
ow"  :)

Auch könntest du eine einfache Absicherung der Übertragung einbauen:
Zusätzlich zum "OK" gibt der Server an dein Modul eine zufällige ID 
weiter.
Bei der nächsten Anfrage muss dein Modul dann die ID mit übermitteln, 
oder ggf. sogar mit einem eigenen Schlüssel erweitern.

Bei dieser Methode wärst du darauf angewiesen, dass das Modul von sich 
aus regelmäßig den Server kontaktiert.
IMHO ist das die sinnvollste Lösung, weil der Server wahrscheinlich 
zuverlässiger läuft wie das Modul.

von juppo (Gast)


Lesenswert?

Besten Dank für euere Beiträge .

Mal schauen ob ich ein Beispiel finde.


Thanks Juppo

von Ulrich E. (ulrich_e)


Lesenswert?

Kann dein Webserver php? Falls ja dann wird dir das schon gelingen.
Der PHP Teil ist in jedem PHP Tutorial erklärt.

von juppo (Gast)


Lesenswert?

Grund Software von U.Radig

Habe Javascript für dynamische Werte und normal HTML drin.

Naja habe mich schon tagelang damit beschäftigt und immer ein Stück 
weiter gekommen.

Schauen wir mal.

Gruß Juppo

von Sascha W. (sascha-w)


Lesenswert?

Ulrich meinte wohl eher ob auf deinem Webspace wo die Daten hin sollen 
PHP verfügbar ist.

Sascha

von juppo (Gast)


Lesenswert?

Die normalen Seiten von 1und1


?

von Weingut P. (weinbauer)


Lesenswert?

Wenn Du kein Hostingpaket inklusive PHP hast wird das unter Garantie 
nix.
JS und HTML können keine Daten speichern auf dem Server.
Auch die Auswertung von Formularen geht dann bestenfalls wenn da n CGI 
hinterlegt wird. Damit liese sich mit viel Gewürge was basteln was die 
Daten dann per Mail überträgt ... u.U.
Das Nächste wird dann sein, ob 1und1 in ihrem PHP die Ausführung von 
Cronjobs aktiviert hat und ob die auch 5-minütlich ausgelöst werden 
können ... eher nicht vermutlich.
Ich vermute um die Einrichtung eines kleinen Servers mit DynDNS bei Dir 
daheim wirst Du da nicht herum kommen.

von Juppo N. (juppo)


Lesenswert?

Moin

Ich habe auch noch bei Concept69 Space ,da läüft Xcommerce ,
Dort sind auch Datenbanken angelegt usw.



Also dort eine PHP Programm das dann von meine Webserver Daten hohlt und 
in eine Datei/Datenbank ablegt.
Richtig?

Gruß Juppo

von Björn C. (Firma: privat) (blackmore)


Lesenswert?

Du brauchst noch immer Cronjobs, um Deine php-Seite regelmässig 
aufzurufen...

Das geht mit normalen Spaces nicht...

Ich hatte mal eine Seite gebaut, die alle 5 Minuten von verschiedenen 
Websites die RSS-Feeds ausliest, guckt, ob neue Feeds vorhanden waren 
und bei Bedarf an meinen Pager geschickt hat...

Bei 12 Feeds sind da schnell 3GB im Monat aufgelaufen...

Zum testen könnt ich Dir auf meinem Server die PHP hosten und laufen 
lassen, Datenbankanbindung kannst Du auch haben...

Oder als herunterladbare txt-Datei...

Dafür benötige ich jedoch eine dyndns-Addresse Deines AVR-Webservers... 
>> PM
ohne komm ich ja nicht drauf...
Und welche Daten Du genau benötigst...

von Juppo N. (juppo)


Lesenswert?

Besten Dank für die Anwort

Ich gehe erst mal einen anderen Weg.

Das Modem arbeitet mit Open At .
Mit der WIPSOFT sollte es gehen direkt meine gelüste zu erfüllen.

Nur diese Software ist nicht installiert.

Mal schauen was mir der Support sagt.

Gruß
Juppo

von Christian B. (casandro)


Lesenswert?

Leo-andres H. schrieb:
> Über HTML/JS kannst du von "außerhalb" prinzipiell nichts auf dem Server
> speichern.
> Das wäre ja ein Einfallstor für jeden Hacker...

Nein, HTML unterstützt sehr wohl die Übertragung von Daten vom "Client" 
zum "Server". Der Server kann das beliebig speichern wie und wo er ist. 
Dieses Forum hier funktioniert zum Beispiel so.

Was man machen könnte, wäre einfach die Daten per HTTP-GET auf den 
Server zu laden.

Dazu muss er am "Client" nur eine TCP/IP-Verbindung aufmachen und den 
HTTP-Header abschicken und nach der Antwort einfach die Verbindung 
beenden.

Auf dem Server bräuchte man ein kleines CGI-Skript (oder irgend ein 
anderes 'CGI'-artiges Verfahren) welches die Werte entgegennimmt und 
irgendwie speichert.

FTP ist ungünstig, weil:
1. Die Passwörter im Klartext übertragen werden. (GSM ist ausreichend 
verschlüsselt)
2. FTP ein relativ kompliziertes Protokoll ist.

von Björn C. (Firma: privat) (blackmore)


Lesenswert?

Christian Berger schrieb:
> Auf dem Server bräuchte man ein kleines CGI-Skript (oder irgend ein
> anderes 'CGI'-artiges Verfahren) welches die Werte entgegennimmt und
> irgendwie speichert.

Dann hat er immernoch das Problem, das er regelmässig alle 5 Minuten 
diese CGI-Datei aufrufen muss...

ich kenn das Board und die Firmware nicht - können die sowas???

von Christian B. (casandro)


Lesenswert?

Ja, wie will er denn sonst alle 5 Minuten Werte übertragen? Die Firmware 
muss er sowieso selbst schreiben.

von Björn C. (Firma: privat) (blackmore)


Lesenswert?

Abruf der Daten von extern via PHP-Script, perl oder ähnliches mit 
cron...

wäre für mich die erste Wahl...

Die Daten liegen ja schon als Website vor, man muss nur noch lesen...

von Reinhard S. (rezz)


Lesenswert?

Björn C. schrieb:
> Abruf der Daten von extern via PHP-Script, perl oder ähnliches mit
> cron...
>
> wäre für mich die erste Wahl...
>
> Die Daten liegen ja schon als Website vor, man muss nur noch lesen...

Wärs nicht eher sinnvoll, dem NET-IO zu sagen, das es alle x Minuten 
eine PHP-Seite aufzurufen wie 
"www.trallala.de/skript.php?wert1=30&wert2=40"?

Da braucht man nur PHP auf dem Server, eine Datenbank wäre noch ein 
schönes Extra, ansonsten speichert man eben in einer Datei.

von Juppo N. (juppo)


Lesenswert?

Ja ,das höhrt sich ja gut an.

Um die AT+WIP Commandos zu benutzen muss einen andere Firmenware auf das 
Modem .

Jo ,PHP Programm auf eine Server laufen lassen der dann auf dem AVR Web 
IO Daten ausliest und speichert.

Das wäre fein, aber wie geht das ?

wie kann man zb. die Temperaturwerte des AVR-IO auslesen?

Gruß Juppo

von STK500-Besitzer (Gast)


Lesenswert?

>wie kann man zb. die Temperaturwerte des AVR-IO auslesen?

Dein AVR-NETIO erzeugt doch eine HTML-Seite, oder?
Diese Seite wird von deinem anderen Server in regelmäßigen Abständen 
aufgerufen (dein Webserver arbeitet dabei als Client, so wie du mit dem 
Browser deinen NETIO "ansurfen" kannst).
Aus der HTML-Datei (menschenlesbare Text-Datei) kann man dann die 
entsprechenden DAten herausfiltern.

Einfach wäre es aber, die NETIO-Firmware von Ulrich Radig zu benutzen, 
die auch noch eine HTML-GET-Prozedur mitliefert.
Mit dieser Prozedur kann man vom NETIO Daten an einen anderen Server 
übertragen und erhält von diesem dann eine Antwort (die man aber auch 
ignorieren kann).
Das Thema dieser Prozedur wurde hier im Forum schon besprochen.

Lies dich mal in die GET- und POST-Methode des HTTP ein.

von Juppo N. (juppo)


Lesenswert?

Die Software habe ich geändert ,also müsste da müsste die functionen da 
sein


Für dynamische werte habe ich js eingebaut.

------------------------------------------------------


<form><input type=\"button\" value=\" Print this page \""
"onclick=\"window.print();return false;\" /></form> "

"<script type=\"text/javascript\">"



"HTTPRequest=function(){};"
"HTTPRequest.prototype="
"{"
    "isSupported:function(){return!!this.getConnection()},events:[\"start\", 
\"open\",\"send\",\"load\",\"end\"],filter:"
    "encodeURIComponent,getConnection:function(){var 
i,o=[function(){return new 
ActiveXObject(\"Msxml2.XMLHTTP\")},function(){return new 
ActiveXObject(\"Microsoft.XMLHTTP\")},function(){return new 
XMLHttpRequest()}];for(i=o.length;i--;){try{return o[i]()}catch(e)"
    "{}}return null},formatParams:function(a){var i,r=[];for(i in 
a){r[r.length]=i+\"=\"+(this.filter?this.filter(a[i]):a[i])}return r."
    "join(\"&\")},get:function(a,b,c,d){return 
this.request(\"GET\",a,null,c,null,d)},post:function(a,b,c,d){return 
this.request(\"POST\""
    ",a,b=this.formatParams(b),c,{\"Connection\":\"close\",\"Content-Length\ 
":b.length,\"Method\":\"POST  \"+a+\" HTTP/1.1\",\"Content-Type\""
    ":\"application/x-www-form-urlencoded; 
charset=utf-8\"},d)},request:function(a,b,c,d,g,h)"
  "{var i,o=this.getConnection(),f=d instanceof 
Function;try{o.open(a,b,!h);h||(o.onreadystatechange=function(){var 
s=HTTPRequest.prototype.events[o.readyState];f?d(o):s in d&&d[s]"
    "(o)}); if(g){for(i in{USER_AGENT:0,XUSER_AGENT:0}){i in 
g||(g[i]=\"XMLHttpRequest\")}for(i in 
g){o.setRequestHeader(i,g[i])}}o.send(c);"
    "h&&(f?d(o,oThis):d[\"end\"]&&d[\"end\"](o,oThis));return 
true}catch(e){return false}}};"

von sven s. (Gast)


Lesenswert?

warum so kompliziert.
versuchs mit nem ftp client auf dem net io. der schiebt einfach alle 5 
min die daten zum server und gut is.
ftp is so einfach gestrickt das sollt man noch hinbekommen und wenn 
nicht es gibt bestimmt was fertiges.

gruß sven

von FTP (Gast)


Lesenswert?

laut 
http://www.ulrichradig.de/home/index.php/software/avr-webserver-software
kann der doch schon FTP, also warum nicht nutzen?

von Juppo N. (juppo)


Lesenswert?

So habe noch ein wenig gestöbert

Habe da ein kleine Heftchen mit Ajax Anwendungen.

Hat jemand so eine kleine Routine die mit auf meine server 
ftp://www.webseite/log/

eine file "info.txt" erstellt und "Hallo World" reinschreibt.

Wäre nett.
Juppo

von Tom T. (tfv)


Lesenswert?

Auch mein Problem.

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.