PageSourceSearch

https://esphome.netlify.app/

html esphome.netlify.app collected 2026-10-03 10:42:24 UTC 96,953 bytes, 211 lines download raw bytes

1<!DOCTYPE html><html lang="en" dir="ltr" data-theme="dark" class="astro-vdxcvpsm"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>ESPHome - Smart Home Made Simple</title><link rel="canonical" href="https://esphome.io/"/><link rel="sitemap" href="/sitemap-index.xml"/><link rel="icon" href="/favicon.ico"/>
1<script>document.addEventListener('keydown', function(e) {
2            // 1. Existing '/' shortcut to open search
3            if (e.key === '/' && !['INPUT', 'TEXTAREA', 'SELECT'].includes(document.activeElement?.tagName)) {
4              e.preventDefault();
5              document.querySelector('button[data-open-modal]')?.click();
6              return;
7            }
8
9            // 2. New 'Enter' shortcut for first search result
10            if (e.key === 'Enter' && e.target.classList.contains('pagefind-ui__search-input')) {
11              const firstResult = document.querySelector('.pagefind-ui__result-link');
12
13              if (firstResult) {
14                // Prevent the default form submission or modal close behavior
15                e.preventDefault();
16                e.stopImmediatePropagation();
17                firstResult.click();
18              }
19            }
20          });
21
22          function fallbackCopyText(text) {
23            return new Promise(function(resolve, reject) {
24              try {
25                const textarea = document.createElement('textarea');
26                textarea.value = text;
27                textarea.setAttribute('readonly', '');
28                textarea.style.position = 'fixed';
29                textarea.style.top = '-9999px';
30                textarea.style.left = '-9999px';
31                document.body.appendChild(textarea);
32                textarea.focus();
33                textarea.select();
34
35                const copied = document.execCommand('copy');
36                textarea.remove();
37
38                if (copied) {
39                  resolve();
40                } else {
41                  reject(new Error('Fallback copy failed'));
42                }
43              } catch (err) {
44                reject(err);
45              }
46            });
47          }
48
49          function copyText(text) {
50            if (navigator.clipboard && typeof navigator.clipboard.writeText === 'function') {
51              return navigator.clipboard.writeText(text).catch(function() {
52                return fallbackCopyText(text);
53              });
54            }
55
56            return fallbackCopyText(text);
57          }
58
59          document.addEventListener('click', function(e) {
60            if (!(e.target instanceof Element)) return;
61            const anchor = e.target.closest('a.sl-anchor-link');
62            if (!anchor) return;
63            if (
64              e.button !== 0 ||
65              e.metaKey ||
66              e.ctrlKey ||
67              e.shiftKey ||
68              e.altKey
69            ) {
70              return;
71            }
72            e.preventDefault();
73            const url = anchor.href;
74            copyText(url).then(function() {
75              showLinkCopiedToast(anchor);
76            }).catch(function() {
77              const targetUrl = new URL(anchor.href, window.location.href);
78              if (targetUrl.hash) {
79                window.location.hash = targetUrl.hash;
80              } else {
81                window.location.assign(anchor.href);
82              }
83            });
84          });
85
86          function showLinkCopiedToast(anchor) {
87            const existing = document.getElementById('sl-link-toast');
88            if (existing) existing.remove();
89            const rect = anchor.getBoundingClientRect();
90
91            const toast = document.createElement('div');
92            toast.id = 'sl-link-toast';
93            toast.setAttribute('role', 'status');
94            toast.setAttribute('aria-live', 'polite');
95            toast.setAttribute('aria-atomic', 'true');
96            toast.textContent = 'Link copied to clipboard';
97            toast.style.cssText = [
98              'position:fixed',
99              'top:' + (rect.top + rect.height / 2 - 14) + 'px',
100              'left:' + (rect.right + 8) + 'px',
101              'background:var(--sl-color-gray-1)',
102              'color:var(--sl-color-gray-6)',
103              'padding:0.25rem 0.75rem',
104              'border-radius:999px',
105              'font-size:0.8rem',
106              'white-space:nowrap',
107              'box-shadow:0 2px 8px rgba(0,0,0,0.2)',
108              'z-index:9999',
109              'opacity:1',
110              'transition:opacity 0.4s ease',
111              'pointer-events:none',
112            ].join(';');
113            document.body.appendChild(toast);
114
115            // If it overflows the right edge, flip it to the left of the icon
116            const toastRect = toast.getBoundingClientRect();
117            if (toastRect.right > window.innerWidth - 8) {
118              toast.style.left = (rect.left - toastRect.width - 8) + 'px';
119            }
120
121            setTimeout(function() {
122              toast.style.opacity = '0';
123              setTimeout(function() { toast.remove(); }, 400);
124            }, 2000);
125          }</script>
125<link href="https://esphome.io/blog/rss.xml" rel="alternate" title="Blog" type="application/rss+xml"/><link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"/><meta name="generator" content="Astro v7.2.0"/><meta name="generator" content="Starlight v0.41.7"/><meta property="og:title" content="ESPHome"/><meta property="og:type" content="article"/><meta property="og:url" content="https://esphome.io/"/><meta property="og:locale" content="en"/><meta property="og:description" content="Smart Home Made Simple. ESPHome turns ESP32, ESP8266, and RP2040 microcontrollers into fully-featured smart home devices."/><meta property="og:site_name" content="ESPHome - Smart Home Made Simple"/><meta name="description" content="Smart Home Made Simple. ESPHome turns ESP32, ESP8266, and RP2040 microcontrollers into fully-featured smart home devices."/><meta property="og:image" content="https://esphome.io/images/og.webp"/><meta name="twitter:image" content="https://esphome.io/images/og.webp"/><meta name="twitter:card" content="summary_large_image"/><link rel="icon" href="/favicon.ico" sizes="any"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="ESPHome"><link rel="manifest" href="/site.webmanifest">
125<script type="module">window.addEventListener(`DOMContentLoaded`,()=>{document.querySelector(`a.site-title`)?.addEventListener(`contextmenu`,e=>{e.preventDefault(),window.open(`https://media.esphome.io/logo/`,`_blank`,`noopener,noreferrer`)})});</script>
125<!-- prettier-ignore -->
125<script async src="https://plausible.openhomefoundation.org/js/pa-IT3qGllOk_UiNLNNQsPlX.js"></script>
125<!-- allowedReferrers is fetched at build time and echoed into the page here. -->
125<script>(function(){const allowedReferrers = ["01net.com","1140369499-atari-embeds.googleusercontent.com","1ms.run","360.cn","3dmart.com.hk","3dpm.ru","4pda.to","a2t.ro","abfalltermine.de","acciyo.com","adaptive-lighting.nijho.lt","adonno.com","agsi.gie.eu","aio-libs.org","air-q.com","airgradient.com","akamatis.com","akkudoktor.net","alarmy-olomouc.eu","alkly.de","all3dp.com","alvinchen.club","alza.cz","amazon.com","ameridroid.com","amplipi.discourse.group","androidauthority.com","androidpolice.com","api.daily.dev","api.home-connect.com","api.mcs3.miele.com","api.smartthings.com","apolloautomation.com","app.aevocam.com","app.parqet.com","appleid.apple.com","apps.garmin.com","apps.yunohost.org","arstechnica.com","askubuntu.com","asustor.com","atomic14.com","audiosciencereview.com","auth.tesla.com","authelia.com","automatedhome.co.uk","auweb3.isolarcloud.com","avenom.ru","awesome-ha.com","badrpc.net","bafista.ru","baidu.com","baidu.io","banglejs.com","basehim.com","bazmac.me","bbs.hassbian.com","bbs.io-tech.fi","bega.com","berrybase.de","better-thermostat.org","billboard.com.br","bindicator.net","bing.com","bitbucket.org","blog.decryption.net.au","blog.disane.dev","blog.eischmann.cz","blog.fidelramos.net","blog.frankel.ch","blog.fxpblogs.win","blog.iot7m.ru","blog.kastanis.gr","blog.matterxiaomi.com","blog.meyerrj.com","blog.michivonah.ch","blog.oppedahl.com","blog.slabnet.com","blog.tindie.com","blog.tomayac.com","blog.uaid.net.ua","blog.vyoralek.cz","blogspot.com","botland.com.pl","botland.de","braiins.com","brandlogos.org","bricozone.be","broddin.be","bsky.app","bthome.io","buildroot.org","byteoversea.com","card.camera","cb.wjz.im","cdninstagram.com","cgx13.de","chat.novaapp.ai","chat.qwen.ai","chatgpt.com","check.anomify.ai","chip.de","chuck-builds.com","chytrevypinace.cz","ci.computer","claude.ai","clausio.fr","cloud.bemfa.com","cloud.vento.build","cloudfree.shop","clubic.com","cn.d5render.com","cnblogs.com","cnet.com","cnx-software.com","cnx-software.ru","coccoc.com","codeberg.org","codechimp.org","coinforum.de","community-smarthome.com","community.asti.ga","community.evnex.com","community.hubitat.com","community.openhab.org","community.shelly.cloud","community.victronenergy.com","computerbase.de","connexion.hiloenergie.com","coolify.io","copilot.com","copilot.microsoft.com","couto.io","creator-spring.com","credexalarmsystems.eu","crowdsupply.com","dakboard.freshdesk.com","danielmartingonzalez.com","darsycertificationconsumer-wu2.azurewebsites.net","dashieapp.com","dastereo.ru","dc9vq.de","de.aliexpress.com","de.jackery.com","de.wikipedia.org","dealabs.com","deepwiki.com","degroenenerds.nl","derekseaman.com","desdeelreloj.com","dev.to","developer.chrome.com","developer.home-connect.com","developer.tuya.com","developerinsider.co","devotics.fr","devzen.ru","dfrobot.com","dietpi.com","digikey.com","digital-io.de","dinamotech.it","discord.com","discovergit.app","disq.us","diy-smart-home.ei23.de","diyenjoying.com","diyfun.de","diyless.com","diysolarforum.com","doc.embedfire.com","doc.mocreo.com","docker.com","docs.evcc.io","docs.everythingsmart.io","docs.fregata.app","docs.futureproofhomes.net","docs.gl-inet.com","docs.kilowahti.fi","docs.ncnynl.com","docs.openpublictransport.net","docs.paperd.ink","docs.powercalc.nl","docs.sunfounder.com","docs.tandoor.dev","docs.yaha-cloud.ru","docs.zephyrproject.org","documentation.grandstream.com","domadoo.fr","domasist.sk","domocraft.fr","domoticafacile.it","done.land","donetick.com","dopper.de","dou.ua","doubao.com","drive2.ru","duck.ai","duckduckgo.com","duurzamerhand.nl","ecosia.org","edubox.org","efulfillservice.sugarondemand.com","element.io","en.m.nu","en.wikipedia.org","energyforecast.de","engadget.com","esp32.co.uk","espboards.dev","esphome.io","espresense.com","espressif.com","espruino.com","everythingsmarthome.co.uk","ewelinkstore.com","facebook.be","facebook.com","facebook.de","facebook.dk","facebook.es","facebook.fr","facebook.is","facebook.it","facebook.jp","facebook.mx","facebook.nl","facebook.no","facebook.se","facebook.us","faire-ca-soi-meme.fr","fancontroller.arthofer.dev","fb.com","fb.me","fbcdn.com","fbcdn.net","fitbit.com","flasher.site","fleet-auth.prd.vn.cloud.tesla.com","flipboard.com","flow.bosch-ebike.com","flows.blueforcer.de","foro.domoticaencasa.es","forum.arduino.cc","forum.armbian.com","forum.arturhome.pl","forum.ecoflow.com","forum.ewelink.cc","forum.hardware.fr","forum.heimnetz.de","forum.iobroker.net","forum.it.mk","forum.jdtech.pl","forum.keenetic.ru","forum.magicmirror.builders","forum.mikrotik.com","forum.mypower.cz","forum.proxmox.com","forum.sailfishos.org","forum.sessy.nl","forum.wiimhome.com","forum.yunohost.org","forums.dansdeals.com","forums.lyrion.org","forums.pocketcasts.com","forums.raspberrypi.com","forums.truenas.com","fosstodon.org","foxesscommunity.com","fr.aliexpress.com","frandroid.com","frenck.dev","front-page.com","fuzznotes.com","fwd.nl","gadgets.seeed.cc","gea.com","geekxw.top","genbeta.com","getaipilot.com","gethomepage.dev","gigazine.net","git.hubp.de","gitee.com","github.blog","github.com","github.io","gitlab.com","gitlab.io","go.aftvnews.com","golem.de","google.at","google.be","google.bg","google.ca","google.ch","google.co.jp","google.co.kr","google.co.nz","google.co.uk","google.co.za","google.com","google.com.au","google.com.br","google.com.hk","google.com.mx","google.com.my","google.com.pk","google.com.sa","google.com.sg","google.com.tr","google.com.tw","google.com.ua","google.com.vn","google.cz","google.de","google.es","google.fi","google.fr","google.hu","google.io","google.it","google.nl","google.pl","google.pt","google.ro","google.se","gotailwind.com","grokipedia.com","gstatic.
125com","haade.fr","habr-com.cdn.ampproject.org","habr.com","hacf.fr","hachyderm.io","hackaday.com","hacks.mozilla.org","hackster.io","hacs.dev","hacs.xyz","hadevices.com","hads.smarti.dev","haeo.io","handbook.buildwithmatter.com","hanselman.com","hardware.info","hashop.nl","hass-agent.io","hass-cloud.auth.us-east-1.amazoncognito.com","hass.dev","hasscn.top","hatenablog-parts.com","haus-bus.de","hcker.news","hckrnews.com","healthassistantlink.com","heise.de","helgejohnsen.no","helios-ha.org","help.olarm.com","hiringcafe.com","hjemmeautomasjon.no","home-assistant-guide.com","home-assistant.cloud","home-assistant.dev","home-assistant.io","home-assistant.jp","home-master.eu","homeassistant-cz.cz","homeassistant.cloud","homeassistant.io","homeassistantbrasil.com.br","homeautocentral.com","homebrainz.de","homekitnews.com","homething.io","homey.app","hotmart.com","howtogeek.com","hwupgrade.it","hydrificwater.com","hydroqc.ca","hyotynen.iki.fi","iam.viessmann-climatesolutions.com","ias-lab.de","ibytedtos.com","ictfreak.nl","id.daikin.eu","id.whoop.com","ifa-berlin.com","ig.me","igen.fr","ikriz.nl","improv-wifi.com","indomus.it","industrialshields.
125com","inet.se","influxdata.com","infosec.exchange","inoreader.com","insiderllm.com","instagr.am","instagram.com","install.wled.me","intellicaai.space","internet.org","interop.ondilo.com","iona-ha.tinohox.de","iot.vivo.com.cn","ipstatp.com","it.makeinlab.fr","ithelp.ithome.com.tw","itmedia.co.jp","itrend24.de","itsfoss.com","jamesachambers.com","jimwillis.org","jiuyv.info","joekarlsson.com","jonashietala.se","jpk.io","jpt.sh","jupiterbroadcasting.com","kagi.com","kb.shelly.cloud","kincony.com","kitchenowl.org","kiwi-warmer.co.nz","kjell.com","knightsoft-net.de","knuspermagier.de","knx-user-forum.de","kofler.info","konnected.io","konnected.readme.io","korben.info","kotyara12.ru","l.meta.ai","lampopumput.info","languagetool.org","lappari.com","legeek.info","leios.consulting","lemmy.lundgrensjostrom.com","lemmy.ml","lemmy.world","libhunt.com","life.taikun.blog","liliputing.com","link.csdn.net","link.gitcode.com","linkedin.com","linkshop.gr","linuxiac.com","linuxmint.com","listenbrainz.org","llmvision.gitbook.io","lnkd.in","lobste.rs","loxwiki.atlassian.net","lunoo.com","luxxle.com","lwn.net","m.me","m.sogou.com","m5stack.com","macrumors.com","mactechnews.de","magicareas.io","mail.gnome.org","mail.qq.com","maison-et-domotique.com","makerworld.com","makeuseof.com","manelrodero.com","manuals.plus","masto.pt","mastodon.me.uk","mastodon.social","mastodon.top","matrix.to","matteoschizzerotto.dev","matteralpha.com","mattgerega.com","mauser.pt","mediarath.de","medievalapple.net","medium.com","meetco.daily.co","meinesmartewelt.de","memory.gmbot.name.vn","mergeo.dev","metabrainz.org","metager.de","michaelsleen.com","mikesolin.com","mistyreverie.org","mobiflip.de","mobile-ma.app","moi.ouraring.com","mojeek.com","mostlychris.com","mqtt.cn","mrdarrengriffin.com","ms0701.tistory.com","msn.com","mu.zpete.de","mushkatyush.com","music-assistant.com","music-assistant.io","musical.ly","mwunderling.com","mypal.wang","mysku.club","nabucasa.com","nachbelichtet.com","nathan.gs","nathanorick.com","nativesprings.com","naver.com","navid.nl","navimow-h5-fra.willand.com","ncot.uk","neilturner.me.uk","netlify.app","nettop.gr","newepisody.com","newinlinux.com","news.hada.io","news.ycombinator.com","newsblur.com","ngocjohn.is-a.dev","norbert.tech","note.com","notebookcheck.net","notenoughtech.com","notify.events","npmjs.com","nspanel.domodreams.it","ntp.msn.cn","nuki.io","numerama.com","oauth.hijuconn.com","oceanhero.today","ogo.live","ohf.to","okosotthon.bolt.hu","olausson.de","olegtarasov.me","omgubuntu.co.uk","openai.com","opendisplay.org","openelab.io","openhasp.com","openhasp.haswitchplate.com","openhomefoundation.org","openthread.io","opera.com","oshwhub.com","osnews.com","ottelo.jimdofree.com","ozsmartthings.com.au","pages.dev","paulusschoutsen.nl","pdx.su","perfectmediaserver.com","perplexity.ai","phanpy.social","phoronix.com","pi-shop.ch","pidiylab.com","pikabu.ru","pinboard.in","pine64.org","pinimg.com","pinterest.at","pinterest.ca","pinterest.co.uk","pinterest.com","pinterest.com.au","pinterest.com.mx","pinterest.de","pinterest.dk","pinterest.es","pinterest.fr","pinterest.ie","pinterest.it","pinterest.jp","pinterest.ph","pinterest.se","pixelstech.net","pluginsolarexplained.co.uk","portal.alarmtrade.ru","powerbaas.nl","powerforum.co.za","printables.com","privacywall.org","prodindego.b2clogin.com","programarfacil.com","protopage.com","psenyukov.ru","psmart.pl","publish.obsidian.md","pushover.net","pypi.org","qiita.com","quark.cn","qwant.com","racemat.de","radio-browser.info","raspberrypi.dk","rbaron.net","read.readwise.io","readthedocs.io","reddit.com","reedah.com","remote-logger.rhizomatics.org.uk","repo.webosbrew.org","rivianforums.com","robbshop.nl","robert.stadsbygd.net","roboter-forum.com","robpickering.com","root.cz","rudd-o.com","runtimeterror.dev","ruuvi.com","safe.menlosecurity.com","search.avastbrowser.com","search.brave.com","search.kafu.ovh","search.nixos.org","search.nortonsafesearch.com","search.yahoo.com","seeedstudio.com","seegel-systeme.de","selectra.info","selfh.st","selorahomes.com","sendspin-audio.com","sequr.be","sergiocarracedo.es","servercan.net","serverfault.com","servethehome.com","seznam.cz","sheekgeek.org","sheets.works","
125shellagent.io","shop.everythingsmart.io","shop.haus-automatisierung.com","shop.pimoroni.com","signalk.org","signalkraft.com","simon42.com","simplehomelab.com","simplepush.io","sl-alex.net","slack.com","slashdot.org","slimhuisje.nl","smart-home-insights.net","smartdomo.de","smarterhome.sk","smarterkram.de","smarterpapa.de","smartevchargers.co.nz","smartguys.com.au","smarthome-assistant.info","smarthome.com.au","smarthomeassistent.de","smarthomegids.com","smarthomepursuits.com","smarthomescene.com","smarthomesecrets.ca","smarthomesolver.com","smarthomeyourself.de","smartmania.cz","smartnetandhubs.com","smlight.tech","snbforums.com","so.com","social.slat.org","solar-assistant.io","sonocotta.com","sonoff.tech","sourceforge.net","spacen.io","speaktothegeek.co.uk","spfile.heimanhome.com","splitbrain.org","srwiez.com","sso.bluettipower.com","stackexchange.com","stackoverflow.com","stadt-bremerhaven.de","startpage.com","static.xtremeownage.com","steamcommunity.com","steeman.be","student-techlife.com","style.oversubstance.net","substack.com","sunenergyxt.com","superuser.com","support.bbdl.co.uk","support.lightwaverf.com","support.powerfox.energy","support.weheat.nl","svrforum.com","sweclockers.com","swiss-domotique.ch","swisscows.com","symbaloo.com","sysadmin.in.th","t.co","t.me","t3n.de","taiwansensor.com.tw","teams.public.onecdn.static.microsoft","techboys.de","techcrunch.com","techenclair.fr","techfeed.io","technikblock.de","techurls.com","tecnoyfoto.com","telegram.me","telegram.org","terncy.com.tw","teslafacts.nl","teslemetry.com","thecandidstartup.org","themalibucrew.com","theorangeone.net","thepihut.com","theregister.com","thestockpot.net","theverge.com","threads.net","tightloop.io","tiktok.com","tiktokcdn.com","tiktokv.com","tomshardware.com","tomshw.it","tomtut.de","tool.screek.io","toot.community","topgit.dev","toppodcast.com","totaldebug.uk","trello.com","trick.vanstaveren.us","trmnl.com","troyhernandez.com","tutorials-raspberrypi.de","tweakers.net","tweetdeck.com","twingate.com","twitter.com","typingmind.com","uix.lf.technology","ultravehiclecard.com","unfoldedcircle.com","uniuit.com","university.revotion.app","url-opener.com","us.shelly.com","uscardforum.com","ut.buglloc.com","varac.net","vercel.app","verdrahtet.info","verkkokauppa.nurkantakaa.fi","versatile-thermostat.org","web.archive.org","web.max.ru","webhallen.com","webshed.org","westhaver.com","wiert.me","wifishop.ro","wiki.fabianhorst.com","wiki.freshtomato.org","wiki.futo.org","wimme.net","wired.com","wordpress.com","wulu.zone","www-hacs-xyz.translate.goog","www-home--assistant-io.translate.goog","x.com","xataka.com","xda-developers.com","xfinderr.org","xn--80abzsjfcff6fi.xn--p1ai","ya.ru","yahoo.co.jp","yandex.by","yandex.com","yandex.kz","yandex.ru","yandex.uz","yandex.xyz","yetanothersmarthome.com","youtu.be","youtube-nocookie.com","youtube.com","yuanbao.tencent.com","yuque.com","zdnet.com","zenodo.org","zerlo.net","zigbee.blakadder.com","zigbee2mqtt.io","zimaspace.com","zuidwijk.com"];
126
127  /* eslint-disable */
128  // Visitors arriving from their own Home Assistant or ESPHome instance send
129  // their private URL as the referrer. Anything not on the allowlist is
130  // replaced before Plausible ever sees it, so those URLs are never recorded.
131  ((window.plausible =
132    window.plausible ||
133    function () {
134      (plausible.q = plausible.q || []).push(arguments);
135    }),
136    (plausible.init =
137      plausible.init ||
138      function (i) {
139        plausible.o = i || {};
140      }));
141  plausible.init({
142    transformRequest: function (payload) {
143      var ref = payload.r;
144      if (!ref) return payload;
145
146      var host = "";
147      try {
148        host = new URL(ref).hostname.replace(/\.$/, "");
149      } catch (e) {
150        // Unparseable referrer: falls through and gets replaced.
151      }
152
153      for (var i = 0; i < allowedReferrers.length; i++) {
154        var d = allowedReferrers[i];
155        if (host === d || (host.length > d.length && host.slice(-(d.length + 1)) === "." + d)) {
156          return payload;
157        }
158      }
159
160      // One aggregate bucket in Plausible, so we can see how much we filter
161      // without learning anything about individual visitors. .invali
161d is
162      // reserved by RFC 2606 and can never collide with a real domain.
163      payload.r = "https://unlisted.invalid/";
164      return payload;
165    },
166  });
167})();</script>
167<script>
168	window.StarlightThemeProvider = (() => {
169		const storedTheme =
170			typeof localStorage !== 'undefined' && localStorage.getItem('starlight-theme');
171		const theme =
172			storedTheme ||
173			(window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark');
174		document.documentElement.dataset.theme = theme === 'light' ? 'light' : 'dark';
175		return {
176			updatePickers(theme = storedTheme || 'auto') {
177				document.querySelectorAll('starlight-theme-select').forEach((picker) => {
178					const select = picker.querySelector('select');
179					if (select) select.value = theme;
180					/** @type {HTMLTemplateElement | null} */
181					const tmpl = document.querySelector(`#theme-icons`);
182					const newIcon = tmpl && tmpl.content.querySelector('.' + theme);
183					if (newIcon) {
184						const oldIcon = picker.querySelector('svg.label-icon');
185						if (oldIcon) {
186							oldIcon.replaceChildren(...newIcon.cloneNode(true).childNodes);
187						}
188					}
189				});
190			},
191		};
192	})();
193</script>
193<template id="theme-icons"><svg aria-hidden="true" class="light astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M5 12a1 1 0 0 0-1-1H3a1 1 0 0 0 0 2h1a1 1 0 0 0 1-1Zm.64 5-.71.71a1 1 0 0 0 0 1.41 1 1 0 0 0 1.41 0l.71-.71A1 1 0 0 0 5.64 17ZM12 5a1 1 0 0 0 1-1V3a1 1 0 0 0-2 0v1a1 1 0 0 0 1 1Zm5.66 2.34a1 1 0 0 0 .7-.29l.71-.71a1 1 0 1 0-1.41-1.41l-.66.71a1 1 0 0 0 0 1.41 1 1 0 0 0 .66.29Zm-12-.29a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.71-.71a1.004 1.004 0 1 0-1.43 1.41l.73.71ZM21 11h-1a1 1 0 0 0 0 2h1a1 1 0 0 0 0-2Zm-2.64 6A1 1 0 0 0 17 18.36l.71.71a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.76-.66ZM12 6.5a5.5 5.5 0 1 0 5.5 5.5A5.51 5.51 0 0 0 12 6.5Zm0 9a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7Zm0 3.5a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-1a1 1 0 0 0-1-1Z"/></svg><svg aria-hidden="true" class="dark astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.64 13a1 1 0 0 0-1.05-.14 8.049 8.049 0 0 1-3.37.73 8.15 8.15 0 0 1-8.14-8.1 8.59 8.59 0 0 1 .25-2A1 1 0 0 0 8 2.36a10.14 10.14 0 1 0 14 11.69 1 1 0 0 0-.36-1.05Zm-9.5 6.69A8.14 8.14 0 0 1 7.08 5.22v.27a10.15 10.15 0 0 0 10.14 10.14 9.784 9.784 0 0 0 2.1-.22 8.11 8.11 0 0 1-7.18 4.32v-.04Z"/></svg><svg aria-hidden="true" class="auto astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg></template><link rel="stylesheet" href="/_astro/print.ehPL0gv-.css" media="print"><link rel="stylesheet" href="/_astro/middleware.-CLHeK_B.css"><link rel="stylesheet" href="/_astro/index.QA-LD9BD.css"><style>.gallery-item:where(.astro-yfxqw5ix).gallery-item-media{border-radius:12px;min-width:0;min-height:0;position:relative;overflow:hidden}.gallery-item:where(.astro-yfxqw5ix).gallery-item-media img,.gallery-item:where(.astro-yfxqw5ix).gallery-item-media picture,.gallery-item:where(.astro-yfxqw5ix).gallery-item-media svg{border-radius:inherit;width:100%;height:auto;max-height:100%;display:block}.gallery-item:where(.astro-yfxqw5ix).gallery-item-media video{border-radius:inherit;object-fit:cover;z-index:2;width:100%;height:100%;display:block;position:absolute;inset:0}@media (width>=768px){.gallery-item:where(.astro-yfxqw5ix).gallery-item-media{grid-row:span var(--gallery-item-row-span,1);grid-column:span var(--gallery-item-col-span,1)}.gallery-item:where(.astro-yfxqw5ix).gallery-item-media:not(.gallery-item--spans-rows) img,.gallery-item:where(.astro-yfxqw5ix).gallery-item-media:not(.gallery-item--spans-rows) picture,.gallery-item:where(.astro-yfxqw5ix).gallery-item-media:not(.gallery-item--spans-rows) svg{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}}
194@layer astro.images{:where([data-astro-image]){height:auto}:where([data-astro-image=full-width]){width:100%}:where([data-astro-image=constrained]){max-width:100%}[data-astro-image-fit=fill]{object-fit:fill}[data-astro-image-fit=contain]{object-fit:contain}[data-astro-image-fit=cover]{object-fit:cover}[data-astro-image-fit=scale-down]{object-fit:scale-down}[data-astro-image-pos=top]{object-position:top}[data-astro-image-pos=bottom]{object-position:bottom}[data-astro-image-pos=left]{object-position:left}[data-astro-image-pos=right]{object-position:right}[data-astro-image-pos=center]{object-position:center}[data-astro-image-pos=top-bottom]{object-position:top bottom}[data-astro-image-pos=top-left]{object-position:top left}[data-astro-image-pos=top-right]{object-position:top right}[data-astro-image-pos=top-center]{object-position:top center}[data-astro-image-pos=bottom-top]{object-position:bottom top}[data-astro-image-pos=bottom-left]{object-position:bottom left}[data-astro-image-pos=bottom-right]{object-position:bottom right}[data-astro-image-pos=bottom-center]{object-position:bottom center}[data-astro-image-pos=left-top]{object-position:left top}[data-astro-image-pos=left-bottom]{object-position:left bottom}[data-astro-image-pos=left-right]{object-position:left right}[data-astro-image-pos=left-center]{object-position:left center}[data-astro-image-pos=right-top]{object-position:right top}[data-astro-image-pos=right-bottom]{object-position:right bottom}[data-astro-image-pos=right-left]{object-position:right left}[data-astro-image-pos=right-center]{object-position:right center}[data-astro-image-pos=center-top]{object-position:center top}[data-astro-image-pos=center-bottom]{object-position:center bottom}[data-astro-image-pos=center-left]{object-position:center left}[data-astro-image-pos=center-right]{object-position:center right}}
195@layer starlight.components{svg:where(.astro-n5k4ipy7){color:var(--sl-icon-color);font-size:var(--sl-icon-size,1em);width:1em;height:1em}.sl-link-button:where(.astro-hlbqph7b){font-size:var(--sl-text-sm);outline-offset:.25rem;border:1px solid #0000;border-radius:999rem;align-items:center;gap:.5em;padding:.4375rem 1.125rem;line-height:1.1875;text-decoration:none;display:inline-flex}.sl-link-button:where(.astro-hlbqph7b).primary{background:var(--sl-color-text-accent);border-color:var(--sl-color-text-accent);color:var(--sl-color-black)}.sl-link-button:where(.astro-hlbqph7b).primary:hover{color:var(--sl-color-black)}.sl-link-button:where(.astro-hlbqph7b).secondary{border-color:inherit;color:var(--sl-color-white)}.sl-link-button:where(.astro-hlbqph7b).minimal{color:var(--sl-color-white);padding-inline:0}.sl-link-button:where(.astro-hlbqph7b) svg{flex-shrink:0}@media (width>=50rem){.sl-link-button:where(.astro-hlbqph7b){font-size:var(--sl-text-base);padding:.9375rem 1.25rem}}.sl-markdown-content .sl-link-button:where(.astro-hlbqph7b){margin-inline-end:1rem}.sl-markdown-content .sl-link-button:where(.astro-hlbqph7b):not(:where(p *)){margin-block:1rem}}
196@layer starlight.components{starlight-tabs:where(.astro-hbt4ddzs){display:block}.tablist-wrapper:where(.astro-hbt4ddzs){overflow-x:auto}:where(.astro-hbt4ddzs)[role=tablist]{border-bottom:2px solid var(--sl-color-gray-5);padding:0;list-style:none;display:flex}.tab:where(.astro-hbt4ddzs){display:flex}.tab:where(.astro-hbt4ddzs)>:where(.astro-hbt4ddzs)[role=tab]{--sl-tab-color-border:var(--sl-color-gray-5);line-height:var(--sl-line-height-headings);box-shadow:0 2px 0 var(--sl-tab-color-border);color:var(--sl-color-gray-3);outline-offset:var(--sl-outline-offset-inside);overflow-wrap:initial;align-items:center;gap:.5rem;padding:.275rem 1.25rem;text-decoration:none;display:flex}.tab:where(.astro-hbt4ddzs) :where(.astro-hbt4ddzs)[role=tab][aria-selected=true]{--sl-tab-color-border:var(--sl-color-text-accent);color:var(--sl-color-white);font-weight:600}.tablist-wrapper:where(.astro-hbt4ddzs)~[role=tabpanel]{margin-top:1rem}}.install-selector__sub:where(.astro-p7yuosd2){color:var(--sl-color-gray-3);margin-block:0 1rem}.install-selector__row:where(.astro-p7yuosd2){flex-wrap:wrap;align-items:center;gap:.75rem;margin-block:.5rem 1.25rem;display:flex}.install-selector__segmented:where(.astro-p7yuosd2){background:var(--sl-color-gray-6);border:1px solid var(--sl-color-gray-5);border-radius:6px;flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.install-selector__segmented:where(.astro-p7yuosd2)[hidden]{display:none}.install-selector__segmented:where(.astro-p7yuosd2) button:where(.astro-p7yuosd2){appearance:none;font:inherit;color:var(--sl-color-gray-3);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:.35rem .75rem;font-size:.85rem;transition:color .15s,background-color .15s}.install-selector__segmented:where(.astro-p7yuosd2) button:where(.astro-p7yuosd2):hover{color:var(--sl-color-white)}.install-selector__segmented:where(.astro-p7yuosd2) button:where(.astro-p7yuosd2)[aria-pressed=true]{background:var(--sl-color-bg);color:var(--sl-color-white);box-shadow:0 1px 2px #00000014}.install-selector__steps:where(.astro-p7yuosd2){margin-block:0 1rem;padding-left:1.4em}.install-selector__steps:where(.astro-p7yuosd2) li:where(.astro-p7yuosd2){margin-bottom:.25rem}.install-selector__hint:where(.astro-p7yuosd2){color:var(--sl-color-gray-3);margin-block:.75rem 0;font-size:.9em}.install-selector__warning:where(.astro-p7yuosd2){background:var(--sl-color-orange-low);border-left:3px solid var(--sl-color-orange);border-radius:0 4px 4px 0;margin-block:0 1.25rem;padding:.6rem .8rem;font-size:.9em}.install-selector__my:where(.astro-p7yuosd2){line-height:0;display:inline-block}.install-selector__my:where(.astro-p7yuosd2) img:where(.astro-p7yuosd2){width:auto;height:36px;display:block}.install-selector:where(.astro-p7yuosd2) h3:where(.astro-p7yuosd2){margin-block:1.25rem .5rem;font-size:1rem;font-weight:600}.install-selector:where(.astro-p7yuosd2) .expressive-code{margin-block:.5rem 1rem}
197</style>
197<script type="module" src="/_astro/page.LAbJoB63.js"></script>
197</head><body class="astro-vdxcvpsm"><a class="sl-skip-link astro-vxeigawq" href="#_top">Skip to content</a><div class="page sl-flex astro-gqpr5s5a"><header class="header astro-gqpr5s5a"><div class="header__inner astro-nen7h5rs"><div class="header__logo astro-nen7h5rs"><a href="/" class="site-title sl-flex astro-clw6ags5"><img class="light:sl-hidden print:hidden astro-clw6ags5" alt src="/_astro/logo-light.zkkuIa5r.svg" width="1224" height="240"><img class="dark:sl-hidden print:block astro-clw6ags5" alt src="/_astro/logo-dark.DAjdYWzy.svg" width="1224" height="240"><span class="sr-only astro-clw6ags5" translate="no">ESPHome - Smart Home Made Simple</span></a><a href="/blog/2026/09/16/esphome-2026-9/" class="version-badge astro-hen6hmfb" title="ESPHome 2026.9.1" translate="no">2026.9.1</a></div><nav class="header__nav astro-nen7h5rs" aria-label="Site navigation"><a href="/components/" class="header__nav-link astro-nen7h5rs">Components</a><a href="/starter-kit/" class="header__nav-link astro-nen7h5rs">ESPHome Starter Kit</a><a href="/blog/" class="header__nav-link astro-nen7h5rs">Blog</a></nav><div class="header__search astro-nen7h5rs"><site-search class="astro-nen7h5rs astro-r5ar4xm7" data-translations="{&quot;placeholder&quot;:&quot;Search&quot;}"><button data-open-modal disabled aria-label="Search" aria-keyshortcuts="Control+K" class="astro-r5ar4xm7"><svg aria-hidden="true" class="astro-r5ar4xm7 astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.71 20.29 18 16.61A9 9 0 1 0 16.61 18l3.68 3.68a.999.999 0 0 0 1.42 0 1 1 0 0 0 0-1.39ZM11 18a7 7 0 1 1 0-14 7 7 0 0 1 0 14Z"/></svg><span class="sl-hidden md:sl-block astro-r5ar4xm7" aria-hidden="true">Search</span><kbd class="sl-hidden md:sl-flex astro-r5ar4xm7" style="display: none;"><kbd class="astro-r5ar4xm7">Ctrl</kbd><kbd class="astro-r5ar4xm7">K</kbd></kbd></button><dialog style="padding:0" aria-label="Search" class="astro-r5ar4xm7"><div class="dialog-frame sl-flex astro-r5ar4xm7"><button data-close-modal class="sl-flex md:sl-hidden astro-r5ar4xm7">Cancel</button><div class="search-container astro-r5ar4xm7"><div id="starlight__search" class="astro-r5ar4xm7"></div></div></div></dialog></site-search>
197<script>
198	(() => {
199		const openBtn = document.querySelector('button[data-open-modal]');
200		const shortcut = openBtn?.querySelector('kbd');
201		if (!openBtn || !(shortcut instanceof HTMLElement)) return;
202		const platformKey = shortcut.querySelector('kbd');
203		if (platformKey && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)) {
204			platformKey.textContent = '⌘';
205			openBtn.setAttribute('aria-keyshortcuts', 'Meta+K');
206		}
207		shortcut.style.display = '';
208	})();
209</script>
209<script type="module" src="/_astro/Search.astro_astro_type_script_index_0_lang.BhbZRdaS.js"></script>
209</div><div class="header__theme astro-nen7h5rs"><starlight-theme-select><label style="--sl-select-width: 6.25em" class="astro-r2p65idu"><span class="sr-only astro-r2p65idu">Select theme</span><svg aria-hidden="true" class="icon label-icon astro-r2p65idu astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg><select autocomplete="off" class="astro-r2p65idu"><option value="dark" class="astro-r2p65idu">Dark</option><option value="light" class="astro-r2p65idu">Light</option><option value="auto" selected class="astro-r2p65idu">Auto</option></select><svg aria-hidden="true" class="icon caret astro-r2p65idu astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg></label></starlight-theme-select>
209<script>
210	StarlightThemeProvider.updatePickers();
211</script>
211<script type="module">var e=`starlight-theme`,t=e=>e===`auto`||e===`dark`||e===`light`?e:`auto`,n=()=>t(typeof localStorage<`u`&&localStorage.getItem(e));function r(t){typeof localStorage<`u`&&localStorage.setItem(e,t===`light`||t===`dark`?t:``)}var i=()=>matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`;function a(e){StarlightThemeProvider.updatePickers(e),document.documentElement.dataset.theme=e===`auto`?i():e,r(e)}matchMedia(`(prefers-color-scheme: light)`).addEventListener(`change`,()=>{n()===`auto`&&a(`auto`)});var o=class extends HTMLElement{constructor(){super(),a(n()),this.querySelector(`select`)?.addEventListener(`change`,e=>{e.currentTarget instanceof HTMLSelectElement&&a(t(e.currentTarget.value))})}};customElements.define(`starlight-theme-select`,o);</script>
211</div><a class="sl-link-button not-content primary header__cta astro-nen7h5rs astro-hlbqph7b" href="/install/getting-started/">Get started</a><button type="button" class="header__toggle astro-nen7h5rs" aria-expanded="false" aria-controls="header__dropdown" aria-label="Toggle navigation menu"><span class="header__toggle-bar astro-nen7h5rs"></span></button><div class="header__overlay astro-nen7h5rs" data-header-overlay></div><div id="header__dropdown" class="header__dropdown astro-nen7h5rs"><nav class="header__dropdown-nav astro-nen7h5rs" aria-label="Site navigation"><a href="/components/" class="header__dropdown-link astro-nen7h5rs">Components</a><a href="/starter-kit/" class="header__dropdown-link astro-nen7h5rs">ESPHome Starter Kit</a><a href="/blog/" class="header__dropdown-link astro-nen7h5rs">Blog</a></nav><a href="/install/getting-started/" class="header__dropdown-cta astro-nen7h5rs">Get started</a></div></div>
211<script type="module">var e=document.querySelector(`.header__toggle`),t=document.querySelector(`[data-header-overlay]`),n=document.getElementById(`header__dropdown`),r=document.querySelector(`.main-frame`);if(e&&t&&n){let t=t=>{e.setAttribute(`aria-expanded`,String(t)),document.body.classList.toggle(`header-nav-open`,t),r?.toggleAttribute(`inert`,t),t&&n.querySelector(`a`)?.focus()};e.addEventListener(`click`,()=>{let n=e.getAttribute(`aria-expanded`)!==`true`;t(n),n||e.focus()}),n.querySelectorAll(`a`).forEach(e=>{e.addEventListener(`click`,()=>t(!1))}),document.addEventListener(`click`,r=>{if(e.getAttribute(`aria-expanded`)!==`true`)return;let i=r.target;e.contains(i)||n.contains(i)||t(!1)}),document.addEventListener(`keydown`,n=>{n.key===`Escape`&&e.getAttribute(`aria-expanded`)===`true`&&(t(!1),e.focus())})}</script>
211</header><div class="main-frame astro-gqpr5s5a">
211<script type="module">var e=document.getElementById(`starlight__sidebar`),t=e?.querySelector(`sl-sidebar-state-persist`),n=`sl-sidebar-state`,r=()=>{let r=[],i=t?.dataset.hash||``;try{let e=sessionStorage.getItem(n),t=JSON.parse(e||`{}`);Array.isArray(t.open)&&t.hash===i&&(r=t.open)}catch{}return{hash:i,open:r,scroll:e?.scrollTop||0}},i=e=>{try{sessionStorage.setItem(n,JSON.stringify(e))}catch{}},a=()=>i(r()),o=(e,t)=>{let n=r();n.open[t]=e,i(n)};t?.addEventListener(`click`,e=>{if(!(e.target instanceof Element))return;let t=e.target.closest(`summary`)?.closest(`details`);if(!t)return;let n=t.querySelector(`sl-sidebar-restore`),r=parseInt(n?.dataset.index||``);isNaN(r)||o(!t.open,r)}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&a()});</script>
211<div class="lg:sl-flex astro-abfeecmu"><div class="main-pane astro-abfeecmu"><main data-pagefind-body class="astro-vdxcvpsm" lang="en" dir="ltr"><div class="content-panel astro-oil7k7jf"><div class="sl-container astro-oil7k7jf"><div class="no-page-title"></div></div></div><div class="content-panel astro-oil7k7jf"><div class="sl-container astro-oil7k7jf"><div class="sl-markdown-content"><section class="hero astro-jwc6ryqg"><div class="announcement-container astro-jwc6ryqg"><div class="announcement-banner card card-bgc astro-jwc6ryqg"><p class="astro-jwc6ryqg">Introducing the ESPHome Starter Kit! The easiest path to building your own smart home devices – no soldering, breadboarding, or coding required.</p><a class="sl-link-button not-content primary card__text-link astro-jwc6ryqg astro-hlbqph7b" href="/starter-kit/"><svg aria-hidden="true" class="astro-hlbqph7b astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>Get your Starter Kit today</a><a class="sl-link-button not-content primary card__text-link astro-jwc6ryqg astro-hlbqph7b" href="/blog/2026/08/12/the-esphome-starter-kit-is-here/"><svg aria-hidden="true" class="astro-hlbqph7b astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>Read blog post</a></div></div><div class="container astro-jwc6ryqg"><div class="content astro-jwc6ryqg"><h1 class="astro-jwc6ryqg">Custom smart home devices, built by you</h1><p class="astro-jwc6ryqg">When you can’t find the smart home device you need in a store, build it yourself! Turn inexpensive components into sensors, switches, displays, and more – just tell ESPHome what to do and it handles the rest, with no need to code unless you want to.</p><a class="sl-link-button not-content primary astro-jwc6ryqg astro-hlbqph7b" href="#begin-here">Begin here</a></div><div class="links astro-jwc6ryqg"><div class="card card-bgc astro-jwc6ryqg"><p class="card__title h2 astro-jwc6ryqg">Already using ESPHome?</p><a class="sl-link-button not-content primary card__text-link astro-jwc6ryqg astro-hlbqph7b" href="/components/"><svg aria-hidden="true" class="astro-hlbqph7b astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>Browse components</a><a class="sl-link-button not-content primary card__text-link astro-jwc6ryqg astro-hlbqph7b" href="https://devices.esphome.io/"><svg aria-hidden="true" class="astro-hlbqph7b astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>Device list</a></div><a class="livestream-card hero-livestream astro-jwc6ryqg astro-zjao5v42" data-state="loading" data-slug="esphome" href="#" target="_blank" rel="noopener noreferrer" aria-label="ESPHome livestream"><div class="livestream-card__media astro-zjao5v42"><img class="livestream-card__thumb astro-zjao5v42" alt="" loading="lazy" decoding="async"><iframe class="livestream-card__player astro-zjao5v42" title="ESPHome livestream" allow="autoplay; encrypted-media; picture-in-picture" referrerpolicy="strict-origin-when-cross-origin" tabindex="-1" aria-hidden="true" loading="lazy"></iframe></div><div class="livestream-card__overlay astro-zjao5v42"><span class="livestream-card__status astro-zjao5v42"><span class="livestream-card__dot astro-zjao5v42" aria-hidden="true"></span><span class="livestream-card__eyebrow astro-zjao5v42"></span></span><span class="livestream-card__foot astro-zjao5v42"><span class="livestream-card__title astro-zjao5v42"></span><span class="livestream-card__meta astro-zjao5v42"></span></span></div></a>
211<script type="module">var e={live:`Live now`,upcoming:`Upcoming livestream`,past:`Our latest stream`};function t(e,t=Date.now()){if(!e)return`none`;switch(e.status){case`live`:return`live`;case`upcoming`:{if(!e.startTime)return`upcoming`;let n=Date.parse(e.startTime);return Number.isNaN(n)||n-t<=1728e5?`upcoming`:`none`}case`past`:{let n=Date.parse(e.updatedAt);return Number.isNaN(n)?`none`:t-n<=432e5?`past`:`none`}default:return`none`}}function n(e){if(!e)return null;try{let t=new URL(e);if(t.hostname===`youtu.be`)return t.pathname.slice(1)||null;let n=t.searchParams.get(`v`);if(n)return n;let r=t.pathname.split(`/`).filter(Boolean),i=r.findIndex(e=>e===`embed`||e===`live`||e===`shorts`);return i>=0&&r[i+1]?r[i+1]:null}catch{return null}}function r(e){return`https://www.youtube-nocookie.com/embed/${e}?${new URLSearchParams({autoplay:`1`,mute:`1`,controls:`0`,modestbranding:`1`,playsinline:`1`,rel:`0`,loop:`1`,playlist:e,iv_load_policy:`3`,disablekb:`1`,fs:`0`}).toString()}`}function i(e){return`https://i.ytimg.com/vi/${e}/maxresdefault.jpg`}function a(e,t){e.src=i(t),e.onerror=()=>{e.onerror=null,e.src=`https://i.ytimg.com/vi/${t}/hqdefault.jpg`}}var o=!1;function s(){if(o||typeof document>`u`)return;o=!0;let e=[`pointerdown`,`keydown`,`touchstart`,`wheel`,`scroll`],t=()=>{e.forEach(e=>window.removeEventListener(e,t)),document.querySelectorAll(`.livestream-card[data-player="pending"]`).forEach(e=>{let t=e.querySelector(`.livestream-card__player`),n=e.dataset.videoId;t&&n&&(t.src=r(n)),e.dataset.player=`ready`})};e.forEach(e=>window.addEventListener(e,t,{passive:!0}))}function c(e,t=Date.now()){let n=Math.floor((e-t)/1e3);if(n<=0)return`Live soon`;let r=Math.floor(n/86400);n-=r*86400;let i=Math.floor(n/3600);n-=i*3600;let a=Math.floor(n/60);return n-=a*60,r>0?`Live in ${r}d ${i}h`:i>=12?`Live in ${i}h`:i>0?`Live in ${i}h ${a}m`:a>0?`Live in ${a}m ${n}s`:`Live in ${n}s`}function l(e){if(!e)return``;let t=Date.parse(e);return Number.isNaN(t)?``:new Date(t).toLocaleString(void 0,{weekday:`short`,hour:`numeric`,minute:`2-digit`})}var u=new WeakMap;function d(e){let t=u.get(e);t!==void 0&&(clearInterval(t),u.delete(e))}function f(e,t,n){d(e);let r=Date.parse(n);if(Number.isNaN(r)){t.textContent=``;return}let i=()=>{t.textContent=c(r),r-Date.now()<=0&&d(e)};i(),u.set(e,setInterval(i,1e3))}function p(r,i,o=Date.now()){let c=t(i,o);r.dataset.state=c;let u=r.querySelector(`.livestream-card__player`),p=r.querySelector(`.livestream-card__thumb`),m=r.querySelector(`.livestream-card__eyebrow`),h=r.querySelector(`.livestream-card__title`),g=r.querySelector(`.livestream-card__meta`);if(u?.removeAttribute(`src`),c===`none`||c===`loading`||!i)return d(r),delete r.dataset.player,delete r.dataset.videoId,r instanceof HTMLAnchorElement&&r.removeAttribute(`href`),c;r instanceof HTMLAnchorElement&&i.url&&(r.href=i.url),d(r),h&&(h.textContent=i.title??i.channelName);let _=c===`upcoming`&&!!i.startTime;_&&m?f(r,m,i.startTime):m&&(m.textContent=e[c]),g&&(g.textContent=_?l(i.startTime):``);let v=n(i.url);return v&&p?a(p,v):p&&p.removeAttribute(`src`),c===`live`&&v&&u?(r.dataset.videoId=v,r.dataset.player=`pending`,s()):(delete r.dataset.player,delete r.dataset.videoId),c}async function m(e,t){try{let n=await fetch(`/livestream-api/${encodeURIComponent(e)}`,{signal:t});return n.ok?await n.json():null}catch{return null}}document.querySelectorAll(`.livestream-card[data-slug]`).forEach(async e=>{e.addEventListener(`click`,()=>{typeof window.plausible==`function`&&window.plausible(`Livestream Card: Click`)});let t=e.dataset.slug;t&&p(e,await m(t))});</script>
211</div></div><div class="marquee astro-jwc6ryqg"><div class="marquee__track astro-jwc6ryqg"><div class="item astro-jwc6ryqg"><span class="astro-jwc6ryqg">No complex coding</span> Simple configuration files do the work for you</div><div class="item astro-jwc6ryqg"><span class="astro-jwc6ryqg">Wireless updates</span> Upgrade devices remotely over WiFi – no cables needed</div><div class="item astro-jwc6ryqg"><span class="astro-jwc6ryqg">Modular design</span> Choose from hundreds of components to suit your project</div><div class="item astro-jwc6ryqg"><span class="astro-jwc6ryqg">Local control</span> Run your devices on your own network, without the cloud</div></div></div></section><section id="how-it-works" class="how-esphome-works astro-4tynrgh6"><div class="container astro-4tynrgh6"><div class="columns astro-4tynrgh6"><div class="content content-container astro-4tynrgh6"><h2 class="astro-4tynrgh6">How ESPHome works</h2><p class="astro-4tynrgh6">Building your own smart home device from scratch can feel daunting, particularly if you’re not familiar with coding. Not with ESPHome. Its intuitive <a href="https://esphome.io/blog/2026/07/02/unbox-your-creativity-with-the-esphome-device-builder/" class="astro-4tynrgh6">Device Builder</a> replaces code with simple visual choices for a hassle-free setup that brings you straight into building without touching a command line. And for experienced users who prefer writing code manually, YAML is always there if you need it. Every device works out of the box with Home Assistant, too – locally, privately, and securely.</p><p class="astro-4tynrgh6">Whether you’re building your first sensor or managing fifty devices, the initial workflow stays the same…</p><aside aria-label="Note" class="starlight-aside starlight-aside--note"><p class="starlight-aside__title" aria-hidden="true"><svg aria-hidden="true" class="starlight-aside__icon astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M12 11a1 1 0 0 0-1 1v4a1 1 0 0 0 2 0v-4a1 1 0 0 0-1-1Zm.38-3.92a1 1 0 0 0-.76 0 1 1 0 0 0-.33.21 1.15 1.15 0 0 0-.21.33 1 1 0 0 0 .21 1.09c.097.088.209.16.33.21A1 1 0 0 0 13 8a1.05 1.05 0 0 0-.29-.71 1 1 0 0 0-.33-.21ZM12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20Zm0 18a8 8 0 1 1 0-16.001A8 8 0 0 1 12 20Z"/></svg>Note</p><div class="starlight-aside__content">Every ESPHome device is built around a small, inexpensive chip called a microcontroller – commonly an ESP32 (hence the name ESPHome!), but it also works with others like the Raspberry Pi RP2040 / RP2350. The chip is the programmable part that controls your sensors, switches, and displays. ESPHome creates the programming that runs on the chip, telling it what to do. Once installed, the chip can then “talk” directly to Home Assistant or any other smart home system that supports it.</div></aside></div><div class="cards astro-4tynrgh6"><div class="card astro-4tynrgh6"><div class="card__title--icon-row astro-4tynrgh6"><div class="icon-circle card__icon astro-4tynrgh6 astro-ccg5yoga" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 14 14"><path fill="currentColor" d="M2.57279 6.66667L2.37231 5.66667C2.23866 5.61111 2.11336 5.55278 1.99642 5.49167C1.87947 5.43056 1.75975 5.35556 1.63723 5.26667L0.668258 5.56667L0 4.43333L0.768496 3.76667C0.746221 3.62222 0.735084 3.47778 0.735084 3.33333C0.735084 3.18889 0.746221 3.04444 0.768496 2.9L0 2.23333L0.668258 1.1L1.63723 1.4C1.75975 1.31111 1.87947 1.23611 1.99642 1.175C2.11336 1.11389 2.23866 1.05556 2.37231 1L2.57279 0H3.90931L4.10979 1C4.24344 1.05556 4.36873 1.11389 4.48568 1.175C4.60262 1.23611 4.72235 1.31111 4.84487 1.4L5.81384 1.1L6.4821 2.23333L5.7136 2.9C5.73588 3.04444 5.74702 3.18889 5.74702 3.33333C5.74702 3.47778 5.73588 3.62222 5.7136 3.76667L6.4821 4.43333L5.81384 5.56667L4.84487 5.26667C4.72235 5.35556 4.60262 5.43056 4.48568 5.49167C4.36873 5.55278 4.24344 5.61111 4.10979 5.66667L3.90931 6.66667H2.57279ZM4.18496 4.275C4.4467 4.01389 4.57757 3.7 4.57757 3.33333C4.57757 2.96667 4.4467 2.65278 4.18496 2.39167C3.92323 2.13056 3.60859 2 3.24105 2C2.87351 2 2.55887 2.13056 2.29714 2.39167C2.0354 2.65278 1.90453 2.96667 1.90453 3.33333C1.90453 3.7 2.0354 4.01389 2.29714 4.275C2.55887 4.53611 2.87351 4.66667 3.24105 4.66667C3.60859 4.66667 3.92323 4.53611 4.18496 4.275ZM8.5537 14L8.25298 12.6C8.06364 12.5333 7.88823 12.4528 7.72673 12.3583C7.56523 12.2639 7.40652 12.1556 7.2506 12.0333L5.91408 12.4667L4.97852 10.8667L6.04773 9.93333C6.02546 9.73333 6.01432 9.53333 6.01432 9.33333C6.01432 9.13333 6.02546 8.93333 6.04773 8.73333L4.97852 7.8L5.91408 6.2L7.2506 6.63333C7.40652 6.51111 7.56523 6.40278 7.72673 6.30833C7.88823 6.21389 8.06364 6.13333 8.25298 6.06667L8.5537 4.66667H10.4248L10.7255 6.06667C10.9
211149 6.13333 11.0903 6.21389 11.2518 6.30833C11.4133 6.40278 11.572 6.51111 11.7279 6.63333L13.0644 6.2L14 7.8L12.9308 8.73333C12.9531 8.93333 12.9642 9.13333 12.9642 9.33333C12.9642 9.53333 12.9531 9.73333 12.9308 9.93333L14 10.8667L13.0644 12.4667L11.7279 12.0333C11.572 12.1556 11.4133 12.2639 11.2518 12.3583C11.0903 12.4528 10.9149 12.5333 10.7255 12.6L10.4248 14H8.5537ZM9.48926 11.3333C10.0461 11.3333 10.5195 11.1389 10.9093 10.75C11.2991 10.3611 11.494 9.88889 11.494 9.33333C11.494 8.77778 11.2991 8.30556 10.9093 7.91667C10.5195 7.52778 10.0461 7.33333 9.48926 7.33333C8.93238 7.33333 8.45903 7.52778 8.06921 7.91667C7.67939 8.30556 7.48449 8.77778 7.48449 9.33333C7.48449 9.88889 7.67939 10.3611 8.06921 10.75C8.45903 11.1389 8.93238 11.3333 9.48926 11.3333Z"/></svg></div><p class="card__title card__title--has-icon astro-4tynrgh6">Step 1: Choose & configure</p></div><p class="astro-4tynrgh6">Select your board and components using the visual Device Builder or a YAML file. Pick sensors from the catalog and set your options without writing code.</p></div><div class="card astro-4tynrgh6"><div class="card__title--icon-row astro-4tynrgh6"><div class="icon-circle card__icon astro-4tynrgh6 astro-ccg5yoga" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 14 14"><path fill="currentColor" d="M10.9833 13.9417C10.9056 13.9139 10.8333 13.8667 10.7667 13.8L7.36667 10.4C7.3 10.3333 7.25278 10.2611 7.225 10.1833C7.19722 10.1056 7.18333 10.
2110222 7.18333 9.93333C7.18333 9.84445 7.19722 9.76111 7.225 9.68333C7.25278 9.60556 7.3 9.53333 7.36667 9.46667L8.78333 8.05C8.85 7.98333 8.92222 7.93611 9 7.90833C9.07778 7.88056 9.16111 7.86667 9.25 7.86667C9.33889 7.86667 9.42222 7.88056 9.5 7.90833C9.57778 7.93611 9.65 7.98333 9.71667 8.05L13.1167 11.45C13.1833 11.5167 13.2306 11.5889 13.2583 11.6667C13.2861 11.7444 13.3 11.8278 13.3 11.9167C13.3 12.0056 13.2861 12.0889 13.2583 12.1667C13.2306 12.2444 13.1833 12.3167 13.1167 12.3833L11.7 13.8C11.6333 13.8667 11.5611 13.9139 11.4833 13.9417C11.4056 13.9694 11.3222 13.9833 11.2333 13.9833C11.1444 13.9833 11.0611 13.9694 10.9833 13.9417ZM1.825 13.95C1.74167 13.9167 1.66667 13.8667 1.6 13.8L0.2 12.4C0.133333 12.3333 0.0833333 12.2583 0.05 12.175C0.0166667 12.0917 0 12.0056 0 11.9167C0 11.8278 0.0166667 11.7444 0.05 11.6667C0.0833333 11.5889 0.133333 11.5167 0.2 11.45L3.73333 7.91667H5.15L5.71667 7.35L2.96667 4.6H2.01667L0 2.58333L1.88333 0.7L3.9 2.71667V3.66667L6.65 6.41667L8.58333 4.48333L7.86667 3.76667L8.8 2.83333H6.91667L6.45 2.36667L8.81667 0L9.28333 0.466667V2.35L10.2167 1.41667L12.5833 3.78333C12.7722 3.97222 12.9167 4.18611 13.0167 4.425C13.1167 4.66389 13.1667 4.91667 13.1667 5.18333C13.1667 5.45 13.1167 5.70556 13.0167 5.95C12.9167 6.19444 12.7722 6.41111 12.5833 6.6L11.1667 5.18333L10.2333 6.11667L9.53333 5.41667L6.08333 8.86667V10.2667L2.55 13.8C2.48333 13.8667 2.41111 13.9167 2.33333 13.95C2.25556 13.9833 2.17222 14 2.08333 14C1.99444 14 1.90833 13.9833 1.825 13.95Z"/></svg></div><p class="card__title card__title--has-icon astro-4tynrgh6">Step 2: Build & install</p></div><p class="astro-4tynrgh6">ESPHome installs your configuration to your device straight from your browser, or wirelessly over the air.</p></div><div class="card astro-4tynrgh6"><div class="card__title--icon-row astro-4tynrgh6"><div class="icon-circle card__icon astro-4tynrgh6 astro-ccg5yoga" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="13" fill="none" viewBox="0 0 14 13"><path fill="currentColor" d="M3.78898 9.94049C3.30068 10.3474 2.79203 10.5334 2.26303 10.4986C1.73404 10.4637 1.27189 10.2835 0.876595 9.95793C0.481301 9.63239 0.210989 9.20513 0.0656606 8.67613C-0.0796682 8.14713 0.0162488 7.6036 0.353412 7.04554L1.66137 4.88305C1.37071 4.62727 1.14109 4.31917 0.972512 3.95876C0.803931 3.59834 0.71964 3.20886 0.71964 2.79031C0.71964 2.02298 0.992858 1.36609 1.53929 0.819654C2.08573 0.273218 2.74262 0 3.50995 0C4.27729 0 4.93418 0.273218 5.48061 0.819654C6.02705 1.36609 6.30027 2.02298 6.30027 2.79031C6.30027 3.55765 6.02705 4.21454 5.48061 4.76097C4.93418 5.30741 4.27729 5.58063 3.50995 5.58063C3.40532 5.58063 3.30068 5.57481 3.19604 5.56319C3.09141 5.55156 2.99258 5.53412 2.89957 5.51087L1.55673 7.778C1.42884 7.98727 1.38815 8.19364 1.43466 8.3971C1.48116 8.60056 1.57999 8.76623 1.73113 8.89412C1.88227 9.02201 2.06248 9.09468 2.27175 9.11211C2.48103 9.12955 2.68449 9.05689 2.88213 8.89412L10.2067 2.59848C10.695 2.19156 11.2066 2.00844 11.7414 2.04914C12.2762 2.08983 12.7412 2.27294 13.1365 2.59848C13.5318 2.92402 13.7992 3.35128 13.9387 3.88028C14.0783 4.40928 13.9794 4.95281 13.6423 5.51087L12.3343 7.67336C12.625 7.92914 12.8546 8.23724 13.0232 8.59765C13.1918 8.95807 13.276 9.34755 13.276 9.76609C13.276 10.5334 13.0028 11.1903 12.4564 11.7368C11.91 12.2832 11.2531 12.5564 10.4857 12.5564C9.7184 12.5564 9.06151 12.2832 8.51508 11.7368C7.96864 11.1903 7.69542 10.5334 7.69542 9.76609C7.69542 8.99876 7.96864 8.34187 8.51508 7.79544C9.06151 7.249 9.7184 6.97578 10.4857 6.97578C10.5904 6.97578 10.6921 6.9816 10.7909 6.99322C10.8898 7.00485 10.9857 7.02229 11.0787 7.04554L12.439 4.77841C12.5668 4.56914 12.6075 4.36277 12.561 4.15931C12.5145 3.95585 12.4157 3.79017 12.2646 3.66229C12.1134 3.5344 11.9332 3.46173 11.7239 3.44429C11.5147 3.42685 11.3112 3.49952 11.1136 3.66229L3.78898 9.94049ZM4.49528 3.77564C4.7685 3.50242 4.90511 3.17398 4.90511 2.79031C4.90511 2.40664 4.7685 2.0782 4.49528 1.80498C4.22206 1.53177 3.89362 1.39516 3.50995 1.39516C3.12629 1.39516 2.79784 1.53177 2.52462 1.80498C2.25141 2.0782 2.1148 2.40664 2.1148 2.79031C2.1148 3.17398 2.25141 3.50242 2.52462 3.77564C2.79784 4.04886 3.12629 4.18547 3.50995 4.18547C3.89362 4.18547 4.22206 4.04886 4.49528 3.77564ZM11.4711 10.7514C11.7443 10.4782 11.8809 10.1498 11.8809 9.76609C11.8809 9.38243 11.7443 9.05398 11.4711 8.78077C11.1978 8.50755 10.8694 8.37094 10.4857 8.37094C10.1021 8.37094 9.77363 8.50755 9.50041 8.78077C9.22719 9.05398 9.09058 9.38243 9.09058 9.76609C9.09058 10.1498 9.22719 10.4782 9.50041 10.7514C9.77363 11.0246 10.1021 11.1613 10.4857 11.1613C10.8694 11.1613 11.1978 11.0246 11.4711 10.7514Z"/></svg></div>
211<p class="card__title card__title--has-icon astro-4tynrgh6">Step 3: Connect & control</p></div><p class="astro-4tynrgh6">Your new device automatically pops up in Home Assistant over your local network: no cloud accounts or external servers required.</p></div></div></div></div></section><section class="explore-community-projects astro-3xjo6sv4"><div class="container astro-3xjo6sv4"><div class="content-container astro-3xjo6sv4"><h2 class="astro-3xjo6sv4">Explore what our community is building</h2><p class="astro-3xjo6sv4">Be inspired by our community’s clever ideas for unique, customized smart home gear – and borrow their recipes for your next project.</p></div><!-- Slider main container --><astro-swiper data-options="{&quot;slidesPerView&quot;:1.25,&quot;spaceBetween&quot;:16,&quot;pagination&quot;:{&quot;clickable&quot;:true,&quot;el&quot;:&quot;.explore-community-projects .swiper-pagination&quot;},&quot;breakpoints&quot;:{&quot;768&quot;:{&quot;slidesPerView&quot;:2.25},&quot;1024&quot;:{&quot;slidesPerView&quot;:3.05}}}" data-uniqueclass="astro-swiper-ta0auf2bk" class="swiper astro-swiper-ta0auf2bk cards astro-3xjo6sv4"><div class="swiper-wrapper astro-3xjo6sv4"><div class="swiper-slide astro-3xjo6sv4"><a href="https://jtenniswood.github.io/espcontrol/" target="_blank" rel="noopener noreferrer" class="card card-bgc astro-3xjo6sv4"><div class="card__media astro-3xjo6sv4"><img src="/_astro/espcontrol.CtP3ZmXJ_ZwtWA.webp" alt="ESPControl" loading="lazy" decoding="async" width="330" height="230" class="astro-3xjo6sv4"></div><div class="card__body astro-3xjo6sv4"><h3 class="card__title astro-3xjo6sv4">ESPControl</h3><p class="astro-3xjo6sv4">A simple, web-configurable control panel for your smart home, built with cheap touchscreen displays.</p><div class="card__tag-row astro-3xjo6sv4"><span class="card__tag astro-3xjo6sv4">Display</span><span class="card__tag astro-3xjo6sv4">Touchscreen</span><span class="card__tag astro-3xjo6sv4">Dashboard</span></div><span class="sl-link-button not-content primary card__text-link astro-3xjo6sv4"><svg aria-hidden="true" class="astro-3xjo6sv4 astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>View project</span></div></a></div><div class="swiper-slide astro-3xjo6sv4"><a href="https://frenck.dev/diy-smart-doorbell-for-just-2-dollar/" target="_blank" rel="noopener noreferrer" class="card card-bgc astro-3xjo6sv4"><div class="card__media astro-3xjo6sv4"><img src="/_astro/low-cost-smart-doorbell.fE1T-_Fu_12UJPf.webp" alt="$2 smart doorbell" loading="lazy" decoding="async" width="330" height="230" class="astro-3xjo6sv4"></div><div class="card__body astro-3xjo6sv4"><h3 class="card__title astro-3xjo6sv4">$2 Smart Doorbell</h3><p class="astro-3xjo6sv4">Turns an ordinary doorbell into a smart notification system for just a couple of dollars in parts.</p><div class="card__tag-row astro-3xjo6sv4"><span class="card__tag astro-3xjo6sv4">Doorbell</span><span class="card__tag astro-3xjo6sv4">Notifications</span><span class="card__tag astro-3xjo6sv4">Budget Build</span></div><span class="sl-link-button not-content primary card__text-link astro-3xjo6sv4"><svg aria-hidden="true" class="astro-3xjo6sv4 astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>View project</span></div></a></div><div class="swiper-slide astro-3xjo6sv4"><a href="https://community.home-assistant.io/t/use-esphome-with-e-ink-displays-to-blend-in-with-your-home-decor/435428" target="_blank" rel="noopener noreferrer" class="card card-bgc astro-3xjo6sv4"><div class="card__media astro-3xjo6sv4"><img src="/_astro/weatherman-eink-display.Bp9veC0m_1TYGSY.webp" alt="Weatherman e-ink display" loading="lazy" decoding="async" width="330" height="230" class="astro-3xjo6sv4"></div><div class="card__body astro-3xjo6sv4"><h3 class="card__title astro-3xjo6sv4">Weatherman E-Ink Display</h3><p class="astro-3xjo6sv4">An e-ink display that blends into your home decor while showing live data from your smart home.</p><div class="card__tag-row astro-3xjo6sv4"><span class="card__tag astro-3xjo6sv4">E-Ink</span><span class="card__tag astro-3xjo6sv4">Display</span><span class="card__tag astro-3xjo6sv4">Home Decor</span></div>
211<span class="sl-link-button not-content primary card__text-link astro-3xjo6sv4"><svg aria-hidden="true" class="astro-3xjo6sv4 astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>View project</span></div></a></div><div class="swiper-slide astro-3xjo6sv4"><a href="https://youtu.be/DqiMmY5ppnE" target="_blank" rel="noopener noreferrer" class="card card-bgc astro-3xjo6sv4"><div class="card__media astro-3xjo6sv4"><img src="/_astro/air-sensor.BP5yyaCP_Z1gUiuO.webp" alt="FEATURE air quality sensor" loading="lazy" decoding="async" width="330" height="230" class="astro-3xjo6sv4"></div><div class="card__body astro-3xjo6sv4"><h3 class="card__title astro-3xjo6sv4">FEATURE Air Quality Sensor</h3><p class="astro-3xjo6sv4">A custom air quality sensor with its own PCB and 3D-printed housing for monitoring the air you breathe at home.</p><div class="card__tag-row astro-3xjo6sv4"><span class="card__tag astro-3xjo6sv4">Air Quality</span><span class="card__tag astro-3xjo6sv4">Sensor</span><span class="card__tag astro-3xjo6sv4">3D Printed</span></div><span class="sl-link-button not-content primary card__text-link astro-3xjo6sv4"><svg aria-hidden="true" class="astro-3xjo6sv4 astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>View project</span></div></a></div><div class="swiper-slide astro-3xjo6sv4"><a href="https://github.com/kbx81/ClimateSprinklerController" target="_blank" rel="noopener noreferrer" class="card card-bgc astro-3xjo6sv4"><div class="card__media astro-3xjo6sv4"><img src="/_astro/climate-sprinkler-controller.COl3Jsm6_hBBUA.webp" alt="Climate Sprinkler Controller" loading="lazy" decoding="async" width="330" height="230" class="astro-3xjo6sv4"></div><div class="card__body astro-3xjo6sv4"><h3 class="card__title astro-3xjo6sv4">Climate Sprinkler Controller</h3><p class="astro-3xjo6sv4">A DIY thermostat and sprinkler controller that brings professional-grade climate control to Home Assistant.</p><div class="card__tag-row astro-3xjo6sv4"><span class="card__tag astro-3xjo6sv4">Thermostat</span><span class="card__tag astro-3xjo6sv4">Sprinkler</span><span class="card__tag astro-3xjo6sv4">Climate Control</span></div><span class="sl-link-button not-content primary card__text-link astro-3xjo6sv4"><svg aria-hidden="true" class="astro-3xjo6sv4 astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>View project</span></div></a></div><div class="swiper-slide astro-3xjo6sv4"><a href="https://glow-energy.io/" target="_blank" rel="noopener noreferrer" class="card card-bgc astro-3xjo6sv4"><div class="card__media astro-3xjo6sv4"><img src="/_astro/home-assistant-glow.D2Sb2Uzm_jbJpM.webp" alt="Glow Energy Meter" loading="lazy" decoding="async" width="330" height="230" class="astro-3xjo6sv4"></div><div class="card__body astro-3xjo6sv4"><h3 class="card__title astro-3xjo6sv4">Glow Energy Meter</h3><p class="astro-3xjo6sv4">Turns a non-smart energy meter with a pulse output into a fully monitored smart energy sensor.</p><div class="card__tag-row astro-3xjo6sv4"><span class="card__tag astro-3xjo6sv4">Energy Monitoring</span><span class="card__tag astro-3xjo6sv4">Sensor</span><span class="card__tag astro-3xjo6sv4">Pulse Meter</span></div><span class="sl-link-button not-content primary card__text-link astro-3xjo6sv4"><svg aria-hidden="true" class="astro-3xjo6sv4 astro-n5k4ipy7" width="16" height="16" viewB
211ox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>View project</span></div></a></div></div><div class="swiper-pagination astro-3xjo6sv4"></div></astro-swiper>
211<script type="module" src="/_astro/Swiper.astro_astro_type_script_index_0_lang.C-VmNWVp.js"></script>
211<p class="note astro-3xjo6sv4">Browse the <a href="https://devices.esphome.io/" class="astro-3xjo6sv4">Device List</a> for community-documented devices, or check out <a href="https://devices.esphome.io/made-for-esphome/" class="astro-3xjo6sv4">Made for ESPHome</a> certified products built by hardware manufacturers.</p></div></section><section id="begin-here" class="begin-here astro-ceeozfxi"><div class="container astro-ceeozfxi"><div class="content-container astro-ceeozfxi"><h2 class="astro-ceeozfxi">Begin here</h2><p class="astro-ceeozfxi">Ready to bring your smart home ideas to life? Grab a board (such as our official <a href="/starter-kit/" class="astro-ceeozfxi">ESPHome Starter Kit</a> or an ESP32 development board) and install in the way that suits you:</p></div><div class="card-columns astro-ceeozfxi"><div class="card-column astro-ceeozfxi"><div class="card card-bgc astro-ceeozfxi"><div class="card__content astro-ceeozfxi"><div class="icon-circle card__icon astro-ceeozfxi astro-ccg5yoga" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="13" fill="none" viewBox="0 0 14 13"><path fill="currentColor" d="M1.4 12.6C1.015 12.6 0.685417 12.4629 0.41125 12.1888C0.137083 11.9146 0 11.585 0 11.2V1.4C0 1.015 0.137083 0.685417 0.41125 0.41125C0.685417 0.137083 1.015 0 1.4 0H11.2C11.585 0 11.9146 0.137083 12.1888 0.41125C12.4629 0.685417 12.6 1.015 12.6 1.4V2.8H14V4.2H12.6V5.6H14V7H12.6V8.4H14V9.8H12.6V11.2C12.6 11.585 12.4629 11.9146 12.1888 12.1888C11.9146 12.4629 11.585 12.6 11.2 12.6H1.4ZM1.4 11.2H11.2V1.4H1.4V11.2ZM2.8 9.8H6.3V7H2.8V9.8ZM7 4.9H9.8V2.8H7V4.9ZM2.8 6.3H6.3V2.8H2.8V6.3ZM7 9.8H9.8V5.6H7V9.8Z"/></svg></div><p class="card__title h2 astro-ceeozfxi">Choose your hardware</p><p class="astro-ceeozfxi">If you’re new to this type of hardware, we recommend the <a href="/starter-kit/" class="astro-ceeozfxi">ESPHome Starter Kit</a>: the easiest way to make your own smart home devices, and your gateway to learning ESPHome. The kit includes an ESP-32 board, ribbon cables, and a snap-apart panel with four modules (motion, temperature and humidity, notification, and button) – each one ready to become its own smart device. With all the components you need, along with a Learning Wiki and the visual ESPHome Device Builder, you can skip the guesswork and start building right away.</p></div><div class="card__media astro-ceeozfxi"><div class="gallery-item gallery-item-media fade-up astro-yfxqw5ix" style="" class="astro-ceeozfxi"><img src="/_astro/esphome-starter-kit.CY7TROk1_Z27HKbQ.webp" alt="ESPHome Starter Kit with snap mounts attached" loading="lazy" decoding="async" width="1180" height="1200" class="astro-ceeozfxi"><video id="disassembly-video" class="lazy-video astro-ceeozfxi" muted playsinline preload="metadata"><source src="/videos/starter-kit/kit-disassembly.mp4" type="video/mp4" class="astro-ceeozfxi"></video><button class="play-button astro-ceeozfxi" data-video-id="disassembly-video" aria-label="Play disassembly video"></button></div></div><div class="card__content astro-ceeozfxi"><a class="sl-link-button not-content primary astro-ceeozfxi astro-hlbqph7b" href="/starter-kit/">Get the ESPHome Starter Kit</a></div></div></div><div class="card-column astro-ceeozfxi"><div class="card card-bgc astro-ceeozfxi"><div class="icon-circle card__icon astro-ceeozfxi astro-ccg5yoga" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 14 14"><path fill="currentColor" d="M10.9833 13.9417C10.9056 13.9139 10.8333 13.8667 10.7667 13.8L7.36667 10.4C7.3 10.3333 7.25278 10.2611 7.225 10.1833C7.19722 10.1056 7.18333 10.
2110222 7.18333 9.93333C7.18333 9.84445 7.19722 9.76111 7.225 9.68333C7.25278 9.60556 7.3 9.53333 7.36667 9.46667L8.78333 8.05C8.85 7.98333 8.92222 7.93611 9 7.90833C9.07778 7.88056 9.16111 7.86667 9.25 7.86667C9.33889 7.86667 9.42222 7.88056 9.5 7.90833C9.57778 7.93611 9.65 7.98333 9.71667 8.05L13.1167 11.45C13.1833 11.5167 13.2306 11.5889 13.2583 11.6667C13.2861 11.7444 13.3 11.8278 13.3 11.9167C13.3 12.0056 13.2861 12.0889 13.2583 12.1667C13.2306 12.2444 13.1833 12.3167 13.1167 12.3833L11.7 13.8C11.6333 13.8667 11.5611 13.9139 11.4833 13.9417C11.4056 13.9694 11.3222 13.9833 11.2333 13.9833C11.1444 13.9833 11.0611 13.9694 10.9833 13.9417ZM1.825 13.95C1.74167 13.9167 1.66667 13.8667 1.6 13.8L0.2 12.4C0.133333 12.3333 0.0833333 12.2583 0.05 12.175C0.0166667 12.0917 0 12.0056 0 11.9167C0 11.8278 0.0166667 11.7444 0.05 11.6667C0.0833333 11.5889 0.133333 11.5167 0.2 11.45L3.73333 7.91667H5.15L5.71667 7.35L2.96667 4.6H2.01667L0 2.58333L1.88333 0.7L3.9 2.71667V3.66667L6.65 6.41667L8.58333 4.48333L7.86667 3.76667L8.8 2.83333H6.91667L6.45 2.36667L8.81667 0L9.28333 0.466667V2.35L10.2167 1.41667L12.5833 3.78333C12.7722 3.97222 12.9167 4.18611 13.0167 4.425C13.1167 4.66389 13.1667 4.91667 13.1667 5.18333C13.1667 5.45 13.1167 5.70556 13.0167 5.95C12.9167 6.19444 12.7722 6.41111 12.5833 6.6L11.1667 5.18333L10.2333 6.11667L9.53333 5.41667L6.08333 8.86667V10.2667L2.55 13.8C2.48333 13.8667 2.41111 13.9167 2.33333 13.95C2.25556 13.9833 2.17222 14 2.08333 14C1.99444 14 1.90833 13.9833 1.825 13.95Z"/></svg></div><p class="card__title h2 astro-ceeozfxi">For the simplest setup: ESPHome Desktop App</p><p class="astro-ceeozfxi">A complete package containing everything you need to install with one click.</p><p class="astro-ceeozfxi">Available for Windows, macOS, and Linux.</p><a class="sl-link-button not-content primary card__text-link astro-ceeozfxi astro-hlbqph7b" href="/install/"><svg aria-hidden="true" class="astro-hlbqph7b astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>Download Desktop App</a></div><div class="card card-bgc astro-ceeozfxi"><div class="icon-circle card__icon astro-ceeozfxi astro-ccg5yoga" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 14 14"><path fill="currentColor" d="M10.9833 13.9417C10.9056 13.9139 10.8333 13.8667 10.7667 13.8L7.36667 10.4C7.3 10.3333 7.25278 10.2611 7.225 10.1833C7.19722 10.1056 7.18333 10.
2110222 7.18333 9.93333C7.18333 9.84445 7.19722 9.76111 7.225 9.68333C7.25278 9.60556 7.3 9.53333 7.36667 9.46667L8.78333 8.05C8.85 7.98333 8.92222 7.93611 9 7.90833C9.07778 7.88056 9.16111 7.86667 9.25 7.86667C9.33889 7.86667 9.42222 7.88056 9.5 7.90833C9.57778 7.93611 9.65 7.98333 9.71667 8.05L13.1167 11.45C13.1833 11.5167 13.2306 11.5889 13.2583 11.6667C13.2861 11.7444 13.3 11.8278 13.3 11.9167C13.3 12.0056 13.2861 12.0889 13.2583 12.1667C13.2306 12.2444 13.1833 12.3167 13.1167 12.3833L11.7 13.8C11.6333 13.8667 11.5611 13.9139 11.4833 13.9417C11.4056 13.9694 11.3222 13.9833 11.2333 13.9833C11.1444 13.9833 11.0611 13.9694 10.9833 13.9417ZM1.825 13.95C1.74167 13.9167 1.66667 13.8667 1.6 13.8L0.2 12.4C0.133333 12.3333 0.0833333 12.2583 0.05 12.175C0.0166667 12.0917 0 12.0056 0 11.9167C0 11.8278 0.0166667 11.7444 0.05 11.6667C0.0833333 11.5889 0.133333 11.5167 0.2 11.45L3.73333 7.91667H5.15L5.71667 7.35L2.96667 4.6H2.01667L0 2.58333L1.88333 0.7L3.9 2.71667V3.66667L6.65 6.41667L8.58333 4.48333L7.86667 3.76667L8.8 2.83333H6.91667L6.45 2.36667L8.81667 0L9.28333 0.466667V2.35L10.2167 1.41667L12.5833 3.78333C12.7722 3.97222 12.9167 4.18611 13.0167 4.425C13.1167 4.66389 13.1667 4.91667 13.1667 5.18333C13.1667 5.45 13.1167 5.70556 13.0167 5.95C12.9167 6.19444 12.7722 6.41111 12.5833 6.6L11.1667 5.18333L10.2333 6.11667L9.53333 5.41667L6.08333 8.86667V10.2667L2.55 13.8C2.48333 13.8667 2.41111 13.9167 2.33333 13.95C2.25556 13.9833 2.17222 14 2.08333 14C1.99444 14 1.90833 13.9833 1.825 13.95Z"/></svg></div><p class="card__title h2 astro-ceeozfxi">A step-by-step guide</p><p class="astro-ceeozfxi">Our documentation walks you through everything from setting up your first device to more advanced configurations. Begin with our Get Started guide, then explore from there.</p><a class="sl-link-button not-content primary card__text-link astro-ceeozfxi astro-hlbqph7b" href="/install/getting-started/"><svg aria-hidden="true" class="astro-hlbqph7b astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>Open the Get Started guide</a></div><div class="card card-bgc astro-ceeozfxi"><div class="icon-circle card__icon astro-ceeozfxi astro-ccg5yoga" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 14 14"><path fill="currentColor" d="M1.4 12.6H10.5V9.38L11.2875 8.995C11.4742 8.90167 11.6229 8.77333 11.7338 8.61C11.8446 8.44667 11.9 8.26 11.9 8.05C11.9 7.85167 11.8446 7.66792 11.7338 7.49875C11.6229 7.32958 11.4742 7.19833 11.2875 7.105L10.5 6.7375V3.5H7.14L6.965 2.31C6.93 2.05333 6.81625 1.8375 6.62375 1.6625C6.43125 1.4875 6.20667 1.4 5.95 1.4C5.68167 1.4 5.45125 1.4875 5.25875 1.6625C5.06625 1.8375 4.9525 2.05333 4.9175 2.31L4.7425 3.5H1.4V5.005C2.05333 5.25 2.56667 5.64667 2.94 6.195C3.31333 6.74333 3.5 7.36167 3.5 8.05C3.5 8.75 3.31333 9.37417 2.94 9.9225C2.56667 10.4708 2.05333 10.8675 1.4 11.1125V12.6ZM1.4 14C1.00333 14 0.670833 13.8658 0.4025 13.5975C0.134167 13.3292 0 12.9967 0 12.6V9.94C0.56 9.94 1.05 9.76208 1.47 9.40625C1.89 9.05042 2.1 8.59833 2.1 8.05C2.1 7.51333 1.89 7.07 1.47 6.72C1.05 6.37 0.56 6.18333 0 6.16V3.5C0 3.115 0.137083 2.78542 0.41125 2.51125C0.685417 2.23708 1.015 2.1 1.4 2.1H3.535C3.61667 1.505 3.885 1.00625 4.34 0.60375C4.795 0.20125 5.33167 0 5.95 0C6.55667 0 7.0875 0.20125 7.5425 0.60375C7.9975 1.00625 8.27167 1.505 8.365 2.1H10.5C10.885 2.1 11.2146 2.23708 11.4888 2.51125C11.7629 2.78542 11.9 3.115 11.9 3.5V5.845C12.32 6.055 12.6583 6.35833 12.915 6.755C13.1717 7.15167 13.3 7.58333 13.3 8.05C13.3 8.52833 13.1717 8.96583 12.915 9.3625C12.6583 9.75917 12.32 10.0567 11.9 10.255V12.6C11.9 12.9967 11.7629 13.3292 11.4888 13.5975C11.2146 13.8658 10.885 14 10.5 14H1.4Z"/></svg></div><p class="card__title h2 astro-ceeozfxi">Ready-Made Projects: The fast route to a finished device</p><p class="astro-ceeozfxi">While installing ESPHome gives you freedom to build smart home devices your way, you may 
211not need custom configuration. If you just want to quickly turn a board into a Bluetooth proxy, voice assistant, or media player for example, our Ready-Made Projects are the answer. They’re pre-configured to work with Home Assistant straightaway, so you can install them directly from your browser in a single click: no need to install ESPHome.</p><a class="sl-link-button not-content primary card__text-link astro-ceeozfxi astro-hlbqph7b" href="/projects/"><svg aria-hidden="true" class="astro-hlbqph7b astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>Explore Ready-Made Projects</a></div></div></div></div></section>
211<script type="module" src="/_astro/BeginHere.astro_astro_type_script_index_0_lang.DHfl2OWM.js"></script>
211<section class="pick-your-first-project astro-kfppdmjt"><div class="container astro-kfppdmjt"><div class="content-container astro-kfppdmjt"><h2 class="astro-kfppdmjt">Pick your first project</h2><p class="astro-kfppdmjt">Now you’re set up it’s time to get cooking! Here are a few practical recipes to help you build your very first project – there’s something to suit all experience levels.</p></div><!-- Slider main container --><astro-swiper data-options="{&quot;slidesPerView&quot;:1.25,&quot;spaceBetween&quot;:16,&quot;pagination&quot;:{&quot;clickable&quot;:true,&quot;el&quot;:&quot;.pick-your-first-project .swiper-pagination&quot;},&quot;breakpoints&quot;:{&quot;768&quot;:{&quot;slidesPerView&quot;:2.25},&quot;1024&quot;:{&quot;slidesPerView&quot;:3}}}" data-uniqueclass="astro-swiper-iu6k5f41x" class="swiper astro-swiper-iu6k5f41x cards astro-kfppdmjt"><div class="swiper-wrapper astro-kfppdmjt"><div class="swiper-slide astro-kfppdmjt"><a href="/starter-kit/" class="card card-bgc astro-kfppdmjt"><div class="card__media astro-kfppdmjt"><img src="/_astro/esphome-starter-kit.CY7TROk1_2i9zXu.webp" alt="ESPHome Starter Kit" loading="lazy" decoding="async" width="330" height="230" class="astro-kfppdmjt"></div><div class="card__body astro-kfppdmjt"><span class="card__tag beginner astro-kfppdmjt">Beginner</span><h3 class="card__title astro-kfppdmjt">ESPHome Starter Kit</h3><p class="astro-kfppdmjt">Get started with the ESPHome Starter Kit – the easiest path to building your own smart home devices.</p><span class="sl-link-button not-content primary card__text-link astro-kfppdmjt"><svg aria-hidden="true" class="astro-kfppdmjt astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>View ESPHome Starter Kit</span></div></a></div><div class="swiper-slide astro-kfppdmjt"><a href="/cookbook/bme280_environment/" class="card card-bgc astro-kfppdmjt"><div class="card__media astro-kfppdmjt"><img src="/_astro/environment-sensor.DAPHRGZ2_ZdgM97.webp" alt="Environment Sensor" loading="lazy" decoding="async" width="330" height="230" class="astro-kfppdmjt"></div><div class="card__body astro-kfppdmjt"><span class="card__tag beginner astro-kfppdmjt">Beginner</span><h3 class="card__title astro-kfppdmjt">Environment sensor</h3><p class="astro-kfppdmjt">Measure temperature, humidity, and air pressure using a BME280 sensor.</p><span class="sl-link-button not-content primary card__text-link astro-kfppdmjt"><svg aria-hidden="true" class="astro-kfppdmjt astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>View recipe</span></div></a></div><div class="swiper-slide astro-kfppdmjt"><a href="/cookbook/display_time_temp_oled/" class="card card-bgc astro-kfppdmjt"><div class="card__media astro-kfppdmjt"><img src="/_astro/time-and-temperature-sensor.Os9tS7g7_Z1PMzFF.webp" alt="Time &amp; Temperature Sensor" loading="lazy" decoding="async" width="330" height="230" class="astro-kfppdmjt"></div><div class="card__body astro-kfppdmjt"><span class="card__tag intermediate astro-kfppdmjt">Intermediate</span><h3 class="card__title astro-kfppdmjt">Time & temperature display</h3><p class="astro-kfppdmjt">Build a mini desktop clock that shows live sensor data.</p><span class="sl-link-button not-content primary card__text-link astro-kfppdmjt"><svg aria-hidden="true" class="astro-kfppdmjt astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>View recipe</span></div></a></div></div><div class="swiper-pagination astro-kfppdmjt"></div></astro-swiper><p class="cookbook-link astro-kfppdmjt">Browse our full <a href="/cookbook/" class="astro-kfppdmjt">Cookbook</a> for more step-by-step recipes – and remember, you can also install our <a href="/projects/" class="astro-kfppdmjt">Ready-Made Projects</a> in a single click without any configuration.</p></div></section><section class="join-our-community astro-jjiknjrk"><div class="container astro-jjiknjrk"><div class="content-container astro-jjiknjrk"><h2 class="astro-jjiknjrk">Join our community</h2><p class="astro-jjiknjrk">Tap into the knowledge and experience of the thousands of makers already using ESPHome. Get advice, troubleshoot tricky setups, and learn directly from people who’ve been there.</p></div><div class="cards astro-jjiknjrk"><div class="card card--ghost astro-jjiknjrk"><div class="card__body astro-jjiknjrk"><svg aria-hidden="true" class="astro-jjiknjrk astro-n5k4ipy7" width="16" height="16" viewB
211ox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 3rem;"><path d="M20.32 4.37a19.8 19.8 0 0 0-4.93-1.51 13.78 13.78 0 0 0-.64 1.28 18.27 18.27 0 0 0-5.5 0 12.64 12.64 0 0 0-.64-1.28h-.05A19.74 19.74 0 0 0 3.64 4.4 20.26 20.26 0 0 0 .11 18.09l.02.02a19.9 19.9 0 0 0 6.04 3.03l.04-.02a14.24 14.24 0 0 0 1.23-2.03.08.08 0 0 0-.05-.07 13.1 13.1 0 0 1-1.9-.92.08.08 0 0 1 .02-.1 10.2 10.2 0 0 0 .41-.31h.04a14.2 14.2 0 0 0 12.1 0l.04.01a9.63 9.63 0 0 0 .4.32.08.08 0 0 1-.03.1 12.29 12.29 0 0 1-1.9.91.08.08 0 0 0-.02.1 15.97 15.97 0 0 0 1.27 2.01h.04a19.84 19.84 0 0 0 6.03-3.05v-.03a20.12 20.12 0 0 0-3.57-13.69ZM8.02 15.33c-1.18 0-2.16-1.08-2.16-2.42 0-1.33.96-2.42 2.16-2.42 1.21 0 2.18 1.1 2.16 2.42 0 1.34-.96 2.42-2.16 2.42Zm7.97 0c-1.18 0-2.15-1.08-2.15-2.42 0-1.33.95-2.42 2.15-2.42 1.22 0 2.18 1.1 2.16 2.42 0 1.34-.94 2.42-2.16 2.42Z"/></svg><h3 class="card__title astro-jjiknjrk">Discord</h3><p class="astro-jjiknjrk">Chat with the community in real time.</p></div><a class="sl-link-button not-content primary card__text-link astro-jjiknjrk astro-hlbqph7b" target="_blank" rel="noopener noreferrer" href="https://esphome.io/chat"><svg aria-hidden="true" class="astro-hlbqph7b astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>Join Discord</a></div><div class="card card--ghost astro-jjiknjrk"><div class="card__body astro-jjiknjrk"><svg aria-hidden="true" class="astro-ngqmksz2" width="16" height="16" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg" style="--ha-icon-size: 3rem;"><path d="M45.878 20.6305L26.122 0.8745C24.956 -0.2915 23.046 -0.2915 21.88 0.8745L2.122 20.6305C0.956 21.7965 0 24.1025 0 25.7525V43.7525C0 45.4025 1.35 46.7525 3 46.7525H21.454L13.328 38.6265C12.91 38.7705 12.464 38.8525 12 38.8525C9.74 38.8525 7.9 37.0125 7.9 34.7525C7.9 32.4925 9.74 30.6525 12 30.6525C14.26 30.6525 16.1 32.4925 16.1 34.7525C16.1 35.2185 16.018 35.6645 15.874 36.0825L22.2 42.4085V19.2325C20.84 18.5645 19.9 17.1685 19.9 15.5545C19.9 13.2945 21.74 11.4545 24 11.4545C26.26 11.4545 28.1 13.2945 28.1 15.5545C28.1 17.1685 27.16 18.5645 25.8 19.2325V35.4865L32.092 29.1945C31.968 28.8025 31.9 28.3865 31.9 27.9545C31.9 25.6945 33.74 23.8545 36 23.8545C38.26 23.8545 40.1 25.6945 40.1 27.9545C40.1 30.2145 38.26 32.0545 36 32.0545C35.5 32.0545 35.024 31.9605 34.582 31.7965L25.8 40.5785V46.7545H45C46.65 46.7545 48 45.4045 48 43.7545V25.7545C48 24.1045 47.046 21.8005 45.878 20.6325V20.6305Z" fill="currentColor" style="--ha-icon-size: 3rem;" class="astro-ngqmksz2"></path></svg><h3 class="card__title astro-jjiknjrk">Home Assistant Forum</h3><p class="astro-jjiknjrk">Ask questions and share projects.</p></div><a class="sl-link-button not-content primary card__text-link astro-jjiknjrk astro-hlbqph7b" target="_blank" rel="noopener noreferrer" href="https://community.home-assistant.io/c/esphome/"><svg aria-hidden="true" class="astro-hlbqph7b astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>Visit Forum</a></div><div class="card card--ghost astro-jjiknjrk"><div class="card__body astro-jjiknjrk"><svg aria-hidden="true" class="astro-jjiknjrk astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 3rem;"><path d="M12 .3a12 12 0 0 0-3.8 23.38c.6.12.83-.26.83-.57L9 21.07c-3.34.72-4.04-1.61-4.04-1.61-.55-1.39-1.34-1.76-1.34-1.76-1.08-.74.09-.73.09-.73 1.2.09 1.83 1.24 1.83 1.24 1.08 1.83 2.81 1.3 3.5 1 .1-.78.42-1.31.76-1.61-2.67-.3-5.47-1.33-5.47-5.93 0-1.31.47-2.38 1.24-3.22-.14-.3-.54-1.52.1-3.18 0 0 1-.32 3.3 1.23a11.5 11.5 0 0 1 6 0c2.28-1.55 3.29-1.23 3.29-1.23.64 1.66.24 2.88.12 3.18a4.65 4.65 0 0 1 1.23 3.22c0 4.61-2.8 5.63-5.48 5.92.42.36.81 1.1.81 2.22l-.01 3.29c0 .31.2.69.82.57A12 12 0 0 0 12 .3Z"/></svg><h3 class="card__title astro-jjiknjrk">GitHub</h3><p class="astro-jjiknjrk">Follow development or contribute.</p></div>
211<a class="sl-link-button not-content primary card__text-link astro-jjiknjrk astro-hlbqph7b" target="_blank" rel="noopener noreferrer" href="https://github.com/esphome/esphome"><svg aria-hidden="true" class="astro-hlbqph7b astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>Go to GitHub</a></div></div></div></section><section class="supported-microcontrollers astro-qempul3u"><div class="container astro-qempul3u"><div class="content-container astro-qempul3u"><h2 class="astro-qempul3u">Supported microcontrollers</h2><div class="cards astro-qempul3u"><div class="card card-bgc astro-qempul3u"><h3 class="card__title astro-qempul3u">ESP32</h3><p class="astro-qempul3u">The modern standard for DIY smart devices. Powerful, budget-friendly, and packed with built-in Wi-Fi and Bluetooth.</p><a class="sl-link-button not-content primary card__text-link astro-qempul3u astro-hlbqph7b" href="/components/#supported-microcontrollers"><svg aria-hidden="true" class="astro-hlbqph7b astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>Discover more</a></div><div class="card card-bgc astro-qempul3u"><h3 class="card__title astro-qempul3u">ESP8266</h3><p class="astro-qempul3u">The original low-cost Wi-Fi microcontroller. Ideal for basic sensors and simple projects.</p><a class="sl-link-button not-content primary card__text-link astro-qempul3u astro-hlbqph7b" href="/components/#supported-microcontrollers"><svg aria-hidden="true" class="astro-hlbqph7b astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>Discover more</a></div><div class="card card-bgc astro-qempul3u"><h3 class="card__title astro-qempul3u">RP2040 / RP2350</h3><p class="astro-qempul3u">Raspberry Pi’s custom microcontroller. Great for high-performance projects and wired USB setups.</p><a class="sl-link-button not-content primary card__text-link astro-qempul3u astro-hlbqph7b" href="/components/#supported-microcontrollers"><svg aria-hidden="true" class="astro-hlbqph7b astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>Discover more</a></div><div class="card card-bgc astro-qempul3u"><h3 class="card__title astro-qempul3u">BK72xx, RTL87xx, nRF52 and LN882</h3><p class="astro-qempul3u">Alternative wireless chips found in many off-the-shelf smart plugs and light bulbs (e.g. Nordic, Beken and Realtek).</p><a class="sl-link-button not-content primary card__text-link astro-qempul3u astro-hlbqph7b" href="/components/#supported-microcontrollers"><svg aria-hidden="true" class="astro-hlbqph7b astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>Discover more</a></div><div class="card card-bgc astro-qempul3u"><h3 class="card__title astro-qempul3u">Desktop</h3><p class="astro-qempul3u">Run and test ESPHome components on your computer without any physical hardware connected.</p>
211<a class="sl-link-button not-content primary card__text-link astro-qempul3u astro-hlbqph7b" href="/components/#supported-microcontrollers"><svg aria-hidden="true" class="astro-hlbqph7b astro-n5k4ipy7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg>Discover more</a></div></div></div></div></section></div><footer class="sl-flex astro-jo6i4kqk"><div class="meta sl-flex astro-jo6i4kqk"></div><div class="site-footer not-content astro-jo6i4kqk"><div class="footer-links astro-jo6i4kqk"><div class="footer-column astro-jo6i4kqk"><div class="footer-heading astro-jo6i4kqk">Documentation</div><ul class="astro-jo6i4kqk"><li class="astro-jo6i4kqk"><a href="/components/" class="astro-jo6i4kqk">Components</a></li><li class="astro-jo6i4kqk"><a href="/guides/" class="astro-jo6i4kqk">Guides</a></li><li class="astro-jo6i4kqk"><a href="/automations/" class="astro-jo6i4kqk">Automations</a></li><li class="astro-jo6i4kqk"><a href="/cookbook/" class="astro-jo6i4kqk">Cookbook</a></li></ul></div><div class="footer-column astro-jo6i4kqk"><div class="footer-heading astro-jo6i4kqk">Community</div><ul class="astro-jo6i4kqk"><li class="astro-jo6i4kqk"><a href="https://esphome.io/chat" target="_blank" rel="noopener noreferrer" class="astro-jo6i4kqk">Discord</a></li><li class="astro-jo6i4kqk"><a href="https://github.com/esphome/esphome" target="_blank" rel="noopener noreferrer" class="astro-jo6i4kqk">GitHub</a></li><li class="astro-jo6i4kqk"><a href="https://community.home-assistant.io/c/esphome/" target="_blank" rel="noopener noreferrer" class="astro-jo6i4kqk">Forum</a></li></ul></div><div class="footer-column astro-jo6i4kqk"><div class="footer-heading astro-jo6i4kqk">Resources</div><ul class="astro-jo6i4kqk"><li class="astro-jo6i4kqk"><a href="/changelog/" class="astro-jo6i4kqk">Changelog</a></li><li class="astro-jo6i4kqk"><a href="https://devices.esphome.io" target="_blank" rel="noopener noreferrer" class="astro-jo6i4kqk">Device List</a></li><li class="astro-jo6i4kqk"><a href="https://developers.esphome.io" target="_blank" rel="noopener noreferrer" class="astro-jo6i4kqk">Development</a></li></ul></div></div><div class="footer-bottom astro-jo6i4kqk"><a href="https://www.openhomefoundation.org/" target="_blank" rel="noopener noreferrer" class="ohf-link astro-jo6i4kqk"><span class="astro-jo6i4kqk">ESPHome is a project from the</span><img class="ohf-dark astro-jo6i4kqk" src="/images/OHF-lockup-main-color-on-dark.svg" alt="Open Home Foundation" width="200" height="44"><img class="ohf-light astro-jo6i4kqk" src="/images/OHF-lockup-main-color-on-bright.svg" alt="Open Home Foundation" width="200" height="44"></a><p class="analytics-note astro-jo6i4kqk">This website uses <a href="https://www.openhomefoundation.org/blog/making-our-web-analytics-open-source-with-plausible/" rel="noopener" class="astro-jo6i4kqk">privacy-first analytics</a> to help us improve the site. You can view all data in our <a href="https://plausible.openhomefoundation.org/esphome.io" rel="noopener" class="astro-jo6i4kqk">public dashboard</a>.</p></div></div></footer></div></div></main></div></div></div></div></body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.