Это расширение / продолжение поста в блоге о том, как создать простое веб-приложение на Python . В этом уроке мы рассмотрим, как интегрировать веб-приложение Python Flask в Bluemix с Фондом Интернета вещей в Bluemix с Raspberry Pi и двумя датчиками на Raspberry Pi. В учебнике также используется Twilio для взаимодействия с Raspberry Pi.
Так как же это выглядит? Вот простая диаграмма архитектуры.
На приведенной выше диаграмме есть два потока:
- Первый поток включает нажатие кнопки HTML в приложении Python Flask в Bluemix для включения или выключения светодиода на Raspberry Pi.
- Второй поток включает нажатие физической кнопки на макете на Raspberry Pi и использование службы IoT в Bluemix, а наше приложение в Bluemix отправит текстовое сообщение по нашему выбору на номер телефона, который мы вводим в приложении Python Flask в Bluemix, используя Twilio.
Все это заняло всего около 100 строк кода, круто, да?
Если вы предпочитаете смотреть это видео вместо того, чтобы выполнять шаги, описанные в этом руководстве, посмотрите видео ниже.
Настроить
Это состоит из двух частей. Если мы посмотрим на диаграмму архитектуры выше, то увидим, что есть кусок Raspberry Pi, а затем кусок Bluemix. Сначала мы пройдемся по пьесе Raspberry Pi, а затем пройдемся по пьесе Bluemix.
Шаги установки Raspberry Pi
- Зарегистрируйте учетную запись Bluemix, посетите веб-браузер http://bluemix.net и нажмите «Зарегистрироваться» в правом верхнем углу. Нам требуется пара бит информации
- Подождите, пока письмо придет, это займет всего пару минут. В письме должна быть ссылка «Нажмите здесь, чтобы завершить регистрацию», нажмите эту ссылку. Войдите, используя имя пользователя и пароль, которые вы создали на шаге 1.
- Получите Raspberry Pi, макетную плату, провода, светодиод и кнопку (лучше всего получить стартовый набор, такой как Canakit )
- Поместите светодиод в макет (поместите более короткую сторону влево)
- Поместите резистор 220 Ом в макетную плату, соединяющую короткую сторону (левую сторону светодиода) с шиной заземления (шину со знаком -). Убедитесь, что сторона резистора расположена так, чтобы красные полоски были ближе к светодиоду. ПРИМЕЧАНИЕ: схема работает так, чтобы соединения проходили вертикально, а не горизонтально.
- Подключите провод от заземляющей шины к GND на плате распиновки
- На правой стороне светодиода подключите провод к порту, помеченному 17. ПРИМЕЧАНИЕ: схема работает так, чтобы соединения проходили вертикально, а не горизонтально.
- Поместите кнопку в макет, чтобы ее полностью нажать, нужно приложить немного усилий. Это не сломает это.
- Подсоедините провод с правой стороны кнопки к шине заземления.
- Подключите провод от заземляющей шины к порту GND, не имеет значения, какой он есть
- Наконец, подключите провод с левой стороны кнопки к порту 18 GPIO.
- Далее нам нужно либо использовать консоль для нашего Raspberry Pi и приложение терминала на самом устройстве, либо использовать SSH. Я собираюсь использовать SSH.
- Чтобы получить IP-адрес вашего Raspberry Pi, проще всего открыть приложение терминала на Raspberry Pi, оно находится под аксессуарами -> Терминал
- Введите «ifconfig» без кавычек. Если вы подключены через Ethernet, IP-адрес будет находиться под eth0, если вы подключены через wifi, IP-адрес будет под wlan0
- Затем нам нужно подключиться к устройству через ssh. — Windows, загрузите Putty и используйте его для подключения к IP-адресу — Mac и Linux, откройте приложение Terminal, введите
ssh pi@myipaddress
myipaddress, где IP-адрес Raspberry Pi, например, 192.168.1.65 - Пароль малиновый
- Нам нужно запустить несколько команд, чтобы обновить наш Raspberry Pi, выполнить следующее. Он попросит вас подтвердить клавишей «Y»
sudo apt-get update sudo-apt-get upgrade
- Далее нам нужно установить вспомогательную библиотеку для использования GPIO
git clone git://git.drogon.net/wiringPi cd wiringPi ./build
- Далее нам нужно установить библиотеку 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
- Нам нужно получить идентификатор устройства нашего Raspberry Pi, выполнить следующую команду и сохранить результат
service iot getdeviceid #example output The device id is b827eba5b236
Мы хотим скопировать идентификатор
b827eba5b236
, ваш, очевидно, будет отличаться - Откройте веб-браузер и перейдите на bluemix.net , и нажмите «Каталог» в верхней части. Прокрутите вниз до самого низа и нажмите «Интернет вещей».
- Присвойте сервису имя, используйте iot-python (вы должны сделать это точно, или позже ничего не получится), для приложения выберите «Оставить свободным», нажмите «Создать».
- Слева от следующей страницы нажмите «Launch dashboard».
- Вверху нажмите «Устройства».
- Нажмите «Добавить устройство».
- Для второго поля (например, типа mydevice) введите точно
raspberrypi
(оно должно быть написано так, иначе будут проблемы). Для вставки идентификатора устройства в идентификатор устройства, полученный на шаге 20, у меня естьb827ba5b236
. Нажмите продолжить. - На следующей странице будет показано что-то вроде ниже, скопируйте это и переключитесь обратно на терминал на Raspberry Pi.
org=pwftki type=raspberrypi id=000000000000 auth-method=token auth-token=cXQaGx8o!a9HwxM-ka
- Выберите ваш любимый текстовый редактор, но я собираюсь использовать vi. Введите следующее, чтобы открыть файл, который мы хотим редактировать.
sudo vi /etc/iotsample-raspberrypi/device.cfg
- Чтобы вставить текст, нажмите клавишу «i». Затем вставьте текст, это будет зависеть от операционной системы, в которой вы находитесь.
- Чтобы сохранить файл, нажмите клавишу «Esc». Затем введите «: wq» и нажмите «Enter». Это сохранит файл.
- Давайте перезапустим службу IoT на нашем Raspberry Pi, чтобы начать отправку данных в службу IoT
sudo service iot restart
- Далее нам нужно скачать код Python для запуска на Raspberry Pi, запустив следующее:
cd ~ git clone https://github.com/IBM-Bluemix/python-iot-raspberry-pi.git cd python-iot-raspberry-pi
- Теперь нам нужно установить менеджер пакетов для Python:
sudo apt-get install python-pip sudo pip install -r requirements.txt
- И последнее, нам нужен файл конфигурации для нашего приложения, прежде чем мы сможем его запустить. Давайте запустим следующее:
vi ~/device.cfg
- Помните, что это снова vi, поэтому запомните ярлыки для вставки текста и сохранения его с шага 29,30. Содержимое файла должно выглядеть примерно так, заменив yourapikey, yourdeviceid, youriotorg и yourapitoken правильными значениями. Чтобы сгенерировать ключ и токен API, мы можем получить их, вернувшись в веб-браузер и перейдя в Internet of Things Foundation. В верхней части нажмите на API-ключи. Нажмите «Новый ключ API». Значения, которые он вам дает, будут значениями, которые вы используете для yourapitoken и yourapikey.
yourdeviceid
является ли значение, которое мы получили на шаге 20, наyouriotorg
шаге 27, оно также находится в вашем конфигурационном файле; в моем случае моя ценность — pwftki. Давайте сохраним файл (помните, «Esc», «: wq», «Enter») - Хорошо, теперь мы можем запустить / запустить приложение на Raspberry Pi. Для этого выполните следующее:
cd ~/python-iot-raspberry-pi python client.py
Шаги настройки приложения Bluemix
- Нам потребуется установить CLI Cloud Foundry, чтобы развернуть наше приложение в Bluemix. Для этого зайдите на https://github.com/cloudfoundry/cli/releases . Выберите соответствующий установщик для вашей платформы, загрузите его и запустите установщик.
- Итак, давайте откроем новое окно терминала, нам нужно будет сделать все остальное на нашей машине / ноутбуке для разработки.
- Нам нужно скачать код Python для нашего приложения. Запустите следующее. Если у вас не установлен git, следуйте этим инструкциям здесь .
git clone git clone https://github.com/IBM-Bluemix/python-iot-raspberry-pi.git cd python-iot-raspberry-pi
- В вашем веб-браузере вернитесь на вкладку, с которой у вас открыт Bluemix. В верхней части нажмите «Каталог», прокрутите вниз, чтобы найти «Twilio». Нажмите на это.
- Если у вас уже есть учетная запись Twilio и вы хотите использовать ее, перейдите к шагу 6. Если у вас нет учетной записи Twilio с правой стороны, нажмите «Зарегистрироваться в Twilio».
- Twilio запросит у вас некоторую информацию, и вам нужно будет подтвердить свой номер телефона. Это важно, так как с вашим приложением будут работать только номера, подтвержденные бесплатным планом. Если вы хотите набрать любой номер, который вам нужно заплатить за Twilio, его номер $ 1 / месяц / номер телефона.
- Как только вы зарегистрируетесь в своей учетной записи, перейдите на https://www.twilio.com/user/account/voice-messaging . В правом верхнем углу появится сообщение с надписью «Показать учетные данные API», щелкните по нему. Здесь есть две части информации: SID учетной записи и токен авторизации. Нам нужно будет скопировать их обратно на вкладку Bluemix, которую мы открыли в Twilio.
- Вставьте свой SID учетной записи в поле Bluemix с надписью SID учетной записи, вставьте свой токен аутентификации в поле Auth Token.
- Для названия сервиса вы должны ввести именно это iot-twilio
- Для приложения выберите «Оставить несвязанным»
- Нажмите Создать.
- Вернитесь к терминалу, который у вас есть на вашем локальном компьютере разработчика, а не на Raspberry Pi.
- Нам нужно войти в Bluemix, для этого наберите
cf login -a https://api.ng.bluemix.net
. Он попросит вас ввести имя пользователя и пароль. Это с шага 1 в разделе Raspberry Pi выше. - Чтобы развернуть наше приложение, все, что нам нужно сделать, это ввести тип,
cf push myappname
где myapp name — это уникальное имя, которое вы выбираете для своего приложения. ПРИМЕЧАНИЕ. Если вы получили сообщение об ошибке, указав, что выбран маршрут, выберите другое имя и запустите егоcf push
с новым именем приложения. - Развертывание вашего приложения займет около минуты или двух, но в итоге вы получите вывод, который выглядит следующим образом:
output of deploying an app
Есть строка, которая говорит
urls:
, скопируйте этот URL и вставьте его в свой браузер.
Если все прошло хорошо, у вас должна быть страница, которая выглядит следующим образом:
Важное замечание: не нажимайте кнопку на Raspberry Pi, пока не введете здесь номер телефона и текстовое сообщение, в противном случае приложение вылетит. Если вы сделаете это, вы можете перезапустить приложение cf restart myappname
, где myappname — это имя приложения, которое вы выбрали выше.
Когда вы нажимаете кнопку «Вкл.», Она должна включить свет для вас. Если вы нажмете кнопку «Off», она должна выключить свет.
Обратная связь
Подпишитесь на нас в Твиттере на @IBMBluemix и следите@jsloyer