climateguard / CG-Anem

Arduino library for thermoanemometer CG-Anem to simplify integration into compatible platforms.
GNU General Public License v3.0
12 stars 4 forks source link

Add library for ESP32 #4

Open userosos opened 11 months ago

userosos commented 11 months ago

Привет! Я не могу добавить устройство в ESPhome. Скопировал в /esphome/cgAnem/ файлы cgAnem.cpp и cgAnem.h Файл конфигурации esphome:

esphome:
  name: esp32
  friendly_name: ESP32
  libraries:
   - Wire
   - "ClimateGuard CG Anem"
   -  Arduino
  includes:
   - cgAnem/cgAnem.h
   - cgAnem/cgAnem.cpp

esp32:
  board: esp32dev
  framework:
    type: arduino

i2c:
  - id: bus_a
    sda: 32
    scl: 33
  - id: bus_b
    sda: 14
    scl: 15
    scan: true
  #  scan: true
......
sensor:
  - platform: custom
    lambda: |-
     auto CGAnem = new CG_Anem(0x11);
     App.register_component(CGAnem);
     return {CGAnem->temperature,CGAnem->airConsumption,CGAnem->airflowRate};

    sensors:
    - name: "Temperatura"
      id: CG_Anem_temperature
#      accuracy_decimals: 0.1
      unit_of_measurement: C
      state_class: measurement
    - name: "airConsumption"
      id: airConsumption
#      accuracy_decimals: 0.1
      unit_of_measurement: m^3/hour
      state_class: measurement
    - name: "airflowRate"
      id: airflowRate
#      accuracy_decimals: 0.1
      unit_of_measurement: m/s
      state_class: measurement

Но так не работает. т. к. библиотека все же не предназначена для ESPhome.

Нашел подобный проект где человек переделал библиотеку, но сам не смогу переделать: https://github.com/maaad/RadSens1v2

climateguard commented 11 months ago

Добрый день, как я понимаю esp home нужно задать методы которые надо вызывать. В конфиг файле я этого не вижу. Какую ошибку выдаёт esphome?

userosos commented 11 months ago

Добрый день, как я понимаю esp home нужно задать методы которые надо вызывать. В конфиг файле я этого не вижу. Какую ошибку выдаёт esphome?

INFO ESPHome 2023.11.6
INFO Reading configuration /config/esphome/esp32.yaml...
WARNING GPIO15 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
WARNING GPIO15 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
INFO Generating C++ source...
INFO Compiling app...
Processing esp32 (board: esp32dev; framework: arduino; platform: platformio/espressif32@5.4.0)
--------------------------------------------------------------------------------
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
Dependency Graph
|-- AsyncTCP-esphome @ 2.0.1
|-- Wire @ 2.0.0
|-- ClimateGuard CG Anem @ 1.0.3
|-- WiFi @ 2.0.0
|-- FS @ 2.0.0
|-- Update @ 2.0.0
|-- ESPAsyncWebServer-esphome @ 3.1.0
|-- DNSServer @ 2.0.0
|-- ESPmDNS @ 2.0.0
|-- noise-c @ 0.1.4
|-- Sensirion Gas Index Algorithm @ 3.2.1+sha.dbf2982
Compiling .pioenvs/esp32/src/main.cpp.o
Compiling .pioenvs/esp32/lib64d/WiFi/WiFiGeneric.cpp.o
Compiling .pioenvs/esp32/lib64d/WiFi/WiFiMulti.cpp.o
Compiling .pioenvs/esp32/lib64d/WiFi/WiFiSTA.cpp.o
/config/esphome/esp32.yaml: In lambda function:
/config/esphome/esp32.yaml:133:77: error: could not convert '{CGAnem->CG_Anem::temperature, CGAnem->CG_Anem::airConsumption, CGAnem->CG_Anem::airflowRate}' from '<brace-enclosed initializer list>' to 'std::vector<esphome::sensor::Sensor*>'
      return {CGAnem->temperature,CGAnem->airConsumption,CGAnem->airflowRate};
                                                                             ^
Compiling .pioenvs/esp32/lib64d/WiFi/WiFiScan.cpp.o
In file included from src/esphome/components/api/api_connection.h:7,
                 from src/esphome.h:4,
                 from src/main.cpp:3:
src/esphome/core/application.h: In instantiation of 'C* esphome::Application::register_component(C*) [with C = CG_Anem]':
/config/esphome/esp32.yaml:132:36:   required from here
src/esphome/core/application.h:148:19: error: static assertion failed: Only Component subclasses can be registered
     static_assert(std::is_base_of<Component, C>::value, "Only Component subclasses can be registered");
                   ^~~
Compiling .pioenvs/esp32/lib64d/WiFi/WiFiServer.cpp.o
*** [.pioenvs/esp32/src/main.cpp.o] Error 1
========================== [FAILED] Took 9.51 seconds ==========================

Насколько я понял что бы подключить таким способом, как у меня в конфиге необходимо переделывать библиотеку как в этом проекте - https://github.com/climateguard/RadSens/blob/master/src/CG_RadSens.h Но сам я. к сожалению, не смогу сделать. Может можно и задать методы внутри конфиг. файла ESPhome, но как я не могу понять.

userosos commented 11 months ago

Добрый день, как я понимаю esp home нужно задать методы которые надо вызывать. В конфиг файле я этого не вижу. Какую ошибку выдаёт esphome?

Вот тут человек подготовил библиотеку для ESPhome. Сегодня только вечером смогу попробовать. https://github.com/maaad/CG-Anem