Nest запускает свой API через HTTPS, который использует порт 443. Даже если они разрешили порт 80, вы не должны его использовать; вы будете передавать свои учетные данные или токен API в незашифрованном виде, что опасно.
Если ваш код работает на ESP8266, обязательно используйте библиотеку SSL. Недостаточно просто говорить по HTTP-протоколу с портом 443.
Вы не предоставили никакого кода, поэтому я не могу посоветовать что-то еще, но рассмотрите возможность использования класса BearSSL::WiFiClientSecure для вашего соединения.
Есть хороший пример этого на
https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266HTTPClient/examples/BasicHttpsClient/BasicHttpsClient.ino
Вам нужно знать отпечаток SSL для сервера Nest. Вы можете найти это, запустив
openssl s_client -connect api.home.nest.com:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout | cut -d'=' -f2
в окне терминала на компьютере Mac или Linux. Отпечаток пальца позволяет вашему клиенту подтвердить, что сервер является тем, за кого он себя выдает.
Когда я пишу это, отпечаток пальца в настоящее время:
DE:AA:EB:EE:C0:4B:14:97:27:C8:29:46:5C:05:44:2C:26:DE:55:6B
Имейте в виду, что это может измениться со временем (или даже в зависимости от конкретного сервера, который обрабатывает ваш запрос), поэтому вам может потребоваться это изменить. Вы можете найти строку, которая вызывает client->setFingerprint()
в примере по ссылке выше; вот где вы должны использовать отпечаток сервера.
person
romkey
schedule
10.11.2018