ESP8266:Примеры/Постинг в Twitter при помощи ESP8266

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 1874 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Постинг в Twitter при помощи ESP8266[1]

В этой статье рассказывается, как постить в Twitter при помощи модуля на базе ESP8266. Для выполнения этого проекта нужно будет зарегистрироваться в бесплатном сервисе под названием IFTTT – это платформа, позволяющая настроить взаимную работу сразу нескольких сервисов, приложений и устройств. В частности, с помощью IFTTT можно сделать так, чтобы какое-нибудь устройство или приложение делало запрос, запускающий отправку письма вам на электронную почту.

Перед тем, как продолжить, пройдите вот эти руководства:

Создание аккаунта в IFTTT

Создание аккаунта в IFTTT абсолютно бесплатно. Зайдите на сайт IFTTT и нажмите кнопку «Sign Up», находящуюся в правом верхнем углу страницы. Затем заполните поля формы (нужно указать электронный адрес и пароль; см. картинку ниже) и кликните на «Sign Up».

Ifttt-signup.jpg

Открытие рецепта

Я создал рецепт специально для этого проекта. Чтобы открыть рецепт, залогиньтесь в IFTTT и кликните по этой ссылке. Откроется новая страница, в центре которой будет зеленый прямоугольник с ползунком-переключателем и надписью «Turn On».

Post-in-twitter-recipe.jpg

Передвиньте ползунок в правую сторону. Откроется страница, запрашивающая доступ к Maker Webhooks и Twitter:

Ifttt-twitter-premissions.jpg

Когда вы завершите подключение к этим сервисам, появится новая страница:

Body-of-recipe twitter 1.jpg

Добавление данных в рецепт

Теперь заполняем рецепт данными:

  1. В поле, над которым написано «Name your event exactly "post_tweet"», вписываем «post_tweet»
  2. В поле «Tweet text» вписываем текст, который будет написан в Twitter-посте
  3. Жмем на кнопку «Save»
Edited-body-of-recipe.jpg

Теперь пройдите по этой ссылке, а когда откроется новая страница, кликните по кнопке «Documentation», которая находится в правом верхнем углу. Откроется еще одна страница, в верхней части которой будет надпись «Your key is: …», после которой будет идти набор символов. Это ключ – скопируйте его, т.к. он вам еще понадобится. В моем случае это «bmPKmGAqaubg18ACJxhFb3».

Maker-webhooks-key tw 2.jpg

Тестирование рецепта

Теперь давайте проверим, правильно ли работает ваш запрос. Вставьте ключ из раздела выше в конец этого URL:

https://maker.ifttt.com/trigger/post_tweet/with/key/ВАШ_API_КЛЮЧ

К примеру, если я подставлю туда свой ключ, по получится следующее:

https://maker.ifttt.com/trigger/post_tweet/with/key/bmPKmGAqaubg18ACJxhFb3

Теперь вставьте этот URL в адресную строку браузера и нажмите  ↵ Enter . В результате должно получиться следующее:

Browser Test Your Applet 1.png

Это переводится как «Поздравляем! Вы запустили событие post_tweet». Затем пройдите на Twitter – ваш аккаунт должен запостить новый пост с текстом, который вы вписали в поле «Tweet text».

Haipanem-nemnozhko.jpg

Необходимые компоненты

  • Один модуль ESP8266
  • Один программатор FTDI
ESP01v0.jpg

Схема подключения к 3,3-вольтовому программатору FTDI

Чтобы загрузить код на ESP8266, вам нужно настроить между ним и программатором FTDI последовательное соединение (см. картинку ниже).

ESP-Schematics (3.3V FTDI Programmer).png

Загрузка ESPlorer IDE

Для загрузки LUA-файлов на ESP8266 рекомендую использовать программу ESPlorer IDE, написанную пользователем 4refr0nt. Чтобы установить ее, проделайте следующее:

  1. Кликните здесь, чтобы загрузить ZIP-файл с ESPlorer IDE
  2. Распакуйте скачанный архив
  3. Перейдите в главную папку
  4. Запустите файл «ESPlorer.jar». Это программа на JAVA, поэтому убедитесь, что JAVA установлен на вашем компьютере.
  5. Откройте ESPlorer IDE

Перед вами должно открыться вот такое окно:

Esplorer-start Downloading ESPlorer.png

Скрипт

Во-первых, не забудьте загрузить на ESP8266 прошивку NodeMCU. Затем скопируйте и вставьте в ESPlorer IDE код, показанный ниже. Вам нужно будет отредактировать в нем 5-ую (с данными о сети) и 13-ую (с ключом API) строчки.

  1. -- Автор – Руи Сантос (Rui Santos)
  2. -- Более подробно о проекте на http://randomnerdtutorials.com
  3.  
  4. wifi.setmode(wifi.STATION)
  5. wifi.sta.config("YOUR_NETWORK_NAME","YOUR_NETWORK_PASSWORD")
  6.  
  7. -- Простой HTTP-клиент:
  8. conn = nil
  9. conn=net.createConnection(net.TCP, 0)
  10. conn:on("receive", function(conn, payload) end)
  11. conn:connect(80,"maker.ifttt.com")
  12. conn:on("connection", function(conn, payload)
  13. conn:send("POST /trigger/post_tweet/with/key/YOUR_API_KEY HTTP/1.1\r\nHost: maker.ifttt.com\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n") end)
  14. conn:close()
  15. print('Posted Tweet')  --  'Твит запощен'

Загрузка LUA-скрипта на ESP8266

Открыв ESPlorer IDE, проделайте следующее:

  1. Подключите программатор FTDI к компьютеру
  2. Выставьте скорость передачи данных на 9600 бод
  3. Выберите порт, к которому подключен программатор FTDI (к примеру, COM3)
  4. Нажмите на кнопку «Open/Close»
  5. Выберите вкладку «NodeMCU+MicroPython»
  6. Скопируйте LUA-скрипт в ESPlorer IDE

Затем просто нажмите на кнопку «Save to ESP». После этого на мониторе порта (он находится в правой части программы) должна появиться фраза «Tweet Posted». Все элементы программы, необходимые для выполнения этих действий, подсвечены на картинке ниже красным цветом:

Esplorer IDE Uploading Your Lua Script.png

Ограничения и как их обойти

Twitter не разрешает раз за разом постить одно и то же сообщение. Но это ограничение можно обойти при помощи скрипта, показанного ниже (только замените данные о сети в 5-ой строчке и ключ API в 13-ой строчке). В нем к запросу POST добавлен дополнительный параметр.

Этот параметр называется «value1», и он отправляет значение «true». IFTTT поддерживает три параметра с названиями «value1», «value2» и «value3», которые позволяют изменять твиты, делая их уникальными.

  1. -- Автор – Руи Сантос (Rui Santos)
  2. -- Более подробно о проекте на http://randomnerdtutorials.com
  3.  
  4. wifi.setmode(wifi.STATION)
  5. wifi.sta.config("YOUR_NETWORK_NAME","YOUR_NETWORK_PASSWORD")
  6.  
  7. -- Простой HTTP-клиент
  8. conn = nil
  9. conn=net.createConnection(net.TCP, 0)
  10. conn:on("receive", function(conn, payload) end)
  11. conn:connect(80,"maker.ifttt.com")
  12. conn:on("connection", function(conn, payload)
  13. conn:send("POST /trigger/post_tweet/with/key/YOUR_API_KEY HTTP/1.1\r\n"..
  14.   "Host: maker.ifttt.com\r\nConnection: close\r\nAccept: */*\r\nContent-Type: application/json\r\n" ..
  15.   "Content-Length: 17\r\n\r\n{\"value1\":true}\r\n") end)
  16. conn:close()
  17. print('Posted Tweet')  --  'Твит запощен'

Делая запрос POST, убедитесь, что поставили правильное значение у заголовка «Content-Length» (в моем случае это «17»). Если вы измените «value1» или добавите в тело запроса дополнительные параметры, значение для «Content Length» тоже изменится. Если сделать запрос с неправильным «Content-Length», то он просто не выполнится.

Теперь, зная, как это все работает, вы можете чуть изменить проект и публиковать в Twitter данные от датчиков (вроде температуры, влажности и т.д.).

Вот результат:

Haipanem-nemnozhko-true.jpg

См.также

Внешние ссылки

  1. randomnerdtutorials.com - Posting a Tweet with the ESP8266