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
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.
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
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 umsetzenWolfgang schrieb:> OpenHAB mit Mosquitto MQTT und> Grafananicht_maker schrieb:> klassisches HTML, das durch Perl/CGI bereitgestellt wird
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.
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
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/
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?
> 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.
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?
> 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
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.
> 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.
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.
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
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.orghttps://github.com/node-serialport/node-serialporthttp://expressjs.comhttps://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.
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