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...
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?
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)
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.
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.
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.
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
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.
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
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.
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.
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.
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.
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.
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.
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
> 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.
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
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.
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.
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
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">
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.
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.
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.
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.
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.
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.
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.
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.
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
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 :)
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.
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.
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.
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.
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?
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.
Stacker schrieb:> Was taugen eigentlich die IP-Stacks dafür?
lwIP steckt in Unmengen von Industrie und Consumerprodukten, kann also
so schlecht nicht sein.
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?
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
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.
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.
> 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.
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.
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.
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
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.
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.
Ε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