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()
в примере по ссылке выше;вот где бы вы использовали отпечаток сервера.