Forum: Mikrocontroller und Digitale Elektronik Microcontroller und MS-SQL-Server


von Micha (Gast)


Lesenswert?

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

von Andreas K. (a-k)


Lesenswert?

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.

von Jorge (Gast)


Lesenswert?

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');

von Micha (Gast)


Lesenswert?

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.

von Micha (Gast)


Lesenswert?

Hi Jorge,

BASIC mit SQl-Anweisungen wäre ideal.
Aber sicher Wunschdenken...

von Peter (Gast)


Lesenswert?

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.

von Andreas K. (a-k)


Lesenswert?

Jorge wrote:

> Der MS-SQL-Server verarbeitet eigentlich Klartext - ungefähr.

Auch bei der Authentifizierung? Will ich nicht hoffen.

von Andreas K. (a-k)


Lesenswert?

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.

von Andreas K. (a-k)


Lesenswert?

Vielleicht hilft dir das weiter: 
http://www.freetds.org/reference/index.html

von Micha (Gast)


Lesenswert?

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

von Andreas K. (a-k)


Lesenswert?

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.

von Micha (Gast)


Lesenswert?

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.

von Andreas K. (a-k)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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

von Andreas K. (a-k)


Lesenswert?

Hstten wir schon: "Allerdings komme ich an den SQL-Server nicht ran."

von Peter (Gast)


Lesenswert?

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

von Micha (Gast)


Lesenswert?

Na der Admin wird sich hüten, dort irgedwelche selbstgebastelten 
Programme zu installieren..

von Micha (Gast)


Lesenswert?

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.

von Andreas K. (a-k)


Lesenswert?

Kann er. Aber das "mit der entsprechenden Software" ist der Knackpunkt.

von Peter (Gast)


Lesenswert?

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.

von Arc N. (arc)


Lesenswert?

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.

von Jorge (Gast)


Lesenswert?

>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
Noch kein Account? Hier anmelden.