Статьи

Приложение IoT Python с малиновым пи и блюмиксом

Это расширение / продолжение поста в блоге о том, как создать простое веб-приложение на Python . В этом уроке мы рассмотрим, как интегрировать веб-приложение Python Flask в Bluemix с Фондом Интернета вещей в Bluemix с Raspberry Pi и двумя датчиками на Raspberry Pi. В учебнике также используется Twilio для взаимодействия с Raspberry Pi.

Так как же это выглядит? Вот простая диаграмма архитектуры.

raspberrypidiagram IoT Python-приложение с Raspberry Pi и Bluemix

На приведенной выше диаграмме есть два потока:

  • Первый поток включает нажатие кнопки HTML в приложении Python Flask в Bluemix для включения или выключения светодиода на Raspberry Pi.
  • Второй поток включает нажатие физической кнопки на макете на Raspberry Pi и использование службы IoT в Bluemix, а наше приложение в Bluemix отправит текстовое сообщение по нашему выбору на номер телефона, который мы вводим в приложении Python Flask в Bluemix, используя Twilio.

Все это заняло всего около 100 строк кода, круто, да?

Если вы предпочитаете смотреть это видео вместо того, чтобы выполнять шаги, описанные в этом руководстве, посмотрите видео ниже.

Настроить

Это состоит из двух частей. Если мы посмотрим на диаграмму архитектуры выше, то увидим, что есть кусок Raspberry Pi, а затем кусок Bluemix. Сначала мы пройдемся по пьесе Raspberry Pi, а затем пройдемся по пьесе Bluemix.

Шаги установки Raspberry Pi

  1. Зарегистрируйте учетную запись Bluemix, посетите веб-браузер http://bluemix.net и нажмите «Зарегистрироваться» в правом верхнем углу. Нам требуется пара бит информации
  2. Подождите, пока письмо придет, это займет всего пару минут. В письме должна быть ссылка «Нажмите здесь, чтобы завершить регистрацию», нажмите эту ссылку. Войдите, используя имя пользователя и пароль, которые вы создали на шаге 1.
  3. Получите Raspberry Pi, макетную плату, провода, светодиод и кнопку (лучше всего получить стартовый набор, такой как Canakit )
  4. Поместите светодиод в макет (поместите более короткую сторону влево)привело приложение IoT Python с Raspberry Pi и Bluemix
  5. Поместите резистор 220 Ом в макетную плату, соединяющую короткую сторону (левую сторону светодиода) с шиной заземления (шину со знаком -). Убедитесь, что сторона резистора расположена так, чтобы красные полоски были ближе к светодиоду. ПРИМЕЧАНИЕ: схема работает так, чтобы соединения проходили вертикально, а не горизонтально.Резисторное приложение IoT Python с Raspberry Pi и Bluemix
  6. Подключите провод от заземляющей шины к GND на плате распиновкиназемное приложение IoT Python с Raspberry Pi и Bluemix
  7. На правой стороне светодиода подключите провод к порту, помеченному 17. ПРИМЕЧАНИЕ: схема работает так, чтобы соединения проходили вертикально, а не горизонтально.gpio17 IoT Python-приложение с Raspberry Pi и Bluemix
  8. Поместите кнопку в макет, чтобы ее полностью нажать, нужно приложить немного усилий. Это не сломает это.кнопочное приложение IoT Python с Raspberry Pi и Bluemix
  9. Подсоедините провод с правой стороны кнопки к шине заземления.прикладное приложение IoT Python с Raspberry Pi и Bluemix
  10. Подключите провод от заземляющей шины к порту GND, не имеет значения, какой он естьприкладное приложение IoT Python для платформы buttongroundrail с Raspberry Pi и Bluemix
  11. Наконец, подключите провод с левой стороны кнопки к порту 18 GPIO.gpio18 IoT Python-приложение с Raspberry Pi и Bluemix
  12. Далее нам нужно либо использовать консоль для нашего Raspberry Pi и приложение терминала на самом устройстве, либо использовать SSH. Я собираюсь использовать SSH.
  13. Чтобы получить IP-адрес вашего Raspberry Pi, проще всего открыть приложение терминала на Raspberry Pi, оно находится под аксессуарами -> Терминал
  14. Введите «ifconfig» без кавычек. Если вы подключены через Ethernet, IP-адрес будет находиться под eth0, если вы подключены через wifi, IP-адрес будет под wlan0
  15. Затем нам нужно подключиться к устройству через ssh. — Windows, загрузите Putty и используйте его для подключения к IP-адресу — Mac и Linux, откройте приложение Terminal, введите ssh pi@myipaddressmyipaddress, где IP-адрес Raspberry Pi, например, 192.168.1.65
  16. Пароль малиновый
  17. Нам нужно запустить несколько команд, чтобы обновить наш Raspberry Pi, выполнить следующее. Он попросит вас подтвердить клавишей «Y»
    sudo apt-get update
    sudo-apt-get upgrade
  18. Далее нам нужно установить вспомогательную библиотеку для использования GPIO
    git clone git://git.drogon.net/wiringPi
    cd wiringPi
    ./build
  19. Далее нам нужно установить библиотеку IoT на Raspberry Pi
    curl -LO https://github.com/ibm-messaging/iot-raspberrypi/releases/download/1.0.2/iot_1.0-1_armhf.deb
    sudo dpkg -i iot_1.0-1_armf.deb
  20. Нам нужно получить идентификатор устройства нашего Raspberry Pi, выполнить следующую команду и сохранить результат
    service iot getdeviceid
    #example output
    The device id is b827eba5b236

    Мы хотим скопировать идентификатор b827eba5b236, ваш, очевидно, будет отличаться

  21. Откройте веб-браузер и перейдите на bluemix.net , и нажмите «Каталог» в верхней части. Прокрутите вниз до самого низа и нажмите «Интернет вещей».
  22. Присвойте сервису имя, используйте iot-python (вы должны сделать это точно, или позже ничего не получится), для приложения выберите «Оставить свободным», нажмите «Создать».
  23. Слева от следующей страницы нажмите «Launch dashboard».
  24. Вверху нажмите «Устройства».
  25. Нажмите «Добавить устройство».
  26. Для второго поля (например, типа mydevice) введите точно raspberrypi(оно должно быть написано так, иначе будут проблемы). Для вставки идентификатора устройства в идентификатор устройства, полученный на шаге 20, у меня есть b827ba5b236. Нажмите продолжить.
  27. На следующей странице будет показано что-то вроде ниже, скопируйте это и переключитесь обратно на терминал на Raspberry Pi.
    org=pwftki
    type=raspberrypi
    id=000000000000
    auth-method=token
    auth-token=cXQaGx8o!a9HwxM-ka
  28. Выберите ваш любимый текстовый редактор, но я собираюсь использовать vi. Введите следующее, чтобы открыть файл, который мы хотим редактировать.
    sudo vi /etc/iotsample-raspberrypi/device.cfg
  29. Чтобы вставить текст, нажмите клавишу «i». Затем вставьте текст, это будет зависеть от операционной системы, в которой вы находитесь.
  30. Чтобы сохранить файл, нажмите клавишу «Esc». Затем введите «: wq» и нажмите «Enter». Это сохранит файл.
  31. Давайте перезапустим службу IoT на нашем Raspberry Pi, чтобы начать отправку данных в службу IoT
    sudo service iot restart
  32. Далее нам нужно скачать код Python для запуска на Raspberry Pi, запустив следующее:
    cd ~
    git clone https://github.com/IBM-Bluemix/python-iot-raspberry-pi.git
    cd python-iot-raspberry-pi
  33. Теперь нам нужно установить менеджер пакетов для Python:
    sudo apt-get install python-pip
    sudo pip install -r requirements.txt
  34. И последнее, нам нужен файл конфигурации для нашего приложения, прежде чем мы сможем его запустить. Давайте запустим следующее:
    vi ~/device.cfg
  35. Помните, что это снова vi, поэтому запомните ярлыки для вставки текста и сохранения его с шага 29,30. Содержимое файла должно выглядеть примерно так, заменив yourapikey, yourdeviceid, youriotorg и yourapitoken правильными значениями. Чтобы сгенерировать ключ и токен API, мы можем получить их, вернувшись в веб-браузер и перейдя в Internet of Things Foundation. В верхней части нажмите на API-ключи. Нажмите «Новый ключ API». Значения, которые он вам дает, будут значениями, которые вы используете для yourapitoken и yourapikey. yourdeviceidявляется ли значение, которое мы получили на шаге 20, на youriotorgшаге 27, оно также находится в вашем конфигурационном файле; в моем случае моя ценность — pwftki. Давайте сохраним файл (помните, «Esc», «: wq», «Enter»)
  36. Хорошо, теперь мы можем запустить / запустить приложение на Raspberry Pi. Для этого выполните следующее:
    cd ~/python-iot-raspberry-pi
    python client.py

Шаги настройки приложения Bluemix

  1. Нам потребуется установить CLI Cloud Foundry, чтобы развернуть наше приложение в Bluemix. Для этого зайдите на  https://github.com/cloudfoundry/cli/releases . Выберите соответствующий установщик для вашей платформы, загрузите его и запустите установщик.
  2. Итак, давайте откроем новое окно терминала, нам нужно будет сделать все остальное на нашей машине / ноутбуке для разработки.
  3. Нам нужно скачать код Python для нашего приложения. Запустите следующее. Если у вас не установлен git, следуйте этим инструкциям здесь .
    git clone git clone https://github.com/IBM-Bluemix/python-iot-raspberry-pi.git
    cd python-iot-raspberry-pi
  4. В вашем веб-браузере вернитесь на вкладку, с которой у вас открыт Bluemix. В верхней части нажмите «Каталог», прокрутите вниз, чтобы найти «Twilio». Нажмите на это.
  5. Если у вас уже есть учетная запись Twilio и вы хотите использовать ее, перейдите к шагу 6. ​​Если у вас нет учетной записи Twilio с правой стороны, нажмите «Зарегистрироваться в Twilio».
  6. Twilio запросит у вас некоторую информацию, и вам нужно будет подтвердить свой номер телефона. Это важно, так как с вашим приложением будут работать только номера, подтвержденные бесплатным планом. Если вы хотите набрать любой номер, который вам нужно заплатить за Twilio, его номер $ 1 / месяц / номер телефона.
  7. Как только вы зарегистрируетесь в своей учетной записи, перейдите на  https://www.twilio.com/user/account/voice-messaging . В правом верхнем углу появится сообщение с надписью «Показать учетные данные API», щелкните по нему. Здесь есть две части информации: SID учетной записи и токен авторизации. Нам нужно будет скопировать их обратно на вкладку Bluemix, которую мы открыли в Twilio.
  8. Вставьте свой SID учетной записи в поле Bluemix с надписью SID учетной записи, вставьте свой токен аутентификации в поле Auth Token.
  9. Для названия сервиса вы должны ввести именно это iot-twilio
  10. Для приложения выберите «Оставить несвязанным»
  11. Нажмите Создать.
  12. Вернитесь к терминалу, который у вас есть на вашем локальном компьютере разработчика, а не на Raspberry Pi.
  13. Нам нужно войти в Bluemix, для этого наберите  cf login -a https://api.ng.bluemix.net. Он попросит вас ввести имя пользователя и пароль. Это с шага 1 в разделе Raspberry Pi выше.
  14. Чтобы развернуть наше приложение, все, что нам нужно сделать, это ввести тип, cf push myappnameгде myapp name — это уникальное имя, которое вы выбираете для своего приложения. ПРИМЕЧАНИЕ. Если вы получили сообщение об ошибке, указав, что выбран маршрут, выберите другое имя и запустите его cf pushс новым именем приложения.
  15. Развертывание вашего приложения займет около минуты или двух, но в итоге вы получите вывод, который выглядит следующим образом:
    output of deploying an app

    Есть строка, которая говорит urls:, скопируйте этот URL и вставьте его в свой браузер.

Если все прошло хорошо, у вас должна быть страница, которая выглядит следующим образом:

Pythoniotapp IoT Python-приложение с Raspberry Pi и Bluemix

Важное замечание: не нажимайте кнопку на Raspberry Pi, пока не введете здесь номер телефона и текстовое сообщение, в противном случае приложение вылетит. Если вы сделаете это, вы можете перезапустить приложение cf restart myappname, где myappname — это имя приложения, которое вы выбрали выше.

Когда вы нажимаете кнопку «Вкл.», Она должна включить свет для вас. Если вы нажмете кнопку «Off», она должна выключить свет.

Обратная связь

Подпишитесь на нас в Твиттере на @IBMBluemix и следите@jsloyer