Это старая версия документа!


Эксперимент 69. Получение данных с интернет- сервиса

Устройства интернета- вещей не только отправляют данные в интернет, но и получают их оттуда. В интернете есть ресурсы, предназначенные для получения информации человеком- обычныйе сайты. Но кроме того, есть интернет- ресурсы для получения данных другими программами — веб-сервисы. Их главное отличие от обычного сайта в том, что они предоставляют данные в удобном для программ виде, без излишеств. Без визуального оформления, только чистые данные в определенном формате. Форматы предоставления данных могут быть разными.

Попробуем поработать с веб- сервисом. Для получения погодных данных хорошо подходит веб- сервис weatherbit.io. Основные данные о погоде данный сервис предоставляет бесплатно до 500 запросов в сутки, но необходимо пройти простую процедуру регистрации.

Регистрация происходит на странице https://www.weatherbit.io/account/create

Вводим в поле Username логин, например pinlab. В поле Password пароль, который нужно придумать. Например 123456789. В поле Re-Enter Password for Verification вводим тот же пароль еще раз. В поле E-mail вводим адрес электронной почты.

Устанавливаем галочку I accept the Terms and Conditions and the Privacy Policy, которой мы подтверждаем согласие с условиями предоставления сервиса. По желанию можно убрать галочку Send me updates via email, чтобы не получать писем от этого сервиса.

Ставим галочку Я не робот и нажимаем на кнопку Submit.

Если форма заполнена правильно, то увидим сообщение Thank you for registering! You may now login to your account, and access your API Key!, которое сообщает нам, что регистрация пройдена. На этой странице вводим логин и пароль чтобы авторизоваться в сервисе.

После авторизации в сервисе мы попадаем на страницу, где необходимо предоставить немного дополнительной информации. Заполнить ее можно согласно картинке ниже.

  • Company Name/Organization — название организации, можно не заполнять или поставить минус
  • First Name*, Last Name* — имя и фамилия, можно вписать любые
  • Country — страна, можно не заполнять или выбрать RU - Russian Federation
  • API Tier* — тарифный план сервиса, обязательно нужно выбрать Free (бесплатный)
  • API Usage Purpose* — для чего мы будем использовать сервис, нужно выбрать Personal Use (для собственного использования)

После заполнения формы нажимаем на кнопку Proceed to Dashboard. После этого открывается страница с ключом доступа

В нашем случае наш ключ доступа это 341182dee74d4049a0dc5470919e39fa, он будет другим. Этот ключ самое важное, то для чего мы проходили регистрацию. Этот ключ нужно будет использовать в каждом запросе к сервису.

Схема эксперимента

Схема отсутствует.

Программный код эксперимента

Exp69.py
  1. from machine import Pin
  2. import network
  3. import gc
  4. import time
  5. import socket
  6. import json
  7.  
  8. _init()
  9. gc.collect()
  10.  
  11.  
  12. wlan_id = "WiFi_name"
  13. wlan_pass = "WiFi_pass"
  14.  
  15.  
  16. wlan = network.WLAN(network.STA_IF)
  17. wlan.active(True)
  18. wlan.connect(wlan_id, wlan_pass)
  19. time.sleep(1)
  20.  
  21.  
  22. while wlan.isconnected() == False:
  23. pass
  24.  
  25. print('Device IP:', wlan.ifconfig()[0])
  26.  
  27.  
  28.  
  29. def http_get(url, port=80):
  30. _, _, host, path = url.split('/', 3)
  31. addr = socket.getaddrinfo(host, port)[0][-1]
  32.  
  33. s = socket.socket()
  34. s.connect(addr)
  35. s.send(bytes('GET /%s HTTP/1.0\r\nHost: %s\r\n\r\n' % (path, host), 'utf8'))
  36.  
  37. text = ''
  38.  
  39. while True:
  40. data = s.recv(100)
  41. if data:
  42. text += str(data, 'utf8')
  43. pass
  44. else:
  45. a = text.split('\r\n\r\n', 2)[1]
  46. return a
  47. break
  48.  
  49.  
  50. apiKey = 'YourApiKey'
  51. cityName = 'Moscow,RU'
  52.  
  53. json_data = http_get('http://api.weatherbit.io/v2.0/current?city=' + cityName + '&key=' + apiKey)
  54. data = json.loads(json_data)
  55. print(data)
  56. print(data['data'][0]['temp'])

В коде необходимо заменить

  • WiFi_name нужно заменить на имя WifI сети
  • WiFi_pass нужно заменить на пароль от нее
  • YourApiKey нужно заменить на ключ доступа, который мы получили в сервисе weatherbit.io после регистрации