Forum: Mikrocontroller und Digitale Elektronik Steuerung über Webseite steuern


von Alex (Gast)


Lesenswert?

Hallo,

ich habe mir vor einigen Jahren ne kleine Steuerung gebaut die mir die 
Innentemperatur der einzelnen Räume unseres Hauses misst und 
aufzeichnet.
Die Steuerung ist mit einem USB/Uart Chip fest an meinem PC im Büro 
angeschlossen. Mit einer eigenen Software lese ich die Messwerte aus und 
stelle sie grafisch dar.

Ich würde das nun gerne so umbauen dass die Steuerung über das USB an 
ein Raspberry Pi angeschlossen wird. Über das lokale LAN sollte nun 
jedes Endgerät (PC, Smartphone etc.) auf einer Art Homepage auf dem PI 
die Messwerte angezeigt bekommen und per Button Druck Relais schalten 
können.
Die Seite sollte auch so optimiert sein dass sie sich dem Anzeigeformat 
des Endgerätes anpasst.

Als Hardware Entwickler fehlt mir hier die Übersicht womit ich mich 
beschäftigen sollte. Man wird im Netz von verschiedenen Techniken 
erschlagen und gefühlt werden wöchentlich ein halbes Dutzend neue 
Skriptsprachen gehypt.

Ich bräuchte einen Wegweiser zum Einstieg. Womit muss ich mich 
beschäftigen?

Gruß
Alex

von Axel H. (axhieb)


Lesenswert?

Zum Einstieg in die Webentwiklung ist https://www.freecodecamp.org/ echt 
fein.

Das könnte dich vielleicht auch interessieren: 
http://www.instructables.com/id/Python-WebServer-With-Flask-and-Raspberry-Pi/

von Klaus R. (klara)


Lesenswert?

Alex schrieb:
> Ich bräuchte einen Wegweiser zum Einstieg. Womit muss ich mich
> beschäftigen?

Ich würde dies mit Java umsetzen.
mfg klaus

von Wolfgang (Gast)


Lesenswert?

Alex schrieb:
> Ich bräuchte einen Wegweiser zum Einstieg. Womit muss ich mich
> beschäftigen?

Zur Eigenbaulösung wäre vielleicht OpenHAB mit Mosquitto MQTT und 
Grafana eine Softwarealternative aus der Smarthome Ecke. Für den 
RaspberryPi gibt es OpenHasbian als fertig zusammengestelltes 
Betriebssystemimage.

von nicht_maker (Gast)


Lesenswert?

Ein Webserver auf dem Pi ist der Anfang.
Die Messwerte darauf anzuzeigen ist trivial.
Fuer das Steuern brauchst Du Scriptverarbeitung im Webserver. Ich nutze 
dafuer klassisches HTML, das durch Perl/CGI bereitgestellt wird.

nicht_maker

von ARexx (Gast)


Lesenswert?

Alex schrieb:
> Man wird im Netz von verschiedenen Techniken
> erschlagen und gefühlt werden wöchentlich ein halbes Dutzend neue
> Skriptsprachen gehypt.

Das hast du nun davon!:-))) Offensichtlich ist auch hier "im Netz"....



Axel H. schrieb:
> Python-WebServer-W...

Klaus R. schrieb:
> mit Java umsetzen

Wolfgang schrieb:
> OpenHAB mit Mosquitto MQTT und
> Grafana

nicht_maker schrieb:
> klassisches HTML, das durch Perl/CGI bereitgestellt wird

von Simplex (Gast)


Lesenswert?

Ein kleines Howto mit verschiedenen Ansätzen und grundlegenden 
Beidpielen wäre im Forum Gold wert.
Wer kann das und hat Zeit und Lust dazu?

von Simplex (Gast)


Lesenswert?

CGI wäre ein einfacher verständlicher Ansatz:


http://www.linux-praxis.de/linux3/apache5.html

von Weingut P. (weinbauer)


Lesenswert?

Der Knackpunkt sind die "verschiedene Endgeräte", da wirds wirklich 
knifflig.
Responsive Webdesign per CSS ... prost Mahlzeit.

Davon abgesehen das die ganze Steuerei in der Heizung eh Mist ist. Mach 
nen ordentlichen hydraulischen Abgleich, dann rennt das Moped im 
optimalen Arbeitspunkt, die Hütte ist kuschelig und Du sparst noch 
Energie dabei.

https://www.w3schools.com/cSS/css_rwd_intro.asp

PS: kann man auch mit JavaScript machen, aber CSS ist einfacher.

: Bearbeitet durch User
von georg (Gast)


Lesenswert?

Simplex schrieb:
> Wer kann das und hat Zeit und Lust dazu?

Um dann für jeden Ansatz gnadenlos niedergemacht zu werden? Warum sollte 
man sich das antun? Leser, die davon profitieren, melden sich sowieso 
nie wieder, dafür gibt es eine grosse Mehrheit, die nur ihren Frust und 
Hass abreagieren will. Vom Forum wird das durch die Einführung der 
Bewertungen auch noch aktiv unterstützt.

Georg

von Stefan F. (Gast)


Lesenswert?

Auf dem Raspberry Pi gibt es zahlreiche Möglichkeiten.

Berufliche programmiere ich Web-Services in Java. Ein relativ einfacher 
Java Webserver wäre der Apaceh Tomcat. Damit du die HTML Dokumente nicht 
mühsam durch String-Verkettung erzeugen musst, bietet sich JSF oder 
Freemarker an. Für JSF habe ich ein Tutorial: 
http://stefanfrings.de/jsf_tutorial/index.html

Zuhause nutze ich auf dem Raspberry Pi hingegen den Apache HTTP Server 
mit dem PHP Modul (libapache2-mod-php7.0). Das wäre vermutlich am 
einfachsten einzurichten, denn da brauchst du nichts weiter zu tun, als 
dieses Paket zu installieren.

Danach legst du einfach deine Scripte und statische Dateien im 
Verzeichnis /var/www/html ab.

Um HTML zu lernen, empfehle ich Dir irgendein Tutorial durchzuarbeiten. 
Danach wird Dir SelfHtml als Nachschlagewerk dienen: 
https://wiki.selfhtml.org/

von Alex (Gast)


Lesenswert?

ARexx schrieb:
> Das hast du nun davon!:-))) Offensichtlich ist auch hier "im Netz"....

Damit hatte ich gerechnet :-)
Aber wenigstens habe ich dann eine grobe Richtung. Es ist sehr 
deprimierend sich mit Dingen über längere Zeit zu beschäftigen und zum 
Schluss scheitert es an Kleinigkeiten.

Wolfgang schrieb:
> Zur Eigenbaulösung wäre vielleicht OpenHAB mit Mosquitto MQTT und
> Grafana eine Softwarealternative aus der Smarthome Ecke. Für den
> RaspberryPi gibt es OpenHasbian als fertig zusammengestelltes
> Betriebssystemimage.

Das klingt sehr interessant.
Verstehe ich das richtig dass die Oberfläche quasi nur "konfiguriert" 
wird. Wie flexibel kann ich da eigene Geräte bzw. Protokolle hinter der 
Oberfläche implementieren?

von Stefan F. (Gast)


Lesenswert?

> Ein kleines Howto mit verschiedenen Ansätzen

Das wird nicht möglich sein, denn eine kleine Übersicht über alle 
gängigen Möglichkeiten würde schon ein dickes Buch werden.

Der Punkt ist, das in Web Anwendungen zahlreiche Technologien 
miteinander verknüpft eingesetzt werden. Wenn man davon noch keine 
kennt, wird so ein Howto völlig unverständlich.

Im Bereich der Web Entwicklung gibt es für jede Teilaufgabe gefühlt 
mindestens 10 gute Lösungen. Diese beliebig miteinander kombiniert 
ergibt wiederum hunderte Gesamtkonzepte. Das erschlägt jeden Anfänger 
verständlicherweise.

Also schau Dir einfach irgendein Tutorial zu den hier genannten 
Techniken an und finde dabei heraus, welches Dir am verständlichsten 
erscheint. Und dann bleibe dabei. Es ist besser, eine weniger gute 
Technik voll zu beherrschen, als alles mal gesehen zu haben aber nichts 
zu beherrschen.

HTML und CSS sollte man aber vorher schon einmal anhand von statischen 
Webseiten kennengelernt habe.

> CGI wäre ein einfacher verständlicher Ansatz

Zweifellos aber völlig veraltet. Damit würde ich mich nicht mehr 
beschäftigen.

von Alex (Gast)


Lesenswert?

Stefan U. schrieb:
> Zuhause nutze ich auf dem Raspberry Pi hingegen den Apache HTTP Server
> mit dem PHP Modul (libapache2-mod-php7.0). Das wäre vermutlich am
> einfachsten einzurichten, denn da brauchst du nichts weiter zu tun, als
> dieses Paket zu installieren.

Ich denke ich werde mit Stefans Vorschlag anfangen.
Mit HTML und CSS würde ich wohl relativ schnell zu einer passenden 
Oberfläche kommen. Die Kommunikation über den ttyUSB würde dann wohl in 
JavaScript erfolgen. Funktioniert das gut oder ist das ein Frickelei?

von Stefan F. (Gast)


Lesenswert?

> Die Kommunikation über den ttyUSB würde dann wohl in
> JavaScript erfolgen.

JavaScript ist eine Programmiersprache für den Web Browser 
(normalerweise jedenfalls). Du wolltest doch die zu steuernde Hardware 
nicht an dein Smartphone/Laptop anschließen sondern an den Raspberry Pi, 
oder habe ich Dich falsch verstanden?

Für den Zugriff auf den seriellen Port via PHP auf dem Raspberry Pi gibt 
es eine Anleitung. Sieht überschaubar aus: 
http://www.ko4bb.com/getsimple/index.php?id=serial-port-access-from-php-with-raspberry-pi

von A.. P. (arnonym)


Lesenswert?

Klaus R. schrieb:
> Ich würde dies mit Java umsetzen.

Das ist doch mit Kanonen auf Spatzen geschossen, nur um eine popelige 
Webseite anzuzeigen die ein paar UART-Befehle absetzt.

Weingut P. schrieb:
> Der Knackpunkt sind die "verschiedene Endgeräte", da wirds wirklich
> knifflig.
> Responsive Webdesign per CSS ... prost Mahlzeit.

In Zeiten von Frameworks wie Bootstrap ist das doch schon lange keine 
kniffelige Angelegenheit mehr. Ist ja schon fast kniffeliger eine 
"klassische" Webseite zu bauen :D

Da es sich hier laut der Beschreibung nur um eine kleine Webseite 
(Komplexität dahingestellt) handelt, welche lediglich ein paar Werte 
ausgibt und durch Button-Klicks Aktoren schaltet wäre mein Mittel der 
Wahl ebenfalls eine einfache HTML-Seite mit Bootstrap als 
Basis-Framework. Dahinter dann wahlweise Javascript, PHP oder Python, 
welches die serielle Kommunikation des Pi mit der Schaltung abwickelt. 
Da kann man ja nehmen, womit man am besten zurechtkommt, was man 
schneller konfiguriert kriegt oder bei welchem einem die Bibltiotheken 
besser gefallen. Ans Ziel kommt man mit allen genannten Technologien und 
Bibliotheken für die serielle Kommunikation findet man dafür auch.

Also: Apache-Server in Mindestkonfiguration auf den Pi, kleine Webseite 
gebastelt und Werte/Befehle wahlweise mit JS/PHP/Python mit der 
Steuerung austauschen. Fertig ist die Laube.

Tutorials für HTML/CSS findet man wie Sand am Meer, die Installation und 
ggf. Einrichtung eines Apache findet man auch zuhauf im Netz. Als 
Bibliothek für Python kenne ich pySerial und habe damit schon sehr 
bequem gearbeitet. Zu Python muss man nur sagen, dass da die Einbindung 
in den Apache etwas mehr Aufmerksamkeit benötigt, als z.B. bei PHP. 
Dafür hat man mit Python auch direkt eine extrem hilfreiche 
Skriptsprache für die Zukunft kennengelernt und endet nicht mit 
unleserlichen HTML-PHP-Mischmasch-Dateien (schlimmstenfalls), sondern 
hat eine schöne Trennung zwischen den HTML-Dateien und dem Teil für die 
"Geschäftslogik" bzw. dem dynamischen Teil.

Gruß
Arno

P.S.: Ich habe dich so verstanden, dass du nur die aktuellen Werte 
anzeigen möchtest. Falls du auch noch eine Historie oder irgendwelche 
Auswertungen anzeigen möchtest, musst du dir natürlich noch Gedanken um 
die Persitenz der Daten machen. Aber das steht erst mal auf einem 
anderen Blatt.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

> Das ist doch mit Kanonen auf Spatzen geschossen, nur um eine
> popelige Webseite anzuzeigen die ein paar UART-Befehle absetzt.

Was noch fast egal ist. Viel blöder ist, dass Java keine seriellen Ports 
unterstützt. Dazu muss man dann schon C Libraries über das JNI Interface 
ansprechen. Wenn man dabei keinen Knoten ins Hirn bekommen will, nimmt 
man was fertiges, wie die RxTxComm Library 
(http://rxtx.qbang.org/wiki/index.php/Download). Die wurde aber im 
Januar 2006 zuletzt verändert - klingt ein bisschen beängstigend.

Wegen der Persistierung: Sei mit Datenbanken auf dem Pi vorsichtig. 
Damit verschleißt man sich die SD Karte ziemlich schnell. Speichere 
häufig veränderte Dateien lieber auf einen USB Stick/Festplatte/SSD.

von Simplex (Gast)


Lesenswert?

Espeasy könnte auch dein Freund werden.
Ohne lan per wifi, recht simpel.

Mit global Sync hast Du all deine Messwerte zentral zur Verfügung.

https://m.youtube.com/watch?v=dQ2opGCvqZA
https://m.youtube.com/watch?v=5gomPXCLV9k
https://m.youtube.com/watch?v=Sz26uxTG1sc


Und so weiter.....

von Wolfgang (Gast)


Lesenswert?

Alex schrieb:
> Das klingt sehr interessant.
> Verstehe ich das richtig dass die Oberfläche quasi nur "konfiguriert"
> wird. Wie flexibel kann ich da eigene Geräte bzw. Protokolle hinter der
> Oberfläche implementieren?

Wenn du nur Kleinigkeiten (Steuerwerte, Messdaten, Schaltzustände, 
Schaltbefehle) zwischen deinen Geräten und dem Raspberry austauschen 
möchtest, kannst du in deinen Geräten als Protokoll MQTT implementieren 
(z.B. im ESP8266) und für den Datenaustausch benutzen. Fürs Smartphone 
gibt es etliche fertige MQTT Apps (für Android z.B. IoT MQTT Dashboard 
od. v.a.m.) wo du einfach deine Oberfläche konfigurierst.
Für eigene Protokolle kannst du in OpenHAB wohl auch eigene Bindings 
bereitstellen - habe ich aber noch nicht gemacht.

von nicht_maker (Gast)


Lesenswert?

Stefan U. schrieb:
> Wegen der Persistierung: Sei mit Datenbanken auf dem Pi vorsichtig.
Ja.

> Damit verschleißt man sich die SD Karte ziemlich schnell. Speichere
> häufig veränderte Dateien lieber auf einen USB Stick/Festplatte/SSD.
Ich speichere die in einer DB in einer Ramdisk /dev/shm.
Immer Mitternacht werden die gesammelten Daten in die DB auf der SD 
unter /home/xxx/log/xxx.db geschrieben.

Beim Herunterfahren sichert ein von systemd gestartetes Script die Daten 
bis zum aktuellen Zeitpunkt in die DB unter /home/xxx/log/xxx.db.

Beim Booten erzeugt ein Script in der crontab unter @reboot die DB in 
der Ramdisk und befuellt diese mit den letzten 1500 Records (etwas mehr 
als 1 Tag bei 1 Record je Minute)

nicht_maker

von Tippgeber (Gast)


Lesenswert?

Alex schrieb:
> Als Hardware Entwickler fehlt mir hier die Übersicht womit ich mich
> beschäftigen sollte.

Wenn Du bereit bist eine wirklich neue Welt kennen zu lernen, auch wenn 
hier deswegen gleich das Geheule losgehen wird, gibt's eigentlich nur 
eine Antwort:

  Javascript

Dazu:

    https://nodejs.org
    https://github.com/node-serialport/node-serialport
    http://expressjs.com
    https://socket.io/
    https://code.visualstudio.com/


Wenn Du von den Klassikern wie C, C#, C++, Java, Assembler, 
Visual-Basic, Delphi etc. kommst, ist das alles ein ziemlicher 
Kulturschock, lohnt sich aber.

Und das ganze Responsive-Design ist nichts besonderes. Entweder das 
bisschen CSS von Hand selber machen oder eben ein fertiges Framework 
reinklatschen. Es gibt dutzende. Such Dir eins aus.

von georg (Gast)


Lesenswert?

Tippgeber schrieb:
> gibt's eigentlich nur
> eine Antwort:

Das ist genau das Problem: zig verschiedene Lösungen, aber alle mit dem 
Anspruch auf die allein seligmachende Wahrheit.

Georg

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.