DigitalSignage with Raspberry Pi
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.
pydrive (Google Drive API)
pdf2image
PIL
tkinter
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'
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()
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/')
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)
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