Hallo zusammen, ich bin schon länger auf der Suche nach einer Lösung zu meinem Problem, bin aber von der Fülle an Informationen und der Möglichkeiten total erschlagen. Ich hoffe ihr könnt mir hier einen Weg zeigen. Zum Problem: Ich habe vor ein HMI zu realisieren, dass über die serielle Schnittstelle mit selbst definierten Telegrammen mit einem µC kommuniziert. Auf dem HMI soll der Anwender z.B. die Möglichkeit haben über Buttons GPIO's zu schalten. Weiterhin sollen Statusinformationen vom µC an das HMI gesendet werden und angezeigt werden. Das HMI soll aus einem 10" (oder 10,x ") Display bestehen mit capazitiven Touch (single Touch reicht). Auflösung mindestens XGA. Das HMI soll weiterhin in der Lage sein Animationen abzuspielen, wie diese jetzt technisch Aussehen weiß ich noch nicht. Wahrscheinlich über HTML5 und Video Meine Idee: Ich dachte mir das HMI über einen Raspberry PI aufzubauen. So weit ich recherchiert habe, benötigt man für solch ein Display wie ich es angegeben habe mehr "Power" als einen einfachen µC. Also muss ein Linux Board her. Da der Raspberry eine riesen Gemeinde hat, dachte ich mir dass dies der beste Einstieg in die Embedded Linux Welt ist. Ich habe mir bereits einen Raspberry Pi B+ zugelegt und lese mich mithilfe eines Buches langsam ein. Bisher habe ich allerdings nur über die Shell, C und Python IO's angesteuert. Das HMI selbst will ich dann über den Browser aufbauen mithilfe von HTML5, da ich so alle möglichen Gestaltungsfreiräume habe. Das Browser soll dann aber lokal auf dem Raspberry (bzw. an dessen angeschlossenen Display) laufen. Ich will also NICHT über Internet, Handy, Tablet oder sonstwas steuern, sondern nur direkt an dem Display. Wo ich festhänge: Ich habe nach fertigen Lösungskonzepten "WEB-HMI", "HTML5 HMI" usw. für mein Projekt gesucht. Allerdings lande ich da meistens bei speziellen Automatisierungsgeschichten, wodurch ich in der Funktionalität oder im Design eingeschränkt bin. Beispiel: https://www.rexcontrols.com/rex-control-system-raspberry-pi Weiterhin sind diese Systeme immer darauf ausgelegt, das die Bedienung über das Internet mithilfe eines weiteren PC's, Handy usw. von statten geht. Deshalb denke ich, es macht mehr Sinn von grundauf selbst anzufangen. Die Frage ist jetzt, ob ich mit der Einschätzung richtig liege, oder mir so nur das Rad neu erfinde? Ich müsste also einen Weg finden über einen Browser auf dem Raspberry lokal eine HTML5 Seite laufen zu lassen. Dazu müsste dieser wahrscheinlich auch als Server fungieren. Dann benötige ich eine Schnittstelle vom HTML5 zu den IO's des Raspberry bzw. zum UART. Ich habe erfahren, dass es dazu z.B. in PHP das Kommando "shell_exec" gibt. Mit diesem Befahl lassen sich über PHP Konsolenbefehle ausführen. Dann müsste die Website aber noch auf eingehende Telegramme vom µC an den Raspberry reagieren können. Beispiel: Anzeige des aktuallen Zustands eines Eingangs. Weiterhin soll der Systemstart des Raspberrys nicht sichtbar sein. Während der Raspberry hochfährt soll ein Bootlogo angezeigt werden. Nach dem hochfahren soll direkt der Browser mit der lokalen Website geöffnet werden. Dabei soll man aber wirklich nur die Seite sehen und keine Steuerelemente des Browsers. Also sozusagen nur die Website und nichts vom ganzen System. Nuja ich hoffe ich konnte deutlich machen worum es mir geht. Wie gesagt ich weiß jetzt nicht wo ich anfangen soll und ob meine Ideen so umsetzbar sind. Hier habe ich evtl. einen Einstieg gefunden, denn hier wird die GPIO über eine simple lokale HTML Website angesprochen: http://kampis-elektroecke.de/?page_id=1659
Markus W. schrieb: > Deshalb denke ich, es macht mehr Sinn von grundauf selbst anzufangen. > > Die Frage ist jetzt, ob ich mit der Einschätzung richtig liege, oder mir > so nur das Rad neu erfinde? Soetwas selbst zu machen ist durchaus machbar, und es ist durchaus möglich dies über eine lokale Webseite zu machen. Das hat dann auch den Vorteil, dass man auch von anderen Computern darauf zugreifen könnte, wenn man den Webserver auf dem PI entsprechend konfiguriert. Als Webserver würde ich Apache empfehlen. Markus W. schrieb: > Dann müsste die Website aber noch auf eingehende Telegramme vom µC an > den Raspberry reagieren können. Hirzu gibt es mehrere möglichkeiten: * WebSockets * HTML5 Server-Sent Events * Polling & XHR Requests * Periodisches Reload Das einfachste sind Periodisches Reloads, aber ich würde WebSockets empfehlen. Markus W. schrieb: > Dann benötige ich eine > Schnittstelle vom HTML5 zu den IO's des Raspberry bzw. zum UART. Ich > habe erfahren, dass es dazu z.B. in PHP das Kommando "shell_exec" gibt. Das ist eine möglichkeit. Effektiv könnte man Serverseitig jede Programmiersprache nehmen. Ich würde NodeJS nehmen, und mittels dem Apache proxy_wstunnel modul die Websocket verbindungen über Apache zu NodeJS bringen. NodeJS hat den Vorteil, dass man dort bereits gute Websocket module hat. Es gibt dort auch ein exec, aber eigentlich gibt es keinen grund dieses zu vewenden. Auf der Client Seite kommt man um HTML, CSS und JavaScript fast nicht herum, die müsstest du also lernen. Markus W. schrieb: > Nach dem hochfahren soll direkt der Browser mit der lokalen Website geöffnet > werden Das sollte kein Problem darstellen, dazu kann man z.B. einen Browser mit startx als Service im Fullscreen/Kiosk mode starten.
mit Nodejs kann man mit wenigen Zeilen Code einen Webserver erzeugen, Module für Zugriff auf gpio oder serielle gibt es auch. Insgesamt hört es sich nach Heimautomatisierung an, da finde ich den ioBroker sehr interessant.
Danke für die Antworten, da muss ich mich erst einmal hereinlesen. Mit dem HMI soll ein einzelnes Gerät bedient werden, wobei die Bedienung nicht wirklich komplex ist. Wenn man will könnte man es auch ähnlich einer Heimautomatisierung bezeichnen, aber eben nur mit einem Gerät das gesteuert wird. Also so wie es bisher für mich aussieht bietet mit NodeJS eine gute Lösung für meine Aufgaben. Noch eine weitere Frage: Im Zuge des HMI bin ja gerade dabei in die Embedded Linux Welt einzusteigen. Mein Arbeitgeber würde mit eine Weiterbildung bezahlen. Auch hier findet man im Netz 1000 Angebote.... Könnt ihr mir hier eine Weiterbildung empfehlen? Am besten wäre es, wenn der Kurs schon in die Richtung HMI geht, aber dennoch die Grundlagen von Embedded Linux enthält.
Ich geh mal davon aus, dass du die Steuerung über den Browser umsetzen willst. Denn in ein paar Jahren soll es dann doch über ein Tablet ferngesteuert werden. Im Prinzip sind das dann aber drei verschiedene Aufgaben. Mit Embedded Linux haben die meiner Meinung nach aber nicht direkt zu tun. Ob ein Raspberry überhaupt noch Embedded Linux ist, darüber kann man streiten. 1) Webserver API, die es erlaubt GPIO Pins direkt oder über eine Abstraktion (z.B. Licht an) zu steuern oder abzufragen. 2) Asynchrone Kommunikation zwischen Webbrowser und Server. Also einmal um den Status abzufragen, dem Browser aber auch mitzuteilen, wenn ein Ereignis auftritt. 3) HTML5 Oberfläche für die Darstellung und Interaktion mit der Webserver API. Für mich liegen diese drei Punkte eher im Bereich Webentwicklung, also Browser Frontend und Server Backend und haben nichts mit Embedded Linux im speziellen zu tun.
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.