TABLET UI mit Raspberry Pi 3, Chromium Touchscreen und Bewegungsmelder

Begonnen von rasti, 17 Januar 2018, 16:07:56

Vorheriges Thema - Nächstes Thema

rasti

Hallo,

ich habe bei mir Tablet UI mit folgender Konfiguration visualisiert:

- Raspi 3 mit Bewegungsmelder HC-SR501 PIR
- 22 Zoll Touchscreen
- Chromium (wird im Kiosk-Modus gebootet)

Wenn Bewegung erkannt wird, geht der Touchscreen an.
Nach einer Wartezeit ohne Bewegung geht er wieder aus
Gesteuert wird das über ein Python-Skript, das per Cron beim Booten geladen wird.

Da ab und zu unerklärlicherweise beim Wiedereinschalten die Touchfunktion weg war,
hat der USB-Port einfach  bei jedem Anschalten ein Reset verpasst bekommen.
Deswegen die Zeile  os.system("sudo ./usbreset /dev/bus/usb/001/002") im Python-Skript und
das C-Programm usbreset.   Das funktioniert so nun einwandfrei.

Nun habe ich noch das Problem, dass der Touch SEEEHR empfindlich ist, d.h.
mit einer drauf rummarschienden Fliege oder sonst Staub etc. pp. zoomt das
Teil manchmal (selten, aber immerhin ). Um das Problem zu mildern, dh. auch nach
längerer Zeit Bildschirm aus wollte ich einfach Chromium einfach neustarten, d.h.
jedesmal wenn der Bewegungsmelder den Bildschim einschaltet.

Im Python-Skript sollte der Chromiumrestart mit os.system("/home/pi/chromiumrestart.sh") ausgelöst,
werden, ist im Python-Skript aber momentan auskommentiert.

Wenn ich die Auskommentierung weglasse und in chromiumrestart.sh
chromium-browser --incognito  --kiosk  http://192.168.178.6
reinschreibe, bleibt der Bildschirm beim "Aufwecken" schwarz.

Schreibe ich
#DISPLAY=:0 chromium-browser --incognito  --kiosk  http://192.168.178.6

rein dann kommt der Bildschirm so wie er soll dann geht aber öfters die
Touchfunktion nicht und Chromium ist dann nur noch mit der Maus bedienbar.

Lasse ich den Aufruf von chromiumrestart.sh ganz weg, funktioniert alles einwandfrei.

Also was ich will :
1) bei erkannter Bewegung soll nicht nur der Bildschirm eingeschaltet werden,
   auch Chromium soll neu gestartet werden (Reboot dauert zu lange)
2) ich hätte gerne Maus UND Touchscreen zur Bedienung von Chromium, momentan geht nur Touch
3) wenn noch der rechte Scrollbar im Chromium wegzukriegen wäre, wär alles perfekt


Die ganzen Skripte/Einstellungen stehen unten....

Hat jemand ein paar Vorschläge wie ich das umsetzen kann ?

Viele Grüße

Ralf



Phyton-Skript für Bewegungsmelder
#!/usr/bin/python

#Import
import RPi.GPIO as GPIO
import time
import datetime
import os

print "BEWEGUNGSMELDER"
print ""

#Board Mode: Angabe der Pin-Nummer
GPIO.setmode(GPIO.BOARD)

#GPIO Pin definieren fuer den Dateneingang vom Sensor
PIR_GPIO = 18
GPIO.setup(PIR_GPIO,GPIO.IN)
GPIO.setup(22, GPIO.OUT)
read=0
wait=0

try: 
#PIR auslesen
while GPIO.input(PIR_GPIO)==1:
   read=0
print "WARTEN auf Bewegung..."

#Abbruch ctrl+c
while True :
   #PIR auslesen
   read = GPIO.input(PIR_GPIO)
   
   if read==1 and wait==0:
     print "ALARM %s: Bewegung erkannt!" % datetime.datetime.now()
     GPIO.output(22, 1)
     os.system("sudo ./usbreset /dev/bus/usb/001/002")
#     os.system("/home/pi/chromiumrestart.sh")
     os.system("vcgencmd display_power 1")
   #  os.system("/home/pi/chromiumrestart.sh")
     wait=1
   elif read==0 and wait==1:
     print "WARTEN auf Bewegung..."
     GPIO.output(22, 0)
     os.system("vcgencmd display_power 0")
     wait=0

time.sleep(0.01)

except KeyboardInterrupt:
print "Beendet"
GPIO.cleanup()



chromiumrestart.sh
killall chromium-browser
chromium-browser --incognito  --kiosk  http://192.168.178.6
#DISPLAY=:0 chromium-browser --incognito  --kiosk  http://192.168.178.6


autostart
#@lxpanel --profile LXDE-pi
@xset s off
@xset -dpms
@xset s noblank
@unclutter
#@chromium-browser  http://192.168.178.6
@chromium-browser --incognito  --kiosk  http://192.168.178.6
#@iceweasel http://192.168.178.6
#@luakit
#@matchbox-window-manager &
#@/usr/bin/midori -e Fullscreen -a http://192.168.178.6 


USBreset
/* usbreset -- send a USB port reset to a USB device */

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <linux/usbdevice_fs.h>

int main(int argc,char **argv)
{
  const char *filename;
  int fd;
  int rc;

  if(argc != 2)
  {
    fprintf(stderr,"Usage: usbreset device-filename\n");
    return 1;
  }

  filename = argv[1];

  fd = open(filename,O_WRONLY);
  if(fd < 0)
  {
    perror("Error opening output file");
    return 1;
  }

  printf("Resetting USB device %s\n",filename);

  rc = ioctl(fd,USBDEVFS_RESET,0);
  if(rc < 0)
  {
    perror("Error in ioctl");
    return 1;
  }

  printf("Reset successful\n");

  close(fd);
  return 0;
}



CRONTAB
  GNU nano 2.7.4          File: /tmp/crontab.paawuX/crontab

# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
@reboot /usr/bin/python /home/pi/bewegungsmelder.py
#*/1 * * * * /home/pi/chromiumrestart.sh
15 7 * * * sudo reboot
15 1 * * * sudo reboot



rasti


Hallo,

von meiner Wunschliste

Zitat1) bei erkannter Bewegung soll nicht nur der Bildschirm eingeschaltet werden,
   auch Chromium soll neu gestartet werden (Reboot dauert zu lange)
2) ich hätte gerne Maus UND Touchscreen zur Bedienung von Chromium, momentan geht nur Touch
3) wenn noch der rechte Scrollbar im Chromium wegzukriegen wäre, wär alles perfekt

hat sich 2) aus irgendwelchen unerfindlichen Gründen von selbst gelöst, Maus+Touch gehen nun gleichzeitig.

Nummer 3) habe ich gelöst durch anpassen der fhem-tablet-ui.css :
html,body        {height:100%;} ändern in
html,body        {height:100%; overflow:hidden;}

1) geht so leider noch nicht wirklich....