A. O. Smith Water Heater Integration Enhancements

Very happy new year and huge appreciation for the new AO Smith Integration @bdr9!

I would like to request that activeAlerts be exposed via a sensor of some kind.

The app alert preferences either do not trigger (neither sms nor email) or my alert (code 44) is not worthy of a notification. I have a unique situation where my heater is in perpetual code 44 error status (the ‘smart anode’ feature is incompatible with electric powered anode rods) and my set point (according to the app) is locked until the error is cleared (unknown if it’s possible to clear remotely). I can still change modes physically though the option is not visible via the app while the error/alert is active.

My main reason for this is to expose error codes in case another error is triggered or for the purposes of triggering a notification to a user since AO Smith doesn’t seem to have it implemented.

@JustAnotherR1 Thanks! Glad you’re enjoying the integration. What model is your water heater? Are all of the features of the integration (setpoint, mode, hot water availability, and energy usage) working correctly despite the alert?

Regarding exposing the alert, I would need to think about which type of entity would make the most sense to expose this information. I’ll give that some thought.

I’ve got a HPTS-66.

I haven’t tested set-point control yet (it’s a hassle to trip the breaker to reset the water heater to clear the error). I enabled debug logging to see if any error messages came through (e.g. “heater is in an error state, unable to set temperature” like it says in the app), but I didn’t see any messages.

Changing modes works, which is awesome considering the app won’t let me. The different color schemes for the modes is a nice additional indicator (not sure if that’s your doing or the changes to the ‘thermostat’ card).

I was worried about the energy consumption being the total value, but it looks like the Energy dashboard calculates the diff to give daily usage values. I’ll be able to compare with the app’s graph after another 24h or so.

Agree on alerts. Maybe a string-joined value like thermostat equipment running. As nice as it would be to have descriptions, I think codes would still be ‘workable’. I would probably set up some sort of automation or script to provide additional context based on error code parsing.

I would think it would be clunky for individual error sensors for each code.

An odd thought would be using the newly added To-do List Entity. One could be active alerts and one could be historical. Though maybe confusing if users can mark To-do items as ‘complete’, which wouldn’t have any effect on the water heater.

Hi @JustAnotherR1, do you still have the alert present on your water heater? If so, can you update to HA 2024.2 and capture a diagnostic report from the integration, then attach it here? This will allow me to see how the alert is shown in the API response from A. O. Smith’s servers.

Yes, I do. I have a unique situation where my device will forever report a code 44 (anode depleted) warning. I’d venture the alert schema is the same for activeAlerts and alertHistory (the example below I had handy, but it was after an error clear, hence why it is in alertHistory).

Ideally, if more errors started popping up, I’d be able to see them in some way via the integration (e.g. just the most recent active alert may not work in my scenario).

{"data":{"signup":{"customerNumber":null,"devices":[{"alertSettings":{"faultCode":{"major":{"email":false,"sms":false},"minor":{"email":false,"sms":false}},"operatingSetPoint":{"email":false,"sms":false},"tankTemperature":{"highTemperature":{"email":false,"sms":false,"value":160},"lowTemperature":{"email":false,"sms":false,"value":120}}},"brand":"aosmith","deviceType":"NEXT_GEN_HEAT_PUMP","dsn":"DSN","hardware":{"hasBluetooth":true,"interface":"CONTROL_PANEL"},"id":"ID","install":{"address":"add","city":"city","country":null,"date":"2023-10-03","email":"email","group":null,"location":"Basement","phone":"123","postalCode":"123","professional":false,"registeredOwner":"J R","registrationDate":"2023-10-03","state":"TX"},"isRegistered":true,"junctionId":"jID","lastUpdate":1697072047094,"model":"HPTS-66 200 202172000","name":"HPTS-66","permissions":"USER","productId":"id","serial":"serial","users":[{"contactId":"id","email":"email","firstName":"a","isSelf":false,"lastName":"a","permissions":"USER"},{"contactId":"id","email":"email","firstName":"a","isSelf":true,"lastName":"a","permissions":"USER"}],"data":{"activeAlerts":[],"alertHistory":[{"active":false,"code":"44","information":{"en":{"advancedText":"The anode rod protecting this water heater has been depleted. Please refer to the manual for instructions to replace.","advancedTitle":"044 - Anode is Depleted","text":"044  Anode depletion warning","title":"Anode is Depleted"},"fr":{"advancedText":"L’anode protégeant ce chauffe-eau est épuisée. Se reporter aux instructions du manuel pour la changer.","advancedTitle":"044 - L’anode est épuisée","text":"044 Avertissement d’épuisement de l’anode","title":"L’anode est épuisée"}},"shouldRestrictChanges":true,"shouldShowSoftReset":null,"timestamp":1696895966000,"type":null}],"isOnline":true,"isWifi":true,"lastUpdate":1696897030000,"signalStrength":null,"heaterSsid":"iCOMM-DSN","ssid":"ssid","temperatureSetpoint":130,"temperatureSetpointPending":false,"temperatureSetpointPrevious":130,"temperatureSetpointMaximum":130,"error":"","modes":[{"mode":"HYBRID","controls":null},{"mode":"HEAT_PUMP","controls":null},{"mode":"ELECTRIC","controls":"SELECT_DAYS"},{"mode":"VACATION","controls":"SELECT_DAYS"}],"firmwareVersion":"5.4","hotWaterStatus":"HIGH","isAdvancedLoadUpMore":false,"isCtaUcmPresent":false,"isDemandResponsePaused":false,"isEnrolled":false,"mode":"HEAT_PUMP","modePending":false,"vacationModeRemainingDays":0,"electricModeRemainingDays":0,"isLowes":false,"canEditTimeOfUse":false,"timeOfUseData":null,"consumerScheduleData":null}}],"email":"email","firstName":"a","fullName":"a","id":"id","lastName":"a","mobilePhone":null,"phone":"","primaryProductCategory":"RESIDENTIAL","segment":"Facility Management","state":null,"tokens":{"accessToken":"AT","idToken":"IT","refreshToken":""}}}}