Forum: Mikrocontroller und Digitale Elektronik AVR Software für spezielle Aufgabe


von Carsten G. (blubberblase)


Lesenswert?

Werte AVR Community,
ich habe mich in den vergangenen Tagen durch eine Vielzahl von Beiträgen 
in diesem Forum durchgearbeitet - konnte jedoch nichts passendes für 
mein Problem finden.
Am nächsten kam noch der Beitrag:
Beitrag "kleine AVR-Server senden an Zentralserver"
wobei auch da die Diskussion teilweise vom eigentlichen Thema abweicht.

Ich möchte 1 (später mehrere) Pollin-AVR zu einer speziellen Aufgabe 
verwenden. Leider bin ich nach Studium etlicher Beiträge zu der 
Feststellung gekommen, dass ich keinesfalls in der Lage bin mich zeitnah 
mit der Materie der Programmierung zu befassen. Das liegt keinesfalls an 
der Lust dazu, sondern vielmehr an der Zeit. Wie heißt es in der 
Werbung: "Vielleicht sollten Sie zu jemandem gehen, der was davon 
versteht!"
Genau das werde ich jetzt mal versuchen.

Die eigentliche Aufgabe:
Der og. Thread ist schon recht nah am geplanten Verwendungszweck.
Das AVR soll als 'Daten-Übertragungs-Zwischen-Server' arbeiten.
Das AVR befindet sich in einem lokalen Netzwerk. In gleichem Netzwerk 
befinden sich auch Heizungsregler über eine Standard TCP-Verbindung. 
Diese Regler geben bei bei einem Request eine per CGI erstellte 
HTML-Seite mit den aktuellen Werten aus. Diese Seite ist so simpel, dass 
man eher von einer txt-Datei sprechen könnte. (Keine Formatierungen 
etc.)
Ausgabe etwa:  0:12.2:22:1:22.3:0:1 (Doppelpunkt separierte Einzelwerte)
Was soll nun das AVR damit machen:
Über die lokale TCP Verbindung soll das AVR die og. CGI aufrufen, den 
String lesen und
anschließend unverändert an eine festgelegte Adresse (php-Datei) eines 
öffentlichen Webservers senden. In der php-Datei erfolgt dann die 
Aufbereitung der Daten und ggf. ein Eintrag in eine Datenbank.
Auf dem AVR müssen natürlich die lokale IP des abzufragenden Reglers 
sowie die Ziel-Adresse (ex. http://domain.de/daten/daten.php) 
eingetragen werden können. Eingabe per Terminal-Programm ?? Wird ja nur 
1x festgelegt und in den seltensten Fällen geändert.

Bisher habe ich diesen Vorgang immer mit einem Mini-PC realisiert. 
Allerdings sind dafür die Kosten (Hardware, Betriebssystem etc.) zu 
teuer, sodass ich nach neuen Lösungen suchen muss.
Dem aufmerksamen Leser wird nicht entgangen sein, dass ich ja den/die 
Regler direkt per PHP auslesen könnte. Ja! Aber ich habe immer wieder 
Probleme mit DynDNS (obwohl Bezahl-Account) , Portweiterleitungen, nicht 
immer Router-Zugriff usw.
Eine saubere Lösung wäre schon, wenn auf dem og. Weg die Daten ins Haus 
kommen.
Noch ein Satz an die Sicherheitsfanatiker: Es sind keine 
lebensgefährlichen Daten! Ich vernetze keine Krankenhäuser oder 
Atomkraftwerke. Eine Checksummen-Prüfung der Übertragung ist nicht 
notwendig.

Ist die von mir geschilderte Verfahrensweise mit den AVR's überhaupt 
möglich?
Gibt es jemand, der was davon versteht und bereit wäre gegen eine zu 
vereinbarende Aufwands-Entschädigung so etwas zu programmieren?
Gibt es ggf. preiswerte Alternativen?
Ich bin für jeden Hinweis dankbar.

von Davis (Gast)


Lesenswert?

> blubberblase <

Dein Nick hat Klasse. Gibt gut Inhalt & Form deines Beitrages wieder.

von Hoher Stapel (Gast)


Lesenswert?

Sicher ist sowas moeglich. Bei den bescheidenen Stueckzahlen, resp beim 
bescheidenen Budget lohnt sich aber so eine Entwicklung nicht. Bleib bei 
deiner Loesung.

von Karol B. (johnpatcher)


Lesenswert?

Carsten G. schrieb:
> Noch ein Satz an die Sicherheitsfanatiker: Es sind keine
> lebensgefährlichen Daten! Ich vernetze keine Krankenhäuser oder
> Atomkraftwerke. Eine Checksummen-Prüfung der Übertragung ist nicht
> notwendig.

Wobei ich Checksumme nicht wirklich als "Sicherheit" bezeichnen würde. 
Das kann vor Übertragungsfehlern schützen, nicht aber vor Ausspähen und 
ähnlichen "Angriffen". Im Kontext von HTTP bietet sich hierfür SSL/TLS 
an.

Carsten G. schrieb:
> Ist die von mir geschilderte Verfahrensweise mit den AVR's überhaupt
> möglich?

Möglich ja - praktikabel nein. Sobald es um Netzwerkgeschichten geht 
(insbesondere im Internet) halte ich AVRs für ungeeignet. Klar gibt es 
genug "Proof-of-Concept" Projekte, aber ein kompletter TCP/IP Stack 
läuft da halt dann trotzdem nicht. In deinem Fall brauchst du ja 
zumindest grobe Implementierung für ARP, DNS, IP, TCP und HTTP. Sofern 
das ganze dynamisch im Netzwerk funktionieren soll, schadet DHCP auch 
nicht. Das ist unnötige Arbeit, die sicherlich fehlerbehaftet sein wird.

Carsten G. schrieb:
> Gibt es ggf. preiswerte Alternativen?

Ich persönlich bevorzuge bei solchen Projekten dann doch eher ein 
Embedded System auf Linux-Basis, z.B. ein GNUBLIN oder Raspberry Pi. Das 
bietet dir den Vorteil eines komplett funktionierenden und bekannten 
Stacks mit einem Haufen an Software. Im Endeffekt lässt sich das was du 
vorhast in Form eines Scripts ausdrücken, welches nicht viel mehr als 10 
Zeilen lang sein sollte. Je nach Vorkenntnissen sollte das auch bei 
"engen" Zeitvorgaben klappen. Im Endeffekt musst du dich nur mit cURL 
vertraut machen und ggf. die Strings ein wenig bearbeiten, z.B. mittels 
"sed".

von Carsten G. (blubberblase)


Lesenswert?

Besten Dank für die schnellen Informationen.

Hoher Stapel schrieb:
> Sicher ist sowas moeglich. Bei den bescheidenen Stueckzahlen, resp beim
> bescheidenen Budget lohnt sich aber so eine Entwicklung nicht. Bleib bei
> deiner Loesung.

Ich hatte mich da bei den Stückzahlen als auch beim Budget etwas unklar 
ausgedrückt.
Derzeit laufen ca. 30 solcher Systeme - zum Jahresende 2013 werden es 
knapp 100 sein.
Das Budget: Da ich selbst programmiere, weiß ich schon das eine 
Programmierung Zeit und somit Geld kostet. Kurze Rechnung: Dieses Jahr 
ca. 60 weitere Systeme mit Mini-PC für ca. 200 EUR (inkl. Betr.-System) 
oder 60 AVRs für 30 EUR ... da sollte schon Spielraum für die 
Programmierung sein. :o)

Karol Babioch schrieb:
> Möglich ja - praktikabel nein. Sobald es um Netzwerkgeschichten geht
> (insbesondere im Internet) halte ich AVRs für ungeeignet.....

So habe ich das schon vermutet. Ich habe mir die Umprogrammierung nur 
nicht so kompliziert vorgestellt. Mein Test-Pollin-AVR läuft als 
provisorische "Klima-Reglung" inkl. Fernzugriff in meiner Garage sowas 
von zuverlässig, dass ich in Hinsicht auf die Programmierung zu einfach 
gedacht habe.

Karol Babioch schrieb:
> Ich persönlich bevorzuge bei solchen Projekten dann doch eher ein
> Embedded System auf Linux-Basis, z.B. ein GNUBLIN oder Raspberry Pi.

Ja, dass sind doch mal Alternativen. An einen Raspberry habe ich auch 
schon gedacht.
Allerdings wäre ich auch in diesem Falle auf Hilfe angewiesen, da ich 
auch mit LINUX nicht so fit bin.

Karol Babioch schrieb:
> Im Endeffekt lässt sich das was du
> vorhast in Form eines Scripts ausdrücken, welches nicht viel mehr als 10
> Zeilen lang sein sollte.

Na nu bin ich völlig feddisch ...
Vielleicht sollten wir auf dieser Basis im Gespräch bleiben.
Ich werde mich mit dem RaspberryPI mal näher befassen.
Ich danke Euch allen. Schönen Sonntag noch.

von IS471F (Gast)


Lesenswert?

Carsten G. schrieb:
> Derzeit laufen ca. 30 solcher Systeme - zum Jahresende 2013 werden es
> knapp 100 sein.

Dann sollte "Sicherheit" relativ weit oben auf deiner Liste stehen. Ich 
weiß ja nicht was du letztendlich mit den Daten machst, sofern du sei 
einmal hast, aber es sollte z.B. nicht möglich sein, Daten eines anderen 
zu "manipulieren" bzw. "einzusehen".

Carsten G. schrieb:
> Mein Test-Pollin-AVR läuft als
> provisorische "Klima-Reglung" inkl. Fernzugriff in meiner Garage sowas
> von zuverlässig, dass ich in Hinsicht auf die Programmierung zu einfach
> gedacht habe.

Naja, "einfach" ist relativ. Ich halte das in erster Linie für unnötige 
Arbeit. Und ich bin mir sicher, dass man valide Fälle konstruieren kann, 
die dein System ins "wanken" bringen. Ein (kompletter) Netzwerk-Stack 
ist halt mittlerweile doch etwas komplexer. Klar, als Hobby- bzw. 
Bastelprojekt kann es durchaus interessant sein AVRs ans Netzwerk 
anzuschließen, aber gerade in Produktivumgebungen würde ich schon Wert 
darauf legen, dass das den entsprechenden Standards genügt. Und dann 
wird es halt ganz schnell ganz knapp mit AVRs und ihren begrenzten 
Möglichkeiten (Flash-Speicher, RAM). Überhaupt dürfte es nur den 
wenigsten Leuten Spaß machen sich durch RFCs zu wälzen und Sachen neu zu 
implementieren, die es schon ein Dutzend Mal oder öfter gibt.

Carsten G. schrieb:
> Ich werde mich mit dem RaspberryPI mal näher befassen.

Ja, wobei ich persönlich bei Projekten dieser Art andere Systeme 
bevorzugen würde. Meiner Meinung nach ist der Raspberry Pi durch seine 
Multimedia-Fähigkeiten eher für andere Anwendungsfälle gedacht - auch 
wenn er natürlich preislich kaum zu schlagen ist und deshalb auch für 
einfache Steueraufgaben & Co. "missbraucht" wird.

von Carsten G. (blubberblase)


Lesenswert?

Guten Abend,
nochmal kurz zum Thema Sicherheit. In dem von mir oben erwähnten Beitrag 
ist leider auch die Diskussion zu sehr in der Sicherheit bei der 
Übertragung verebbt. Das Aufgabenziel ist die Kostenreduzierung. Daher 
soll "der Gerät" nichts weiter machen als lokal einen Request auf ein 
anderes TCP-Gerät senden, den "String" lesen und unverändert an einen 
öffentl. Webserver senden. Dies alles passiert hinter einem Router. Wenn 
dieser nicht gerade in der DMZ ist, also vernünfig konfiguriert, sehe 
ich keine großen Gefahren. Ich kann mir auch nicht vorstellen, dass sich 
jemand die Mühe macht, eine Übertragung aus 10 Zahlen zu manipulieren. 
Owohl es sicher überall böse Menschen gibt. :o)
Die Übertragung selbst ist ebenfalls unkritisch. Sollten mal ein paar 
Datensätze fehlen (Request gescheitert oä.) oder nur unvollständig sein 
... alles kein Problem. In der Regel werden die Daten aller 5 Minuten 
gesendet, gebraucht werden aber nur 1 Datensatz pro Stunde. Alles andere 
wird sowieso gefiltert oder geglättet. Außerdem erfolgt eine 
umfangreiche Prüfung der Daten auf Plausiblität, wenn sie eintreffen. 
Dies alles macht jetzt schon meine PHP/mySQL-Maschinerie.

Ich suche nur eine preiswerte Alternative zu einem Komplett-PC mit WIN7, 
der 10 Werte
übertragen soll. Ok ... machmal sind auch 3 Regler dran, dann sind es 
schon 30 Daten.
Diese Alternative muss nur die beschriebene Aufgabe übernehmen. Und ich 
dachte ein AVR kann das ... mit der entsprechenden Programmierung 
natürlich.

Dank nochmals & eine erfolgreiche Arbeitswoche @all

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


Lesenswert?

Carsten G. schrieb:
> Allerdings wäre ich auch in diesem Falle auf Hilfe angewiesen, da ich
> auch mit LINUX nicht so fit bin.

Dann solltest du da auf jeden Fall einsteigen. Auf einem Mini-PC läuft 
ein vernünftiges Linux solide und kostet in der Anschaffung nix. Da PHP, 
perl und Python auch bewährte Tools unter Linux sind, können die 
Kistchen auf Wunsch die Daten auch gleich aufbereiten.

von Karol B. (johnpatcher)


Lesenswert?

Carsten G. schrieb:
> nochmal kurz zum Thema Sicherheit. In dem von mir oben erwähnten Beitrag
> ist leider auch die Diskussion zu sehr in der Sicherheit bei der
> Übertragung verebbt.

Aus gutem Grund. Das zu ignorieren ist nämlich fahrlässig und nur ein 
Zeichen dafür, dass man etwas falsch priorisiert.

Carsten G. schrieb:
> Die Übertragung selbst ist ebenfalls unkritisch. Sollten mal ein paar
> Datensätze fehlen (Request gescheitert oä.) oder nur unvollständig sein
> ... alles kein Problem. In der Regel werden die Daten aller 5 Minuten
> gesendet, gebraucht werden aber nur 1 Datensatz pro Stunde. Alles andere
> wird sowieso gefiltert oder geglättet. Außerdem erfolgt eine
> umfangreiche Prüfung der Daten auf Plausiblität, wenn sie eintreffen.

Und was ist mit Daten, die zu oft kommen bzw. Daten, die überhaupt nicht 
zu dem "Benutzer" gehören, der dir gerade Daten sendet. Da muss nicht 
einmal jemand böse Absichten haben, da reicht bei 100 Geräten schon eine 
Misskonfiguration. Insofern ist Authentifizierung meiner Meinung nach 
schon notwendig. Und das ist im Prinzip nur in Verbindung mit 
Verschlüsselung sicher zu gestalten. Bei Verwendung von SSL/TLS ist das 
auch kein Problem und für dich transparent. Sofern du dich für die 
Linux-Variante entscheiden solltest, ist das auch aus 
Implemntierungssicht relativ problemlos machbar.

Carsten G. schrieb:
> Diese Alternative muss nur die beschriebene Aufgabe übernehmen. Und ich
> dachte ein AVR kann das

Siehe oben. Können sicherlich. Aber damit tust du weder dir noch anderen 
einen Gefallen. Wie bereits gesagt ein TCP/IP Stack ist schon etwas 
komplexer und bedarf einiges mehr an Hirnschmalz als man auf den ersten 
Blick annehmen würde. Da ist es wesentlich sinnvoller bestehende 
Lösungen zu verwenden - insbesondere halt Systeme auf Linuxbasis. Das 
erspart dir eine Menge (!) Zeit.

von P.P. (Gast)


Lesenswert?

Für Netwerkgeschichten/Internetanbindung am besten was zukaufen. Ich 
mach das mit dem XPort. Serielle Daten sind mit dem AVR dann schnell 
erstellt bzw.  verarbeitet.

Gruß aus dem warmen Thailand :)
P.P.

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.