[PYTHON] DigitalSignage avec Raspberry Pi

DigitalSignage with Raspberry Pi

introduction

Ceci est un article sur ** Digital Signage with Raspberry Pi **, qui a remporté le Raspberry Pie Foundation Award au ** Everyone's Raspberry Contest 2019 **. Je l'ai fait dans le but de numériser un babillard papier et de le remplacer facilement.

Pièces utilisées

environnement

pydrive (Google Drive API)
pdf2image
PIL
tkinter

Flux de processus

Aperçu

  1. Vérifiez si le dossier «ScanPDF» existe dans Google Drive du compte lié (s'il n'existe pas, créez un dossier «ScanPDF» et enregistrez l'ID de ce dossier)
  2. Récupérez tous les fichiers PDF dans le dossier avec l'identifiant mémorisé et stockez-les dans le dossier temporaire local
  3. Affichez le PDF dans le dossier temporaire à l'écran
  4. S'il existe plusieurs fichiers PDF, modifiez le fichier PDF à afficher à intervalles réguliers.
  5. Répétez les étapes 2 à 5 par la suite

Authentification

Autoriser les comptes à accéder à l'API et aux projets Google Drive à l'aide de Google Oauth

Main.py


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

Création de dossier / recherche pour enregistrement

Le dossier ScanPDF sera créé au premier lien. Après cela, le dossier correspondant sera acquis.

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()

Obtenir un fichier PDF

L'utilisateur ajoute le fichier PDF qu'il souhaite voir dans la signalisation dans le dossier ScanPDF. Après cela, lorsque l'intérieur du dossier est numérisé, le PDF ajouté s'affiche sur l'écran LCD.

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/')

Affichage des fichiers

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

Image d'opération

Digital Signage1.pngDigitalSignage3.png

À la fin

Étant donné que le dossier Google Drive est utilisé comme emplacement de stockage des fichiers, il peut être mis à jour même lorsque vous êtes absent. En outre, il est possible pour plusieurs personnes de mettre à jour en définissant les droits d'accès au dossier. La tarte à la râpe elle-même ne prend presque pas de place, sa compacité dépend donc de la minceur des cristaux liquides. Actuellement, j'ai introduit ce système en tant que tableau d'affichage de contact dans un laboratoire universitaire, et il fonctionne bien. Nous ne considérons pas les problèmes de sécurité.

** Nous souhaitons la bienvenue à Pururiku Tsukkomi. Venez merci **

Recommended Posts

DigitalSignage avec Raspberry Pi
GPGPU avec Raspberry Pi
Plantes Mutter avec Raspberry Pi
[Raspberry Pi] Contrôle du moteur pas à pas avec Raspberry Pi
Utilisez vl53l0x avec RaspberryPi (python)
Communication série avec Raspberry Pi + PySerial
Configuration du système d'exploitation avec Raspberry Pi Imager
Construire un serveur VPN avec Raspberry Pie
Essayez de déplacer 3 servos avec Raspeye
Utiliser une webcam avec Raspberry Pi
Mesurer la force du signal SIM avec Raspberry Pi
Surveillance des animaux avec Rekognition et Raspberry pi
Bonjour le monde avec Raspberry Pi + Minecraft Pi Edition
Créer un environnement Tensorflow avec Raspberry Pi [2020]
Essayez de pêcher le Wakasagi avec Raspberry Pi
Programmation normale avec la programmation Node-RED avec Raspberry Pi 3
Capteur humain amélioré fabriqué avec Raspberry Pi
Essayez la détection d'objets avec Raspberry Pi 4 + Coral
Exécuter le servomoteur SG-90 avec Raspberry Pi
Travailler avec des capteurs dans Mathematica sur Raspberry Pi
Utiliser le capteur de mouvement PIR avec Raspberry Pi
Modèle Infer Custom Vision avec Raspeye
Faites fonctionner l'oscilloscope avec le Raspberry Pi
Créez un compteur de voiture avec Raspberry Pi
Enregistrement de la valeur d'Inkbird IBS-TH1 avec Raspberry Pi
Travailler avec le GPS en Python pour Raspberry Pi 3
Discord bot raspberry pi zéro avec python [Note]
Programmation média avec Raspeye (préparation audio)
Qu'est-ce que Raspberry Pi?
J'ai essayé L-Chika avec Razpai 4 (édition Python)
Caméra vidéo Raspberry Pi
MQTT Radicon Car avec Arduino et Raspberry
Faisons Raspberry Pi?
Allumez / éteignez votre PC avec Raspberry Pi
Sortie CSV des données d'impulsion avec Raspberry Pi (sortie CSV)
Obtenez des informations sur le processeur de Raspberry Pi avec Python
Notes de configuration du Raspberry Pi 4
Obtenez la température et l'humidité avec DHT11 et Raspberry Pi
Cython sur Raspberry Pi
Application d'analyse des investissements boursiers avec tarte aux framboises
Enregistrement de la valeur d'Inkbird IBS-TH1 mini avec Raspberry Pi
Connectez-vous à MySQL avec Python sur Raspberry Pi
Suivi GPS avec Raspeye 4B + BU-353S4 (Python)
Mesurer la température du processeur de Raspeye avec Python
Enregistrez la température et l'humidité avec systemd sur Raspberry Pi
Apprentissage automatique avec Raspberry Pi 4 et Coral USB Accelerator
Exécutez la matrice LED de manière interactive avec Raspberry Pi 3B + sur Slackbot
Utilisez le capteur d'éclairement numérique TSL2561 avec Raspberry Pi
IoT facile pour démarrer avec Raspeye et MESH
Visualisons la pièce avec tarte aux râpes, partie 1
Essayez de déboguer Python sur Raspberry Pi avec Visual Studio.
Détecter l'état de port du masque avec OpenCV et Raspberry Pi
Prenez la valeur du thermo-hygromètre SwitchBot avec Raspberry Pi
Mesurez la température et l'humidité avec Raspberry Pi3 et visualisez avec Ambient
Changer les valeurs du thermo-hygromètre Bot avec Raspberry Pi