Arduino Gmail Notifier

Тема в разделе "Arduino & Shields", создана пользователем leo141198, 10 июл 2012.

  1. leo141198

    leo141198 Нерд

    Народ, помогите сделать уведомлялку о новых email-ах. Скетч для ардуино я сам написать в состоянии ;), но программу, которая будет проверять почту и отправлять на COM-порт, например, 1 или 0, не получается :( .
     
  2. nailxx

    nailxx Официальный Нерд Администратор

    Код (Text):

    # -*- coding: utf-8; -*-
     
    import imaplib
    import serial
    import re
     
    from time import sleep
     
     
    def unread_count():
        """
        Возвращает количество непрочитанных сообщений,
        соединяясь с GMail через IMAP-протокол
        """
        conn = imaplib.IMAP4_SSL('imap.gmail.com', '993')
        conn.login('your.name@gmail.com', 'yourpassword')
        _, data = conn.status("INBOX", "(UNSEEN)")
        count = re.search("UNSEEN (\d+)", data[0]).group(1)
        return int(count)
     
     
    def main():
        # Открываем соединение до Arduino.
        # Замените /dev/ttyACM0 на имя порта, где у вас Arduino
        # Указанное имя работает для Arduino Uno на Linux
        io = serial.Serial('/dev/ttyACM0', 9600)
        try:
            while True:
                c = unread_count()
                print 'Got %s unread messages' % c
     
                # посылаем в текстовом виде количество непрочитанных
                # сообщений на Arduino
                io.write("%s\n" % c)
     
                # Отдыхаем минуту
                sleep(60)
        except KeyboardInterrupt:
            # штатное завершение, ничего не делаем
            pass
        finally:
            # в любом случае убираем за собой
            io.close()
     
    if __name__ == '__main__':
        main()
     
     
  3. leo141198

    leo141198 Нерд

    Спасибо! Это же скрипт на python, верно? У меня тут два вопроса возникло: 1)
    Код (Text):

    # Замените /dev/ttyACM0 на имя порта, где у вас Arduino
    # Указанное имя работает для Arduino Uno на Linux
    А как его узнать, если я работаю под windows?
    2) Какой сигнал посылает скрипт на Arduino?
     
  4. nailxx

    nailxx Официальный Нерд Администратор

    Это полноценная программа на Питоне

    1) COM1, COM2, COM152
    2)

    Код (Text):

    # посылаем в текстовом виде количество непрочитанных
    # сообщений на Arduino
    io.write("%s\n" % c)
     
     
  5. leo141198

    leo141198 Нерд

    Тут вот такая проблема вышла :) Я пока еще ничего не менял, кроме логина и пароля
     

    Вложения:

  6. nailxx

    nailxx Официальный Нерд Администратор

    Я писал на Python 2.x, у вас Python 3.2

    Попробуйте

    Код (Text):

    print 'Got {0} unread messages'.format(c)
     
    …и ниже по аналогии
     
  7. leo141198

    leo141198 Нерд

    Тоже самое, щас попробую поставить Python 2.x
     
  8. leo141198

    leo141198 Нерд

    Что надо делать с этим?
     

    Вложения:

  9. Avernial

    Avernial Нуб

    В версии python3.2 необходимо писать:
    print('Got {0} unread messages'.format(c)), т.к. там не много изменился синтаксис функции print.

    ImportError: No module serial - значит что у вас не установлен модуль serial для python. Можно взять отсюда: http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyserial.
    Там еще много полезных скомпилированных библиотек для python.
     
  10. leo141198

    leo141198 Нерд

    Всем спасибо! Все уже заработало!