Ankündigung

Einklappen
Keine Ankündigung bisher.

Neue Visu: QVisu

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Neue Visu: QVisu

    Nachdem mich die diversen browser-basierten Visus nicht so recht überzeugt haben (mit der Konfiguration der smartvisu bin ich nie warm geworden, und die Optik gefiel weder meiner Liebsten noch mir sonderlich), habe ich mich die letzten Wochen an einen neuen Ansatz gemacht:

    Download: http://www.kalassi.de/download/qvisu-0.2.zip

    Im Aussehen habe ich mich an den Windows 8-Kacheln orientiert. Die Startseite bei mir zu Hause sieht aktuell so aus:
    qvisu.png

    Die Visu läuft als eigenständiges Programm. Der Download ist für Windows; der unveränderte Code läuft auch unter Linux x86 und auf dem Raspberry Pi. Bei mir zu Hause wird die QVisu auf dem Pollin-Set RPi/Touchscreen eingesetzt, mit hohem WAF.

    Es gibt auch eine Android-Variante, die fällt aber bestenfalls unter "frühe Alpha-Version". Wer´s haben mag, möge anfragen.

    Verfügbar sind im Moment folgende Features:
    • Wählbare Ansichten, genannt Container
    • Switch/Status
    • Dimmer
    • RGB-Widget
    • Rolladen / Doppelrolladen / Jalousie
    • Heizung (mit beliebigen Zusatzanzeigen, z.B. Kühlung aktiv oder Feuchtewert)
    • Plot mit zwei unabhängigen Achsen (leider noch eher buggy)
    • Google-Kalender
    • Abfahrtsplan (EFA, getestet mit dem VVS)
    • Fritz!Box-Anrufliste
    • Wettervorhersage
    Zur Konfiguration dient eine XML-Datei (fürs Format siehe die Dokumentation). Als Backend steht momentan nur ein Treiber für sh.py zur Verfügung. Ohne XML-Datei beendet sich die QVisu kommentarlos wieder.

    Für bessere Optik sollten irgendwo auf dem Rechner die SVG-Dateien aus dem KNX-UF-Iconset liegen und dieser Ort per <path> in der XML-Datei eingetragen werden. Das Default-Icon sieht irgendwann langweilig aus.

    Der Sourcecode steht unter GPL2 und ist verfügbar unter https://github.com/l0wside/qvisu.
    Einzige Ausnahmen: der Websocket-Treiber ist LGPL, und die verwendeten Google API Keys dürfen nicht für eigene (abgeleitete) Versionen weiterverwendet werden.


    In Arbeit ist außerdem der QVisuDesigner, mit dem sich per Drag´n´Drop die Konfigurationsdateien zusammenbauen lassen.

    Gruß,

    Max
    Zuletzt geändert von l0wside; 17.08.2015, 13:38.

    #2
    Wie wäre es, ohne Konfigdatei einen Dateiauswahldialog zum Finden einer Selbigen anzuzeigen? ;-)

    Ein YAML-Parser wäre nett; XML finde ich ehrlich gesagt aus mehrfachem Grund etwas nervig.
    DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

    Kommentar


      #3
      Hi Max,
      sieht cool aus. wie bringt man das auf dem PI zum Laufen? Ich hätte gerne so eine anzeige im Eingangsbereich um das Bild der Kamera drauf zu bringen.
      VG
      Jürgen

      Kommentar


        #4
        Hallo,
        Das würde ich gerne mal probieren. Mal was zu machen was nicht im Browser läuft ist sicherlich ne Alternative.
        Wo finde ich denn die Beispiel XML Datei? Wie muss die heissen und wo muss die stehen damit sie gefunden wird.
        Dazu hab ich in der Doku nichts gefunden. Gruß,

        Michael

        Kommentar


          #5
          Hi,

          ich habe mir die QVisu schon angesehen vielleicht kann ich bzgl. der xml weiterhelfen.

          Der Aufbau der XML steht wie Max oben geschrieben hat hier http://l0wside.github.io/ unter Configuration. Ein XML Beispiel müsste ungefähr so aussehen, kann es aktuell aber nicht testen.


          Code:
          <QVisu>
              <connection type="smartvisu">smartcontrol:2424</connection>
              <dimensions>
                  <w>10</w>
                  <h>7</h>
              </dimensions>
              <container name="main">
                  <element type="weather" position="4,4">
                      <latitude>48.81</latitude>
                      <longitude>9.37</longitude>
                      <color>indigo</color>
                  </element>
                  <element type="switch" position="0,1">
                      <text>Schalter</text>
                      <item action="switch">***HIER*ITEM*EINTRAGEN***</item>
                  </element>
              </container>
          </QVisu>

          Kommentar


            #6
            Hallo Simone,
            Danke für das Beispiel. Das sieht ja recht einfach aus. Die Dokumentation über die Datei ist
            ja auch schon recht gut. Leider fehlen noch so grundsätzliche Angaben wie
            - Wie muss die Datei heissen
            - Wo muss die Datei stehen damit sie gefunden wird.

            In Ermangelung von Dokunentation hierzu habe ich das Packet einfach ausgepackt, eine Datei qvisu.xml
            im gleichen Verzeichnis erzeugt und dein Beispiel reinkopiert. Tut aber nicht.
            This application has requested the Runtime to terminate bla bla bla.
            Ich denke mal da fehlen noch ein paar Voraussetzungen.
            Gruß,

            Michael

            Kommentar


              #7
              Ich nochmal
              Habs selbst rausgefunden. Quelltext lesen macht schlau :-) Die Datei kann auf der Kommandozeile angegebenwerden:

              qvisu qvisu.xml

              oder wenn man etwas mehr sehen möchte:

              qvisu --debug logfile.txt qvisu.xml

              Dann funktioniert es auf Anhieb auch mit smarthome.py.
              Ich bau mir jetzt mal was zusamman.

              Michael

              Kommentar


                #8
                Up, sorry, dass ich mich erst jetzt dazu melde. Nach einem Dreivierteljahr hatte ich nicht mehr mit einer Rückmeldung gerechnet.

                Die Doku ist ggf. an der einen oder anderen Stelle nicht mehr 100%ig korrekt, meine Motivation zur Übrarbeitung war aus o.g. Grund mäßig.

                Auf dem Pi läuft die Visu 1a (bei mir im Dauerbetrieb). Ich muss heute abend mal meine Konfiguration rauskramen. Ein dpkg gibt es nicht, Übersetzen ist aber kein Hexenwerk. Als Touchscreen habe ich das Ding von Pollin genommen - auch wenn ich Pollin sonst eher meide, passt es recht gut.

                heckmannju: Kamera wäre cool, ist aber nicht trivial. Ich habe es versucht, anschließend lief aber der Event Loop von Qt nicht mehr.

                Max

                Kommentar


                  #9
                  Hi Max,
                  hast du zum übersetzen und linken auf dem PI ein makefile? Ich würde das gerne auf dem Raspi mit dem neuen 7" Toch display zum laufen bringen.
                  VG
                  Jürgen

                  Kommentar


                    #10
                    Hallo Jürgen,

                    hast du mit Qt schon mal gearbeitet? Ich kompiliere gegen Qt 5.3.2.

                    Aktueller Code liegt übrigens hier: http://git.kalassi.eu/max/QVisu

                    Qt erzeugt sich die Makefiles mit einem Progrämmchen namens qmake selbst. Dieses wiederum setzt auf einer .pro-Datei auf. Meine sieht so aus:
                    Code:
                    #-------------------------------------------------
                    #
                    # Project created by QtCreator 2015-05-18T14:40:55
                    #
                    #-------------------------------------------------
                    
                    QT       += core gui svg xml network
                    
                    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
                    
                    TARGET = QVisu
                    TEMPLATE = app
                    
                    # Uncomment this line to use the experimental VLC code
                    #CONFIG += use_video
                    
                    use_video {
                            INCLUDEPATH += vlc/include
                    
                            LIBS += ../qvisu/vlc/lib/libvlc.lib
                    }
                    linux {
                    INCLUDEPATH += /usr/include/qt5/QtCore /usr/include/qt5 /usr/include/qt5/QtNetwork
                    LIBS += -L/usr/lib/i386-linux-gnu/
                    # Doorcom w/ PJSUA
                    DEFINES += DOORCOM
                    INCLUDEPATH += ../qvisu/pjproject-2.4/pjsip/include ../qvisu/pjproject-2.4/pjlib/include ../qvisu/pjproject-2.4/pjlib-util/include ../qvisu/pjproject-2.4/pjmedia/include ../qvisu/pjproject-2.4/pjnath/include
                    LIBS += -L../qvisu/pjproject-2.4/pjlib/lib -L../qvisu/pjproject-2.4/pjlib-util/lib -L../qvisu/pjproject-2.4/pjnath/lib -L../qvisu/pjproject-2.4/pjmedia/lib -L../qvisu/pjproject-2.4/pjsip/lib -L../qvisu/pjpro
                    ject-2.4/third_party/lib
                    #LIBS += -lpjsua-i686-pc-linux-gnu -lpjsip-ua-i686-pc-linux-gnu -lpjsip-simple-i686-pc-linux-gnu -lpjsip-i686-pc-linux-gnu -lpjmedia-codec-i686-pc-linux-gnu -lpjmedia-i686-pc-linux-gnu -lpjmedia-videodev-i68
                    6-pc-linux-gnu -lpjmedia-audiodev-i686-pc-linux-gnu -lpjmedia-i686-pc-linux-gnu -lpjnath-i686-pc-linux-gnu -lpjlib-util-i686-pc-linux-gnu  -lsrtp-i686-pc-linux-gnu -lresample-i686-pc-linux-gnu -lgsmcodec-i68
                    6-pc-linux-gnu -lspeex-i686-pc-linux-gnu -lilbccodec-i686-pc-linux-gnu -lg7221codec-i686-pc-linux-gnu -lportaudio-i686-pc-linux-gnu  -lpj-i686-pc-linux-gnu -lm -lrt -lpthread  -lasound
                    LIBS += -L/usr/lib/arm-linux-gnueabihf -lpjsua-armv6l-unknown-linux-gnueabihf -lpjsip-ua-armv6l-unknown-linux-gnueabihf -lpjsip-simple-armv6l-unknown-linux-gnueabihf -lpjsip-armv6l-unknown-linux-gnueabihf -l
                    pjmedia-codec-armv6l-unknown-linux-gnueabihf -lpjmedia-armv6l-unknown-linux-gnueabihf -lpjmedia-videodev-armv6l-unknown-linux-gnueabihf -lpjmedia-audiodev-armv6l-unknown-linux-gnueabihf -lpjmedia-armv6l-unkn
                    own-linux-gnueabihf -lpjnath-armv6l-unknown-linux-gnueabihf -lpjlib-util-armv6l-unknown-linux-gnueabihf  -lsrtp-armv6l-unknown-linux-gnueabihf -lresample-armv6l-unknown-linux-gnueabihf -lgsmcodec-armv6l-unkn
                    own-linux-gnueabihf -lspeex-armv6l-unknown-linux-gnueabihf -lilbccodec-armv6l-unknown-linux-gnueabihf -lg7221codec-armv6l-unknown-linux-gnueabihf -lportaudio-armv6l-unknown-linux-gnueabihf  -lpj-armv6l-unkno
                    wn-linux-gnueabihf -lm -lrt -lpthread  -lasound
                    }
                    
                    
                    SOURCES += main.cpp\
                        qvelement.cpp \
                        qvitem.cpp \
                        qvsvgwidget.cpp \
                        qvdriver.cpp \
                        qvwebsocket.cpp \
                        elements/qvshutter.cpp \
                        elements/qvswitch.cpp \
                        qvmainwindow.cpp \
                        qvpopupframe.cpp \
                        qvswitchicon.cpp \
                        qvdeployserver.cpp \
                        elements/qvcolor.cpp \
                        elements/qvdimmer.cpp \
                        elements/qvplot.cpp \
                        elements/qvheating.cpp \
                        elements/qvselector.cpp \
                        elements/qvfritz.cpp \
                        elements/qvweather.cpp \
                        elements/qvgooglecalendar.cpp \
                        qviconwidget.cpp \
                        qvdeployserver.cpp \
                        elements/qvcolor.cpp \
                        elements/qvdimmer.cpp \
                        elements/qvplot.cpp \
                        elements/qvheating.cpp \
                        elements/qvselector.cpp \
                        elements/qvfritz.cpp \
                        elements/qvweather.cpp \
                        elements/qvgooglecalendar.cpp \
                        qviconwidget.cpp \
                        elements/qvefa.cpp
                    
                    use_video {
                        SOURCES += elements/qvvideo.cpp \
                                   elements/qvvideoplayer.cpp
                    }
                    
                    linux {
                        SOURCES += elements/qvdoorcom.cpp
                    }
                    
                    HEADERS  += \
                        qvelement.h \
                        qvitem.h \
                        qvsvgwidget.h \
                        qvdriver.h \
                        qvwebsocket.h \
                        elements/qvcolor.h \
                        elements/qvshutter.h \
                        elements/qvswitch.h \
                        qvmainwindow.h \
                        qvpopupframe.h \
                        qvswitchicon.h \
                        qvdeployserver.h \
                        elements/qvdimmer.h \
                        elements/qvplot.h \
                        elements/qvheating.h \
                        elements/qvselector.h \
                        elements/qvweather.h \
                        elements/qvfritz.h \
                        elements/qvgooglecalendar.h \
                        qviconwidget.h \
                        elements/qvefa.h
                    
                    use_video {
                        HEADERS += elements/qvvideo.h \
                                   elements/qvvideoplayer.h
                    }
                    
                    linux {
                        HEADERS += elements/qvdoorcom.h
                    }
                    
                    FORMS    +=
                    
                    RESOURCES += \
                        qvicons.qrc
                    
                    use_video {
                        DEFINES += VIDEO
                    }
                    Wenn du vor #CONFIG += use_video die Raute entfernst, müsste der VLC-Code mit compiliert werden und die Kamera funktionieren. Konfiguration wie folgt:
                    Code:
                            <element type="video" position="0,5" width="4" height="2">
                                <color>#ff00ff</color>
                                <url>rtsp://USER:PASSWORD@kamera:554/PSIA/streaming/channels/102</url>
                            </element> -->
                    Die aktuelle Linux-Version kann auch Türsprechen, ist m.W. noch nicht dokumentiert. Braucht PJSIP und wird wie folgt konfiguriert:
                    Code:
                                <element type="doorcom" position="2,2" width="1" height="1">
                                    <server>fritz.box</server>
                                    <user>622</user>
                                    <source>sip:**1@fritz.box</source>
                                    <password>GEHEIM</password>
                                    <ringtone>doorbell.wav</ringtone>
                                    <accept></accept>
                                    <hangup>0</hangup>
                                    <dooropen>#0</dooropen>
                                </element>
                    <source> ist der zugelassene Anrufer (Anrufe von anderen Telefonen werden ignoriert). Fehlt der Tag, wird jeder Anrufer akzeptiert; hilfreich zum ersten Funktionstest.
                    Die Tags <accept>, <hangup> und <dooropen> sind DTMF-Codes, die für die jeweilige Aktion gesendet werden (brauche ich bei meiner Gira). Ich habe nur die Delays nie so hinbekommen, dass die 0 so früh gesendet wird, dass das Gateway das als Abheben akzeptiert, aber nicht so spät, dass es es schon wieder als Auflegen interpretiert
                    Eigentlich müsste ich die Delays konfigurierbar machen. Seufz.


                    Es gibt theoretisch auch einen QVisuDesigner, der hat aber nie vernünftig funktioniert. Simone kann ein Lied davon singen.

                    Max
                    Zuletzt geändert von l0wside; 05.04.2016, 22:41.

                    Kommentar

                    Lädt...
                    X