Forum: PC Hard- und Software Webserver für Daten


von Elektrokurt (Gast)


Lesenswert?

Moin

Seit einigen Wochen denke ich darüber nach mir eine kleine IOT 
Wetterstation zu bauen, also mit ganz einfachen Sensoren auf der 
Terasse.
Ich bin schon etwas älter, und tue mir deswegen recht schwer.

Wie würde man so etwas heuzutage professionell lösen?

Ich möchte keine Makerwebsiten verwenden und auch kein Arduinon sonder 
alles in C machen mit selbgebauter Elektronic.

Wie würde ein Ing. der von seinem Meister den Auftrag für sowas bekommt 
das heute umsetzen?
Im Internet findet man entweder nur klickibunti Arduino mit 
Clouddiensten oder uralte Websiten von vor 20 Jahren.

Welchen IP Chipsatz würde man heute verwenden?
Wie würde man die Anwendung am Server lösen?
Welchen Mechanismus würde man verwenden um die gespeicherten Daten als 
Graph oder Anzeige darzustellen?
Ich kann mich noch recht gut in Dinge einlesen, mir fehlt aber einfach 
der Startpunkt.
Ich habe bereits einen Webserver auf den ich mit FTP Daten laden kann.

Eine Antowort in der Art:
Chip-->Programmiersprache--> usw.

würde mir ausreichen.

Schönen Nachmittag,
Kurt B.

von (prx) A. K. (prx)


Lesenswert?

Eine grobe Vorstellung davon, was du eigentlich machen willst, wie das 
aussehen soll, hast du? Dazu gehört beispielsweise, ob einfach nur die 
aktuellen Rohdaten angezeigt werden, oder auch die letzten Jahre. Das 
geht aus deinem Text nicht klar hervor und davon hängt viel ab.

von Cyblord (Gast)


Lesenswert?

Chip-->Programmiersprache--> usw.

von Thom Lab (Gast)


Lesenswert?

Soll das ganze Batteriebetrieben sein?
Gibt es mehr als ein Wetter-Sender?

Als erstes musst du dir einen Mikrocontroller auswählen. Entweder nimmst 
du dafür einen, welcher bereits Kommunikationsfähig ist, oder ein 
externes Board zur Konfiguration.

Soll es Batterie betrieben sein, schlage ich dir vor einen nRF52832 zu 
nehmen. Die sind günstig und energiesparend. Soll es noch sparsamer 
sein, kannst du ahc den Ambiq Apollo 3 nehmen - zu dem gibt es aber 
weniger Material im Internet zu finden. Allerdings brauchst du dann noch 
ein Gateway, z.B. ein Raspberry Pi als Interface zum Internet, damit die 
Daten von überall abgefragt werden können, falls erwünscht. Wenn es idr 
reicht die Messwerte nur zu Hause zu lesen, kannst du dein Smartphone/PC 
auch direkt mit Bluetooth Low Energy (BLE) zum nRF52832 verbinden. Bei 
mehreren Sensoren könnte einer die Daten der anderen über BLE sammeln 
und mim Smartphone nur zu diesem verbunden werden, damit nicht die Daten 
von jedem einzelnen Sender ausgelesen werden müssen.

Wenn es nur ein Wetter-Sender ist und es umbedingt ins Internet gesendet 
werden soll, kannst du auch direkt ein WiFi-fähiger Chip nehmen, welcher 
die Daten irgendwo ins Internet sendet. Das kann zum Beispiel ein 
ESP8266 oder ESP32 sein - die brauchen aber etwas mehr Strom für den 
Betrieb, machen also eine Batterie schneller leer (WiFi ist nicht Low 
Energy).

Dann brauchst du nur noch einen Wettersensor. Wenn dir Temperatur, 
Luftdruck und Luftfeuchtigkeit schon ausreicht würde ich den BME280 
nehmen.

von Elektrokurt (Gast)


Lesenswert?

Guten Tag

Herr Prx:
Tut mir leid, ja ich habe eine Vorstellung davon:
Eine LEiterplatte mit einem Atmega 8bit und einem IP IC, als Anschluss 
eine Ethernetz Buchse, MagJack, sollte mit Datenblatt kein Problem sein.
Ich möchte ca. 20 verschiedene Werte versenden. Diese sollten alle 
Minuten aktualisiert werden, eine ganz einfache Website wo die Werte in 
Kästchen stehen. Evtl. noch ein Graph der letzten 7 Tage. Irgendwo hätte 
ich auch noch gerne ein  TXT oder CSV wo alle Werte unendlich lang 
abgespeichert sind um sie manuell auszuwerten.

Cyplord:
Ich weiß nicht was das soll, bitte unterlassen Sie das.

Thom:
Nein, ich habe eine Steckdose auf meiner Terasse.
Ich würde gerne einen IC verwenden den ich mit AVR konfigurieren kann 
und an den ich die Daten schicke.
Sensoren habe ich bereits ausgewählt, und kann sie auch bereits 
auslesen, die einzelnen Daten (unit16 zb.) will ich dann eben 
übertragen.

Es sollte eben auf meinem Server laufen, da ich von überall darauf 
zugreifen möchte, WLAN möchte ich nicht verwenden, habe ich auch nicht 
auf der Terasse.

Mir ist nicht klar:
Welchen IP IC verwenden?
Welche Anwendung am Webserver.


Schönen Nachmittag,
Kurt B.

von Reinhard S. (rezz)


Lesenswert?

Elektrokurt schrieb:
> Guten Tag
>
> Herr Prx:
> Tut mir leid, ja ich habe eine Vorstellung davon:
> Eine LEiterplatte mit einem Atmega 8bit und einem IP IC,

Was ist für dich ein IP-IC? Netzwerk (Ethernet) kann dir ein IC machen, 
IP ist deine Aufgabe als Programmierer.

> Cyplord:
> Ich weiß nicht was das soll, bitte unterlassen Sie das.

Er hat dir kurz einen möglichen Weg aufgezeigt.

> Thom:
> Nein, ich habe eine Steckdose auf meiner Terasse.
> Ich würde gerne einen IC verwenden den ich mit AVR konfigurieren kann
> und an den ich die Daten schicke.
> Sensoren habe ich bereits ausgewählt, und kann sie auch bereits
> auslesen, die einzelnen Daten (unit16 zb.) will ich dann eben
> übertragen.

Schau dir mal das Pollin AVR-NET-IO an.
https://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin

> Es sollte eben auf meinem Server laufen, da ich von überall darauf
> zugreifen möchte, WLAN möchte ich nicht verwenden, habe ich auch nicht
> auf der Terasse.

Wenns auf deinem Server laufen soll ist die Software deine Sache.

> Welche Anwendung am Webserver.

Was mir da in den Kopf kommt (als Nicht-Profi) wäre ein PHP-Skript, das 
die Werte in Empfang nimmt und in einer Datenbank wegspeichert.

Die Darstellung und Visualisierung kann ein anderes Skript machen.

von Johannes S. (Gast)


Lesenswert?

na wenn man so über Klickibunti erhaben ist, dann ruft man die Website 
seines Lieblingsherstellers auf, sucht im MCU Selector einen Controller 
mit Ethernet Hardware aus, entwirft damit eine Platine, schreibt die 
Software und fertig.

von Seggregator (Gast)


Lesenswert?

Zuerst mal würde ich das Ganze in Funktionsblöcke zerlegen:

Für die Persistenzschicht bietet sich influxDB an,
Deine Datentelgramme transportierst Du am Besten via MQTT, also 
benötigst Du noch einen MQTT Broker.
Frontend, also Datenvisualisierung kannst Du mit Standardwebtools 
machen, entweder Händisch ausprogrammiert (PHP, JSP, whatever), Etwas 
moderner und aus meiner Sicht besser: Bauen eines RestServices zur 
Datenprovisionierung an ein Angular/React Frontend, welches wiederum von 
einem Beliebigen Webserver ausgeliefert werden kann.

Dieser Ganze kram lässt sich einfach auf einen Raspi betrieben.

Sensorik:
Im Grunde musst Du dir nur ein Stück Harware bauen, welches Deine 
Sensordaten via MQTT aufs Netzwerk stellt. ICH würde da z.B: einen ESP 
verwenden (OK, benötigt Wifi).

von (prx) A. K. (prx)


Angehängte Dateien:

Lesenswert?

Elektrokurt schrieb:
> Eine LEiterplatte mit einem Atmega 8bit und einem IP IC, als Anschluss
> eine Ethernetz Buchse, MagJack, sollte mit Datenblatt kein Problem sein.

Meine Lösung ist weit über 10 Jahre alt und ist genau das. Ein 
Datenlogger einer Heizungssteuerung, mit Webinterface wie im Bild plus 
Logtransport. Hardwareseitig ein ATmega32, ein ENC28J60, ein Dataflash 
und ein FRAM. Softwareseitig gewöhnliches C, mit Adam Dunkels uIP fürs 
Netzwerk und einem darauf aufbauenden extrem einfachen Webserver.

Wobei ich damit nicht suggerieren will, dass diese Lösung noch 
zeitgemäss sei. 32-Bitter tun sich mit Webservices leichter und wenn die 
Stromversorgung das hergibt, kann man das auch komplett in RasPi&Co 
unterbringen. Spart erheblich Aufwand, auch wenns mit Kanonen auf 
Spatzen geschossen ist.

Es gibt Mikrocontroller mit integrierten Ethernet, allerdings wirds dann 
meist hochpinnig oder Modul. Etwas AVR-kompatibler sind die 
Ethernet-Module von Wiznet, die einen TCP-Stack bereits enthalten.

Eine viel später hinzu gekommene grafische Auswertung der Daten erfolgt 
deshalb auch woanders. Das kann eine Linux-Kiste wie ein RasPi mit 
echtem Webserver und rrdtool wesentlich besser.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Reinhard S. schrieb:
> Schau dir mal das Pollin AVR-NET-IO an.

Die Software dazu ist allerdings zum abgewöhnen. Ich hoffe für Radig, 
dass das eines seiner ersten Programmierprojekte war, denn so sieht die 
aus.

von Realist (Gast)


Lesenswert?

Hallo Kurt,
ich hatte ein ähnliches Problem und keine Lust mich in die Tiefen von 
Webservern einzuarbeiten.
Habe das MyEthernet-Modul verwendet.
Da gibt es einen RAM - Bereich den man per IIC Bus wie ein eeprom 
ansprechen kann. Diese "Variablen " kann man dann in Webseiten verwenden 
deren HTML-Code auf einer sd karte liegt.
Da ich in in assembler programmiere ist das für mich der einfachste Weg.

von Nano (Gast)


Lesenswert?

Thom Lab schrieb:

> Wenn es nur ein Wetter-Sender ist und es umbedingt ins Internet gesendet
> werden soll, kannst du auch direkt ein WiFi-fähiger Chip nehmen, welcher
> die Daten irgendwo ins Internet sendet.

Dann kann ein Hacker mit lokalem Zugriff auf den Wetter Sender auch 
gleich den WLAN Key auslesen und sich ins lokale Netz einschmuggeln. 
Selbst wenn er nur im Gast WLAN ist, kann er immerhin noch einiges an 
Schaden anrichten.

Daher Vorschlag:
Der Wetter Sender muss ein Access Point sein und ein Rechner der selber 
mit dem internen HausLAN verbunden ist logged sich in diesen ein und 
ruft die Daten ab, die er braucht.

Vorteil:
Der Hacker mit lokalem Zugriff könnte sich dann zwar immer noch in den 
AP einloggen und dort Schaden verursachen, aber der ist dann zumindest 
auf den Wetter Sender begrenzt.
Den Rechner aus dem HausLAN, der die Daten abruft, kann man so 
einrichten, dass er dem Wetter Sender nicht vertraut.

Ähnliche Sicherheitsüberlegungen sollt man auch bei Verwendung von 
Bluetooth anstreben.
So einer zur Tastatur mit Relayfunktion umfunktionierter Wettersender 
ist nämlich auch keine Freude.

von Nano (Gast)


Lesenswert?

Elektrokurt schrieb:
> Mir ist nicht klar:
> Welchen IP IC verwenden?
> Welche Anwendung am Webserver.

Wenn du einen IC nimmst, auf dem du alles selber schreiben musst, dann 
gilt das auch für den Webserver.

Ich würde mir den Aufwand nicht machen und stattdessen einen Raspberry 
Pi Zero mit integriertem WLAN nehmen. Der hat nämlich schon einen 
ausgereiften Webserver und über dessen GPIO kann man die Sensoren 
anschließen und dann mit C Code auslesen und über den Webserver z.b. als 
CGI anbieten.
Übertragung erfolgt dann via WLAN, wobei wie bereits erwähnt, der 
Raspberry Pi dann den AP stellen sollte.

Eine Steckdose ist ja schon vorhanden.
Einen vollwertigen Raspberry Pi braucht man dafür auch nicht. Ein 
Raspberry Pi Zero W/WH würde dafür völlig ausreichen.

von (prx) A. K. (prx)


Lesenswert?

Wobei sich für kabelgebundenes Ethernet auch ein bei Ali spottbilliges 
Minimalteil wie der Orange Pi Zero eignen sollte.

: Bearbeitet durch User
von TR.0LL (Gast)


Lesenswert?

Nano schrieb:
> Thom Lab schrieb:
>
>> Wenn es nur ein Wetter-Sender ist und es umbedingt ins Internet gesendet
>> werden soll, kannst du auch direkt ein WiFi-fähiger Chip nehmen, welcher
>> die Daten irgendwo ins Internet sendet.
>
> Dann kann ein Hacker mit lokalem Zugriff auf den Wetter Sender auch
> gleich den WLAN Key auslesen und sich ins lokale Netz einschmuggeln.
> Selbst wenn er nur im Gast WLAN ist, kann er immerhin noch einiges an
> Schaden anrichten.

Wenn man einen ESP8266 nimmt und der Code die Daten nicht auf der 
seriellen Schnittstelle ausgibt und die Wlan-Zugangsdaten fest im Code 
angibt (heißt kein WiFimanager und co), dann ist es glaube ich einfacher 
eine Schwachstelle am Router zu finden oder einzubrechen und dann ein 
Gerät (z.B.: Raspi) per Ethernet mit dem Router zu verbinden. Und 
notfalls gibt es auch noch einen MAC-Filter oder 802.1X.

TR.0LL

von Carsten (Gast)


Angehängte Dateien:

Lesenswert?

Moin Elektrokurt,
ich komme mit dem Net-io von Pollin und der Software von U.Radig 
inzwischen sehr gut zurecht. Alles in C++ geschrieben. HTML-Seiten kann 
man selbst erstellen. Könnte für dich interessant sein.

Gruß Carsten

von Cyblord -. (cyblord)


Lesenswert?

Also die Anforderungen passen nicht ganz zusammen. Es ist offensichtlich 
dass es da große Wissenslücken gibt. Ohne Erfahrung in der Embedded 
Entwicklung kann man das nicht from Scratch machen (so wie der TE sich 
das ja vorstellt).
Da fehlt einfach zu viel.

Der Lösungsweg ist total simpel, die Umsetzung in allen Details aber 
nicht.

Man würde man einen Controller aussuchen, gleich mit Ethernet 
Schnittstelle oder halt integriertem WLAN. Mehr braucht man ja schon 
nicht. Das bisschen Stromversorgung und evt. ein bisschen Schnittstellen 
ICs für die Sensoren kann man schon fast vergessen.
Der Rest ist Software. Webserver und TCP/IP Stack nimmt man was fertige. 
Man muss aber in der Lage sein das einzubauen und zu benutzen. Das 
erfordert alles Erfahrung mit der Thematik.

Was der TE uns nicht sagt: Was kann er? Wenn er schon Probleme hätte, 
auf einem STM32 eine LED Blinken zu lassen, dann sollte er DAS erstmal 
üben.

PS:
Cyblord (Gast) bin natürlich nicht ich. Ich schreibe NIE als Gast oder 
unter anderem Namen. NIE

: Bearbeitet durch User
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.