Benutzer-Werkzeuge

Webseiten-Werkzeuge


nanopi_m4:kiosk:software

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
nanopi_m4:kiosk:software [2020/11/09 13:11] andminnanopi_m4:kiosk:software [2021/04/16 21:04] andmin
Zeile 29: Zeile 29:
   * sudo apt upgrade   * sudo apt upgrade
   * sudo apt dist-upgrade   * sudo apt dist-upgrade
-  * sudo apt install xorg xserver-xorg-legacy openbox chromium xdotool unclutter lighttpd twinkle swaks bluez php-cgi+  * sudo apt install xorg xserver-xorg-legacy openbox chromium xdotool unclutter lighttpd twinkle swaks bluez php-cgi php7.3-gd
   * sudo lighty-enable-mod fastcgi-php   * sudo lighty-enable-mod fastcgi-php
   * sudo nano -w /etc/X11/Xwrapper.config   * sudo nano -w /etc/X11/Xwrapper.config
Zeile 39: Zeile 39:
 <code> <code>
 #!/bin/sh #!/bin/sh
-if ! ps ax | grep [/]opt/kiosk.sh +    touch /tmp/kiosk.status 
-then  +    chmod 666 /tmp/kiosk.status 
-    pulseaudio --daemonize +    touch /tmp/switch.status 
-    sleep 2 +    chmod 666 /tmp/switch.status 
-    xset -dpms+    sleep 10
     xset s noblank     xset s noblank
     xset s 300     xset s 300
     openbox-session &     openbox-session &
-    unclutter &+    unclutter -grab -visible &
     if ! lsusb | grep "1bcf:2284" > /dev/null     if ! lsusb | grep "1bcf:2284" > /dev/null
     then      then 
         startadresse="https://www.kinasen.de/wetteruebersicht.php"         startadresse="https://www.kinasen.de/wetteruebersicht.php"
 + echo 2 > /tmp/switch.status
     else     else
-        startadresse="JITSIURL"+ echo 1 > /tmp/switch.status 
 +        startadresse="URL_JITSI"
     fi     fi
-    chromium --no-first-run --kiosk --agc-startup-min-volume=255 --disable-pinch --overscroll-history-navigation=0 --disable-translate --disable-suggestions-service --disable-save-password-bubble --start-maximized --disable-session-crashed-bubble --disk-cache-dir=/dev/null $startadresse +    chromium --no-first-run --lang=de-DE --kiosk --agc-startup-min-volume=255 --compensate-for-unstable-pinch-zoom --disable-pinch --disable-translate --disable-suggestions-service --disable-save-password-bubble --start-maximized --disable-session-crashed-bubble --disk-cache-dir=/tmp/kioskcache --disk-cache-size=1 $startadresse
-fi+
 </code> </code>
    * sudo chmod 755 /opt/kiosk.sh    * sudo chmod 755 /opt/kiosk.sh
Zeile 62: Zeile 63:
 <code> <code>
 [Unit] [Unit]
-Description=Kiosk+Description=Starte Chromium Kiosk
  
 [Service] [Service]
 Type=oneshot Type=oneshot
-User=USER +User=kiosk 
-ExecStart=/usr/bin/startx /etc/X11/Xsession /opt/kiosk.sh+ExecStart= /usr/bin/startx /etc/X11/Xsession /opt/start_kiosk.sh
  
 [Install] [Install]
Zeile 85: Zeile 86:
  
 <code> <code>
-var tasten=-1;+var intervalPing = setInterval(function(){ 
 +        var xhr = new XMLHttpRequest(); 
 +        xhr.onreadystatechange = function() {}; 
 +        xhr.open('GET', 'http://localhost/ping.php'); 
 +        xhr.send(); 
 +}, 5000); 
 + 
 +var tasten=[0,0,0];
 function keys(key) { function keys(key) {
    if (!key){    if (!key){
       key = event;       key = event;
       key.which = key.keyCode;       key.which = key.keyCode;
-   +
-   switch(key.which){+      tasten[0]=tasten[1]; 
 +      tasten[1]=tasten[2]; 
 +      tasten[2]=String.fromCharCode(key.which); 
 + 
 +   switch(tasten.join('')){
       // Taste y:       // Taste y:
-      case 89:tasten=0; break; +      case "Y1X"      location.href "JITSI_URL"; break; 
-//taste 1: +      case "Y2X"      location.href "https://www.kinasen.de/wetteruebersicht.php"; break; 
-     case 49:if(tasten==0){ tasten=1;} break; +      case "Y3X"      location.href = "https://www.kinasen.de/gartenbilder.php"; break; 
-      // Taste 2: +      case "Y4X":       location.href = "http://localhost/lexikon.php"; break; 
-      case 50:if(tasten==0){ tasten=2;} break; +      case "Y5X":  
-     // Taste 3: +        var path=window.location.pathname; 
-      case 51:if(tasten==0){ tasten=3;break; +        if (path=="/anrufen.php"
-      // Taste 6: +        
-      case 54: +                telefonstatus()
-        if(tasten==1) {location.href = "https://www.kinasen.de/wetteruebersicht.php";} +                break; 
-        if(tasten==2) {location.href = "JITSIURL";} +        
-        if(tasten==3) { +        else 
-                var path=window.location.pathname; +        
-                if(path=="/lexikon.php"+                location.href = "http://localhost/anrufen.php?incoming=1"; 
-                +                break;
-                        location.href = "https://www.kinasen.de/wetteruebersicht.php"+
-                } +
-                else +
-                +
-                        location.href = "http://localhost/lexikon.php"; +
-                }+
         }         }
-        break; 
-      default: tasten=-1; 
    }    }
 } }
Zeile 130: Zeile 134:
 Um direkt in die festgelegte Jitsi-Konferenz zu schalten wird das entsprechende Script durch eine UDEV-Regel beim Anstecken oder Entfernen der Kamera ausgelöst. Um direkt in die festgelegte Jitsi-Konferenz zu schalten wird das entsprechende Script durch eine UDEV-Regel beim Anstecken oder Entfernen der Kamera ausgelöst.
  
-/opt/switch_1.sh+/opt/switch.sh
 <code> <code>
 #!/bin/bash #!/bin/bash
 +zahl_telefon=5
 +zahl_max=5
 +if [ $# -ne 1 ] 
 +then
 +        echo "kein parameter"
 +        exit
 +fi
 +if [ $1 -eq 99 ]
 +then
 +        export DISPLAY=":0"
 +        export XAUTHORITY=/home/kiosk/.Xauthority
 +        xdotool getactivewindow
 +        xdotool key "ctrl+F5" 
 +        exit
 +fi
 +if [ $1 -gt -1 ] && [ $1 -lt 10 ]
 +then
 +        if ps ax | grep [c]hromium > /dev/null
 +        then
 +                if ! ps ax | grep [/]bin/sh /opt/switch.sh > /dev/null
 +                then
 +                        if [ $1 -eq 0 ]  # Taster gedrückt, durchschalten
 +                        then 
 +                                taste=$(cat /tmp/switch.status)
 +                                taste=$(($taste+1))
 +                                if [ $taste -eq $zahl_telefon ]
 +                                then
 +                                        if cat /tmp/twinkle.log | grep "registration succeeded" > /dev/null
 +                                        then
 +                                                echo "registration succeeded" > /tmp/twinkle.log
 +                                        else
 +                                                taste=$(($taste+1))
 +                                        fi
 +                                fi
 +                                if [ $taste -gt $zahl_max ]
 +                                then
 +                                        taste=2
 +                                fi
 +                        else
 +                                taste=$1
 +                        fi
 +                        echo "$taste" > /tmp/switch.status
 +                        export DISPLAY=":0"
 +                        export XAUTHORITY=/home/kiosk/.Xauthority
 +                        xdotool getactivewindow; xdotool mousemove 100 200; xdotool key y; xdotool key "$taste"; xdotool key x
 +                        sleep 1
 +                fi
 +        fi
 +fi
  
-export DISPLAY=":0" 
-export XAUTHORITY=/home/kiosk/.Xauthority 
-xdotool getactivewindow 
-xdotool key y 
-xdotool key 1  
-xdotool key 6 
 </code> </code>
 ==== UDEV Rule für Kamera ==== ==== UDEV Rule für Kamera ====
 /etc/udev/rules.d/80-jitsi.rules /etc/udev/rules.d/80-jitsi.rules
 <code> <code>
-ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1bcf", ATTRS{idProduct}=="2284", RUN+="/bin/su USER -c '/bin/sh /opt/switch_2.sh'" +ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1bcf", ATTRS{idProduct}=="2284", RUN+="/bin/su USER -c '/bin/sh /opt/switch.sh 1'" 
-ACTION=="remove", SUBSYSTEM=="usb", ATTRS{idVendor}=="1bcf", ATTRS{idProduct}=="2284", RUN+="/bin/su USER -c '/bin/sh /opt/switch_1.sh'"+ACTION=="remove", SUBSYSTEM=="usb", ATTRS{idVendor}=="1bcf", ATTRS{idProduct}=="2284", RUN+="/bin/su USER -c '/bin/sh /opt/switch.sh 2'"
 </code> </code>
 ==== GPIO für Tasten ==== ==== GPIO für Tasten ====
Zeile 152: Zeile 199:
 Pullup 10k nach 3,3V Pin 1 Pinleiste GPIO1 Pullup 10k nach 3,3V Pin 1 Pinleiste GPIO1
  
-Zur Abfrage des Tasters läuft ein Programm (C) und ruft bei Flankenerkennung ein Bash-Script (/opt/switch_3.sh) auf. Dieses simuliert wiederum eine Tastatureingabe (y 3 6) im Browser. +Zur Abfrage des Tasters läuft ein Programm (C) und ruft bei Flankenerkennung ein Bash-Script (/opt/switch.sh 3) auf. Dieses simuliert wiederum eine Tastatureingabe (y 3 6) im Browser. 
  
 ==== Telefonfunktion ==== ==== Telefonfunktion ====
Zeile 164: Zeile 211:
 User=kiosk User=kiosk
 ExecStartPre=sleep 10 ExecStartPre=sleep 10
 +ExecStartPre=pactl set-source-volume USB_in 100%
 +ExecStartPre=touch /tmp/twinklestatus.txt
 +ExecStartPre=chmod 666 /tmp/twinklestatus.txt
 ExecStart=screen -d -U -L -Logfile /tmp/twinkle.log -m twinkle -c ExecStart=screen -d -U -L -Logfile /tmp/twinkle.log -m twinkle -c
 +ExecStop=screen -p 0 -X stuff "quit^M"
 +RestartSec=15
 +Restart=always
 [Install] [Install]
 WantedBy=multi-user.target WantedBy=multi-user.target
Zeile 171: Zeile 224:
 ==== Bluetooth LE Scan==== ==== Bluetooth LE Scan====
 Hier wird Bluetooth LE zur Anwesenheitserkennung z.B. zum Einschalten von Lampen genutzt. Hier wird Bluetooth LE zur Anwesenheitserkennung z.B. zum Einschalten von Lampen genutzt.
-Start als systemd service btlescan.+Start als systemd service bluetoothLE. 
 +<code> 
 +[Unit] 
 +Description=Startet Scan nach Bluetooth LE Geräten 
 +After=bluetooth.target 
 + 
 +[Service] 
 +Type=oneshot 
 +ExecStart=/home/kiosk/ble_scan > /dev/null 2>&1 & 
 + 
 +[Install] 
 +WantedBy=multi-user.target 
 + 
 +</code> 
 + 
 +ble_scan.c benötigt zum compilieren apt-get install libncurses5-dev libbluetooth-dev
  
    
Zeile 178: Zeile 246:
 ==== Email ==== ==== Email ====
  swaks --to ZIELMAILADRESSE -s MAILSERVER:PORT -au BENUTZERNAME -ap "PASSWORT"  swaks --to ZIELMAILADRESSE -s MAILSERVER:PORT -au BENUTZERNAME -ap "PASSWORT"
 +
 +Ist in ble_scan eincompiliert zur Benachrichtigung.
 ==== GPIO Tasteneingabe ==== ==== GPIO Tasteneingabe ====
-Das Programm zum Überwachen der Tasten-GPIOs und das Ausschalten der blinkenden grünen LED geschieht über /etc/rc.local+Das Programm zum Überwachen der Tasten-GPIOs und das Ausschalten der blinkenden grünen LED wird über /etc/rc.local gestartet
  
 <code> <code>
Zeile 191: Zeile 261:
  
 <code>Option                  "StandbyTime" "5"</code> <code>Option                  "StandbyTime" "5"</code>
 +
 +Während eines Anrufes soll das Display nicht abgeschalten werden. Ein Cronjob checkt regelmäßig welche Seite derzeit im Browser gezeigt wird und simuliert dann mit XDOtool eine Mausbewegung. 
 +==== Kiosk Ping====
 +Es kommt vor, dass für den Kiosk keine Internetverbindung besteht und Chromium dann eine Fehlermeldung zeigt. Um diesen Zustand zu beheben ruft auf allen Seiten ein Javascript alle 5 Sekunden ein Script auf.
 +Bleibt dieser "Ping" aus so wird das neu laden der Internetseite im Chromium veranlasst.
 +
nanopi_m4/kiosk/software.txt · Zuletzt geändert: 2024/03/01 21:09 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki