diff --git a/interface/src/project/DeviceIcon.tsx b/interface/src/project/DeviceIcon.tsx index 5594cdf40..347a1f1cd 100644 --- a/interface/src/project/DeviceIcon.tsx +++ b/interface/src/project/DeviceIcon.tsx @@ -9,6 +9,8 @@ import { GiHeatHaze } from 'react-icons/gi'; import { TiFlowSwitch } from 'react-icons/ti'; import { VscVmConnect } from 'react-icons/vsc'; import { AiOutlineGateway } from 'react-icons/ai'; +import { AiOutlineAlert } from 'react-icons/ai'; +import { AiOutlineChrome } from 'react-icons/ai'; interface DeviceIconProps { type: string; @@ -34,6 +36,10 @@ const DeviceIcon: FC = ({ type }) => { return ; case 'Gateway': return ; + case 'Alert': + return ; + case 'Pump': + return ; default: return null; } diff --git a/interface/src/project/types.ts b/interface/src/project/types.ts index 7bf0143c4..c4a83c384 100644 --- a/interface/src/project/types.ts +++ b/interface/src/project/types.ts @@ -192,7 +192,7 @@ export const DeviceValueUOM_s = [ 'Wh', 'hours', 'minutes', - 'uA', + 'µA', 'bar', 'kW', 'W', @@ -201,8 +201,8 @@ export const DeviceValueUOM_s = [ 'dBm', '°F', 'mV', - 'sqm', - 'm3', + 'm²', + 'm³', 'l' ]; diff --git a/src/device_library.h b/src/device_library.h index 8b04cafa3..1234245a2 100644 --- a/src/device_library.h +++ b/src/device_library.h @@ -153,8 +153,11 @@ // Switches - 0x11 { 71, DeviceType::SWITCH, "WM10", DeviceFlags::EMS_DEVICE_FLAG_NONE}, +// PM10 Pump module - 0x15 +{ 243, DeviceType::PUMP, "PM10", DeviceFlags::EMS_DEVICE_FLAG_NONE}, + // EM10 error contact and analog flowtemp control- 0x12 -{ 74, DeviceType::GATEWAY, "Error Module EM10", DeviceFlags::EMS_DEVICE_FLAG_NONE}, +{ 74, DeviceType::ALERT, "EM10", DeviceFlags::EMS_DEVICE_FLAG_NONE}, // Gateways - 0x48 {189, DeviceType::GATEWAY, "KM200/MB LAN 2", DeviceFlags::EMS_DEVICE_FLAG_NONE}, diff --git a/src/devices/alert.cpp b/src/devices/alert.cpp new file mode 100644 index 000000000..72ed0a382 --- /dev/null +++ b/src/devices/alert.cpp @@ -0,0 +1,29 @@ +/* + * EMS-ESP - https://github.com/emsesp/EMS-ESP + * Copyright 2020 Paul Derbyshire + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "alert.h" + +namespace emsesp { + +REGISTER_FACTORY(Alert, EMSdevice::DeviceType::ALERT); + +Alert::Alert(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand) + : EMSdevice(device_type, device_id, product_id, version, name, flags, brand) { +} + +} // namespace emsesp \ No newline at end of file diff --git a/src/devices/alert.h b/src/devices/alert.h new file mode 100644 index 000000000..7989e6fd6 --- /dev/null +++ b/src/devices/alert.h @@ -0,0 +1,33 @@ +/* + * EMS-ESP - https://github.com/emsesp/EMS-ESP + * Copyright 2020 Paul Derbyshire + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef EMSESP_ALERT_H +#define EMSESP_ALERT_H + +#include "emsesp.h" + +namespace emsesp { + +class Alert : public EMSdevice { + public: + Alert(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand); +}; + +} // namespace emsesp + +#endif diff --git a/src/devices/pump.cpp b/src/devices/pump.cpp new file mode 100644 index 000000000..e0a69c545 --- /dev/null +++ b/src/devices/pump.cpp @@ -0,0 +1,29 @@ +/* + * EMS-ESP - https://github.com/emsesp/EMS-ESP + * Copyright 2020 Paul Derbyshire + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "pump.h" + +namespace emsesp { + +REGISTER_FACTORY(Pump, EMSdevice::DeviceType::PUMP); + +Pump::Pump(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand) + : EMSdevice(device_type, device_id, product_id, version, name, flags, brand) { +} + +} // namespace emsesp \ No newline at end of file diff --git a/src/devices/pump.h b/src/devices/pump.h new file mode 100644 index 000000000..4b1eee247 --- /dev/null +++ b/src/devices/pump.h @@ -0,0 +1,33 @@ +/* + * EMS-ESP - https://github.com/emsesp/EMS-ESP + * Copyright 2020 Paul Derbyshire + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef EMSESP_PUMP_H +#define EMSESP_PUMP_H + +#include "emsesp.h" + +namespace emsesp { + +class Pump : public EMSdevice { + public: + Pump(uint8_t device_type, uint8_t device_id, uint8_t product_id, const char * version, const char * name, uint8_t flags, uint8_t brand); +}; + +} // namespace emsesp + +#endif diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index a7711a36b..0184f2ffa 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -56,6 +56,17 @@ std::string EMSdevice::uom_to_string(uint8_t uom) { if (EMSESP::system_.fahrenheit() && (uom == DeviceValueUOM::DEGREES || uom == DeviceValueUOM::DEGREES_R)) { return (DeviceValue::DeviceValueUOM_s[DeviceValueUOM::FAHRENHEIT]); } + /* translate times? https://github.com/emsesp/EMS-ESP32/issues/752 + if (uom == DeviceValueUOM::HOURS) { + return (Helpers::translated_word(FL_(hours))); + } + if (uom == DeviceValueUOM::MINUTES) { + return (Helpers::translated_word(FL_(minutes))); + } + if (uom == DeviceValueUOM::SECONDS) { + return (Helpers::translated_word(FL_(seconds))); + } + */ return (DeviceValue::DeviceValueUOM_s[uom]); } @@ -107,6 +118,10 @@ const char * EMSdevice::device_type_2_device_name(const uint8_t device_type) { return F_(switch); case DeviceType::GATEWAY: return F_(gateway); + case DeviceType::ALERT: + return F_(alert); + case DeviceType::PUMP: + return F_(pump); default: return Helpers::translated_word(FL_(unknown)); } @@ -128,42 +143,39 @@ uint8_t EMSdevice::device_name_2_device_type(const char * topic) { if (!strcmp(lowtopic, F_(boiler))) { return DeviceType::BOILER; } - if (!strcmp(lowtopic, F_(thermostat))) { return DeviceType::THERMOSTAT; } - if (!strcmp(lowtopic, F_(system))) { return DeviceType::SYSTEM; } - if (!strcmp(lowtopic, F_(heatpump))) { return DeviceType::HEATPUMP; } - if (!strcmp(lowtopic, F_(solar))) { return DeviceType::SOLAR; } - if (!strcmp(lowtopic, F_(mixer))) { return DeviceType::MIXER; } - if (!strcmp(lowtopic, F_(dallassensor))) { return DeviceType::DALLASSENSOR; } - if (!strcmp(lowtopic, F_(analogsensor))) { return DeviceType::ANALOGSENSOR; } - if (!strcmp(lowtopic, F_(switch))) { return DeviceType::SWITCH; } - if (!strcmp(lowtopic, F_(gateway))) { return DeviceType::GATEWAY; } + if (!strcmp(lowtopic, F_(alert))) { + return DeviceType::ALERT; + } + if (!strcmp(lowtopic, F_(pump))) { + return DeviceType::PUMP; + } return DeviceType::UNKNOWN; } diff --git a/src/emsdevice.h b/src/emsdevice.h index 9268d8aa2..49c54e7fc 100644 --- a/src/emsdevice.h +++ b/src/emsdevice.h @@ -338,6 +338,8 @@ class EMSdevice { SWITCH, CONTROLLER, CONNECT, + ALERT, + PUMP, GENERIC, UNKNOWN }; diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 9b8bef5df..5690fc264 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -416,7 +416,7 @@ void EMSESP::publish_all(bool force) { publish_device_values(EMSdevice::DeviceType::THERMOSTAT); publish_device_values(EMSdevice::DeviceType::SOLAR); publish_device_values(EMSdevice::DeviceType::MIXER); - publish_other_values(); // switch and heat pump + publish_other_values(); // switch and heat pump, ... publish_sensor_values(true); // includes dallas and analog sensors system_.send_heartbeat(); } @@ -546,6 +546,12 @@ void EMSESP::publish_device_values(uint8_t device_type) { void EMSESP::publish_other_values() { publish_device_values(EMSdevice::DeviceType::SWITCH); publish_device_values(EMSdevice::DeviceType::HEATPUMP); + // other devices without values yet + // publish_device_values(EMSdevice::DeviceType::GATEWAY); + // publish_device_values(EMSdevice::DeviceType::CONNECT); + // publish_device_values(EMSdevice::DeviceType::ALERT); + // publish_device_values(EMSdevice::DeviceType::PUMP); + // publish_device_values(EMSdevice::DeviceType::GENERIC); } // publish both the dallas and analog sensor values diff --git a/src/locale_common.h b/src/locale_common.h index a70e51c6f..dfa4304fa 100644 --- a/src/locale_common.h +++ b/src/locale_common.h @@ -102,6 +102,8 @@ MAKE_PSTR_WORD(heatpump) MAKE_PSTR_WORD(generic) MAKE_PSTR_WORD(analogsensor) MAKE_PSTR_WORD(dallassensor) +MAKE_PSTR_WORD(alert) +MAKE_PSTR_WORD(pump) MAKE_PSTR(number, "number") MAKE_PSTR(enum, "enum") @@ -205,7 +207,7 @@ MAKE_PSTR(uom_seconds, "seconds") MAKE_PSTR(uom_kwh, "kWh") MAKE_PSTR(uom_wh, "Wh") MAKE_PSTR(uom_bar, "bar") -MAKE_PSTR(uom_ua, "uA") +MAKE_PSTR(uom_ua, "µA") MAKE_PSTR(uom_lmin, "l/min") MAKE_PSTR(uom_kw, "kW") MAKE_PSTR(uom_w, "W") @@ -213,8 +215,8 @@ MAKE_PSTR(uom_kb, "KB") MAKE_PSTR(uom_dbm, "dBm") MAKE_PSTR(uom_fahrenheit, "°F") MAKE_PSTR(uom_mv, "mV") -MAKE_PSTR(uom_sqm, "sqm") -MAKE_PSTR(uom_m3, "m3") +MAKE_PSTR(uom_sqm, "m²") +MAKE_PSTR(uom_m3, "m³") MAKE_PSTR(uom_l, "l") // MQTT topics and prefixes