Bilderrahmen mit 4K Monitor und ext. Steuerung (KNX-Heimautomation)

  • Hallo,


    nach stundenlangem Basteln funktioniert er endlich. Unser 4K Bilderrahmen. Daher jetzt hier eine kurze Zusammenfassung.


    Ziel: 4K-Bilderrahmen, der Bilder von einem Stick abspielt. Dabei soll der Monitor durch einen Bewegungsmelder ein- und ausgeschaltet werden. In unserer Hausautomation schalten Bewegungsmelder das Licht ein, hierdurch sollte auch der Monitor ein- und ausgeschaltet werden.



    Verwendet habe ich einen Raspberry Pi 2 und einen LG 27UD58-B.



    Auf Speicherkarte das Raspbian Image (das normale reicht) installieren.


    Auf dem (Windows-) Rechner die Datei config.txt (oder boot.txt) öffnen und foigendes einfügen:


    hdmi_group=2

    hdmi_mode=87

    hdmi_ignore_edid=0xa5000080

    hdmi_cvt 3840 2160 24

    max_framebuffer_width=3840

    max_framebuffer_height=2160

    hdmi_pixel_freq_limit=400000000



    Die Karte nun in den Rasberry stecken. Neustart. Passwort belassen oder ändern.



    Telnet installieren

    Sudo apt-get install telnetd



    Einloggen mit

    telnet <ip-Adresse>


    Einloggen mit

    User pi

    password raspberry


    Den Monitor sollte man jetzt von der Kommandozeile schalten können mit:

    vcgencmd display_power 0

    vcgencmd display_power 1



    Der installierte Bilderviewer ist nicht geeignet. Daher habe ich QIV verwendet.

    sudo apt-get install qiv


    Unter /home/pi/.config/autostart Datei qiv.desktop anlegen

    sudo mkdir /home/pi/.config/autostart

    sudo nano /home/pi/.config/autostart/qiv.desktop

    [Desktop Entry]

    Type=Application

    Name=qiv

    Comment=Autostart QIV

    Exec=/usr/bin/qiv -s -r -m -G -i -f -d 20 /media/pi/INTENSO


    Der Stick heißt INTENSO. Alternativ ist auch eine rekursive Verzeichnisverwendung (-u) möglich.


    Ging bei mir nicht nicht -> auf den Hintergrund gelegt zum Anklicken

    Auch Ablage des Befehls in /etc/xdg/lxsession/LXDE-pi/ oder in lokalem user-lxsession hat bei mir nicht funktioniert.



    Nun einen Webbrowser installieren, um über Seitenabrufe den Monitor zu schalten.

    sudo apt-get install lighttpd

    sudo apt-get install php7.0-fpm

    sudo lighttpd-enable-mod fastcgi

    sudo lighttpd-enable-mod fastcgi-php


    sudo nano /etc/lighttpd/conf-available/15-fastcgi-php.conf


    (oder sudo leafpad /etc/lighttpd/conf-available/15-fastcgi-php.conf auf dem Raspberry)


    Inhalt:

    # -*- depends: fastcgi -*-

    # /usr/share/doc/lighttpd/fastcgi.txt.gz

    # http://redmine.lighttpd.net/pr…tions#mod_fastcgi-fastcgi

    ## Start an FastCGI server for php (needs the php5-cgi package)

    fastcgi.server += ( ".php" =>

    ((

    "socket" => "/var/run/php/php7.0-fpm.sock",

    "broken-scriptfilename" => "enable"

    ))

    )


    sudo service lighttpd force-reload


    sudo nano /var/www/html/index.php

    und Einfügen:

    <?php phpinfo() ?>


    sudo nano /var/www/html/aus.php

    und Einfügen:

    <?php

    $output = shell_exec('vcgencmd display_power 0');

    echo "<pre>OUT: ".$output."</pre>";

    ?>


    sudo nano /var/www/html/an.php

    und Einfügen:

    <?php

    $output = shell_exec('vcgencmd display_power 1');

    echo "<pre>OUT: ".$output."</pre>";

    ?>


    Nun noch die Berechtgung setzen, um den Zugriff per shell_exec zu genehmigen

    sudo usermod -aG video www-data


    REBOOT

    sudo reboot -n



    Der Bilderrahmen geht nun und ist über den Seitenaufruf ein- und ausschaltbar. Die Diashow läuft im Hintergrund weiter.



    Zur Vollständigkeit unsere Steuerung, aber das funktioniert durch den Seitenaufruf natürlich auch über andere Wege. Auch ist es möglich einen kleinen Bewegungsmelder direkt mit dem Raspberry zu verbinden.


    Wir verwenden als Visualisierung für unser KNX-Bus Smarthome mit Smartvisu in einer älteren Version.



    Smarthome smartvisu

    user admin

    passwort ...



    /usr/smarthome/etc/logic.conf



    [picframe]

    filename = picframe.py

    watch_item = unten.flur.uflbew






    picframe.py


    if sh.unten.flur.uflbew() ==1:

    sh.tools.fetch_url('http://<ip-adresse>/an.php')

    else:

    sh.tools.fetch_url('http://<ip-adresse>/aus.php')




    Fehler in smarthome var log