Thank you, you check out the series on the Room Sensor where I am building a room sensor packed with usefull sensors, the 2nd one is probably coming out tomorrow around 15:00 UTC
You have done a great job with your videos with explaining what things do so we can understand them rather than what is the usual with other tutorials that are "do this, do this, do that" and no explanation. I am doing this as both serving my home and improving my life but also as a healthy brain hobby. As such I may want to try things out and reuse an ESP32 for other sensors or devices. Any chance you'll do a video on wiping a esp32 for reuse and clearing it from EspHome?
Hi Andrew, First, I want to thank you for the kind words. As for the wiping of the ESP32 or 8266, it does not need a video, I reuse my development boards often, so I do this as often. If you are changing the IP address, any API keys or passwords, reupload using the USB method I showed in this tutorial. However, if none of these are going to change, you can use Wi-Fi, I have a couple of ESP32 S3s I regularly do that with. I would also encourage you to have a look at my "Coding Practices, Tips and Tricks" series, which is the advanced version of this tutorial. Because you will be re-using using the same codebase the Wi-Fi method becomes more stable. I hope that helps. Cheers Pascal
Nice video. I also have 20 active esphome devices and wrote template for all my new devices. I'm using mostly D1 mini's(8266) because of the small size. Easier to 3D-print boxes;-) I have missed OTA details and globals altogether. Thanks for the tips 👍👍
Forgot to mention, but I'm still using ha api connection check on esphome device boot, because I have plenty of LCD-screens and it will turn of the backlight on my code when connection is ok. I can see immediately, if connection fails-> esphome: name: ${esphome_name} platform: ESP8266 board: d1_mini on_boot: priority: -10 then: - wait_until: api.connected: - logger.log: API is connected!
Thanks Marko, I am currently working on a more advanced and modular version of this tutorial, it will include a lot of tips too. Now I need my voice back so I can record them.
I have watched a ton of tutorials on youtube and you go the extra mile to explain why versus just showing what to do. I look forward to subscribing to your channel
Very detailed info why and what to follow 👍 Got your channel suggested 1st time in 4+ year with home assistant learning 😅 Love and respect from India 🙏🙏
Thanks Manu I’ve only been around for a few months though. There is much more coming and the next series is an extension of this one, but we will be going into more advanced techniques and additional properties, I hope you will enjoy it as much as I do preparing and recording them. And don’t hesitate to ask questions. Love and respect from South Africa
Thx Pascal. I have been playing a while with ESPHome and started to work on a basic setup template. Your style, tempo and amount of info you shared is excellent. Well done.
Pascal - A very elegant and streamlined way of coding a standard 'foundation' for esp home devices. Thank you. BTW the second link above to the code, doesn't work.
one thing, i believe reboot_timeout: on api config is not to get connected as soon as possible, with that you are disabling the reboot if there is no api connection, normally it waits 15 min to connect to api and if it does not find it it reboot the device, with the config you added it will no reboot if its not connected to api
from the documentation: reboot_timeout (Optional, Time): The amount of time to wait before rebooting when no client connects to the API. This is needed because sometimes the low level ESP functions report that the ESP is connected to the network, when in fact it is not - only a full reboot fixes it. Can be disabled by setting this to 0s. Defaults to 15min.
Thanks for the reply. I am structuring all my new devices that I am adding to have your suggestion structure approach. The old devices I think I have to reload the firmware (won't work OTA) with the new secrets structures..
If you use a underscore on the "device_internal_name" value you will get an notification when compiling that you should not use underscore for the host name for the device. And if yo use a - instead then it's not compiling as you can't use - in ids.
I apologize for the late response, I’ve been tied up to an hospital bed since last Saturday, I am still there. This happens because older WiFi protocols do not “like” underscores in the host name, most modern WiFi protocols are not as fussy, hence the warning. Having said that I find it odd that I did not pick up my oversight, I’ll need to compare the code of the video and my GitHub. This will have to happen when I return home. Thank you for pointing it out. - Pascal
Great video I learn a lot of things from your video. I instald thelas esphome add on version on my home assistant. But every time i want to compile a node the add on gives an eror. The eror is maximum resources reced. Thanks for the help
You can try 2 things, 1. Reboot the Home Assistant machine, that worked for me last time. 2. You may be short on memory, that would require more RAM. If you have 4Gb or more this should not be a problem though.
Pascal, I have a question for you, finally I have some times to deep dive this video. I love the structure for all the devices. 1) I do have a question for you. This assumes that in the secrets, the api_encryption_key, the web_server_password, web_server_user they all are going to be the same for each sensor ? If that is true (correct me if understood this right), is not an issue to have different sensors with the same api_encryption_key, web_server_password .... etc been the same ??? 2) If 1) is correct can I do the same (for all the devices) to have the gateway_address and subnet_address been the same in the secrets.yaml ? Thanks a lot for all your videos !!!! They are awesome. Well structure and super detail. Thank you for doing all of that for your followers and subcribers. THANKS AGAIN !!!!!! Makes sure you don't miss the Solar Eclipse, for me it will be at 3:00PM (Michigan, USA) .... Not sure if you will get to see it where you are !!!!
Hey Miguel, Thank you, though a tweaked the structure to allow for a few other things, unfortunately the next video will probably only be available in a couple of weeks 😟. My body is not leaving a choice. 1. Your assumption is correct, I use a single randomized password and key for all my devices. It makes life so much easier with very little drawbacks security wise as all the devices are within my internal network.
I have manually typed this into my home assistant and it kept not working, i then copied yours and yours also isn't working. Have there maybe been updates that have made this coding stoip working? It stops at the Binary Sensor name "id: ${device_internal_name}_status" where in the fault says the name cannot have a $ , Can anyone help me out, i have been trouble shooting this for 4 hours without any luck.
I am not sure I understand, but here are 2 things you can try 1. Is device_internal_name defined? 2. Are you typing as follows: id: ${device_internal_name}_status Lastly, are you doing this in ESPHome or Home Assistant ? The code that I have on GitHub is fully tested, except for the ota change there is nothing else that should break it. Can you maybe paste the full error, so I can help?
@@homeautomatorza I have a screen shot of the error code and the actions that have run before it. is there anyway i can forward this to you at all please ?
@@homeautomatorza INFO ESPHome 2024.6.6 INFO Reading configuration /config/esphome/foundation-device.yaml... WARNING Found '${device_internal_name}_status' (see binary_sensor->0->id) which looks like a substitution, but 'device_internal_name' was not declared WARNING Found '${device_internal_name}_wifi_signal_sensor' (see sensor->0->id) which looks like a substitution, but 'device_internal_name' was not declared WARNING Found '${device_internal_name}_uptime_sensor' (see sensor->1->name) which looks like a substitution, but 'device_internal_name' was not declared WARNING Found '${device_internal_name}_uptime_human' (see sensor->1->on_raw_value->then->0->text_sensor.template.publish->id) which looks like a substitution, but 'device_internal_name' was not declared WARNING Found 'int seconds = round(id(${device_internal_name}_uptime_sensor).raw_state); int days = seconds / (24 * 3600); seconds = seconds % (24 * 3600); int hours = seconds / 3600; seconds = seconds % 3600; int minutes = seconds / 60; seconds = seconds % 60; return ( (days ? to_string(days) + "d " : "") + (hours ? to_string(hours) + "h " : "") + (minutes ? to_string(minutes) + "m " : "") + to_string(seconds) + "s") ).c_str();' (see sensor->1->on_raw_value->then->0->text_sensor.template.publish->state) which looks like a substitution, but 'device_internal_name' was not declared WARNING Found '${device_internal_name}_ip_address' (see text_sensor->0->ip_address->id) which looks like a substitution, but 'device_internal_name' was not declared WARNING Found '${device_internal_name}_connected_ssid' (see text_sensor->0->ssid->id) which looks like a substitution, but 'device_internal_name' was not declared WARNING Found '${device_internal_name}_mac_address' (see text_sensor->0->mac_address->id) which looks like a substitution, but 'device_internal_name' was not declared WARNING Found '${device_internal_name}_uptime_human' (see text_sensor->2->id) which looks like a substitution, but 'device_internal_name' was not declared WARNING Found '${device_internal_name}_status' (see binary_sensor->0->id) which looks like a substitution, but 'device_internal_name' was not declared WARNING Found '${device_internal_name}_wifi_signal_sensor' (see sensor->0->id) which looks like a substitution, but 'device_internal_name' was not declared WARNING Found '${device_internal_name}_uptime_sensor' (see sensor->1->name) which looks like a substitution, but 'device_internal_name' was not declared WARNING Found '${device_internal_name}_uptime_human' (see sensor->1->on_raw_value->then->0->text_sensor.template.publish->id) which looks like a substitution, but 'device_internal_name' was not declared WARNING Found 'int seconds = round(id(${device_internal_name}_uptime_sensor).raw_state); int days = seconds / (24 * 3600); seconds = seconds % (24 * 3600); int hours = seconds / 3600; seconds = seconds % 3600; int minutes = seconds / 60; seconds = seconds % 60; return ( (days ? to_string(days) + "d " : "") + (hours ? to_string(hours) + "h " : "") + (minutes ? to_string(minutes) + "m " : "") + to_string(seconds) + "s") ).c_str();' (see sensor->1->on_raw_value->then->0->text_sensor.template.publish->state) which looks like a substitution, but 'device_internal_name' was not declared WARNING Found '${device_internal_name}_ip_address' (see text_sensor->0->ip_address->id) which looks like a substitution, but 'device_internal_name' was not declared WARNING Found '${device_internal_name}_connected_ssid' (see text_sensor->0->ssid->id) which looks like a substitution, but 'device_internal_name' was not declared WARNING Found '${device_internal_name}_mac_address' (see text_sensor->0->mac_address->id) which looks like a substitution, but 'device_internal_name' was not declared WARNING Found '${device_internal_name}_uptime_human' (see text_sensor->2->id) which looks like a substitution, but 'device_internal_name' was not declared WARNING 'esphome_foundation_device': Using the '_' (underscore) character in the hostname is discouraged as it can cause problems with some DHCP and local name services. For more information, see esphome.io/guides/faq.html#why-shouldn-t-i-use-underscores-in-my-device-name WARNING GPIO2 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 esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins INFO Detected timezone 'Europe/London' Failed config binary_sensor.status: [source /config/esphome/foundation-device.yaml:111] platform: status name: Status
IDs must only consist of upper/lowercase characters, the underscorecharacter and numbers. The character '$' cannot be used. id: ${device_internal_name}_status
Just some suggestions. Get to the point quickly and leave out the extra info. 44 minutes video to watch is difficult to find the info one is looking for. Thanks for your effort.
Many things have changed since my early days, I’ve focused and shortened my videos since. You should have a look at my Coding Practices, Tips and Tricks series (th-cam.com/play/PLJ3MNJX_MOUnMWzUNDatN3LWAN8l99v5I.html&si=lCZMVffIv4t7r3-m) which takes this tutorial content a makes it modular. And yes I still go deep, so you understand everything which helps you troubleshoot. Also all my tutorials have chapters, so you can find what you are looking for fast. Thanks for the suggestion though, enjoy making with ESPHome.
Absolutely hands down the best ESPHome video I’ve seen to date. Great information here.
Great video. Now I know how to connect my ESP32’s to Home Assistant. Excellent start!
Glad I could help!
Wow Pascal ..... another fantastic video. You definitely Rock !!!!
Thank you for all your effort putting this together.
My pleasure!
Got into HA and ESPHome a few months ago. This video is so absolutely packed with information. Amazing!
Thank you, you check out the series on the Room Sensor where I am building a room sensor packed with usefull sensors, the 2nd one is probably coming out tomorrow around 15:00 UTC
Excellent tutorial, I really enjoyed this video. I learnt a lot...
Glad it was helpful!
You have done a great job with your videos with explaining what things do so we can understand them rather than what is the usual with other tutorials that are "do this, do this, do that" and no explanation. I am doing this as both serving my home and improving my life but also as a healthy brain hobby. As such I may want to try things out and reuse an ESP32 for other sensors or devices. Any chance you'll do a video on wiping a esp32 for reuse and clearing it from EspHome?
Hi Andrew,
First, I want to thank you for the kind words.
As for the wiping of the ESP32 or 8266, it does not need a video, I reuse my development boards often, so I do this as often.
If you are changing the IP address, any API keys or passwords, reupload using the USB method I showed in this tutorial.
However, if none of these are going to change, you can use Wi-Fi, I have a couple of ESP32 S3s I regularly do that with.
I would also encourage you to have a look at my "Coding Practices, Tips and Tricks" series, which is the advanced version of this tutorial. Because you will be re-using using the same codebase the Wi-Fi method becomes more stable.
I hope that helps.
Cheers
Pascal
Thank you so much for knowledge transfer its really helpful.😀😀
My pleasure
I have been tearing my my hair out the last few days. Pascal, thank you so much. Everything I was looking for and more. Thanks again. Jim
Pleasure Jim, glad I could help
You should have a look at my new series, which is a more advanced way to approach this.
Will do thanks!
Nice video. I also have 20 active esphome devices and wrote template for all my new devices. I'm using mostly D1 mini's(8266) because of the small size. Easier to 3D-print boxes;-) I have missed OTA details and globals altogether. Thanks for the tips 👍👍
Forgot to mention, but I'm still using ha api connection check on esphome device boot, because I have plenty of LCD-screens and it will turn of the backlight on my code when connection is ok. I can see immediately, if connection fails->
esphome:
name: ${esphome_name}
platform: ESP8266
board: d1_mini
on_boot:
priority: -10
then:
- wait_until:
api.connected:
- logger.log: API is connected!
Thanks Marko, I am currently working on a more advanced and modular version of this tutorial, it will include a lot of tips too.
Now I need my voice back so I can record them.
Amazing good video. Please keep up the good work🎉
Thank you! Will do!
Have a llok at these th-cam.com/play/PLJ3MNJX_MOUnMWzUNDatN3LWAN8l99v5I.html
It's the new intermediate version of this video.
I have watched a ton of tutorials on youtube and you go the extra mile to explain why versus just showing what to do. I look forward to subscribing to your channel
Thank you.
Very detailed info why and what to follow 👍
Got your channel suggested 1st time in 4+ year with home assistant learning 😅
Love and respect from India 🙏🙏
Thanks Manu
I’ve only been around for a few months though.
There is much more coming and the next series is an extension of this one, but we will be going into more advanced techniques and additional properties, I hope you will enjoy it as much as I do preparing and recording them.
And don’t hesitate to ask questions.
Love and respect from South Africa
Amaizing video, keep them coming
Thanks, will do!
Thx Pascal. I have been playing a while with ESPHome and started to work on a basic setup template. Your style, tempo and amount of info you shared is excellent. Well done.
Thank you. I'm just getting started and this was a fantastic introduction.
Pascal - A very elegant and streamlined way of coding a standard 'foundation' for esp home devices. Thank you.
BTW the second link above to the code, doesn't work.
Wait until Saturday’s livestream where I’ll show more advanced ways to do the code and stream line it even more.
I’ll check the link, thanks.
Thank you!
You're welcome!
Oustanding, very clear very usefull
Thank you
What a fantastic video. Gave me lots to think about
Glad you enjoyed it!
one thing, i believe reboot_timeout: on api config is not to get connected as soon as possible, with that you are disabling the reboot if there is no api connection, normally it waits 15 min to connect to api and if it does not find it it reboot the device, with the config you added it will no reboot if its not connected to api
from the documentation:
reboot_timeout (Optional, Time): The amount of time to wait before rebooting when no client connects to the API. This is needed because sometimes the low level ESP functions report that the ESP is connected to the network, when in fact it is not - only a full reboot fixes it. Can be disabled by setting this to 0s. Defaults to 15min.
You are correct, I’ll check the video but I thought it was correctly explained
Thanks for the reply. I am structuring all my new devices that I am adding to have your suggestion structure approach.
The old devices I think I have to reload the firmware (won't work OTA) with the new secrets structures..
tnx, will use the template from the site
This is excellent, just looking into esp home, and learnt so much here.
Great video, thanks for sharing your knowledge.
New subscriber 👍
Glad I could help, a channel update is coming soon, lot's of exiting stuff coming.
Great job !
Thank you
If you use a underscore on the "device_internal_name" value you will get an notification when compiling that you should not use underscore for the host name for the device. And if yo use a - instead then it's not compiling as you can't use - in ids.
I apologize for the late response, I’ve been tied up to an hospital bed since last Saturday, I am still there.
This happens because older WiFi protocols do not “like” underscores in the host name, most modern WiFi protocols are not as fussy, hence the warning.
Having said that I find it odd that I did not pick up my oversight, I’ll need to compare the code of the video and my GitHub. This will have to happen when I return home.
Thank you for pointing it out.
- Pascal
900th subscriber!
Yeah! Live stream for a 1000?
Great video
I learn a lot of things from your video. I instald thelas esphome add on version on my home assistant. But every time i want to compile a node the add on gives an eror. The eror is maximum resources reced.
Thanks for the help
You can try 2 things,
1. Reboot the Home Assistant machine, that worked for me last time.
2. You may be short on memory, that would require more RAM. If you have 4Gb or more this should not be a problem though.
Pascal, I have a question for you, finally I have some times to deep dive this video. I love the structure for all the devices.
1) I do have a question for you. This assumes that in the secrets, the api_encryption_key, the web_server_password, web_server_user they all are going to be the same for each sensor ? If that is true (correct me if understood this right), is not an issue to have different sensors with the same api_encryption_key, web_server_password .... etc been the same ???
2) If 1) is correct can I do the same (for all the devices) to have the gateway_address and subnet_address been the same in the secrets.yaml ?
Thanks a lot for all your videos !!!! They are awesome. Well structure and super detail. Thank you for doing all of that for your followers and subcribers.
THANKS AGAIN !!!!!!
Makes sure you don't miss the Solar Eclipse, for me it will be at 3:00PM (Michigan, USA) .... Not sure if you will get to see it where you are !!!!
Hey Miguel,
Thank you, though a tweaked the structure to allow for a few other things, unfortunately the next video will probably only be available in a couple of weeks 😟.
My body is not leaving a choice.
1. Your assumption is correct, I use a single randomized password and key for all my devices. It makes life so much easier with very little drawbacks security wise as all the devices are within my internal network.
2. Well that too, the only one I change is the IP Address, I keep a spreadsheet for that
Thank you for the support
Errors compiling foundation yaml now as things have changed in HA.
Correct, the fix is explained here th-cam.com/video/wcUDYzLFjQ0/w-d-xo.html
@@homeautomatorza Thank you!
I have manually typed this into my home assistant and it kept not working, i then copied yours and yours also isn't working. Have there maybe been updates that have made this coding stoip working? It stops at the Binary Sensor name "id: ${device_internal_name}_status" where in the fault says the name cannot have a $ , Can anyone help me out, i have been trouble shooting this for 4 hours without any luck.
I am not sure I understand, but here are 2 things you can try
1. Is device_internal_name defined?
2. Are you typing as follows:
id: ${device_internal_name}_status
Lastly, are you doing this in ESPHome or Home Assistant ?
The code that I have on GitHub is fully tested, except for the ota change there is nothing else that should break it.
Can you maybe paste the full error, so I can help?
Sure will do, am using in esphome in home assistant. Will message you in the morning, many thanks, Michael
@@homeautomatorza I have a screen shot of the error code and the actions that have run before it. is there anyway i can forward this to you at all please ?
@@homeautomatorza INFO ESPHome 2024.6.6
INFO Reading configuration /config/esphome/foundation-device.yaml...
WARNING Found '${device_internal_name}_status' (see binary_sensor->0->id) which looks like a substitution, but 'device_internal_name' was not declared
WARNING Found '${device_internal_name}_wifi_signal_sensor' (see sensor->0->id) which looks like a substitution, but 'device_internal_name' was not declared
WARNING Found '${device_internal_name}_uptime_sensor' (see sensor->1->name) which looks like a substitution, but 'device_internal_name' was not declared
WARNING Found '${device_internal_name}_uptime_human' (see sensor->1->on_raw_value->then->0->text_sensor.template.publish->id) which looks like a substitution, but 'device_internal_name' was not declared
WARNING Found 'int seconds = round(id(${device_internal_name}_uptime_sensor).raw_state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
return (
(days ? to_string(days) + "d " : "") +
(hours ? to_string(hours) + "h " : "") +
(minutes ? to_string(minutes) + "m " : "") +
to_string(seconds) + "s")
).c_str();' (see sensor->1->on_raw_value->then->0->text_sensor.template.publish->state) which looks like a substitution, but 'device_internal_name' was not declared
WARNING Found '${device_internal_name}_ip_address' (see text_sensor->0->ip_address->id) which looks like a substitution, but 'device_internal_name' was not declared
WARNING Found '${device_internal_name}_connected_ssid' (see text_sensor->0->ssid->id) which looks like a substitution, but 'device_internal_name' was not declared
WARNING Found '${device_internal_name}_mac_address' (see text_sensor->0->mac_address->id) which looks like a substitution, but 'device_internal_name' was not declared
WARNING Found '${device_internal_name}_uptime_human' (see text_sensor->2->id) which looks like a substitution, but 'device_internal_name' was not declared
WARNING Found '${device_internal_name}_status' (see binary_sensor->0->id) which looks like a substitution, but 'device_internal_name' was not declared
WARNING Found '${device_internal_name}_wifi_signal_sensor' (see sensor->0->id) which looks like a substitution, but 'device_internal_name' was not declared
WARNING Found '${device_internal_name}_uptime_sensor' (see sensor->1->name) which looks like a substitution, but 'device_internal_name' was not declared
WARNING Found '${device_internal_name}_uptime_human' (see sensor->1->on_raw_value->then->0->text_sensor.template.publish->id) which looks like a substitution, but 'device_internal_name' was not declared
WARNING Found 'int seconds = round(id(${device_internal_name}_uptime_sensor).raw_state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
return (
(days ? to_string(days) + "d " : "") +
(hours ? to_string(hours) + "h " : "") +
(minutes ? to_string(minutes) + "m " : "") +
to_string(seconds) + "s")
).c_str();' (see sensor->1->on_raw_value->then->0->text_sensor.template.publish->state) which looks like a substitution, but 'device_internal_name' was not declared
WARNING Found '${device_internal_name}_ip_address' (see text_sensor->0->ip_address->id) which looks like a substitution, but 'device_internal_name' was not declared
WARNING Found '${device_internal_name}_connected_ssid' (see text_sensor->0->ssid->id) which looks like a substitution, but 'device_internal_name' was not declared
WARNING Found '${device_internal_name}_mac_address' (see text_sensor->0->mac_address->id) which looks like a substitution, but 'device_internal_name' was not declared
WARNING Found '${device_internal_name}_uptime_human' (see text_sensor->2->id) which looks like a substitution, but 'device_internal_name' was not declared
WARNING 'esphome_foundation_device': Using the '_' (underscore) character in the hostname is discouraged as it can cause problems with some DHCP and local name services. For more information, see esphome.io/guides/faq.html#why-shouldn-t-i-use-underscores-in-my-device-name
WARNING GPIO2 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 esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
INFO Detected timezone 'Europe/London'
Failed config
binary_sensor.status: [source /config/esphome/foundation-device.yaml:111]
platform: status
name: Status
IDs must only consist of upper/lowercase characters, the underscorecharacter and numbers. The character '$' cannot be used.
id: ${device_internal_name}_status
@@homeautomatorza Hello Pascal, i have uploaded the error code for you to review if you would be so kind please ?
I see in your secret.yaml a line with APIkey for HA the question is: for all your esphome nodes you are using the same APIkey?
Is it working?
Yes I am using the same API key and it’s working.
It makes management so much easier
Just some suggestions. Get to the point quickly and leave out the extra info. 44 minutes video to watch is difficult to find the info one is looking for. Thanks for your effort.
Many things have changed since my early days, I’ve focused and shortened my videos since.
You should have a look at my Coding Practices, Tips and Tricks series (th-cam.com/play/PLJ3MNJX_MOUnMWzUNDatN3LWAN8l99v5I.html&si=lCZMVffIv4t7r3-m) which takes this tutorial content a makes it modular.
And yes I still go deep, so you understand everything which helps you troubleshoot.
Also all my tutorials have chapters, so you can find what you are looking for fast.
Thanks for the suggestion though, enjoy making with ESPHome.
High definition screens doesn’t makes sense for such videos cause the writing is almost not to read on smaller equipment like iPhone ore iPads.👎
I changed that see the newer videos