ayufan / esphome-components Goto Github PK
View Code? Open in Web Editor NEWA repository of custom esphome components
A repository of custom esphome components
inode_ble don't work with latest dev of esphome. There is not anmore get_manufacturer_data() function. It looks like ble_tracker changed alot:
https://github.com/esphome/esphome/blob/dev/esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp
Esphome 1.15 should be available any day from now.
is it possible to control the EQ3 thermostats with this component or is it just a read only connection to home assistant?
Would be cool if you could update the Readme with this, thanks!
Hi, I tried this in vlc and a couple hours in zoneminder and it works! Using ESPcam may be a viable alternative for me to network CCTV, especially now that prices for such devices are rising due to IC shortage? While ESP only costs $5.
Question, what determines the frame rate of the stream? On boot I get 4fps but a few seconds after it settles to 1fps - 2fps.
Hi @ayufan,
When compiling inode_ble sensor with the framework esp-idf I get the below errors.
Thanks in advance for getting this issue solved.
esp32:
board: esp32doit-devkit-v1
framework:
type: esp-idf
INFO Reading configuration /config/esphome/ble-gateway07.yaml...
INFO Detected timezone 'Europe/Bucharest'
INFO Compiling app...
Processing ble-gateway07 (board: esp32doit-devkit-v1; framework: espidf; platform: platformio/espressif32 @ 5.2.0)
--------------------------------------------------------------------------------
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
- framework-espidf @ 3.40402.0 (4.4.2)
- tool-cmake @ 3.16.4
- tool-ninja @ 1.7.1
- toolchain-esp32ulp @ 2.35.0-20220830
- toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch3
Reading CMake configuration...
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
Dependency Graph
|-- noise-c @ 0.1.4
| |-- libsodium @ 1.10018.1
|-- ArduinoJson @ 6.18.5
Compiling /data/ble-gateway07/.pioenvs/ble-gateway07/src/main.o
src/main.cpp:109:1: error: 'iNodeMeterSensor' does not name a type
iNodeMeterSensor *inodemetersensor;
^~~~~~~~~~~~~~~~
src/main.cpp:114:1: error: 'iNodeMeterSensor' does not name a type
iNodeMeterSensor *inodemetersensor_2;
^~~~~~~~~~~~~~~~
src/main.cpp:119:1: error: 'iNodeMeterSensor' does not name a type
iNodeMeterSensor *inodemetersensor_3;
^~~~~~~~~~~~~~~~
/config/esphome/ble-gateway07.yaml: In function 'void setup()':
/config/esphome/ble-gateway07.yaml:782:3: error: 'inodemetersensor' was not declared in this scope
/config/esphome/ble-gateway07.yaml:782:26: error: expected type-specifier before 'iNodeMeterSensor'
/config/esphome/ble-gateway07.yaml:870:3: error: 'inodemetersensor_2' was not declared in this scope
/config/esphome/ble-gateway07.yaml:870:3: note: suggested alternative: 'sensor_sensor_2'
/config/esphome/ble-gateway07.yaml:870:28: error: expected type-specifier before 'iNodeMeterSensor'
/config/esphome/ble-gateway07.yaml:958:3: error: 'inodemetersensor_3' was not declared in this scope
/config/esphome/ble-gateway07.yaml:958:3: note: suggested alternative: 'sensor_sensor_3'
/config/esphome/ble-gateway07.yaml:958:28: error: expected type-specifier before 'iNodeMeterSensor'
*** [/data/ble-gateway07/.pioenvs/ble-gateway07/src/main.o] Error 1
========================= [FAILED] Took 21.27 seconds =========================
receiving following errors during compilation:
INFO Reading configuration...
INFO Detected timezone 'CET' with UTC offset 1 and daylight savings time from 03/28/21 02:00:00 to 10/31/21 03:00:00
INFO Generating C++ source...
INFO Compiling app...
INFO Running: platformio run -d /config/esphome/eq3
Processing eq3 (platform: [email protected]; framework: arduino; board: esp-wrover-kit)
--------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp-wrover-kit.html
PLATFORM: Espressif 32 > Espressif ESP-WROVER-KIT
HARDWARE: ESP32 240MHz 320KB RAM (4MB Flash)
DEBUG: CURRENT(ftdi) ON-BOARD(ftdi) EXTERNAL(esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF MODES: FINDER(chain) COMPATIBILITY(soft)
Collected 27 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <ESPmDNS> 1.0
| |-- <WiFi> 1.0
|-- <Preferences> 1.0
|-- <Update> 1.0
|-- <WiFi> 1.0
Compiling /data/eq3/.pioenvs/eq3/src/esphome/components/climate/climate.cpp.o
Compiling /data/eq3/.pioenvs/eq3/src/esphome/components/climate/climate_mode.cpp.o
Compiling /data/eq3/.pioenvs/eq3/src/esphome/components/climate/climate_traits.cpp.o
Compiling /data/eq3/.pioenvs/eq3/src/esphome/components/eq3_v2/eq3.cpp.o
Compiling /data/eq3/.pioenvs/eq3/src/esphome/components/eq3_v2/eq3_cmd.cpp.o
Compiling /data/eq3/.pioenvs/eq3/src/esphome/components/esp32_ble_clients/esp32_ble.cpp.o
In file included from src/esphome/components/eq3_v2/eq3.cpp:3:0:
src/esphome/components/eq3_v2/eq3.cpp: In member function 'void EQ3Climate::parse_state(const string&)':
src/esphome/components/eq3_v2/eq3.cpp:169:58: error: 'hexencode' was not declared in this scope
hexencode((const uint8_t*)data.c_str(), data.size()).c_str());
^
src/esphome/core/log.h:119:86: note: in definition of macro 'esph_log_w'
esp_log_printf_(ESPHOME_LOG_LEVEL_WARN, tag, ESPHOME_LOG_FORMAT(tag, W, format), ##__VA_ARGS__)
^
src/esphome/components/eq3_v2/eq3.cpp:167:5: note: in expansion of macro 'ESP_LOGW'
ESP_LOGW(TAG, "State parse of %10llx failed: %s.",
^
src/esphome/components/eq3_v2/eq3.cpp: In member function 'void EQ3Climate::parse_schedule(const string&)':
src/esphome/components/eq3_v2/eq3.cpp:228:58: error: 'hexencode' was not declared in this scope
hexencode((const uint8_t*)data.c_str(), data.size()).c_str());
^
src/esphome/core/log.h:119:86: note: in definition of macro 'esph_log_w'
esp_log_printf_(ESPHOME_LOG_LEVEL_WARN, tag, ESPHOME_LOG_FORMAT(tag, W, format), ##__VA_ARGS__)
^
src/esphome/components/eq3_v2/eq3.cpp:226:5: note: in expansion of macro 'ESP_LOGW'
ESP_LOGW(TAG, "Schedule parse of %10llx failed: %s.",
^
src/esphome/components/eq3_v2/eq3.cpp: In member function 'void EQ3Climate::parse_id(const string&)':
src/esphome/components/eq3_v2/eq3.cpp:260:58: error: 'hexencode' was not declared in this scope
hexencode((const uint8_t*)data.c_str(), data.size()).c_str());
^
src/esphome/core/log.h:119:86: note: in definition of macro 'esph_log_w'
esp_log_printf_(ESPHOME_LOG_LEVEL_WARN, tag, ESPHOME_LOG_FORMAT(tag, W, format), ##__VA_ARGS__)
^
src/esphome/components/eq3_v2/eq3.cpp:258:5: note: in expansion of macro 'ESP_LOGW'
ESP_LOGW(TAG, "ID parse of %10llx failed: %s.",
^
src/esphome/components/eq3_v2/eq3.cpp:270:45: error: 'hexencode' was not declared in this scope
hexencode(id->serial, sizeof(id->serial)).c_str());
^
src/esphome/core/log.h:110:86: note: in definition of macro 'esph_log_i'
esp_log_printf_(ESPHOME_LOG_LEVEL_INFO, tag, ESPHOME_LOG_FORMAT(tag, I, format), ##__VA_ARGS__)
^
src/esphome/components/eq3_v2/eq3.cpp:269:3: note: in expansion of macro 'ESP_LOGI'
ESP_LOGI(TAG, "'%s': Serial: %s", get_name().c_str(),
^
src/esphome/components/eq3_v2/eq3.cpp: In member function 'virtual void EQ3Climate::dump_config()':
src/esphome/components/eq3_v2/eq3.cpp:288:45: error: 'LOG_CLIMATE' was not declared in this scope
LOG_CLIMATE("", "EQ3-Max Thermostat", this);
^
*** [/data/eq3/.pioenvs/eq3/src/esphome/components/eq3_v2/eq3.cpp.o] Error 1
In file included from src/esphome/components/eq3_v2/eq3_cmd.cpp:3:0:
src/esphome/components/eq3_v2/eq3_cmd.cpp: In member function 'void EQ3Climate::parse_client_notify(std::__cxx11::string)':
src/esphome/components/eq3_v2/eq3_cmd.cpp:289:58: error: 'hexencode' was not declared in this scope
hexencode((const uint8_t*)data.c_str(), data.size()).c_str());
^
src/esphome/core/log.h:119:86: note: in definition of macro 'esph_log_w'
esp_log_printf_(ESPHOME_LOG_LEVEL_WARN, tag, ESPHOME_LOG_FORMAT(tag, W, format), ##__VA_ARGS__)
^
src/esphome/components/eq3_v2/eq3_cmd.cpp:287:5: note: in expansion of macro 'ESP_LOGW'
ESP_LOGW(TAG, "Received unknown characteristic from %10llx: %s.",
^
*** [/data/eq3/.pioenvs/eq3/src/esphome/components/eq3_v2/eq3_cmd.cpp.o] Error 1
src/esphome/components/esp32_ble_clients/esp32_ble.cpp: In constructor 'ESP32BLE::ESP32BLE()':
src/esphome/components/esp32_ble_clients/esp32_ble.cpp:30:61: error: 'ESP_LOGE' was not declared in this scope
ESP_LOGE(TAG, "esp_ble_gattc_register_callback: %x", err);
^
src/esphome/components/esp32_ble_clients/esp32_ble.cpp: In member function 'bool ESP32BLE::ble_setup()':
src/esphome/components/esp32_ble_clients/esp32_ble.cpp:50:17: error: 'btStarted' was not declared in this scope
if (btStarted()) {
^
src/esphome/components/esp32_ble_clients/esp32_ble.cpp:64:52: error: 'ESP_LOGD' was not declared in this scope
ESP_LOGD(TAG, "esp_bt_controller_init: %d", err);
^
src/esphome/components/esp32_ble_clients/esp32_ble.cpp:70:54: error: 'ESP_LOGD' was not declared in this scope
ESP_LOGD(TAG, "esp_bt_controller_enable: %d", err);
^
src/esphome/components/esp32_ble_clients/esp32_ble.cpp:77:55: error: 'ESP_LOGE' was not declared in this scope
ESP_LOGE(TAG, "esp_bluedroid_init failed: %d", err);
^
src/esphome/components/esp32_ble_clients/esp32_ble.cpp:82:57: error: 'ESP_LOGE' was not declared in this scope
ESP_LOGE(TAG, "esp_bluedroid_enable failed: %d", err);
^
src/esphome/components/esp32_ble_clients/esp32_ble.cpp:91:67: error: 'ESP_LOGE' was not declared in this scope
ESP_LOGE(TAG, "esp_ble_gap_set_security_param failed: %d", err);
^
src/esphome/components/esp32_ble_clients/esp32_ble.cpp:96:56: error: 'ESP_LOGE' was not declared in this scope
ESP_LOGE(TAG, "esp_ble_gatt_set_local_mtu: %x", err);
^
src/esphome/components/esp32_ble_clients/esp32_ble.cpp:101:12: error: 'delay' was not declared in this scope
delay(200); // NOLINT
^
src/esphome/components/esp32_ble_clients/esp32_ble.cpp:103:32: error: 'ESP_LOGD' was not declared in this scope
ESP_LOGD(TAG, "BT init done.");
^
*** [/data/eq3/.pioenvs/eq3/src/esphome/components/esp32_ble_clients/esp32_ble.cpp.o] Error 1
========================== [ERROR] Took 2.15 seconds ==========================
my YAML for this project looks like this:
esphome:
name: eq3
platform: ESP32
board: esp-wrover-kit
wifi:
ssid: "<REDACTED>"
password: "<REDACTED>"
power_save_mode: none
# Enable logging
#logger:
# Enable Home Assistant API
#api:
ota:
# time is required by `eq3_v2` to send
# an accurate time spec when requesting
# current state
time:
- platform: sntp
id: sntp_time
# refresh component state every 30mins,
# and announce it to Home Assistant MQTT
climate:
- platform: eq3_v2
id: thermostat
name: Thermostat
mac_address: '<REDACTED>'
update_interval: 30min
valve: # optional, allows to save valve state in %
name: Thermostat Valve State
#expire_after: 61min
# allow to force refresh component state
switch:
- platform: template
name: "Refresh Thermostat"
lambda: "return false;"
turn_on_action:
- component.update: thermostat
I am seeing lock / unlock functionality in the arduino files but am struggling to define this correctly in the esp .yaml config..
As always, massive thanks for this amazing project - just want to help improve by doing some testing.
I've got it all working in Home Assistant but when I try and set a temperature value that is not a whole number it rounds down to the nearest whole number.
See the example here, where 19.5 degrees was requested but 19 degrees was actually applied. The heater successfully takes the 19 degree value (checked on the valve display).
[15:40:42][D][climate:010]: 'Study EQ3' - Setting
[15:40:42][D][climate:017]: Target Temperature: 19.50
[15:40:42][I][eq3:110]: Requesting climate control of 1a220*****...
[15:40:46][W][eq3:144]: Climate control of 1a220***** succeeded.
[15:40:46][I][eq3:168]: 'Study EQ3': Valve: 0%. Target: 19.0. Mode: dst.
[15:40:46][I][eq3:173]: 'Study EQ3': Window Open: 15 minutes. Temp: 12.0.
[15:40:46][I][eq3:179]: 'Study EQ3': Temp: Comfort: 21.0. Eco: 17.0. Offset: 0.0.
[15:40:46][D][sensor:092]: 'Study EQ3 Valve State': Sending state 0.00000 % with 0 decimals of accuracy
[15:40:46][D][climate:172]: 'Study EQ3' - Sending state:
[15:40:46][D][climate:175]: Mode: AUTO
[15:40:46][D][climate:186]: Target Temperature: 19.00°C
The EQ3 valve definitely supports half degrees - using the CalorBT app or the dial on the valve I can reach 19.5 degrees. In the case the code correctly reads the value of 19.5 degrees (see below), so it only seems to be an issue with the setting.
[15:44:50][I][eq3:042]: Requesting update of 1a220*****...
[15:44:54][I][eq3:049]: Update of 1a220*****succeeded.
[15:44:54][I][eq3:168]: 'Study EQ3': Valve: 0%. Target: 19.5. Mode: dst.
[15:44:54][I][eq3:173]: 'Study EQ3': Window Open: 15 minutes. Temp: 12.0.
[15:44:54][I][eq3:179]: 'Study EQ3': Temp: Comfort: 21.0. Eco: 17.0. Offset: 0.0.
[15:44:54][D][sensor:092]: 'Study EQ3 Valve State': Sending state 0.00000 % with 0 decimals of accuracy
[15:44:55][D][climate:172]: 'Study EQ3' - Sending state:
[15:44:55][D][climate:175]: Mode: AUTO
[15:44:55][D][climate:186]: Target Temperature: 19.50°C
Hey @ayufan, great job, I'm really new on esphome and was really nice to see wled available as a custom component, thanks for your effort.
So, I was able to installed succesfully but I can't see any effect, can you give me a clue of how to put all of them available?
Hi!
Is it possible to get the valve state without using mqtt?
Then your creation would be even better!
Thank you for your work
Cheers
James
Could you please expand on how to install/use the esp32_ble_clients.
You have a line in your readme.md saying:
This uses custom esp32_ble_clients implementation to support Bluetooth on ESP32.
But I'm not entirely sure how you go about using this custom implementation.
Is copying the files to the esp/home/custom_components dir enough?
Do I need to put esp32_ble_clients: into my esphome node.yaml file like I would have with esp_ble_tracker:?
Help.....
Thanks for your work, it's just what I am looking for.
I followed your instructions but (probably it's a my mistake) compiling inside the Hass.io ESPHome plugin, looks like the "custom_componets" folder is ignored.
Infact, adding platform eq3_v2 in climate.yaml I get this error: "Platform error climate.eq3_v2 - Integration 'eq3_v2' not found".
Home Assistant 0.103.5
ESPhome 1.15.0-dev
EDIT 08/01/2020:
I managed to include the custom component files by editing the device yaml in EspHome:
includes:
- custom_components/eq3_v2/eq3_const.h
- custom_components/eq3_v2/eq3.h
- custom_components/esp32_ble_clients/esp32_ble_lock.h
- custom_components/esp32_ble_clients/esp32_ble_log.h
- custom_components/esp32_ble_clients/esp32_ble.h
- custom_components/esp32_ble_clients/esp32_ble_client.h
Anyway, somenthing does not work when compiling: the compiler cannot found the esphome components "sensor.h" and "climate.h (included in eq3.h).
Hey @ayufan! Quick update, using the same version that I used to compile it (Version: 2021.10.3
), it now fails again but with a different issue:
Error:
Processing garage_camera (board: esp32dev; framework: arduino; platform: espressif32 @ 3.3.2)
---------------------------------------------------------------------------------------------------------
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
Dependency Graph
|-- <AsyncTCP-esphome> 1.2.2
|-- <WiFi> 1.0
|-- <FS> 1.0
|-- <Update> 1.0
|-- <ESPAsyncWebServer-esphome> 2.0.0
| |-- <AsyncTCP-esphome> 1.2.2
|-- <DNSServer> 1.1.0
|-- <AsyncMqttClient-esphome> 0.8.6
| |-- <AsyncTCP-esphome> 1.2.2
|-- <ArduinoJson-esphomelib> 5.13.3
|-- <ESPmDNS> 1.0
Compiling .pioenvs/garage_camera/src/esphome/components/esp32_camera_web_server/camera_web_server.cpp.o
Compiling .pioenvs/garage_camera/src/esphome/components/mdns/mdns_esp32_arduino.cpp.o
Compiling .pioenvs/garage_camera/src/esphome/components/mdns/mdns_esp8266.cpp.o
Compiling .pioenvs/garage_camera/src/esphome/components/mdns/mdns_esp_idf.cpp.o
Compiling .pioenvs/garage_camera/src/esphome/components/mqtt/custom_mqtt_device.cpp.o
Compiling .pioenvs/garage_camera/src/esphome/components/mqtt/mqtt_binary_sensor.cpp.o
Compiling .pioenvs/garage_camera/src/esphome/components/mqtt/mqtt_client.cpp.o
Compiling .pioenvs/garage_camera/src/esphome/components/mqtt/mqtt_climate.cpp.o
Compiling .pioenvs/garage_camera/src/esphome/components/mqtt/mqtt_component.cpp.o
Compiling .pioenvs/garage_camera/src/esphome/components/mqtt/mqtt_cover.cpp.o
Compiling .pioenvs/garage_camera/src/esphome/components/mqtt/mqtt_fan.cpp.o
src/esphome/components/esp32_camera_web_server/camera_web_server.cpp: In member function 'esp_err_t esphome::esp32_camera_web_server::CameraWebServer::streaming_handler_(httpd_req*)':
src/esphome/components/esp32_camera_web_server/camera_web_server.cpp:160:32: error: 'millis' was not declared in this scope
uint32_t last_frame = millis();
^
*** [.pioenvs/garage_camera/src/esphome/components/esp32_camera_web_server/camera_web_server.cpp.o] Error 1
====================================== [FAILED] Took 1.81 seconds ======================================
If you want me to open an issue with more details do not hesitate on contacting me.
P.D: More info on #22
During compilation following warnings appear, which do not appear to be major, but the resulting firmware does no longer function on the ESP32 board.
Compiling /data/ttgo_trv_vzvn_beneden/.pioenvs/ttgo_trv_vzvn_beneden/src/esphome/components/eq3_v2/eq3_cmd.cpp.o
src/esphome/components/eq3_v2/eq3.cpp: In member function 'void EQ3Climate::parse_state(const string&)':
src/esphome/components/eq3_v2/eq3.cpp:215:3: warning: 'esphome::climate::Climate::away' is deprecated: away is deprecated, use preset instead [-Wdeprecated-declarations]
away = state->mode.away_mode;
^
In file included from src/esphome/components/eq3_v2/eq3.h:5:0,
from src/esphome/components/eq3_v2/eq3.cpp:1:
src/esphome/components/climate/climate.h:196:18: note: declared here
bool away{false};
^
src/esphome/components/eq3_v2/eq3.cpp:215:3: warning: 'esphome::climate::Climate::away' is deprecated: away is deprecated, use preset instead [-Wdeprecated-declarations]
away = state->mode.away_mode;
^
In file included from src/esphome/components/eq3_v2/eq3.h:5:0,
from src/esphome/components/eq3_v2/eq3.cpp:1:
src/esphome/components/climate/climate.h:196:18: note: declared here
bool away{false};
^
src/esphome/components/eq3_v2/eq3.cpp: In member function 'virtual esphome::climate::ClimateTraits EQ3Climate::traits()':
src/esphome/components/eq3_v2/eq3.cpp:275:37: warning: 'void esphome::climate::ClimateTraits::set_supports_auto_mode(bool)' is deprecated: This method is deprecated, use set_supported_modes() instead [-Wdeprecated-declarations]
traits.set_supports_auto_mode(true);
^
In file included from src/esphome/components/climate/climate.h:8:0,
from src/esphome/components/eq3_v2/eq3.h:5,
from src/esphome/components/eq3_v2/eq3.cpp:1:
src/esphome/components/climate/climate_traits.h:54:8: note: declared here
void set_supports_auto_mode(bool supports_auto_mode) { set_mode_support_(CLIMATE_MODE_AUTO, supports_auto_mode); }
^
src/esphome/components/eq3_v2/eq3.cpp:279:37: warning: 'void esphome::climate::ClimateTraits::set_supports_heat_mode(bool)' is deprecated: This method is deprecated, use set_supported_modes() instead [-Wdeprecated-declarations]
traits.set_supports_heat_mode(true);
^
In file included from src/esphome/components/climate/climate.h:8:0,
from src/esphome/components/eq3_v2/eq3.h:5,
from src/esphome/components/eq3_v2/eq3.cpp:1:
src/esphome/components/climate/climate_traits.h:58:8: note: declared here
void set_supports_heat_mode(bool supports_heat_mode) { set_mode_support_(CLIMATE_MODE_HEAT, supports_heat_mode); }
^
src/esphome/components/eq3_v2/eq3.cpp:280:33: warning: 'void esphome::climate::ClimateTraits::set_supports_away(bool)' is deprecated: This method is deprecated, use set_supported_presets() instead [-Wdeprecated-declarations]
traits.set_supports_away(false); // currently not working
^
In file included from src/esphome/components/climate/climate.h:8:0,
from src/esphome/components/eq3_v2/eq3.h:5,
from src/esphome/components/eq3_v2/eq3.cpp:1:
src/esphome/components/climate/climate_traits.h:119:8: note: declared here
void set_supports_away(bool supports) {
since I re-flashed my ESP I can't connect to the eQ3 Thermostat anymore. Getting clock source invalid:
[18:04:03][I][eq3:052]: Requesting update of <ADDRESS>...
[18:04:07][E][eq3_cmd:144]: Clock source for <ADDRESS> is not valid.
[18:04:07][W][eq3:066]: Update of <ADDRESS> failed. Too many tries.
I made sure the time is set correctly on the Thermostat, tried both disabling and enabling dst (summertime) setting and even did a full reset of the device.
Been testing the e131 component in esphome for a few days. This is excellent thanks for the great work!
Now I am trying to use it to drive a single dimmer (Martin Jerry MJ-SD01). I get an error when trying to build that complains:
Failed config
light.monochromatic: [source mj_sd02_testing.yaml:84]
platform: monochromatic
name: Martin Jerry MJ-SD01
output: pwm
default_transition_length: 0s
id: dimmer
effects: [source mj_sd02_testing.yaml:91]
The effect 'e131' is not allowed for this light type.
- [source mj_sd02_testing.yaml:91]
e131:
universe: 1
channels: MONO
I suspect support would have to be added for this or perhaps I am applying the effect to the wrong component? Or I need a lambda effect in between?
Also would love to see a few inputs added to the web controls to support setting a base DMX address and universe instead of it being hard coded into the yaml.
Thanks!
While compiling esphome with iNode component I got the following errors:
INFO Reading configuration /config/esphome/esp_fence_ble_node.yaml...
INFO Generating C++ source...
INFO Compiling app...
INFO Running: platformio run -d /config/esphome/esp_fence_ble_node
Processing esp_fence_ble_node (board: nodemcu-32s; framework: arduino; platform: [email protected])
--------------------------------------------------------------------------------
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
PACKAGES:
- framework-arduinoespressif32 3.10004.200129 (1.0.4)
- tool-esptoolpy 1.20600.0 (2.6.0)
- toolchain-xtensa32 2.50200.80 (5.2.0)
Dependency Graph
|-- <AsyncTCP-esphome> 1.1.1
|-- <ESPmDNS> 1.0
| |-- <WiFi> 1.0
|-- <FS> 1.0
|-- <ESPAsyncWebServer-esphome> 1.2.6
| |-- <AsyncTCP-esphome> 1.1.1
| |-- <FS> 1.0
| |-- <WiFi> 1.0
| |-- <ArduinoJson-esphomelib> 5.13.3
|-- <ArduinoJson-esphomelib> 5.13.3
|-- <DNSServer> 1.1.0
| |-- <WiFi> 1.0
|-- <Update> 1.0
|-- <WiFi> 1.0
Compiling /data/esp_fence_ble_node/.pioenvs/esp_fence_ble_node/src/esphome/components/inode_ble/inode_ble.cpp.o
Compiling /data/esp_fence_ble_node/.pioenvs/esp_fence_ble_node/src/esphome/components/template/switch/template_switch.cpp.o
Compiling /data/esp_fence_ble_node/.pioenvs/esp_fence_ble_node/src/esphome/components/text_sensor/text_sensor.cpp.o
Compiling /data/esp_fence_ble_node/.pioenvs/esp_fence_ble_node/src/esphome/components/uptime/uptime_sensor.cpp.o
src/esphome/components/inode_ble/inode_ble.cpp: In member function 'virtual bool iNodeMeterSensor::parse_device(const esphome::esp32_ble_tracker::ESPBTDevice&)':
src/esphome/components/inode_ble/inode_ble.cpp:15:27: error: 'const class esphome::esp32_ble_tracker::ESPBTDevice' has no member named 'get_manufacturer_data'
auto data_size = device.get_manufacturer_data().size();
^
src/esphome/components/inode_ble/inode_ble.cpp:20:38: error: 'const class esphome::esp32_ble_tracker::ESPBTDevice' has no member named 'get_manufacturer_data'
auto data = (unsigned char*)device.get_manufacturer_data().c_str();
^
*** [/data/esp_fence_ble_node/.pioenvs/esp_fence_ble_node/src/esphome/components/inode_ble/inode_ble.cpp.o] Error 1
========================== [FAILED] Took 9.69 seconds ==========================
I was working with previous esphome version.
Hi,
im using this component for quite a while and am really happy with it. It works like a charm.
My Thermostats have as well no (usable) temperature sensor available but i do have at least one DHT22/BME280 Sensor connected to each of my esp32s. So i thought it would be nice to have the possibility to provide the available sensor data of a room to each eq3 thermostat.
Is there a way to let the user define a custom sensor to provide the current temperature in the room?
Thanks and BR
Hi,
I was looking for such possibility - integration with iNode energy via esp32.
After coping iNode files into /conf/custom_components/inode_ble/ directory, when edditing esphome yaml file for my esp32 there is an error:
"Platform not found: sensor.inode_ble"
It seems that I am missing registration somewhere of this custom component implementation.
Hi @ayufan,
Thank you for this integration.
When compiling with an inode_ble sensor, ESPHome shows the below warning.
This doesn't seem to affect the functioning of the sensor because the data is received and displayed properly.
Compiling /data/ble-gateway01/.pioenvs/ble-gateway01/src/esphome/components/inode_ble/inode_ble.cpp.o
src/esphome/components/inode_ble/inode_ble.cpp: In member function 'virtual bool iNodeMeterSensor::parse_device(const esphome::esp32_ble_tracker::ESPBTDevice&)':
src/esphome/components/inode_ble/inode_ble.cpp:32:30: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
if (service_data.uuid == emeterDevice || service_data.uuid == emeterDeviceLR) {
^~~~~~~~~~~~
In file included from src/esphome/components/inode_ble/inode_ble.cpp:1:
src/esphome/components/inode_ble/inode_ble.h:28:13: note: candidate 1: 'bool operator==(esphome::esp32_ble_tracker::ESPBTUUID, esphome::esp32_ble_tracker::ESPBTUUID)'
inline bool operator == (esphome::esp32_ble_tracker::ESPBTUUID a, esphome::esp32_ble_tracker::ESPBTUUID b) {
^~~~~~~~
In file included from src/esphome/components/inode_ble/inode_ble.h:5,
from src/esphome/components/inode_ble/inode_ble.cpp:1:
src/esphome/components/esp32_ble_tracker/esp32_ble_tracker.h:39:8: note: candidate 2: 'bool esphome::esp32_ble_tracker::ESPBTUUID::operator==(const esphome::esp32_ble_tracker::ESPBTUUID&) const'
bool operator==(const ESPBTUUID &uuid) const;
^~~~~~~~
src/esphome/components/inode_ble/inode_ble.cpp:32:67: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
if (service_data.uuid == emeterDevice || service_data.uuid == emeterDeviceLR) {
^~~~~~~~~~~~~~
In file included from src/esphome/components/inode_ble/inode_ble.cpp:1:
src/esphome/components/inode_ble/inode_ble.h:28:13: note: candidate 1: 'bool operator==(esphome::esp32_ble_tracker::ESPBTUUID, esphome::esp32_ble_tracker::ESPBTUUID)'
inline bool operator == (esphome::esp32_ble_tracker::ESPBTUUID a, esphome::esp32_ble_tracker::ESPBTUUID b) {
^~~~~~~~
In file included from src/esphome/components/inode_ble/inode_ble.h:5,
from src/esphome/components/inode_ble/inode_ble.cpp:1:
src/esphome/components/esp32_ble_tracker/esp32_ble_tracker.h:39:8: note: candidate 2: 'bool esphome::esp32_ble_tracker::ESPBTUUID::operator==(const esphome::esp32_ble_tracker::ESPBTUUID&) const'
bool operator==(const ESPBTUUID &uuid) const;
^~~~~~~~
Compiling /data/ble-gateway01/.pioenvs/ble-gateway01/src/main.cpp.o
Hey @ayufan,
First of all, thanks for this amazing components you've created, I tried to use the esp32_camera_web_server
but I'm not able to finish compiling the code. Can you please help me a bit here? Maybe I'm doing something wrong 😢
Error output:
Processing garage_camera (board: esp32dev; framework: arduino; platform: platformio/[email protected])
--------------------------------------------------------------------------------
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
PACKAGES:
- framework-arduinoespressif32 3.10006.210326 (1.0.6)
- tool-esptoolpy 1.30000.201119 (3.0.0)
- toolchain-xtensa32 2.50200.97 (5.2.0)
Library Manager: Installing Hash
Library Manager: Already installed, built-in library
Dependency Graph
|-- <AsyncTCP-esphome> 1.2.2
|-- <FS> 1.0
|-- <ESPAsyncWebServer-esphome> 1.3.0
| |-- <AsyncTCP-esphome> 1.2.2
| |-- <Crypto> 0.2.0
| |-- <FS> 1.0
| |-- <WiFi> 1.0
| |-- <ArduinoJson-esphomelib> 5.13.3
|-- <ESPmDNS> 1.0
| |-- <WiFi> 1.0
|-- <AsyncMqttClient-esphome> 0.8.4
| |-- <AsyncTCP-esphome> 1.2.2
|-- <ArduinoJson-esphomelib> 5.13.3
|-- <noise-c> 0.1.3
| |-- <libsodium> 1.10018.1
|-- <DNSServer> 1.1.0
| |-- <WiFi> 1.0
|-- <Update> 1.0
|-- <WiFi> 1.0
Compiling .pioenvs/garage_camera/src/main.cpp.o
src/main.cpp:18:1: error: 'esp32_camera_web_server' does not name a type
esp32_camera_web_server::WebServer *esp32_camera_web_server_webserver;
^
src/main.cpp: In function 'void setup()':
src/main.cpp:238:3: error: 'esp32_camera_web_server_webserver' was not declared in this scope
esp32_camera_web_server_webserver = new esp32_camera_web_server::WebServer();
^
src/main.cpp:238:43: error: 'esp32_camera_web_server' does not name a type
esp32_camera_web_server_webserver = new esp32_camera_web_server::WebServer();
^
src/main.cpp:240:47: error: 'esp32_camera_web_server' has not been declared
esp32_camera_web_server_webserver->set_mode(esp32_camera_web_server::Stream);
^
Compiling .pioenvs/garage_camera/lib39c/noise-c/backend/sodium/dh-curve25519.c.o
Compiling .pioenvs/garage_camera/lib39c/noise-c/backend/sodium/hash-blake2b.c.o
Compiling .pioenvs/garage_camera/lib39c/noise-c/backend/sodium/hash-sha256.c.o
Compiling .pioenvs/garage_camera/lib39c/noise-c/crypto/aes/rijndael-alg-fst.c.o
/root/.platformio/lib/noise-c/src/backend/sodium/dh-curve25519.c: In function 'noise_curve25519_calculate':
/root/.platformio/lib/noise-c/src/backend/sodium/dh-curve25519.c:97:5: warning: ignoring return value of 'crypto_scalarmult_curve25519', declared with attribute warn_unused_result [-Wunused-result]
crypto_scalarmult_curve25519(
^
Compiling .pioenvs/garage_camera/lib39c/noise-c/crypto/blake2/blake2b.c.o
Compiling .pioenvs/garage_camera/lib39c/noise-c/crypto/blake2/blake2s.c.o
Compiling .pioenvs/garage_camera/lib39c/noise-c/crypto/chacha/chacha.c.o
*** [.pioenvs/garage_camera/src/main.cpp.o] Error 1
YAML used for the camera:
substitutions:
# Common variables used on templates
node_name: garage_camera
update_interval: "5"
log_level: debug
# Get the secret's values
node_ip: !secret garage_camera
# Include common packages in order not to rewrite every single node
packages:
device_base: !include common/base_esp32.yaml
# Core configuration
esphome:
name: ${node_name}
board: esp32dev
comment: "Garage monitoring camera"
esp32_camera:
name: ${node_name} camera
external_clock:
pin: GPIO0
frequency: 20MHz
i2c_pins:
sda: GPIO26
scl: GPIO27
data_pins: [GPIO5, GPIO18, GPIO19, GPIO21, GPIO36, GPIO39, GPIO34, GPIO35]
vsync_pin: GPIO25
href_pin: GPIO23
pixel_clock_pin: GPIO22
power_down_pin: GPIO32
resolution: 1600x1200
jpeg_quality: 12
# Camera flash light
switch:
- platform: gpio
pin: GPIO4
name: ${node_name} camera flash
id: ${node_name}_camera_flash
external_components:
- source: github://ayufan/esphome-components
esp32_camera_web_server:
# define only what is needed
# only a single stream is supported at a given time
- port: 8080
mode: stream
If you need more info just ask for it.
I see in your example you have tasmota values
# {"PowerSetCal":10085}
# {"VoltageSetCal":1581}
# {"CurrentSetCal":3555}
How did you convert those to ESPhome yaml required ones?
At least I think it's caused by eq3_v2 since that is the only thing running, and my other devices did update to 2021.12.0 with no problems.
[D][climate:381]: 'Thermostat EQ3 Schlofzimmer' - Sending state:
[D][climate:384]: Mode: AUTO
[D][climate:395]: Preset: HOME
[D][climate:410]: Target Temperature: 12.00°C
[I][app:062]: setup() finished successfully!
[I][eq3:072]: Requesting ID of 1a220e5096...
[D][esp32_ble:104]: BT init done.
E (8066) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (8066) task_wdt: - loopTask (CPU 1)
E (8066) task_wdt: Tasks currently running:
E (8066) task_wdt: CPU 0: IDLE0
E (8066) task_wdt: CPU 1: IDLE1
E (8066) task_wdt: Aborting.
abort() was called at PC 0x401b9f28 on core 0
ELF file SHA256: 0000000000000000
Backtrace: 0x4008f980:0x3ffbfdf0 0x4008fbfd:0x3ffbfe10 0x401b9f28:0x3ffbfe30 0x4008e029:0x3ffbfe50 0x401e4767:0x3ffbc100 0x401bb8b3:0x3ffbc120 0x40092421:0x3ffbc140 0x40090c72:0x3ffbc160
Rebooting...
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
[E][esp32-hal-misc.c:111] disableCore1WDT(): Failed to remove Core 1 IDLE task from WDT
And then reboots.
My config
esphome:
name: esp-gang
platform: ESP32
board: esp32doit-devkit-v1
wifi:
*******
logger:
api:
ota:
external_components:
- source: github://ayufan/esphome-components
time:
- platform: sntp
id: sntp_time
climate:
- platform: eq3_v2
id: thermostat_eq3_schlofzimmer
name: Thermostat EQ3 Schlofzimmer
mac_address: ************
update_interval: 30min
valve: # optional, allows to see valve state in %
name: Thermostat EQ3 Schlofzimmer State
# expire_after: 61min
switch:
- platform: template
name: "Thermostat EQ3 Schlofzimmer Refresh"
lambda: "return false;"
turn_on_action:
- component.update: thermostat_eq3_schlofzimmer
A side note, the expire_after:
entry gives a This option requires component mqtt
. when compiling. I'm a bit confused as it already uses mqtt?
I am trying to use this eq3_v2 component in esphome.
I have included the advised include lines:
external_components:
- source: github://ayufan/esphome-components
.......
# time is required by `eq3_v2` to send
# an accurate time spec when requesting
# current state
time:
- platform: sntp
id: sntp_time
# refresh component state every 30mins,
# and announce it to Home Assistant MQTT
climate:
- platform: eq3_v2
id: office_eq3
name: Office EQ3
mac_address: 00:1A:22:12:5B:34
update_interval: 30min
valve: # optional, allows to see valve state in %
name: Office EQ3 Valve State
expire_after: 61min
# allow to force refresh component state
switch:
- platform: template
name: "Refresh Office EQ3"
lambda: "return false;"
turn_on_action:
- component.update: office_eq3
But then I get an error saying that the eq3_v2.climate component cannot be found
INFO Reading configuration /config/esphome/conrad-salajuegos.yaml...
ERROR Unable to load component eq3_v2.climate:
Traceback (most recent call last):
File "/esphome/esphome/loader.py", line 162, in _lookup_module
module = importlib.import_module(f"esphome.components.{domain}")
File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 790, in exec_module
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "/config/esphome/.esphome/external_components/d599fc18/components/eq3_v2/climate.py", line 23, in <module>
cv.Optional(CONF_VALVE): sensor.sensor_schema(UNIT_PERCENT, ICON_PERCENT, 0),
TypeError: sensor_schema() takes from 0 to 1 positional arguments but 3 were given
INFO Detected timezone 'Europe/Madrid'
Failed config
Assuming it was a documentation error, I have changed the include lines to:
external_components:
- source: github://ayufan/esphome-components/components
But now I get an error in the climate.py code:
INFO Reading configuration /config/esphome/conrad-salajuegos.yaml...
ERROR Unable to load component eq3_v2.climate:
Traceback (most recent call last):
File "/esphome/esphome/loader.py", line 162, in _lookup_module
module = importlib.import_module(f"esphome.components.{domain}")
File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 790, in exec_module
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "/config/esphome/.esphome/external_components/d599fc18/components/eq3_v2/climate.py", line 23, in <module>
cv.Optional(CONF_VALVE): sensor.sensor_schema(UNIT_PERCENT, ICON_PERCENT, 0),
TypeError: sensor_schema() takes from 0 to 1 positional arguments but 3 were given
INFO Detected timezone 'Europe/Madrid'
Failed config
It seems that there is a bug and and one more parameter than needed.
Hello
I'm trying to implement eq3_v2 component, but it doesn't want to compile in esphome because of the error "Platform not found: 'climate.eq3_v2'.
Here is part of my config:
esphome:
name: esp32-eq3-gateway
platform: ESP32
board: esp32dev
logger:
api:
ota:
wifi:
ssid: 'Home automation'
password: 'secretpassword'
ap:
ssid: "Esp32-Eq3-Gateway"
password: "password"
captive_portal:
web_server:
port: 80
external_components:
- source: github://ayufan/esphome-components
esp32_ble_tracker:
sensor:
- platform: ble_rssi
mac_address: 03:14:54:0E:0A:5B
name: "EQ3 valve"
time:
- platform: sntp
id: sntp_time
climate:
- platform: eq3_v2
id: office_eq3
name: Bathroom EQ3
mac_address: 03:14:54:0E:0A:5B
update_interval: 30min
valve:
name: Bathroom EQ3 Valve State
expire_after: 61min
I'm using ESPHome 2021.9.3.
Kind regards
Hi, I was wondering if you had tried to make the memory component report a percentage free, or if you'd considered it and felt the current implementation is more useful? Also, what do you think about making it a sensor to be visible from the dashboard?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.