Forum: Mikrocontroller und Digitale Elektronik einfachen http request an DSL Router senden


von Arne (Gast)


Lesenswert?

Hallo,

ich bräuchte kurz Hilfe bei folgenden Vorhaben:

- AVR ist im Dauerbetrieb und sammelt Daten
- er schickt diese per http request alle 5 minuten ins Netzwerk (an 
meine Homepage im Netz)
- Kommunikation soll unidirektional sein (keine Antwort nötig)

D.h. der AVR schickt dann soetwas in der Art an den Router:
"www.meineAngegegebenenDomain/data.php?in=23&in21=345"


Wie realisiere ich das am einfachsten, ohne einen IP-Stack programmieren 
zu müssen? Eine fertige Lib wäre gut.
Es sollte möglichst ein AVR(mega) sein, da ich über STK500 flashen will.

Ideal wäre also dann zB ein ATmega8535 + irgendein_Netzwerk_Controller

Da hier keine großen Daten übertragen werden sollen, ist SPI Anbindung 
sinnvoll. ENC28J60 zieht mir aber zu viel Strom. Gibts was anderes 
(lötbares) ?

von Vka (Gast)


Lesenswert?

ESP8266 kann das alles in einem und ist recht sparsam.

Sicher dass du das so machen willst, ohne Anmeldung, API Key o.ä.?

von c-hater (Gast)


Lesenswert?

Arne schrieb:

> ich bräuchte kurz Hilfe bei folgenden Vorhaben:
>
> - AVR ist im Dauerbetrieb und sammelt Daten
> - er schickt diese per http request alle 5 minuten ins Netzwerk (an
> meine Homepage im Netz)
> - Kommunikation soll unidirektional sein (keine Antwort nötig)

Du hast sowas von keine Ahnung, dass es schon weh tut.

Die Kommunikation einer TCP-Verbindung (und darauf setzt HTTP auf) kann 
niemals unidirektional sein, denn schon der Aufbau der Verbindung 
benötigt beide Datenrichtungen. Suchbegriffe zum Googlen: TCP, SYN, ACK.

Davon abgesehen: bevor diese Verbindung überhaupt aufgebaut werden kann, 
muss erstmal die Zieladresse der Verbindung aus dem DNS-Namen ermittelt 
werden. Das läuft zwar verbindungslos über UDP, aber um die Frage zu 
stellen, muss man senden und um die Antwort zu erfahren, muss man 
empfangen. Also auch wieder bidirektionale Kommunikation nötig...

von Arne (Gast)


Lesenswert?

Vka schrieb:
> ESP8266 kann das alles in einem und ist recht sparsam.
>
> Sicher dass du das so machen willst, ohne Anmeldung, API Key o.ä.?


der ESP ist doch Wireless. Ich will aber wired.

Welche Bedenken wegen der Sicherheit hast du? Die Aufruf-Syntax im 
Detail kenn ja niemand.

von Egon N. (egon2321)


Lesenswert?

Arne schrieb:
> Vka schrieb:
>> ESP8266 kann das alles in einem und ist recht sparsam.
>>
>> Sicher dass du das so machen willst, ohne Anmeldung, API Key o.ä.?
>
> der ESP ist doch Wireless. Ich will aber wired.
>
> Welche Bedenken wegen der Sicherheit hast du? Die Aufruf-Syntax im
> Detail kenn ja niemand.

HTTP

Jeder Depp kann das also mitlesen.

Schau die Anwendungen wie ThingSpeak an, da wurde sowas schon tausendmal 
programmiert, eine weitere Lösung bringt rein gar nichts.

Wirf den AVR raus und setz auf einen ESP8266/32, bis du Ethernet und 
alles eingebunden hast vergehen sonst unzählige Arbeitsstunden, für 
etwas IoT einen Ethernetanschluss zu nutzen ist verschwenderisch.

Das NodeMCU Board ist relativ gut...

von Tobi (Gast)


Lesenswert?

Sowas hab ich vor Jahren mit dem Net-IO gemacht. sammelt bei mir 
Wetterdaten und messwerte von 5 Energiezählern.
Da gibts auch genug Software für, die man leicht auf seine Bedürfnisse 
anpassen kann.
Forum
http://www.net-io.de

von Noch einer (Gast)


Lesenswert?

> ohne einen IP-Stack programmieren zu müssen?

Eine Möglichkeit wäre: Einen fertigen IP-Stack übernehmen statt selbst 
programmieren.

http://www.ethersex.de

von Axel S. (a-za-z0-9)


Lesenswert?

Arne schrieb:
> ich bräuchte kurz Hilfe bei folgenden Vorhaben:

"Kurz". LOL

> - AVR ist im Dauerbetrieb und sammelt Daten
> - er schickt diese per http request alle 5 minuten ins Netzwerk (an
> meine Homepage im Netz)
> - Kommunikation soll unidirektional sein (keine Antwort nötig)

Und schon falsch. Ein HTTP-Server sendet mindestens einen Status 
zurück. Also z.B. 200 für "OK". Nix unidirektional.

> D.h. der AVR schickt dann soetwas in der Art an den Router:
> "www.meineAngegegebenenDomain/data.php?in=23&in21=345"
>
> Wie realisiere ich das am einfachsten, ohne einen IP-Stack programmieren
> zu müssen? Eine fertige Lib wäre gut.

Indem du irgend etwas nimmst, das HTTP und alle darunter liegenden 
Protokollschichten implementiert. Das wären dann also zusätzlich zu HTTP 
mindestens noch TCP und IP. Dazu noch ein low-level Protokoll, also 
entweder IEEE 802.11 (aka WLAN) oder IEE 802.3 (Ethernet) oder 
vielleicht auch SLIP/PPP (IP over Serial).

> Es sollte möglichst ein AVR(mega) sein, da ich über STK500 flashen will.

Dann schau dir vielleicht das AVR NetIO an. Das ist ein AVR mit einem 
ENC28J60 Ethernet Chip.

> Ideal wäre also dann zB ein ATmega8535 + irgendein_Netzwerk_Controller

> Da hier keine großen Daten übertragen werden sollen, ist SPI Anbindung
> sinnvoll. ENC28J60 zieht mir aber zu viel Strom. Gibts was anderes

Nicht, wenn du es an einen AVR tackern willst. Es gibt natürlich 
Alternativen wie etwa den WIZnet W5500, aber wahnsinnig Strom sparen die 
nicht. Ethernet ist nun mal eine stromhungrige Technologie.

von Stefan F. (Gast)


Lesenswert?

Die CrumbX1-Net Module werden mit einem fertigen IP-Stack (von Adam 
Dunkels) verkauft. Fertig programmieren musst du sie aber trotzdem noch 
selbst.

http://www.chip45.com/products/crumbx1-net_avr_xmega_module_board_atmega128d3_embedded_internet_ethernet_webserver_usb.php?de

Ansonsten könnte dieses Ding interessant sein: 
https://www.digi.com/products/embedded-systems/system-on-modules/digiconnectme
Das steuerst du über einen seriellen Port an. Ganz ähnlich wie den 
ESp8266 aber eben mit Kabel statt WLAN.

Mit dem ESP8266 können allerdings sämtliche Alternativen finanziell 
gesehen nicht mithalten. Deswegen würde die Ablehnung von WLAN lieber 
nochmal bedenken.

von Stefan F. (Gast)


Lesenswert?

> Ideal wäre also dann zB ein ATmega8535 + irgendein_Netzwerk_Controller

Dazu habe ich was: http://stefanfrings.de/net_io/index.html

Mit einem ESP8266 als "Netzwerkkarte" an dem bereits vorhandenen AVR 
oder dem ESP8266 alleine ist das allerdings deutlich einfacher 
umzusetzen. Tips dazu siehe http://stefanfrings.de/esp8266/index.html

von Benjamin S. (recycler)


Lesenswert?

Du willst AVR mit ETH verwenden: 
http://www.ulrichradig.de/home/index.php/avr/eth_m32_ex

Da ist alles drinn und du kannst es anpassen.
Ulrich hat hier grandiose Arbeit geleistet, aber in der heutigen IOT 
Welt ist das zu aufwändig, weil es einfachere Lösungen gibt, wie den 
ESP32. Der kann dir auch die Verbindung verschlüsseln (HTTPS).

Du kannst dir auch für ~9 Euro (+SD Card + 5V NT) einen Orange PI kaufen 
oder einen Clone oder sogar den Raspi. Mit dem kannst du z.B. über 
"CURL" die Daten einfach versenden und kannst auch noch andere Dinge 
damit machen.

Die Frage stellt sich eher, wieviel Aufwand du betreiben willst.

Thema unidirectional und bidirectional
Bei HTTP kann der logische Fluss unidiretional sein, aber die 
darunterliegenden Protokolle arbeiten bidirektional.

Wenn du reines unidirektional willst, dann nimm UDP und schreib einen 
UDP Server am Internethost wo deine Homepage drauf ist. Problem: nur 
wenige Hoster lassen es zu, dass du selbst einen UDP oder TCP aufmachst.


=> Ergo überleg dir, worin du deine Kraft reinstecken willst:
- AVR: man lernt viel über die Protokolle / Aufwand hoch
- ESP32: Einfach und schnell / ggf. einarbeiten in die Arduino IDE was 
aber schnell geht
- Raspi + Orange PI / ggf. mehr Leistungsaufnahme (sind 1-2W viel?) + 
ggf. Scripting in Bash/Python/...

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.