Coder Social home page Coder Social logo

emsesp / ems-esp32 Goto Github PK

View Code? Open in Web Editor NEW
519.0 12.0 91.0 58.51 MB

ESP32 firmware to read and control EMS and Heatronic compatible equipment such as boilers, thermostats, solar modules, and heat pumps

Home Page: https://emsesp.github.io/docs

License: GNU Lesser General Public License v3.0

Shell 0.03% JavaScript 1.91% CSS 0.02% HTML 0.01% TypeScript 17.55% C 6.03% C++ 69.72% Makefile 0.16% Python 4.57%
mqtt esp32 thermostat boiler ems solar heatpump buderus bosch junkers

ems-esp32's Introduction

logo

version release-date license Quality Gate Status Codacy Badge downloads chat

GitHub stars GitHub forks donate

EMS-ESP is an open-source firmware for the Espressif ESP32 microcontroller that communicates with EMS (Energy Management System) based equipment from manufacturers like Bosch, Buderus, Nefit, Junkers, Worcester and Sieger. It requires a small gateway circuit to interface with the EMS bus which can be purchased from https://bbqkees-electronics.nl or custom built.

Features

  • A multi-user, multi-language secure web interface to change settings and monitor incoming data
  • A console, accessible via Serial and Telnet for more advanced monitoring
  • Native support for Home Assistant, Domoticz and openHAB via MQTT Discovery
  • Can run standalone as an independent WiFi Access Point or join an existing WiFi network
  • Easy first-time configuration via a web Captive Portal
  • Support for more than 110+ EMS devices (boilers, thermostats, solar modules, mixer modules, heat pumps, gateways, switches, heat sources)

Documentation

For the complete documentation on how to install, configure and get support visit the EMS-ESP Wiki.

Support

To chat with the community reach out on our Discord Server.

If you like EMS-ESP, please give it a star, or fork it and contribute or offer a small donation!

Demo

For a live demo of the Web UI click here and log in with any username/password.

Contributors ✨

EMS-ESP is a project owned and maintained by proddy and MichaelDvP.

Libraries used

  • esp8266-react by @rjwats for the framework that provides the core of the Web UI
  • uuid-* from @nomis. The console, syslog, telnet and logging are based off these open source libraries
  • ArduinoJson for all the JSON
  • espMqttClient for the MQTT client, with custom modifications from @MichaelDvP and @proddy
  • ESPAsyncWebServer and AsyncTCP for the Web server and TCP backends, with custom modifications for performance

License

This program is licensed under GPL-3.0

Screenshots

Web Interface

Telnet Console

In Home Assistant

ems-esp32's People

Contributors

ajvdw avatar bbqkees avatar bonusbartus avatar egrekov avatar fauthd avatar geezerrr avatar gert05 avatar gl3nni3 avatar glennarens avatar hpanther avatar joanwa avatar klstanie avatar kpschaper avatar kwertie01 avatar michaeldvp avatar minusdreidb avatar misa1515 avatar neonox31 avatar popaschking avatar proddy avatar proddybot avatar pswid avatar reenx avatar sunbuzz avatar tefracky avatar tp1de avatar vikingn avatar vuego123 avatar xeyame avatar ypaindaveine avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ems-esp32's Issues

Smart control a heating system with HA?

Hi,

now that I have EMS-ESP and HA running smoothly together, I can tune my heating circuits (adjusting the heating curve, playing around with the radiators and stuff).

One major problem in my house are many windows, sunny days and overshooting temperatures. https://github.com/proddy/EMS-ESP/issues/524 tells me not to mess with the boiler directly as any program running on the thermostat (RC300) may override this. So basically, I was thinking along the following lines:

If weather forecast equals sunny for the next day, reduce offset temperature by X early next morning (say Y minutes before sunrise) and reset offset temperature in the evening (say, Z minutes before sunset). Given my Aqara temperature sensors in the room, I feedback that info into the system and "learn" X, Y and Z and adjust offset temperatures.

Normally, its a job for a TRV to close the valve. However, I observe the following: given that the boiler only knows outside temperature, it will fire even if the TRVs closes their valves. The consequence, boiler starts and stops. Repeat.

I'm sure that tado and others are using similar ideas. Anyone knows of something similar for HA or any other system?

Measuring cost of gas etc.

Hi proddy,

one topic of your wishlist is:

Measure amount of gas in m3 per day for the hot water vs the central heating, and convert this into cost.

Do you already have ideas on how to do this? I'm planning on programming something in this direction - we already have:

  • gas burner on/off
  • gas power while the burner is on
  • cost of gas
  • we also have the time the gas burner is on
  • heating or warm water on/off
  • solar power activated

We also have the specification of the gas type in terms of efficiency (we have different types of gas here in Germany with different efficiency) which we can find on the monthly or annual bill. Would be nice if we could throw some ideas together.

have fun,
Dieter

How to control my installation

Question
I want to use the temperatures from my Loxone system to regulate my heating. But I can't find a command that can do that... Looking for a solution or a workaround.

Screenshots
Schermafbeelding 2020-12-08 om 21 18 18

My setup:

  • Boiler Junkers CerapurSmart A with heatronic3
  • MM200 mixer with 2 heating circuits
  • 2 thermostats CW100 (one for each circuit of the mixer)
  • an outdoor temperature sensor that is not installed outdoor

Additional context

  • The 2 thermostats are not in the room they should be heating. I can't get a cable to those rooms to hang the thermostats there. But I have a temperature sensor in those rooms that is managed in Loxone. I can send the temperatures through REST or MQTT.
  • The outdoor sensor is not placed outside. same story: can't get a cable there. Loxone fetches the outdoor temperature from some weather API

I don't really need my thermostats or outdoor sensor. If I can bypass them somehow and regulate the mixer directly, that works for me. Or if I can override the temperature sensor of the thermostats, that would be even better.

I have tried

  • Setting variables on my thermostats through REST or MQTT. I'm able to set stuff like target temps, operating mode, ... But the actual temperatures seem to be read-only
  • Setting variables on my mixer. But I can't set anything on this device...

Unknown devices on Buderus system

The system is: Buderus Logamax Plus GB172i-42i (2 pieces), Buderus MM100 modules (2 pc), Buderus MC 400 module (1 pc) and Buderus RC310 Thermostat (1 pc).

I can read or write informations from the Thermostat and read info from MM100 modules.

My problem: I cannot see all informations, EMS-ESP does not recognize all devices

The system info result is:

{
"System": {
"version": "2.2.0",
"uptime": "000+00:07:48.999",
"freemem": 45,
"fragmem": 22
},
"Settings": {
"enabled": "on",
"publish_time_boiler": 10,
"publish_time_thermostat": 10,
"publish_time_solar": 10,
"publish_time_mixer": 10,
"publish_time_other": 10,
"publish_time_sensor": 10,
"mqtt_format": 3,
"mqtt_qos": 0,
"mqtt_retain": "off",
"tx_mode": 1,
"ems_bus_id": 11,
"master_thermostat": 0,
"rx_gpio": 13,
"tx_gpio": 15,
"dallas_gpio": 14,
"dallas_parasite": "off",
"led_gpio": 2,
"hide_led": "off",
"api_enabled": "off",
"bool_format": 1,
"analog_enabled": "off"
},
"Status": {
"bus": "connected",
"bus protocol": "Buderus",
"#telegrams received": 878,
"#read requests sent": 103,
"#write requests sent": 3,
"#incomplete telegrams": 51,
"#tx fails": 3,
"rx line quality": 100,
"tx line quality": 100,
"#MQTT publish fails": 0,
"#dallas sensors": 0
},
"Devices": [
{
"type": "Thermostat",
"name": "RC300/RC310/Moduline 3000/1010H/CW400/Sense II (DeviceID:0x10, ProductID:158, Version:18.05)",
"handlers": "0xA3 0x06 0xA2 0x12 0x2A5 0x2B9 0x2AF 0x29B 0x2A6 0x2BA 0x2B0 0x29C 0x2A7 0x2BB 0x2B1 0x29D 0x2A8 0x2BC 0x2B2 0x29E 0x2F5 0x31B 0x31D 0x31E 0x23A 0x267 0x240"
},
{
"type": "Mixer",
"name": "MM100 (DeviceID:0x20, ProductID:160, Version:24.05)",
"handlers": "0x2D7"
},
{
"type": "Mixer",
"name": "MM100 (DeviceID:0x28, ProductID:160, Version:24.05)",
"handlers": "0x331"
},
{
"type": "Unknown",
"name": "unknown (DeviceID:0x08, ProductID:210, Version:02.05)",
"handlers": ""
},
{
"type": "Unknown",
"name": "GBx72/Trendline/Cerapur/Greenstar Si/27i (DeviceID:0x70, ProductID:123, Version:07.00)",
"handlers": ""
},
{}
]
}

Q: ESp32

hi proddy,

in saw in your dev branch, that you added some code for the ESP32? Did you plan to have a release for that µC type, or it is already working?

thank a lot

chris

read maintenance messages (e.g. H6) which are not service/error codes

Bug description
Active Error-Message shown on Thermostat RC30 (H6) is not detected with v2.1, but was detected with v1.9.5.

Steps to reproduce
Steps to reproduce the behavior.

Expected behavior
If an error is displayed on RC30 this should also be detected with ems-esp to be able to send a notification.

Screenshots
If applicable, add screenshots to help explain your problem.
image

image

image

Device information
{
"System": {
"version": "2.1.0",
"uptime": "000+04:45:31.631",
"freemem": 40,
"fragmem": 14
},
"Settings": {
"enabled": "on",
"publish_time_boiler": 10,
"publish_time_thermostat": 10,
"publish_time_solar": 10,
"publish_time_mixer": 10,
"publish_time_other": 10,
"publish_time_sensor": 10,
"mqtt_format": 1,
"mqtt_qos": 0,
"mqtt_retain": "on",
"tx_mode": 1,
"ems_bus_id": 11,
"master_thermostat": 0,
"rx_gpio": 13,
"tx_gpio": 15,
"dallas_gpio": 14,
"dallas_parasite": "off",
"led_gpio": 2,
"hide_led": "off",
"api_enabled": "on",
"bool_format": 1,
"analog_enabled": "off"
},
"Status": {
"bus": "connected",
"bus protocol": "Buderus",
"#telegrams received": 20115,
"#read requests sent": 3739,
"#write requests sent": 4,
"#incomplete telegrams": 1,
"#tx fails": 3,
"rx line quality": 100,
"tx line quality": 100,
"#MQTT publish fails": 13,
"#dallas sensors": 0
},
"Devices": [
{
"type": "Boiler",
"name": "GB125/MC10 (DeviceID:0x08, ProductID:72, Version:02.04)",
"handlers": "0x10 0x11 0x14 0x15 0x16 0x18 0x19 0x1A 0x1C 0x2A 0x33 0x34 0x35 0xD1 0xE3 0xE4 0xE5 0xE6 0xE9 0xEA"
},
{
"type": "Thermostat",
"name": "RC30 (DeviceID:0x10, ProductID:67, Version:02.08)",
"handlers": "0xA3 0x06 0xA2 0x3E 0x3D 0x48 0x47 0x52 0x51 0x5C 0x5B 0xA5 0x37"
},
{
"type": "Mixer",
"name": "MM10 (DeviceID:0x21, ProductID:69, Version:02.00)",
"handlers": "0xAA 0xAB 0xAC"
},
{
"type": "Controller",
"name": "BC10/RFM20 (DeviceID:0x09, ProductID:68, Version:02.00)",
"handlers": ""
}
]
}

Additional context
Add any other context about the problem here.

v3.0.0b3 - WebUI does not respond anymore

I upgraded from v3.0.0b1 to v3.0.0b3 yesterday.
Now after approx. one day of operation the webui does not respond anymore. (empty white page - no error displayed)
MQTT is still working as well as the telnet session.
The command interface took approx. 5 secs to respond - that's not the normal bevavior:

ems-esp:/system$ show
Uptime: 000+22:40:46.701
SDK version: v3.3.4-432-g7a85334d8
CPU frequency: 240 MHz
Free heap: 94296 bytes

WiFi: Connected
SSID: xxxxxx
BSSID: DC:39:6F:BF:DC:ED
RSSI: -79 dBm (42 %)
MAC address: F0:08:D1:D7:E7:70
Hostname: ems-esp
IPv4 address: 192.168.178.71/255.255.255.0
IPv4 gateway: 192.168.178.1
IPv4 nameserver: 192.168.178.1

Ethernet: disconnected

Syslog: disabled

HA statistics - share ideas

Dear all
i am interested in statistics about my heating. I just started to learn a little bit about the historical statisics in HA (and yes i am aware that functions like max, min, mean, integrate and differentiate could easily be done with Grafana - i also use it). But i am also interested in simple functions within HA.

So my first question was, how long does the heating heats the warm water and heating circuit itself?
Please note: The yesterday value will be calculated

sensors.yaml:
##########################
#Heating Test historical statistics
##########################
- platform: history_stats
  name: heating_warmwater_hst_runtime_per_day
  entity_id: binary_sensor.heating_warmwater
  state: 'on'
  type: time
  end: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'
  duration:
    hours: 24

- platform: history_stats
  name: heating_warmwater_hst_ratio_per_day
  entity_id: binary_sensor.heating_warmwater
  state: 'on'
  type: ratio
  end: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'
  duration:
    hours: 24

- platform: history_stats
  name: heating_warmwater_hst_ratio_between_5_and_23
  entity_id: binary_sensor.heating_warmwater
  state: 'on'
  type: ratio
# between 5 -23h
  end: '{{ ((as_timestamp(now().replace(hour=0).replace(minute=0).replace(second=0)) | int) - 3600)  }}'
  duration:
    hours: 18

- platform: history_stats
  name: heating_heating_hst_runtime_per_day
  entity_id: binary_sensor.heating_heating
  state: 'on'
  type: time
  end: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'
  duration:
    hours: 24

- platform: history_stats
  name: heating_heating_hst_ratio_per_day
  entity_id: binary_sensor.heating_heating
  state: 'on'
  type: ratio
  end: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'
  duration:
    hours: 24

and the template sensors to identify if the heating works in heating mode or warm water mode:

binary_sensors.yaml:
##########################
# for Heating Test historical statistics
##########################
- platform: template
  sensors:
    heating_warmwater:
      friendly_name: "Heating Warmwater"
      value_template: >-
       {% if is_state("binary_sensor.heating", "on") and is_state("sensor.Warm_Water_3_way_valve", "on") and is_state("sensor.boiler_pump", "on") %} {{ true }}
       {% else %} {{ false }}
       {% endif %}
# used to get frequent updates!!!
      entity_id:
        - binary_sensor.heating
        - sensor.Warm_Water_3_way_valve
        - sensor.current_flow_temperature

- platform: template
  sensors:
    heating_heating:
      friendly_name: "Heating circuit"
      value_template: >-
       {% if is_state("binary_sensor.heating", "on") and is_state("sensor.Warm_Water_3_way_valve", "off") and is_state("sensor.boiler_pump", "on") %} {{ true }}
       {% else %} {{ false }}
       {% endif %}
# used to get frequent updates!!!
      entity_id:
        - binary_sensor.heating
        - sensor.Warm_Water_3_way_valve
        - sensor.current_flow_temperature

What do you think about that?

Do you have other interessing ideas?

ESP8266 vs ESP32 with BBQKees Gateway - 1st experiences of differences

I am using / testing BBQKees Gateway Premium II since 2 weeks.
My Heating System: Buderus KB192i Boiler with integrated IP, RC310 thermostat and MM100 mixer.
I tried different versions of EMS-ESP: 2.1 and 2.1.1b5 and b6.

I had quite some stability problems with the gateway attached to my EMS-Bus. I tried different things and finally I bought a new D1 mini board with an ESP32. I want to comment on my first findings.

Original Wemos D1 Mini with ESP8266:

  • I attached to service jack and/or by cable to EMS-Bus
  • Operating by cable connected to ems-out on my mm100 mixer was periodically bringing the mm100 mixer into error state (led blinking). External USB power supply on the Wemos D1 was needed.
  • My heating system went regularly into error state due to ems errors (minor defect are shown on the display)
  • The ems-esp gateway regularly lost the connection to EMS-Bus and therefore no device info was available anymore
  • The mqtt-interface stopped after a while
  • every device scan initiated by web-ui stoped the ems-bus -> Errors shown in my heating system and mm100 led was blinking
  • refreshing device info 2-3 times by web-ui crashes the ems-esp software. The system restarted and no ems-bus connection was possible.
  • when restarting the heating system them km200 web interface was not working correct anymore emsesp/EMS-ESP#628

Newly bougth AZDelivery ESP32 D1 Mini NodeMCU board

  • Pin compatible with old Wemos board but larger and led at different location /mazbe there are better fitting boards then the one I bought on Amazon ...
  • I flashed with platform io (usb)
  • works on BBQKees Premium II board but board is slightly larger - could not close the plastic case for the moment
  • all stability problems seems to be solved but external usb powering needed. Device scan without any problem and no web-ui crashes anymore.
  • I am not using mqtt for the moment, since I use web api out of node-red.
  • km200 problem still exists emsesp/EMS-ESP#628

The ESP8266 seems to be too limited. I would recommend to go for ESP32.

For info: replace Wemos D1 ESP866 with ESP32 on BBQKees board v0.9

I wanted to share my experience with upgrading to an ESP32 board

Old situation
Wemos D1 ESP8266 on a BBQKees v0.9 board

Desired situation
Nodemcu ESP32 on a BBQKees v0.9 board

Steps

  1. Flash EMS-ESP32 to ESP32 board and configure WiFi
  2. Power off and disconnect the ESP8266 from the EMS board
  3. Set jumper J4 from 100E to 4k7
  4. Connect GND, power and RXTX (on EMS board) to any set of pins on the ESP32. I have chosen 22 and 23. Make sure to connect RX on the EMS board to TX on the ESP32.

I took a while before I realized that step 3 was required. The ESP was in a bootloop. Just wanted to share this for the greater benefit.

nervous modulation

Hi,

Running

  • BUDERUS Logamax plus GB192iT40
  • BOSCH RC310 thermostaat
  • BUDERUS Gateway Logamatic web KM100
  • BBQkees Gateway Premium II
  • ems-esp v2.1.1b7

I noticed a very nervous behavior of the power consumption:
With good modulation I would expect more cures like (1) and not sequences like (2)
2020-12-08_22-13-33

or, some more recent graphs:
2020-12-09_17-04-38

As you can see: (1) are the points where my automatic schedule of the thermostat starts, but no idea why (2) is such a strange behaviour.

Has this something to do with the boiler, or is it a problem of communication between ems-esp and the ems-bus? Can someone share some experiences with this?

kind regards,
Bart Plessers

(v2) ESP32 upload firmware

Hi,
I'm trying to change esp8266 to ESP32 board. And I don't know how to upload firmware. I'm trying PlatformIO as shown on readme, but it doesn't work. I thing some paths are incorrect (ex. XX). Can You explain, much easier, how to start using ESP32 with EMS-ESP?
Tom

(ESP32) Support for larger MQTT payloads

As noticed with emsesp/EMS-ESP#715 with setups containing multiple heating circuits on a single thermostat, the MQTT payload may exceed the EMS-ESP buffer limit of 1024 bytes. The threshold for the TCP lwip stack is 1072 for (or 2090 if using lwip2 and compiling with -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH). See emsesp/EMS-ESP#556 (comment).

In theory we can up the EMS-ESP buffer and possibly switch from static to dynamic heap, if there is room.

But I'd also like to explore MQTT chunking again so will experiment with the asyncMqttclient libs

(ESP32) refactor device value rendering

there's a lot of code duplication in the device libraries so I'm working through to clean up the code, moving functions back to the base class. One of the changes is in the way the device information is printed to the shell which is very similar to how we create the data to send to the web. I propose

  • have one method to form a structured json document with the key/value pairs
  • use this method for both web and console
  • remove the n= v= elements from the json object as this creates a lot of unnecessary memory. Just use a sequenced list of values as pairs, e.g. n1, v2, n2, v2....

I've tested with Boiler with good results so far.

ESP32 hardware connections

In the documentation I found the connections for ESP8266 Wemos D1 mini.
image
To upgrade to ESP32 I can't find the needed connections. I have this board:
image
image
Kind regards, Hans

thermostat emulation

How difficult would it be to have EMS-ESP to emulate real thermostat?
Why: I dont have any thermostat at all. I have a smart home where are radiator valves are electronic and controlled independently based on current temperature in each room. So I have one circuit and boiler will only heat the heating water if at least one of the vales is open. But it seems that without a thermostat, very few "things" can be directly controlled on the boiler (jukers cerapur).
So... could technically EMS-ESP pretend to be a thermostat to make the boiler more controllable?

Call commands from the Web UI

Now that all commands are unified across the Console and MQTT, having the same ability to call commands from the Web UI may be useful. For example calling 'temp' in the Thermostat box to set a new setpoint temp. Or 'wwonetime' from the Boiler. It could be a simple form with a drop-down of commands (per context) and two fields for data and id similar to the MQTT format. And only accessible if the user has 'admin' privileges.

An alternative is to open the telnet console to the web. The advantage of this is you'll see the logging.

Extension of boiler data with usage data

Attached is an Excel file showing the information menu structure off an HMS300 and the values at that time and mapping to the values from telegrams 0x494 and 0x495. The data is for a boiler identified as "Enviline/Compress 6000AW/Hybrid 7000iAW".

I have added the mapping in a local fork of release 2.1.0 from which i have attached the changed boiler and locale files. Time and energy (kWh) values are read as a 4byte/32bit value and all are added to the boiler_data topic. Telegram 0x495 contains additional values at indexes 1-3 and 22-23 of which i cannot determine what they represent. I choose to output the time in seconds instead of minutes as they are supplied and handling translation in the Domoticz plugin.

Enhancement request is to add the data to the baseline with any changes as required for consistency.

HMC300.xlsx
boiler.cpp.txt
boiler.h.txt
locale_EN.h.txt

Extension of boiler data with current power and temperatures

Attached is an Excel file showing the information menu structure off an HPC400 and the values at that time and mapping to the values from telegrams 0x48d and 0x48f. The data is for a boiler identified as "Enviline/Compress 6000AW/Hybrid 7000iAW".

In 0x48d is the current compressor power
0x48f shows the temperatures of the outdoor unit.

IMG_4331 1
IMG_4330 1
IMG_4329 1
IMG_4328 1
EMS data.xlsx

Use wwonetime...

Question
Struggling to get wwonetime working on my setup. Being a cautious sort (i.e. a coward!) most of my EMS-ESP use is read-only - watching stuff happen. But there are a couple of things I'd like to be able to do controlwise. One of them is kick off a one-time hot water re-heat. I thought I'd start simple and try to trigger this from the telnet interface. When I issue "call boiler wwonetime 1", nothing appears to happen. Am I doing something silly?

Screenshots

ems-esp:/# watch on
Watching incoming telegrams, displayed in decoded format
002+20:52:00.009 N 2: [emsesp] Boiler(0x08) -> All(0x00), UBAMonitorFast(0x18), data: 05 02 27 00 00 00 02 40 C0 80 00 01 A8 80 00 00 00 FF 00 00 00 CB 00 00 00
002+20:52:00.314 N 3: [emsesp] Thermostat(0x10) -> All(0x00), RC300Monitor(0x2A5), data: 02 09 00 8B (offset 13)
002+20:52:00.530 N 4: [emsesp] Boiler(0x08) -> All(0x00), MC10Status(0x2A), data: 00 00 00 00 1B 00 00 00 D8 00 00 80 00 00 80 00 80 00 80 00 00
002+20:52:00.752 N 5: [emsesp] Boiler(0x08) -> All(0x00), UBAMonitorWW(0x34), data: 28 01 A8 01 A8 01 00 00 03 00 00 98 2F 00 0E 6B 00 80 00
002+20:52:04.688 N 6: [emsesp] Boiler(0x08) -> Me(0x0B), UBATotalUptime(0x14), data: 12 D9 2A
002+20:52:04.989 N 7: [emsesp] Boiler(0x08) -> Me(0x0B), UBAParameters(0x16), data: FF 4B 64 00 04 F6 0A 01 03 64 50 04 00 00 00 00 00 00 00 00 00 00 00 00 28 00 3C
002+20:52:05.213 N 8: [emsesp] Boiler(0x08) -> Me(0x0B), UBAParameters(0x16), data: 00 3C 00 (offset 25)
002+20:52:05.513 N 9: [emsesp] Boiler(0x08) -> Me(0x0B), UBAMonitorSlow(0x19), data: 00 88 80 00 80 00 00 00 00 00 00 34 12 02 6A A0 00 00 00 01 D2 71 00 25 A7 80 00
002+20:52:05.712 N 10: [emsesp] Boiler(0x08) -> Me(0x0B), UBAMonitorSlow(0x19), data: 80 00 (offset 25)
002+20:52:06.046 N 11: [emsesp] Boiler(0x08) -> Me(0x0B), UBAParameterWW(0x33), data: 08 FF 3C FB 00 28 00 00 46 00 FF FF 00
002+20:52:06.344 N 12: [emsesp] Thermostat(0x10) -> Me(0x0B), RC300Monitor(0x2A5), data: 00 B8 21 00 00 00 00 25 02 09 01 01 03 02 09 00 8B 00 00 11 01 00 07 35 00
002+20:52:06.602 N 13: [emsesp] Thermostat(0x10) -> Me(0x0B), RC300Monitor(0x2A5), data: 05 06 FF A6 00 00 FF 00 4B 00 C6 04 FF 01 02 (offset 25)
002+20:52:06.935 N 14: [emsesp] Thermostat(0x10) -> Me(0x0B), RC300Set(0x2B9), data: FF 2E 2A 26 1E 02 2A FF FF 00 25 01 E1 20 01 0F 05 00 00 02 21
002+20:52:07.058 N 15: [emsesp] Boiler(0x08) -> All(0x00), UBAMonitorFast(0x18), data: 05 02 25 00 00 00 02 40 C0 80 00 01 A8 80 00 00 00 FF 00 00 00 CB 00 00 00
002+20:52:07.412 N 16: [emsesp] Thermostat(0x10) -> Me(0x0B), ?(0x2F5), data: 01 00 04 03 00 00 08 01 00 08 04 00 00 00 00 00 00 00 00 00
002+20:52:07.700 N 17: [emsesp] Thermostat(0x10) -> Me(0x0B), RC300WWtemp(0x31B), data: 3C 28
ems-esp:/# call boiler wwonetime 1
002+20:52:09.386 N 18: [emsesp] Boiler(0x08) -> Me(0x0B), UBAMonitorWW(0x34), data: 28 01 A8 01 A8 01 00 00 03 00 00 98 2F 00 0E 6B 00 80 00
002+20:52:10.009 N 19: [emsesp] Boiler(0x08) -> All(0x00), UBAMonitorFast(0x18), data: 05 02 25 00 00 00 02 40 C0 80 00 01 A8 80 00 00 00 FF 00 00 00 CB 00 00 00
002+20:52:10.333 N 20: [emsesp] Boiler(0x08) -> All(0x00), UBAMonitorFast(0x18), data: 05 02 25 00 00 00 02 40 C0 80 00 01 A8 80 00 00 00 FF 00 00 00 CB 00 00 00
002+20:52:10.610 N 21: [emsesp] Boiler(0x08) -> All(0x00), UBAMonitorSlow(0x19), data: 00 88 80 00 80 00 00 00 00 00 00 34 12 02 6A A0 00 00 00 01 D2 71 00 25 A7 80 00
002+20:52:10.858 N 22: [emsesp] Boiler(0x08) -> All(0x00), UBAMaintenanceStatus(0x1C), data: 93 09 05 1D 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
002+20:52:11.129 N 23: [emsesp] Boiler(0x08) -> All(0x00), MC10Status(0x2A), data: 00 00 00 00 1B 00 00 00 D8 00 00 80 00 00 80 00 80 00 80 00 00
002+20:52:11.377 N 24: [emsesp] Boiler(0x08) -> All(0x00), UBAMonitorWW(0x34), data: 28 01 A8 01 A8 03 00 00 03 00 00 98 2F 00 0E 6B 00 80 00
002+20:52:11.571 N 25: [emsesp] Boiler(0x08) -> All(0x00), UBADevices(0x07), data: 0B 01 00 00 00 00 00 00 00 00 00 00 00
002+20:52:18.522 N 26: [emsesp] Thermostat(0x10) -> Boiler(0x08), UBADevices(0x07), data: 0F
002+20:52:18.546 N 27: [emsesp] Boiler(0x08) -> Thermostat(0x10), UBADevices(0x07), data: 0B 01 00 00 00 00 00 00 00 00 00 00 00
002+20:52:20.059 N 28: [emsesp] Boiler(0x08) -> All(0x00), UBAMonitorFast(0x18), data: 05 02 23 00 00 00 02 40 C0 80 00 01 A8 80 00 00 00 FF 00 00 00 CB 00 00 00
002+20:52:20.279 N 29: [emsesp] Boiler(0x08) -> All(0x00), MC10Status(0x2A), data: 00 00 00 00 1B 00 00 00 D8 00 00 80 00 00 80 00 80 00 80 00 00
002+20:52:20.527 N 30: [emsesp] Boiler(0x08) -> All(0x00), UBAMonitorWW(0x34), data: 28 01 A8 01 A8 03 00 00 03 00 00 98 2F 00 0E 6B 00 80 00
ems-esp:/# call boiler wwonetime 0
002+20:52:28.580 N 31: [emsesp] Boiler(0x08) -> Me(0x0B), UBAMonitorWW(0x34), data: 28 01 A8 01 A8 03 00 00 03 00 00 98 2F 00 0E 6B 00 80 00
002+20:52:30.008 N 32: [emsesp] Thermostat(0x10) -> Boiler(0x08), UBASetPoints(0x1A), data: 00 00 00
002+20:52:30.058 N 33: [emsesp] Thermostat(0x10) -> All(0x00), ?(0x267), data: 00 00
002+20:52:30.294 N 34: [emsesp] Thermostat(0x10) -> All(0x00), RC300Monitor(0x2A5), data: 00 B8 21 00 00 00 00 25 02 09 01 01 03 02 09 00 8B 00 00 11 01 00 07 35 00
002+20:52:30.502 N 35: [emsesp] Boiler(0x08) -> All(0x00), UBAMonitorWW(0x34), data: 28 01 A8 01 A8 01 00 00 03 00 00 98 2F 00 0E 6B 00 80 00
002+20:52:30.708 N 36: [emsesp] Boiler(0x08) -> All(0x00), UBAMonitorFast(0x18), data: 05 02 20 00 00 00 02 40 C0 80 00 01 A8 80 00 00 00 FF 00 00 00 CB 00 00 00
002+20:52:31.030 N 37: [emsesp] Boiler(0x08) -> All(0x00), MC10Status(0x2A), data: 00 00 00 00 1B 00 00 00 D8 00 00 80 00 00 80 00 80 00 80 00 00
002+20:52:31.328 N 38: [emsesp] Thermostat(0x10) -> All(0x00), RC300Monitor(0x2A5), data: 05 06 FF A6 00 00 FF 00 4B 00 C6 04 FF 01 02 (offset 25)
002+20:52:31.527 N 39: [emsesp] Thermostat(0x10) -> All(0x00), RC300WWmode2(0x31D), data: 00 00 09 07
002+20:52:31.878 N 40: [emsesp] Thermostat(0x10) -> Boiler(0x08), UBAFlags(0x35), data: 11 01
002+20:52:31.924 N 41: [emsesp] Thermostat(0x10) -> Boiler(0x08), UBAFlags(0x35), data: 28 (offset 3)
002+20:52:31.969 N 42: [emsesp] Thermostat(0x10) -> All(0x00), RCTime(0x06), data: 14 09 0A 1E 22 20 02 01 10 FF FE
ems-esp:/# watch off

Device information

ems-esp:/# show
EMS-ESP version 2.1.0b12

Boiler: Worcester Logamax Plus/GB192/Condens GC9000 (DeviceID:0x08 ProductID:208, Version:01.01)
  Heating active: off
  Warm water/DHW active: off
  Service code:
  Service code number: 203
  Warm water selected temperature: 60 °C
  Warm water set temperature: 40 °C
  Warm water disinfection temperature: 70 °C
  Selected flow temperature: 5 °C
  Burner selected max power: 0 %
  Burner current power: 0 %
  Pump modulation: 0 %
  Warm water type: buffer
  Warm water charging type: 3-way valve
  Warm water circulation pump available: off
  Warm water circulation pump freq: 0x3min
  Warm water circulation active: off
  Outside temperature: 13.8 °C
  Warm water current temperature (intern): 42.5 °C
  Warm water current temperature (extern): 42.5 °C
  Warm water current tap water flow: 0.0 l/min
  Current flow temperature: 52.7 °C
  Warm water storage temperature (extern): 42.5 °C
  Warm water activated: on
  Warm water one time charging: off
  Warm water disinfecting: off
  Warm water charging: off
  Warm water recharging: off
  Warm water temperature ok: off
  Warm water active: off
  Gas: off
  Flame current: 0.0 uA
  Pump: off
  Fan: off
  Ignition: off
  Warm water heating: on
  Heating activated: on
  Heating temperature setting: 75 °C
  Circuit pump modulation max power: 100 %
  Circuit pump modulation min power: 80 %
  Circuit pump delay time: 3 min
  Burner min period: 10 min
  Burner min power: 0 %
  Burner max power: 100 %
  Temperature hysteresis on: -10 °C
  Temperature hysteresis off: 4 °C
  Warm water starts: 3691
  Warm water active time: 38959
  Burner starts: 13330
  Warm Water active time: 27 days 1 hours 19 minutes
  Total burner operating time: 109 days 23 hours 28 minutes
  Total heat operating time: 82 days 22 hours 9 minutes
  Total UBA working time: 857 days 19 hours 24 minutes

Thermostat: RC300/RC310/Moduline 3000/1010H/CW400/Sense II (DeviceID:0x10, ProductID:158, Version:33.03)
  Time: 10:35:32 30/09/2020
  Error code: (0)
  Warm water mode: own_prog
  Warm water high temperature: 60
  Warm water low temperature: 40
  Heating circuit 1:
    Setpoint room temperature: 0.0 °C
    Current room temperature: 18.3 °C
    Comfort temperature: 21.0 °C
    Eco temperature: 15.0 °C
    Manual temperature: 18.5 °C
    Target flow temperature: 0 °C
    Summer temperature: 17 °C
    Summer mode: auto °C
    Mode: auto
    Mode type: eco

Dallas temperature sensors:
  Sensor 1, ID: 28-BE2A-7791-0402, Temperature: 39.1 °C

ems-esp:/# show devices
These EMS devices are currently active:

Boiler: Worcester Logamax Plus/GB192/Condens GC9000 (DeviceID:0x08 ProductID:208, Version:01.01)
 This Boiler will respond to telegram type IDs: 0x10 0x11 0x14 0x15 0x16 0x18 0x19 0x1A 0x1C 0x2A 0x33 0x34 0x35 0xD1 0xE3 0xE4 0xE5 0xE6 0xE9 0xEA

Thermostat: RC300/RC310/Moduline 3000/1010H/CW400/Sense II (DeviceID:0x10, ProductID:158, Version:33.03) ** master device **
 This Thermostat will respond to telegram type IDs: 0xA3 0x06 0xA2 0x2A5 0x2B9 0x2AF 0x2A6 0x2BA 0x2B0 0x2A7 0x2BB 0x2B1 0x2A8 0x2BC 0x2B2 0x2F5 0x31B 0x31D 0x31E

Controller: ErP (DeviceID:0x09, ProductID:209, Version:01.03)

ems-esp:/#

Additional context
Add any other context about the problem here.

KM200 gateway vs. ems-esp: Would it make sense to harmonize data structure - or integrate http interface to km200?

I am using the rest-api interface of the km200 internet gateway since 2 1/2 years to integrate the heating system into my home automation system (ioBroker). The interface is not documented and a bit complex since it is encrypted (rinjdael-128 ecb) and every value has to be polled seperate. In my case with KB192i boiler, rc310 thermostat and mm100 mixer and 2 heating circuits, I will get approx 170 datapoints back. The polling of the km200 is very slow and and lot of http get-request have timeouts. So I bought the ems-esp to get better realtime data for hydraulic optimization of my system. This is working excellent.

Once using both system it is easy to recognize that the data-structure and the data-names are quite different. So it is not trivial to find 1:1 the respective values. The km200 structure is not per device but more per function:
grafik
Would it make sense midterm to harmonize data-structure and content?

There are some adition datapoints in the ems-esp not known by km200 (yet) -> WW circulation, Mixer valve status etc
Since there are automatic firmware updates every 3-4 months the km200 datatpoints are slightly changing over time..

A very interesting content is within recordings. There are time recordings on energy-consumption (heating and ww) and temperatures available. (per day, per month, per year). These values are quite accurate - I implemented a correction factor towards the gas-meter. My multiplier is 1.046 and over the year my difference is less then 10kWh.

I believe that these values might be of interest for everybody who has a boiler which provides this data.
A very easy way could be to implement http-request handling and decryption on the esp software. @MichaelDvP you might be the expert for this. Or we need to search for the respective telegrams ... please tell me where I can support.

For refererence I will attach my km200 data structure:
km200.0.json.zip

I would be very interested to get your feedback.

Best regards
Thomas

flashing ESP32

Hi
I have ESP32 WROOM-32UE and I flash with "flash_download_tool_v3.8.5" version EMS-ESP-2_1_0-esp32.bin.
Programming is OK, but when I restart ESP32, the sistem don't have a Acces point esp-ems.
On the RS232 I see the butloader information.
What can I do?

Multi-language/I18n support

Support multi-locale for Telnet console commands, MQTT, SysLog messages and the Web. Since there is not enough memory to hold all the translations it will have to be different builds (DE, NL, UK). String literals will be stored in translation files and built at compile time.

@MichaelDvP @bbqkees what you vote for this feature?

(ESP32) switch from SPIFFS to LITTLEFS

Moving the filesystem from SPIFFS to LittleFS for v3 (ESP32 port) so it's in line with v2 (ESP8266). LittleFS has been added to the Arduino Core 4.2 which is coming soon. Until then we'll be using local libraries. LittleFS is about 2-3 times faster in reading and writing the settings files.

Switching from 3.0.0b1 to 3.0.0b2 will erase all the previous settings so make sure you've made a dump of any settings before upgrading.

See https://github.com/espressif/arduino-esp32/tree/idf-release/v4.2/libraries/LITTLEFS and https://github.com/lorol/LITTLEFS

WLAN AP still active even if turned off

Hi Proddy,
just found this in my router (Fritz!Box). The ems-esp is still in AP mode (at least it is listed, even after refreshing the list).

My first idea was that this is an artefact of rebooting the ems-esp32. But after refreshing the list it shows up again.
I did not expect that it is even possible to use the AP mode and work as a client at same time.
AP settings is "never" and UI says "inactive".

Any ideas?

2021-03-16 18 41 59 192 168 168 1 e6fa0925b362

2021-03-16 18 47 50 ems-esp 13e6aa709a3b

2021-03-16 18 50 06 ems-esp 9a15e7888b12

Dieter Fauth

MQTT disconnects after ~3hrs on ESP32

Should i make a new issue for the esp32-mqtt-disconnects? I have no idea what causes it. What i know about this issue:

  • it's only on ESP32
  • mqtt disconnects every 12032 seconds from boot, reason TCP
  • disable NTP has no effect
  • changing publish intervals has no effect
  • disable heartbeat has no effect
  • changing QoS has no effect
  • restarting the mqtt broker in between has no effect
  • restarting mqtt in between on the esp has no effect.

since mqtt reconnects immediately it does not harm much.

Originally posted by @MichaelDvP in emsesp/EMS-ESP#460 (comment)

(ESP32) Watchdog 1-WIRE DS18b20

Hi,
I use several ds18b20 thermometers to read boiler temperatures. Sometimes there are problems with the operation of the 1-wire bus. To restore proper operation it is necessary to reset the esp32 module. Is it possible for ems-esp to expose any pin to high state to power dc 3.3v 1-wire sensors? In the absence of a temperature update (watchdog), the 3.3V power supply would be disconnected for 10 seconds to reset the 1-wire bus. This would greatly improve the stability of the system.

Tom

Junkers FW200 wrong heating circuit mode reported

Bug description
Heating circuit mode and modetype of Junkers FW200 are reported incorrectly.

Steps to reproduce
The problem showed up after upgrading from 2.1.0 ESP8266 to 3.0.0 ESP32.

Expected behavior
The example provided in the screenshots show the toggling from manual-nofrost to manual-heat for HC2.
EMS-ESP however shows auto-eco while it should be manual-nofrost. I changed to heating mode to manual-heat and EMS-ESP only shows auto. It looks like the modetype has an invalid state and is not shown in the console anymore. It is also not reported in MQTT.

Screenshots
Should be MANUAL-NOFROST for HC2 (and actually also HC1):
image
Should be MANUAL-HEAT for HC2:
image

Device information

{
  "System": {
    "version": "3.0.0",
    "uptime": "000+01:32:46.780"
  },
  "Status": {
    "bus": "connected",
    "bus protocol": "HT3",
    "#telegrams received": 6505,
    "#read requests sent": 1012,
    "#write requests sent": 59,
    "#incomplete telegrams": 0,
    "#tx fails": 3,
    "rx line quality": 100,
    "tx line quality": 100,
    "#MQTT publish fails": 0,
    "#dallas sensors": 0,
    "#dallas fails": 0
  },
  "Devices": [
    {
      "type": "Boiler",
      "name": "Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3 (DeviceID:0x08, ProductID:95, Version:23.04)",
      "handlers": "0x10 0x11 0x14 0x15 0x16 0x18 0x19 0x1A 0x1C 0x26 0x2A 0x33 0x34 0x35 0xD1 0xE3 0xE4 0xE5 0xE6 0xE9 0xEA 0x494 0x495"
    },
    {
      "type": "Thermostat",
      "name": "Junkers FW200 (DeviceID:0x10 ProductID:106, Version:12.14)",
      "handlers": "0xA3 0x06 0xA2 0x12 0x16F 0x170 0x171 0x172 0x165 0x166 0x167 0x168"
    },
    {
      "type": "Mixer",
      "name": "Junkers IPM (DeviceID:0x20 ProductID:102, Version:20.08)",
      "handlers": "0x10C"
    },
    {
      "type": "Mixer",
      "name": "Junkers IPM (DeviceID:0x21 ProductID:102, Version:20.08)",
      "handlers": "0x10C"
    },
    {
      "type": "Solar",
      "name": "Junkers ISM1 (DeviceID:0x30 ProductID:101, Version:23.04)",
      "handlers": "0x103 0x101"
    },
    {
      "type": "Controller",
      "name": "HT3 (DeviceID:0x09, ProductID:95, Version:23.04)",
      "handlers": ""
    }
  ]
}

Additional context
This issue reminds me of a previous issue reported in a long thread here:
emsesp/EMS-ESP#410 (comment)
I guess it was fixed in this PR:
emsesp/EMS-ESP#417
(or maybe this one):
emsesp/EMS-ESP#419

ESP32 uart handling

Question
Do you have an implementation for ESP32 uart handling? Currently I am only interested in receiving. Unfortunately I have to ESP32 because it also servers other purposes.

Additional context
I have seen another question in Q&A (May 2019) where you stated that you aren't happy with your current ESP32 implementation - I hope now for some new status (especially if receiving only is relevant)...

map data and command structure to km200's semantic taxonomy

From discord @tp1de requested to map the fields closer to the naming used on the km200 interface, which uses a path-like taxonomy.

I agree the names in the MQTT keys and the commands should match, so will fix that, but not sure about changing the complete structure. I don't want to change the MQTT topic names (boiler, thermostat...) or the command structure (temp) and the MQTT payloads need to remain short so using long paths wouldn't work. Then there's the restful API which takes a single cmd too. What would help is a real-life use case example to work through.


Also to create a table in the wiki to show:
(a) is the field writable?
(b) what is the datatype of the field (boolean, number,char)
(c) what are valid entries / number ranges?
(d) what is the unit of measure?

In the buderus km200 rest-api interface I get this information back (encrypted) and it looks like this:

object
id: "/heatSources/actualPower"
type: "floatValue"
writeable: 0
recordable: 1
value: 4.4
unitOfMeasure: "kW"
...
...... and with allowed values for example:

object
id: "/heatingCircuits/hc1/operationMode"
type: "stringValue"
writeable: 1
recordable: 0
value: "auto"
allowedValues: array[2]
0: "auto"
1: "manual"

Strange behavior of warm water after connection of ems-esp

Hi

I have an issue with warm water. After installation of ems-esp board, it is slower and less hot.

I'm using esp8266 / 2.2.2-dev(38a443e), service key mode
Connected by 3.5mm jack on front service port
Boiler is a Buderus Logamax plus GB152-16 with RC35 with external buffer
Boiler is recognized as BK13/BK15/Smartline/GB1x2
I'm using it from Domoticz via MQTT set as "on change"

Before installation of the board, warm water was immediately available, even with low flow.
Warm water was also quickly available with little opening of nozzle. Hot water was really hot
After installation, temperature of warm and hot water is generally low. It needs to fully open to get it warm
Also, it needs time to get it warm. And, more curious, if I close and open the nozzle again I got a shot of cold water

  • Warm water was set to 60°C on RC35 and auto on the boiler, before and now too
  • I did try to set recirculation pump to always on from rc35 but nothing change
  • I did try to change Boiler Comfort Mode from Hot to Intelligent or echo, but every time I change it backs alone to Hot
  • I did try to switch off and on the RC35 and the boiler, but nothing changed
  • I did try tx mode 1, 2 and 0, but nothing changed
  • No errors shown on stats
  • I can change thermostat setpoint and mode from Domoticz

I suppose that at installation or trying to change Boiler Comfort mode, some values are changed but I cannot understand what

Any idea ?

Thanks

(v2) ESP32 WEMOS D1 32 mini compiler define question

Hi all,

I would like to start with compiling and test the ESP32 version and I own an WeMos D1 32 mini which I would like to use with the EMS-Gateway.
Well, I've found a compiler define in the code called WEMOS_D1_32 which switched some GPIO's for ... hopefully, my ESP32 version. Currently I can not identify how to enable this define. I changed the platformio.ini to
[env:esp32] board = wemos_d1_mini32 ;esp32dev but I think i makes no difference.

May someone help me?
thanks,
chris

No pre-build binaries for ESP32 and when compiling from source dev version is v3.0.0b1

I am a bit confused. Since I want to rewrite my node-red flows reading mqtt-messages I was looking for the actual dev version.
I could not find a pre-build binary for the esp32 like before. Any reason for this?

Therefore I dowloaded the respective source and compiled by myself.
I ended with version v3.0.0b1. Is this ok?

This binary seems to work - I just lost my WLAN-connection. WLAN has to be setup new. All other settings where kept.
Just the mqtt messages changed in structure and data-field names. This is not very convienient. (e.g. mixer valveStatus into status).

Auto discovery fro Home Assistant is not consistent for Dallas sensors

Bug description
esp32_dev 58067d1

Steps to reproduce
Connect at least one DS18B20 sensor,
reboot and watch results in HA.
No temperature values are parsed (but MQTT messages are being sent)

Expected behavior
Temperature values visible in HA.

Screenshots
Not yet and probably not helpful anyways.

Device information
Copy-paste here the information as it is outputted by the device. You can get this information by from http://ems-esp/api?device=system&cmd=info
{ "System": { "version": "3.0.0b1", "uptime": "000+00:35:42.679" }, "Status": { "bus": "connected", "bus protocol": "Buderus", "#telegrams received": 2206, "#read requests sent": 556, "#write requests sent": 0, "#incomplete telegrams": 1, "#tx fails": 0, "rx line quality": 100, "tx line quality": 100, "#MQTT publish fails": 0, "#dallas sensors": 7, "#dallas fails": 2 }, "Devices": [ { "type": "Boiler", "name": "GB125/MC10 (DeviceID:0x08, ProductID:72, Version:03.05)", "handlers": "0x10 0x11 0x14 0x15 0x16 0x18 0x19 0x1A 0x1C 0x2A 0x33 0x34 0x35 0xD1 0xE3 0xE4 0xE5 0xE6 0xE9 0xEA 0x494 0x495" }, { "type": "Thermostat", "name": "RC300/RC310/Moduline 3000/1010H/CW400/Sense II (DeviceID:0x10, ProductID:158, Version:11.08)", "handlers": "0xA3 0x06 0xA2 0x12 0x2A5 0x2B9 0x2AF 0x29B 0x2A6 0x2BA 0x2B0 0x29C 0x2A7 0x2BB 0x2B1 0x29D 0x2A8 0x2BC 0x2B2 0x29E 0x2F5 0x31B 0x31D 0x31E 0x23A 0x267 0x240" }, { "type": "Controller", "name": "BC10/RFM20 (DeviceID:0x09, ProductID:68, Version:02.03)", "handlers": "" } ] }

Additional context
Some analysis showed that the strings sent by auto discovery are not describing the payload.
The auto discovery shows
"uniq_id":"dallas_28-A813-7806-0000"
Payload is:
ems-esp/dallassensor_data {"28-A813-7806-0000":34.6,.....

I removed the "dallas_" , deleted the items in HA, but it did not help so far.
Perhaps I do not fully understand the details here.

Next test:
The esp32_dev enforces the use of the "by sensor ID", the esp8266_dev branch does not.
For a test I changed that so I can use "by Number" even when HA discovery is enabled.
Now the temperature values show up in HA (string portion "dallas_" still removed).

Perhaps some change in HA needs adjustments here?
I use "Home Assistant 2021.1.5"

dallassensor.cpp.txt

temporaryRoomSetpoint per hc similar to km200 ist not available as datafield and does not work properly

In km200 there are two seperate datafields for each hc available:

currentRoomSetpoint -> ems-esp: seltemp (read only)
temporaryRoomSetpoint -> ems-esp: n.a. - writeable with the temp command but works only partially.

In km200 the temporaryRoomSetpoint can have the following values:

-1    : Automatic mode
0     : hc is switched off
5-30  : temperature setpoint in °C for hc

The setpoint is valid until next switchpoint from active switchprogram when in automatic mode.
This is very convenient to use, since it sets back automatic to time program mode. (my most used value to change)

The ems-esp command temp works in a way that 0 and 5-30°C can be set.
The setting back to Automatic mode doesn't work. The value -1 is represented as 5°C wich is wrong.

I believe that it is important to introduce a new datapoint for temporaryRoomSetpoint for the interfaces (mqtt, ebui, web api etc) and to make it properly work.

I did some debugging by changing values by km200 and watching on console:

Gateway(0x48) -> Thermostat(0x10)
hc1: RC300Set(0x2B9) offset 8
hc2: RC300Set(0x2BA) offset 8
value 0 : data: 00
value -1: data: FF
value 20: data: 28

@MichaelDvP @proddy
You have commented in emsesp/EMS-ESP#737 and you are aware. Do we share the same understanding that adjustment ist needed?

expose individual commands via MQTT topics

As a request from @glitter-ball , since all EMS-ESP commands need to follow the JSON format {cmd:"", data:"", id:""} it's hard to send individual commands, like from a component or trigger in HA. For example, when using HA's platform:mqtt in a switch component it can only send on/off payloads to a single command topic, like in this screenshot:

unknown

This feature is to expose all commands as individual MQTT topics by subscribing to them as for example:

[21] (Sub) topic=ems-esp/boiler/comfort
[22] (Sub) topic=ems-esp/boiler/wwactivated
[23] (Sub) topic=ems-esp/boiler/wwtapactivated
[24] (Sub) topic=ems-esp/boiler/wwflowtempoffset
[25] (Sub) topic=ems-esp/boiler/wwmaxpower
[26] (Sub) topic=ems-esp/boiler/wwonetime
[27] (Sub) topic=ems-esp/boiler/wwcircpump
[28] (Sub) topic=ems-esp/boiler/wwcirculation
[29] (Sub) topic=ems-esp/boiler/wwcircmode
[30] (Sub) topic=ems-esp/boiler/flowtemp
[31] (Sub) topic=ems-esp/boiler/wwsettemp
[32] (Sub) topic=ems-esp/boiler/heatingactivated
[33] (Sub) topic=ems-esp/boiler/heatingtemp
[34] (Sub) topic=ems-esp/boiler/burnmaxpower
[35] (Sub) topic=ems-esp/boiler/burnminpower
[36] (Sub) topic=ems-esp/boiler/boilhyston
[37] (Sub) topic=ems-esp/boiler/boilhystoff
[38] (Sub) topic=ems-esp/boiler/burnperiod
[39] (Sub) topic=ems-esp/boiler/pumpdelay
[40] (Sub) topic=ems-esp/boiler/maintenance
[41] (Sub) topic=ems-esp/boiler/pumpmodmax
[42] (Sub) topic=ems-esp/boiler/pumpmodmin

Unable to boot my esp32.

Hello. I am new to the world of ESPs.
I have flashed an ESP32-WROOM-32 with the firmware EMS-ESP-2_2_0-esp32.bin.
I used with success the command

python3 esptool.py -p /dev/ttyUSB0 -b 921600 write_flash 0x00000 /home/christophe/Bureau/EMS-ESP-2_2_0-esp32.bin 
esptool.py v2.6
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
MAC: 10:52:1c:62:b6:88
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 1515744 bytes to 950628...
Wrote 1515744 bytes (950628 compressed) at 0x00000000 in 13.3 seconds (effective 912.6 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Then the red led of the ESP32 flashes quickly.

With minicom, I get looped :

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)                     
flash read err, 1000                                                            
ets_main.c 371                                                                  
ets Jun  8 2016 00:22:57

is there something else to do before flashing this firmware?

New Feature: Configuration service

This ticket is to solicit comments on offering configuration services for EMS devices.

Specifically, I would like to implement a configuration page for the solar module MS-100(SM100). The approach could then be extended to other devices that require configuration.

The solar module MS-100 has a number of parameters that must be set for it to work properly (Collector Size, Climate Zone, Maximum Tank Temperature, and more). I would like to add a section "solar configuration" to the web UI settings. Any setting made here would then be stored on the gateway. On device startup, these settings would be programmed to the solar module.

ESP32 reset loop in B1 and B2 firmware

Hi,
In my ESP32 from firmware 2.1.1b1 I`m getting reset loop. I tested b1 and b2. In b0 everything works good. The reset loop stops when I disconnect the ems bus.
I have Buderus GB072 and RC310 thermostat.
Tom

Junkers Ceraclass with built-in FW200 thermostat?

Just installed a BbqKees Gateway Premuim II (P2) with my Junkers Ceraclass Excellence ZSC 28-3 MFA E 23 boiler.
It detects the following devices:

  • Boiler, Condens 2500/Logamax/Logomatic/Cerapur Top/Greenstar/Generic HT3
  • Controller, HT3
  • Thermostat, Junkers FW200

image

Looks like this (sorry for the bad quality photo):

image

Please help me understand the role of the FW200 in this setup. I especially don't understand how the (hc 1) Setpoint room temperature and the (hc 1) Current room temperature should be interpreted.
Although this is labelled as Thermostat, as Kees pointed out to me by e-mail, this is more probably just a controller handling the operation of the system. The boiler has 2 temperature sensors, one outdoor, and one measuring the temperature of the warm water buffer tank. It has no indoor/room temperature sensor.

The boiler also has a dry relay contact input which was originally connected to a bimetal thermostat, now it's connected to a relay commanded by Tasmota and Home Assistant. I'd like to eliminate this and instead manipulate the system directly from Home Assistant.

Also I'd like to manually control the warm water preparation as there's also a solar system present in the system - by making smarter decisions based on the expected weater/sunshine etc.

Question: is this built-in FW200 enough for me to achieve my goal? I tried to activate one time charging without success. Also tried to disable the warm water activated status without success.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.