Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
products:laboratory_iot:exp67 [2021/04/25 18:52] – labuser29 | products:laboratory_iot:exp67 [2024/12/05 17:44] (текущий) – labuser30 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
===== Эксперимент 67. Отправка данных в интернет ===== | ===== Эксперимент 67. Отправка данных в интернет ===== | ||
- | Мы уже умеем подключаться к WiFi сети или создавать собственную точку доступа. Поднимать свой веб- сервер, | + | Мы уже умеем подключаться к WiFi сети или создавать собственную точку доступа. Поднимать свой веб- сервер, |
Теперь мы попробуем сделать наоборот. Пусть наш термометр сам обращается на сервер в интернете и передает на него свои данные о температуре. На сервере эти данные будут сохраняться и мы, или другие пользователи интернета, | Теперь мы попробуем сделать наоборот. Пусть наш термометр сам обращается на сервер в интернете и передает на него свои данные о температуре. На сервере эти данные будут сохраняться и мы, или другие пользователи интернета, | ||
- | Для этих целей воспользуемся известным интернет- сервисом для хранения данных с устройств интернета вещей [[http:// | + | Для этих целей воспользуемся известным интернет- сервисом для хранения данных с устройств интернета вещей [[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:// | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | Видим имя нашей переменной '' |