Plan B
La
gente que viene de sistemas embebidos siente un cierto desprecio por
ArduinoIDE debido al alto nivel de abstracción, te pasaste años
estudiando como funciona una CPU, un microcontrolador, viendo como se
configura bit a bit cada dispositivo y ArduinoIDE te lo reduce a un
.setup() y obviamente en situaciones anormales no tenés recursos y
probablemente hayas perdido el RealTime.
Se
parece al desprecio que sentimos los que venimos del otro lado al ver
como con cualquier gestor de Cloud cualquier iletrado puede armar cosas
bastante complejas, completamente inconcientes de cómo instalar y configurar un sistema operativo, base de datos, servidor de lo que sea, optimización y hardening. No importa, no quiero ninguna flame war.
Te bajás ArduinoIDE de
https://www.arduino.cc/en/software
Descomprimís:
tar -xf ../Downloads/arduino-1.8.19-linux64.tar.xz
Primero no hice el install.sh pues mirándolo por encima no parecía aportar nada, luego al ver que no aparecía el programmer en tools, ejecuté arduino-linux-setup.sh, pero no era por eso, el flash se hace directamente.
Para ejecutar:
./arduino
Hay que agregar el board con
- File
- Preferences
- Additional Boars Manager URLs:
ahí ponés
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Luego vás a
- Tools
- Board
- Board Manager
- search: esp8266
- esp8266 by ESP8266 Community
- Install
- Board
- ESP8266 Boards
- ESP Generic Module
- Port
- /dev/ttyUSB0
- Manage Libraries
- filtrar por dht
- DHT Sensor Library for ESPx
- install
Para
el DHT quise apoyarme en lo aprendido antes,
pero no me sirvió, lo que hice fue incorporar DHT Sensor Library for ESPx
Y funcionó ok con el siguiente programa, que es una mezcla entre los ejemplos:
- File
- Examples
- Examples for Generic ESP8266 Module
- ESP8266HTTPClient
- PostHTTPClient
- Examples for Custom Libraries
- DHT_sensor_library_for_ESPxDHT_ESP8266
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include "DHTesp.h"
#include <ESP8266HTTPClient.h>
#include "DHTesp.h"
#define DEVICE_ID "61"
#define SERVER_IP "192.168.0.100:8080"
#define STASSID "" <- recordá no versionar
#define STAPSK "" <- recordá no versionar
#define SERVER_IP "192.168.0.100:8080"
#define STASSID "" <- recordá no versionar
#define STAPSK "" <- recordá no versionar
DHTesp dht;
float humidity = 0.0;
float temperature = 0.0;
void setup() {
delay(10000);
Serial.begin(115200);
Serial.println("ESP8266 DHT HTTP POST");
dht.setup(2, DHTesp::DHT11);
delay(dht.getMinimumSamplingPeriod());
Serial.println(dht.getStatusString());
humidity = dht.getHumidity();
temperature = dht.getTemperature();
Serial.print("Temperature : ");
Serial.println(temperature);
Serial.print("Humidity : ");
Serial.println(humidity);
WiFi.begin(STASSID, STAPSK);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected! IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
// wait for WiFi connection
if ((WiFi.status() == WL_CONNECTED)) {
WiFiClient client;
HTTPClient http;
Serial.print("[HTTP] begin...\n");
// configure traged server and url
http.begin(client,
"http://" SERVER_IP "/measurement"); //HTTP http.addHeader("Content-Type", "application/x-www-form-urlencoded"
);
Serial.print("[HTTP] POST...\n");
// start connection and send HTTP header and body
String post("id=");
post += DEVICE_ID;
post += "&t=";
post += temperature;
post += "&h=";
post += humidity;
int httpCode = http.POST(post);
// httpCode will be negative on error
if (httpCode > 0) {
Serial.printf("[HTTP] POST... code: %d\n", \
Serial.print("[HTTP] POST...\n");
// start connection and send HTTP header and body
String post("id=");
post += DEVICE_ID;
post += "&t=";
post += temperature;
post += "&h=";
post += humidity;
int httpCode = http.POST(post);
// httpCode will be negative on error
if (httpCode > 0) {
Serial.printf("[HTTP] POST... code: %d\n", \
httpCode);
// file found at server
if (httpCode == HTTP_CODE_OK) {
const String& payload = http.getString();
Serial.println("received payload:\n<<");
Serial.println(payload);
Serial.println(">>");
}
} else {
Serial.printf( \
// file found at server
if (httpCode == HTTP_CODE_OK) {
const String& payload = http.getString();
Serial.println("received payload:\n<<");
Serial.println(payload);
Serial.println(">>");
}
} else {
Serial.printf( \
"[HTTP] POST... failed, error: %s\n", \
http.errorToString(httpCode).c_str());
}
http.end();
}
delay(10000);
}
}
http.end();
}
delay(10000);
}
El código bastante parecido está en github en la carpeta esp8266-arduino. En esp8266 dejé la fallada con esp-idf.
Nos quedó asi:
~/esp/
/esp-idf
/esp-idf-lib
/ESP8266_RTOS_SDK
/arduino-1.8.19
/esp-idf
/esp-idf-lib
/ESP8266_RTOS_SDK
/arduino-1.8.19
/ceiot/
/esp32
/esp32c3
/esp32s2
/esp8266
/esp32
/esp32c3
/esp32s2
/esp8266
/esp8266-arduino
No hay comentarios:
Publicar un comentario