En este artículo voy a explicar como controlar un led desde Home Assistant utilizando un dispositivo con ESPHome instalado.
viernes, 6 de octubre de 2023
ESPHome: Control de un led
jueves, 13 de enero de 2022
ESPHome: Medida de temperatura y humedad.
En este artículo voy a configurar el ESP2866 en el que realizamos la configuración inicial en el anterior artículo con un módulo DHT11 para mediar la temperatura y la humedad y mostrar los resultados en Home Assistant.
En la web de ESPHome nos viene información de cómo configurar los sensores de temperatura y humedad DHT. En el se explica como conectar el sensor y las variables que podemos programar. El esquema sería el siguiente:
ESPHome: Configuración inicial de un dispositivo
En este artículo voy a describir como emparejar nuestro primer dispositivo ESP con ESPHome y Home Assistant. Este primer dispositivo será un módulo ESP8266.
Si hemos configurado que se muestre ESPHome en el menú lateral o desde Configuración - Complementos, Copias de seguridad y Supervisor - ESPHome - Abrir la interfaz web podemos añadir un nuevo dispositivo.
lunes, 3 de enero de 2022
Duino-Coin: Minado con ESP8266
En este artículo voy a describir cómo se realiza el minado de la criptomoneda Duino-Coin utilizando una tarjeta ESP8266. Este dispositivo tiene una potencia superior a un Arduino UNO pero, como veremos más adelante, eso no significa que sea más eficiente minando DUCOs.
lunes, 27 de febrero de 2017
DoITCar Kit - Programación con Arduino
sábado, 11 de febrero de 2017
Proyecto DoitCar kit
domingo, 5 de febrero de 2017
EMC - Índice de artículos
sábado, 4 de febrero de 2017
Interacción con ESP8266 a través de thinger.io
sábado, 28 de enero de 2017
Modo deep-sleep en ESP8266
sábado, 14 de enero de 2017
Stream de datos con thinger.io
domingo, 8 de enero de 2017
Almacenamiento de datos en thinger.io
martes, 27 de diciembre de 2016
Integración de Blynk con la Estación Meteorológica Casera
lunes, 26 de diciembre de 2016
Introducción a Blynk
domingo, 18 de diciembre de 2016
Estación meteorológica casera
El esquema es el siguiente:
domingo, 11 de diciembre de 2016
Introducción a thinger.io
viernes, 9 de diciembre de 2016
Diodos LED RGB
miércoles, 7 de diciembre de 2016
NodeMCU dev kit v3 de LoLin
sábado, 3 de diciembre de 2016
Sensor de presión atmosférica BMP180

miércoles, 30 de noviembre de 2016
Medida de Temperatura/Humedad y publicación en Thingspeak
Yo dispongo de este módulo que solo dispone de tres conectores pero no he encontrado su esquema:
A continuación declaramos una instancia de la librería para comunicarnos con el sensor:
SimpleDHT11 dht11;
En loop definimos dos variables tipo byte t y h:
byte t = 0;
byte h = 0;
Para leer los datos del sesor utilizamos:
dht11.read(pinDHT11, &t, &h, NULL)
y luego la mostramos por el puerto serie. El código completo es el siguiente:
#include <SimpleDHT.h>
int pinDHT11 = 16; // Puerto D0 entrada de datos
SimpleDHT11 dht11; // Modelo de sensor
void setup() {
Serial.begin(9600);
delay(500);
}
void loop() {
byte t = 0;
byte h = 0;
if (dht11.read(pinDHT11, &t, &h, NULL)) {
Serial.print("Error en la lectura.");
return;
}
// Muestra por el puerto serie las medidas obtenidas
Serial.print("Humedad relativa: ");
Serial.print((int)h);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print((int)t);
Serial.println(" *C");
//El sensor realiza la lectura cada 20 segundos
delay(20000);
}
Con este código obtenemos las siguientes lecturas:
Publicación en Thingspeak
Además, incluimos la librería ESP8266WiFi:
#include <ESP8266WiFi.h>
Definimos los valores de nuestra wifi y creamos una instancia de WiFiClient:
const char* ssid = "WLAN_E17C";
const char* password = "ced0ccb58c84e525e35f";
WiFiClient client;
Ademas definimos los valores de nuestro canal en ThingSpeak:
unsigned long myChannelNumber = NUMERO_CANAL;
const char* myWriteAPIKey = "API_kEY";
En NUMERO_CANAL y API_KEY teneis que introducir los datos de vuestro canal
En setup() establecemos la conexión wifi e inicializamos ThinkSpeak:
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { // wait for WiFi
delay(500);
Serial.print(".");
}
ThingSpeak.begin(client);
ThingSpeak.setField(1,(int)t);
ThingSpeak.setField(2,(int)h);
ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
Si solo necesitamos enviar un dato (por ejemplo la temperatura) podríamos utilizar:
ThingSpeak.writeField(myChannelNumber, 1, (int)t, myWriteAPIKey);
ThingSpeak solo acepta actualizaciones cada 15 segundas como mínimo
El código completo es el siguiente:
#include <SimpleDHT.h>
#include <ThingSpeak.h>
#include <ESP8266WiFi.h>
const char* ssid = "SSID";
const char* password = "PASSWORD";
WiFiClient client;
unsigned long myChannelNumber = NUMERO_CANAL;
const char* myWriteAPIKey = "API_KEY"; // API Key del canal
int pinDHT11 = 16; // Puerto D0 entrada de datos
SimpleDHT11 dht11;
void setup() {
Serial.begin(9600);
WiFi.mode(WIFI_STA); //Establece el módulo como cliente wifi
WiFi.disconnect(); //Se desconecta de cualquier WiFi conectado
delay(100);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { // wait for WiFi
delay(500);
Serial.print(".");
}
ThingSpeak.begin(client);
}
void loop() {
byte t = 0;
byte h = 0;
if (dht11.read(pinDHT11, &t, &h, NULL)) {
Serial.print("Error en la lectura.");
return;
}
// Muestra por el puerto serie las medidas obtenidas
Serial.print("Humedad relativa: ");
Serial.print((int)h);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print((int)t);
Serial.println(" *C");
// Envía los datos a ThinkSpeak
ThingSpeak.setField(1, (int)t);
ThingSpeak.setField(2, (int)h);
ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
delay(20000);
}
El resultado que obtenemos es el siguiente:
ESP8266 WiFi con el IDE de Arduino
Send Data to ThingSpeak with Arduino
sábado, 26 de noviembre de 2016
ESP8266: Diagnóstico WiFi y dirección MAC
#include <ESP8266WiFi.h>
void setup() {
Serial.begin(115200);
Serial.print("\nDiagnóstico...\n");
WiFi.printDiag(Serial);
Serial.println();
Serial.printf("MAC Address = %s\n", WiFi.softAPmacAddress().c_str());
}
void loop() {
}
El diagnóstico utilizan el comando WiFi.printDiag(Serial). En mi caso, me devuelve por el puerto serie:
Diagnostic...
Mode: STA+AP
PHY mode: N
Channel: 1
AP id: 0
Status: 1
Auto connect: 1
SSID (10): arduino-er
Passphrase (8): 12345678
BSSID set: 0
MAC: 18:FE:34:E0:3A:58
Mode: Nos indica el modo de funcionamiento del módulo WiFi. Puede tomar tres valores:
- STA (Station): Modo Estación o modo cliente.
- AP (Access Point): Modo punto de acceso
- STA+AP: Mixto
- WIFI_STA : Modo estación
- B: 802.11b
- G: 802.11g
- N: 802.11n
- 0 : WL_IDLE_STATUS cuando el Wi-Fi está en proceso de cambiar de estado
- 1 : WL_NO_SSID_AVAIL en caso de que el SSID configurado no pueda ser alcanzado
- 3 : WL_CONNECTED después de establecer una conexión satisfactoriamente
- 4 : WL_CONNECT_FAILED si la contraseña es incorrecta
- 6 : WL_DISCONNECTED si el módulo no está configurado en el modo de estación
SSID (n): Nos indica el nombre de la red Wifi configurada en nuestro módulo cuando se establece en modo AP. n nos indica la longitud de dicho nombre
Passphrase (n): Password configurado en el módulo wifi. n nmos indica la longitud de dicho password
BSSID set: es el identificador único de una red wifi y se forma a partir de su dirección MAC
Para obtener la dirección MAC utilizamos la instrucción WiFi.softAPmacAddress().
Fuentes:
ESP8266WiFi Library
https://es.wikipedia.org/wiki/Printf
Módulo wifi














