mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 08:19:52 +03:00
merge with upstream/dev
This commit is contained in:
46
README.md
46
README.md
@@ -1,4 +1,4 @@
|
|||||||

|

|
||||||
|
|
||||||
[](https://github.com/proddy/EMS-ESP/blob/master/CHANGELOG.md)
|
[](https://github.com/proddy/EMS-ESP/blob/master/CHANGELOG.md)
|
||||||
[](https://github.com/proddy/EMS-ESP/commits/master)
|
[](https://github.com/proddy/EMS-ESP/commits/master)
|
||||||
@@ -10,42 +10,28 @@
|
|||||||
<br />
|
<br />
|
||||||
[](https://gitter.im/EMS-ESP/community)
|
[](https://gitter.im/EMS-ESP/community)
|
||||||
<br>
|
<br>
|
||||||
-------------
|
|
||||||
|
|
||||||
EMS-ESP is a open-source system to communicate with **EMS** (Energy Management System) based boilers, thermostats and other modules from manufacturers like Bosch, Buderus, Nefit, Junkers and Sieger.
|
EMS-ESP is a open-source system built for the Espressif ESP8266 microcontroller to communicate with **EMS** (Energy Management System) based boilers, thermostats and other modules from manufacturers like Bosch, Buderus, Nefit, Junkers and Sieger.
|
||||||
|
|
||||||
The code is written for the Espressif **ESP8266** microcontroller and supports a telnet console for real-time monitoring and configuration and customizable MQTT support for publishing the information to a home automation system such as Home Assistant or Domoticz.
|
|
||||||
|
|
||||||
#### Please reference the [Wiki](https://emsesp.github.io/docs) for further details and instructions on how to build and configure the firmware.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
#### A web interface for easy configuration and real-time monitoring of the EMS bus
|
* Supporting more than [50 EMS devices](https://proddy.github.io/EMS-ESP/#/Supported-EMS-Devices) (EMS 1.0, 2.0 and Heatronics).
|
||||||
|
* A web interface for easy configuration and real-time monitoring of the EMS bus.
|
||||||
|  |  |
|
* Telnet for advanced configuration and verbose traffic logging.
|
||||||
| -------------------------------------------------------- | ---------------------------------------------------------- |
|
* Configurable MQTT, with templates for Home Assistant and Domoticz.
|
||||||
|
* Includes an simple schematic for a test breadboard interface board.
|
||||||
#### MQTT support for Home Assistant and Domoticz
|
* Native compatibility with bbqkees' [EMS Gateway](https://bbqkees-electronics.nl/) interface board.
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
#### Telnet for advanced configuration and verbose traffic logging
|
|
||||||
|
|
||||||
|  |  |
|
|
||||||
| ------------------------------------------------------------ | -------------------------------------------------------- |
|
|
||||||
|
|
||||||
## Supported EMS devices
|
|
||||||
|
|
||||||
More than **50** EMS 1.0 and 2.0 devices are currently supported. See the [complete list](https://proddy.github.io/EMS-ESP/#/Supported-EMS-Devices).
|
|
||||||
|
|
||||||
|
Please reference the [Wiki](https://emsesp.github.io/docs) for further details and instructions on how to build and configure the firmware.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Native compatibility with bbqkees' **EMS Gateway**
|
|  |  |
|
||||||
|
| - | - |
|
||||||
|

|
||||||
|
|
||||||
All firmware versions fully support BBQKees' [EMS Gateway](https://bbqkees-electronics.nl/) board with integrated Wemos D1 ESP8266.
|
|  |  |
|
||||||
|
| - | - |
|
||||||
|
|
||||||
|  |  |  |
|
|  |  |  |
|
||||||
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------- |
|
| - | - | - |
|
||||||
|
|||||||
@@ -452,7 +452,7 @@ void MyESP::_mqttOnConnect() {
|
|||||||
mqttPublish(MQTT_TOPIC_START, MQTT_TOPIC_START_PAYLOAD, false);
|
mqttPublish(MQTT_TOPIC_START, MQTT_TOPIC_START_PAYLOAD, false);
|
||||||
|
|
||||||
// send heartbeat if enabled
|
// send heartbeat if enabled
|
||||||
_heartbeatCheck();
|
_heartbeatCheck(true);
|
||||||
|
|
||||||
// call custom function to handle mqtt receives
|
// call custom function to handle mqtt receives
|
||||||
(_mqtt_callback_f)(MQTT_CONNECT_EVENT, nullptr, nullptr);
|
(_mqtt_callback_f)(MQTT_CONNECT_EVENT, nullptr, nullptr);
|
||||||
@@ -1455,11 +1455,6 @@ void MyESP::_heartbeatCheck(bool force) {
|
|||||||
if ((millis() - last_heartbeat > MYESP_HEARTBEAT_INTERVAL) || force) {
|
if ((millis() - last_heartbeat > MYESP_HEARTBEAT_INTERVAL) || force) {
|
||||||
last_heartbeat = millis();
|
last_heartbeat = millis();
|
||||||
|
|
||||||
// print to log if force is set, so at bootup
|
|
||||||
if (force) {
|
|
||||||
_printHeap("[SYSTEM]");
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef MYESP_DEBUG
|
#ifdef MYESP_DEBUG
|
||||||
_printHeap("[HEARTBEAT] ");
|
_printHeap("[HEARTBEAT] ");
|
||||||
#endif
|
#endif
|
||||||
@@ -1467,6 +1462,11 @@ void MyESP::_heartbeatCheck(bool force) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// print to log if force is set
|
||||||
|
if (force) {
|
||||||
|
_printHeap("[SYSTEM]");
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t total_memory = _getInitialFreeHeap();
|
uint32_t total_memory = _getInitialFreeHeap();
|
||||||
uint32_t free_memory = ESP.getFreeHeap();
|
uint32_t free_memory = ESP.getFreeHeap();
|
||||||
uint8_t mem_available = 100 * free_memory / total_memory; // as a %
|
uint8_t mem_available = 100 * free_memory / total_memory; // as a %
|
||||||
@@ -2870,7 +2870,6 @@ void MyESP::begin(const char * app_hostname, const char * app_name, const char *
|
|||||||
_webserver_setup(); // init web server
|
_webserver_setup(); // init web server
|
||||||
|
|
||||||
_setSystemCheck(false); // reset system check
|
_setSystemCheck(false); // reset system check
|
||||||
_heartbeatCheck(true); // force heartbeat, will send out message to log too
|
|
||||||
|
|
||||||
_setSystemDropoutCounter(0); // reset # TCP dropouts
|
_setSystemDropoutCounter(0); // reset # TCP dropouts
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
#ifndef MyESP_h
|
#ifndef MyESP_h
|
||||||
#define MyESP_h
|
#define MyESP_h
|
||||||
|
|
||||||
#define MYESP_VERSION "1.2.23"
|
#define MYESP_VERSION "1.2.24"
|
||||||
|
|
||||||
#include <ArduinoJson.h>
|
#include <ArduinoJson.h>
|
||||||
#include <ArduinoOTA.h>
|
#include <ArduinoOTA.h>
|
||||||
|
|||||||
@@ -778,7 +778,11 @@ void publishEMSValues(bool force) {
|
|||||||
strlcat(hc, _int_to_char(s, mixing->hc), sizeof(hc));
|
strlcat(hc, _int_to_char(s, mixing->hc), sizeof(hc));
|
||||||
JsonObject dataMixing = rootMixing.createNestedObject(hc);
|
JsonObject dataMixing = rootMixing.createNestedObject(hc);
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
if (mixing->flowTemp > EMS_VALUE_SHORT_NOTSET)
|
if (mixing->flowTemp > EMS_VALUE_SHORT_NOTSET)
|
||||||
|
=======
|
||||||
|
if (mixing->flowTemp != EMS_VALUE_USHORT_NOTSET)
|
||||||
|
>>>>>>> upstream/dev
|
||||||
dataMixing["flowTemp"] = (float)mixing->flowTemp / 10;
|
dataMixing["flowTemp"] = (float)mixing->flowTemp / 10;
|
||||||
if (mixing->flowSetTemp != EMS_VALUE_INT_NOTSET)
|
if (mixing->flowSetTemp != EMS_VALUE_INT_NOTSET)
|
||||||
dataMixing["setflowTemp"] = mixing->flowSetTemp;
|
dataMixing["setflowTemp"] = mixing->flowSetTemp;
|
||||||
|
|||||||
@@ -1258,7 +1258,7 @@ void _process_EasyStatusMessage(_EMS_RxTelegram * EMS_RxTelegram) {
|
|||||||
_setValue(EMS_RxTelegram, &EMS_Thermostat.hc[hc].setpoint_roomTemp, EMS_OFFSET_EasyStatusMessage_setpoint); // is * 100
|
_setValue(EMS_RxTelegram, &EMS_Thermostat.hc[hc].setpoint_roomTemp, EMS_OFFSET_EasyStatusMessage_setpoint); // is * 100
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x01D7, 0x01D8
|
// Mixer - 0x01D7, 0x01D8
|
||||||
void _process_MMPLUSStatusMessage(_EMS_RxTelegram * EMS_RxTelegram) {
|
void _process_MMPLUSStatusMessage(_EMS_RxTelegram * EMS_RxTelegram) {
|
||||||
uint8_t hc = (EMS_RxTelegram->type - EMS_TYPE_MMPLUSStatusMessage_HC1); // 0 to 3
|
uint8_t hc = (EMS_RxTelegram->type - EMS_TYPE_MMPLUSStatusMessage_HC1); // 0 to 3
|
||||||
if (hc >= EMS_THERMOSTAT_MAXHC) {
|
if (hc >= EMS_THERMOSTAT_MAXHC) {
|
||||||
@@ -1271,9 +1271,13 @@ void _process_MMPLUSStatusMessage(_EMS_RxTelegram * EMS_RxTelegram) {
|
|||||||
_setValue(EMS_RxTelegram, &EMS_Mixing.hc[hc].valveStatus, EMS_OFFSET_MMPLUSStatusMessage_valve_status);
|
_setValue(EMS_RxTelegram, &EMS_Mixing.hc[hc].valveStatus, EMS_OFFSET_MMPLUSStatusMessage_valve_status);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0xAB
|
// Mixer - 0xAB
|
||||||
void _process_MMStatusMessage(_EMS_RxTelegram * EMS_RxTelegram) {
|
void _process_MMStatusMessage(_EMS_RxTelegram * EMS_RxTelegram) {
|
||||||
|
<<<<<<< HEAD
|
||||||
uint8_t hc = 1; // fixed, for 0xAB
|
uint8_t hc = 1; // fixed, for 0xAB
|
||||||
|
=======
|
||||||
|
uint8_t hc = 0; // fixed, for 0xAB (HC1 only
|
||||||
|
>>>>>>> upstream/dev
|
||||||
EMS_Mixing.hc[hc].active = true;
|
EMS_Mixing.hc[hc].active = true;
|
||||||
|
|
||||||
_setValue(EMS_RxTelegram, &EMS_Mixing.hc[hc].flowTemp, EMS_OFFSET_MMStatusMessage_flow_temp);
|
_setValue(EMS_RxTelegram, &EMS_Mixing.hc[hc].flowTemp, EMS_OFFSET_MMStatusMessage_flow_temp);
|
||||||
|
|||||||
Reference in New Issue
Block a user