Code Monkey home page Code Monkey logo

esphome_components's Introduction

esphome_components

My collection of components for esphome

To use these components, use the external components.

Example:

external_components:
  - source:
      type: git
      url: https://github.com/ssieb/esphome_components
    components: [ component1, component2 ]

NOTE: Some components have been merged to esphome 🎉

esphome_components's People

Contributors

ffux avatar infamy avatar ssieb avatar stephan11111 avatar thelastgimbus 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  avatar  avatar

esphome_components's Issues

Uart_mitm usage question

does the uart mitm forward rx and tx or is it one uart pin each?

since hw uarts are limited to three, does each pin/uart has to be seperated?
could we maybe have a way to configure which pin/direction(rx/tx) to use?
could we also have a filter for forwarding, like a string array to not forward if is contained in the uart payload?

cwww2 light does not compile in 2021.8.0

looks like in 2021.8.0 they changed color modes and its broken something

Problematic code: here

In file included from src/esphome.h:14:0,
                 from src/main.cpp:3:
src/esphome/components/cwww2/cwww2_light_output.h: In member function 'virtual esphome::light::LightTraits esphome::cwww2::CWWW2LightOutput::get_traits()':
src/esphome/components/cwww2/cwww2_light_output.h:19:12: error: 'class esphome::light::LightTraits' has no member named 'set_supports_brightness'
     traits.set_supports_brightness(true);
            ^
src/esphome/components/cwww2/cwww2_light_output.h:20:12: error: 'class esphome::light::LightTraits' has no member named 'set_supports_rgb'
     traits.set_supports_rgb(false);
            ^
src/esphome/components/cwww2/cwww2_light_output.h:21:12: error: 'class esphome::light::LightTraits' has no member named 'set_supports_rgb_white_value'
     traits.set_supports_rgb_white_value(false);
            ^
src/esphome/components/cwww2/cwww2_light_output.h:22:12: error: 'class esphome::light::LightTraits' has no member named 'set_supports_color_temperature'
     traits.set_supports_color_temperature(true);
            ^
*** [.pioenvs/arlec-globe/src/main.cpp.o] Error 1

Failed to compile the firmware with Magic Switch for Sonoff Basic R4

ESPHome version
2024.2.2

Project YAML
esphome:
name: sonoffbasicr4
friendly_name: SonoffBasicR4
platformio_options:
board_build.mcu: esp32c3
board_build.variant: esp32c3

esp32:
variant: ESP32C3
board: esp32dev
framework:
type: esp-idf
sdkconfig_options:
CONFIG_BT_BLE_50_FEATURES_SUPPORTED: y
CONFIG_BT_BLE_42_FEATURES_SUPPORTED: y
CONFIG_ESP_TASK_WDT_TIMEOUT_S: "10"

external_components:

magic_switch:
pin: 5
on_switch:
then:
- light.toggle: light_1

esp32_ble_tracker:
scan_parameters:
active: true

bluetooth_proxy:
active: true

binary_sensor:

  • platform: gpio
    pin:
    number: GPIO9
    mode:
    input: true
    pullup: true
    inverted: true
    id: button_1
    on_press:
    then:
    - light.toggle: light_1

output:

  • platform: gpio
    pin: GPIO4
    id: relay_1

light:

  • platform: binary
    name: Light
    id: light_1
    output: relay_1

status_led:
pin:
number: GPIO6
inverted: yes

Enable logging

logger:

LOG
Linking .pioenvs/sonoffbasicr4/firmware.elf
/data/cache/platformio/packages/toolchain-riscv32-esp/bin/../lib/gcc/riscv32-esp-elf/8.4.0/../../../../riscv32-esp-elf/bin/ld: .pioenvs/sonoffbasicr4/src/main.o: in function setup()': /data/build/sonoffbasicr4/src/main.cpp:157: undefined reference to vtable for esphome::magic_switch::MagicSwitch'
/data/cache/platformio/packages/toolchain-riscv32-esp/bin/../lib/gcc/riscv32-esp-elf/8.4.0/../../../../riscv32-esp-elf/bin/ld: /data/build/sonoffbasicr4/src/main.cpp:157: undefined reference to `vtable for esphome::magic_switch::MagicSwitch'
collect2: error: ld returned 1 exit status
*** [.pioenvs/sonoffbasicr4/firmware.elf] Error 1
========================= [FAILED] Took 14.74 seconds =========================

Bit mapped bytes need to be swapped

Thanks again for developing this custom component. I got around to assembling my circuit and testing today. After seeing garbled characters, but with the correct number of characters in the correct digit position, I found that the order of the 8-bit bytes in the 16-bit number of the bitmap need to be swapped in this line:
https://github.com/ssieb/custom_components/blob/3067cf945198ee357232269aa0fe35ddbf1a68cf/lcd_ht16k33/ht16k33_display.cpp#L71

I replaced that line with this:
this->buffer_[pos] = (fontc << 8) | (fontc >> 8);

And that fixed it! This may not be the most efficient way of swapping the bytes around, and maybe it would be better to do it in the i2C writes, but I couldn't find that code - so feel free to improve.

The brightness works too, after I realised that I have to enter it as a float between 0.0 and 1.0! Might be better to have it as an integer between 0 and 15?

I also added some extra code to include decimal point. The entire function that works for me is:

void HT16K33LCDDisplay::print(const char *str) {
  uint8_t pos = 0;
  uint16_t fontc = 0;
  for (; *str != '\0'; str++) {
    if (pos >= 4) {
      ESP_LOGW(TAG, "writing off the screen!");
      break;
    }

    uint8_t c = *reinterpret_cast<const uint8_t *>(str);
    if (c > 127)
      fontc = 0;
    else
      fontc = pgm_read_word(&alphafonttable[c]);
    this->buffer_[pos] = (fontc << 8) | (fontc >> 8);
    //ESP_LOGW(TAG, "pos[%u]=%c bitmap=%#04x", pos, c, fontc);
    
    // Look ahead to next character, if decimal point, add it to the current digit
    uint8_t next_char = str[1];
    if ((next_char != '\0') && (next_char == '.')) {
      // set the decimal point segment (bit-14) in current digit
      this->buffer_[pos] |= 0b0000000001000000;
      // discard the decimal point
      str++;
      if (*str == '\0')
        // break in the unlikely event the string ends with a decimal point!
        break;
    }
    pos++;
  }
}

Here's a little test YAML that cycles through all the characters in the first digit position:

display:
# Custom component for Quad-Alphanumeric LED display by Samuel Sieb
# See https://github.com/ssieb/custom_components/tree/master/lcd_ht16k33
  - platform: lcd_ht16k33
    address: 0x70
    update_interval: 500ms
    id: led_display
    lambda: |-
      it.set_brightness(0.5);
      it.printf("%c", id(counter));
      if (++id(counter) > 127)
        id(counter) = 0;

A noob question: how to run/use a "keypad" component?

Hello!
I'm struggling, but with no success. Can someone please point me into correct procedure? I just don't know how to run "keypad" (or any other, to be honest) component. I copied keypad folder into config/custom_components, i included keypad_text_sensor.h into my ESPHome code, but i keep getting error : component "keypad" not found.
What am i doing wrong? HA and ESPHome are wonderfull apps, it's just that beginner's help is way too hard to find...

Growatt - not expected output

Have tried https://github.com/ssieb/custom_components/tree/master/growatt

This esphome:

esphome:
  name: growatt_modbus
  platform: ESP8266
  board: d1_mini

substitutions:
  esp_name: growatt_modbus

wifi:
  ssid: "IOTDOM"
  password: !secret IOTDOM_wifi_key
  use_address: 192.168.6.42
  domain: .local.local
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "${esp_name} fb Hotspot"
    password: !secret Fallback_Hotspot

captive_portal:

# Enable logging
logger:
  level: VERBOSE
#  baud_rate: 9600

# Enable Home Assistant API
api:

ota:

time:
  - platform: homeassistant
    id: homeassistant_time

uart:
  tx_pin: D1
  rx_pin: D2
  baud_rate: 9600
  # stop_bits: 2

sensor:
  - platform: wifi_signal
    name: "${esp_name} - WiFi Signal"
    update_interval: 6s
    
  - platform: uptime
    name: "${esp_name} - Uptime"
    icon: mdi:clock-outline
    update_interval: 60s
    
  - platform: growatt
    id: my_growatt
    input_power:
      id: input_power
      name: "${esp_name} Input Power"
    pv1_voltage:
      id: pv1_voltage
      name: "${esp_name} PV1 Voltage"
    pv1_current:
      id: pv1_current
      name: "${esp_name} PV1 Current"
    pv1_power:
      id: pv1_power
      name: "${esp_name} PV1 Power"
    pv2_voltage:
      id: pv2_voltage
      name: "${esp_name} PV2 Voltage"
    pv2_current:
      id: pv2_current
      name: "${esp_name} PV2 Current"
    pv2_power:
      id: pv2_power
      name: "${esp_name} PV2 Power"
    grid_frequency:
      id: grid_frequency
      name: "${esp_name} Grid Frequency"
    output_power:
      id: output_power
      name: "${esp_name} Output Power"
    temperature:
      id: temperature
      name: "${esp_name} Temperature"

# https://github.com/ssieb/custom_components/tree/master/growatt

Gives this output:
image

Feature Request - Ufire isolated probe interface

Hi Sam! I found your ezo custom component through LEDgardener.com/forum
I purchased these probes not knowing the code is specific for these devices, is there a possibility of you making a custom component for these? Or do you know of someone that may be able to help?
Please email me at [email protected]
Looking forward to hearing from you

combining ezo and i2c_button functionality

Hi! I'm trying to find a way to control the Atlas Scientific EZO Pumps (I believe you've worked on the sensors before) in ESPHome because there isn't a way to turn on or off an i2c sensor and that's what the EZO devices are classified as.

I found your i2c_button component and believe it would work for the pumps if there was the ability to turn them on/off virtually (like a switch component) instead of reading the state of the physical button presses (like a sensor). I added the i2c_button component to my esphome config file and assigned one of my pumps to it. When I flashed the firmware the pump was recognized and spammed the "Button B Long Clicked" log.

I'm sure it's just a tiny bit of code to make a hybrid "i2c_switch" component but unfortunately my coding skills are terrible.

ht16k33_alpha: set_brightness is in 1/16 steps

HI, as the "set_brightness" value is multiplied by 16 in ht16k33_display.cpp (int val = (int) round(level * 16) it would may make sence to mention in the README.md to use vlaues from 0.0625 to 1 with 0.0625 steps.

web_handler Can URL params be accessed in the automation?

Hi Ssieb, Is it possible to access url params e.g /setval?value=100 from within the automation linked to web_handler?
Use case is I have a template sensor that I want set the of via the web server e.g not using Home Assistant.
I've been able to increment the value by 1 each time the URL is called but I'd like to be able to set the value to a specific value if possible.
Thanks

`keypad` does not allow two buttons pressed at the same time

Hi there!

I wanted to make a simple panel with few buttons to control my lighting. I have configured keypad like this:

keypad:
  id: keypad1
  rows:
    - pin: D5
    - pin: D6
  columns:
    - pin: TX
    - pin: RX
    - pin: D1
  keys: "123456"
  has_diodes: false

binary_sensor:
  - platform: keypad
    keypad_id: keypad1
    id: btn_1
    name: button 1
    key: 1
  - platform: keypad
    keypad_id: keypad1
    id: btn_2
    name: button 2
    key: 2
  - platform: keypad
    keypad_id: keypad1
    id: btn_3
    name: button 3
    key: 3
  - platform: keypad ...

But this doesn't detect two buttons pressed at once! Only one :(

I also tried without "keys" (and row + col instead), but this doesn't work either...

Feature Request: Add 'Is Moving' and other 'current operation' sensors to desky

It would be handy if desky had some sensors telling you about it's current operation, much like Covers (e.g COVER_OPERATION_OPENING).

Perhaps DESKY_OPERATION_STATIONARY, DESKY_OPERATION_RAISING, and DESKY_OPERATION_LOWERING ?

And perhaps a seperate binary sensor for whether it is moving or not?

I have been testing with something similar to this for the latter , but I don't think it's a good implementation?

Thank you!

desky:
  id: my_desky
  up:    
    number: 4 #D2
    inverted: true 
  down:  
    number: 5 #D1
    inverted: true
  stopping_distance: 15  # optional distance from target to turn off moving, default 15  
  height:  # Sensor publishing the current height
    name: Desky Height
    id: desky_height
    internal: true
    filters:
    - delta: 0.05 #Only send values to HA if they change
    on_value:
      then:
          #Because of the delta filter, if the value changes, then the desk is moving (except on first value)
        - binary_sensor.template.publish:
            id: desky_is_moving
            state: ON
        - delay: 300ms
          #Assume it's stopped moving if no height changes after a short time.
        - binary_sensor.template.publish:
            id: desky_is_moving
            state: Off
          
binary_sensor:
  - platform: template
    id: desky_is_moving
    name: "Desky Is Moving"
    filters:
      - delayed_off: 400ms
    #If the desk isn't moving for a bit we better turn off attempts at movement. It's like poor man's collision detection? 
    on_release:
      then:
        - button.press: desky_stop_desk

ht16k33_alpha: Rendering issues with module

This issue is based on:

The scrolling doesn't look like it's working right there either. The one on the far right isn't changing. You could open another issue about this if you want. I'll see if I can get one of these modules, but it will be a while.

Originally posted by @ssieb in #18 (comment)

I have a rendering issue with my HT16K33 module. Interacting with for example brightness works fine, scrolling seems to work at least for the first 3 digits (of 4), but letters or numbers (and symbols i guess) are hard to recognize ;).

Code

globals:
  - id: on_boot
    type: bool
    restore_value: false
    initial_value: 'true'

substitutions:
  # Device informations
  device_friendly_name: "HT16K33 Test"
  device_name: "ht16k33-test"
  device_entity_id: "ht16k33_test"
  # Pinout
  i2c_a_sda_pin: GPIO21
  i2c_a_scl_pin: GPIO22

# Device configuration
esphome:
  name: $device_name
  platform: esp32
  board: heltec_wifi_kit_32_v2
  on_boot:
    priority: -100
    then:
      - lambda: |-
          id(on_boot) = false;
      - script.execute: down # start brightness-test-script

# Import custom_components
external_components:
  - source:
      type: local
      path: custom_components
    components: [ ht16k33_alpha ]
    
# Enable logging
logger:

# Enable Home Assistant API
api:
  password: !secret api_password
  encryption:
    key: !secret api_encryption_key

ota:
  password: !secret ota_password

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: $device_friendly_name
    password: !secret fallback_password

captive_portal:

web_server: # Could be disabled if performance issues appear
  port: 80
  auth:
    username: !secret esphome_web_username
    password: !secret esphome_web_password

# Test script to see if changing the brightness works
script:
  - id: up
    then:
      - lambda: "id(${device_entity_id}_display).set_brightness(0.8);"
      - delay: 5s
      - script.execute: down
  - id: down
    then:
      - lambda: "id(${device_entity_id}_display).set_brightness(0.2);"
      - delay: 5s
      - script.execute: up

# Set up I2C bus
i2c:
  - id: bus_a
    sda: $i2c_a_sda_pin
    scl: $i2c_a_scl_pin
    scan: true

# Set up display component
display:
  - platform: ht16k33_alpha
    address: 0x71
    scroll: true
    scroll_speed: 250ms
    scroll_dwell: 2s
    scroll_delay: 3
    lambda: |-
      it.print("HT16K33 Display Test");
    id: ${device_entity_id}_display

Video

imgur

Hardware

ESP32 (Mouser.com)
HT16K33 (Mouser.com)

ht16k33_alpha: SparkFun pinout support

Sparkfun also sells their own analogue. However, comparing Adafruit's Schematic and SparkFun's shows that SparkFun has a pretty wildly different wiring diagram, in addition to the slightly different display (rather than Adafruit's 4 decimal points, SparkFun's has one decimal point and one colon).

If you boil away all the C++ in SparkFun's Arduino library for their displays, ignoring the colon and dots, SparkFun's basically turned the frame buffer on its side: the fourteen bits per glyph, which Adafruit packed into two contiguous bytes, are now spread out as two bits in each of seven bytes. In particular, the ith glyph is represented as 0x11 << i, and the framebuffer's 16 bytes are arranged as...

  1. Segments A (0x01) and G2 (0x10)
  2. 0 (or 1 to engage the colon)
  3. Segments B and H
  4. 0 (or 1 to engage the dot)
  5. Segments C and J
  6. 0
  7. Segments D and K
  8. 0
  9. Segments E and L
  10. 0
  11. Segments F and M
  12. 0
  13. Segments G1 and N
  14. 0
  15. 0
  16. 0

If bit-shuffling's your thing, you can map the 16 bits of a font table entry (that is, with segments densely packed from N down to A in the LSB) to the corresponding positions within the 16 * 8 = 2 * 64 = 128-bit framebuffer with something like this wad of Hacker's Delight-esque code (in little-endian representation; big-endian left as an exercise to the reader):

/** Send 0bABCD to 0b0A0B0C0D */
uint32_t nibble_interdigitate_zeros(uint32_t v0) {
  uint32_t v1 = (v0 | (v0 << 2)) & 0x33;  /* 0b00AB00CD */
  return        (v1 | (v1 << 1)) & 0x55;
}

/** Send 0bABCDEFGH to 0b000A000B...000H */
uint32_t byte_interdigitate_three_zeros(uint32_t v0) {
  uint32_t v1 = (v0 | (v0 << 12)) & 0x000F000F;  /* ABCD in top word, EFGH in low word */
  uint32_t v2 = (v1 | (v1 <<  6)) & 0x03030303;  /* AB, CD, EF, GH in successive bytes */
  return        (v2 | (v2 <<  3)) & 0x11111111;
}

/** Send 0xABCDEFGH to 0x00AB00CD00EF00GH */
uint64_t u32_interdigitate_zero_bytes(uint32_t v0) {
  uint64_t v1 = (v0 | (v0 << 16)) & 0x0000FFFF0000FFFF;
  return        (v1 | (v1 <<  8)) & 0x00FF00FF00FF00FF;
}

void mangle(uint16_t c, int glyph, uint64_t *fb) {
  /* Pack segments K D J C H B G2 A into a byte and then expand that byte */
  fb[0] |= u32_interdigitate_zero_bytes(
            byte_interdigitate_three_zeros(
                nibble_interdigitate_zeros((c & 0x000F) >>  0)       /* Segments D C B A */
             | (nibble_interdigitate_zeros((c & 0x0780) >>  7) << 1) /* Segments K J H G2 */
            ) << glyph); /* And shifted left for glyph 0 through 3, and then expanded again */

  /* Do the same thing for segments N G1 M F L E */
  fb[1] |= u32_interdigitate_zero_bytes(
            byte_interdigitate_three_zeros(
                nibble_interdigitate_zeros((c & 0x0070) >>  4)       /* Segments G1 F E */
             | (nibble_interdigitate_zeros((c & 0x3800) >> 11) << 1) /* Segments N M L */
            ) << glyph);

However, I'm not sure how best to handle : and . and how to handle switching between the two display designs. Can the ESPHome machinery generate calls to templatized constructors?

Feature Request: Method to send temperature to EC sensor.

The EC sensor https://atlas-scientific.com/circuits/ezo-conductivity-circuit/ allows calibrating the sensor with the temperature to get more accurate readings. Their example code here : https://github.com/Atlas-Scientific/Ezo_I2c_lib/tree/master/Examples/temp_comp_example

Would it be possible for this to automatically take the temp reading from the RTD sensor if you have one? If not, how would you recommend periodically updating this temperature calibration?

Feature request: scrolling text for HT16K33 4 character alphanumeric

Once we have fixed the basics for the HT16K33 display as per this issue

This might be pushing the friendship, but what are the chances of implementing scrolling text for this?

I think about 20 characters would be nice, just simple scrolling from right to left and then repeat? I'd be happy to code it if you give me a starting point with the method structure! Not sure if there should be a parameter in the YAML scroll: true or simply make it automatic when buffer length > 4 chars? Might need a speed parameter too like scroll_speed: 250ms which is the pause time for each character.

Let me know your thoughts - thanks!

Debugging mode via uart_mitm does not work

Could you add the ability to work in debug mode to uart_mitm?

I use the uart_mitm component for the Philips EP 5444 Coffee machine, so that I can control the coffee machine from the control panel and at the same time download the data for decryption. There is a ready-made project ESPHome-Philips-Smart-Coffee and it is suitable for coffee machines of the 1200-2200 series, and for the 5400 series it is necessary to find bits for control.

external_components:
  - source:
      type: git
      url: https://github.com/ssieb/custom_components
    components: [ uart_mitm ]

uart_mitm:
  uart1: uart_display
  uart2: uart_mainboard

uart:
#UART connection to the control panel. We read the data from the control panel and send it to the motherboard
 - rx_pin: GPIO16 #Reading data from the control panel
   tx_pin: GPIO17 #We send the data to the control panel
   baud_rate: 115200
   id: uart_display
   stop_bits: 1
   data_bits: 8
   parity: none
   debug:
     direction: TX
     dummy_receiver: true

#UART connection to the motherboard. We read the data from the motherboard and send it to the control panel
 - rx_pin: GPIO3 #Reading data from the motherboard
   tx_pin: GPIO1 #We send data to the motherboard
   baud_rate: 115200
   id: uart_mainboard
   stop_bits: 1
   data_bits: 8
   parity: none
   debug:
     direction: TX
     dummy_receiver: true

I can only use a parallel connection for debagging, and then I don't need to use this uart_mitm component. See the diagram in the figure
image

If I need to embed the ESP into the wiring and for the ESP to receive and send data, then I can't do without the uart_mitm component, but it works if I don't enable debugging mode. If I turn on debugging mode, the screen goes off and the coffee machine is not controlled from the control panel
image

HT16K33 more than 4 digits

Hi, this is not so much an issue, but a question.
I created some "backpacks" similar to Adafruit's 14-segment alphanumeric displays, however my displays have 6 digits rather than 4.
I created a new library for Arduino here : https://github.com/WarmCatUK/WarmCat_6x14Backpack
Details of the physical backpack are here if you're interested: http://warmcat.uk/?p=322

I'm trying to amend your code to utilise the extra two digits of my displays, but I can't quite follow your code. Could you perhaps point me to where you create the buffer limiting it to 4 digits?

Thanks in advance, Wayne

Wiegand Feature request: support raw hex Wiegand values or non-standard bit lengths

I have multiple cards that do not follow the 26-bit or 34-bit standard format, for example HID H10314 (40-bit) as well as other high-frequency tags that are either 56 or 64-bit. I'd like to get the raw hex value into either the text sensor or as a tag value; this would let me use special credentials on my HID readers.

BTW, thanks for the awesome work on this! :-)

Heapmon (others?) throwing error in ESPhome 2021.10.0-dev

When compiling a yaml with heapmon component in current release everything works as expected but in dev branch is throwing an error.

src/esphome/components/heapmon/heapmon.cpp: In member function 'virtual void esphome::debug::HeapMonitor::update()':
src/esphome/components/heapmon/heapmon.cpp:10:24: error: 'ESP' was not declared in this scope
   uint32_t free_heap = ESP.getFreeHeap();
                        ^

Can't compile the ht16k33_alpha custom component

I am not able to compile using the ht16k33_alpha custom component.

Logs:

esphome logs

Config:

globals:
  - id: on_boot
    type: bool
    restore_value: false
    initial_value: 'true'

substitutions:
  # Device informations
  device_friendly_name: "HT16K33 Test"
  device_name: "ht16k33-test"
  device_entity_id: "ht16k33_test"
  # Pinout
  i2c_a_sda_pin: GPIO21
  i2c_a_scl_pin: GPIO22
  
# Device configuration
esphome:
  name: $device_name
  platform: esp32
# board: heltec_wifi_kit_32_v2   ###   i have a board with 8 MB flash so i tried using this one without success
  board: esp32dev
  on_boot:
    priority: -100
    then:
      - lambda: |-
          id(on_boot) = false;

# Import custom_components
external_components:
  - source:
      type: local
      path: custom_components
    
# Enable logging
logger:

# Enable Home Assistant API
api:
  password: !secret api_password
  encryption:
    key: !secret api_encryption_key

ota:
  password: !secret ota_password

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: $device_friendly_name
    password: !secret fallback_password

captive_portal:

web_server: # Could be disabled if performance issues appear
  port: 80
  auth:
    username: !secret esphome_web_username
    password: !secret esphome_web_password

# Set up I2C bus
i2c:
  - id: bus_a
    sda: $i2c_a_sda_pin
    scl: $i2c_a_scl_pin
    scan: true

# Set up display component
display:
  - platform: ht16k33_alpha
    address: 0x71
    scroll: true
    scroll_speed: 250ms
    scroll_dwell: 2s
    scroll_delay: 3
    lambda: |-
      it.print("Ht16K33 Display Test");
    id: ${device_entity_id}_display

Board: Mouser.com

Display: Mouser.com

Feature Reques - ClearAll Keys

Hello
It's possible to add key for clear all progress data?

For example I assign 'C' keys for clear all data. It will be very usefull for correction after long typing.

ip5306

Hi,

I'm trying to use the ip5306 component, but it doesn't seem to work?

Config:

i2c:

  • id: bus_a
    sda: 14
    scl: 13
    frequency: 400kHz
    scan: true

ip5306:
battery_level: # sensor
name: Battery Level
charger_connected: # binary_sensor
id: connected
on_press:
then:
- lambda: ESP_LOGD("TEST", "charging");
on_release:
then:
- lambda: ESP_LOGD("TEST", "not charging");
charge_full: # binary_sensor
id: full
on_press:
then:
- lambda: ESP_LOGD("TEST", "fully charged");
on_release:
then:
- lambda: ESP_LOGD("TEST", "still charging");

Logging:
[11:02:09][C][i2c.arduino:052]: I2C Bus:
[11:02:09][C][i2c.arduino:053]: SDA Pin: GPIO14
[11:02:09][C][i2c.arduino:054]: SCL Pin: GPIO13
[11:02:09][C][i2c.arduino:055]: Frequency: 400000 Hz
[11:02:09][C][i2c.arduino:058]: Recovery: bus successfully recovered
[11:02:09][I][i2c.arduino:068]: Results from i2c bus scan:
[11:02:09][I][i2c.arduino:074]: Found i2c device at address 0x3C
[11:02:09][I][i2c.arduino:074]: Found i2c device at address 0x75

But nothing from ip5306, while I expected something from:
ESP_LOGD(TAG, "Setting up ip5306...");

I'm using esphome with homeassistant and the 'Battery level' entity is available, but at 0%

Failed to compile keypad component on latest esphome version.

When attempting to update to the latest version of esphome with the keypad component the compile fails with the following. if you need any additional information let me know.

INFO Reading configuration /config/esphome/alarm-keypad.yaml...
INFO Detected timezone 'America/Los_Angeles'
INFO Generating C++ source...
INFO Compiling app...
Processing alarm-keypad (board: esp32dev; framework: arduino; platform: espressif32 @ 3.3.2)
--------------------------------------------------------------------------------
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
PACKAGES: 
 - framework-arduinoespressif32 3.10006.210326 (1.0.6) 
 - tool-esptoolpy 1.30100.210531 (3.1.0) 
 - toolchain-xtensa32 2.50200.97 (5.2.0)
LDF Modes: Finder ~ off, Compatibility ~ soft
Dependency Graph
|-- <AsyncTCP-esphome> 1.2.2
|-- <WiFi> 1.0
|-- <FS> 1.0
|-- <Update> 1.0
|-- <ESPAsyncWebServer-esphome> 1.3.0
|   |-- <AsyncTCP-esphome> 1.2.2
|-- <DNSServer> 1.1.0
|-- <noise-c> 0.1.3
|   |-- <libsodium> 1.10018.1
|-- <Wire> 1.0.1
|-- <ESPmDNS> 1.0
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/api/api_connection.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/api/api_frame_helper.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/api/api_pb2.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/api/api_pb2_service.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/api/api_server.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/api/list_entities.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/api/proto.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/api/subscribe_state.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/api/user_services.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/api/util.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/binary_sensor/automation.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/binary_sensor/binary_sensor.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/binary_sensor/filter.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/captive_portal/captive_portal.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/display/display_buffer.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/esp32/core.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/esp32/gpio_arduino.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/esp32/gpio_idf.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/esp32/preferences.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/gpio/binary_sensor/gpio_binary_sensor.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/homeassistant/sensor/homeassistant_sensor.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/homeassistant/text_sensor/homeassistant_text_sensor.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/homeassistant/time/homeassistant_time.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/i2c/i2c.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/i2c/i2c_bus_arduino.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/i2c/i2c_bus_esp_idf.cpp.o
Compiling /data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/keypad/keypad.cpp.o
In file included from src/esphome/components/keypad/keypad.cpp:1:0:
src/esphome/components/keypad/keypad.h:4:33: fatal error: esphome/core/esphal.h: No such file or directory
compilation terminated.
*** [/data/alarm-keypad/.pioenvs/alarm-keypad/src/esphome/components/keypad/keypad.cpp.o] Error 1
========================= [FAILED] Took 10.08 seconds =========================

keypad-log.txt

Wiegand : delete TAG after transmit

Wiegand:
Is there a way to delete the tag of the RFID reader after transmission or to set it to 'xxxx' so that the tag is not accidentally transmitted again.

Gibt es eine Möglichkeit den Tag des RFID Readers nach der Übertragung zu löschen oder auf 'xxxx' zu setzen, damit der Tag nicht ungewollt erneut übertragen wird.

Problem with magic_switch pulse timing report

Hi,
I would like to report a weird report
I set magic_switch with timeout: 1200us but when checking log file from esphome, sometimes it did show like below


[20:32:48][D][magic_switch:019]: detected pulse of 28322us
[20:32:48][D][light:036]: 'Light' Setting:
[20:32:48][D][light:047]:   State: ON
[20:32:55][D][magic_switch:019]: detected pulse of 122710us
[20:32:55][D][light:036]: 'Light' Setting:
[20:32:55][D][light:047]:   State: OFF

Could you help to check it.
Thank you.

Feature Request: Invert Desky up and down pins by default

The up and down pins need to be inverted for this component to function as expected, like I've done in the config excerpt below.

I think it could be nice for users if this was just somehow just done by default, or if there isn't a nice solution, you could also just add what I've got below to your config?

Thank you

desky:
  id: my_desky
  up:    
    number: 4 #D2
    inverted: true 
  down:  
    number: 5 #D1
    inverted: true
  stopping_distance: 15  # optional distance from target to turn off moving, default 15  

Feature Request: Get Desky height on boot

Desky only sends height UART messages during and for a period after movement.

There is therefore no desk height data when your esp reboots.

But it seems there is a dedicated wire which can be used to request/activate the message stream (messages will then stop automatically after a few seconds and the desk will sleep again).

It would be handy if the Desky component requested height messages on boot so that users could see it's current (initial) height without having to move the desk.

Below is my test code in my config, which behaves as desired, however we discussed that this logic may be better either located in your custom component files, and/or added to your provided config.

Thank you!


esphome:
  name: desky-d1mini-v2
  platform: ESP8266
  board: d1_mini #pinout: https://i0.wp.com/randomnerdtutorials.com/wp-content/uploads/2019/05/ESP8266-WeMos-D1-Mini-pinout-gpio-pin.png?quality=100&strip=all&ssl=1
  on_boot:
    priority: -100.0
    then:
    #Request a desk height update after boot.
      - delay: 5s
      - switch.turn_on: wake_desk_and_get_height

#later on...... (note the inversion)


switch:
#wake up ther desk and request it sends its height 
  - platform: gpio
    id: wake_desk_and_get_height
    name: "Request Desk Height"
    pin:
      number: D5
      inverted: true
    on_turn_on:
    - delay: 100ms
    - switch.turn_off: wake_desk_and_get_height

Feature Request: Desky | Support Height Decoder Variant

Pasted from our discord chat. Let me know if you need any more info.

We’ve come across a desk which appears to be slightly different in one area.

In summary (and to refresh)...
Most desks send:

But what we’ve found with some Jarvis desks is that they appear to actually send the second “9 byte message” over the RJ45 port. Everything else appears to be the same (including how the bytes are used to calculate height.
https://community.home-assistant.io/t/desky-standing-desk-esphome-works-with-desky-uplift-jiecang-assmann-others/383790/105?u=mahko_mahko

So I think the feature request is to be able to select/switch the protocol.
My thought was the revised config might look a bit like below?

Thank you!

desky:
  #uart_id: desk_uart  (optional, unless multiple uarts are defined)
  id: my_desky
  height_protocol_variant: (optional, 4byte or 9byte, defaults to 4byte)
  height:  # optional sensor publishing the current height
    name: Desk Height
    # any other sensor options

Feature-Request: Continuous scrolling (ht16k33)

Hey, would it be possible to have a setting for continuous scrolling of the ht16k33_alpha display component. 🙂

Currently the scroll stops at the end of the text and jumps back to the start. The "continuous"-version would act a little different:
If the scrolling text comes to an end, the beginning is appended with some distance and stops briefly as soon as it has arrived at the beginning again. then the scroll continues and everything starts from the beginning

Probably with timing settings for the scroll and the pause

😊

[Enhancement] HT16K33Alpha multi-display

Actually we can use two components to drive two HT16K33-Alphanumeric displays with different i2c addresses, but we loose the scrolling feature and the refresh isn't sync between devices.

Would be great if we can provide multiple i2c addresses to drive as if it was one larger display.

Technically, can it be done ? I understand that the I2CDevice actually used is only able to speak to one i2c device. Curious about how it could be implemented.

(I don't know enough about esphome internals to do it, but i can do tests if needed !)

Merge to ESPHome

Great work on these components!
Do you plan on merging some of them into ESPHome? That way it would be easier to use, keep up to date, and add enhancements for others.
Let me know if you need help with doing so.

feature request: keypad text sensor timeout

Hey,
could you add a timeout function to the text sensor of the keypad component?

It would be awesome if i could set a "timeout" value to like "10" seconds and if the keypad has not received another input in this timespan, the progress value gets reseted.
If the "timeout" value is not set, the progress won't be reseted.

Wiegand issue: 26-bit card format vs facility code

I've noticed that 26-bit H10301 card numbers are being reported without the facility code calculation. For example, a card that has facility code 1 and card code 11572 would be reported as 77108.

Looking at the raw bits, it seems like the FC bits and CC bits are all wrapped into one number. The first 8 bits (after the initial parity bit) should be treated separately, to ensure that only the next 16 bits should be calculated as the card code.

A good way of reporting the correct card format would be to use the FC:CC format which is quite common in the PACS industry, for example 001:11572 in the example above. Thoughts?

Wiegand: Invalid parity

Since commit e48ea30 [add 37-bit and refactor parity checking] i have error after tag reading:
[09:16:37][I][RAW:131]: received raw 34 bits, value 200a9dfea
[09:16:37][D][wiegand.text_sensor:080]: received 34-bit tag: 5566453
[09:16:38][W][wiegand.text_sensor:082]: invalid parity

Same error for 34 and 26 bit readers.
I didn't change anything in my hardware.
I traced problem to the function;

bool check_oparity(uint64_t value, int start, int length) {
int parity = 0;
uint64_t mask = 1LL << start;
for (int i = 0; i <= length; i++, mask <<= 1)
if (value & i)
parity++;
return parity & 1;
}

If I change last line to return !(parity & 1); or return 1, everything works just fine.

matrix_keypad not working since rename

I had the keypad component working before the rename to matrix_keypad. Now esphome editor says "Component not found: keypad". The same goes for binary_sensor.keypad. I have changed components section in my yaml from keypad to matrix_keypad. If I exclude the components part, esphome editor says "Component keypad cannot be loaded via YAML (no CONFIG_SCHEMA)."
I have tried to load the components (matrix_keypad and key_provider) locally (matrix_keypad folder renamed to keypad) but then esphome compiler can't find the file "key_provider.h".
What might be wrong, am I missing something?

Another problem with magic_switch component

_

[11:30:52][D][magic_switch:019]: detected pulse of 29027us
[11:30:52][D][light:036]: 'Light' Setting:
[11:30:52][D][light:047]: State: ON
[11:30:54][D][magic_switch:019]: detected pulse of 4591us
[11:30:54][D][light:036]: 'Light' Setting:
[11:30:54][D][light:047]: State: OFF
[11:30:54][D][magic_switch:019]: detected pulse of 3782us
[11:30:54][D][light:036]: 'Light' Setting:
[11:30:54][D][light:047]: State: ON
[11:30:54][D][magic_switch:019]: detected pulse of 68933us
[11:30:54][D][light:036]: 'Light' Setting:
[11:30:54][D][light:047]: State: OFF
[11:30:56][D][magic_switch:019]: detected pulse of 33690us
[11:30:56][D][light:036]: 'Light' Setting:
[11:30:56][D][light:047]: State: ON
[11:30:58][D][magic_switch:019]: detected pulse of 1769us
[11:30:58][D][light:036]: 'Light' Setting:
[11:30:58][D][light:047]: State: OFF
[11:30:58][D][magic_switch:019]: detected pulse of 58900us
[11:30:58][D][light:036]: 'Light' Setting:
[11:30:58][D][light:047]: State: ON
[11:30:59][D][magic_switch:019]: detected pulse of 5286us
[11:30:59][D][light:036]: 'Light' Setting:
[11:30:59][D][light:047]: State: OFF
[11:30:59][D][magic_switch:019]: detected pulse of 3193us
[11:30:59][D][light:036]: 'Light' Setting:
[11:30:59][D][light:047]: State: ON
[11:31:00][D][magic_switch:019]: detected pulse of 2352us
[11:31:00][D][light:036]: 'Light' Setting:
[11:31:00][D][light:047]: State: OFF
[11:31:00][D][magic_switch:019]: detected pulse of 8931us
[11:31:00][D][light:036]: 'Light' Setting:
[11:31:00][D][light:047]: State: ON
[11:31:00][D][magic_switch:019]: detected pulse of 9989us
[11:31:00][D][light:036]: 'Light' Setting:
[11:31:00][D][light:047]: State: OFF

_

As you can see in above log, at the same time, magic_switch is trigger several times, that leads to sometimes switch status cannot be reverted
I tried some time_out setting but if I set it like 12-13ms, sometime it cannot recognize pulse, but if set smaller, sometime it detect multiple pulse
I just wonder is there any case to delay detecting new pulse right after one pulse detected and detect again after 1 or few seconds
Thank you.

feature request: custom buffer size [ht16k33_alpha]

Hey,
it would be awesome if the ht16k33_alpha component supports a optional setting for the buffer size (default is 64, i had to display stuff that is long than this, so i increased it to 128 myself)

Something like this for example:

display:
  - platform: ht16k33_alpha
    address: 0x71
    buffer: 128 # <-- custom buffer setting (default to 64)
    scroll: true
    scroll_speed: 250ms
    scroll_dwell: 2s
    scroll_delay: 3
    lambda: |-
      it.print("HT16K33 Display Test");
    id: ${device_entity_id}_display

Component "serial" does not persiste value

When ESPhome is rebooted, the last known value is not retained.

Config:

external_components:
  - source:
      type: git
      url: https://github.com/ssieb/custom_components/
    components: [ serial ]
    refresh: 10min

text_sensor:
  - platform: serial
    name: ${description} Bar Code

uart:
    baud_rate: 9600
    debug:
      direction: BOTH
      dummy_receiver: false
      after:
        delimiter: "\n"
      sequence:
        - lambda: UARTDebug::log_string(direction, bytes);
    tx_pin: GPIO17
    rx_pin: GPIO16

Feature Request: Desky - Stop movement

It would be handy if desky component users had a way to stop the desk when it is in motion.

In my tests I just used a button which turned off both the up and the down pins (which need to be inverted;).

In my example below, you can also see how I've added interlocking (which we discussed may or may not be a good idea;)

You can also see I added a timeout of 15sec, which I thought might be a good idea to?

Thank you!

button: 
#Stop movement 
  - platform: template
    name: Stop Desk
    id: desky_stop_desk
    on_press:
      then:
        - switch.turn_off: raise_desk
        - switch.turn_off: lower_desk
        

switch:
#wake up ther desk and request it sends its height 
  - platform: gpio
    id: wake_desk_and_get_height
    name: "Request Desk Height"
    pin:
      number: D5
      inverted: true
    on_turn_on:
    - delay: 100ms
    - switch.turn_off: wake_desk_and_get_height

#Raise the desk 
  - platform: gpio
    id: raise_desk
    name: "Raise Desk"
    pin:
      number: D2
      # mode: INPUT_PULLUP
      inverted: true
    interlock: lower_desk
    on_turn_on:
    #Auto off after 15s just in case
    - delay: 15s
    - switch.turn_off: raise_desk
#Lower the desk 
  - platform: gpio
    id: lower_desk
    name: "Lower Desk" 
    pin:
      number: D1
      # mode: INPUT_PULLUP
      inverted: true
    interlock: raise_desk
    on_turn_on:
   #Auto off after 15s just in case
    - delay: 15s
    - switch.turn_off: lower_desk    

Could not find components folder for source.

Never mind.
It just started working, so I may have had a typo in my code.

I am trying to use an Adafruit HT16K33 with 14-segment LEDs. When I put this at the top of my YAML code, I get the error in the title.

external_components:
  - source:
      type: git
      url: https://github.com/ssieb/esphome_components
    components: [ ht16k33_alpha ]

However, when I go to the URL, there is clearly a components folder.
What am I doing wrong?

CWWW2 compile error "name 'CONF_GAMMA_CORRECT' is not defined"

Hi there, thanks for writing this. I'm trying it on a Brilliantsmart Trilogy CWWW downlight. I already have a sort-of-working ESPHome config based on this, but the light goes out when the brightness slider is reduced to less than about 40% and the colour temp slider only works on the right hand half. It's very warm on the right hand side, and cool (blue) in the middle of the slider, but it also dims a lot on the blue end of the scale (middle). If I reduce colour temp below half way, the light goes off.

Anyway, my problem with your code is I wasn't sure how to include it in ESPHome, I copied the whole directory "cwww2" to my Hassio \config\esphome\custom_components\cwww2 and then included it like this:

esphome:
  name: brilliantsmart_downlight_cct_1
  platform: ESP8266
  board: esp01_1m
  includes:
    - custom_components/cwww2/cwww2_light_output.h

But I get an error related to CONF_GAMMA_CORRECT

INFO Reading configuration /config/esphome/test.yaml...
ERROR Unable to load custom component cwww2.light:
Traceback (most recent call last):
  File "/opt/esphome/esphome/config.py", line 140, in _lookup_module
    module = importlib.import_module('custom_components.{}'.format(domain))
  File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/config/esphome/custom_components/cwww2/light.py", line 17, in <module>
    cv.Optional(CONF_GAMMA_CORRECT, default=1.0): cv.positive_float,
NameError: name 'CONF_GAMMA_CORRECT' is not defined
Failed config

VBUS: Questions and Warning regarding Resol Deltasol CS Plus

Hello,

I installed the VBUS controller for my Resol Deltasol CS Plus regarding to this feature-request: esphome/feature-requests#1949. So far, the new device/config is working. But I have the following questions:

I get the following warning in my home assistant log:

Logger: homeassistant.components.sensor
Source: components/sensor/__init__.py:980
Integration: Sensor (documentation, issues)
First occurred: 8. Januar 2023 um 14:49:47 (1 occurrences)
Last logged: 8. Januar 2023 um 14:49:47

Entity sensor.hwr_sensor_deltasol_sc_r1_flow_rate (<class 'homeassistant.components.esphome.sensor.EsphomeSensor'>) is using native unit of measurement 'L/h' which is not a valid unit for the device class ('water') it is using; Please update your configuration if your entity is manually configured, otherwise create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+esphome%22

It is correct that the water device class is used for the flow_rate sensor? Theoretically, it should be a device class like "water_speed" (this is not given).

The error sensors will not be exposed to Home Assistant. Is my config for model "Deltasol CS Plus" correct? In ESPHome is sensors are defined.

In addition, the sensor "heat_quantity" shows only a 0 value. Is that normal or there should be value? My installation is the same as "Anlage 1: Standard-Solaranlage" of the manual from page 10.

This is my config:

external_components:
  - source:
      type: git
      url: https://github.com/ssieb/custom_components
      ref: vbus
    components: [ vbus ]
    refresh: 1min

uart:
  id: resol
  rx_pin: GPIO20
  baud_rate: 9600

vbus:
  uart_id: resol

sensor:
  - platform: vbus
    model: deltasol_cs_plus
    temperature_1:
      id: hwr_sensor_deltasol_sc_kol_temperature #KOL
      name: "${friendly_name} Kollektor Temperatur"
      device_class: "temperature"
      state_class: measurement
      unit_of_measurement: "°C"
      accuracy_decimals: 1
    temperature_2:
      id: hwr_sensor_deltasol_sc_tsp_temperature #TSP
      name: "${friendly_name} Speicher Temperatur"
      device_class: "temperature"
      state_class: measurement
      unit_of_measurement: "°C"
      accuracy_decimals: 1
    flow_rate:
      id: hwr_sensor_deltasol_sc_r1_flow_rate
      name: "${friendly_name} Relais Drehzahl" #R1
      #unit_of_measurement: "l/h"
    heat_quantity:
      id: hwr_sensor_deltasol_sc_heat_quantity
      name: "${friendly_name} Wärmemenge" #Heat Quantity
      state_class: measurement
      #unit_of_measurement: "Wh"
    operating_hours_1:
      id: hwr_sensor_deltasol_sc_r1_operating_hours
      name: "${friendly_name} Relais Betriebsstunden" #Operating Hours
      device_class: "duration"
      unit_of_measurement: "h"
    pump_speed_1:
      id: hwr_sensor_deltasol_sc_pump_speed
      name: "${friendly_name} Pumpgeschwindigkeit" #Pump Speed 1
      #unit_of_measurement: "%"
    time:
      id: hwr_sensor_deltasol_sc_device_time
      name: "${friendly_name} Gerätezeit" #Device Time
      entity_category: diagnostic
      disabled_by_default: true

binary_sensor:
  - platform: vbus
    model: deltasol_cs_plus
    sensor1_error:
      id: hwr_sensor_deltasol_sc_sensor1_error
      name: "${friendly_name} Sensor 1 Fehler" #Sensor 1 Error
      entity_category: diagnostic
    sensor2_error:
      id: hwr_sensor_deltasol_sc_sensor2_error
      name: "${friendly_name} Sensor 2 Fehler" #Sensor 2 Error
      entity_category: diagnostic

Thank you!

Failed config, Platform not found: 'display.lcd_ht16k33'.

Hello

After running esphome new.yaml run I receive the following error. I did comment out the working Adafruit code and replace with your upgrade.

*** My ERROR >

Failed config

display.lcd_ht16k33: [source new4.yaml:171]

Platform not found: 'display.lcd_ht16k33'.
platform: lcd_ht16k33
address: 112
scroll: True
scroll_speed: 250ms
scroll_dwell: 2s
lambda: it.print("ABCD");

*** from Yaml>

esphome:
name: ht16k33led
platform: ESP32
board: nodemcu-32s
arduino_version: latest
includes: # get from github link below and put into /config/esphome
# https://learn.adafruit.com/adafruit-led-backpack/0-dot-56-seven-segment-backpack
# https://learn.adafruit.com/adafruit-led-backpack/downloads
# https://github.com/adafruit/Adafruit_LED_Backpack

# Removed Adafruit and my_text_sensor below for ssieb new i2c custom component 
# https://github.com/ssieb/custom_components
#- Adafruit_LEDBackpack.h
#- Adafruit_LEDBackpack.cpp
#- my_text_sensor.h
- config\custom_components\lcd_ht16k33\ht16k33_display.h
- config\custom_components\lcd_ht16k33\ht16k33_display.cpp

libraries:
#- "Adafruit GFX Library"
#- "SPI" # unused dependency

...

i2c:
id: bus_a
sda: 21
scl: 22
scan: False

display:

  • platform: lcd_ht16k33
    address: 0x70
    scroll: true
    scroll_speed: 250ms
    scroll_dwell: 2s
    lambda: |-
    it.print("ABCD");

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.