mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 08:19:52 +03:00
use dallas sensor address as ID - #327
This commit is contained in:
29
src/ds18.cpp
29
src/ds18.cpp
@@ -97,7 +97,7 @@ void DS18::loop() {
|
||||
}
|
||||
|
||||
// return string of the device, with name and address
|
||||
char * DS18::getDeviceString(char * buffer, unsigned char index) {
|
||||
char * DS18::getDeviceType(char * buffer, unsigned char index) {
|
||||
uint8_t size = 128;
|
||||
if (index < _count) {
|
||||
unsigned char chip_id = chip(index);
|
||||
@@ -112,25 +112,22 @@ char * DS18::getDeviceString(char * buffer, unsigned char index) {
|
||||
} else {
|
||||
strlcpy(buffer, "Unknown", size);
|
||||
}
|
||||
} else {
|
||||
strlcpy(buffer, "invalid", size);
|
||||
}
|
||||
|
||||
/*
|
||||
return buffer;
|
||||
}
|
||||
|
||||
// return string of the device, with name and address
|
||||
char * DS18::getDeviceID(char * buffer, unsigned char index) {
|
||||
uint8_t size = 128;
|
||||
if (index < _count) {
|
||||
uint8_t * address = _devices[index].address;
|
||||
char a[30] = {0};
|
||||
snprintf(a,
|
||||
sizeof(a),
|
||||
" (%02X%02X%02X%02X%02X%02X%02X%02X) @ GPIO%d",
|
||||
address[0],
|
||||
address[1],
|
||||
address[2],
|
||||
address[3],
|
||||
address[4],
|
||||
address[5],
|
||||
address[6],
|
||||
address[7],
|
||||
_gpio);
|
||||
snprintf(a, sizeof(a), "%02X%02X%02X%02X%02X%02X%02X%02X", address[0], address[1], address[2], address[3], address[4], address[5], address[6], address[7]);
|
||||
|
||||
strlcat(buffer, a, size);
|
||||
*/
|
||||
strlcpy(buffer, a, size);
|
||||
} else {
|
||||
strlcpy(buffer, "invalid", size);
|
||||
}
|
||||
|
||||
@@ -39,7 +39,8 @@ class DS18 {
|
||||
void setup(uint8_t gpio, bool parasite);
|
||||
uint8_t scan();
|
||||
void loop();
|
||||
char * getDeviceString(char * s, unsigned char index);
|
||||
char * getDeviceType(char * s, unsigned char index);
|
||||
char * getDeviceID(char * buffer, unsigned char index);
|
||||
float getValue(unsigned char index);
|
||||
int16_t getRawValue(unsigned char index); // raw values, needs / 16
|
||||
|
||||
|
||||
@@ -515,12 +515,17 @@ void showInfo() {
|
||||
if (EMSESP_Settings.dallas_sensors) {
|
||||
myDebug_P(PSTR("")); // newline
|
||||
char buffer[128] = {0};
|
||||
char buffer2[128] = {0};
|
||||
char valuestr[8] = {0}; // for formatting temp
|
||||
myDebug_P(PSTR("%sExternal temperature sensors:%s"), COLOR_BOLD_ON, COLOR_BOLD_OFF);
|
||||
for (uint8_t i = 0; i < EMSESP_Settings.dallas_sensors; i++) {
|
||||
float sensorValue = ds18.getValue(i);
|
||||
if (sensorValue != DS18_DISCONNECTED) {
|
||||
myDebug_P(PSTR(" Sensor #%d %s: %s C"), i + 1, ds18.getDeviceString(buffer, i), _float_to_char(valuestr, sensorValue));
|
||||
myDebug_P(PSTR(" Sensor #%d type:%s id:%s temperature: %s C"),
|
||||
i + 1,
|
||||
ds18.getDeviceType(buffer, i),
|
||||
ds18.getDeviceID(buffer2, i),
|
||||
_float_to_char(valuestr, sensorValue));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -532,9 +537,10 @@ void showInfo() {
|
||||
void scanDallas() {
|
||||
EMSESP_Settings.dallas_sensors = ds18.scan();
|
||||
if (EMSESP_Settings.dallas_sensors) {
|
||||
char buffer[128] = {0};
|
||||
char buffer[128];
|
||||
char buffer2[128];
|
||||
for (uint8_t i = 0; i < EMSESP_Settings.dallas_sensors; i++) {
|
||||
myDebug_P(PSTR("External temperature sensor %s found"), ds18.getDeviceString(buffer, i));
|
||||
myDebug_P(PSTR("External temperature sensor type:%s id:%s found"), ds18.getDeviceType(buffer, i), ds18.getDeviceID(buffer2, i));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -554,14 +560,12 @@ void publishSensorValues() {
|
||||
JsonObject sensors = doc.to<JsonObject>();
|
||||
|
||||
bool hasdata = false;
|
||||
char label[8] = {0};
|
||||
|
||||
char buffer[128] = {0};
|
||||
// see if the sensor values have changed, if so send it on
|
||||
for (uint8_t i = 0; i < EMSESP_Settings.dallas_sensors; i++) {
|
||||
float sensorValue = ds18.getValue(i);
|
||||
if (sensorValue != DS18_DISCONNECTED) {
|
||||
sprintf(label, PAYLOAD_EXTERNAL_SENSORS, (i + 1));
|
||||
sensors[label] = sensorValue;
|
||||
sensors[ds18.getDeviceID(buffer, i)] = sensorValue;
|
||||
hasdata = true;
|
||||
}
|
||||
}
|
||||
@@ -1001,11 +1005,6 @@ bool LoadSaveCallback(MYESP_FSACTION_t action, JsonObject settings) {
|
||||
EMSESP_Settings.shower_alert = settings["shower_alert"];
|
||||
EMSESP_Settings.publish_time = settings["publish_time"] | DEFAULT_PUBLISHTIME;
|
||||
|
||||
// can't be 0 which could be the case coming from earlier builds < 1.9.5b12
|
||||
if (EMSESP_Settings.publish_time == 0) {
|
||||
EMSESP_Settings.publish_time = DEFAULT_PUBLISHTIME;
|
||||
}
|
||||
|
||||
EMSESP_Settings.listen_mode = settings["listen_mode"];
|
||||
ems_setTxDisabled(EMSESP_Settings.listen_mode);
|
||||
|
||||
@@ -1164,7 +1163,10 @@ bool SetListCallback(MYESP_FSACTION_t action, uint8_t wc, const char * setting,
|
||||
myDebug_P(PSTR(" %d = %s"), (it)->product_id, device_string);
|
||||
}
|
||||
}
|
||||
myDebug_P("");
|
||||
myDebug_P(PSTR("Usage: set master_thermostat <product id>"));
|
||||
ems_setMasterThermostat(0); // default value
|
||||
EMSESP_Settings.master_thermostat = 0; // back to default
|
||||
ok = true;
|
||||
} else if (wc == 2) {
|
||||
uint8_t pid = atoi(value);
|
||||
|
||||
@@ -1354,7 +1354,7 @@ void _process_RCPLUSStatusMessage(_EMS_RxTelegram * EMS_RxTelegram) {
|
||||
_setValue(EMS_RxTelegram, &EMS_Thermostat.hc[hc].day_mode, EMS_OFFSET_RCPLUSStatusMessage_mode, 1);
|
||||
_setValue(EMS_RxTelegram, &EMS_Thermostat.hc[hc].mode, EMS_OFFSET_RCPLUSStatusMessage_mode, 0); // bit 1, mode (auto=1 or manual=0)
|
||||
|
||||
// setpoint as in position 3 and also 6 (EMS_OFFSET_RCPLUSStatusMessage_currsetpoint). We're sticking to 3 for now.
|
||||
// setpoint is in position 3 and also 6 (EMS_OFFSET_RCPLUSStatusMessage_currsetpoint). We're sticking to 3 for now.
|
||||
// don't fetch temp if in nightmode
|
||||
if (EMS_Thermostat.hc[hc].day_mode) {
|
||||
_setValue8(EMS_RxTelegram, &EMS_Thermostat.hc[hc].setpoint_roomTemp, EMS_OFFSET_RCPLUSStatusMessage_setpoint); // convert to single byte, value is * 2
|
||||
|
||||
@@ -55,6 +55,27 @@
|
||||
|
||||
#define EMS_OFFSET_UBASetPoints_flowtemp 0 // flow temp
|
||||
|
||||
// Mixing Modules
|
||||
// MM100/MM200 (EMS Plus)
|
||||
#define EMS_TYPE_MMPLUSStatusMessage_HC1 0x01D7 // mixer status HC1
|
||||
#define EMS_TYPE_MMPLUSStatusMessage_HC2 0x01D8 // mixer status HC2
|
||||
#define EMS_TYPE_MMPLUSStatusMessage_HC3 0x01D9 // mixer status HC3
|
||||
#define EMS_TYPE_MMPLUSStatusMessage_HC4 0x01DA // mixer status HC4
|
||||
#define EMS_TYPE_MMPLUSStatusMessage_WWC1 0x0231 // mixer status WWC1
|
||||
#define EMS_TYPE_MMPLUSStatusMessage_WWC2 0x0232 // mixer status WWC2
|
||||
#define EMS_OFFSET_MMPLUSStatusMessage_flow_temp 3 // flow temperature
|
||||
#define EMS_OFFSET_MMPLUSStatusMessage_pump_mod 5 // pump modulation
|
||||
#define EMS_OFFSET_MMPLUSStatusMessage_valve_status 2 // valve in percent
|
||||
#define EMS_OFFSET_MMPLUSStatusMessage_WW_flow_temp 0 // flow temperature
|
||||
#define EMS_OFFSET_MMPLUSStatusMessage_WW_pump_mod 2 // pump on 6, off 0
|
||||
#define EMS_OFFSET_MMPLUSStatusMessage_WW_temp_status 11 // 0,1,2
|
||||
// MM10
|
||||
#define EMS_TYPE_MMStatusMessage 0xAB // mixer status
|
||||
#define EMS_OFFSET_MMStatusMessage_flow_set 0 // flow setpoint
|
||||
#define EMS_OFFSET_MMStatusMessage_flow_temp 1 // flow temperature
|
||||
#define EMS_OFFSET_MMStatusMessage_pump_mod 3 // pump modulation in percent
|
||||
#define EMS_OFFSET_MMStatusMessage_valve_status 4 // valve 0..255
|
||||
|
||||
// Solar Module
|
||||
// Assuming here that the SM200 behaves like SM100
|
||||
#define EMS_TYPE_SM10Monitor 0x97 // SM10Monitor
|
||||
@@ -62,17 +83,15 @@
|
||||
#define EMS_TYPE_SM100Status 0x0264 // SM100Status
|
||||
#define EMS_TYPE_SM100Status2 0x026A // SM100Status2
|
||||
#define EMS_TYPE_SM100Energy 0x028E // SM100Energy
|
||||
|
||||
// Heat Pump
|
||||
#define EMS_TYPE_HPMonitor1 0xE3 // HeatPump Monitor 1
|
||||
#define EMS_TYPE_HPMonitor2 0xE5 // HeatPump Monitor 2
|
||||
|
||||
|
||||
// ISPM solar module
|
||||
#define EMS_TYPE_ISM1StatusMessage 0x0003 // Solar Module Junkers ISM1 Status
|
||||
#define EMS_TYPE_ISM1Set 0x0001 // for setting values of the solar module like max boiler temp
|
||||
#define EMS_OFFSET_ISM1Set_MaxBoilerTemp 6 // position of max boiler temp e.g. 50 in the following example: 90 30 FF 06 00 01 50 (CRC=2C)
|
||||
|
||||
// Heat Pump
|
||||
#define EMS_TYPE_HPMonitor1 0xE3 // HeatPump Monitor 1
|
||||
#define EMS_TYPE_HPMonitor2 0xE5 // HeatPump Monitor 2
|
||||
|
||||
/*
|
||||
* Thermostat Types
|
||||
*/
|
||||
@@ -176,27 +195,6 @@
|
||||
#define EMS_OFFSET_JunkersSetMessage_no_frost_temp 0x0F // EMS offset to set temperature on thermostat for no frost mode
|
||||
#define EMS_OFFSET_JunkersSetMessage_set_mode 0x0E // EMS offset to set mode on thermostat
|
||||
|
||||
// MM100/MM200 (EMS Plus)
|
||||
#define EMS_TYPE_MMPLUSStatusMessage_HC1 0x01D7 // mixer status HC1
|
||||
#define EMS_TYPE_MMPLUSStatusMessage_HC2 0x01D8 // mixer status HC2
|
||||
#define EMS_TYPE_MMPLUSStatusMessage_HC3 0x01D9 // mixer status HC3
|
||||
#define EMS_TYPE_MMPLUSStatusMessage_HC4 0x01DA // mixer status HC4
|
||||
#define EMS_TYPE_MMPLUSStatusMessage_WWC1 0x0231 // mixer status WWC1
|
||||
#define EMS_TYPE_MMPLUSStatusMessage_WWC2 0x0232 // mixer status WWC2
|
||||
#define EMS_OFFSET_MMPLUSStatusMessage_flow_temp 3 // flow temperature
|
||||
#define EMS_OFFSET_MMPLUSStatusMessage_pump_mod 5 // pump modulation
|
||||
#define EMS_OFFSET_MMPLUSStatusMessage_valve_status 2 // valve in percent
|
||||
#define EMS_OFFSET_MMPLUSStatusMessage_WW_flow_temp 0 // flow temperature
|
||||
#define EMS_OFFSET_MMPLUSStatusMessage_WW_pump_mod 2 // pump on 6, off 0
|
||||
#define EMS_OFFSET_MMPLUSStatusMessage_WW_temp_status 11 // 0,1,2
|
||||
|
||||
// MM10
|
||||
#define EMS_TYPE_MMStatusMessage 0xAB // mixer status
|
||||
#define EMS_OFFSET_MMStatusMessage_flow_set 0 // flow setpoint
|
||||
#define EMS_OFFSET_MMStatusMessage_flow_temp 1 // flow temperature
|
||||
#define EMS_OFFSET_MMStatusMessage_pump_mod 3 // pump modulation in percent
|
||||
#define EMS_OFFSET_MMStatusMessage_valve_status 4 // valve 0..255
|
||||
|
||||
/*
|
||||
* Table of all known EMS Devices
|
||||
* ProductID, DeviceType, Description, Flags
|
||||
|
||||
@@ -1 +1 @@
|
||||
#define APP_VERSION "1.9.5b30"
|
||||
#define APP_VERSION "1.9.5b31"
|
||||
|
||||
Reference in New Issue
Block a user