Hallo liebes forum. Ich habe grundkenntnisse im Assemblerprogrammieren und ein wenig Java. Eben die Standardkenntnisse die man im Elektrotechnik Studium vermittelt bekommt. Als kleine Projektidee wollte ich Funkschalter per Arduino kontrollieren (dort gibt es bereits massig Stoff im Netz zu lesen). Normalerweise wird auf dem Ardino ein Webserver aufgesetzt und darüber "geschaltet". Ich möchte den Webserver jedoch auf meinem Heimserver laufen lassen und den Arduino über serielle Komandos ansteuern. Jene sollen durch ein Webinterface getriggert werden. Einschub: Der Ardino ließe sich perfekt an den internen USB Anschluss meines HP NL 40 anschließen, sodass insgesammt auch kein Kabelgeraffel mit Netzwerkkabeln entsteht. Da ich mich in der Webprogrammierung eigentlich kaum auskenne (so etwas HTML Code verstehe ich natürlich) will ich mal die erfahreneren Forenmitstreiter hier fragen, wie man dies am einfachsten realisieren kann (ich möchte hier keine Lösungen, sondern schlagworte zur weiteren Suche reichen mir schon). Da es jetzt noch vor 8 ist, wünsche ich euch einen guten Start in den neuen Tag ;-)
Guten Morgen Stefan, dann goggle doch mal nach CGI. Das ist die Technik, die Du suchst. Als Programmiersprache hierfür kannst Du z.B. Perl, PHP oder auch Java verwenden. Falls Du Java verwenden möchtest, wäre Tomcat ein Schlagwort für Dich. Viel Spaß beim Programmieren. LG, Frank
Das schaut ja schon mal sehr lecker aus, vor allem da IIS8 anscheinend schon CGI kann. Mensch ich hoffe ich habe genügend Zeit für dieses Projekt!
Du kannst mit PHP - ergo über die Webseite - ja auch Dateien ins Servverzeichnis schreiben. Liefe nun ein lokales Skript (z.B. VBA), dass zyklisch den Inhalt oder das Vorhandensein einer solchen Datei prüft, könnte dieses der Anlass sein, eine Nachricht zum Arduino senden ...
Also lieber Namensvetter, das mit Deinem VBA-Script klingt aber nicht sehr professionell. Unter Windows kenne ich mich nicht aus, aber unter Linux kann PHP direkt mit der seriellen Schnittstelle sprechen ... Da ist das erklärt: http://www.php-faq.de/q-php-schnittstelle.html
wenn schon ein IIS vorhanden ist, macht man es doch am besten mit ASP (c#). CGI und PHP kann man probleme bekommen, weil man ständig den Port öffnen und schließen muss. Wenn 2 personen gleichzeitg eine aktion auführen gibt es Probleme. mit ASP kann man den Port beim Start von IIS öffnen und dann ständig offen lassen. Dann muss man nur noch die zugriffe auf den Port synchronisieren, wenn wirklich mal 2 abfragen gleichzeitg kommen.
Peter II schrieb: > CGI und PHP kann man probleme bekommen, weil man ständig den Port öffnen > und schließen muss. Wenn 2 personen gleichzeitg eine aktion auführen > gibt es Probleme. hier müsste man selbst einen service schreiben, der den Port offen hält und mit dem die cgi oder php scripte reden (zB über sockets).
warum denn so kompliziert? ein c-programm das auf einem port auf eingehende verbindungen wartet und einfachsten html-code ausgibt ist doch absolut ausreichend... dazu muss man ja nicht das komplette http-protokoll implementieren.
Die einfachste Lösung ist sicherlich ein CGI-Skript. Das geht in so ziemlich jeder Programmiersprache und so ziemlich unter jedem Betriebssystem. Unter Linux und bash schaut das zum Beispiel dann so aus:
1 | #!/bin/bash
|
2 | echo "Content-Type: text/plain" |
3 | echo "" |
4 | echo "Dein String zur Seriellen Schnittstelle" > /dev/ttyS0oderso |
5 | echo "erfolgreich geschickt" |
Das speicherst Du in Deinem CGI-Verzeichnis ab, zum Beispiel unter /var/www/cgi-bin/skriptname und schaltest das ausführbar mit zum Beispiel "chmod a+w skriptname". Dann gehst Du auf http://ip-des-servers/cgi-bin/skriptname und Du bekommst den Text "erfolgreich geschickt" zurück, der steht dann einfach im Browser. Du kannst, wenn nötig auch vor der echo-Zeile die Du auf /dev/ttyS0oderso umleitest auch noch einen stty Befehl einfügen, damit Du die Parameter umstellen kannst. /dev/ttyS0oderso ersetzt Du natürlich mit der richtigen Schnittstelle. 5 Zeilen, recht viel einfacher geht es wahrscheinlich nicht mehr.
Vielen Dank für die Antworten bis jetzt. Gestern Abend habe ich (inklusive Suchen) erstaunlicherweise nur zwei Stunden benötigt um die Arduino Hardware so weit zu bekommen. Das liegt zum größten Teil daran, dass es schon eine sehr umfangreiche Libary gibt: http://code.google.com/p/rc-switch/wiki/HowTo_OperateLowCostOutlets Leider scheint jedoch die Hürde des Startens einer Batch Datei noch unüberwindbar hoch. Es fängt damit an, welche Packete ich im Win 2012 überhaupt benötige. Im Moment würde ich sicher eine ausführliche Anleitung wie von Christian hier benötigen. Der nächste freie Abend wird also mit dem Durchforsten des Netztes gefüllt werden.
Eine andere möglichkeit ist mit ser2net alle Daten von der seriellen Schnitstelle an ein Netzwerk port zu legen. Eine Tcp verbindung zu einem Port sollte ja kein Problem darstellen.
Ich habe im Netz mittlerweile eine Youtubeanleitung gefunden Phyton zu installieren: http://www.youtube.com/watch?v=7whncKjSXK0 Mein erstes Phyton Skript funktioniert auch ohne Probleme. Allerdings ist im Video die Rede von einer "WEB.config" Datei die bei mir einfach nicht im Ordner erscheint. Die Fehlermeldung lässt auch noch auf eine falsche Konfiguration von IIS schließen: "Die angeforderte Seite kann aufgrund der Einstellungen der ISAPI- und CGI-Einschränkungsliste auf dem Webserver nicht dargestellt werden." Ser2net schaut gut aus, jedoch möchte ich mit lieber lösungen verwenden, die weit verbreitet sind (mehr toturials, mehr informationen usw.)
So wieder einen Schritt weiter. Diesmal lag es an den Sicherheitseinstellungen von IIS. Mittlerweile funktioniert das Python Script auch per Webbrowser. Allerdings NUR auf den Rechner auf dem sich die Scripte befinden. Wie muss ein Python Script aussehen, sodass der PC nicht einen lokalen Pfad zum Öffnen verwendet sondern, egal von wo, eben genau die *.py Datei auf dem Server ausführt? Im Moment schaut es bei mir so aus: import os os.system(r'C:\inetpub\Hausautomat\cgi-bin\bat.bat')
Ich habe mein Problem soweit lösen können, jetzt kommt die Kosmethik! Eigentlich ist es ja sehr unschön mit Phython eine bat Datei auszuführen, da Phython mit dem Serial Plugin auch selbst in der Lage ist über die com Schnittstelle zu komunizieren. Leider scheitert Phython bei mir aber schon in der ersten Zeile: "Import Serial" endet mit einer Fehlermeldung: "Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> import serial File "C:\Python33\lib\site-packages\serial\__init__.py", line 19, in <module> from serialwin32 import * ImportError: No module named 'serialwin32'" Die Datei ist jedoch definitiv vorhanden ;-( Seit 2010 hat es kein Update mehr gegeben, vielleicht ist das Plugin nocht mit Windows 2012 kompatibel.
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.