Statusdisplay Homeautomatisierung - welche "Programmiersprache/Tools"

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo,

    ich möchte folgende Informationen auf einem Display mit Raspberry darstellen

    • Homeautomatisierung Fenster/Türen offen (MQTT),
    • Video-stream der "Türklingel" (mjpeg-streamer),
    • Abfahrt der Busse
    • Anstehende Müllabfuhr
    • Anrufbeantworter
    • Wetterbericht
    • .....

    Jetzt bin ich hin und hergerissen welche Programmiersprache/Tool ich benutzen soll/könnte. Meine ersten Gedanken:

    tkinter/Python

    • Muss auf dem Zielgerät installiert sein
    • Kann tkinter jpeg Streams darstellen?
    • viele GUI Designer


    HMTL5/Javascript,

    • Alles in HTML/JS schreiben - naja nicht unbedingt mein.
    • Integration von MQTT - hab noch nichts gefunden
    • ...

    C/C++

    ...

    Hat jemand eine Idee/einen Rat?

    Mfg

    Werner:danke_ATDE:

  • Statusdisplay Homeautomatisierung - welche "Programmiersprache/Tools"? Schau mal ob du hier fündig wirst!

  • Für sowas bietet sich eine klassische Server/client-Struktur an, wobei du den Server in Python oder einer anderen Programmiersprache deiner Wahl schreiben kannst, und den Client als Webapp, native App für Android, iOS, als normales Desktop Programm etc.

    Willst du das wirklich alles selbst programmieren (macht Spaß, keine Frage) oder tut's auch ein fertiges Projekt wie Hass.io, FHEM & co.? Ist nämlich nicht gerade wenig, was du dir da vornimmst.

  • Willst du das wirklich alles selbst programmieren

    Mein Tipp: Wenn Du Zeit und Lust hast programmiere es selbst. Ansonsten nimm einfach eine bestehende Infrastuktur und programmiere dass was Dir fehlt dazu. Geht wesentlich schneller ;) Und Du hast eine Community die Dir hilft ...

  • Ich benutzte für die Homeautomatisierung auch node-red. Leider sind die Darstellungsmöglichkeiten mit dem "Dashboard" begrenzt.

    Video-Streams, Buszeiten, Müllabfuhrtermine habe ich nichts gefunden und auch keine Idee wie man das in node-red umsetzen soll/kann.

    Ich gehe davon aus, dass sich das auch nicht mit OpenHab/FHEM realisieren lässt? Beim DIY war ich schon angelangt (Zeit ist relativ - muss ja nicht morgen fertig sein).

    Welche "moderne Werkzeuge" oder ähnliches gibt es denn?

    Ist tkinter wirklich für Python noch "aktuell"

    Gerade sehe (google) ich, dass es auch Qt (PyQt5) für Python gibt - habt Ihr damit Erfahrung?

    Welche Werkzeuge könntet ihr denn empfehlen?

  • Ist tkinter wirklich für Python noch "aktuell"

    Nein, seit > 10 Jahren nicht mehr.

    Gerade sehe (google) ich, dass es auch Qt (PyQt5) für Python gibt - habt Ihr damit Erfahrung?

    Ja. Du willst allen ernstes ein SmartHome-Dashboard mit Qt realisieren? Dann mal viel Spaß...

    Welche "moderne Werkzeuge" oder ähnliches gibt es denn?

    Wie ich bereits sagte: eine eigene Lösung von mir fußt auf einem Server/Client prizip, der Server kümmert sich um die Beschaffung von Rohdaten, der Client holt diese ab oder bekommt sie per WebSockets mitgeteilt und zeigt sie an (vereinfacht ausgedrückt).

    Mit einem Webfrontend hast du mMn. die meisten Möglichkeiten.

    Oder was möchtest du nun konkret wissen? Werkzeuge wie Hammer und säge wohl kaum, und welche Frameworks, Programmiersprachen, IDEs etc. etc. du verwenden magst, weißt nur du :conf:

  • Zitat

    Ja. Du willst allen ernstes ein SmartHome-Dashboard mit Qt realisieren? Dann mal viel Spaß...

    Eine Übersicht der offenen Fenster sollte man wohl mit Qt hinbekommen ;) . Ein "SmartHome-Dashboard" stand nie zur Debatte.

    Zitat

    WebSockets

    Danke für den Tipp mit Websockets! Die schau ich mir mal an ..

  • Ein "SmartHome-Dashboard" stand nie zur Debatte.

    Ach?

    Nenn' es halt wie du magst.

  • ich möchte folgende Informationen auf einem Display mit Raspberry darstellen

    ...

    Hat jemand eine Idee/einen Rat?

    Hallo WernerPi,

    die Anzeigen kommen mir bekannt von den MagicMirror Projekten vor. Vielleicht kannst Du da was finden und evt. Fehlendes nachrüsten. Man muss ja das Rad nicht immer wieder neu erfinden.

    Grüße, STF

  • Kannst du da was nennen?

    Diverse Bindings für:

    • Qt: PyQt4 und PySide für Qt 4.x, PyQt5 und PySide 2 für Qt 5.x
    • GTK+: PyGtk für GTK+2, PyGObject für GTK+3

    Außerdem:

    • Kivy
    • Web-based UI (Pyjamas, diverse Toolkits stellen WebKit-WebView Komponenten bereit, oder mit Electron, was dann nichts mehr mit Python zu tun hätte)
    • Platformspezifisch halt noch Bindings für Cocoa AppKit (macOS) oder MFC, WPF, Windows Forms und was Windows nicht noch alles kennt, i.D.R. mit IronPython oder "Python for .Net".

    wxPython würde ich nicht mehr empfehlen, irgendwie hat das den Übergang zu Python 3 IMHO nicht überlebt.

    Eine wohl vollstandige Liste von Möglichkeiten gibt's hier: https://wiki.python.org/moin/GuiProgramming und hier https://de.wikipedia.org/wiki/Liste_von_GUI-Bibliotheken

    Oder eben LowLevel mit Pygame, OpenGL etc., was aber für die allermeisten Fälle nicht empfehlenswert ist.

  • Was ist denn für Leute, die mit GUIs wenig oder keine Erfahrung haben für den Einstieg gut geeignet? Kennst du ein gutes Tutorial oder sowas für die Grundlagen? Ich muss sagen, die rudimentären Einblicke, die ich in tk-inter habe, haben mich eher abgeschreckt.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • (PyQt(4|5)|PySide(2)) Anfänger Tutorials gibt's wie Sand am Meer, und sowohl PyQt und PySide als auch Qt 4.x und 5.x sind vom Grundkonzept her gleich, daher kann man das alles übertragen. Im Qt Wiki gibt's ne Übersicht: https://wiki.qt.io/PySide_Tutorials (aber teilweise für PySide/PyQt4, damit würde ich nicht mehr anfangen!). Außerdem hier: https://github.com/pyside/pyside2-examples und hier: http://zetcode.com/gui/pysidetutorial/.

    Wenn man ein klassisches Desktop-GUI (nix mit Touch-Support oder so) programmieren will, macht man mit Qt wenig falsch.

  • Kurze Rückmeldung. Fertig. Zumindest die SW. Also die erste Version.:)

    Meine erste Idee mit QT & Python habe ich verworfen - ggf. soll das Display ja auch irgendwo anders laufen (Android o.ä.)

    Deshalb HTML. Ich hab mich auch gegen Websockets entschieden - das schien mir zu aufwändig. Satt dessen Server Sent Event (SSE).

    (Läuft nicht bei MS Produkten - aber wer benutzt die schon)

    Anbei ein aktueller Snapshot:

    Kurz zu den einzelnen Bereichen:

    >Bus: Für die Buszeiten habe ich mir mir zuerst die GTFS Daten unserer Verkehrsbetriebe angeschaut. Das war mir dann doch zu kompliziert. An der - für mich relevanten - Haltestelle fahren nur 2 Buslinien. Also die paar Fahrten kurzerhand in eine Datei geklopft.

    >Haus: Zustand der Fenster/Türen. Mittels mqtt empfangen und darstellen

    >Müll: ics Datei auslesen und "relativ" zum aktuellen Zeitpunkt darstellen

    >Zeitung/Brief: Wird von meinem automatisierten Briefkasten gemeldet (MQTT). Da fehlen mir leider noch hübsche "Piktogramme".

    >Video: Wenn jemand an der Haustür klingelt - gibt es automatisch ein Video vom Hauseingang (siehe nächstes Bild). Mit diesem Button kann man den Videostream manuell starten.

    >Wetter: Hab die Umsetzung von meinem Radiowecker recycelt. (wetter.com API)

    -----Edit

    Bzgl. HW: Aktuell ein 7" mit Raspberry Zero W geplant. Beim Display möchte ich HW-Mäßig die Hintergrundbeleuchtung ausschalten und bei Bewegung einschalten...

  • Server Seitig habe ich php genommen. In Javascript gibt man den php-file an.

    Und das php-prg.:

    So, die Hardware ist auch Fertig - hat ein wenig gedauert.

    Es ist ein 7" Display von Waveshare geworden. Ich hab das Display noch modifiziert, um das Backlight an/abschaltbar zum machen. Bzw zu regeln.

    Der "enable" Eingang des PT4103 am 10KOhm Pullup. Daran habe ich den Raspberry Pi angeschlossen.

    Einen Bewegungsmelder (Doppler) am Raspberry.


    Und alles Fertig:


    Ciao ...

    Einmal editiert, zuletzt von WernerPI (2. August 2018 um 17:51) aus folgendem Grund: Fertig ...

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!