mirror of
https://github.com/anklimov/lighthub
synced 2025-12-06 11:49:51 +03:00
domoticz dht22 support
This commit is contained in:
@@ -20,10 +20,11 @@ e-mail anklimov@gmail.com
|
|||||||
|
|
||||||
#include "inputs.h"
|
#include "inputs.h"
|
||||||
#include "item.h"
|
#include "item.h"
|
||||||
|
#include "utils.h"
|
||||||
#include <PubSubClient.h>
|
#include <PubSubClient.h>
|
||||||
|
|
||||||
#ifndef DHT_DISABLE
|
#ifndef DHT_DISABLE
|
||||||
#if defined(ESP8266) || defined(ARDUINO_ARCH_ESP32)
|
#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
|
||||||
#include <DHTesp.h>
|
#include <DHTesp.h>
|
||||||
#else
|
#else
|
||||||
#include "DHT.h"
|
#include "DHT.h"
|
||||||
@@ -149,7 +150,7 @@ void Input::counterPoll() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
long counterValue = counter_value[pin];
|
long counterValue = counter_value[pin];
|
||||||
Serial.print(F("IN:"));Serial.print(pin);Serial.print(F(" Counter type. val="));Serial.print(counterValue);
|
debugSerial<<F("IN:")<<(pin)<<F(" Counter type. val=")<<counterValue;
|
||||||
|
|
||||||
aJsonObject *emit = aJson.getObjectItem(inputObj, "emit");
|
aJsonObject *emit = aJson.getObjectItem(inputObj, "emit");
|
||||||
if (emit) {
|
if (emit) {
|
||||||
@@ -159,10 +160,10 @@ void Input::counterPoll() {
|
|||||||
sprintf(valstr, "%d", counterValue);
|
sprintf(valstr, "%d", counterValue);
|
||||||
mqttClient.publish(addrstr, valstr);
|
mqttClient.publish(addrstr, valstr);
|
||||||
setNextPollTime(millis() + DHT_POLL_DELAY_DEFAULT);
|
setNextPollTime(millis() + DHT_POLL_DELAY_DEFAULT);
|
||||||
Serial.print(F(" NextPollMillis="));Serial.println(nextPollTime());
|
debugSerial<<F(" NextPollMillis=")<<nextPollTime();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Serial.print(F(" No emit data!"));
|
debugSerial<<F(" No emit data!");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Input::attachInterruptPinIrq(int realPin, int irq) {
|
void Input::attachInterruptPinIrq(int realPin, int irq) {
|
||||||
@@ -207,24 +208,27 @@ void Input::dht22Poll() {
|
|||||||
DHTesp dhtSensor;
|
DHTesp dhtSensor;
|
||||||
dhtSensor.setup(pin, DHTesp::DHT22);
|
dhtSensor.setup(pin, DHTesp::DHT22);
|
||||||
TempAndHumidity dhtSensorData = dhtSensor.getTempAndHumidity();
|
TempAndHumidity dhtSensorData = dhtSensor.getTempAndHumidity();
|
||||||
float temp = dhtSensorData.temperature;
|
float temp = roundf(dhtSensorData.temperature*10)/10;
|
||||||
float humidity = dhtSensorData.humidity;
|
float humidity = roundf(dhtSensorData.humidity);
|
||||||
#else
|
#else
|
||||||
DHT dht(pin, DHT22);
|
DHT dht(pin, DHT22);
|
||||||
float temp = dht.readTemperature();
|
float temp = dht.readTemperature();
|
||||||
float humidity = dht.readHumidity();
|
float humidity = dht.readHumidity();
|
||||||
#endif
|
#endif
|
||||||
aJsonObject *emit = aJson.getObjectItem(inputObj, "emit");
|
aJsonObject *emit = aJson.getObjectItem(inputObj, "emit");
|
||||||
Serial.print(F("IN:"));
|
aJsonObject *idx = aJson.getObjectItem(inputObj, "idx");
|
||||||
Serial.print(pin);
|
debugSerial<<F("IN:")<<pin<<F(" DHT22 type. T=")<<temp<<F("°C H=")<<humidity<<F("%");
|
||||||
Serial.print(F(" DHT22 type. T="));
|
|
||||||
Serial.print(temp);
|
|
||||||
Serial.print(F("°C H="));
|
|
||||||
Serial.print(humidity);
|
|
||||||
Serial.print(F("%"));
|
|
||||||
if (emit && temp && humidity && temp == temp && humidity == humidity) {
|
if (emit && temp && humidity && temp == temp && humidity == humidity) {
|
||||||
char valstr[10];
|
|
||||||
char addrstr[100] = "";
|
char addrstr[100] = "";
|
||||||
|
if(idx&&idx->valuestring){//DOMOTICZ json format support
|
||||||
|
debugSerial<<endl<<idx->valuestring<<F(" Domoticz valstr:");
|
||||||
|
char valstr[80];
|
||||||
|
sprintf( valstr, "{\"command\":\"udevice\",\"idx\":%s,\"svalue\":\"%.1f;%.0f;0\"}",idx->valuestring,temp,humidity);
|
||||||
|
debugSerial<<valstr;
|
||||||
|
mqttClient.publish(emit->valuestring, valstr);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
char valstr[10];
|
||||||
strcat(addrstr, emit->valuestring);
|
strcat(addrstr, emit->valuestring);
|
||||||
strcat(addrstr, "T");
|
strcat(addrstr, "T");
|
||||||
printFloatValueToStr(temp, valstr);
|
printFloatValueToStr(temp, valstr);
|
||||||
@@ -232,9 +236,10 @@ void Input::dht22Poll() {
|
|||||||
addrstr[strlen(addrstr) - 1] = 'H';
|
addrstr[strlen(addrstr) - 1] = 'H';
|
||||||
printFloatValueToStr(humidity, valstr);
|
printFloatValueToStr(humidity, valstr);
|
||||||
mqttClient.publish(addrstr, valstr);
|
mqttClient.publish(addrstr, valstr);
|
||||||
|
}
|
||||||
|
|
||||||
setNextPollTime(millis() + DHT_POLL_DELAY_DEFAULT);
|
setNextPollTime(millis() + DHT_POLL_DELAY_DEFAULT);
|
||||||
Serial.print(" NextPollMillis=");
|
debugSerial<<" NextPollMillis="<<nextPollTime()<<endl;
|
||||||
Serial.println(nextPollTime());
|
|
||||||
} else
|
} else
|
||||||
setNextPollTime(millis() + DHT_POLL_DELAY_DEFAULT / 3);
|
setNextPollTime(millis() + DHT_POLL_DELAY_DEFAULT / 3);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -68,12 +68,7 @@ PWM Out
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#ifdef WITH_STREAMING_LIB
|
|
||||||
#include "Streaming.h"
|
|
||||||
#else
|
|
||||||
#include "PrintEx.h"
|
|
||||||
using namespace ios;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(__SAM3X8E__)
|
#if defined(__SAM3X8E__)
|
||||||
|
|||||||
@@ -24,6 +24,12 @@ e-mail anklimov@gmail.com
|
|||||||
#define VAR_NAME_VALUE(var) #var "=" VALUE(var)
|
#define VAR_NAME_VALUE(var) #var "=" VALUE(var)
|
||||||
|
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
#ifdef WITH_STREAMING_LIB
|
||||||
|
#include "Streaming.h"
|
||||||
|
#else
|
||||||
|
#include "PrintEx.h"
|
||||||
|
using namespace ios;
|
||||||
|
#endif
|
||||||
|
|
||||||
void PrintBytes(uint8_t* addr, uint8_t count, bool newline);
|
void PrintBytes(uint8_t* addr, uint8_t count, bool newline);
|
||||||
void SetBytes(uint8_t* addr, uint8_t count, char * out);
|
void SetBytes(uint8_t* addr, uint8_t count, char * out);
|
||||||
|
|||||||
2
mosquitto_examples.sh
Normal file
2
mosquitto_examples.sh
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
mosquitto_pub -t 'domoticz/in' -h broker_url -p port -u user -P pass -m '{"command": "udevice", "idx": 20, "svalue": "15"}'
|
||||||
@@ -11,9 +11,9 @@
|
|||||||
src_dir = lighthub
|
src_dir = lighthub
|
||||||
env_default =
|
env_default =
|
||||||
; megaatmega2560
|
; megaatmega2560
|
||||||
megaatmega2560-net
|
; megaatmega2560-net
|
||||||
; due
|
; due
|
||||||
; esp8266
|
esp8266
|
||||||
; esp32
|
; esp32
|
||||||
; megaatmega2560-5500
|
; megaatmega2560-5500
|
||||||
; due-5500
|
; due-5500
|
||||||
|
|||||||
Reference in New Issue
Block a user