Raspberry Pi电子邮件通知器中的意外结果

问题描述:

刚刚买了一棵覆盆子pi b +,并决定解决一些“简单”的项目。目前我正在尝试将我的Gmail帐户同步到LED通知器。Raspberry Pi电子邮件通知器中的意外结果

如果我有一封电子邮件,绿色LED亮起。如果我没有电子邮件,红色灯会亮起。问题是这个......目前的功能是,当我没有电子邮件时,绿色的LED亮起,但是,当我至少有一封电子邮件时,LED都不亮。我知道硬件方面的一切工作,因为我测试了不同的组合。

我粘贴了下面tutorial的代码,从我可以告诉它是一个非常简单的条件与一些额外的东西,所以它可以跟我的树莓pi。

看起来很奇怪,if-statement总是返回true。

import RPi.GPIO as GPIO, feedparser, time 

DEBUG = 1 

USERNAME = "my-username" 
PASSWORD = "my-password"  

NEWMAIL_OFFSET = 0  # empty inbox 
MAIL_CHECK_FREQ = 60  # check mail every 60 seconds 

GPIO.setmode(GPIO.BCM) 
GREEN_LED = 18 
RED_LED = 23 
GPIO.setup(GREEN_LED, GPIO.OUT) 
GPIO.setup(RED_LED, GPIO.OUT) 

while True: 

    newmails = int(feedparser.parse("https://" + USERNAME + ":" + PASSWORD +"@mail.google.com/gmail/feed/atom")["feed"]["fullcount"]) 

    if DEBUG: 
      print "You have", newmails, "new emails!" 

    if newmails > NEWMAIL_OFFSET: 
      GPIO.output(GREEN_LED, True) 
      GPIO.output(RED_LED, False) 
    else: 
      GPIO.output(GREEN_LED, False) 
      GPIO.output(RED_LED, True) 

    time.sleep(MAIL_CHECK_FREQ) 
! 

这里是我的设置...

enter image description here

enter image description here

+0

我们不知道你的硬件是如何连接的。 – 2014-09-22 03:44:32

+0

底部有什么感叹号?你有没有检查你没有混合标签和空格? – sje397 2014-09-22 05:07:21

+0

没有任何空格与标签混合。感叹号是从教程我发布了一个链接,据我可以告诉它只是说这是文件的末尾 - 甚至没有显示时,我输入'nano./filename.py'。 – itsclarke 2014-09-22 05:14:05

通过硬件的图片看,这可能是因为你的电阻器可能是感人那里。而且,进入绿色LED的引线并未落在空行上。目前,它会与销16相互作用和你的电压时高时排放到...这篇文章可以帮助

https://learn.adafruit.com/raspberry-pi-e-mail-notifier-using-leds/wire-leds

首先只是为了把事情说清楚:代码通知你只要收件箱中至少有一封未读邮件,就可以使用新邮件。

与光的问题确实与硬件有关,因为我只是在家中做了相同的设置,它工作正常。我对代码做了一些小修改:

import RPi.GPIO as GPIO, feedparser, time, sys 

USERNAME = "my-username" 
PASSWORD = "my-password"  

NEWMAIL_OFFSET = 0  # empty inbox 
MAIL_CHECK_FREQ = 60  # check mail every 60 seconds 

GPIO.setmode(GPIO.BCM) 
GREEN_LED = 18 
RED_LED = 23 
GPIO.setup(GREEN_LED, GPIO.OUT) 
GPIO.setup(RED_LED, GPIO.OUT) 

while True: 

    try: 
     newmails = int(feedparser.parse("https://" + USERNAME + ":" + PASSWORD +"@mail.google.com/gmail/feed/atom")["feed"]["fullcount"]) 

     print "You have ", newmails, " unread emails!" 

     if newmails > NEWMAIL_OFFSET: 
      GPIO.output(GREEN_LED, True) 
      GPIO.output(RED_LED, False) 
     else: 
      GPIO.output(GREEN_LED, False) 
      GPIO.output(RED_LED, True) 

     time.sleep(MAIL_CHECK_FREQ) 

    except KeyboardInterrupt: 
     #Ctrl + C 
     #Ensure you are cleaning up the GPIO setup or it might not work correctly after the first run 
     GPIO.cleanup() 
     break 
    except: 
     #Here you can capture possible unknown issues with the code 
     print("There following error happened: " + str(sys.exc_info()[1])) 
    finally: 
     pass