Bueno, finalmente lo he conseguido: pegar el programa + “Preformatted text”.
Este es el sketch de la Méteo1, la que anda loca:
#define _DEBUG_ //Imprimeix, a serial, l'estat de la connexió WiFi
#define _DISABLE_TLS_ //Imprimeix, a serial, l'estat de la connexió WiFi
#include <ESP8266WiFi.h> //Librería de conexión WiFi del módulo ESP8266
#include <ThingerESP8266.h> //Librería de la plataforma thinger.io
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
// Assignar pins ESP8266 a pins arduino
#define D1 5
#define D2 4
#define D4 2
#define D3 0
// Assignar SPI als pins
#define BME_SCK D1 //SCL BME280
#define BME_MOSI D2 //SDA BME280
#define BME_CS D3 //SCB BME280
#define BME_MISO D4 //SD0 BME280
#define SEALEVELPRESSURE_HPA (1013.25) //Pressió aproximada. Es pot modificar
//Adafruit_BME280 bme(BME_CS); // hardware SPI
Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); //Programari SPI
unsigned long delayTime;
//Paràmetres del connexió thinger.io
#define username "jaume"
#define deviceId "BME280"
#define deviceCredentials "jmnnfrr"
ThingerESP8266 thing (username, deviceId, deviceCredentials);
//Paràmetres de connexió WiFi
const char WiFi_ssid[] = "XXXXXXXXXX"; //Nom real de xarxa: WIFI_5G_PtG4
const char WiFi_password[] = "XXXXXX"; //Clau de xarxa WiFi
//Gestió de decimals a la impressió de Thinger
float round_to_dp( float in_value, int decimal_place )
{
float multiplier = powf( 10.0f, decimal_place );
in_value = roundf( in_value * multiplier ) / multiplier;
return in_value;
}
void setup()
{
Serial.begin (115200); //Obre connexió amb serial
Serial.println (F ("BME280 test"));
bool status;
// Configuració per defecte
status = bme.begin();
if (!status)
{
Serial.println ("No es troba el sensor BME280. Verificar cablejat!");
while (1);
}
Serial.println ("-- Sensor funcionant --");
delay (1000); //Velocitat a la que imprimeix a serial////////////////////
Serial.println();
thing.add_wifi (WiFi_ssid, WiFi_password); //Inicialització WiFi per comunicar-se amb l'API
thing["BME280"] >> [](pson& out) //Inicializació de la lectura de dades des de l'API
{
out ["1 Temperatura"] = round_to_dp(bme.readTemperature() / 1.09, 2); //*4*
out ["2 Humitat"] = round_to_dp (bme.readHumidity() / 0.77, 2); //*4*
out ["3 Pressio"] = round_to_dp (bme.readPressure() / 99.76, 2); //*4* i *5*
out ["4 Index calor"] = round_to_dp (0.63 * (bme.readTemperature() + 61.0 + ((bme.readTemperature() - 68.0) * 1.32) + (bme.readHumidity() * 0.094)),2); //*4* i *5*
out ["5 Punt rosada"] = round_to_dp((bme.readTemperature() - ((100-bme.readHumidity()) /5)),2);
};
}
void loop()
{
thing.handle();
}
Y este segundo es el de la Méteo2, la que duerme 1h, despierta, envía datos con 3 minutos de retaso cada vez. Pero a parte del retraso, este funciona correctamente:
#define _DEBUG_ //Imprimeix, a serial, l'estat de la connexió WiFi
#define _DISABLE_TLS_ //Imprimeix, a serial, l'estat de la connexió WiFi
#include <ESP8266WiFi.h> //Librería de conexión WiFi del módulo ESP8266
#include <ThingerESP8266.h> //Librería de la plataforma thinger.io
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
// Assignar pins ESP8266 a pins arduino
#define D1 5
#define D2 4
#define D4 2
#define D3 0
// Assignar SPI als pins
#define BME_SCK D1 //SCL BME280
#define BME_MOSI D2 //SDA BME280
#define BME_CS D3 //SCB BME280
#define BME_MISO D4 //SD0 BME280
#define SEALEVELPRESSURE_HPA (1013.25) //Pressió aproximada. Es pot modificar
Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); //Programari SPI
unsigned long delayTime;
int t = 0; //Per regulació horaria
//Paràmetres del connexió thinger.io
#define username "loko"
#define deviceId "WEMOSV4"
#define deviceCredentials "jmnnfrr1955"
ThingerESP8266 thing (username, deviceId, deviceCredentials);
//Paràmetres de connexió WiFi
const char WiFi_ssid[] = "MIWIFI_2G_PtG4"; //Nom real de xarxa: WIFI_5G_PtG4
const char WiFi_password[] = "sh96xFX2"; //Clau de xarxa WiFi
//Gestió de decimals a la impressió de Thinger
float round_to_dp( float in_value, int decimal_place )
{
float multiplier = powf( 10.0f, decimal_place );
in_value = roundf( in_value * multiplier ) / multiplier;
return in_value;
}
void setup()
{
Serial.begin (115200); //Obre connexió amb serial
Serial.println (F ("BME280 test"));
bool status;
// Configuració per defecte
status = bme.begin();
if (!status)
{
Serial.println ("No es troba el sensor BME280. Verificar cablejat!");
while (1);
}
Serial.println ("-- Sensor funcionant --");
delay (1000); //Velocitat a la que imprimeix a serial////////////////////
Serial.println();
thing.add_wifi (WiFi_ssid, WiFi_password); //Inicialització WiFi per comunicar-se amb l'API
thing["WEMOSV4"] >> [](pson & out) //Inicializació de la lectura de dades des de l'API
{
out ["1 Temperatura"] = round_to_dp(bme.readTemperature() / 1.09, 2); //*4*
out ["2 Humitat"] = round_to_dp (bme.readHumidity() / 0.77, 2); //*4*
out ["3 Pressio"] = round_to_dp (bme.readPressure() / 99.76, 2); //*4* i *5*
out ["4 Index calor"] = round_to_dp (0.63 * (bme.readTemperature() + 61.0 + ((bme.readTemperature() - 68.0) * 1.32) + (bme.readHumidity() * 0.094)), 2); //*4* i *5*
out ["5 Punt rosada"] = round_to_dp((bme.readTemperature() - ((100 - bme.readHumidity()) / 5)), 2);
// t++; //Referent a instruccions hivernació
};
}
void loop()
{
thing.handle();
/*
if(!t) //Si la connexió s'ha creat i el recurs s'ha enviat correctament, t == 1
{
thing.write_bucket ("WEMOSV4","WEMOSV4"); //Trucant al bucket
delay (5000); //Mil·lisegons
ESP.deepSleep (3600000000, WAKE_RF_DEFAULT ); //Microsegundos
}
}
Ahora sí…