Strona główna Polish Python Coders Group
   Strona główna   Pomoc Zaloguj się Rejestracja  
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji

Aktualności: PyStok #37 - PyTorch i BioPython, czyli moc DataScience - 16 stycznia, 18:00, Białystok
Szukaj Szukaj
Strony: [1]   Do dołu
Drukuj
Wątek: GPIO & IMAPClient  (Przeczytany 2505 razy)
« : 14:57 03/07/18 »
tomtom Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 1


Witajcie ,
mam pytanie. Staram się dostosować kod  do moich potrzeb tak abym mógł zarządzać pinami za pomocą e-mail.
Docelowo plan jest taki by program czytał ostatnią nową,nieprzeczytaną wiadomość email i jeśli zawiera ona określony tekst/numer włączał PIN na określony czas.

Wszystko jest fajnie, kod działa poprawnie do momentu czytania poczty....Pin włącza się przy pierwszym uruchomieniu skryptu na kilka sekund a następnie wyłącza i po imprezie. Z pewnością to kwestia kodu python, tylko nie wiem co robię źle i co zrobić by było dobrze Chichot. Ktoś coś?


Kod
#!/usr/bin/env python
 
from imapclient import IMAPClient
import time
 
import RPi.GPIO as GPIO
 
DEBUG = True
 
HOSTNAME = 'imap.gmail.com'
USERNAME = 'mail'
PASSWORD = 'haslo'
MAILBOX = 'Katalog'
 
NEWMAIL_OFFSET = 1  
MAIL_CHECK_FREQ = 4
 
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
R1 = 7
 
GPIO.setup(R1, GPIO.OUT)
 
def loop():
   server = IMAPClient(HOSTNAME, use_uid=True, ssl=True)
   server.login(USERNAME, PASSWORD)
 
   if DEBUG:
       print('Logging in as ' + USERNAME)
       select_info = server.select_folder(MAILBOX)
       print('%d all messages' % select_info['EXISTS'])
 
   folder_status = server.folder_status(MAILBOX, 'UNSEEN')
   newmails = int(folder_status['UNSEEN'])
 
 
   if DEBUG:
       print "You have", newmails, "new emails!"
 
   messages = server.search(['UNSEEN','BODY','HASLO'])
   newmails = int(folder_status['UNSEEN'])
 
   if DEBUG:
       GPIO.output(R1, True)
       time.sleep(3)
       print ('%d approved messages ' % len(messages))
 
   else:
       GPIO.output(R1, False)
       print ('not approved')
 
   time.sleep(MAIL_CHECK_FREQ)
 
if __name__ == '__main__':
   try:
       print 'Press Ctrl-C to quit.'
       while True:
           loop()
   finally:
       GPIO.cleanup()
 
Zapisane
« Odpowiedz #1 : 08:20 04/07/18 »
raydeal Offline
Professional Python User

Zobacz profil
***

Reputacja: 79
Wiadomości: 472


Może chodzi o GPIO.cleanup()?
Zapisane
Strony: [1]   Do góry
Drukuj
Skocz do:  

© 2007 - 2019 Polish Python Coders Group
Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines | Theme by PixelSlot