Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
products:laboratory_iot:exp67 [2021/04/25 19:14] – labuser29 | products:laboratory_iot:exp67 [2024/12/05 17:44] (текущий) – labuser30 |
---|
===== Эксперимент 67. Отправка данных в интернет ===== | ===== Эксперимент 67. Отправка данных в интернет ===== |
| |
Мы уже умеем подключаться к WiFi сети или создавать собственную точку доступа. Поднимать свой веб- сервер, чтобы принимать команды или сообщать данные. Например, наш [[products:laboratory_iot:exp65|WiFi- термометр]] является типичным устройством интернета вещей. Это датчик, к которому можно получить доступ через интернет. Этот датчик может находиться на другом конце света, может находиться в теплице, в автомобиле. Он может измерять температуру какого нибудь важного технологического оборудования, следить за соблюдением технологического процесса на производстве. Чтобы получить информацию с этого датчика к нему нужно обратиться. | Мы уже умеем подключаться к WiFi сети или создавать собственную точку доступа. Поднимать свой веб- сервер, чтобы принимать команды или сообщать данные. Например, наш [[products:laboratory_iot:exp65|WiFi-термометр]] является типичным устройством интернета вещей. Это датчик, к которому можно получить доступ через интернет. Этот датчик может находиться на другом конце света, может находиться в теплице, в автомобиле. Он может измерять температуру какого-нибудь важного технологического оборудования, следить за соблюдением технологического процесса на производстве. Чтобы получить информацию с этого датчика к нему нужно обратиться. |
| |
Теперь мы попробуем сделать наоборот. Пусть наш термометр сам обращается на сервер в интернете и передает на него свои данные о температуре. На сервере эти данные будут сохраняться и мы, или другие пользователи интернета, смогут выйти на сайт и посмотреть данные, которые были ранее переданы туда. | Теперь мы попробуем сделать наоборот. Пусть наш термометр сам обращается на сервер в интернете и передает на него свои данные о температуре. На сервере эти данные будут сохраняться и мы, или другие пользователи интернета, смогут выйти на сайт и посмотреть данные, которые были ранее переданы туда. |
Для этих целей воспользуемся известным интернет- сервисом для хранения данных с устройств интернета вещей [[http://dweet.io/|dweet.io]]. Для наших целей нам даже не придется регистрироваться на этом сервисе. Достаточно просто передать на него данные и сервис их запомнит. | Для этих целей воспользуемся известным интернет- сервисом для хранения данных с устройств интернета вещей [[http://dweet.io/|dweet.io]]. Для наших целей нам даже не придется регистрироваться на этом сервисе. Достаточно просто передать на него данные и сервис их запомнит. |
| |
Для начала нам нужно просто научиться соединяться с интернет- сервисом и передавать туда хоть какие-то данные. Поэтому пока не будем собирать термометр, а ограничимся просто передачей константы. | Для начала нам нужно просто научиться соединяться с интернет-сервисом и передавать туда хоть какие-то данные. Поэтому пока не будем собирать термометр, а ограничимся просто передачей константы. |
| |
| ==== Программный код эксперимента ==== |
<file python Exp67.py[enable_line_numbers="2", start_line_numbers_at="1"]> | <file python Exp67.py[enable_line_numbers="2", start_line_numbers_at="1"]> |
from machine import Pin | from machine import Pin |
Вместо DEVICENAME нужно подставить свое имя устройства. Имя может быть любым, но желательно придумать уникальное. Такое, которое точно еще не использовано. Мы придумали PinLabIoTSensor010520. Вам необходимо придумать свое, например IvanovIvanSPBSensor123. | Вместо DEVICENAME нужно подставить свое имя устройства. Имя может быть любым, но желательно придумать уникальное. Такое, которое точно еще не использовано. Мы придумали PinLabIoTSensor010520. Вам необходимо придумать свое, например IvanovIvanSPBSensor123. |
| |
После знака ''?'' передаются данные. В нашем случае это temp=TEMP, где ''temp'' это имя переменной, а ''TEMP'' это ее значение, которое необходимо заменить на неальное. | После знака ''?'' передаются данные. В нашем случае это temp=TEMP, где ''temp'' это имя переменной, а ''TEMP'' это ее значение, которое необходимо заменить на реальное. |
| |
Запишем имя нашего устройства и значение температуры в переменные для удобства дальнейшего их использования: | Запишем имя нашего устройства и значение температуры в переменные для удобства дальнейшего их использования: |
Функция ''http_get'' принимает два параметра: URL и порт (по умолчанию 80). Функция обращается по указанному адресу, получает ответ от сервера и возвращает его в качестве ответа. В нашем случае ответ не требуется, мы просто передаем данные. | Функция ''http_get'' принимает два параметра: URL и порт (по умолчанию 80). Функция обращается по указанному адресу, получает ответ от сервера и возвращает его в качестве ответа. В нашем случае ответ не требуется, мы просто передаем данные. |
| |
Код функции ''http_get'' достаточно сложен, он реализует формирование HTTP запроса и разбор HTTP ответа . Чтобы понять эту функцию необходимо разбираться в протоколе HTTP. Но это не обязательно для того, чтобы просто ей пользоваться. Главное понимать, что с ее помощью мы формируем запрос к серверу, расположенному по адресу url | Код функции ''http_get'' достаточно сложен, он реализует формирование HTTP запроса и разбор HTTP ответа . Чтобы понять эту функцию необходимо разбираться в протоколе HTTP. Но это не обязательно для того, чтобы просто ей пользоваться. Главное понимать, что с ее помощью мы формируем запрос к серверу, расположенному по адресу url и получаем ответ. |
| |
| Запустим данную программу. Она отправит данные в интернет- сервис dweet.io. Чтобы посмотреть эти данные в сервисе необходимо перейти по ссылке вида http://dweet.io/follow/DEVICENAME, где ''DEVICENAME'' имя устройства, указанное в программе. В нашем случае это http://dweet.io/follow/PinLabIoTSensor010520 |
| |
| {{ :products:esp-iot:2021-04-25_19-45-16.png?direct&600 |}} |
| |
| |
| Видим имя нашей переменной ''temp'' и ее значение 22.9. Значит данные были успешно переданы в интернет. |