Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| products:laboratory_iot:exp67 [2021/04/25 18:51] – labuser29 | products:laboratory_iot:exp67 [2024/12/05 17:44] (текущий) – labuser30 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ===== Эксперимент 67. Отправка данных в интернет ===== | ===== Эксперимент 67. Отправка данных в интернет ===== | ||
| - | Мы уже умеем подключаться к WiFi сети или создавать собственную точку доступа. Поднимать свой веб- сервер, | + | Мы уже умеем подключаться к WiFi сети или создавать собственную точку доступа. Поднимать свой веб- сервер, |
| Теперь мы попробуем сделать наоборот. Пусть наш термометр сам обращается на сервер в интернете и передает на него свои данные о температуре. На сервере эти данные будут сохраняться и мы, или другие пользователи интернета, | Теперь мы попробуем сделать наоборот. Пусть наш термометр сам обращается на сервер в интернете и передает на него свои данные о температуре. На сервере эти данные будут сохраняться и мы, или другие пользователи интернета, | ||
| + | |||
| + | Для этих целей воспользуемся известным интернет- сервисом для хранения данных с устройств интернета вещей [[http:// | ||
| + | |||
| + | Для начала нам нужно просто научиться соединяться с интернет-сервисом и передавать туда хоть какие-то данные. Поэтому пока не будем собирать термометр, | ||
| + | |||
| + | ==== Программный код эксперимента ==== | ||
| + | <file python Exp67.py[enable_line_numbers=" | ||
| + | from machine import Pin | ||
| + | import network | ||
| + | import gc | ||
| + | import time | ||
| + | import socket | ||
| + | |||
| + | _init() | ||
| + | gc.collect() | ||
| + | |||
| + | |||
| + | wlan_id = " | ||
| + | wlan_pass = " | ||
| + | |||
| + | |||
| + | wlan = network.WLAN(network.STA_IF) | ||
| + | wlan.active(True) | ||
| + | wlan.connect(wlan_id, | ||
| + | time.sleep(1) | ||
| + | |||
| + | |||
| + | while wlan.isconnected() == False: | ||
| + | pass | ||
| + | |||
| + | print(' | ||
| + | |||
| + | |||
| + | |||
| + | def http_get(url, | ||
| + | _, _, host, path = url.split('/', | ||
| + | addr = socket.getaddrinfo(host, | ||
| + | | ||
| + | s = socket.socket() | ||
| + | s.connect(addr) | ||
| + | s.send(bytes(' | ||
| + | |||
| + | text = '' | ||
| + | |||
| + | while True: | ||
| + | data = s.recv(100) | ||
| + | if data: | ||
| + | text += str(data, ' | ||
| + | pass | ||
| + | else: | ||
| + | a = text.split(' | ||
| + | return a | ||
| + | break | ||
| + | |||
| + | |||
| + | deviceName = ' | ||
| + | temp = 22.9 | ||
| + | |||
| + | data = http_get(' | ||
| + | </ | ||
| + | |||
| + | Первым делом нам необходимо подключиться к WiFi сети с доступом в интернет. После этого мы готовы к отправке данных. Для этого нам потребуется библиотека для работы с сокетами '' | ||
| + | |||
| + | <WRAP center round info 60%> | ||
| + | [[https:// | ||
| + | </ | ||
| + | |||
| + | Чтобы передать данные на сервер нам нужно знать его адрес и порт. В нашем случае адрес http:// | ||
| + | Вместо DEVICENAME нужно подставить свое имя устройства. Имя может быть любым, но желательно придумать уникальное. Такое, которое точно еще не использовано. Мы придумали PinLabIoTSensor010520. Вам необходимо придумать свое, например IvanovIvanSPBSensor123. | ||
| + | |||
| + | После знака ''?'' | ||
| + | |||
| + | Запишем имя нашего устройства и значение температуры в переменные для удобства дальнейшего их использования: | ||
| + | <code python[enable_line_numbers=" | ||
| + | deviceName = ' | ||
| + | temp = 22.9 | ||
| + | </ | ||
| + | |||
| + | Теперь формируем адрес в интернете (URL), по которому мы будем обращаться с параметрами, | ||
| + | <code python[enable_line_numbers=" | ||
| + | data = http_get(' | ||
| + | </ | ||
| + | |||
| + | Функция '' | ||
| + | |||
| + | Код функции '' | ||
| + | |||
| + | Запустим данную программу. Она отправит данные в интернет- сервис dweet.io. Чтобы посмотреть эти данные в сервисе необходимо перейти по ссылке вида http:// | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| + | Видим имя нашей переменной '' | ||