I am trying to compile this for my Roomba 650 using ESPHome (HASS.IO/Docker running on Synology). I am using the example ESPHome.yaml from https://github.com/mannkind/ESPHomeRoombaComponent, but receiving an error when trying to compile. I am pretty stuck with this, so would greatly appreciate any help.
My yaml is as follows;
esphome:
name: roomba_001
platform: ESP8266
board: d1_mini
libraries:
- Roomba=https://github.com/Apocrathia/Roomba
includes:
- …/esphome/roomba/src/ESPHomeRoombaComponent.h
substitutions:
name: “Roomba”
state topic, command topic, BRC pin, polling interval
init: ‘RoombaComponent::instance(“roomba_001/state”, “roomba_001/command”, 2, 1000);’
wifi:
ssid: “xxxxxx”
password: “xxxx”
mqtt:
broker: 192.168.xxxxx
discovery: true
logger:
baud_rate: 0
level: info
ota:
custom_component:
- lambda: |-
auto r = ${init}
return {r};
sensor:
-
platform: custom
lambda: |-
auto r = ${init}
return {r->distanceSensor, r->voltageSensor, r->currentSensor, r->chargeSensor, r->capacitySensor};
sensors:
- name: “${name} distance”
unit_of_measurement: “mm”
accuracy_decimals: 0
- name: “${name} voltage”
unit_of_measurement: “mV”
accuracy_decimals: 0
- name: “${name} current”
unit_of_measurement: “mA”
accuracy_decimals: 0
- name: “${name} charge”
unit_of_measurement: “mAh”
accuracy_decimals: 0
- name: “${name} capacity”
unit_of_measurement: “mAh”
accuracy_decimals: 0
binary_sensor:
-
platform: status
name: “{name} Status”
-
platform: custom
lambda: |-
auto r = ${init}
return {r->chargingBinarySensor, r->dockedBinarySensor, r->cleaningBinarySensor};
binary_sensors:
- name: “${name} charging”
- name: “${name} docked”
- name: “${name} cleaning”
ESPHome Reports an issue during compiling the binary;
INFO Reading configuration /config/esphome/roomba.yaml…
INFO Generating C++ source…
INFO Compiling app…
INFO Running: platformio run -d /config/esphome/roomba_001
Processing roomba_001 (board: d1_mini; framework: arduino; platform: [email protected])
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
Dependency Graph
|-- 1.2.2
| |-- 1.0
|-- 1.0
|-- 1.2
| |-- 1.0
|-- 0.8.4
| |-- 1.2.2
| | |-- 1.0
|-- 5.13.3
Compiling /data/roomba_001/.pioenvs/roomba_001/src/main.cpp.o
Linking /data/roomba_001/.pioenvs/roomba_001/firmware.elf
/data/roomba_001/.pioenvs/roomba_001/src/main.cpp.o:(.text._ZN15RoombaComponent5setupEv[RoombaComponent::setup()]+0x10): undefined reference to Roomba::start()' /data/roomba_001/.pioenvs/roomba_001/src/main.cpp.o: In function
RoombaComponent::setup()’:
main.cpp:(.text._ZN15RoombaComponent5setupEv[RoombaComponent::setup()]+0x38): undefined reference to Roomba::start()' /data/roomba_001/.pioenvs/roomba_001/src/main.cpp.o:(.text._ZN15RoombaComponent8instanceERKSsS1_hj[RoombaComponent::instance(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned char, unsigned int)]+0xc): undefined reference to
Roomba::Roomba(HardwareSerial*, Roomba::Baud)’
/data/roomba_001/.pioenvs/roomba_001/src/main.cpp.o:(.text._ZN15RoombaComponent8instanceERKSsS1_hj[RoombaComponent::instance(std::basic_string<char, std::char_traits, std::allocator > const&, std::basic_string<char, std::char_traits, std::allocator > const&, unsigned char, unsigned int)]+0x59): undefined reference to Roomba::Roomba(HardwareSerial*, Roomba::Baud)' /data/roomba_001/.pioenvs/roomba_001/src/main.cpp.o:(.text._ZN15RoombaComponent10on_messageERKSs[RoombaComponent::on_message(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)]+0x30): undefined reference to
Roomba::playSong(unsigned char)’
/data/roomba_001/.pioenvs/roomba_001/src/main.cpp.o:(.text._ZN15RoombaComponent10on_messageERKSs[RoombaComponent::on_message(std::basic_string<char, std::char_traits, std::allocator > const&)]+0x34): undefined reference to Roomba::cover()' /data/roomba_001/.pioenvs/roomba_001/src/main.cpp.o:(.text._ZN15RoombaComponent10on_messageERKSs[RoombaComponent::on_message(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)]+0x38): undefined reference to
Roomba::dock()’
/data/roomba_001/.pioenvs/roomba_001/src/main.cpp.o:(.text._ZN15RoombaComponent10on_messageERKSs[RoombaComponent::on_message(std::basic_string<char, std::char_traits, std::allocator > const&)]+0x3c): undefined reference to Roomba::spot()' /data/roomba_001/.pioenvs/roomba_001/src/main.cpp.o: In function
RoombaComponent::on_message(std::basic_string<char, std::char_traits, std::allocator > const&)’:
main.cpp:(.text._ZN15RoombaComponent10on_messageERKSs[RoombaComponent::on_message(std::basic_string<char, std::char_traits, std::allocator > const&)]+0xc7): undefined reference to Roomba::playSong(unsigned char)' main.cpp:(.text._ZN15RoombaComponent10on_messageERKSs[RoombaComponent::on_message(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)]+0x103): undefined reference to
Roomba::cover()’
main.cpp:(.text._ZN15RoombaComponent10on_messageERKSs[RoombaComponent::on_message(std::basic_string<char, std::char_traits, std::allocator > const&)]+0x12f): undefined reference to Roomba::dock()' main.cpp:(.text._ZN15RoombaComponent10on_messageERKSs[RoombaComponent::on_message(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)]+0x168): undefined reference to
Roomba::spot()’
/data/roomba_001/.pioenvs/roomba_001/src/main.cpp.o:(.text._ZN15RoombaComponent6updateEv[RoombaComponent::update()]+0x30): undefined reference to Roomba::getSensorsList(unsigned char*, unsigned char, unsigned char*, unsigned char)' /data/roomba_001/.pioenvs/roomba_001/src/main.cpp.o:(.text._ZN15RoombaComponent6updateEv[RoombaComponent::update()]+0x92): undefined reference to
Roomba::getSensorsList(unsigned char*, unsigned char, unsigned char*, unsigned char)’
collect2: error: ld returned 1 exit status
*** [/data/roomba_001/.pioenvs/roomba_001/firmware.elf] Error 1
========================= [FAILED] Took 30.41 seconds =========================