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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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
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
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