Files
Arduino/ESP8266_DOMOTICZ/ESP8266_DOMOTICZ.ino
Jérôme Delacotte 7b30d6e298 first commit
2025-03-06 11:15:32 +01:00

117 lines
2.9 KiB
C++
Executable File

//extern "C" {
// #include "user_interface.h"
//}
#include <Wire.h>
#include <WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
const char* ssid = "Livebox-37cc";
const char* password = "8A6060920A8A86896F770F2C47";
const int sleepTime = 60; //Power down WiFi for 6 seconds
// int status = WL_IDLE_STATUS; // the Wifi radio's status
WiFiClient client;
// Dallas
#define ONE_WIRE_BUS 2 // DS18B20 pin
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
// domoticz
const char * domoticz_server = "192.168.0.10"; //Domoticz port
int port = 8080; //Domoticz port
int idx = 658; //IDX for this virtual sensor, found in Setup -> Devices
float humidity = 0;
float temp = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
initWifi();
readTemp();
printInfo();
//delay(60000); // Wait 60 seconds
//wifi_set_sleep_type(LIGHT_SLEEP_T);
sleepWifi();
//WiFi.disconnect();
//delay(30000);
}
void readTemp()
{
//DS18B20.begin();
DS18B20.requestTemperatures();
temp = DS18B20.getTempCByIndex(0);
Serial.print("Temperature: ");
Serial.println(temp);
}
void sleepWifi()
{
//Time to let the WiFi go to sleep!
Serial.println("Sleeping...");
WiFi.disconnect();
WiFi.mode(WIFI_OFF);
WiFi.forceSleepBegin(sleepTime * 1000000L); //In uS. Must be same length as your delay
delay(sleepTime * 1000); //Hang out at 15mA for 6 seconds
WiFi.mode(WIFI_STA);
Serial.println("Awake!");
}
void initWifi()
{
WiFi.mode(WIFI_AP);
WiFi.begin(ssid, password); //Connect to local Wifi
Serial.println();
Serial.print("Connecting to WiFi");
while(WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
Serial.println("WiFi Connected!");
}
void getWeather()
{
// Measure Relative Humidity from the HTU21D or Si7021
humidity = 65; //sensor.getRH();
// Measure Temperature from the HTU21D or Si7021
temp = 24; //sensor.getTemp();
// Temperature is measured every time RH is requested. It is faster, therefore, to read it from previous RH measurement with getTemp() instead with readTemp()
}
void printInfo()
{
// Domoticz format /json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=TEMP;HUM;HUM_STAT
if (client.connect(domoticz_server,port)) {
client.print("GET /json.htm?type=command&param=udevice&idx=");
client.print(idx);
client.print("&nvalue=0&svalue=");
client.print(temp);
client.print(";");
client.print(humidity);
client.print(";0"); //Value for HUM_STAT. Can be one of: 0=Normal, 1=Comfortable, 2=Dry, 3=Wet
client.println(" HTTP/1.1");
client.print("Host: ");
client.print(domoticz_server);
client.print(":");
client.println(port);
client.println("User-Agent: Arduino-ethernet");
client.println("Connection: close");
client.println();
client.stop();
}
}