Skip to content

Commit

Permalink
Merge pull request #755 from MichaelDvP/dev
Browse files Browse the repository at this point in the history
add devices Alert/Pump, UOMs
  • Loading branch information
proddy authored Nov 20, 2022
2 parents 1f43bb2 + 89245c7 commit a193d67
Show file tree
Hide file tree
Showing 15 changed files with 198 additions and 44 deletions.
8 changes: 5 additions & 3 deletions interface/src/framework/system/SystemStatusForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,10 @@ const SystemStatusForm: FC = () => {
const restart = async () => {
setProcessing(true);
try {
await SystemApi.restart();
setRestarting(true);
const response = await SystemApi.restart();
if (response.status === 200) {
setRestarting(true);
}
} catch (error) {
enqueueSnackbar(extractErrorMessage(error, LL.PROBLEM_LOADING()), { variant: 'error' });
} finally {
Expand Down Expand Up @@ -208,7 +210,7 @@ const SystemStatusForm: FC = () => {
setProcessing(true);
try {
await SystemApi.factoryReset();
enqueueSnackbar(LL.SYSTEM_FACTORY_TEXT(), { variant: 'info' });
setRestarting(true);
} catch (error) {
enqueueSnackbar(extractErrorMessage(error, LL.PROBLEM_UPDATING()), { variant: 'error' });
} finally {
Expand Down
6 changes: 6 additions & 0 deletions interface/src/project/DeviceIcon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -34,6 +36,10 @@ const DeviceIcon: FC<DeviceIconProps> = ({ type }) => {
return <VscVmConnect />;
case 'Gateway':
return <AiOutlineGateway />;
case 'Alert':
return <AiOutlineAlert />;
case 'Pump':
return <AiOutlineChrome />;
default:
return null;
}
Expand Down
6 changes: 3 additions & 3 deletions interface/src/project/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ export const DeviceValueUOM_s = [
'Wh',
'hours',
'minutes',
'uA',
'µA',
'bar',
'kW',
'W',
Expand All @@ -201,8 +201,8 @@ export const DeviceValueUOM_s = [
'dBm',
'°F',
'mV',
'sqm',
'm3',
'',
'',
'l'
];

Expand Down
5 changes: 4 additions & 1 deletion src/device_library.h
Original file line number Diff line number Diff line change
Expand Up @@ -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},
Expand Down
29 changes: 29 additions & 0 deletions src/devices/alert.cpp
Original file line number Diff line number Diff line change
@@ -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 <http://www.gnu.org/licenses/>.
*/

#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
33 changes: 33 additions & 0 deletions src/devices/alert.h
Original file line number Diff line number Diff line change
@@ -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 <http://www.gnu.org/licenses/>.
*/

#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
18 changes: 9 additions & 9 deletions src/devices/boiler.h
Original file line number Diff line number Diff line change
Expand Up @@ -321,10 +321,10 @@ class Boiler : public EMSdevice {
bool set_max_pump(const char * value, const int8_t id);
bool set_hyst_on(const char * value, const int8_t id);
bool set_hyst_off(const char * value, const int8_t id);
bool set_hyst2_on(const char * value, const int8_t id) {
inline bool set_hyst2_on(const char * value, const int8_t id) {
return set_hyst_on(value, 2);
}
bool set_hyst2_off(const char * value, const int8_t id) {
inline bool set_hyst2_off(const char * value, const int8_t id) {
return set_hyst_off(value, 2);
}
bool set_burn_period(const char * value, const int8_t id);
Expand Down Expand Up @@ -356,26 +356,26 @@ class Boiler : public EMSdevice {
bool set_blockHyst(const char * value, const int8_t id); // pos 14?: Hyst. for bolier block (K)
bool set_releaseWait(const char * value, const int8_t id); // pos 15: Boiler release wait time (min)
bool set_HpInLogic(const char * value, const int8_t id);
bool set_HpIn1Logic(const char * value, const int8_t id) {
inline bool set_HpIn1Logic(const char * value, const int8_t id) {
return set_HpInLogic(value, 1);
}
bool set_HpIn2Logic(const char * value, const int8_t id) {
inline bool set_HpIn2Logic(const char * value, const int8_t id) {
return set_HpInLogic(value, 2);
}
bool set_HpIn3Logic(const char * value, const int8_t id) {
inline bool set_HpIn3Logic(const char * value, const int8_t id) {
return set_HpInLogic(value, 3);
}
bool set_HpIn4Logic(const char * value, const int8_t id) {
inline bool set_HpIn4Logic(const char * value, const int8_t id) {
return set_HpInLogic(value, 4);
}
bool set_maxHeat(const char * value, const int8_t id);
bool set_maxHeatComp(const char * value, const int8_t id) {
inline bool set_maxHeatComp(const char * value, const int8_t id) {
return set_maxHeat(value, 2);
}
bool set_maxHeatHeat(const char * value, const int8_t id) {
inline bool set_maxHeatHeat(const char * value, const int8_t id) {
return set_maxHeat(value, 3);
}
bool set_maxHeatDhw(const char * value, const int8_t id) {
inline bool set_maxHeatDhw(const char * value, const int8_t id) {
return set_maxHeat(value, 4);
}

Expand Down
29 changes: 29 additions & 0 deletions src/devices/pump.cpp
Original file line number Diff line number Diff line change
@@ -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 <http://www.gnu.org/licenses/>.
*/

#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
33 changes: 33 additions & 0 deletions src/devices/pump.h
Original file line number Diff line number Diff line change
@@ -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 <http://www.gnu.org/licenses/>.
*/

#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
6 changes: 3 additions & 3 deletions src/devices/thermostat.h
Original file line number Diff line number Diff line change
Expand Up @@ -396,7 +396,7 @@ class Thermostat : public EMSdevice {
bool set_mode(const char * value, const int8_t id);
bool set_control(const char * value, const int8_t id);
bool set_holiday(const char * value, const int8_t id, const bool vacation = false);
bool set_vacation(const char * value, const int8_t id) {
inline bool set_vacation(const char * value, const int8_t id) {
return set_holiday(value, id, true);
}
bool set_pause(const char * value, const int8_t id);
Expand Down Expand Up @@ -458,10 +458,10 @@ class Thermostat : public EMSdevice {
bool set_wwDailyHeating(const char * value, const int8_t id);
bool set_wwDailyHeatTime(const char * value, const int8_t id);
bool set_wwwhenmodeoff(const char * value, const int8_t id);
bool set_wwVacation(const char * value, const int8_t id) {
inline bool set_wwVacation(const char * value, const int8_t id) {
return set_holiday(value, DeviceValueTAG::TAG_WWC1, true);
}
bool set_wwHoliday(const char * value, const int8_t id) {
inline bool set_wwHoliday(const char * value, const int8_t id) {
return set_holiday(value, DeviceValueTAG::TAG_WWC1);
}

Expand Down
36 changes: 23 additions & 13 deletions src/emsdevice.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,21 @@ std::string EMSdevice::tag_to_mqtt(uint8_t tag) {
return (DeviceValue::DeviceValueTAG_mqtt[tag]);
}

// convert UOM to a string - these don't need translating
// convert UOM to a string - translating only for hours/minutes/seconds
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]);
switch (uom) {
case DeviceValueUOM::DEGREES:
case DeviceValueUOM::DEGREES_R:
return EMSESP::system_.fahrenheit() ? DeviceValue::DeviceValueUOM_s[DeviceValueUOM::FAHRENHEIT] : DeviceValue::DeviceValueUOM_s[uom];
case DeviceValueUOM::HOURS:
return Helpers::translated_word(FL_(hours));
case DeviceValueUOM::MINUTES:
return Helpers::translated_word(FL_(minutes));
case DeviceValueUOM::SECONDS:
return Helpers::translated_word(FL_(seconds));
default:
return DeviceValue::DeviceValueUOM_s[uom];
}
return (DeviceValue::DeviceValueUOM_s[uom]);
}

std::string EMSdevice::brand_to_string() const {
Expand Down Expand Up @@ -107,6 +116,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));
}
Expand All @@ -128,42 +141,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;
}
Expand Down
2 changes: 2 additions & 0 deletions src/emsdevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,8 @@ class EMSdevice {
SWITCH,
CONTROLLER,
CONNECT,
ALERT,
PUMP,
GENERIC,
UNKNOWN
};
Expand Down
10 changes: 6 additions & 4 deletions src/emsdevicevalue.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -112,18 +112,20 @@ const char * DeviceValue::DeviceValueUOM_s[] = {
F_(uom_lmin),
F_(uom_kwh),
F_(uom_wh),
F_(uom_hours),
F_(uom_minutes),
FL_(hours)[0],
FL_(minutes)[0],
F_(uom_ua),
F_(uom_bar),
F_(uom_kw),
F_(uom_w),
F_(uom_kb),
F_(uom_seconds),
FL_(seconds)[0],
F_(uom_dbm),
F_(uom_fahrenheit),
F_(uom_mv),
F_(uom_sqm)
F_(uom_sqm),
F_(uom_m3),
F_(uom_l)

};

Expand Down
Loading

0 comments on commit a193d67

Please sign in to comment.