Guten Abend allerseits, Ich bin Hobbybastler und habe mir ein Projekt überlegt bei dem ich 5 Embedded WebServer einsetzen möchte die miteinander kommunizieren sollen (Alle 5 werden an einem Router/Switch angeschlossen). Darüberhinaus soll jedes Modul von aussen also aus dem www erreichbar sein. Das sollte kein Problem sein oder. Die Module müssen nur Ihren Status untereinander austauschen ca 2byte. Wie mache ich so etwas am besten ? ARP request ? ICMP ?? Ich arbeite mit dem Pollin AVR Net IO Board. Dazu verwende ich die Software von Ulrich Radig. Gibt es für mein vorhaben schon einen fertigen Ansatz in der Software den ich noch nicht verstanden habe. Steh gerade etwas auf dem Schlauch. Ich freue mich auf Eure Hinweise und Anregungen. Grüße Ovoron
Andreas S. schrieb: > ARP request ? ICMP ?? Du weisst, was diese Abkürzungen in Langschrift bedeuten? Dann ist dir sicher auch die Funktion klar. Such mal unter UDP, das dürfte für deine Belange besser sein. UDP ist im Radig Paket enthalten. > Gibt es für mein vorhaben schon einen fertigen Ansatz in der Software Glaube ich nicht. Ein Tipp: Nimm gleich einen ATMega1284 an Stelle des ATMega32, du machst dir das Leben deutlich leichter.
Hi, nimm gleich die ESP8266 (<5€). Da braucht es keinen AT Mega mehr. Polin NetIO war gestern. ;-) Gruß Andreas
Hallo, Andreas B. schrieb: > Hi, > nimm gleich die ESP8266 (<5€). Da braucht es keinen AT Mega mehr. Hier stimme ich mal zu. Bei mir sind inzwischen auch 2 NetIO in Rente gegangen. Je nach Vorhaben auch auch mal MQTT anschauen, das Protokoll, die Idee dahinter und die Handhabung gefallen mir sehr gut. Falls doch NetIO: ich habe lange nicht mehr in die Radig-Software reingeschaut (habe die auch drauf), vom einen Netio eine GET-Anfrage zum anderen Webservder schicken und dort die passende Mini-Antwortseite mit den Daten erzeugen könnte auch wenig Aufwand sein. Gruß aus Berlin Michael
Mahlzeit, vielen Dank für Eure Antworten. Aktuell habe ich einen ATMega644 drauf !! Allerdings wollte ich auf einen größeren XMega umswitchen. Mehr RAM größerer Flash Speicher für eine größere WebSite. Den ESP8266 kannte ich noch nicht allerdings finde ich die Umsetzung von Ulrich Radig sehr gut weil ich auch gerne mit einem Bootloader Software updates(über Ethernet) durchführen möchte. UDP ist mir nicht sicher genug. Also muss es wohl TCP sein !! Fallen Euch noch weitere Varianten/Lösungsansätze ein ? Grüße Ovoron
Andreas S. schrieb: > Also muss es wohl TCP sein ! Dann viel Spass. Der ATMega ist geradezu predestiniert für das Protokoll. Und Radig hat es auch umfassend implementiert. Falls du Ironie findest, darfst du sie behalten. > wollte ich auf einen größeren XMega umswitchen Sehr gute Idee. Welcher Typ schwebt dir vor (40 Pin DIL, mehr als 32kSRAM, pinkompatibel zu ATMega1284)?
Warum solle UDP bei 2 Byte Daten nicht sicher genug sein? Da würde ich einfach wie z.B. bei einer 485 Verbindung ein Protokoll selber programmieren mit Quitungstelegramm vom Empfänger. (ACK, NAK)
Hallo, Andreas S. schrieb: > Den ESP8266 kannte ich noch nicht allerdings finde ich die Umsetzung von > Ulrich Radig sehr gut weil ich auch gerne mit einem Bootloader Software > updates(über Ethernet) durchführen möchte. der ESP hat den Bootloader im ROM (bekommt also nicht "zerflasht"). Update über serielle oder OTA, also direkt über WLAN aus der Arduino-IDE z.B. Platz? 1MB für Progamm und maximal 3MB als Filesystem für die Webseiten beim ESP8266-12 als Beispiel. Bei OTA-Update kann man nur den halben Programmspeicher nutzen, OTA will das neue Flashfile ja zwischenspeichern und das SDK bieten im Moment keine andere Aufteilung an. Gruß aus Berlin Michael
Hallo, Jürgen D. schrieb: > Warum solle UDP bei 2 Byte Daten nicht sicher genug sein? > > Da würde ich einfach wie z.B. bei einer 485 Verbindung ein Protokoll > selber programmieren mit Quitungstelegramm vom Empfänger. (ACK, NAK) Danke, !! Den Ansatz werde ich wohl als erstes nachgehen. Michael U. schrieb: > der ESP hat den Bootloader im ROM (bekommt also nicht "zerflasht"). > > Update über serielle oder OTA, also direkt über WLAN aus der Arduino-IDE > z.B. Da muss ich nochmal nachfragen: OTA ist was ?? Update direkt über WLAN hört sich gut an. Grüße Ovoron
> Embedded WebServer ... von aussen also aus dem www erreichbar > Das sollte kein Problem sein oder? Ich hoffe, du hast ein gutes Sicherheitskonzept Denn alles, was im öffentlichen Netz erreichbar ist, wird über kurz oder lang behackt. Wir hatten hier schon mehrmals Leute, die überrascht waren, das ihre Geräte schon nach wenigen Stunden massiv penetriert wurden. Mein Tip: Hänge diese NET-IO Boards nicht direkt ans öffentliche Netz. Es sollte wenigstens ein Raspberry Pi oder PC dazwischen hängen, der sicher stellt, dass nur gewollte Kommandos und Daten sicher authentifiziert und verschlüsselt übermittelt werden können.
Stefan U. schrieb: >> Embedded WebServer ... von aussen also aus dem www erreichbar >> Das sollte kein Problem sein oder? > > Ich hoffe, du hast ein gutes Sicherheitskonzept > > Denn alles, was im öffentlichen Netz erreichbar ist, wird über kurz oder > lang behackt. Wir hatten hier schon mehrmals Leute, die überrascht > waren, das ihre Geräte schon nach wenigen Stunden massiv penetriert > wurden. > > Mein Tip: Hänge diese NET-IO Boards nicht direkt ans öffentliche Netz. > Es sollte wenigstens ein Raspberry Pi oder PC dazwischen hängen, der > sicher stellt, dass nur gewollte Kommandos und Daten sicher > authentifiziert und verschlüsselt übermittelt werden können. Bei mir hängen drei Bords am öffentlichen Netz, ohne PC, ohne Raspberry, ohne Probleme. Etwas genauer darf es schon sein. Was bedeutet z. B. massiv "penetriert"? Was können noch für Probleme auftauchen?
Hallo, @Stefan Us: sagen wir es mal so: einen NetIO mit der Radig-Software hacken wäre die höhere Kunst. Dem kann man natürlich z.B. das passende HTML-GET mit den passenden PArametern schicken und dann gent ungeplant die Stehlampe an. Das kann man aber mit jedem beliebig gesicherten Webserver so machen. Man kann ihm natürlich auch was anderes schicken oder anfordern. Nur, der kann nichts, der stürzt bestenfalls ab, wenn was kommt, was nicht verforfen wird. Es läuft da einfach nichts drauf, was man hacken könnte. @Andreas S. (Firma: keine) (ovoron): OTA ist nur "Over The Air". Es wird eine Es läuft ein OTA-Server auf dem ESP, dem man die neuen Flashdaten schickt. Die werden im Programmspeicher zwischengespeichert und dann wird das Flash-Kommando ausgelöst. Jetzt kopiert der ESP das Programm sozusagen von oben nach unten und löst dann einen Neustart aus. Deshalb darf der Speicher auch nur zur Hälfte vom Programm belegt sein. Das Ganze wird ab Version 1.6.7 der (gern verfluchten) Arduino-IDE komplett transparent unterstützt. Als entweder über seriell-Kabel oder OTA auswählen und flashen. Bei mit ist das alles noch Spielwiese. Am ESP8266-12 hängen zur Zeit ein RFM12-433MHz, der die Daten meiner 6 Temperatur/Feuchte-Sennsoren einsammelt und als Webseite zur Verfügung stellt. Dazu 2x MCP23S17, die 2x 8-stellige intelligente HDSP2113S ansteuern. Außerdem per serielelr Schnittstelle angezhängt ein Arduino ProMini mit einem RFM12-868, der die E3000 Energiemesser empfängt, an den ESP schickt, der die in die Webseite einbaut. Der Arduino hat noch einen UR-Sensor bekommen, die Codes werden zum ESP geschickt und (völlig sinnfrei) auf dem Display angezeigt. Der RFM12-433 sendet inzwischen auch die OOK-Codes meiner Funksteckdosen, gesteuert von der Webseite. Es gibt zum Testen noch einen Metrologik-Handscanner MS9520, umgebaut auf Akkubetrieb und eine ESP8266-01 drin als MQTT-Publisher, der die gescannte EAN schickt. Dazu eine alte Pearl-Laufschrift PE9441_12_42616, die hat auch einen ESP8266-01 bekommen und stellt eine Webseite zur Verfügung, um einen Text einzugeben, der dann angezeigt wird. Auch mit MQTT als Subscriber. Hat erst zum Test die gescannte EAN des Scanner angezeigt. Heute mal MQTT auf der Funkbox installiert, die schaltet jetzt eine Funksteckdose ein oder aus, wenn der Scanner eine passende EAN schickt. Die wohl sinnloseste Funktion überhaupt. ;-) Als MQTT-Brooker läuft seit vorgestern ein RasPI, der lag sowieso nur rum... Allmählich kommen auch nützliche Ideen als Anwendung, ich wollte erstmal wissen, was geht, wie aufwändig das ist und wie stabil. Der ESP in der Funkbox verliert so alle 3-4 Tage mal die WLAN-Verbindung und macht dann einen Reconnect, habe ich mir mal anzeigen lassen. Ansonten absolut stabil bisher. Ich werde das mal alles nach und nach auf meine Webseite packen, unsortiert wie immer. http://www.avr.roehres-home.de/ Hier und auch im Arduinoforum stößt irgendwie der ESP8266 auf nicht allzuviel Interesse und die ArduinoIDE ist zwar anders, bietet aber trotzdem merklich mehr, als man auf den ersten Blick vermutet. Gruß aus Berlin Michael
:
Bearbeitet durch User
Mit massiv penetriert meine ich, dass im Netz automatische Scanner laufen, die nach offenen Ports suchen. Wenn dann einer gefunden wurde, testen die Programme oder Hacker den offenen Port systematisch nach Sicherheitslücken ab. Zum Beispiel nach eine Möglichkeit, Dinge zu steuern, ohne ein Passwort zu benötigen. Eine relativ einfache Möglichkeit der Absicherung besteht, indem du einen PC mit Apache als Proxy davor setzt. Der kann dann auch klein Verschlüsselung und Authentisierung übernehmen. Oder eine andere relativ einfache Möglichkeit ist der Einsatz eines VPN Tunnels. Wenn mit dem Ding nichts schlimmes passieren kann (z.B. nur Lampen schalten), brauchst du natürlich auch kein Sicherheitskonzept.
btw, udp ist auch nicht unsicherer als tcp... man muss sich halt nur eine bestätigung zurück senden... in kombination mit broadcast, ergeben sich recht nette möglichkeiten...
Andreas S. schrieb: > Ich bin Hobbybastler und habe mir ein Projekt überlegt bei dem ich 5 > Embedded WebServer einsetzen möchte die miteinander kommunizieren sollen Wozu sollten 5 Webserver untereinander kommunizieren sollen oder müssen? Es ist sofort erkennbar, dass der ganze Ansatz Schwachsinn hoch 3 sein muss. > Das sollte kein Problem sein oder. Die Module müssen nur Ihren Status > untereinander austauschen ca 2byte. Die sog. "Module" sind aber keine Webserver (bzw. müssen es nicht sein), stimmt's? Sondern einfach nur Geräte, die via Ethernet kommunizieren können, stimmt's? > Wie mache ich so etwas am besten ? Genau einen Webserver betreiben. Und der sollte auf keinem der AVRs laufen. Die sind einfach nicht schnell genug, um sicher sein zu können. Dieser eine Webserver liefert dann halt seinen Scheiss aus, auch in's unsichere Internet und kommuniziert nebenbei mit den AVR-Geräten, die ihm die Daten zuliefern, aber nur im (hoffentlich) sicheren LAN. Dazu brauchen die dann keinesfalls einen Webserver zu betreiben. Sie müssen einfach nur in der Lage sein, einen (wie auch immer gearteteten "Datenserver") auf dem Webserver mit ihren aktuellen Daten zu befüllen.
c-hater schrieb: > Andreas S. schrieb: > >> Ich bin Hobbybastler und habe mir ein Projekt überlegt bei dem ich 5 >> Embedded WebServer einsetzen möchte die miteinander kommunizieren sollen > > Wozu sollten 5 Webserver untereinander kommunizieren sollen oder müssen? > > Es ist sofort erkennbar, dass der ganze Ansatz Schwachsinn hoch 3 sein > muss. > soso,... die AVR-Net-OI sind aber nun mal ootb einen Webserver ausgestattet, über den sie sich ansprechen lassen >> Das sollte kein Problem sein oder. Die Module müssen nur Ihren Status >> untereinander austauschen ca 2byte. > > Die sog. "Module" sind aber keine Webserver (bzw. müssen es nicht sein), > stimmt's? Sondern einfach nur Geräte, die via Ethernet kommunizieren > können, stimmt's? Sie sind aber nun mal standardmäßig mit Webserver ausgestattet. Und sie können mit der Standardsoftware auch nicht viel mehr... >> Wie mache ich so etwas am besten ? > > Genau einen Webserver betreiben. Und der sollte auf keinem der AVRs > laufen. Die sind einfach nicht schnell genug, um sicher sein zu können. Ein laienhaft eingerichteter Apache auf einem Computer mit den Kronjuwelen ist es aber? Der Schaden, den man mit einem gehackten PC anrichten kann ist weitaus größer als der, den man auf einem langsamen AVR mit simplen TCP/IP-Stack anrichten kann. Also so lange man damit keinen Kernreaktor im Keller betreibt, versteht sich... > Dieser eine Webserver liefert dann halt seinen Scheiss aus, auch in's > unsichere Internet und kommuniziert nebenbei mit den AVR-Geräten, die > ihm die Daten zuliefern, aber nur im (hoffentlich) sicheren LAN. > Dazu brauchen die dann keinesfalls einen Webserver zu betreiben. Sie > müssen einfach nur in der Lage sein, einen (wie auch immer gearteteten > "Datenserver") auf dem Webserver mit ihren aktuellen Daten zu befüllen. Mag für später eine schöne Steigerungsstufe sein, aber für den Einstieg mit schnellem Erfolgserlebnis aber eher nix. Denn dafür muss man nicht nur auf dem AVR entwickeln, sondern parallel auch noch für den dedizierten Webserver welcher Art auch immer.
:
Bearbeitet durch User
Moin moin, @C-Hater Ja vermutlich hast du recht es muss unter Umständen nur ein Web-Server sein. Ich erläutere mal mein Projekt. Auf einem Bauernhof sollen mehrere Selektionstore angesteuert werden. Die einzelnen Tore entscheiden in welchen Bereich eine Kuh laufen kann. Abkalbebereich, Behandlungsstand, Weidegang (nach draußen), etc., Die einzelnen Tore erfassen verschiedene Daten. Kuh Nr., Tor offen, geschlossen, Störungen, Wie viele Kühe in welchen Bereichen geführt wurden. Evtl. ist der Bahandlungsstand ja schon voll. Diese Daten sollen erfasst werden und im eigenen LAN zur Verfügung gestellt werden. Darüberhinaus ist es wichtig das man via www informiert wird wenn eine Störung vorliegt und die einzelnen Informationen und Störungsmeldungen abrufen kann. Die Kommunikation der Tore untereinander ist natürlich zwingend erforderlich weil ein Tor erst freigegeben werden kann wenn sicher gestellt ist das die vorherige Kuh den Bereich schon verlassen hat und sich das nächste Tor schon passend gestellt hat oder wenigstens gesperrt ist. Ich wollte für die Vernetzung untereinander eine Ethernet Verbindung nutzen da ich dann flexibel bin. Kabel, WLan, bzw Lan über Steckdose. Ich hätte meine Anwendung wohl besser im Vorfeld beschreiben sollen. Ich frage an dieser Stelle lieber mal nach welche wie Ihr dieses Problem angehen würdet. Mein Ansatz war halt jedes Tor mit einem Embedded-Web-Server auszustatten. Vielen Dank Grüße Ovoron
Hallo, naja, das ist 'ne Nummer größer als ich dachte... Für mich zur Klärung: >Die einzelnen Tore erfassen verschiedene Daten. >... >Diese Daten sollen erfasst werden und im eigenen LAN zur Verfügung >gestellt werden. klingt erstmal danach, als wenn der ganz Torkram existiert bzw. geklärt ist und die Tore sozusagen die Daten irgendwie zur Verfügung stellen. Das hier dagegen: >Die Kommunikation der Tore untereinander ist natürlich zwingend >erforderlich weil ein Tor erst freigegeben werden kann wenn sicher >gestellt ist das die vorherige Kuh den Bereich schon verlassen hat und >sich das nächste Tor schon passend gestellt hat oder wenigstens gesperrt >ist. klingt danach, als wenn die Tore auch über diesen Weg gesteuert werden sollen? Also eine Zentrale Ablaufsteuerung, die Anhand der Kühe und Wünsche die Tore steuert, die Kühe zählt usw.? Ich habe ja den Vorschlag mit ESP8266 und MQTT als Datenprotokoll gemacht. Das würde durchaus noch dazu passen. Auf eine Bauernhof dürfte 2,4GHz WLAN noch recht ungestört laufen, Reichweiten wären zu Testen, müßten eben entsprechend Repaeter usw. installiert werden. Die ESP haben "billige" onBoatd-Antennen, die aber verblüffend gut sind, es gibt aber auch Module mit Anschluß für externe Antenne. Vorteil wäre eindeutig der Preis und die gute Möglichkeit alles selbst zu programmieren und auch über das WLAN zu updaten. Leistungsfähig genug sind sie auch, es fallen ja keine riesigen Datenmengen an, wo der Durchsatz kritisch wäre. Als Protokoll ist MQTT eigentlich ideal dafür, wenig Daten-Transfer und die Intelligenz läßt sich gut so verteilen, daß die ESP sich um ihr Tor usw. selbst kümmern, abhängig von der Anforderung und der lokalen Situation. Ein RasberryPi als MQTT-Brooker wäre möglich, besser vielleicht Apache mit ActivMQ, der könnte die Webanbindung und die Bedienoberfläche stellen. Ließe sich dann acuh problemlos lokal per Handy, Tablett o.ä steuern und überwachen. Ich denke, ein RasPi2 sollte da mehr als schnell genug für sein. ActiveMQ kann auch MQTT mit SSL, es gibt für den ESP auch eine MQTT-Lib mit SSL. Wäre die Frage, ob es von der Sicherheit nötig ist, man müßte ja einmal ins lokale WLAN und noch einen MQTT-Brooker haben, der den echten überlagern kann ohen aufzufallen und eine Störung auszulösen. Die ESP8266 stürzen eigentlich nur ab, wenn man die Programmfehler selber einbaut, der Hardware-Watchdog schlägt nach 6s zu und löste einen Neustart aus, der ESP ist in ca, 3s hochgefahren, im WLAN und beim MQTT-Brooker angemeldet und kann um Hilfe schreien. Derartige Fehler sind bei meinen Programmierübungen immer schon bei Funktionstest aufgefallen. Interessantes Projekt. Gruß aus Berlin Michael
:
Bearbeitet durch User
Also bei dem anwendungsfall, würde ich schon eher auf siemens logo gehen... Denn wenn wir mal ehrlich sind, sind die pollin avr-net-io rechter schrott... (Da muss man erstmal die hardware debuggen) Dann müsste man mal wissen in welcher form die daten vorliegen? Evtl serielle schnittstelle? Wie läuft der datenaustausch den derzeit? Zudem wäre dann wirklich eine zentrale instanz wohl die bessere wahl...
Schau Dir mal das CrumbX1-Net Modul von Chip45.com an. Ich gehe davon aus, dass diese Lösung zuverlässiger ist, als das Board von Polling (ich habe meins recht schnell weg geworfen). Ich habe zwei Crumb644-Net Module für eine Lichtsteuerung verkauft und vier Platinen für eine Alarmanlage damit verkauft. Das ist einige Jahre her und ich bekam keinerlei negatives Feedback. Aktuell sind die CrumbX1-Net Module, mit denen habe ich bsiher aber nur Experimente gemacht - immerhin auch ohne Ausfälle. Du kannst Störmeldungen per Email senden, ist vielleicht besser, als die ganze Zeit eine Webseite zu pollen. Meine Projektseite: http://stefanfrings.de/net_io/index.html
Hallo,
daß das NetIO ein LowCost-Modul ist, steht außer Frage. Allerdings lief
meins ca. 3 Jahre im Dauerbetrieb ohne Probleme. Dann lag es im Schrank
und als ich es jetzt nach ca. 2 Jahren wieder angeschlossen habe,
meldete es sich problemlos.
Als das NetIO erschein und die Radig-Software waren auch die Kapriolen
der verschiedenen ENC-Steppings noch ziemliches Rätselraten.
ich würde das heute nicht mehr neu machen wollen, zuwenig
Rechenleistung, zuwenig Ram, zuwenig Flash.
45€ ist ein recht stolzer Preis für das CrumbX1. Letztlich es es auch
die Entscheidung, wieviel Aufwand man in die Programmierung selbst
stecken will.
Ich beziehe mich da jetzt auf den TO:
>Ich bin Hobbybastler und habe mir ein Projekt überlegt
Der ESP bietet zwar kein LAN, nur WLAN, hat einen 80MHz 32Bit-Core,
512k/1MB Flash, rund 60kB verfügbaren Ram, mehrere I/O, einen
A(D-Wandler, SPI, I2C, UART und das für keine 10 Euro.
Das Update über WLAN ist mir auch schnell lieb geworden, bisher habe ich
es bei allen Experimente erst 2x geschafft, daß ich den ESP doch per
serieller an den Rechner stecken mußte: 1x im Source die SSID gelöscht,
weil ich den Code einem BEkannten gegeben habe und nicht wieder
eingetragen. Das wars dann beim nächsten flashen...
Beim 2. Mal den falschen ESP ausgewählt.
Schön ist auch, daß man die Webseiten unverändert ins SPI-Filesystrem
legen kann und dann eben von da lädt und nur die Daten per Replace
einträgr.
Ich warte mal ab, welche Rahmenbedingungen der TO im Detail hat.
Gruß aus Berlin
Michael
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.