Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add devices Alert/Pump, UOMs #755

Merged
merged 5 commits into from
Nov 20, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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