nanopi_m4:kiosk:software
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
nanopi_m4:kiosk:software [2020/11/10 00:30] – andmin | nanopi_m4:kiosk:software [2024/03/01 21:09] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
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 |
* sudo lighty-enable-mod fastcgi-php | * sudo lighty-enable-mod fastcgi-php | ||
* sudo nano -w / | * sudo nano -w / | ||
Zeile 39: | Zeile 39: | ||
< | < | ||
#!/bin/sh | #!/bin/sh | ||
- | if ! ps ax | grep [/]opt/kiosk.sh | + | touch /tmp/kiosk.status |
- | then | + | chmod 666 / |
- | | + | |
- | | + | |
- | | + | |
xset s noblank | xset s noblank | ||
xset s 300 | xset s 300 | ||
openbox-session & | openbox-session & | ||
- | unclutter & | + | unclutter |
if ! lsusb | grep " | if ! lsusb | grep " | ||
then | then | ||
startadresse=" | startadresse=" | ||
+ | echo 2 > / | ||
else | else | ||
- | | + | echo 1 > / |
+ | | ||
fi | fi | ||
- | chromium --no-first-run --kiosk --agc-startup-min-volume=255 --disable-pinch --overscroll-history-navigation=0 | + | chromium --no-first-run |
- | fi | + | |
</ | </ | ||
* sudo chmod 755 / | * sudo chmod 755 / | ||
Zeile 62: | Zeile 63: | ||
< | < | ||
[Unit] | [Unit] | ||
- | Description=Kiosk | + | Description=Starte Chromium |
[Service] | [Service] | ||
Type=oneshot | Type=oneshot | ||
- | User=USER | + | User=kiosk |
- | ExecStart=/ | + | ExecStart= / |
[Install] | [Install] | ||
Zeile 104: | Zeile 105: | ||
| | ||
// Taste y: | // Taste y: | ||
- | case " | + | case " |
- | case " | + | |
- | case " | + | |
- | case " | + | |
- | case " | + | |
- | var path=window.location.pathname; | + | |
- | if (path=="/ | + | |
- | { | + | |
- | telefonstatus(); | + | |
- | break; | + | |
- | } | + | |
- | else | + | |
- | { | + | |
- | location.href = " | + | |
- | break; | + | |
- | } | + | |
- | } | + | |
- | } | + | |
- | var intervalPing = setInterval(function(){ | + | |
- | var xhr = new XMLHttpRequest(); | + | |
- | xhr.onreadystatechange = function() {}; | + | |
- | xhr.open(' | + | |
- | xhr.send(); | + | |
- | }, 5000); | + | |
- | + | ||
- | var tasten=[0, | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | function keys(key) { | + | |
- | if (!key){ | + | |
- | key = event; | + | |
- | key.which = key.keyCode; | + | |
- | } | + | |
- | tasten[0]=tasten[1]; | + | |
- | tasten[1]=tasten[2]; | + | |
- | tasten[2]=String.fromCharCode(key.which); | + | |
- | + | ||
- | | + | |
- | // Taste y: | + | |
- | case " | + | |
- | case " | + | |
- | case " | + | |
- | case " | + | |
- | case " | + | |
- | var path=window.location.pathname; | + | |
- | if (path=="/ | + | |
- | { | + | |
- | telefonstatus(); | + | |
- | break; | + | |
- | } | + | |
- | else | + | |
- | { | + | |
- | location.href = " | + | |
- | break; | + | |
- | } | + | |
- | } | + | |
- | } | + | |
- | var intervalPing = setInterval(function(){ | + | |
- | var xhr = new XMLHttpRequest(); | + | |
- | xhr.onreadystatechange = function() {}; | + | |
- | xhr.open(' | + | |
- | xhr.send(); | + | |
- | }, 5000); | + | |
- | + | ||
- | var tasten=[0, | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | function keys(key) { | + | |
- | if (!key){ | + | |
- | key = event; | + | |
- | key.which = key.keyCode; | + | |
- | } | + | |
- | tasten[0]=tasten[1]; | + | |
- | tasten[1]=tasten[2]; | + | |
- | tasten[2]=String.fromCharCode(key.which); | + | |
- | + | ||
- | | + | |
- | // Taste y: | + | |
- | case " | + | |
- | case " | + | |
- | case " | + | |
- | case " | + | |
- | case " | + | |
- | var path=window.location.pathname; | + | |
- | if (path=="/ | + | |
- | { | + | |
- | telefonstatus(); | + | |
- | break; | + | |
- | } | + | |
- | else | + | |
- | { | + | |
- | location.href = " | + | |
- | break; | + | |
- | } | + | |
- | } | + | |
- | } | + | |
- | var intervalPing = setInterval(function(){ | + | |
- | var xhr = new XMLHttpRequest(); | + | |
- | xhr.onreadystatechange = function() {}; | + | |
- | xhr.open(' | + | |
- | xhr.send(); | + | |
- | }, 5000); | + | |
- | + | ||
- | var tasten=[0, | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | function keys(key) { | + | |
- | if (!key){ | + | |
- | key = event; | + | |
- | key.which = key.keyCode; | + | |
- | } | + | |
- | tasten[0]=tasten[1]; | + | |
- | tasten[1]=tasten[2]; | + | |
- | tasten[2]=String.fromCharCode(key.which); | + | |
- | + | ||
- | | + | |
- | // Taste y: | + | |
- | case " | + | |
case " | case " | ||
case " | case " | ||
Zeile 313: | Zeile 191: | ||
/ | / | ||
< | < | ||
- | ACTION==" | + | ACTION==" |
- | ACTION==" | + | ACTION==" |
</ | </ | ||
==== GPIO für Tasten ==== | ==== GPIO für Tasten ==== | ||
Zeile 321: | 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 333: | Zeile 211: | ||
User=kiosk | User=kiosk | ||
ExecStartPre=sleep 10 | ExecStartPre=sleep 10 | ||
+ | ExecStartPre=pactl set-source-volume USB_in 100% | ||
+ | ExecStartPre=touch / | ||
+ | ExecStartPre=chmod 666 / | ||
ExecStart=screen -d -U -L -Logfile / | ExecStart=screen -d -U -L -Logfile / | ||
+ | ExecStop=screen -p 0 -X stuff " | ||
+ | RestartSec=15 | ||
+ | Restart=always | ||
[Install] | [Install] | ||
WantedBy=multi-user.target | WantedBy=multi-user.target | ||
Zeile 340: | 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 | + | Start als systemd service |
+ | < | ||
+ | [Unit] | ||
+ | Description=Startet Scan nach Bluetooth LE Geräten | ||
+ | After=bluetooth.target | ||
+ | |||
+ | [Service] | ||
+ | Type=oneshot | ||
+ | ExecStart=/ | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | |||
+ | </ | ||
+ | |||
+ | ble_scan.c benötigt zum compilieren apt-get install libncurses5-dev libbluetooth-dev | ||
Zeile 347: | Zeile 246: | ||
==== Email ==== | ==== Email ==== | ||
swaks --to ZIELMAILADRESSE -s MAILSERVER: | swaks --to ZIELMAILADRESSE -s MAILSERVER: | ||
+ | |||
+ | 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 | + | Das Programm zum Überwachen der Tasten-GPIOs und das Ausschalten der blinkenden grünen LED wird über / |
< | < | ||
Zeile 360: | Zeile 261: | ||
< | < | ||
+ | |||
+ | 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==== | ==== 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. | 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 " | + | Bleibt dieser " |
- | + | ||
+ | ==== Benachrichtigung Ein- und Ausschalten ==== | ||
+ | |||
+ | < | ||
+ | Description=Sending Alert Emails on System shutdown. | ||
+ | Requires=network.target | ||
+ | Before=shutdown.target reboot.target | ||
+ | |||
+ | [Service] | ||
+ | Type=oneshot | ||
+ | User=kiosk | ||
+ | RemainAfterExit=true | ||
+ | ExecStart=/ | ||
+ | ExecStop=/ | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | </ |
nanopi_m4/kiosk/software.1604964630.txt.gz · Zuletzt geändert: 2024/03/01 21:09 (Externe Bearbeitung)