Anyone found an integration for "Smart Stove" pellet stove app?

I’m guessing you haven’t received anything yet. Capital One support sucks, to put it mildly. I’ll just throw 11 bucks in an envelope and mail it out…

Bank says you cashed the check on Feb 23, can you confirm that? Also I have a new board and igniter on the way, so hopefully I’ll be flashing the chip soon!

I know this is an older thread, but is anyone willing to flash and send me a chip?

Happy to pay via zelle, PayPal, venmo or any other payment of your choosing. I considered myself relatively competent with this stuff, but its getting cold and Id rather avoid mistakes!

I sent you a PM

Take a look at my GitHub - it really is complete and show how to do everything from the basic flash of the tywe1s chip all the way up to the Ultimate Mods.

Hi Jeff!
Been trying to find a way to send a new message,finally gave and resorted to replying to this old message…anyway, I’ve been trying to update the firmware for the pellet stove and it keeps failing. Not sure where else to address this issue…not a big deal because the pellet stove is working fine, but as a rule I try to keep software and firmware up to date. The error is “Failed to perform the action update/install. Error compiling basic-pellet-stove.yaml; Try again in ESPHome dashboard for more information.” I see errors when trying it in the esphome dashboard, but like a dog watching tv, it’s interesting but I have no idea how to fix it. If I should address this elsewhere, let me know, ok?

Thanks!

Cliff

no problem! copy and paste the full output of the ESPHome compiler. that might help narrow it down. I suspect its the chip type you selected…

Also, copy and paste your esphome config file here. I help you figure it out.

Jeff

you need to add ``` before and after all code sections or it’s not readable…

this hot mess:
source: github://pr#4032

components: tuya

refresh: 0s

esphome:

name: ${device_name}

comment: ${device_description}

platform: ESP8266

board: esp01_1m

api:

ota:

platform: esphome

wifi:

ssid: “somewhere”

password: “ktm-520exc”

power_save_mode: none

becomes this readable code:

  device_name: basic-pellet-stove-esp32
  device_description: Wood Pellet Stove running ESPHome Basic
  friendly_name: ESP32 Wood Pellet Stove
#----------------------------------------------------------

esphome:
  name: ${device_name}
  comment: ${device_description}
  
  platformio_options:
    upload_speed: 115200
    board_build.extra_flags:
    #REQUIRED FOR UART TO WORK
    - "-DARDUINO_USB_CDC_ON_BOOT=0"  # Override, defaults to '-DARDUINO_USB_CDC_ON_BOOT=1'  
    
wifi:
  #use_address: esp32-test.local
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  ap:
    ssid: "Fallback-Pellet-Stove-AP"
    password: "REDACTED"

THEN I can help you.

Updating /config/esphome/basic-pellet-stove.yaml
------------------------------------------------------------

INFO ESPHome 2024.10.2
INFO Reading configuration /config/esphome/basic-pellet-stove.yaml...
INFO Updating https://github.com/esphome/esphome.git@pull/4032/head
INFO Detected timezone 'America/New_York'
INFO Generating C++ source...
INFO Compiling app...
Processing basic-pellet-stove (board: esp01_1m; framework: arduino; platform: platformio/[email protected])
--------------------------------------------------------------------------------
HARDWARE: ESP8266 80MHz, 80KB RAM, 1MB Flash
Dependency Graph
|-- ESPAsyncTCP-esphome @ 2.0.0
|-- ESPAsyncWebServer-esphome @ 3.2.2
|-- DNSServer @ 1.1.1
|-- ESP8266WiFi @ 1.0
|-- ESP8266mDNS @ 1.2
Compiling .pioenvs/basic-pellet-stove/src/esphome/components/tuya/tuya.cpp.o
Compiling .pioenvs/basic-pellet-stove/src/esphome/core/entity_base.cpp.o
Compiling .pioenvs/basic-pellet-stove/src/esphome/core/helpers.cpp.o
Compiling .pioenvs/basic-pellet-stove/src/esphome/core/log.cpp.o
src/esphome/components/tuya/tuya.cpp: In member function 'void esphome::tuya::Tuya::send_local_time_()':
src/esphome/components/tuya/tuya.cpp:465:9: error: 'ESPTime' is not a member of 'esphome::time'; did you mean 'esphome::ESPTime'?
  465 |   time::ESPTime now = time_id->now();
      |         ^~~~~~~
In file included from src/esphome/components/time/real_time_clock.h:8,
                 from src/esphome/components/tuya/tuya.h:9,
                 from src/esphome/components/tuya/tuya.cpp:1:
src/esphome/core/time.h:17:8: note: 'esphome::ESPTime' declared here
   17 | struct ESPTime {
      |        ^~~~~~~
src/esphome/components/tuya/tuya.cpp:466:7: error: 'now' was not declared in this scope; did you mean 'pow'?
  466 |   if (now.is_valid()) {
      |       ^~~
      |       pow
Compiling .pioenvs/basic-pellet-stove/src/esphome/core/ring_buffer.cpp.o
*** [.pioenvs/basic-pellet-stove/src/esphome/components/tuya/tuya.cpp.o] Error 1
========================== [FAILED] Took 2.46 seconds ==========================
===== [ERROR] /config/esphome/basic-pellet-stove.yaml =====



======================== [SUMMARY] ========================
  - /config/esphome/basic-pellet-stove.yaml: FAILED

#----------------------------------------------------------
# No physical mods required to the display to use this file other than to get it to flash this code.
# Adds local sensors for all attributes previously in Tuya cloud
#
substitutions:
  device_name: basic-pellet-stove
  device_description: Wood Pellet Stove running ESPHome
  friendly_name: Wood Pellet Stove
#----------------------------------------------------------
external_components:
  - source: github://pr#4032
    components: tuya
    refresh: 0s
esphome:
  name: ${device_name}
  comment: ${device_description}
  platform: ESP8266
  board: esp01_1m
api:
ota:
  platform: esphome
wifi:
  ssid: "xxxxxxxx"
  password: "XXXXXXXX"
  power_save_mode: none
#
# Enable Home Assistant API
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Fallback-Pellet-Stove-AP"
    password: "REDACTED"

captive_portal:
    
time:
  - platform: homeassistant
    id: time_homeassistant
    on_time_sync:
      - component.update: sensor_uptime_timestamp
      
# Enable logging
logger:
  level: DEBUG
#  baud_rate: 0

uart:
  rx_pin: GPIO13
  tx_pin: GPIO15
  baud_rate: 9600

select:
  - platform: "tuya"
    tuya_id: "house"
    name: "ESPH House Power Select"
    enum_datapoint: 4
    options:
      0: P1
      1: P2
      2: P3
      3: P4
  - platform: "tuya"
    tuya_id: "house"
    name: "ESPH House ECO Select"
    enum_datapoint: 101
    options:
      0: ECO1
      1: ECO2

##DATA POINT VALUES
#1 - Power on (Heat)
#4 - Mode P1/P2/P3P4
#101 - ECO1/ECO2
#104 - Error Code
#106 Set Temp
#107 - Current Temp
#108 - Pipe Temp
#109 - Protect Temp
#-----------------
#Datapoint 1: switch (value: OFF)
#Datapoint 105: enum (value: 0)
#Datapoint 4: enum (value: 0)
#Datapoint 101: enum (value: 0)
#Datapoint 106: int value (value: 68)
#Datapoint 107: int value (value: 64)
#Datapoint 108: int value (value: 68)
#Datapoint 109: int value (value: 72)
#Datapoint 104: bitmask (value: 0)
#GPIO Configuration: status: pin 5, reset: pin 0
#Product: '{"p":"8Dj5zVjGqPSXaUgf","v":"1.0.0","m":0}'

# Register the Tuya MCU connection
tuya:
  id: "house"
  
#These arent needed but greatly help in debugging
sensor:
  - platform: "tuya"
    name: "Stove-Power On"
    sensor_datapoint: 1
  - platform: "tuya"
    name: "Stove-Error Code"
    sensor_datapoint: 104
  - platform: "tuya"   
    name: "Stove-ECO Mode"
    sensor_datapoint: 101
  - platform: "tuya"
    name: "Stove-Power Mode"
    sensor_datapoint: 4
  - platform: "tuya"
    name: "Stove-DP#105"
    sensor_datapoint: 105
  - platform: "tuya"
    name: "Stove-Set Temp"
    sensor_datapoint: 106
  - platform: "tuya"
    name: "Stove-Current Temp"
    sensor_datapoint: 107
  - platform: "tuya"
    name: "Stove-Pipe/Exhaust Temp"
    sensor_datapoint: 108    
#
  - platform: uptime
    id: sensor_uptime
#sensor:
  - platform: wifi_signal
    name: ${friendly_name} Signal
    update_interval: 60s    
  - platform: template
    id: sensor_uptime_timestamp
    name: "${friendly_name} Uptime"
    device_class: "timestamp"
    accuracy_decimals: 0
    update_interval: never
    lambda: |-
      static float timestamp = (
        id(time_homeassistant).utcnow().timestamp - id(sensor_uptime).state
      );
      return timestamp;
#
climate:
  - platform: tuya
    reports_fahrenheit: true #bug in these stoves required this fix
    name: "Wood Pellet Stove"
    switch_datapoint: 1
    target_temperature_datapoint: 106
    current_temperature_datapoint: 107
#    ```

Remove these lines and try again. They are no longer needed.

external_components:

  • source: github://pr#4032
    components: tuya
    refresh: 0s

Then it should compile fine!
Jeff

ok, i removed those lines and ran the update again (in home assistant). it seems to have completed (or at least no errors) but the version number stays the same. so i ran “update all” in esphome and it seems to have worked, thanks! you rock!

1 Like

Awesome. That’s great! I’m happy to help.

I know it been couple years but I just bought Cleveland iron works and interested if you have any controllers that are programmed

No, this is a very do it yourself project, although I will have circuit boards delivered next week and I’ll have extras.

HI Jeff!
So I just tried the latest upgrade (Basic-Pellet-Stove Firmware 2025.2.0) for the pellet stove, and after making the required changes in the config, it compiled ok but I got a connection refused error. It is the correct ip address, at least it’s the one I set up when I did a dhcp reservation when I first installed the stove. I tried the upgrade again when the stove was not running, same error. Any hints as to what I might be doing wrong? Thanks again!

Paste your logs?

INFO ESPHome 2025.2.0
INFO Reading configuration /config/esphome/basic-pellet-stove.yaml...
INFO Detected timezone 'America/New_York'
WARNING GPIO15 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
INFO Generating C++ source...
INFO Compiling app...
Processing basic-pellet-stove (board: esp32dev; framework: arduino; platform: platformio/[email protected])
--------------------------------------------------------------------------------
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
Dependency Graph
|-- AsyncTCP-esphome @ 2.1.4
|-- WiFi @ 2.0.0
|-- FS @ 2.0.0
|-- Update @ 2.0.0
|-- ESPAsyncWebServer-esphome @ 3.2.2
|-- DNSServer @ 2.0.0
|-- ESPmDNS @ 2.0.0
RAM:   [=         ]  12.6% (used 41196 bytes from 327680 bytes)
Flash: [=====     ]  49.3% (used 903757 bytes from 1835008 bytes)
========================= [SUCCESS] Took 3.79 seconds =========================
INFO Successfully compiled program.
INFO Connecting to 192.168.50.126 port 3232...
ERROR Connecting to 192.168.50.126 port 3232 failed: [Errno 111] Connection refused
ERROR Connection failed.

that might be a password or encryption problem. You may need to flash it connected to your computer. Also, when posting code or logs, use 3 back tics to start and end

imageimageimage
logs
code
imageimageimage

then its readable like this instead of a mess.

NFO ESPHome 2025.2.0
INFO Reading configuration /config/esphome/basic-pellet-stove.yaml…
INFO Detected timezone ‘America/New_York’
WARNING GPIO15 is a strapping PIN and should only be used for I/O with care.

Ok, thanks. I’ll just stay on this version then.