Forum: Mikrocontroller und Digitale Elektronik Webserver: Software wie am besten realisieren?


von Jonas (Gast)


Lesenswert?

Hallo,

ich hatte vor über 10 Jahren einen Webserver mit einem Mikrocontroller + 
Lantronix X-Port entwickelt. Damals nutze ich die intelligente Funktion 
des XPORT nicht, ich habe alles im Atmel gehandelt (Daten 1:1 durch den 
X-Port durchgeschleift). Damals alles auf HTML-Basis. Zugriff übers 
Internet ging über einen Dienst, die Zuweisung vom URL zu meinem 
Webserver (aktuelle IP-Adresse), wurde über einen Dienst mit der 
Fritzbox aktiviert. Wie das Gaze heißt, weiß ich gerade nicht, der 
Dienst wurde aber irgendwann vom Anbieter deaktiviert. Ging eigentlich 
relativ gut.

Nun möchte ich einen neuen Webserver machen. Mit X-Port und STM32. 
Zugriff übers Internet soll auch wieder möglich sein. Das ganze Handling 
würde ich am liebsten auch wieder komplett im STM32 machen. Ich kann nur 
C und etwas HTML. Zu Beginn würde ich mal eine primitive Seite mit 
folgendem Inhalt erzeugen:
* Button "LED ein"
* Button "LED aus"
* Bild mit aus- oder eingeschalteter LED als Feedback meiner Elektronik

Fragen:
Ist es sinnvoll, das Ganze wieder mit HTML zu machen? Oder gibt es da 
sinnvollere Varianten, die nicht all zu kompliziert sind?
Was muß ich machen, daß die Seite wieder übers Internet aufgerufen 
werden kann? Leider fehlt mir des genaue Begriff der Dienstleistung, so 
daß ich nicht googeln kann. Die Fritzbox hat bei der täglichen Zuteilung 
der neuen IP jeweils den Dienst benachrichtigt, wie ein Webserver 
erreichbar ist.

Bin eher Hardwareentwickler, daher sind mir die Begrifflichkeiten nicht 
geläufig...

von Atto Admin (Gast)


Lesenswert?

Dyndns und portforwarding.
Oder gar exposed Host.

von PittyJ (Gast)


Lesenswert?

So ganz steige ich nicht durch, was wo wie laufen soll.

Ein kleine Strukturzeichnung wäre nicht schlecht.

Was ist ein X-Port? Ein Protokoll, oder eine STM-Hardware 
Kommunikationseinheit, oder ein Software-Stack?

von MiWi (Gast)


Lesenswert?

PittyJ schrieb:
> So ganz steige ich nicht durch, was wo wie laufen soll.
>
> Ein kleine Strukturzeichnung wäre nicht schlecht.
>
> Was ist ein X-Port? Ein Protokoll, oder eine STM-Hardware
> Kommunikationseinheit, oder ein Software-Stack?

Wenn Du zu morgendlicher Stunde eh noch nicht "durchsteigst" und auch 
keine Ahnung von den verwendeten Teilen hast - warum antwortest Du dann? 
(ernstgemeinte Frage)

von omg (Gast)


Lesenswert?

PittyJ schrieb:
> Was ist ein X-Port? Ein Protokoll, oder eine STM-Hardware
> Kommunikationseinheit, oder ein Software-Stack?

Lantronix X-Port
Google sagt (erster Treffer): https://www.lantronix.com/products/xport/

von Jonas (Gast)


Lesenswert?

Atto Admin schrieb:
> Dyndns

Genau den Begriff habe ich gesucht. Danke! Das wäre schon mal geklärt.

Dann ist noch die Frage offen, ob die Erstellung mit HTML heutzutage 
noch sinnvoll ist.

von STK500-Besitzer (Gast)


Lesenswert?

Jonas schrieb:
> Dann ist noch die Frage offen, ob die Erstellung mit HTML heutzutage
> noch sinnvoll ist.

Womit sonst?
Das versteht jeder Browser.

von STK500-Besitzer (Gast)


Lesenswert?

Noch was vergessen:
STM32 haben so viel "Bumms" (inklusive der dafür notwendigen 
integrierten Bausteine), dass sie sich auch selber um den 
Netzwerkverkehr kümmern können.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Jonas schrieb:
> Zugriff übers Internet soll auch wieder möglich sein.

Ich nutze den Service von afraid.org. Da reicht es, einen String 
hinzusenden, um dem DNS Server die neue IP mitzuteilen. Hier macht das 
ein kleines Skript auf dem Server, aber das kann auch jeder STM32.

> Dann ist noch die Frage offen, ob die Erstellung mit HTML heutzutage
> noch sinnvoll ist.
Warum nicht? Schlimmstenfalls noch ein wenig Javascript, das verlagert 
Rechnerei auf den Client und spart dir Rechenzeit (falls nötig) auf dem 
STM32.
Komplizierter wird Secure HTTP, aber evtl. finden sich da Beispiele im 
Netz.

von Stefan F. (Gast)


Lesenswert?

Ich würde heute keinen X-Port mehr benutzen, sondern einen 
Mikrocontroller mit integrierter Netzwerk-Schnittstelle. Das ist viel 
komfortabler, schneller und billiger.

Mit erstaunen habe ich festgestellt, dass aktuelle Web Browser 
eingebettete Dinge (wie Bilder, CSS, Skipte) nicht mehr zuverlässig 
laden, wenn der Server nur eine einzige gleichzeitige Verbindung 
zulässt. Meine damaligen Versuche mit X-Port waren allerdings auf eine 
Verbindung beschränkt (ich weiß nicht ob das heute noch so ist).

Aufgrund der Preise läuft es bei mir inzwischen immer auf ein ESP8266 
Modul hinaus, auch wenn ich eigentlich Kabel gegenüber WLAN bevorzuge. 
Der Nachfolger ESP32 kann prinzipiell auch Ethernet, leider gibt es aber 
nur wenige Boards mit entsprechendem Anschluss.

Ob für deine Anwendung HTML Sinnvoll ist, weiß ich nicht. Wenn du damit 
Webseiten erzeugen willst, dann ist HTML auf jeden Fall immer noch das 
aktuelle Mittel der Wahl.

Schau dir das mal an: http://stefanfrings.de/esp8266/index.html

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


Lesenswert?

Jonas schrieb:
> Ist es sinnvoll, das Ganze wieder mit HTML zu machen?

Einen Webserver ohne HTML? Kann man machen, nur wird es dann kein Web. 
Denn zum Web wird es durch Hyperlinks. Und die sind nun mal HTML.

von Stefan F. (Gast)


Lesenswert?

Axel S. schrieb:
> Einen Webserver ohne HTML? Kann man machen, nur wird es dann kein Web.
> Denn zum Web wird es durch Hyperlinks. Und die sind nun mal HTML.

Rein theoretisch könnte er auch andere Dokument-Formate benutzen, zum 
Beispiel PDF. Das unterstützt auch Hyperlinks.

Sehr praktisch finde ich, dass die Web browser inzwischen alle SVG 
darstellen können. Damit ist das Generieren von Diagrammen einfach, man 
braucht keine Grafik-Bibliothek.

Die Grafiken können Bestandteil des Seitenquelltextes sein, oder als 
separate *.svg Datei wie andere Bilder nachgeladen werden.

https://wiki.selfhtml.org/wiki/SVG

von Oliver S. (phetty)


Lesenswert?

Wie viel Stunden gebt ihr dem Konstrukt bis es bei shodan auftaucht?

von Stefan F. (Gast)


Lesenswert?

Das solche Sachen nicht direkt ins Internet gehören, halte ich für eine 
Selbstverständlichkeit. Aber darüber kann man nicht diskutieren. Wer das 
machen will macht es. Bedenkenträger sind hier unerwünscht.

von Pandur S. (jetztnicht)


Lesenswert?

HTML ? Nun, das
- HTML macht die statische Seite.
- CSS macht die formatierung
- Javascript macht dynamische Geschichten
- AJAX mach das Nachladen von content zur Laufzeit der Seite.

Wobei das untere jeweils auf der Summe der Oberen aufbaut.

Normalerweise, auf einem normalen Server, laesst man ein php laufen, 
welches die Seiten, resp, den serverbezogenen Content, wie Datenbank 
Abfragen bereitstellt.
Auf einem Controller nimmst du deine eigene Controller Sprache, und 
lieferst controllerspezifischen Inhalt, zB Messwerte, Grafiken. Dazu 
musst du irgendwelche Anweisungen in den Seitencode einfuegen, welche 
der Seiteninterpreter versteht. Ich empfehle einen Blick in die 
Funktionsweise und den Aufbau von php.

von Stefan F. (Gast)


Lesenswert?

Pandur S. schrieb:
> Normalerweise ... laesst man ein php laufen

PHP halte ich nicht mehr für Zeitgemäß, obwohl ich es früher auch gerne 
selbst verwendet habe. Ich glaube NodeJS und darauf aufbauende 
Frameworks sind gerade angesagt.

von Johannes S. (Gast)


Lesenswert?

patch hack patch? Nagut, sowas wie FHEM nutzt das afaik auch noch.

Auf keinen Fall Portfreischaltungen, siehe z.B.
https://forum.iobroker.net/topic/17258/hinweis-gefahren-durch-port-freischaltungen

Es gibt sichere VPN oder IoT Cloud Lösungen. Relativ einfach ist etwas 
wie ioBroker mit der Cloud zu Nutzen, da kann man einfach eine HTML Visu 
erzeugen (VIS Adapter) und auf die auch von extern zugreifen. Den 
Controller im LAN dann per MQTT oder einfaches HTML get/post, native TCP 
oder UDP steuern. Per MQTT gehen dann auch die eigenen Bastellösungen 
mit ESP oder STM32 mit LAN.
Hardware gabs mal günstig in Form der Nucleo F7 Boards mit Ethernet, 
aber wegen Chipkrise werden mittlerweile auch diese geschlachtet und 
sind größtenteils ausverkauft.
Bei Ali gibts aber sicher noch F407 Boards die man durch anklemmen eines 
LAN8720  Phy Boards auch relativ einfach ins heimische Netz bekommt.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Der Thread ist schon zwei Tage alt, aber trotzdem:

> Oder gar exposed Host.
Nö, auf keinen Fall wenn man es nicht unbedingt braucht. Wieso sollte 
man auf die nützliche Filterfunktion eines Routers verzichten? Das macht 
keinen Sinn wenn man nur etwas HTTP will.

Wenn ich überlege, sowas auf einem STM32 zu machen, dann würde ich mir 
einen Controller suchen, der LAN beherrscht. Nicht die Notlösung über 
den XPort mitschleppen, nur weil der vorher genutzte AVR nicht für LAN 
gebaut ist.

Und ohne HTML geht es nicht, das ist nunmal die "Sprache" des Internets. 
Sicherlich könnte man es auch auf Zwang umgehen und irgendwas anderes 
(sowas wie Flash früher) zurechtgurken... aber sinnvoll ist das auch 
nicht.

Sowas wie PHP steht auf einem Controller überhaupt nicht zur Debatte. 
Der Controller kann kein PHP ausführen solange man da keinen 
PHP-Interpreter für schreibt. Man muß das empfangene HTTP-Formular mit 
dem Controller schon selbst zerpflücken.

Man darf da auch nicht zu komplex denken. Man bekommt vom Client eine 
"Textdatei" und muß darauf mit dem gewünschen HTML-Text antworten. Mehr 
ist es im Grunde nicht, die Umsetzung von TCP/IP auf so einem Controller 
ist das eigentliche Problem, oder die grundlegenden Netzwerkfunktionen.

von Purzel H. (hacky)


Lesenswert?

Nicht ganz. Der Server soll ja etwas zur Verfuegung stellen. zB 
Messwerte, eine Graphik von Messwerten, einen Audio- oder Videostream. 
Dazu schreibt man eine Webseite, welche per irgendwelchen Token diese 
Daten waehrend der Auslieferung ansaugt und in die ansgelieferte Seite 
einfuegt. Der ausliefernde Task parst also die Seite und fuellt was auch 
immer ein. Meine erwaehnung von php war um das Konzept zu zeigen. Das 
kann viel einfacher sein. zB ein <?aaa %data ?> oder was auch immer.

von quotendepp (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> NodeJS und darauf aufbauende Frameworks sind gerade angesagt

"angesagt" ist (meine meinung) das richtige wort. wird halt grad als sau 
durchs dorf getrieben.

ich persönlich würde mir das nicht antun, sondern lieber bei etwas 
bewährtem bleiben. auch wenn ich für altmodisch gehaltem werde...

und ja, meine tastatur ist kaputt

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

> Nicht ganz. Der Server soll ja etwas zur Verfuegung stellen.
> zB Messwerte, eine Graphik von Messwerten, einen Audio- oder
> Videostream.
Das reine zur-Verfügung-Stellen ist kein Problem. Das sind nur Daten, 
die man aus einer Quelle liest und passend adressiert ins Netzwerk 
schiebt.

Die Probleme fangen an, wenn ich z.B. eine Grafik mit irgendwelchen 
Messwerten aus dem Prozessor quetschen möchte. Da muß man halt die 
komplette Grafik selbst generieren und die Bilddaten (evtl. PNG) daraus 
erzeugen. Das ist auf einem µC evtl. ein Problem, könnte man aber 
vielleicht auf den Client auslagern. Sprich man liefert dem Client nur 
die Daten und irgend ein Programm auf dem Client erzeugt daraus die 
Grafik.

Einen Audio- oder Videostream bekommt man nur aus dedizierter Hardware, 
für den Prozessor ist das ein Durchreichen, evtl. mit 
Zwischenspeicherung... Da wird dann nicht die Rechenleistung zum 
Problem, sondern die Datenmenge.

> Meine erwaehnung von php war um das Konzept zu zeigen. Das kann
> viel einfacher sein. zB ein <?aaa %data ?> oder was auch immer.
Ist schon viel zu kompliziert gedacht. Man ist da völlig flexibel wie 
man sein HTML erzeugt oder formatiert. Man muß sich nur an das HTML 
ansich halten, so daß der Browser es versteht. Aber serverseitig gibts 
kein <?blah> oder was auch immer. Der Browser schickt Dir einen 
HTTP-Request und man muß mit einer HTTP-Response darauf antworten.

https://www.tecchannel.de/a/hypertext-transfer-protocol,401210,4

Wie du das auf dem µC anstellst ist ganz allein dein Ding. Man bekommt 
da auch keine Hilfen. Kein Framework, keine Interpretersprache.

von Jobst M. (jobstens-de)


Lesenswert?

Jonas schrieb:
> der Dienst wurde aber irgendwann vom Anbieter deaktiviert.

Dyndns wurde irgendwann blöd und auch ich bin dann zu anderen Anbietern 
gewandert.
Es gibt da einige, auch kostenlose.

Jonas schrieb:
> Ist es sinnvoll, das Ganze wieder mit HTML zu machen? Oder gibt es da
> sinnvollere Varianten, die nicht all zu kompliziert sind?

Wenn Du auf Deinem Endgerät (Client) ein Browser nutzen möchtest bzw. 
unterschiedliche Clientplatformen benutzen möchtest, ist Browser und 
dann auch HTML das Mittel der Wahl.
Auch wenn Du Buttons und Bilder haben möchtest.

Der Router sorgt dafür, dass die Pakete bei Deinem Server landen.
Für die Kommunikation reichen Sockets.
Der Webserver nimmt Dir nur diese Arbeit und noch etwas mehr ab.

Jonas schrieb:
> Die Fritzbox hat bei der täglichen Zuteilung
> der neuen IP jeweils den Dienst benachrichtigt, wie ein Webserver
> erreichbar ist.

Tägliche Zuteilung sollte aber mittlerweile gegessen sein. Zumindest die 
beiden Großen trennen mittlerweile nach 180+ Tagen.

Matthias S. schrieb:
> Ich nutze den Service von afraid.org. Da reicht es, einen String
> hinzusenden, um dem DNS Server die neue IP mitzuteilen.

Das geht auch bei allen anderen so. Kümmert sich aber idR. der Router 
drum.


Gruß
Jobst

von Einer (Gast)


Lesenswert?

Purzel H. schrieb:
> Dazu schreibt man eine Webseite, welche per irgendwelchen Token diese
> Daten waehrend der Auslieferung ansaugt und in die ansgelieferte Seite
> einfuegt.

Nein.

HTML-Seiten auf dem Mikrocontroller zu erzeugen ist einfach nur 
umständlich und lahm.

Der Aufbau ist ein anderer: Zum einem liefert der Mikrocontroller 
einfach nur statische Dateien aus, die man zweckmäßigerweise auch über 
HTTP updaten kann. Parallel dazu stellt der Mikrocontroller auf einer 
bestimmten URL eine kleine API zur Verfügung, auf der ein Client z.B. 
die Temperatur als JSON oder im Extremfall als einzeilige Textdatei 
abholen kann.

Der Browser zieht sich dann einfach nur die HTML-Seiten, darin befindet 
sich ein wenig Javascript, das dann über die API-URL vom Mikrocontroller 
die Messwerte abholt und dann die tollsten Grafiken etc. malt. D.h. das 
aufbereiten der Daten findet im Browser statt. Dort ist Rechenzeit quasi 
grenzenlos vorhanden.

Das ganze kann dann soweit gehen, dass die ganze HTML-Anwendung auf 
einem Server im Internet (oder im lokalen Netz) liegt, und die 
HTML-Datei vom Mikrocontroller nur eine kleine "Boot-HTML" ist, die die 
HTML-Anwendung eben von einem anderen Server nachladen lässt. Das hat 
den Vorteil, dass der Mikrocontroller nur kleine Datenmengen liefern 
muss, und ein Update der HTML-Anwendung nicht auf dem Mikrocontroller 
erfolgen muss, sondern auf dem Server vom dem der Mikrocontroller den 
Browser nachladen lässt.

von svensson (Gast)


Lesenswert?

Man kann sich das Leben auch einfacher machen. Einen WizNet W5500 mit 
dem MC verbinden. Und schon ist auch ein AVR netzwerkfähig.

Ein Webserver ist ganz einfach zu programmieren, wenn man auf den 
graphischen Schnickschnack verzichtet. Der Webserver gibt letztlich eine 
ganz simple Textdatei aus.
Das oben genannte Beispiel läßt sich umformulieren in eine Webseite mit 
zwei Links "LED einschalten" und "LED ausschalten" plus einer Zeile mit 
"Status: die LED ist EIN". Und schon ist es nur noch reiner Text. 😀

Der andere - bereits auch schon angesprochene - Weg wäre, einen 
Standard-Web-Server zu nehmen, der seinerseits den MC abfragt und dann 
die Meßwerte aufbereitet; das kann durchaus auch während der 
Seitenausgabe geschehen, sofern die Kommunikation zwischen Server und MC 
nicht länger als ein paar Sekunden dauert. Der Vorteil an diesem Ansatz 
wäre, daß hier viele verschiedene Hochsprachen zur Verüfung stehen (oder 
auch komplette Frameworks), wodurch sich nahezu beliebig komplexe Seiten 
erstellen lassen, die mit einem MC niemals möglich wären. Und durch die 
Verwendung von Standardlösungen gibt es unzählige Komponenten, 
Bibliotheken, Beispiele usw., die unheimlich viel Zeit einsparen.

Für den dritten Weg, einen umfangreicheren Webserver auf dem MC zu 
programmieren, wäre ich einfach zu faul.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Jobst M. schrieb:
> Kümmert sich aber idR. der Router
> drum.

Viele der Plastikrouter sind da unflexibel und haben nur ein paar 
vorverdrahtete Anbieter für dyn. DNS. Aber da bei mir sowieso ein Server 
arbeitet, macht der das im Hintergrund gleich mit.
Mein kleinster Webserver ist ein ESP8266 mit einem ATTiny 4313 :-P

: Bearbeitet durch User
von Ditus (Gast)


Lesenswert?

Kann man nicht HTML-Seiten in separater Datei im Projektpfad speichern 
und mit dem C-Code darauf zugreifen? Die Implementierung einer 
HTML-Datei im C-File ist extrem unübersichtlich, wenn im String z.B. " 
Zeichen enthalten sind. Die muß man ja alle mit \" ersetzen. Ich würde 
die Zeichen der Datei Zeichen für Zeichen auslesen und bei einem " 
einfach \" ersetzen.

Für auszugebende variable Texte wie z.B. Spannungswerte würde ich eine 
Kennung ergänzen, an deren Stelle ich dann den anzuzeigenden Wert 
ersetze. In meinem Beispiel wäre die Kennung xxx1.
1
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
2
<html>
3
<head>
4
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
5
<title>Meldung</title>
6
7
<body text="#000000" bgcolor="#FF6666" link="#0000EE" vlink="#551A8B" alink="#FF0000">
8
<font face="Arial,Helvetica">Parameter1 = xxx1</font>
9
</body>
10
</html>

Würde das prinzipiell gehen?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ditus schrieb:
> Die Implementierung einer
> HTML-Datei im C-File ist extrem unübersichtlich, wenn im String z.B. "
> Zeichen enthalten sind. Die muß man ja alle mit \" ersetzen. Ich würde
> die Zeichen der Datei Zeichen für Zeichen auslesen und bei einem "
> einfach \" ersetzen.

Naja, ob das so sinnvoll ist, muss jeder für sich entscheiden. Mir ist 
es lieber, wenn da nicht noch ein extra Softwarestück sich um die " 
kümmern muss. 'Extrem unübersichtlich' finde ich das nicht.

Ditus schrieb:
> Würde das prinzipiell gehen?

Kann man so machen, aber statt einem dicken Textblock kann es 
platzsparender sein, wenn man Dinge, wie z.B. Header und Footer 
wiederverwenden kann. Strings hintereinander zu senden und Variable 
einfach dazwischenzuschieben, ist auch nicht schwierig.

von Johannes S. (Gast)


Lesenswert?

die Cortex-M haben auch genug Power für mehrere TCP Verbindungen um 
damit Websockets zu realisieren. Dann kann der HTML Code auch JS 
enthalten der die Daten per Websocket geschickt bekommt und mit schönen 
Widgets darstellen kann.

von MeinName (Gast)


Lesenswert?

Hi, ich würde einen Webserver auch wenn er nur eine Seite HTML 
ausliefert nicht direkt in das Internet hängen. Ich betreibe auch 
Webserver im Internet und wenn ich den traffic sehe den die Bots 
erzeugen und was die alles probieren. Ich würde es nicht tun. Lieber 
einen gut gesicherten Server mit HTTPS der die Daten vom MC geliefert 
bekommt. Ein VPS Server kostet 1€ im Monat + Domain wenn man will.

MC mit MQTT der durch eine VPN oder SSH Verbindung vom Router zum 
Webserver die Daten schickt. Dann auf dem Server die Daten in eine 
Datenbank und gut is. Da kannst du dir Entspannt was für die Darstellung 
aussuchen.
So würde ich das machen.

Dann kann der MC auch recht schmal dimensioniert werden. Aber auch die 
Nutzung und Sammlung der Daten von mehreren MCs ist einfach umzusetzten.
Außerdem ist man von Spezialisierten Dienststleistern unabhängig.

Klein anfangen und es erst mal in den eigenen vier Wänden testen, dann 
kann man es umziehen.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Ich hätte keine Probleme damit, einen einfachsten AVR-Webserver direkt 
ins Netz zu stellen. Damit der für irgendwas zur Gefahr werden kann, muß 
er die Angriffe erstens verstehen (die meistens gegen unsichere 
Web-Anwendungen oder Software auf dem Server gefahren werden) und 
zweitens imstande sein, den Angriff auch auszuführen. Das fehlt auf 
einem Mini-AVR-Webserver alles, der hat kein Betriebssystem was man 
angreifen könnte, da läuft kein MySQL, kein SMTP-Server, keine 
Konsole... Da hätte ich vor stärkeren IoT-Geräten im Netz mehr Respekt, 
die können meistens mehr als sie müssten. Deren Controller/SoC sind oft 
stark genug, daß mindestens irgend ein Linux-Derivat drauf läuft, mit 
dem sich Angriffe gegen das eigene Netz ausführen lassen könnten wenn 
jemand darauf Zugriff bekommt.

von svensson (Gast)


Lesenswert?

Ditus schrieb:
> Kann man nicht HTML-Seiten in separater Datei im Projektpfad speichern
> und mit dem C-Code darauf zugreifen?

Man kann dem MC z.B. eine SD-Karte spendieren und darauf dann die 
statischen Teile der Webseite ablegen. Das hat den Vorteil, daß sich die 
statischen Teile gemütlich an einem PC erzeugen und auf die SD-Karte 
kopieren lassen. Nachteil ist natürlich, daß die Hardware etwas 
komplexer wird und der Code natürlich auch.

Ben B. schrieb:
> Da hätte ich vor stärkeren IoT-Geräten im Netz mehr Respekt

Ich fürchte auch, daß wir irgendwann alle draufgehen werden, weil 
irgendein Dödel vergessen hat, den Webserver im Stromzähler abzuschalten 
und der mit Standard-Paßwort läuft.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Na davon werden wir nicht gleiche alle draufgehen, aber mich würde es 
nicht im geringsten wundern, wenn sich dann irgendwelche Dödels 'nen 
Spaß draus machen, solche Dinge zu manipulieren oder eine große Anzahl 
solcher Geräte für eigene Zwecke missbrauchen. Für sowas wie 
DDOS-Angriffe braucht das angreifende System weder Intelligenz noch 
Rechenleistung.

von Stefan F. (Gast)


Lesenswert?

Ditus schrieb:
> Kann man nicht HTML-Seiten in separater Datei im Projektpfad speichern
> und mit dem C-Code darauf zugreifen?

Der Mikrocontroller hat keinen Zugriff auf deine Quelltexte. Bei ESP 
Modulen ist der übliche Weg, ein Dateisystem im Flash Speicher anzulegen 
und die Datei dort abzulegen. Darauf hat dir Firmware dann auch Zugriff.

Ditus schrieb:
> Für auszugebende variable Texte wie z.B. Spannungswerte würde ich eine
> Kennung ergänzen, an deren Stelle ich dann den anzuzeigenden Wert
> ersetze.

Da wird schnell kompliziert, insbesondere wenn die Datei nicht ins RAM 
passt. Machbar ist es, ich habe das mal auf einem ATmega644 gemacht. 
Dort habe ich die HTML Vorlage in relativ kleinen Stücken verarbeitet. 
An jedem Platzhalter oder nach Erreichen eines Limits, habe ich einen 
Schnitt gemacht.

von Dittus (Gast)


Lesenswert?

MeinName schrieb:
> Hi, ich würde einen Webserver auch wenn er nur eine Seite HTML
> ausliefert nicht direkt in das Internet hängen. Ich betreibe auch
> Webserver im Internet und wenn ich den traffic sehe den die Bots
> erzeugen und was die alles probieren. Ich würde es nicht tun. Lieber
> einen gut gesicherten Server mit HTTPS der die Daten vom MC geliefert
> bekommt. Ein VPS Server kostet 1€ im Monat + Domain wenn man will.
>
> MC mit MQTT der durch eine VPN oder SSH Verbindung vom Router zum
> Webserver die Daten schickt. Dann auf dem Server die Daten in eine
> Datenbank und gut is. Da kannst du dir Entspannt was für die Darstellung
> aussuchen.
> So würde ich das machen.

Das mit dem VPS-Server klingt sehr interessant. Was ist denn genau der 
Unterschied zu einem Webspace z.B. bei Domainfactory, wo man sich seine 
Homepage drauf laden kann? Ich habe eine private Internetseite dort. 
Vielleicht kann man diese ja dafür nutzen.

Wie muß man die Internetseite aufbauen, damit variable Dinge vom MC 
angezeigt werden können? Und wie bringt man die Daten mit MQTT vom MC zu 
der Homepage? Fragt die Homepage den MC ab, wenn jemand auf der Homepage 
ist? Oder muß der MC immer zyklisch senden? Gibt es da einfache 
Beispiele? Ist vermutlich nicht wenig Arbeit, bis man sowas realisiert 
hat.

von Stefan F. (Gast)


Lesenswert?

Dittus schrieb:
> Wie muß man die Internetseite aufbauen, damit variable Dinge vom MC
> angezeigt werden können?

Mit AJAX: https://de.wikipedia.org/wiki/Ajax_(Programmierung)

> Fragt die Homepage den MC ab

Ja

> Oder muß der MC immer zyklisch senden?

Das geht nicht beim HTTP Protokoll. Es ist immer der Browser, der eine 
Kommunikation beginnt. In JavaScript kann man Timer benutzen, um das zu 
wiederholen.

Meine Homepage benutzt AJAX um das Hauptmenü an der linken Seite 
nachzuladen:

http://stefanfrings.de/ (Quelltext anzeigen)
Das JavasScript dazu ist http://stefanfrings.de/navigation.js

Ich benutze da noch eine ziemlich alte Methode von damals als die Seite 
neu war. Statt XMLHttpRequest bzw ActiveX benutzt man heute 
Ajax.Request. Das prinzip bleibt aber gleich.

Falls du inm Log des Browsers eine Fehlermeldung mit dem Stichwort 
"CORS" bekommst, dann schau dort: 
https://de.wikipedia.org/wiki/Cross-Origin_Resource_Sharing

von Johannes S. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
>> Oder muß der MC immer zyklisch senden?
>
> Das geht nicht beim HTTP Protokoll.

oder die Websockets, auch schon seit vielen Jahren in allen Browsern 
vorhanden, wenn man nicht noch mit Netscape unter OS/2 unterwegs ist. 
Das sollte aber nicht mehr der Maßstab sein :)

von Mike J. (linuxmint_user)


Lesenswert?

Jonas schrieb:
> Ist es sinnvoll, das Ganze wieder mit HTML zu machen? Oder gibt es da
> sinnvollere Varianten, die nicht all zu kompliziert sind?
> Was muß ich machen, daß die Seite wieder übers Internet aufgerufen
> werden kann?

Du kaufst dir einen RaspBerry Pi, entweder den RPi 4 oder den RPi Zero 2 
W.
Dort installierst du dann den Apache2 Server (sudo apt-get install 
apache2 php mysql) und schiebst dann in das Verzeichnis /var/www/html 
deine Webseite.

Du kannst dann über die Webseite und mittels PHP die I/O-Pins ein und 
aus schalten oder auch einen Temperatur/Luftfeuchte oder CO2-Sensor 
abfragen und auf deiner Webseite die Daten darstellen.

Programmiere das nicht selbst, denn es gibt fertige und gute Mittel um 
das alles zu realisieren.

Du kannst dort dann auch z.B. Nextcloud installieren oder Pi-Hole oder 
du kannst eine Webcam an den Pi antöpseln und dir das Bild oder den 
Videostream über das Internet auf dein Handy/Laptop streamen.

von Jonas (Gast)


Angehängte Dateien:

Lesenswert?

Nun habe ich noch Fragen zu DynDNS:

Ich habe mir nun den Dienst https://dyndnsfree.de angeschaut. Anbei die 
Preisliste. Ich habe meinen Domain bei Domainfactory. Dann muß ich nach 
"Externe Domain" schauen, daß da nicht "nein" steht? Korrekt? Dann wäre 
es der Tarif mit 0,99 € pro Monat. Der Betrag ist vollkommen OK.

Bei www.anydns.info/produkte.php kostet das preiswerterste Variante 1,50 
€ pro Monat, wäre auch in Ordnung.

Hat jemand Erfahrungen mit den beiden Dienstleistern?
Abgesehen von noch anderen, sind die beiden in der Fritzbox gelistet.

von Εrnst B. (ernst)


Lesenswert?

Jonas schrieb:
> Hat jemand Erfahrungen mit den beiden Dienstleistern?

https://freedns.afraid.org/

Läuft seit vielen vielen Jahren ohne jeden Schluckauf.

Kannst dort einen Namen unter einer deren kostenlosen Domains nehmen, 
und per CNAME eine subdomain deiner domainfactory-domain dahin zeigen 
lassen.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Wenn Du bereits eine Domain hast, kannst Du Dir auch ein 
Quasi-DynDNS-System selbst stricken. Ich habe sowas zum Testen mehrfach 
gemacht um anderen den Projektfortschritt zu demonstrieren oder einen 
Testbetrieb auf dem Heimserver zu ermöglichen.

Dazu einfach in einem Frame auf Deine aktuelle IP umleiten, die einem 
Script auf dem Domain-Server mitgeteilt wird wenn sie sich ändert. Eine 
einfache Weiterleitung ginge auch, dann erscheint halt die IP in der 
Adresszeile, wenns nicht stört dann kein Problem, bei HTTPS kann sein, 
daß es gar nicht als Frame geht bzw. ich habe auf meinem Heimserver 
sowieso nur ein selbstsigniertes Zertifikat, was nicht ohne 
Ausnahmeregel akzeptiert wird.

Ist ein DynDNS für Arme, funktioniert aber sehr gut solange man nur 
HTTP(S) will, weitere Dinge wie eMail oder irgendwelche anderen 
Anwendungen gehen aber nicht so einfach.

von Jobst M. (jobstens-de)


Lesenswert?

Εrnst B. schrieb:
> https://freedns.afraid.org/
>
> Läuft seit vielen vielen Jahren ohne jeden Schluckauf.

ACK

Hier auch.

Gruß
Jobst

von Stacker (Gast)


Lesenswert?

STK500-Besitzer schrieb:
> Noch was vergessen:
> STM32 haben so viel "Bumms" (inklusive der dafür notwendigen
> integrierten Bausteine), dass sie sich auch selber um den
> Netzwerkverkehr kümmern können.

Was taugen eigentlich die IP-Stacks dafür?

Fallen die gleich um wenn man die mal etwas anpustet, die Leitung 
Schluckauf hat, die Pakete ein klein wenig anders aus sehen wie das was 
gängige Linux und Windows Kisten so produzieren?

von Stefan F. (Gast)


Lesenswert?

Stacker schrieb:
> Was taugen eigentlich die IP-Stacks dafür?

Welche sind denn "die"?

Mein Eindruck von Adam Dunkels µIP und lwIP ist ein guter.

von Jobst Q. (joquis)


Lesenswert?

Mit Bedienung von Anlagen und Anzeige von Daten über beliebige Browser 
habe ich mich auch schon lange beschäftigt und es funktioniert auch 
recht gut. Da könnte ich auch einige gute Tips geben.

Mir stellen sich hier aber einige Fragen:

Warum muss der Webserver unbedingt auf einen Mikrocontroller?

Mit einem Raspi kann man fertige und ausgefeilte Webserver wie lighttpd 
nutzen und sich softwaremäßig voll auf Bereitstellung der benötigten 
Dateien konzentrieren.

Wozu soll es gut sein, eine technische Anlage ins Internet zu bringen?

Damit jeder kleinere Möchtegern-Hacker damit rumspielen kann? So etwas 
gehört ins lokale Netz, und wenn man selbst aus aller Welt darauf 
zugreifen will, gibt es dafür VPN.

von Stefan F. (Gast)


Lesenswert?

Jobst Q. schrieb:
> Wozu soll es gut sein, eine technische Anlage ins Internet zu bringen?

Sehr gute Frage.

von Ben K. (bkaiser)


Lesenswert?

Hi,

unabhängig vom Sicherheitskonzept: Tue dir selbst einen Gefallen und 
nehme einen ESP32.

MfG,

Ben

von Johannes S. (Gast)


Lesenswert?

Stacker schrieb:
> Was taugen eigentlich die IP-Stacks dafür?

lwIP steckt in Unmengen von Industrie und Consumerprodukten, kann also 
so schlecht nicht sein.

von Markus (Gast)


Lesenswert?

Johannes S. schrieb:
> Stacker schrieb:
>> Was taugen eigentlich die IP-Stacks dafür?
>
> lwIP steckt in Unmengen von Industrie und Consumerprodukten, kann also
> so schlecht nicht sein.

So wie Windows auch auf vielen Geräten in der Industrie läuft?

von Jonas (Gast)


Lesenswert?

en B. schrieb:
> Wenn Du bereits eine Domain hast, kannst Du Dir auch ein
> Quasi-DynDNS-System selbst stricken.

Mir ist es lieber, wenn ich einen Dienst nehme, der in der Fritzbox 
bereits vordefiniert ist. Das ist weniger Streß für mich, das ist mir 
die monatliche Gebühr wert. Ich denke alles andere kostet für mich viel 
Zeit.

Nochmals die Frage: Hat jemand Erfahrungen mit folgenden Dienstleistern?
* https://dyndnsfree.de
* www.anydns.info/produkte.php

von Matthias S. (da_user)


Lesenswert?

Jonas schrieb:
> Mir ist es lieber, wenn ich einen Dienst nehme, der in der Fritzbox
> bereits vordefiniert ist.

Hat nicht AVM auch einen (kostenlosen) DynDNS-Dienst? Oder ist der so 
kastriert, dass er nicht für solche Sachen benutzbar ist?

Ich habe mir dazu mal https://www.ddnss.de/ eingerichtet.

von Rene K. (xdraconix)


Lesenswert?

Matthias S. schrieb:
> Hat nicht AVM auch einen (kostenlosen) DynDNS-Dienst? Oder ist der so
> kastriert, dass er nicht für solche Sachen benutzbar ist?

Nutze ich hier, funktioniert tadellos und tut genau das was es soll.

Markus schrieb:
> So wie Windows auch auf vielen Geräten in der Industrie läuft?

Jep, und ist ja auch nicht schlecht.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

> Mir ist es lieber, wenn ich einen Dienst nehme, der in der
> Fritzbox bereits vordefiniert ist. Das ist weniger Streß für
> mich, das ist mir die monatliche Gebühr wert.
Hast Du prinzipiell recht, allerdings hat das bei mir mehrmals nicht 
zuverlässig funktioniert, sprich die neue IP wurde nicht übermittelt.

Das hat dazu geführt, daß ich erst einen eigenen Updater für dyndns.org 
geschrieben habe und der ließ sich natürlich prima für das eigene 
Weiterleitungssystem wiederverwenden.

von Εrnst B. (ernst)


Angehängte Dateien:

Lesenswert?

Jonas schrieb:
> Mir ist es lieber, wenn ich einen Dienst nehme, der in der Fritzbox
> bereits vordefiniert ist. Das ist weniger Streß für mich, das ist mir
> die monatliche Gebühr wert. Ich denke alles andere kostet für mich viel
> Zeit.

Du musst es nur einmal in deiner Fritzbox eintragen. Einmal.
Und und um die drei Eingabefelder zu umgehen, willst du monatlich Geld 
abdrücken?

Bild geklaut von 
https://tobiwashere.de/2014/03/fritzbox-dyndns-mit-afraid-org/ , erster 
Google-Treffer.

von Matthias S. (da_user)


Lesenswert?

Hat die Fritzbox nicht sogar VPN?

Wenn der Webserver nicht für jeden von außen erreichbar sein muss, würde 
ich nämlich auch so eine VPN-Verbindung bevorzugen.

von Jobst M. (jobstens-de)


Lesenswert?

Jonas schrieb:
> Mir ist es lieber, wenn ich einen Dienst nehme, der in der Fritzbox
> bereits vordefiniert ist.

Würde mich wundern, wenn freedns.afraid.org von der Fritzbox nicht 
unterstützt wird.
Das Prinzip der Anmeldung ist doch bei allen Diensten gleich.

Ben B. schrieb:
> Das hat dazu geführt, daß ich erst einen eigenen Updater für dyndns.org
> geschrieben habe und der ließ sich natürlich prima für das eigene
> Weiterleitungssystem wiederverwenden.

Ich habe 20 Jahre lang einen selbstgebauten Router verwendet. (P133, 
64MB RAM)
Auch hier lief ein selbstgeschriebenes bash-script, welches irgendwann 
auch mit den widrigsten Anforderungen der Anbieter umgehen konnte.

Mit der Anforderung für Gigabit wurde der Rechner nun in den Ruhestand 
geschickt und ein Router als Gerät angeschafft. Auch wenn ich mich über 
fehlende Funktionen ärgere.
Da lief das Script dann natürlich nicht mehr.

Εrnst B. schrieb:
> Du musst es nur einmal in deiner Fritzbox eintragen. Einmal.
> Und und um die drei Eingabefelder zu umgehen, willst du monatlich Geld
> abdrücken?

Wieso? Muss man die Felder dann nicht mehr ausfüllen?

Matthias S. schrieb:
> Wenn der Webserver nicht für jeden von außen erreichbar sein muss, würde
> ich nämlich auch so eine VPN-Verbindung bevorzugen.

Aber auch dafür benötigt er einen dynamischen name server. Es sei denn, 
er hat eine feste IP. (Was man idR. nur hat, wenn man diese Fragen nicht 
mehr stellen muss.)

Gruß
Jobst

von Lubo (Gast)


Lesenswert?

Matthias S. schrieb:
> Hat die Fritzbox nicht sogar VPN?
>
> Wenn der Webserver nicht für jeden von außen erreichbar sein muss, würde
> ich nämlich auch so eine VPN-Verbindung bevorzugen.

Oder einen SSL Reverse Proxy davor der Client Zertifikate fordert.

von Εrnst B. (ernst)


Lesenswert?

Jobst M. schrieb:
> Εrnst B. schrieb:
>> Du musst es nur einmal in deiner Fritzbox eintragen. Einmal.
>> Und und um die drei Eingabefelder zu umgehen, willst du monatlich Geld
>> abdrücken?
>
> Wieso? Muss man die Felder dann nicht mehr ausfüllen?

Nö. Wenn man auf "Übernehmen" geht, speichert die Fritzbox die 
Einstellungen. Dauerhaft. Wär' ja auch blöd, wenn man die bei jedem 
IP-Wechsel neu eintippen müsste. Dann würde ich den Leidensdruck 
verstehen, da monatlich ein paar € auszugeben.

von Jobst M. (jobstens-de)


Lesenswert?

Εrnst B. schrieb:
>> Wieso? Muss man die Felder dann nicht mehr ausfüllen?
>
> Nö. Wenn man auf "Übernehmen" geht, speichert die Fritzbox die
> Einstellungen. Dauerhaft. Wär' ja auch blöd, wenn man die bei jedem
> IP-Wechsel neu eintippen müsste. Dann würde ich den Leidensdruck
> verstehen, da monatlich ein paar € auszugeben.

Ähm, nein.
Wie kommen denn die Daten dort hinein, wenn er einen Account bezahlt?
Die muss er doch dennoch ausfüllen.

Gruß
Jobst

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.