GithubHelp home page GithubHelp logo

esphome-econet / esphome-econet Goto Github PK

View Code? Open in Web Editor NEW
89.0 9.0 21.0 1.93 MB

esphome-econet is a package for controlling a Rheem water heater or HVAC system with an esp32 or esp8266 micro-computer.

Home Page: https://esphome-econet.github.io/

License: Other

C++ 75.24% Python 24.76%
esphome esphome-component esphome-device esphome-devices econet esp32 esp8266 home-assistant rheem

esphome-econet's People

Contributors

barndawgie avatar bigthundersr avatar bitfliq avatar clowrey avatar daniel-dev22 avatar dependabot[bot] avatar github-actions[bot] avatar jdwhite avatar justbruce avatar kaijk avatar kpfleming avatar pre-commit-ci[bot] avatar stockmopar avatar tronikos avatar vangorra 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

esphome-econet's Issues

Setting an Enum from a Select Can Causes the Text Value to be Blank (internally)

When you set a value from a select it successfully writes to the device. But internally it updates the datapoint with an empty enumerated text. This causes subsequent refreshes of data to appear to not have any changes in value with the text continuing to be blank.

This can be reproduced by creating a Select and a Text Sensor of the same type. If you change the value with the Select, the Text Sensor will go blank.

Fix/Remove/Clarify Lead Color-Coding on Hardware README

Unfortunately, I'm not getting any data for this model: PROPH50 T2 RH350 DCB

All parts were bought from Mouser via provided links. I have verified that the cable conducts from the TTL plug to the RJ11 connector using a multimeter.

Refactor requesting after writing.

This could cause very close back to back requests being made. This also bypasses the logic of trying to pick a good time to make a request. Since we are making request every 500ms this is probably not needed. But if periodic requests are extended it would be to make this request as soon as its a good time to make the request.

Create a YouTube Video Tutorial on hardware and software setup

@barndawgie thanks for sharing. I keep meaning to look in to this. Everyone really should consider moving to this, this integration is only going to continue to break over time, we aren't using an open API and we all know how cloud products are... this is one of the two devices I have that still use a cloud connection.
Also, last I heard electric water heaters weren't working? Assume there has been movement there based on your comment?

Yes! That is a recently added feature, compliments of @tronikos.

EDIT: I should add that I only added this to my setup in the last 3-6 months. It is probably one of the easiest ESPHome projects to get into because you're basically buying spec hardware and just attaching it to an existing jack.

has anyone created a youtube video of the process to create the device and program for simplicity?

Originally posted by @fireheadman in home-assistant/core#102800 (comment)

Setting Water Heater Vacation Mode Doesn't Work

Setting Vacation Mode on my Heat Pump Hot Water Heater doesn't disable the compressor. Enabling "AWAY" through the Econet app does, and also results in setting VACA_NET property to VACA_NET : 1 (Timed).

So we need to fix vacation setting through our integration.

Reduce Alarm Polling Frequency

Alarms are updated as frequently as all other data points which causes a lot of bus load. An ability to or an overall reduction in alarm polling frequency would be a nice enhancement.

Simplify setup process using Web Installer

See https://esphome.github.io/esp-web-tools/ section "Adding ESP Web Tools to your website"
This can make installation much easier, especially for ATOM since the pins are standard. It's supposed to even setup Wi-Fi using Bluetooth LE (Improv Wi-Fi protocol). I don't have either an ATOM or ESP32 to test it.

Some examples:

https://github.com/tasmota/install
https://tasmota.github.io/install/

https://github.com/ratgdo/esphome-ratgdo
https://ratgdo.github.io/esphome-ratgdo/

Clarify "Installation Overview" section of Wiki

Add /substitute the italicized Text

Three wires from a RJ11/12 cable attach via screw terminals to the RS485 interface, and a USB-C cable provides power and an initial programming interface to the ATOM. Once deployed, the ATOM communicates via WiFi (or ethernet) to the local network and the RS485 converter provides the interface between the econet device [water heater, furnace, air handler] and the ATOM via the RJ11/12 jack on the econet device . No configuration is required for the converter. The esphome-econet software is compiled and loaded onto the ATOM using standard ESPHome tools.

Setting Econet Update Interval Doesn't Change Interval

Having a faster update time is beneficial, especially for the tankless water heater data. When trying to set a faster value using the substitution econet_update_interval it does not appear to change the request rate.

Change device class of Compressor Relay sensor

We have a Compressor Relay sensor with running as its device class that results to saying Running vs Not running. This doesn't seem quite right since a relay isn't running. It's on or off. Either change its device class or rename the sensor to drop the relay?

Modify "Hardware Installation" section of Wiki for wiring clarity

Add/Substitute the highlighted text

The ESPHome device communicates to the the Econet enabled device thru the RJ11/12 jack ONLY. Do not attempt to wire into serial terminals on control boards or thermostats as this will cause instability and communications failures between devices

Cut the connector off one one end of the RJ11/12 cable, then strip and connect the wires to the RS485 device's screw terminals. Pin 3 to B, Pin 4 to A, and Pin 5 to GND. A and B are for data communication, and G is ground. 12V is left empty.

NOTE: Wire colors can vary from cable to cable. Ensure you are matching the pins as shown in the diagram below regardless of cable color, i.e. Pin 3 to B, Pin 4 to A, Pin 5 to G.

Cooling stage displays Compressor stage when ODU is a Heat Pump

Cooling Stage is a bit of a misnomer when the [communicating, in my case] Heat Pump is on in the cooler months.

Perhaps utilize the !remove directive (when it becomes available) to write build-yaml files that change the terminology based on a customer's configured equipment?

Generic Setup Help: ESP32 + RS485 to TTL (5V Board /w MAX13487 Chip)

First off thanks again for this wonderful project. I've had spotty performance with the OOB ECONET app/integration on my Rheem Hybrid Water Heater. I've actually ordered a M5Stack A131 and M5Stack C008 Atom Lite but it's going to be a while before I get it. I happen to have spare parts from other projects and based on our statement that we can use many other ESP32/ESP8266 + an RS485 converter, so off I went. For reference, these are what I have:

I had used ESPHome on my HomeAssistant instance early on when I built some sensors and re-added the add-on. Ran though the process: Build a New Device > Name > ESP32 > Copied Encryption Key. Once the device config was created, I edited the YAML file and adding in the code you've got:

  name: sh-water-heater
  friendly_name: SH-Water-Heater

substitutions:
  tx_pin: GPIO1
  rx_pin: GPIO3
  platform: esp32
  board: esp32dev

packages:
  econet:
    url: https://github.com/esphome-econet/esphome-econet
    ref: main
    # Change this file to the correct one for your device
    file: econet_heatpump_water_heater.yaml
    # file: econet_hvac.yaml
    # file: econet_tankless_water_heater.yaml
    # file: econet_electric_tank_water_heater.yaml

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password


# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "XXXYYYZZZ111222333444555"

I then range the Install > Manual Download > Modern Format > download the file and Installed the BIN file via https://web.esphome.io/. Once completed, I wired up the cables as follows:

GPIO1/GPIO3 Setup

ESP-EcoNet_RX0_TX0

In my case, I used an RJ12 for the serial connection to the console/serial port on the Rheem Water Heater. Once everything was wired up, I connect the device via a USB-C power and waited for it to successfully show up on my network (UniFi WiFi). While it comes online and I'm able to add the ESPHome integration and add my custom device (via IP) to Home Assistant. However, I can see the module connecting into HomeAssistant but it appears that nothing is working (i.e. changing the mode doesn't work, changing the temperature doesn't work).

In the image above, you can see I used the UART0 ports on the ESP32. Should I be using UART1 (GPIO9, GPIO10) or UART2 (GPIO16, GPIO17) for the wiring (and subsequent updates to the YAML tx_pin and rx_pin). Trying to see if I can get this working using the parts I have (curiousness and potentially helping others who do not get an M5Stack ATOM RS485 K045 Kit).

Any help/direction will be helpful and I'm open to sharing my documentation/guide to help others (not sure if you're looking for a more detailed guide....a novice but I'm willing to help something that I'm interested in).

example-local.yaml fails config check when "files" is used

example-local.yaml attempts to use "files: [] " for a multiple file !include.

While this seems logical, and passes the human-readability test, when actually attempting to config or compile this file with the line enabled, esphome throws error after error.

I've searched the documentation, and I can't find a definition of !include that allows multiple files in this manner.

Read Object Handler Mishandles 0x00 inside an object string

In the following log, the thermostat is requesting a list of strings from the furnace. This incorrectly separates "PRES" and "LIQ" into two separate objects when this should be "PRES_LIQ". This seems a bit like an uncaught bug in the thermostat. Requesting "PREQ_LIQ" instead provides a valid response.

I think we just need to modify extract_obj_names() to instead look for double 0x00 separators instead of just a single 0x00.

[09:48:42][I][econet:165]: <<< 80.00.03.80.00.80.00.03.40.00.B6.00.00.1E.02.01.00.00.53.50.54.00.00.00.00.00.00.00.52.45.4C.48.37.30.30.35.00.00.50.52.45.53.5F.53.55.43.00.00.50.52.45.53.00.4C.49.51.00.00.54.45.4D.50.5F.4F.53.54.00.00.54.45.4D.50.5F.4F.4C.54.00.00.54.45.4D.50.5F.45.56.50.00.00.54.45.4D.50.5F.53.53.54.00.00.53.55.42.5F.43.4F.4F.4C.00.00.54.45.4D.50.5F.4C.41.54.00.00.54.45.4D.50.5F.52.41.54.00.00.50.52.45.53.5F.53.55.41.00.00.54.45.4D.50.5F.53.53.41.00.00.54.45.4D.50.5F.4F.53.41.00.00.49.4E.44.
[09:48:42][I][econet:166]:   Dst Adr : 0x380
[09:48:42][I][econet:167]:   Src Adr : 0x340
[09:48:42][I][econet:168]:   Command : 30
[09:48:42][I][econet:169]:   Data    : 02.01.00.00.53.50.54.00.00.00.00.00.00.00.52.45.4C.48.37.30.30.35.00.00.50.52.45.53.5F.53.55.43.00.00.50.52.45.53.00.4C.49.51.00.00.54.45.4D.50.5F.4F.53.54.00.00.54.45.4D.50.5F.4F.4C.54.00.00.54.45.4D.50.5F.45.56.50.00.00.54.45.4D.50.5F.53.53.54.00.00.53.55.42.5F.43.4F.4F.4C.00.00.54.45.4D.50.5F.4C.41.54.00.00.54.45.4D.50.5F.52.41.54.00.00.50.52.45.53.5F.53.55.41.00.00.54.45.4D.50.5F.53.53.41.00.00.54.45.4D.50.5F.4F.53.41.00.00.49.4E.44.4F.4F.52.4B.57.00.00.49.53.43.53.5
[09:48:42][I][econet:184]:   Type    : 2
[09:48:42][I][econet:185]:   PropType: 1
[09:48:42][I][econet:199]:   SPT
[09:48:42][I][econet:199]:   RELH7005
[09:48:42][I][econet:199]:   PRES_SUC
[09:48:42][I][econet:199]:   PRES
[09:48:42][I][econet:199]:   LIQ
[09:48:42][I][econet:199]:   TEMP_OST
[09:48:42][I][econet:199]:   TEMP_OLT
[09:48:42][I][econet:199]:   TEMP_EVP
[09:48:42][I][econet:199]:   TEMP_SST
[09:48:42][I][econet:199]:   SUB_COOL
[09:48:42][I][econet:199]:   TEMP_LAT
[09:48:42][I][econet:199]:   TEMP_RAT
[09:48:42][I][econet:199]:   PRES_SUA
[09:48:42][I][econet:199]:   TEMP_SSA
[09:48:42][I][econet:199]:   TEMP_OSA
[09:48:42][I][econet:199]:   INDOORKW
[09:48:42][I][econet:199]:   ISCSPEED
[09:48:42][I][econet:199]:   FURNSTMP
[09:48:42][I][econet:199]:   FURNRTMP
[09:48:42][W][component:214]: Component econet took a long time for an operation (0.18 s).
[09:48:42][W][component:215]: Components should block for at most 20-30ms.
[09:48:42][I][econet:353]: Read 200. ms=14818
[09:48:42][I][econet:165]: <<< 80.00.03.40.00.80.00.03.80.00.8A.00.00.06.07.80.00.00.42.8B.02.82.07.80.00.00.42.1C.56.A6.07.80.00.00.00.00.00.00.01.15.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.01.00.01.01.07.80.00.00.00.00.00.01.07.80.00.00.43.8D.53.46.07.80.00.00.00.00.00.00.07.80.00.00.C2.20.00.00.07.80.00.00.42.90.00.00.3A.4A (154)
[09:48:42][I][econet:166]:   Dst Adr : 0x340
[09:48:42][I][econet:167]:   Src Adr : 0x380
[09:48:42][I][econet:168]:   Command : 6
[09:48:42][I][econet:169]:   Data    : 07.80.00.00.42.8B.02.82.07.80.00.00.42.1C.56.A6.07.80.00.00.00.00.00.00.01.15.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.01.00.01.01.07.80.00.00.00.00.00.01.07.80.00.00.43.8D.53.46.07.80.00.00.00.00.00.00.07.80.00.00.C2.20.00.00.07.80.00.00.42.90.00.00 (138)
[09:48:42][I][econet:287]:   SPT : 69.504898
[09:48:42][I][econet:287]:   RELH7005 : 39.084618
[09:48:42][I][econet:287]:   PRES_SUC : 0.000000
[09:48:42][I][econet:311]:   PRES : 21.000000
[09:48:42][I][econet:287]:   LIQ : 0.000000
[09:48:42][I][econet:287]:   TEMP_OST : 0.000000
[09:48:42][I][econet:287]:   TEMP_OLT : 0.000000
[09:48:42][I][econet:287]:   TEMP_EVP : 0.000000
[09:48:42][I][econet:287]:   TEMP_SST : 0.000000
[09:48:42][I][econet:287]:   SUB_COOL : 0.000000
[09:48:42][I][econet:287]:   TEMP_LAT : 0.000000
[09:48:42][I][econet:287]:   TEMP_RAT : 0.000000
[09:48:42][I][econet:287]:   PRES_SUA : 0.000000
[09:48:42][I][econet:287]:   TEMP_SSA : 0.000000
[09:48:42][I][econet:287]:   TEMP_OSA : 282.650574
[09:48:42][I][econet:287]:   INDOORKW : 0.000000
[09:48:42][I][econet:287]:   ISCSPEED : -40.000000
[09:48:42][I][econet:287]:   FURNSTMP : 72.000000

Many Messages in Log After Upgrading to v1.5.1

The following messages are getting logged every 30s since upgrading to v1.5.1. Just want to make sure this isn't affecting performance in any way:

[18:29:59][W][component:214]: Component econet took a long time for an operation (0.05 s).
[18:29:59][W][component:215]: Components should block for at most 20-30ms.
[18:29:59][W][econet:337]: HOTWATER : UNSUPPORTED
[18:29:59][W][econet:337]: VACATIME : UNSUPPORTED
[18:29:59][W][component:214]: Component econet took a long time for an operation (0.05 s).
[18:29:59][W][component:215]: Components should block for at most 20-30ms.
[18:30:29][W][component:214]: Component econet took a long time for an operation (0.05 s).
[18:30:29][W][component:215]: Components should block for at most 20-30ms.
[18:30:29][W][econet:337]: HOTWATER : UNSUPPORTED
[18:30:29][W][econet:337]: VACATIME : UNSUPPORTED
[18:30:59][W][component:214]: Component econet took a long time for an operation (0.05 s).
[18:30:59][W][component:215]: Components should block for at most 20-30ms.
[18:30:59][W][econet:337]: HOTWATER : UNSUPPORTED
[18:30:59][W][econet:337]: VACATIME : UNSUPPORTED
[18:31:29][W][component:214]: Component econet took a long time for an operation (0.05 s).
[18:31:29][W][component:215]: Components should block for at most 20-30ms.
[18:31:29][W][econet:337]: HOTWATER : UNSUPPORTED
[18:31:29][W][econet:337]: VACATIME : UNSUPPORTED
[18:31:59][W][component:214]: Component econet took a long time for an operation (0.05 s).
[18:31:59][W][component:215]: Components should block for at most 20-30ms.
[18:31:59][W][econet:337]: HOTWATER : UNSUPPORTED
[18:31:59][W][econet:337]: VACATIME : UNSUPPORTED
[18:32:29][W][component:214]: Component econet took a long time for an operation (0.05 s).
[18:32:29][W][component:215]: Components should block for at most 20-30ms.
[18:32:29][W][econet:337]: HOTWATER : UNSUPPORTED
[18:32:29][W][econet:337]: VACATIME : UNSUPPORTED
[18:32:59][W][component:214]: Component econet took a long time for an operation (0.05 s).
[18:32:59][W][component:215]: Components should block for at most 20-30ms.
[18:32:59][W][econet:337]: HOTWATER : UNSUPPORTED
[18:32:59][W][econet:337]: VACATIME : UNSUPPORTED
[18:33:29][W][component:214]: Component econet took a long time for an operation (0.05 s).
[18:33:29][W][component:215]: Components should block for at most 20-30ms.
[18:33:29][W][econet:337]: HOTWATER : UNSUPPORTED
[18:33:29][W][econet:337]: VACATIME : UNSUPPORTED
[18:33:59][W][component:214]: Component econet took a long time for an operation (0.05 s).
[18:33:59][W][component:215]: Components should block for at most 20-30ms.
[18:33:59][W][econet:337]: HOTWATER : UNSUPPORTED
[18:33:59][W][econet:337]: VACATIME : UNSUPPORTED
[18:34:29][W][component:214]: Component econet took a long time for an operation (0.05 s).
[18:34:29][W][component:215]: Components should block for at most 20-30ms.
[18:34:29][W][econet:337]: HOTWATER : UNSUPPORTED
[18:34:29][W][econet:337]: VACATIME : UNSUPPORTED

Add Software Versions, Model #s, and Serial #s for Furnace & ODUs

The currently displayed Software Version in Home Assistant and the logs is the Thermostat.

It would be convenient if the ESPHome device could display the Software Versions for all the devices in the system, in my case the Furnace and the Heat Pump.

Also in the convenience and troubleshooting category would be retrieving and displaying the Model and Serial #s for each of the devices, too.

It seems like this might be possible, as the Thermostat seems to be able to display all of this without having it entered by the installer or user.

Log longs are Cut Off and Not Fully Displayed

When packets are too long, they don't get appropriately logged.

[10:52:08][I][econet:165]: <<< 80.00.03.40.00.80.00.03.80.00.DC.00.00.06.07.80.00.00.00.00.00.00.34.81.00.00.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.00.34.81.00.00.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.00.34.81.00.00.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.
[10:52:08][I][econet:166]:   Dst Adr : 0x340
[10:52:08][I][econet:167]:   Src Adr : 0x380
[10:52:08][I][econet:168]:   Command : 6
[10:52:08][I][econet:169]:   Data    : 07.80.00.00.00.00.00.00.34.81.00.00.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.00.34.81.00.00.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.00.34.81.00.00.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.20.2
[10:52:08][I][econet:280]:   ALRMALRT : 0.000000
[10:52:08][I][econet:284]:   ALARM_01 : ()
[10:52:08][I][econet:284]:   ALARM_02 : ()
[10:52:08][I][econet:284]:   ALARM_03 : ()
[10:52:08][I][econet:284]:   ALARM_04 : ()

Objects of Length 1 are not properly decoded

In the follow snippet of log, PRES is not decoded:

[07:45:59][I][econet:165]: <<< 80.00.03.80.00.80.00.03.40.00.B6.00.00.1E.02.01.00.00.53.50.54.00.00.00.00.00.00.00.52.45.4C.48.37.30.30.35.00.00.50.52.45.53.5F.53.55.43.00.00.50.52.45.53.00.4C.49.51.00.00.54.45.4D.50.5F.4F.53.54.00.00.54.45.4D.50.5F.4F.4C.54.00.00.54.45.4D.50.5F.45.56.50.00.00.54.45.4D.50.5F.53.53.54.00.00.53.55.42.5F.43.4F.4F.4C.00.00.54.45.4D.50.5F.4C.41.54.00.00.54.45.4D.50.5F.52.41.54.00.00.50.52.45.53.5F.53.55.41.00.00.54.45.4D.50.5F.53.53.41.00.00.54.45.4D.50.5F.4F.53.41.00.00.49.4E.44.
[07:45:59][I][econet:166]:   Dst Adr : 0x380
[07:45:59][I][econet:167]:   Src Adr : 0x340
[07:45:59][I][econet:168]:   Command : 30
[07:45:59][I][econet:169]:   Data    : 02.01.00.00.53.50.54.00.00.00.00.00.00.00.52.45.4C.48.37.30.30.35.00.00.50.52.45.53.5F.53.55.43.00.00.50.52.45.53.00.4C.49.51.00.00.54.45.4D.50.5F.4F.53.54.00.00.54.45.4D.50.5F.4F.4C.54.00.00.54.45.4D.50.5F.45.56.50.00.00.54.45.4D.50.5F.53.53.54.00.00.53.55.42.5F.43.4F.4F.4C.00.00.54.45.4D.50.5F.4C.41.54.00.00.54.45.4D.50.5F.52.41.54.00.00.50.52.45.53.5F.53.55.41.00.00.54.45.4D.50.5F.53.53.41.00.00.54.45.4D.50.5F.4F.53.41.00.00.49.4E.44.4F.4F.52.4B.57.00.00.49.53.43.53.5
[07:45:59][I][econet:184]:   Type    : 2
[07:45:59][I][econet:185]:   PropType: 1
[07:45:59][I][econet:199]:   SPT
[07:45:59][I][econet:199]:   RELH7005
[07:45:59][I][econet:199]:   PRES_SUC
[07:45:59][I][econet:199]:   PRES
[07:45:59][I][econet:199]:   LIQ
[07:45:59][I][econet:199]:   TEMP_OST
[07:45:59][I][econet:199]:   TEMP_OLT
[07:45:59][I][econet:199]:   TEMP_EVP
[07:45:59][I][econet:199]:   TEMP_SST
[07:45:59][I][econet:199]:   SUB_COOL
[07:45:59][I][econet:199]:   TEMP_LAT
[07:45:59][I][econet:199]:   TEMP_RAT
[07:45:59][I][econet:199]:   PRES_SUA
[07:45:59][I][econet:199]:   TEMP_SSA
[07:45:59][I][econet:199]:   TEMP_OSA
[07:45:59][I][econet:199]:   INDOORKW
[07:45:59][I][econet:199]:   ISCSPEED
[07:45:59][I][econet:199]:   FURNSTMP
[07:45:59][I][econet:199]:   FURNRTMP
[07:45:59][W][component:214]: Component econet took a long time for an operation (0.18 s).
[07:45:59][W][component:215]: Components should block for at most 20-30ms.
[07:45:59][I][econet:342]: Read 380. ms=222590
[07:45:59][I][econet:165]: <<< 80.00.03.40.00.80.00.03.80.00.8A.00.00.06.07.80.00.00.42.84.A1.85.07.80.00.00.42.1C.E7.A3.07.80.00.00.00.00.00.00.01.15.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.01.00.01.01.07.80.00.00.00.00.00.01.07.80.00.00.43.8D.0B.93.07.80.00.00.00.00.00.00.07.80.00.00.C2.20.00.00.07.80.00.00.42.8A.CC.CD.AF.A3 (154)
[07:45:59][I][econet:166]:   Dst Adr : 0x340
[07:45:59][I][econet:167]:   Src Adr : 0x380
[07:45:59][I][econet:168]:   Command : 6
[07:45:59][I][econet:169]:   Data    : 07.80.00.00.42.84.A1.85.07.80.00.00.42.1C.E7.A3.07.80.00.00.00.00.00.00.01.15.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.00.00.00.00.07.80.00.00.01.00.01.01.07.80.00.00.00.00.00.01.07.80.00.00.43.8D.0B.93.07.80.00.00.00.00.00.00.07.80.00.00.C2.20.00.00.07.80.00.00.42.8A.CC.CD (138)
[07:45:59][I][econet:281]:   SPT : 66.315468
[07:45:59][I][econet:281]:   RELH7005 : 39.226208
[07:45:59][I][econet:281]:   PRES_SUC : 0.000000
[07:45:59][I][econet:281]:   LIQ : 0.000000
[07:45:59][I][econet:281]:   TEMP_OST : 0.000000
[07:45:59][I][econet:281]:   TEMP_OLT : 0.000000
[07:45:59][I][econet:281]:   TEMP_EVP : 0.000000
[07:45:59][I][econet:281]:   TEMP_SST : 0.000000
[07:45:59][I][econet:281]:   SUB_COOL : 0.000000
[07:45:59][I][econet:281]:   TEMP_LAT : 0.000000
[07:45:59][I][econet:281]:   TEMP_RAT : 0.000000
[07:45:59][I][econet:281]:   PRES_SUA : 0.000000
[07:45:59][I][econet:281]:   TEMP_SSA : 0.000000
[07:45:59][I][econet:281]:   TEMP_OSA : 282.090424
[07:45:59][I][econet:281]:   INDOORKW : 0.000000
[07:45:59][I][econet:281]:   ISCSPEED : -40.000000
[07:46:00][I][econet:281]:   FURNSTMP : 69.400002

Extract ODU HVAC sensors to a separate file

Somebody at discord with an HVAC posted the following photo
image
They have a gas furnace so all the air handler and ODU sensors are unknown.

It would be good to extract all the air handler and ODU sensors to separate file(s) so that users can choose whether they want to include them or not.
Then in the example we can have:

    # file: econet_hvac.yaml
    # files: [econet_hvac.yaml, econet_hvac_odu.yaml]

with a comment helping users which line they should uncomment based on their equipment.

Provide Better Handling of Alerts and Populate Specific Alert Information

Currently, our configurations don't include any details on Alerts. We need to get both Alert State (i.e. is there an active alert) and specific details on the active alert into the basic configurations.

This issue is blocked on the moment on getting an actual Alert State on a device so we can see how the ALRMALRT and ALMCODE1 states are populated.

Page 27 of this document provide some further details on Alarm usecases (at least for HPWH's):
https://s3.amazonaws.com/WebPartners/ProductDocuments/93804014-4C4E-4270-BC88-1163623DA4C8.pdf

Datapoints that are shorter than 8 characters in length aren't properly handled.

A few user reported that the SPT datapoint was no longer being properly read.

I threw together this quick test and was able to get them to read again:

  void ClearSpecialCharacters(std::string &strText, const std::string& strAllowed)
{
    const std::string cAllowed = strAllowed; //"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890,.-";
    
    
    auto new_end = std::remove_if(strText.begin(), strText.end(),
                                  [cAllowed](std::string::value_type c)
                                  { return cAllowed.find(c) == std::string::npos; });
    
    
    
    strText.erase(new_end, strText.end());
}

// Extracts strings of length OBJ_NAME_SIZE in pdata separated by 0x00, 0x00
void extract_obj_names(const uint8_t *pdata, uint8_t data_len, std::vector<std::string> *obj_names) {
  const uint8_t *start = pdata + 4;
  const uint8_t *endp = pdata + data_len;
  while (start < endp) {
    const uint8_t *end = std::min(start + OBJ_NAME_SIZE, endp);
    std::string s((const char *) start, end - start);
	ClearSpecialCharacters(s, "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_");
    obj_names->push_back(s);
    start = end + 2;
  }
}

I suspect the current code actually puts characters with a raw hex value of 0x00 into the string which causes the object name to not match the configured value.

"SPT" vs "SPT[0x00][0x00][0x00][0x00][0x00]"

HOTWATER / VACATIME are unsupported - Gen3 Heatpump

In looking at my Rheem Heatpump Water Header on ESPHOME-ECONET logs, I am seeing these errors periodically.

image

The two important lines are here:

[23:22:09][W][econet:337]:   HOTWATER : UNSUPPORTED
[23:22:09][W][econet:337]:   VACATIME : UNSUPPORTED

If I recall correctly, I have a Gen3 (with the color LCD display). The integration seems to work well otherwise, but if there is a way to remove these errors, it would be great.

My ESP-HOME config file:

---
substitutions:
  tx_pin: GPIO19
  rx_pin: GPIO22
  platform: esp32
  board: esp32dev

packages:
  econet:
    url: https://github.com/esphome-econet/esphome-econet
    ref: main
    file: econet_heatpump_water_heater.yaml

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Hotwaterheater Fallback Hotspot"
    password: "xxxxxxxxxxxxxx"

# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

ota:
  password: "xxxxxxxxxxxxxxxxxxxx"

Thanks for the wonderful work!
Ylian

Power entity missing for electric water heater

This component works great. I see there is documentation for reading power consumption (https://github.com/esphome-econet/esphome-econet/wiki/Monitoring-Power-Consumption-in-kWh). However, my installation does not have a power entity. How does one go about getting the power entity for this water heater?

Type: Electric Tank Water Heater
Model: XE50T12CS55U1

Build config:

---
substitutions:
  tx_pin: GPIO19
  rx_pin: GPIO22
  platform: esp32
  board: esp32dev

packages:
  econet:
    url: https://github.com/esphome-econet/esphome-econet
    ref: main
    file: econet_electric_tank_water_heater.yaml

dashboard_import:
  package_import_url: github://esphome-econet/esphome-econet/build-yaml/${name}-${platform}.yaml@${github_ref}
  import_full_config: false

# Uncomment the below to use Wi-Fi settings from your secrets.yaml file
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

api:
  encryption:
    key: !secret encryption_key

Home assistant device:
image
image
image

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.