Hallo, ich bin in Sachen Webserver-Programmierung noch nicht einmal in den Kinderschuhen und ich brauche Hilfe um in die richtige Richtung los zu laufen. Also eine bestehende Hausautomatisierung S7-1200 soll mit einem Webserver auf einem kleinen embedded PC verbunden werden.. Use-Cases der Webseiten: > Schaltaktionen für Rolladen und Licht auslösen > Informationen aus einer Datenbank anzeigen (Verbrauchs-, Wetterdaten etc) > Statusinformationen auslesen (Licht an/aus ...) Ziel soll es sein die Endpunkte - Webserver und S7 - frei von jeder verknüpfenden Logik bzw. Wissen um Datenbank-Strukturen zu halten. Dazu habe ich mir folgende Architektur zusammen gereimt. C++ Applikation (AutomationServer) auf dem PC ist die Gegenstelle der S7 und des Webservers/Scripts(was auch immer)und setzt je nach Job Daten/Abläufe in Richtung einer MYSQL-DB, S7 oder eben derWebserver/WebApp weiter. Hoffentlich kann man diese kurze Fassung nachvollziehen.. aber da ich mir nicht sicher bin ob dies die richtige Lösung ist... wollte ich hier Alternativen erfragen. Desweiteren habe ich derzeit keinen Schimmer ob und wie ich eine Verbindung zwischen einer Webseite/Script... zu einer C++-Applikation hinbekomme... gibt es die Möglichkeit auch hier eine Socketverbindung aufzubauen? Muss das Java sein... oder gibt es was "Einfaches"? Sorry für die naive Frage, aber alles läuft soweit nur der Punkt ist für mich absolutes Neuland. Danke für eure Vorschläge, Kommentare und Anregungen!
:
Verschoben durch User
Solltest dir nicht zu viele Gedanken um die Architektur machen. Nachdem du einen Prototyp am laufen hast, verzehnfachen sich die Anforderungen und du musst sowieso eine neue Architektur entwerfen. Üblicher Aufbau: Der Webserver hat eine CGI Schnittstelle. Für jede Seite startet der Webserver ein eigenes Programm (erzeugt weniger Overhead als man denkt). Normalerweise nimmt man für dieses Programm eine Scriptsprache wie PHP. Du kannst aber auch C++ nehmen. Dein Programm gibt dann einen Text aus, wie du ihn im Browser mit "Seitenquelltext anzeigen" siehst. Für den ersten Versuch solltest du einfach Textausgabe, Datenbankabfragen und S7 Kommandos in C++ Programme packen. Wird natürlich bald chaotisch, aber mit den Erfahrungen kannst du dann unter den 100000 modularen Systemen ein passendes aussuchen.
Kannst du nicht über dein webinterface bashscripts auf dem server, auf dem die cpp applikation läuft, ausführen? In php gibt es zum Beispiel shell_exec('.....') mit dem du shell commands ausführen kannst. Dein cpp Programm müsste dann nur Parameter entgegennehmen und auswerten. Ob das die beste Lösung ist weiß ich nicht aber aufjedenfall ist es sehr einfach.
Okay - damit hab ich erst einmal ne Richtung - das mit den Skripten klingt gut - melde mich wenn ich ein Ergebnis habe
Ohne die Hardware zu kennen wird's schwierig. Apache z.B. kann CGI und PHP. Wenn's die gleiche Hardware für HTTP und CPP ist käme noch JAVA mit JNI in Frage. Geht's um die Datenbank ist es gleich, da Du von Deinem CPP auf die Daten ja regelmäßig zugreifen kannst. Könntest z.B. ein "Nuistwasneu" Flag in der DB setzen das dann für die Ausführung sorgt und umgekehrt ...
@xyz: Das Ganze soll auf einem Odroid U3 laufen - Das Teil hat echt "Bums" ... :) @all: Was ich nun noch gesehen habe sind Websockets - die scheinen auf dem ersten Blick das Ideal.. denn hier kann ich aus dem Webclient heraus Socket-Verbindungen aufbauen.. und somit an mein CPP koppeln... viel zu Lernen erst einmal ;) Danke
> die scheinen auf dem ersten Blick das Ideal..
Ja! interessantes Konzept.
Du schreibst eine statische Seite mit HTML, CSS und deinem
Anwendungsprogramm in Javascript. Debugger und Javascript-Interpreter
innerhalb der Browser sind ausgereift. Man kann ohne weiteres komplexe
Javascript Programme schreiben.
Dein Javascript-Anwendungsprogramm sendet dann nur Kommandos über
Websockets. Am einfachsten in JSON Kodierung.
Serverseite hatte ich bisher nur in Java gemacht. Library für Websockets
ist erstaunlich umfangreich. Aber auch für C++ sollten sich
Library/Rahmenprogramm finden lassen.
Das einzige Problem - Dieses Konzept kennt noch kaum jemand. Auf Fragen
bekommst du unzählige Antworten, die nicht zu diesem Ansatz passen.
@Noch Einer : hättest du da ein lauffähiges Beispiel
Oh - ist für die Firma in der ich arbeite. Hatte mit einer Chat Demo angefangen. War unvollständig. Trotzdem ist der Code aus der Demo immer noch im Programm. Im Netz behaupten Leute, mit einem node.js Server würde man deren Demo in 5 Minuten zum laufen bringen. Größerer Teil der Arbeit war dann mit der jquery Library die Seiteninhalte ändern. Am besten Tutorial für jquery und eventuell auch jquery-ui durcharbeiten. Diese Konzepte sind für einen C-Programmierer doch ziemlich überraschend.
Noch einer schrieb: > Am besten Tutorial für jquery und eventuell auch > jquery-ui durcharbeiten. Ich rate von jquery ab. Alles was mit jquery geht, geht auch mit normalem javascript, dort sogar mit schön ausfürlichen funktionsnamen. Zudem ist es allgemein eine schlechte idee die Seiteninhalte manuell zu updaten. Das führt nur zu unübersichtlichem und undurchsichtigem code. Ich empfehle eine Templateing library zu nehmen, die dir die seite aus den daten automatich zusammensetzt. Momentan ist z.b. angularjs sehr beliebt. Ich habe eine eigene templateing library http://mvsync.ch https://github.com/Daniel-Abrecht/MVSync
Danke Daniel, ich schau es mir an... da das alles für mich noch sehr neu ist bin ich erst einmal am lesen und probieren ;O) aber ich melde mich wenn ich was am laufen habe ;)
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.