Forum: PC-Programmierung Daten von mehreren uc konsoldieren


von Geri (Gast)


Lesenswert?

Hallo zusammen

Ich habe in einem Ethernet-Netz mit vier Mikrocontrollermodulen. Jedes 
stellt 8 Temperaturwerte bereit und kann 8 Relais ansteuern. Die uC 
haben auch einen intetrierten Webserver.

Nun würde ich die Messwerte und Steuervariablen aller uc-Module gerne 
auf einer einzigen Webseite darstellen und von dort aus auch die Relais 
steuern.

Ich könnte mir hierfür z.B. einen zentralen PC vorstellen auf dem der 
Internet Information Server installiert ist und dort ein Programm läuft, 
welches die Daten sychronisiert..


Wie würdet ihr das lösen? Gibt es vieleicht schon etwas Fertiges, mit 
dem ich zumindest die Daten synchronisieren kann und "nur" mehr das 
Web-Interface programmieren muß?

Vielen Dank für eure Tipps und beste Grüsse

Geri

von Peter II (Gast)


Lesenswert?

mache doch einfach eine Seite mit JavaScript, dann kannst du von einer 
Seite aus alles Steuern.

Wo die Seite liegt spielt keine rolle.

von Geri (Gast)


Lesenswert?

Hallo Peter

Vielen Dank für deinen Tipp. Aha, und das geht.

Kannst du mir bitte etwas genauer schildern wie das funktioniert? Ich 
möchte ja Daten von mehreren Controllern auf einer Webseite darstellen 
und von dort aus steuern.

Der Zugriff auf eine Webseite (mit Javascript) erfolgt ja immer nunr auf 
einen Domain-Namen oder IP-Adresse. Wie kommt man aber zu den Daten der 
anderen Controller?

..oder vielleicht ab

Beste Grüsse
Geri

von Peter II (Gast)


Lesenswert?

Geri schrieb:
> Der Zugriff auf eine Webseite (mit Javascript) erfolgt ja immer nunr auf
> einen Domain-Namen oder IP-Adresse.
nein macht es nicht.

du kannst mit Daten von jeder Belieben Adresse laden. z.b. mit jquery.

http://de.wikipedia.org/wiki/Cross-Origin_Resource_Sharing

von Geri (Gast)


Lesenswert?

Vielen Dank, das muss ich mir dann wohl mal genauer anschauen.

von Geri (Gast)


Lesenswert?

So habe nach den Schlüsselwörtern gesurft, bin aber noch nicht richtig 
schlau daraus geworden. Kennt jemand von euch vielleicht noch ein paar 
gute Links wo die Techniken des "cross origin resource sharing" für 
Newbies beschrieben werden - evtl. mit Beispielen

Vielen Dank

Geri

von lebensmittelhändler (Gast)


Lesenswert?

Geri schrieb:
> So habe nach den Schlüsselwörtern gesurft, bin aber noch nicht richtig
Sag uns erst mal wie dein Webserver Befehle an die Module weiterleitet 
wie der konfiguriert ist,... Da muss ja schon irgendwas drauf laufen 
(PHP,...?)

Bullshitbingo kannst du dann später spielen - "cross origin resource 
sharing" - leck mich fett, für jede Trivialität ein Begriff.

von Peter II (Gast)


Lesenswert?

lebensmittelhändler schrieb:
> Geri schrieb:
>> So habe nach den Schlüsselwörtern gesurft, bin aber noch nicht richtig
> Sag uns erst mal wie dein Webserver Befehle an die Module weiterleitet
> wie der konfiguriert ist,... Da muss ja schon irgendwas drauf laufen
> (PHP,...?)

nein muss er nicht.


Er braucht einfach nur eine Webseite mit JavaScript. Diese kann lokal 
auf der Festplatte oder auf irgendeinem Webspace liegen.

Du musst dann "nur" JavaScript programieren. mit JQuery ruft er von den 
Modulen die Daten ab und baut sie in die seite an.

von Udo S. (urschmitt)


Lesenswert?

Peter II schrieb:
> mit JQuery ruft er von den
> Modulen die Daten ab und baut sie in die seite an.

Ich vermute genau da liegt der Hund begraben.

von lebensmittelhändler (Gast)


Lesenswert?

Peter II schrieb:
> nein muss er nicht.
Er will nicht nur Daten abrufen sondern auch Kommandos zurückschicken.

von Peter II (Gast)


Lesenswert?

lebensmittelhändler schrieb:
> Er will nicht nur Daten abrufen sondern auch Kommandos zurückschicken.

das ist bei HTML kein unterschied.

ein http://ip/daten?test=x

sendet etwas und liefert eine Antwort.

von Geri (Gast)


Lesenswert?

Hallo zusammen

Vielen Dank für eure zahlreichen Rückmeldungen.

Bei meiner Anwendung ist auf jedem Controller einen Webserver 
integriert.
Auf dem Webserver liegt eine Webseite auf die der Benutzer zugreifen 
kann und digitale Ausgänge lesen und schreiben kann.
Gerne würde ich nun gleichzeitig auf allen Controller einen Ausgang 
setzen und den Status aller Controller anzeigen. Von mir aus könnte man 
zentral auch einen Webserver laufen lassen, welcher die Daten irgendwie 
konsolidiert. Der Benutzer würde dann immer "nur" auf eine Webseite auf 
dem zentralen Webserver zugreifen.

…wenn das halt überhaupt geht…

Beste Grüße

Geri

von Bernd K. (prof7bit)


Lesenswert?

Peter II schrieb:

> das ist bei HTML kein unterschied.

Du wolltest wahrscheinlich http sagen.

> ein http://ip/daten?test=x
>
> sendet etwas und liefert eine Antwort.

Es ist schlechter Stil mit einem GET den State auf dem Server zu ändern, 
auch wenn es geht und viele es so machen, dazu wurde das POST erfunden.

: Bearbeitet durch User
von lebensmittelhändler (Gast)


Lesenswert?

Peter II schrieb:
> lebensmittelhändler schrieb:
>> Er will nicht nur Daten abrufen sondern auch Kommandos zurückschicken.
>
> das ist bei HTML kein unterschied.
> ein http://ip/daten?test=x
> sendet etwas und liefert eine Antwort.
Das ist mir auch klar, nur müsste man mal wissen was "Webserver auf MC" 
genau ist. Kann der nur statische Seiten raushauen, ist der Code 
vorhanden, ...

Wie soll man da eine brauchbare Empfehlung geben? Mehr als allgemeines 
Blabla kommt da nicht bei raus.

von Peter II (Gast)


Lesenswert?

lebensmittelhändler schrieb:
> Das ist mir auch klar, nur müsste man mal wissen was "Webserver auf MC"
> genau ist. Kann der nur statische Seiten raushauen, ist der Code
> vorhanden, ...

spielt doch überhaupt keine rolle, scheinbar kann er jetzt über den 
Webserver alles machen was er will. Damit kann er es auch von einer 
gemeinsamen seite bei JavaScript machen.

von Stefan (Gast)


Lesenswert?

1. Wenn Du die Daten immer von den gleichen Geräten abrufst kannst Du 
Dir eine HTML Seite bauen in der Javascript (jQuery ist eine 
Javascriptbibliothek) enthalten ist. Das Skript dass Du Dir schreiben 
musst würde die Daten von den Geräten abrufen und auf der Seite sichtbar 
machen, umgekehrt kannst Du Dir Buttons reinprogrammieren die dann 
jeweisl auf den Geräten eine Aktion auslösen. Diese HTML Datei mit dem 
Javascript kopierst Du Dir einfach auf die PCs lokal auf denen Du messen 
und steuern willst.

2. Kauf Dir einen Minirechner (Raspberry etc.) auf dem ein kleiner 
Webserver läuft. Auf den die obige Datei kopieren, so kann man mit allen 
Geräten zugreifen ohne die Datei rumkopieren zu müssen.

Stefan

von Geri (Gast)


Lesenswert?

Hallo zusammen

Der Webserver, welcher auf dem Controller läuft, unterstützt Befehle für 
die Abfrage und das setzen von Variablen.
In eine html-Webseite, die dort läuft kann man z.B. denn Code z.B 
schreiben:


<input type="hidden" name="variable" value="DigitalOut1" size="50">

@Stefan: Vielen Dank für die Hinweise

add 1:
Die Daten würde ich immer von den gleichen Geräten lesen und schreiben.

>>Das Skript dass Du Dir schreiben musst würde die Daten von den Geräten abrufen

.aber eben, wie greift man über eine Webseite auf mehrere dezentrale 
Webserver zu?

.. oder vielleicht sehe ich den Wald ohne

add 2: könnte von mir auch auch IIs sein, ich hänge aber bereits bei 
Punkt 1:)

Beste Grüsse und vielen Dank!
Geri

von Bernd K. (prof7bit)


Lesenswert?

Geri schrieb:
> .aber eben, wie greift man über eine Webseite auf mehrere dezentrale
> Webserver zu?

Auf einer Webseite kann JavaScript enthalten sein. JavaScript läuft im 
Browser. JavaScript kann seinerseits HTTP requests an andere Server 
ausführen. Das ist das selbe Prinzip wie es bei Werbeverseuchten 
Webseiten zu finden ist: Du rufst eine Seite unter www.example.com auf 
und dann beginnt Dein Browser (oder besser gesagt die vielen 
eingebetteten JavaScript-Schnipsel der Werbebranche *von Deinem Browser 
aus*) ungefragt und vollautomatisch hunderte von Requests an hunderte 
von anderen zwielichtigen Servern in der ganzen Welt zu machen von denen 
Du noch nie was gehört hast. Direkt und ohne Umwege von Dir nach dort.

Das ist das selbe Prinzip. So kannst Du das für Deine Zwecke 
implementieren. Frag in einem Webdesigner-Forum wie das im einzelnen 
funktioniert.

Vielleicht verschaffst Du Dier dort auch erstmal generell einen 
Überblick wie die Interaktion zwischen einem Webserver und einem 
Webbrowser abläuft und wo man überall eingreifen oder ansetzen kann und 
wie das üblicherweise gehandhabt wird auf Webseiten die Elemente von 
verschiedenen Diensten auf einer einzigen Seite integrieren. Es gibt 
verscheidene Ansätze, manche sogar komplett ohne JavaScript, nur mit 
Frames oder Iframes und Du brauchst garantiert auch kein jquery dazu, 
das ist kein Muss, zu Lehrzwecken kann (oder sollte!) man das auch mal 
komplett mit nacktem JavaScript (oder ganz ohne JavaScript) 
durchexerzieren. Das ist eine ganze Wissenschaft für sich mit vielen 
Facetten (aber auch genausovielen Stolperfallen), also erstmal in Ruhe 
einen Gesamtüberblick verschaffen über den grundsätzlichen Aufbau des 
www und der Abläufe darin.

: Bearbeitet durch User
von Geri (Gast)


Lesenswert?

Servus Bernd

Vielen Dank für deine ausführliche Rückmeldung. Werde dann wohl auch mal 
in einem Web-Designer Forum nachfragen oder ein verseuchte Seite 
studieren:)

Beste Grüße

Geri

von Marceö (Gast)


Lesenswert?

Einfach alle Seiten über Frames in die neue (gemeinsame) Seite einbinden 
und schon hat man alle vier Mikrocontrollerseiten auf einer ;-)

von Geri (Gast)


Lesenswert?

Hallo Marceö

Hast du hierzu vielleicht ein Beispiel oder zumindest einen 
Code-Ausschnitt?

Beste Grüsse und vielen Dank

Geri

von Marcel (Gast)


Lesenswert?

Guck dir auf folgender Seite 
http://de.selfhtml.org/html/frames/definieren.htm#framesets das 
Detailbeispiel 5 an. Jedes dort im Bild dargestellte Frame gehört zu 
einem der MCUs. Ist bestimmt nicht die schickste Lösung, aber ziemlich 
sicher die einfachste.

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.