Hi All,
My ITHO is running on ESPhome 2024.8.3 with a library:
This cannot be update to ESPHome 2025.9.x:
INFO ESPHome 2025.9.3
INFO Reading configuration /config/esphome/meek-itho.yaml...
Failed config
esphome: [source /config/esphome/meek-itho.yaml:13]
name: meek-itho
Please remove the `platform` key from the [esphome] block and use the correct platform component. This style of configuration has now been removed.
platform: ESP8266
board: nodemcuv2
includes:
- lib/scriptman.h
libraries:
- SPI
- Ticker
- https://github.com/Scriptman/ESPHome_ITHO_Eco_Fan_CC1101.git
on_boot:
then:
- lambda: |-
Does someone have a different library or total different way how to solve this?
YAML CONFIG of ESPHome:
#########################################################
# Below all fixed settings for bathroom PCB
#########################################################
substitutions:
devicename: meek-itho
friendly: ITHO
ip: 192.168.100.150
#########################################################
# Everything below can be copy/paste without problem
#########################################################
esphome:
name: ${devicename}
platform: ESP8266
board: nodemcuv2
includes:
- lib/scriptman.h
libraries:
- SPI
- Ticker
- https://github.com/Scriptman/ESPHome_ITHO_Eco_Fan_CC1101.git
on_boot:
then:
- lambda: |-
Idlist[0]={"65:99:96:55:96:a9:9a:56","Kitchen"};
Idlist[1]={"6a:59:6a:55:96:a9:9a:56","Bathroom"};
Idlist[2]={"ID3","ID3"};
Mydeviceid="Home Assistant";
id(swfan_low).turn_on(); //This ensures fan is at low-speed at boot
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
reboot_timeout: 0s
fast_connect: true
manual_ip:
static_ip: ${ip}
gateway: 192.168.100.1
subnet: 255.255.255.0
dns1: 192.168.100.1
ap:
ssid: ${devicename}
password: !secret password
channel: 4
api:
encryption:
key: !secret api_key
reboot_timeout: 15min
time:
- platform: homeassistant
id: homeassistant_time
captive_portal:
web_server:
port: 80
preferences:
flash_write_interval: 1min
logger:
level: INFO
ota:
- platform: esphome
password: !secret password
safe_mode:
reboot_timeout: 0s
button:
- platform: factory_reset
name: "${friendly} - Reset"
binary_sensor:
- platform: status
name: "${friendly} - Connection status"
sensor:
- platform: wifi_signal
id: "wifi_db_signal"
name: "${friendly} - Wifi Signal"
update_interval: 5min
- platform: uptime
name: "${friendly} - Uptime"
update_interval: 5min
- platform: template
name: "${friendly} WiFi Percentage"
id: wifi_percentage
entity_category: diagnostic
state_class: measurement
update_interval: 10s
unit_of_measurement: "%"
accuracy_decimals: 0
icon: mdi:wifi
lambda: >
auto signal = id(wifi_db_signal).state;
float perc = 0;
if (signal < -92.0)
perc = 100.0;
else if (signal > -21.0)
perc = 1.0;
else
perc = round(( -0.0154 * signal * signal )-( 0.3794 * signal ) + 98.182 );
if(perc <= 0)
return 0.0;
else if(perc >= 100)
return 100.0;
else
return perc;
switch:
- platform: custom
lambda: |-
auto fansendstandby = new FanSendStandby();
App.register_component(fansendstandby);
return {fansendstandby};
switches:
name: "Fan Standby"
id: swfan_standby
icon: mdi:fan
- platform: custom
lambda: |-
auto fansendlow = new FanSendLow();
App.register_component(fansendlow);
return {fansendlow};
switches:
name: "Fan Low"
id: swfan_low
icon: mdi:fan
- platform: custom
lambda: |-
auto fansendmedium = new FanSendMedium();
App.register_component(fansendmedium);
return {fansendmedium};
switches:
name: "Fan Medium"
id: swfan_medium
icon: mdi:fan
- platform: custom
lambda: |-
auto fansendhigh = new FanSendHigh();
App.register_component(fansendhigh);
return {fansendhigh};
switches:
name: "Fan High"
id: swfan_high
icon: mdi:fan
- platform: custom
lambda: |-
auto fansendt1 = new FanSendIthoTimer1();
App.register_component(fansendt1);
return {fansendt1};
switches:
name: "Fan Timer 10min"
- platform: custom
lambda: |-
auto fansendt2 = new FanSendIthoTimer2();
App.register_component(fansendt2);
return {fansendt2};
switches:
name: "Fan Timer 20min"
- platform: custom
lambda: |-
auto fansendt3 = new FanSendIthoTimer3();
App.register_component(fansendt3);
return {fansendt3};
switches:
name: "Fan Timer 30min"
- platform: custom
lambda: |-
auto fansendjoin = new FanSendIthoJoin();
App.register_component(fansendjoin);
return {fansendjoin};
switches:
name: "Fan Pair"
- platform: safe_mode
name: "${friendly} - safe mode"
id: "${friendly}_safe_mode"
text_sensor:
- platform: wifi_info
ip_address:
name: "${friendly} - IP"
icon: mdi:lan
ssid:
name: "${friendly} - SSID"
icon: mdi:lan
bssid:
name: "${friendly} - BSSID"
icon: mdi:lan
mac_address:
name: "${friendly} - MAC"
icon: mdi:lan
- platform: version
name: "${friendly} - Version"
hide_timestamp: true
- platform: custom
lambda: |-
auto fanrecv = new FanRecv();
App.register_component(fanrecv);
return {fanrecv->fanspeed,fanrecv->fantimer,fanrecv->Lastid};
text_sensors:
- name: "Fan Speed"
icon: "mdi:transfer"
- name: "Timer"
icon: "mdi:timer"
- name: "Fan Remote"
icon: "mdi:id-card"