Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| products:laboratory_iot_c:exp67 [2024/12/05 17:43] – создано labuser30 | products:laboratory_iot_c:exp67 [2024/12/16 15:00] (текущий) – [Программный код эксперимента] labuser30 | ||
|---|---|---|---|
| Строка 9: | Строка 9: | ||
| Для начала нам нужно просто научиться соединяться с интернет-сервисом и передавать туда хоть какие-то данные. Поэтому пока не будем собирать термометр, | Для начала нам нужно просто научиться соединяться с интернет-сервисом и передавать туда хоть какие-то данные. Поэтому пока не будем собирать термометр, | ||
| - | < | + | ==== Программный код эксперимента ==== |
| - | from machine import Pin | + | < |
| - | import network | + | #include < |
| - | import gc | + | #include < |
| - | import time | + | #include < |
| - | import socket | + | |
| - | _init() | + | #define WIFI_NAME |
| - | gc.collect() | + | #define WIFI_PASSWORD " |
| + | void httpGet(String url) { | ||
| + | WiFiClient client; | ||
| + | HTTPClient http; | ||
| - | wlan_id | + | if (http.begin(client, |
| - | wlan_pass | + | Serial.print(" |
| + | int httpCode | ||
| + | if (httpCode > 0) { | ||
| + | Serial.printf("[HTTP] GET code: %d\n", httpCode); | ||
| + | if (httpCode == HTTP_CODE_OK) { | ||
| + | String payload = http.getString(); | ||
| + | Serial.println(payload); | ||
| + | } else { | ||
| + | Serial.printf(" | ||
| + | } | ||
| + | http.end(); | ||
| + | } else { | ||
| + | Serial.println(" | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void setup() { | ||
| + | Serial.begin(9600); | ||
| + | Serial.println(); | ||
| + | |||
| + | Serial.print(" | ||
| + | | ||
| + | WiFi.begin(WIFI_NAME, | ||
| + | while (WiFi.status() != WL_CONNECTED) { | ||
| + | Serial.print("."); | ||
| + | delay(500); | ||
| + | } | ||
| + | Serial.println(); | ||
| + | Serial.println(" | ||
| + | Serial.print(" | ||
| + | Serial.println(WiFi.localIP()); | ||
| + | String device_name = " | ||
| + | float temp = 22.9; | ||
| - | wlan = network.WLAN(network.STA_IF) | + | httpGet(" |
| - | wlan.active(True) | + | } |
| - | wlan.connect(wlan_id, | + | |
| - | time.sleep(1) | + | |
| - | + | void loop() { | |
| - | while wlan.isconnected() == False: | + | } |
| - | | + | |
| - | + | ||
| - | 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 сети с доступом в интернет. После этого мы готовы к отправке данных. Для этого нам потребуется библиотека для работы | + | Первым делом нам необходимо подключиться к WiFi сети с доступом в интернет. После этого мы готовы к отправке данных. Для этого нам потребуется библиотеки для работы |
| - | + | ||
| - | <WRAP center round info 60%> | + | |
| - | [[https:// | + | |
| - | </ | + | |
| - | Чтобы передать данные на сервер нам нужно знать его адрес | + | Чтобы передать данные на сервер нам нужно знать его адрес. В нашем случае адрес http:// |
| - | Вместо DEVICENAME нужно подставить свое имя устройства. Имя может быть любым, но желательно придумать уникальное. Такое, которое точно еще не использовано. Мы придумали PinLabIoTSensor010520. Вам необходимо придумать свое, например IvanovIvanSPBSensor123. | + | |
| После знака ''?'' | После знака ''?'' | ||
| Запишем имя нашего устройства и значение температуры в переменные для удобства дальнейшего их использования: | Запишем имя нашего устройства и значение температуры в переменные для удобства дальнейшего их использования: | ||
| - | <code python[enable_line_numbers=" | + | <code python[enable_line_numbers=" |
| - | deviceName | + | |
| - | temp = 22.9 | + | |
| </ | </ | ||
| Теперь формируем адрес в интернете (URL), по которому мы будем обращаться с параметрами, | Теперь формируем адрес в интернете (URL), по которому мы будем обращаться с параметрами, | ||
| - | < | + | < |
| - | data = http_get('http:// | + | |
| </ | </ | ||
| - | Функция '' | + | Функция '' |
| Код функции '' | Код функции '' | ||