ESP8266 + DHT11 AWS IOT Thing не обновляет thing shadow - работал раньше
Мне удалось заставить это работать ... https://www.youtube.com/watch?v=8hpro1olRK0 - отправьте SMS и электронную почту с данными о температуре и влажности от AWS IOT с помощью esp8266 + dht11, но внезапно он перестал обновлять тень.
Вот код
#include <ESP8266WiFi.h>
#include <DHT11.h>
#include <AmazonIOTClient.h>
#include <ESP8266AWSImplementations.h>
Esp8266HttpClient httpClient;
Esp8266DateTimeProvider dateTimeProvider;
AmazonIOTClient iotClient;
ActionError actionError;
const char* ssid = "";
const char* password = "";
// Pin 2 will be used to read sensor data
int pin = 2;
// Initializing the sensor
DHT11 dht11(pin);
//Function to convert Celsius to Fahrenheit
double Fahrenheit(double celsius) {
return ((celsius * 9 / 5) + 32);
}
void setup() {
Serial.begin(115200);
delay(10);
Serial.println();
// Connecting to Wi-Fi
WiFi.mode(WIFI_STA);
Serial.println();
Serial.println();
Serial.println("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
iotClient.setAWSRegion("us-west-2");
iotClient.setAWSEndpoint("amazonaws.com");
iotClient.setAWSDomain("al1x5kb4rzh0x.iot.us-west-2.amazonaws.com");
iotClient.setAWSPath("$aws/things/esp8266/shadow/update/accepted");
iotClient.setAWSKeyID("AKIAJJQ6ASLIDIPBE4PQ");
iotClient.setAWSSecretKey("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");
iotClient.setHttpClient(&httpClient);
iotClient.setDateTimeProvider(&dateTimeProvider);
}
void loop() {
int err;
float temp, humi;
//Reading the sensor data
if ((err = dht11.read(humi, temp)) == 0) {
Serial.print(" temperature:");
Serial.print(temp);
Serial.print(" humidity:");
Serial.print(humi);
Serial.println();
} else {
Serial.println();
Serial.print(" Error No :");
Serial.print(err);
Serial.println();
}
// Converting the float data to char arrays
char sTemp[10], sHumi[10];
dtostrf(humi, 6, 2, sHumi);
dtostrf(temp, 6, 2, sTemp);
// Creating the thing shadow to be sent to aws iot
char shadow[100];
strcpy(shadow, "{\"state\":{\"reported\": {\"Humidity\":");
strcat(shadow, sHumi);
strcat(shadow, ", \"Temperature\":");
strcat(shadow, sTemp);
strcat(shadow, "}}}");
Serial.print(shadow);
char* result = iotClient.update_shadow(shadow, actionError);
Serial.print(result);
delay(60000);
}
Результат как и ожидалось
Connecting to
NETGEAR53
.........
WiFi connected
temperature:31.00 humidity:32.00
{"state":{"reported": {"Humidity": 32.00, "Temperature": 31.00}}}al1x5kb4rzh0x.iot.us-west-2.amazonaws.com
443
POST $aws/things/esp8266/shadow/update/accepted HTTP/1.1
Content-Type: application/json
Connection: close
Content-Length: 65
Host: al1x5kb4rzh0x.iot.us-west-2.amazonaws.com
x-amz-content-sha256: 923ed1ae613a9e14b45e4d080b092daf5cf61118041dc5225956299d5b0f8d49
x-amz-date: 20180323T034259Z
Authorization: AWS4-HMAC-SHA256 Credential=AKIAJJQ6ASLIDIPBE4PQ/20180323/us-west-2/iotdata/aws4_request,SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date,Signature=a10f0969043e609743412478567c10290b8c000185f2824e4a9cf07bb96cf279
{"state":{"reported": {"Humidity": 32.00, "Temperature": 31.00}}}
2 ответа
Я столкнулся с аналогичной проблемой: безуспешно пытался обновить тень вещи в IoT AWS. После некоторых исследований я обнаружил, что использую устаревшую библиотеку. В этом вопросе они советуют использовать aws-sdk-arduino
от heskew в ветке iot-get-shadow и очистки
:
https://github.com/heskew/aws-sdk-arduino/tree/iot-get-shadow-and-cleanup.
Кроме того, я думаю, что в вашем коде есть небольшая ошибка. Насколько я знаю, AWSPath
, это должно выглядеть так:
iotClient.setAWSPath("/things/esp8266/shadow");
По крайней мере, это работает для меня, и они используют это таким образом в этом видео.
Это все, что я могу сказать... Я тоже учусь в этот момент. Надеюсь, это поможет!!
Большое вам спасибо за ваш ответ, очень ценю это. Мое имя на самом деле ESP, поэтому я установил его как ---iotClient.setAWSPath("/вещи/ESP/тень");--- или это должно быть только esp8266? я удалил старые библиотеки и использовал вышеприведенную, но все равно моя тень не обновляется. Пожалуйста, помогите. Другой пример видео, на которое вы ссылались, - это тоже не работает, @Susindran Srinivasan
https://arduinoprosto.ru/q/51059/esp8266-dht11-aws-iot-thing-not-updating-thing-shadow-was-working-before, @Susindran Srinivasan
Просто измените тему Aws : это должно быть $aws/вещи/esp8266/тень/обновление
и вам также нужно добавить путь к сертификату
- Простой запрос GET с ESP8266HTTPClient
- Чтение данных из Google Таблиц с помощью Nodemcu
- NodeMCU ESP8266 отключился от WiFi после нескольких часов работы
- ESP8266 отключается через несколько часов
- esp32 http client response только 200 не получил данные после этого
- Скетч Arduino для NodeMCU v1.0 (ESP8266-12E) не имеет ошибок при компиляции, но не запускается на плате NodeMCU v1.0 (ESP8266-12E)
- Как связать MPU9250 и NodeMcu?
- ESP8266 отправляет данные на сайт, но не возвращает статус
#включить<ESP8266WiFi.h> #включить<DHT11.h> #включить<AmazonIOTClient.h> #включить<ESP8266AWSImplementations.h> Esp8266HttpClient HttpClient; Esp8266DateTimeProvider dateTimeProvider; AmazonIOTClient iotClient; ActionError actionError;, @Susindran Srinivasan
Небольшая коррекция на выходе, иногда она идеальна, но иногда я получаю тайм-аут приема данных сервера времени {"состояние":{"отчет": {"Влажность": 41.00, "Температура": 31.00}}}al1x5kb4rzh0x.iot.us-west-2.amazonaws.com 443 POST /things/ESP/shadow HTTP/1.1 ------------------------ {"состояние":{"отчет": {"Влажность": 41.00, "Температура": 31.00}}}тайм-аут приема данных сервера времени, @Susindran Srinivasan
Я также сталкиваюсь с той же проблемой, и все же я не получил никакого ответа...в настоящее время я также работаю над этим, @Soumen Nayak
Кто-нибудь смог это решить? У меня та же проблема, @David Glass
Я планирую попробовать очистить библиотеки AWSiot, которые работали в прошлый раз, но сейчас для меня работает только одно устройство. Возможно, я мог бы попробовать другой набор кода. Пожалуйста, поделитесь своим кодом, ребята - я постараюсь помочь. Также я пробую разные ключи AWS., @Susindran Srinivasan
Пожалуйста, опубликуйте библиотеки aws iot, которые вы используете. Ot уверен, что изменилось, но ничего не работает и тень вещи не обновляется, @Susindran Srinivasan