Hallo, ich möchte einen kostengünstigen Datenlogger aufbauen, der zyklisch Meßwerte erfasst und diese als Datensätze per LAN in eine MS-SQL-Datenbank schreibt. Lösungen mit einer S7-300 o.ä.sind viel zu teuer. Eigentlich keine schlimme Sache für einen Mikrocontroller wenn nicht LAN und SQL wäre. Am liebsten wäre mir ein Controller mit LAN-Schnittstelle und BASIC. Gibt es das überhaupt oder hat jemand schon mal so was ähnliches realisiert? Mit Access bzw. VB und SQL-Server habe ich Erfahrungen, aber nicht mit Mikrocontroller und SQL-Server. Micha
Ist das MS-SQL Protokoll überhaupt offengelegt? Wenn nicht kannst du mal damit anfangen dieses Protokoll zu analysieren. Denn wenn der µC direkt mit dem SQL-Server reden soll ist das ja Voraussetzung. Es wäre naheliegenderweise einfacher, wenn der µC das nicht tun muss, sondern irgendwas von sich gibt das ein PC dann mit einem eigenen Dienst in MS-SQL übersetzt. Wobei dieser PC auch der SQL-Server sein kann, an den der µC per LAN seine Daten sendet. Aber eben auf seine Art, dort übersetzt, nicht gleich als MS-SQL-Protokoll mit kryptografischer Authentifizierung.
Du kannst dich über das TDS-Protokoll informieren, es gibt eine Java jdbc-Schnittstelle im Quellcode. Der MS-SQL-Server verarbeitet eigentlich Klartext - ungefähr. Du kannst die Kumpels von SELECT schicken: INSERT INTO mydata fields(vorname,name,telefon) values ('Bill','Gates','0800-252627');
Hi, ich weiß nicht, ob das Protokoll offengelegt ist. Ansonsten wäre dein Vorschlag eine Möglichkeit. Ich denke mal, Du willst RS232-Daten senden und diese mit eine virtuellen COM-Port empfangen und dann in die Datenbank schreiben. Allerdings komme ich an den SQL-Server nicht ran. Da müsste ich noch einen PC zwischenschalten, der ständig läuft und die Daten weiterverarbeitet. Aber das wollte ich eigentlich vermeiden. Gibt es denn einen Mikrokontroller mit LAN-Schnittstelle oder gerht das nur über den (teuren) Xport.
Hi Jorge, BASIC mit SQl-Anweisungen wäre ideal. Aber sicher Wunschdenken...
Ich denke dem µC das SQL-Protokoll beizubringen nicht so einfach, wenn nicht sogar unmöglich. Es ist halt nicht bloss ein Text-Protokoll wie von Jorge geschrieben, da gehört schon ein wenig mehr dazu. Ich würde auch empfehlen das der µC mit einen Programm über eine Recht einfachen TCP/UDP Protokoll unterhält und das Programm die Verbindung zum SQL-Server herstellt. Selbst die Anmeldung könnte schon schwer werden, der SQL-Server überträgt das Passwort nicht im Klartext.
Jorge wrote:
> Der MS-SQL-Server verarbeitet eigentlich Klartext - ungefähr.
Auch bei der Authentifizierung? Will ich nicht hoffen.
Micha wrote:
> Gibt es denn einen Mikrokontroller mit LAN-Schnittstelle
Ja, gibt es. Aber das ist der einfachere Teil. Ob LAN drin oder
LAN-Controller dran oder Xport, das ist sekundär. Du solltest zuerst die
SQL-Frage angehen, denn damit steht und fällt alles.
Denn eines gibt es wahrscheinlich nicht: Einen fertigen Controller mit
Basic drauf der von bereits fix und fertig mit dem SQL-Server in dessen
Sprache spricht. Und der natürlich nichts kosten darf (wo dir doch schon
ein Xport prohibitiv teuer erscheint).
Es sei denn du verwendest einen Miniatur-PC mit einem VIA-Zwergboard. Da
ist zwar die Hardware etwas teurer, und der Strom leider auch, aber
dafür musst du dann nicht erst noch Monate Arbeit reinstecken um mit dem
SQL-Server zu reden.
Andreas: Ja Du sagst es.... die Alternative wäre dann ein Artigo o.ä. Zumindest ist das billiger als S7-300- basierte Lösungen. Obwohl es ja eigentlich kein so ausgefallenes Problem ist, Daten aus der Umwelt aufzunehmen und an eine Datenbank zu senden. Da ich zur Zeit erst mal so checke was überhaupt möglich wäre, dachte ich, dass auch µC zwischenzeitlich sowas können. Aber dem scheint ja nicht so zu sein... Trotzdem danke für eure Antworten. Micha
Möglicherweise kann Linux mit SQL-Server reden. In dem Fall kommen Microcontroller-Linux-Lösungen in Betracht. Sind aber neu auch nicht viel billiger als ein Zwerg-PC, es sei denn du willst davon 10000 Stück bauen. Billig gibt's die allerdings in Form von Routern. Alte Fritz-Box umwidmen, oder ähnliche Kisten. Aber wohl nicht mit Basic, das ist im Linux-Umfeld eher selten anzutreffen.
Es sollen dann schon mehrere gebaut werden, die ihre Daten alle an einen SQL-Server senden. Fritz-Box usw. scheiden da aus. Ich dachte hardwareseitig eher so an Stromversorgung, µC, RJ45-Buchse, paar Optokoppler und gut.
Da bist du dann in der Dimension Grashopper (siehe http://shop.embedded-projects.net) oder ATNGW100 oder Fox Board (http://elmicro.com/de/foxboard.html). Davon gibt's in allen Farben und Formen. Meist >100€, Atmel drückt aber beim AVR32 grad etwas auf den Preis um in den Markt zu kommen. Aber auch hier: Erst mal checken ob sich damit auf einfache Art ein SQL-Server ansprechend lässt. Lässt sich erstmal mit PC Linux testen.
@Micha Was spricht dann dageben auf dem Server wo der SQL-Server läuft ein kleinen Dienst zu starten der die Umsetzung das Protokolls macht? Warum muss es dann unbedingt auf dem µC sein? Hätte sogar den Vorteil das es über ODBC geht und man danach MySQL, PostSQL, Oracle, Firefird, DB2 einstetzen könnte ohne etwas man µC oder an den Dienst zu ändern - ausser dem Connectionstring.
Hstten wir schon: "Allerdings komme ich an den SQL-Server nicht ran."
@Andreas Kaiser Oh hatte überlesen. Aber wenn er nicht an den SQL-Server rankommt, kann er doch einfach ein msi packet den Admin geben - muss ja nicht alles selber machen.
Na der Admin wird sich hüten, dort irgedwelche selbstgebastelten Programme zu installieren..
Ich habe nur Zugangsdaten und kann mit verschiedenen Clients (Access, VB2005) auf den Server zugreifen. Nun dachte ich dass auch ein Mikrokontroller (mit der entsprechenden Software) ein Client sein kann.
Kann er. Aber das "mit der entsprechenden Software" ist der Knackpunkt.
Eventuell mal frage ob auf dem SQL-Server auch ein Webserver Iss oder ähnliches läuft - oder auf einem anderem Rechner. Wenn auf dem SQL-Server ein IIS läuft, einfach ein ASP seite einrichten welche die Daten in den SQL-Server einträgt. Der µC greift dann nur auf den Webseite zu und übergibt die paramete alle im request. http://sqlserver/import.asp?wert1=x&wert2=y Das http im µC sollte kein Problem sein, die ASP kann ja als Quellcode vorliegen, besteht eh bloss aus ein paar zeilen damit kann der Admin auch die Sicherheit prüfen. Das Ganze würde auch mit Apache und PHP/Perl gehen.
MS-TDS Protokoll http://download.microsoft.com/download/a/e/6/ae6e4142-aa58-45c6-8dcf-a657e5900cd3/%5BMS-TDS%5D.pdf und eine offene Implementierung http://www.freetds.org/ Eher man sowas implementiert, würde ich irgendwo einen zusätzlichen Rechner hinstellen, der die Daten der Datenlogger entgegennimmt und dann passend zum Server schickt.
>Eher man sowas implementiert, würde ich irgendwo einen zusätzlichen >Rechner hinstellen, der die Daten der Datenlogger entgegennimmt und dann >passend zum Server schickt. Sowas habe ich mir auch vorgestellt. Es gibt doch TCP/IP für AVR, damit kann man eine Client/Server Schnittstelle z.B. über HTTP mit GET machen. Die Implementierung des TDS-Protokolls in "C" auf dem Mikrocontroller wird wohl hauptsächlich an der Codegrösse scheitern, es sei denn man nimmt eine Nummer grösser (AVR32 oder ARM). Man sollte es transaktional anlegen - kein Mehraufwand. Die Authentifizierung ist natürlich an die entsprechenden bekannten Algorithmen gebunden oder man gibt alles auf dem SQL-Server frei. Es muss auch kein MS-SQL-Server sein (mittlerweile kostenfrei bis ein paar GB Datenvolumen), da tuts auch PostgreSQL oder MySQL, die sind nicht schlecht. TCP muss sein, mit UDP würde ich gar nix machen dies ist nicht gesichert. Und doch, ausser vielleicht bei der Authentifizierung ein wenig geht viel im Klartext.
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.