[PYTHON] DigitalSignage mit Raspberry Pi

DigitalSignage with Raspberry Pi

Einführung

Dies ist ein Artikel über ** Digital Signage mit Raspberry Pi **, der beim ** Everyone's Raspberry Contest 2019 ** mit dem Raspberry Pie Foundation Award ausgezeichnet wurde. Ich habe es mit dem Ziel gemacht, ein Bulletin Board mit Papierkontakt zu digitalisieren und es einfach zu ersetzen.

Verwendete Teile

Umgebung

pydrive (Google Drive API)
pdf2image
PIL
tkinter

Prozessablauf

Überblick

  1. Überprüfen Sie, ob der Ordner "ScanPDF" in Google Drive des verknüpften Kontos vorhanden ist (falls er nicht vorhanden ist, erstellen Sie einen Ordner "ScanPDF" und speichern Sie die ID dieses Ordners).
  2. Holen Sie sich alle PDF-Dateien unter den Ordner mit der gespeicherten ID und speichern Sie sie im lokalen temporären Ordner
  3. Zeigen Sie die PDF-Datei im temporären Ordner auf dem Display an
  4. Wenn mehrere PDF-Dateien vorhanden sind, ändern Sie die PDF-Datei so, dass sie in regelmäßigen Abständen angezeigt wird.
  5. Wiederholen Sie danach die Schritte 2 bis 5

Authentifizierung

Ermöglichen Sie Konten den Zugriff auf die Google Drive-API und Projekte mit Google Oauth

Main.py


gauth = GoogleAuth()
drive = GoogleDrive(gauth)
files = os.listdir('./data/')
count = len(files)
dirtxt = 'dirdata.txt'

Ordnererstellung / Suche zum Speichern

Der Ordner "ScanPDF" wird beim ersten Link erstellt. Danach wird der entsprechende Ordner erfasst.

Main.py


if not os.path.isfile(dirtxt):
    folder = drive.CreateFile({
        'title': 'ScanPDF',
        'mimeType': 'application/vnd.google-apps.folder'
    })
    folder.Upload()
    with open(dirtxt, mode='w') as f:
        f.write(folder['id'])
        dir_id = folder['id']
else:
    with open(dirtxt) as f:
        dir_id = f.read()

PDF-Datei abrufen

Der Benutzer fügt die PDF-Datei, die er in der Beschilderung sehen möchte, dem Ordner "ScanPDF" hinzu. Wenn danach das Innere des Ordners gescannt wird, wird das hinzugefügte PDF auf dem LCD angezeigt.

Main.py


  def scan(self):
    global count
    404img_path = "./data/404.png "
    tmp_dir = "./tmp/"
    shutil.rmtree(tmp_dir)
    os.mkdir(tmp_dir)
    i = 1
    query = f"'{dir_id}' in parents and trashed=false"
    try:
        for file_list in drive.ListFile({'q': query, 'maxResults': 100}):
            for file in file_list:
                if file['mimeType'] == 'application/vnd.google-apps.folder':
                    pass
                else:
                    file.GetContentFile(f'./tmp/{i+1}.pdf')
                    i += 1
    except Exception as e:
        print(e)
    files = os.listdir(tmp_dir)
    count = len(files)
    if os.path.isfile(404img_path):
        os.remove(404img_path)
    if count == 0:
        shutil.copy('404.png', 404img_path)
        shutil.rmtree(tmp_dir)
        os.mkdir(tmp_dir)
    else:
        for i in range(0, count):
            shutil.copy(f'./tmp/{i+1}.pdf',
                        f'./data/{i+1}.pdf')
        files = os.listdir('./data/')

Dateianzeige

Main.py


image = convert_from_path(f'./data/{cnt % (count) + 1}.pdf')
tmp = image[0].rotate(90, expand=True).resize((sw, sh))
self.img = ImageTk.PhotoImage(tmp)
self.canvas.itemconfig(self.imgArea, image=self.img)

Digital Signage.png

Operationsbild

Digital Signage1.pngDigitalSignage3.png

Am Ende

Da der Google Drive-Ordner als Speicherort für Dateien verwendet wird, kann er auch dann aktualisiert werden, wenn Sie unterwegs sind. Darüber hinaus können mehrere Personen aktualisieren, indem Sie die Zugriffsberechtigung für den Ordner festlegen. Der Raspeltorte selbst nimmt fast keinen Platz ein, daher hängt seine Kompaktheit von der Dünnheit des Flüssigkristalls ab. Derzeit habe ich dieses System als Kontakt-Bulletin Board in einem Universitätslabor eingeführt und es funktioniert gut. Wir berücksichtigen keine Sicherheitsprobleme.

** Wir begrüßen Pururiku Tsukkomi. Komm danke **

Recommended Posts

DigitalSignage mit Raspberry Pi
GPGPU mit Raspberry Pi
Mutter pflanzt mit Raspberry Pi
[Raspberry Pi] Schrittmotorsteuerung mit Raspberry Pi
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Serielle Kommunikation mit Raspberry Pi + PySerial
Betriebssystem-Setup mit Raspberry Pi Imager
Aufbau eines VPN-Servers mit Raspberry Pie
Versuchen Sie, 3 Servos mit Raspeye zu bewegen
Verwenden einer Webkamera mit Raspberry Pi
Messen Sie die SIM-Signalstärke mit Raspberry Pi
Haustierüberwachung mit Rekognition und Raspberry pi
Hallo Welt mit Raspberry Pi + Minecraft Pi Edition
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Versuchen Sie, mit Raspberry Pi nach Wakasagi zu fischen
Normal programmieren mit Node-RED-Programmierung mit Raspberry Pi 3
Verbesserter menschlicher Sensor mit Raspberry Pi
Versuchen Sie die Objekterkennung mit Raspberry Pi 4 + Coral
Den Servomotor SG-90 mit Himbeer-Pi betreiben
Arbeiten mit Sensoren in Mathematica auf Raspberry Pi
Verwenden Sie einen PIR-Bewegungssensor mit Himbeer-Pi
Infer Custom Vision Modell mit Raspeye
Bedienen Sie das Oszilloskop mit dem Raspberry Pi
Erstellen Sie eine Auto-Anzeige mit Himbeer-Pi
Protokollieren des Werts von Inkbird IBS-TH1 mit Raspberry Pi
Arbeiten mit GPS in Python für Raspberry Pi 3
Discord Bot Himbeere Pi Null mit Python [Hinweis]
Medienprogrammierung mit Raspeye (Vorbereitung für Audio)
Was ist Raspberry Pi?
Ich habe L-Chika mit Razpai 4 (Python Edition) ausprobiert.
Raspberry Pi Videokamera
MQTT Radicon Car mit Arduino und Himbeere
Lass uns Raspberry Pi machen?
Schalten Sie Ihren PC mit Himbeer-Pi ein / aus
CSV-Ausgabe von Impulsdaten mit Raspberry Pi (CSV-Ausgabe)
Holen Sie sich CPU-Informationen von Raspberry Pi mit Python
Raspberry Pi 4 Setup-Hinweise
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Cython auf Raspberry Pi
Aktieninvestitionsanalyse-App mit Himbeerkuchen gemacht
Protokollieren des Werts von Inkbird IBS-TH1 mini mit Raspberry Pi
Stellen Sie mit Python auf Raspberry Pi eine Verbindung zu MySQL her
GPS-Tracking mit Raspeye 4B + BU-353S4 (Python)
Messen Sie die CPU-Temperatur von Raspeye mit Python
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Maschinelles Lernen mit Raspberry Pi 4 und Coral USB Accelerator
Führen Sie die LED-Matrix interaktiv mit Raspberry Pi 3B + auf Slackbot aus
Verwendung des digitalen Beleuchtungsstärkesensors TSL2561 mit Raspberry Pi
Einfaches IoT, um mit Raspeye und MESH zu beginnen
Stellen wir uns den Raum mit Raspeltorte vor, Teil 1
Versuchen Sie, Python auf Raspberry Pi mit Visual Studio zu debuggen.
Ermitteln Sie den Tragezustand der Maske mit OpenCV und Raspberry Pi
Nehmen Sie den Wert des SwitchBot-Thermo-Hygrometers mit Raspberry Pi
Messen Sie Temperatur und Luftfeuchtigkeit mit Raspberry Pi3 und visualisieren Sie mit Ambient
Umschalten der Bot-Thermo-Hygrometer-Werte mit Raspberry Pi