ESPHome Nest thermostat clone on cheap rotary display

Hey all, would anyone be able to recommend a device to buy as there are multiple links? perhaps add one the the github page?

You mean other than the link already there? added since your post.

What is the difference between the two linked rotary knobs @veli ? I see a huge difference in price between them. Does your code work on both of them?

A small difference in price - don’t be fooled by the price of the debugging tool!

as is see:

  1. this has a backplate
  2. this actually didnt, which is what i got
  3. if you mean the fancy one in the video posted, its a whole another thing

For 1 and 2, to be sure get 2. To test, get either but read the description on aliexpress :slight_smile: before deciding.

For 3 - i would go for OpenHASP if its supported.


My until-now useless square thing is ideal for OpenHASP, since the display type is not supported by esphome, i could run the web server and read touch with a custom component:

external_components:
  - source: github://gpambrozio/esphome@FT6336U-touch
    components: [ ft63x6 ]

But since display is blank (not supported) it was useless.


I wanted everything running ESPHome, but after trying openhasp, i changed my mind. I would try to get it working on the rotary thing as well. So you dont have to reflash it every time you want to show something different on it.

Awesome project! I also wanna try and get this to work at home. I ordered one of the ‘fancy’ ones.

Did you ever end up trying anything with that specific device? Or any thoughts, considerations? I think you said you’d go for openHASP with this one, why?

Hi,
i found this documentation:

also you can just flash it via the mx1.25x7 port. the pins are the same as in this dongle here:

GPIO0 is Boot on the dongle

so no need to open the device

EDIT:
has anyone a nice way to mount this thing?

EDIT2:
flashing it from nESP works nice, but when i add it to home assistant and goto esphome and Adopt it i get an error while compiling:

i need to remove under esphome those lines:

platform_packages:
  - framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32    

or else i get this error:

INFO ESPHome 2023.11.6
INFO Reading configuration /config/esphome/nesp.yaml...
WARNING Found 'WIFI:S:${ap_ssid};T:WPA;P:${ap_password};;' (see qr_code->0->value) which looks like a substitution, but 'ap_ssid' was not declared
WARNING Found 'WIFI:S:${ap_ssid};T:WPA;P:${ap_password};;' (see qr_code->0->value) which looks like a substitution, but 'ap_password' was not declared
WARNING Found 'WIFI:S:${ap_ssid};T:WPA;P:${ap_password};;' (see qr_code->0->value) which looks like a substitution, but 'ap_ssid' was not declared
WARNING Found 'WIFI:S:${ap_ssid};T:WPA;P:${ap_password};;' (see qr_code->0->value) which looks like a substitution, but 'ap_password' was not declared
WARNING The selected Arduino framework version is not the recommended one. If there are connectivity or build issues please remove the manual version.
WARNING The selected Arduino framework version is not the recommended one. If there are connectivity or build issues please remove the manual version.
INFO Generating C++ source...
INFO Compiling app...
Processing nesp-arbeitszimmer (board: esp32-s2-saola-1; framework: arduino; platform: https://github.com/platformio/platform-espressif32.git)
--------------------------------------------------------------------------------
HARDWARE: ESP32S2 240MHz, 320KB RAM, 4MB Flash
 - framework-arduinoespressif32 @ 3.0.0+sha.51cb927 
 - toolchain-riscv32-esp @ 8.4.0+2021r2-patch5 
 - toolchain-xtensa-esp32s2 @ 8.4.0+2021r2-patch5
KeyError: 'framework-arduinoespressif32-libs':
  File "/usr/local/lib/python3.11/dist-packages/platformio/builder/main.py", line 173:
    env.SConscript("$BUILD_SCRIPT")
  File "/data/cache/platformio/packages/tool-scons/scons-local-4.5.2/SCons/Script/SConscript.py", line 598:
    return _SConscript(self.fs, *files, **subst_kw)
  File "/data/cache/platformio/packages/tool-scons/scons-local-4.5.2/SCons/Script/SConscript.py", line 285:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
  File "/data/cache/platformio/platforms/espressif32@src-5f117260f75b328038ec9d3fd0e14a68/builder/main.py", line 346:
    target_elf = env.BuildProgram()
  File "/data/cache/platformio/packages/tool-scons/scons-local-4.5.2/SCons/Util/envs.py", line 242:
    return self.method(*nargs, **kwargs)
  File "/usr/local/lib/python3.11/dist-packages/platformio/builder/tools/piobuild.py", line 61:
    env.ProcessProgramDeps()
  File "/data/cache/platformio/packages/tool-scons/scons-local-4.5.2/SCons/Util/envs.py", line 242:
    return self.method(*nargs, **kwargs)
  File "/usr/local/lib/python3.11/dist-packages/platformio/builder/tools/piobuild.py", line 121:
    env.BuildFrameworks(env.get("PIOFRAMEWORK"))
  File "/data/cache/platformio/packages/tool-scons/scons-local-4.5.2/SCons/Util/envs.py", line 242:
    return self.method(*nargs, **kwargs)
  File "/usr/local/lib/python3.11/dist-packages/platformio/builder/tools/piobuild.py", line 342:
    SConscript(env.GetFrameworkScript(name), exports="env")
  File "/data/cache/platformio/packages/tool-scons/scons-local-4.5.2/SCons/Script/SConscript.py", line 662:
    return method(*args, **kw)
  File "/data/cache/platformio/packages/tool-scons/scons-local-4.5.2/SCons/Script/SConscript.py", line 598:
    return _SConscript(self.fs, *files, **subst_kw)
  File "/data/cache/platformio/packages/tool-scons/scons-local-4.5.2/SCons/Script/SConscript.py", line 285:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
  File "/data/cache/platformio/platforms/espressif32@src-5f117260f75b328038ec9d3fd0e14a68/builder/frameworks/arduino.py", line 41:
    SConscript(
  File "/data/cache/platformio/packages/tool-scons/scons-local-4.5.2/SCons/Script/SConscript.py", line 662:
    return method(*args, **kw)
  File "/data/cache/platformio/packages/tool-scons/scons-local-4.5.2/SCons/Script/SConscript.py", line 598:
    return _SConscript(self.fs, *files, **subst_kw)
  File "/data/cache/platformio/packages/tool-scons/scons-local-4.5.2/SCons/Script/SConscript.py", line 285:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
  File "/data/cache/platformio/packages/framework-arduinoespressif32@src-4942392190fa5de522c4d55bf2967706/tools/platformio-build.py", line 40:
    FRAMEWORK_LIBS_DIR = platform.get_package_dir("framework-arduinoespressif32-libs")
  File "/usr/local/lib/python3.11/dist-packages/platformio/platform/_packages.py", line 32:
    pkg = self.get_package(name)
  File "/usr/local/lib/python3.11/dist-packages/platformio/platform/_packages.py", line 29:
    return self.pm.get_package(spec or self.get_package_spec(name))
  File "/usr/local/lib/python3.11/dist-packages/platformio/platform/_packages.py", line 21:
    owner=self.packages[name].get("owner"),
========================== [FAILED] Took 0.51 seconds ==========================``
type or paste code here

Hi, just for info.

My button was connected to GPIO7 and not 2. Also the button is conencted to 5V, like it is shown here:

so i changed the code like this:

binary_sensor:
  - platform: gpio
    pin: 
      number: 7 #GPIO5 #GPIO14 # GPIO12
#      mode: INPUT_PULLUP
#      inverted: true
      mode:
        input: true
        pulldown: true
    name: Button
    internal: false
    id: ${device_name}_button
    icon: mdi:circle-outline
## Cant get it to work reliably    
    on_press:
      - lambda: |-      
          ESP_LOGW("button", "pressed at %lu", millis());
    on_release:
      - lambda: |-      
          ESP_LOGE("button", "release at %lu", millis());
#    on_press:
#      then: 
#        - lambda: |-
#            ESP_LOGE("button", "on_press");        
#        - script.execute: vibrate
#    on_click:
#      then: 
#        - lambda: |-
#            ESP_LOGE("button", "on_click");        
#    on_multi_click:
#      - timing: !include common/click/single.yaml
#        then:
#          - script.execute: display_on 

and now the button is working for me

i need to say that i got the 2.4" display with an esp32 s2 solo and i saw that there is an 2.1" display with an Esp32 C3 so that can be wired different

There is now a pull request up with a patch to allow setup of frameworkarduinoespressif32-libs, i.e. that will fix the KeyError. #1281

However, there are a bunch of breaking changes in alpha 3.0.0, so your code might not even compile with the new package … but this will at least allow you to get to that step.