domoticz dht22 support

This commit is contained in:
livello
2018-10-16 11:36:59 +03:00
parent 41df3b701e
commit 2bf6050f50
5 changed files with 39 additions and 31 deletions

View File

@@ -20,10 +20,11 @@ e-mail anklimov@gmail.com
#include "inputs.h"
#include "item.h"
#include "utils.h"
#include <PubSubClient.h>
#ifndef DHT_DISABLE
#if defined(ESP8266) || defined(ARDUINO_ARCH_ESP32)
#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
#include <DHTesp.h>
#else
#include "DHT.h"
@@ -149,7 +150,7 @@ void Input::counterPoll() {
return;
}
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");
if (emit) {
@@ -159,10 +160,10 @@ void Input::counterPoll() {
sprintf(valstr, "%d", counterValue);
mqttClient.publish(addrstr, valstr);
setNextPollTime(millis() + DHT_POLL_DELAY_DEFAULT);
Serial.print(F(" NextPollMillis="));Serial.println(nextPollTime());
debugSerial<<F(" NextPollMillis=")<<nextPollTime();
}
else
Serial.print(F(" No emit data!"));
debugSerial<<F(" No emit data!");
}
void Input::attachInterruptPinIrq(int realPin, int irq) {
@@ -207,34 +208,38 @@ void Input::dht22Poll() {
DHTesp dhtSensor;
dhtSensor.setup(pin, DHTesp::DHT22);
TempAndHumidity dhtSensorData = dhtSensor.getTempAndHumidity();
float temp = dhtSensorData.temperature;
float humidity = dhtSensorData.humidity;
float temp = roundf(dhtSensorData.temperature*10)/10;
float humidity = roundf(dhtSensorData.humidity);
#else
DHT dht(pin, DHT22);
float temp = dht.readTemperature();
float humidity = dht.readHumidity();
#endif
aJsonObject *emit = aJson.getObjectItem(inputObj, "emit");
Serial.print(F("IN:"));
Serial.print(pin);
Serial.print(F(" DHT22 type. T="));
Serial.print(temp);
Serial.print(F("°C H="));
Serial.print(humidity);
Serial.print(F("%"));
aJsonObject *idx = aJson.getObjectItem(inputObj, "idx");
debugSerial<<F("IN:")<<pin<<F(" DHT22 type. T=")<<temp<<F("°C H=")<<humidity<<F("%");
if (emit && temp && humidity && temp == temp && humidity == humidity) {
char valstr[10];
char addrstr[100] = "";
strcat(addrstr, emit->valuestring);
strcat(addrstr, "T");
printFloatValueToStr(temp, valstr);
mqttClient.publish(addrstr, valstr);
addrstr[strlen(addrstr) - 1] = 'H';
printFloatValueToStr(humidity, valstr);
mqttClient.publish(addrstr, valstr);
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, "T");
printFloatValueToStr(temp, valstr);
mqttClient.publish(addrstr, valstr);
addrstr[strlen(addrstr) - 1] = 'H';
printFloatValueToStr(humidity, valstr);
mqttClient.publish(addrstr, valstr);
}
setNextPollTime(millis() + DHT_POLL_DELAY_DEFAULT);
Serial.print(" NextPollMillis=");
Serial.println(nextPollTime());
debugSerial<<" NextPollMillis="<<nextPollTime()<<endl;
} else
setNextPollTime(millis() + DHT_POLL_DELAY_DEFAULT / 3);
#endif

View File

@@ -68,12 +68,7 @@ PWM Out
#include "main.h"
#include "options.h"
#include "utils.h"
#ifdef WITH_STREAMING_LIB
#include "Streaming.h"
#else
#include "PrintEx.h"
using namespace ios;
#endif
#if defined(__SAM3X8E__)

View File

@@ -24,6 +24,12 @@ e-mail anklimov@gmail.com
#define VAR_NAME_VALUE(var) #var "=" VALUE(var)
#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 SetBytes(uint8_t* addr, uint8_t count, char * out);

2
mosquitto_examples.sh Normal file
View 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"}'

View File

@@ -11,9 +11,9 @@
src_dir = lighthub
env_default =
; megaatmega2560
megaatmega2560-net
; megaatmega2560-net
; due
; esp8266
esp8266
; esp32
; megaatmega2560-5500
; due-5500