<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>InfluxData Blog - Community</title>
    <description>Posts by Community on the InfluxData Blog</description>
    <link>https://www.influxdata.com/blog/author/community-influxdata/</link>
    <language>en-us</language>
    <lastBuildDate>Wed, 18 Feb 2026 08:00:00 +0000</lastBuildDate>
    <pubDate>Wed, 18 Feb 2026 08:00:00 +0000</pubDate>
    <ttl>1800</ttl>
    <item>
      <title>Node-RED Dashboard Tutorial</title>
      <description>&lt;p&gt;If you’re already familiar with &lt;a href="https://www.influxdata.com/blog/iot-easy-node-red-influxdb/"&gt;Node-RED&lt;/a&gt;, you know how useful it is for automation. This post is a guide to getting started with the Node-RED dashboard 2.0. We’ll cover how to install the Node-RED dashboard 2.0 nodes and provide examples of how to create a graphical user interface (GUI) for your automation.&lt;/p&gt;

&lt;h2 id="what-is-node-red"&gt;What is Node-RED?&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://nodered.org/"&gt;Node-RED&lt;/a&gt; is a programming tool built on Node.js that lets you create automated workflows with minimal code. It wires different nodes together, with each node performing a specific function that links them to create a flow that carries out an automation task (e.g., switching off the light in a room or closing a door).&lt;/p&gt;

&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;

&lt;p&gt;We assume you’ve already installed and set up Node-RED. If that isn’t the case, here are some guides that can help you achieve that a few different ways:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href="https://nodered.org/docs/getting-started/raspberrypi"&gt;Run Node-RED on Raspberry PI&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href="https://randomnerdtutorials.com/getting-started-node-red-raspberry-pi/"&gt;Getting Started with Node-RED on Raspberry Pi&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href="https://nodered.org/docs/getting-started/local"&gt;Running Node-RED Locally&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="node-red-dashboard-installation"&gt;Node-RED dashboard installation&lt;/h2&gt;

&lt;p&gt;The first step in the process is installing the dashboard module in Node-RED.&lt;/p&gt;

&lt;p&gt;In the browser’s Node-RED window, click on the &lt;strong&gt;Menu&lt;/strong&gt; icon at the top right corner of the page, find &lt;strong&gt;Manage Palette&lt;/strong&gt; on the menu items, click &lt;strong&gt;Install&lt;/strong&gt;, and search for &lt;code class="language-markup"&gt;@flowfuse/node-red-dashboard&lt;/code&gt;. Install it and make sure the module reads &lt;strong&gt;@flowfuse/node-red-dashboard&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/1Hk7SrlPAjmL8wC7zA40Pa/665ae128d3617f53fd3a1662f8f3e5f5/Node_red_1.png" alt="Node Red 1" /&gt;&lt;/p&gt;

&lt;p&gt;After successful installation, all the Dashboard 2.0 nodes will appear in the palette section. Each dashboard node provides a widget that you can display in a user interface (UI) (e.g., a gauge, chart, or button).&lt;/p&gt;

&lt;h2 id="creating-a-user-interface"&gt;Creating a user interface&lt;/h2&gt;

&lt;p&gt;In this section, we’ll walk through how to create a dashboard UI using the Dashboard 2.0 nodes on Node-RED. But first, let’s understand the dashboard hierarchy.&lt;/p&gt;

&lt;h4 id="dashboard-hierarchy"&gt;Dashboard Hierarchy&lt;/h4&gt;

&lt;p&gt;Dashboard 2.0 uses this hierarchical structure:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Base&lt;/strong&gt;: Defines the base URL for your dashboard. The default is /dashboard.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Page&lt;/strong&gt;: Individual pages that users can navigate to.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Theme&lt;/strong&gt;: Offers different options for styling the dashboard.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Group&lt;/strong&gt;: Collections of widgets within a page&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Widget&lt;/strong&gt;: Individual UI elements, like buttons, text, charts, and others.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We use pages and groups to arrange the UI in the Node-RED Dashboard 2.0. Pages are the main navigation section that hold or display different groups, which separate a page into several sections. In each group, you organize your node widgets (buttons, texts, charts, etc.)&lt;/p&gt;

&lt;h2 id="creating-your-first-widget"&gt;Creating your first widget&lt;/h2&gt;

&lt;p&gt;Now let’s create your first widget.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Grab a button node&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Look at your palette on the left side and find the button node (It’s in the dashboard 2 section). Click and drag it to your workspace (the big grid area in the middle of your screen).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Open the configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Double-click on the button you just placed. A configuration window will pop up with a bunch of options.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/2PvqWP8G2jK0ohaYL6fKh6/85ceb83ec7758be4f3d0105021dcc925/NR_2.png" alt="NR 2" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Create a group&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;See &lt;strong&gt;Group&lt;/strong&gt; near the top? Click the pencil icon next to the dropdown. This edits the default group Node-RED created when you added the widget. Give it a name like “My Controls.” If you want to create a completely new group instead, click the plus sign next to the pencil icon.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/1u10hF9modcL7DKo4njkjb/83b114b00cd2d836625ffcf7b1393866/NR_3.png" alt="NR 3" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Create a page&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now, in that same group window, you’ll see a field that says &lt;strong&gt;Page&lt;/strong&gt;. Click the pencil icon next to it and then give the page a name, maybe “Dashboard,” for your first one. Now click &lt;strong&gt;Add&lt;/strong&gt; ( or &lt;strong&gt;Update&lt;/strong&gt; if you’re editing the default, as in my case).&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/6nGJkbHPoosBuPvGvpqb92/ae280d129c9d3304ca70439dbfcabfae/NR_4.png" alt="NR 4" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Finish up&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You’ll be back at the group window. Click &lt;strong&gt;Add&lt;/strong&gt; (or &lt;strong&gt;Update&lt;/strong&gt;) there as well, and you should be returned to the button configuration window. Click &lt;strong&gt;Done&lt;/strong&gt;, and everything should be set.&lt;/p&gt;

&lt;p&gt;Now we have successfully created our first page and group. The next step will be displaying something on the user interface.&lt;/p&gt;

&lt;h2 id="display-a-widget-on-the-ui"&gt;Display a widget on the UI&lt;/h2&gt;

&lt;p&gt;In this example, we want to create a button that displays text when clicked on.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Add a text node from your palette and place it near your button.&lt;/li&gt;
  &lt;li&gt;Wire them together. You can do this by dragging from the button’s right port to the text node’s left port.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/3FwpfXSQRz6GJwAgS8iEpU/ede789b4db8464019b0d5151cef6b231/NR_5.png" alt="NR 5" /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Double-click the text node and set the &lt;strong&gt;Group&lt;/strong&gt; to match your button’s group (in my case, “My Controls”). Also, give a name and a label, then click &lt;strong&gt;Done&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/6skwulFLfLIcIBEVqdbz5G/452c539b825ad4b88ea376b34d7daa96/NR_6.png" alt="NR 6" /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Next, double-click the button, scroll to &lt;strong&gt;Payload&lt;/strong&gt;, type “Welcome to Dashboard 2.0!”, enter a name and a label like “Click Me,” and click &lt;strong&gt;Done&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;Now click the red &lt;strong&gt;Deploy&lt;/strong&gt; button in the top right corner.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/3Xz3OftjpYJ7yBIH0spfa0/384d8a9acea4f35f56216caa79ec5c8c/NR_7.png" alt="NR 7" /&gt;&lt;/p&gt;

&lt;p&gt;To view the dashboard UI, follow this URL: &lt;strong&gt;http://localhost:1880/dashboard&lt;/strong&gt; or &lt;strong&gt;http://Your_RPi_IP_address:1880/dashboard&lt;/strong&gt;, where Your_RPi_IP_address is the address of the Raspberry Pi machine you’re using, 1880 is the port where Node-RED is exposed, and /dashboard displays the dashboard user interface.&lt;/p&gt;

&lt;p&gt;If everything works correctly, you’ll see the same window shown below.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/38YMP6KccaYsNuKWmHQKrL/488b0a9d1366c1aa8393d4d492e7fec4/NR_8.png" alt="NR 8" /&gt;&lt;/p&gt;

&lt;p&gt;When you click the button, the “Welcome to Dashboard 2.0” text will appear as shown in the image below.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/6ajhqQpArpTyhOstyjuR7U/484fbd9e7f66bef4a1b1a59ceb5c17db/NR_9.png" alt="NR 9" /&gt;&lt;/p&gt;

&lt;p&gt;You might see a light theme background. We’ll get to how to change themes later in the post.&lt;/p&gt;

&lt;h2 id="more-examples-of-widgets"&gt;More examples of widgets&lt;/h2&gt;

&lt;p&gt;Let’s create a simple dashboard example with two tabs and UI elements (widgets) in each.&lt;/p&gt;

&lt;h4 id="creating-additional-pages"&gt;Creating Additional Pages&lt;/h4&gt;

&lt;p&gt;Open the Dashboard 2.0 sidebar (right side of your editor) and click the &lt;strong&gt;+ Page&lt;/strong&gt; button at the top.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/6ySE2mN8LlxueXAWBj63TN/1ba40be315933251dda9a2130b294369/NR_10.png" alt="NR 10" /&gt;&lt;/p&gt;

&lt;p&gt;This will create a new page and pop up a window with options to edit the page’s properties (such as name, path, and others). Remember, you can also create pages when configuring a widget (as we did earlier).&lt;/p&gt;

&lt;h2 id="building-an-interactive-data-visualization"&gt;Building an interactive data visualization&lt;/h2&gt;

&lt;p&gt;Now, we’ll create a slider that controls both a gauge and a chart in real-time. This is the setup:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Drag a slider, gauge, and chart node into your workspace.
&lt;strong&gt;Step 2:&lt;/strong&gt; Double-click the slider, set min to 0, max to 100, and assign to a new group on your second page, which you just created (mine is “Monitoring Dashboard”).&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/TnzXMlz6PJKg9uKWbTzQB/7d0b08a5a0205421c8ecfee3d4e3df1e/NR_11.png" alt="NR 11" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Next, double-click the gauge. Assign it to the same group and range of 0-100, and add a color segment (green 0-30, yellow 30-70, red 70-100).&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/70sDgKnPHNwFm4rXnwcqJW/30dac2bdc5faafec5b54f4a916459cb8/NR_12.png" alt="NR 12" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Next, configure the chart. Same group and set Type to “Line.”&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/OGKPTHO8ZP9xCvJmdZmRR/5197b48b02bfebc85473f51ef7b100aa/NR_13.png" alt="NR 13" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; After this, you need to wire the gauge and chart to the slider, as shown in the image below.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/5cuUQySAXoXAAsGgbusG9n/dbad57c8d2fd66739419306b0ff0d7fa/Screenshot_2026-02-18_at_1.06.21â__AM.png" alt="NR 14" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt; Deploy and go to your dashboard UI (&lt;strong&gt;http://localhost:1880/dashboard&lt;/strong&gt; or &lt;strong&gt;http://Your_RPi_IP_address:1880/dashboard&lt;/strong&gt;).
&lt;strong&gt;Step 7:&lt;/strong&gt; In your dashboard UI, navigate to the next page. Click the hamburger icon in the top left corner, and you will see a list of your pages. Select your second page (mine is “Monitoring Dashboard”).&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/4FQZQuKkk7qWwU83iVzMDG/88f9a3e773ab36eeeb727d32a0bfc9b1/NR_14.png" alt="NR 14/2" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8:&lt;/strong&gt; On your second page, notice the initial state of your dashboard.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/2MaKTPvxzcfryDshVRmMR9/1a856b4321821f56825f83690c5d9b9c/NR_15.png" alt="NR 15" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 9:&lt;/strong&gt; Move the slider on your dashboard and watch everything update instantly (the gauge changes color, the chart plots, and Z the values).&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/4xzX407VuoK6ahonnh0dS7/4b21bbca2f5b5b5ba22d0a1abfc62c49/NR_16.png" alt="NR 16" /&gt;&lt;/p&gt;

&lt;h2 id="connecting-to-real-weather-data"&gt;Connecting to real weather data&lt;/h2&gt;

&lt;p&gt;Now, let’s enhance our example by connecting to a real data source. In this example, we would fetch real weather data and display it on our dashboard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Go to your &lt;strong&gt;Manage Palette&lt;/strong&gt; on your &lt;strong&gt;Menu&lt;/strong&gt;, search and install node-red-node-openweathermap (Like we did with @flowfuse/node-red-dashboard in the previous example).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Get an API Key from http://openweathermap.org (New keys take up to two hours to activate, so be patient if you’re just signing up).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Drag &lt;strong&gt;openweathermap&lt;/strong&gt; node to your workspace, double-click it, paste your API key and enter your city and country (e.g., “New York City, US”), and then click &lt;strong&gt;Done&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/13EmvDO0POWTT0cHNS3aXF/e1b1122067660cc2df5e851f910d930d/NR_17.png" alt="NR 17" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Next, drag an &lt;strong&gt;inject&lt;/strong&gt; node to your workspace, double-click it, and set &lt;strong&gt;Repeat&lt;/strong&gt; to “interval.” Also, check “Inject once after” so it runs on startup. Then wire the &lt;strong&gt;inject&lt;/strong&gt; node to your &lt;strong&gt;openweathermap&lt;/strong&gt; node.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/27d2Ljk4kAuUMRCyGzN7nv/9e307ac565fc1293fc7c9f22ca29b232/NR_18.png" alt="NR 18" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; Drag a &lt;strong&gt;debug&lt;/strong&gt; node, wire it to the &lt;strong&gt;openweathermap&lt;/strong&gt; node, and &lt;strong&gt;Deploy&lt;/strong&gt;. Open the &lt;strong&gt;Debug&lt;/strong&gt; panel (in the right sidebar, bug icon). You’ll see the weather data structure showing what’s available.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/1lSaUl4BslgxhxEEAlNeWB/98a339bb4cfdc518259e2df11d635362/NR_19.png" alt="NR 19" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt; Next, add three function nodes to extract data:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Double-click the first function node, name it “Get Temperature,” and add the code below:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="line-numbers"&gt;&lt;code class="language-javascript"&gt;msg.payload = msg.payload.tempc; 
return msg;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/4zn26Af28J5AqGKEFSfgxY/e97e11f202952c7d2e02b43e6fad0472/NR_20.png" alt="NR 20" /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Name the second “Get Humidity” and add:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="line-numbers"&gt;&lt;code class="language-javascript"&gt;msg.payload = msg.payload.humidity; 
return msg;&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
  &lt;li&gt;Name the last function “Get Conditions” and add:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="line-numbers"&gt;&lt;code class="language-javascript"&gt;msg.payload = msg.payload.description;
return msg;&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
  &lt;li&gt;Wire all three functions from the &lt;strong&gt;openweathermap&lt;/strong&gt; node.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 7:&lt;/strong&gt; Next, add display widgets:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Add two &lt;strong&gt;gauge&lt;/strong&gt; nodes for temperature (set unit as “°C”, range -10 to 40) and humidity (% as unit, range 0-100).&lt;/li&gt;
  &lt;li&gt;Add one &lt;strong&gt;text&lt;/strong&gt; node for the weather conditions.&lt;/li&gt;
  &lt;li&gt;Assign all to the same group (preferably a new group and page) and wire each function to its corresponding display widget.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/6l9J6Yp69hbfXM4JjXlOEq/ece07849ccc75a8e5aef240af5835735/NR_21.png" alt="NR 21" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8:&lt;/strong&gt; Finally, deploy and visit your dashboard UI.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/3Hf47PDNUor8qqH9cSHRnE/fa717fc26ff025fd1c50a5d392aaa4b7/NR_22.png" alt="NR 22" /&gt;&lt;/p&gt;

&lt;p&gt;Now, you’ve gotten a live weather dashboard updating every 10 minutes!&lt;/p&gt;

&lt;h2 id="dashboard-theme-and-styling"&gt;Dashboard theme and styling&lt;/h2&gt;

&lt;p&gt;By default, the Node-RED dashboard comes with a light theme, but you can also customize it. To edit the theme on your UI, open the Dashboard 2.0 sidebar, click on the Theme section, and you can:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Customize themes and colors&lt;/li&gt;
  &lt;li&gt;Set custom fonts&lt;/li&gt;
  &lt;li&gt;Adjust spacing and sizing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/6Z3yPbMMtfPMO3KaaAlMXO/a7e206cc780611432cb984128abf8280/NR_23.png" alt="NR 23" /&gt;&lt;/p&gt;

&lt;p&gt;After you’re done, don’t forget to deploy so you can view your changes.&lt;/p&gt;

&lt;h2 id="common-issues-and-fixes"&gt;Common issues and fixes&lt;/h2&gt;

&lt;p&gt;While following this tutorial, here are some common hurdles you might encounter and how to fix them:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;If your dashboard fails to open, look at the URL. Try using http://localhost:1880/dashboard, otherwise, use your PI’s IP instead.&lt;/li&gt;
  &lt;li&gt;If your widgets are not appearing on your dashboard, ensure that they’re connected to a group and a page before deploying.&lt;/li&gt;
  &lt;li&gt;If OpenWeatherMap returns “Invalid API key,” just wait a bit (activation can last two hours).
Clicking buttons, but no response? Ensure your nodes are well-connected.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="wrapping-up-node-red-dashboard"&gt;Wrapping up Node-RED dashboard&lt;/h2&gt;

&lt;p&gt;The aim of this guide was to provide basic knowledge of how the Node-RED dashboard 2.0 works on Raspberry Pi. I believe, with all the examples we covered in this post, you should have an idea of what you want to do next with the Node-RED dashboard on your journey to an automated life.&lt;/p&gt;

&lt;h2 id="node-red-dashboard-faqs"&gt;Node-RED Dashboard FAQs&lt;/h2&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;div id="accordion_second"&gt;
    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-1"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What is the difference between Node-RED Dashboard 1.0 and Dashboard 2.0?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-1" class="message-body is-collapsible is-active" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Dashboard 2.0, published by FlowFuse under the package &lt;code&gt;@flowfuse/node-red-dashboard&lt;/code&gt;, is a ground-up rewrite of the original Node-RED dashboard. It introduces a new hierarchy (Base, Page, Theme, Group, Widget), improved theming and styling controls, and a more modern component set. If you're starting a new project, Dashboard 2.0 is the recommended choice, as it is actively maintained and better suited for complex, multi-page UIs.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-2"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;Can I run the Node-RED dashboard without a Raspberry Pi?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-2" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Yes. Node-RED runs on any system that supports Node.js, including Windows, macOS, and Linux. The dashboard is accessed through a browser at &lt;code&gt;http://localhost:1880/dashboard&lt;/code&gt; regardless of which machine Node-RED is installed on. Raspberry Pi is a popular choice for home automation projects, but it is not required to use the Node-RED dashboard.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-3"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;Why are my Node-RED dashboard widgets not showing up?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-3" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                The most common reason widgets don't appear is that they haven't been assigned to both a Group and a Page before deploying. Every widget in Dashboard 2.0 must be linked to a group, which must itself be linked to a page. Double-click the widget node to verify those assignments, then click the red Deploy button and refresh your dashboard URL.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-4"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;How do I display live data from an external API in the Node-RED dashboard?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-4" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Use an inject node set to a repeating interval to trigger the flow on a schedule, then connect it to a data-source node (such as &lt;code&gt;node-red-node-openweathermap&lt;/code&gt; for weather data). Wire one or more function nodes after the data source to extract the specific fields you need from the payload, then connect each function node to a corresponding display widget — such as a gauge or text node — on your dashboard. Deploy the flow and the dashboard will update automatically at each interval.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-5"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;How do I add multiple pages to my Node-RED dashboard?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-5" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Open the Dashboard 2.0 sidebar on the right side of the Node-RED editor and click the &lt;strong&gt;+ Page&lt;/strong&gt; button to create a new page. You can also create a page directly when configuring any widget node — click the pencil icon next to the Page field to edit or create one inline. Once pages are created, users can navigate between them via the hamburger menu in the top-left corner of the dashboard UI.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-6"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;How do I change the theme or colors of my Node-RED dashboard?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-6" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                In the Dashboard 2.0 sidebar, navigate to the Theme section. From there you can customize colors, set custom fonts, and adjust spacing and sizing. The default is a light theme, but dark and custom themes are supported. After making changes, click Deploy to apply them to your live dashboard.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-7"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What types of widgets are available in Node-RED Dashboard 2.0?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-7" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Dashboard 2.0 includes a range of UI widgets covering inputs (buttons, sliders), displays (gauges, charts, text), and layout controls (groups, pages). Gauges support color-coded segments, charts support line and other types, and sliders can drive real-time updates to other widgets. All widgets appear in the palette under the "dashboard 2" section after installing &lt;code&gt;@flowfuse/node-red-dashboard&lt;/code&gt;.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
</description>
      <pubDate>Wed, 18 Feb 2026 08:00:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/node-red-dashboard-tutorial/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/node-red-dashboard-tutorial/</guid>
      <category>Developer</category>
      <author>Community (InfluxData)</author>
    </item>
    <item>
      <title>Exponential Smoothing: A Guide to Getting Started</title>
      <description>&lt;p&gt;Exponential smoothing is a time series forecasting method that uses an exponentially weighted average of past observations to predict future values. In other words, it assigns greater weight to recent observations than to older ones, allowing the forecast to adapt to changing data trends.&lt;/p&gt;

&lt;p&gt;In this post, we’ll look at the basics of exponential smoothing, including how it works, its types, and how to implement it in Python.&lt;/p&gt;

&lt;h2 id="what-is-exponential-smoothing"&gt;What is exponential smoothing?&lt;/h2&gt;

&lt;p&gt;Exponential smoothing forecasts &lt;a href="https://www.influxdata.com/what-is-time-series-data/"&gt;time series data&lt;/a&gt; by smoothing out fluctuations in the data. The technique was first introduced by Robert Goodell Brown in 1956 and then further developed by Charles Holt in 1957. It has since become one of the most widely used methods for forecasting.&lt;/p&gt;

&lt;p&gt;The basic idea behind exponential smoothing is to give more weight to recent observations by assigning weights to each observation that decrease exponentially with age. Weights are then used to calculate a weighted moving average of the data, which is used to forecast the next period.&lt;/p&gt;

&lt;p&gt;Exponential smoothing assumes that future values of a time series are a function of its past values. The method works well when the time series has a trend and/or a seasonal component, but it can also be used for stationary data (i.e., without trend or seasonality).&lt;/p&gt;

&lt;h2 id="types-of-exponential-smoothing"&gt;Types of exponential smoothing&lt;/h2&gt;

&lt;p&gt;There are several types of exponential smoothing methods, each with its own formulae and assumptions. The most commonly used methods include:&lt;/p&gt;

&lt;h4 id="simple-exponential-smoothing"&gt;1. Simple Exponential Smoothing&lt;/h4&gt;

&lt;p&gt;Simple exponential smoothing (SES), also known as single exponential smoothing, is its simplest form. It assumes that the time series has no trend or seasonality.&lt;/p&gt;

&lt;p&gt;The forecast for the next period is based on the weighted average of the previous observation and the forecast for the current period.&lt;/p&gt;

&lt;p&gt;The formula for simple exponential smoothing is:&lt;/p&gt;

&lt;p&gt;s&lt;sub&gt;(t)&lt;/sub&gt; = αx&lt;sub&gt;(t)&lt;/sub&gt; + (1-α)s&lt;sub&gt;t-1&lt;/sub&gt;&lt;/p&gt;

&lt;p&gt;where&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;s&lt;sub&gt;(t)&lt;/sub&gt; is the smoothed value at time t,&lt;/li&gt;
  &lt;li&gt;x&lt;sub&gt;(t)&lt;/sub&gt; is the observed value at time t,&lt;/li&gt;
  &lt;li&gt;s&lt;sub&gt;t-1&lt;/sub&gt; is the previous smoothed statistic, and&lt;/li&gt;
  &lt;li&gt;α is the smoothing parameter between 0 and 1.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The smoothing parameter α controls the weight given to the current observation and the previous forecast.&lt;/p&gt;

&lt;p&gt;A high value of α gives more weight to the current observation, while a low value of α gives more weight to the previous forecast.&lt;/p&gt;

&lt;h4 id="holts-linear-exponential-smoothing"&gt;2. Holt’s Linear Exponential Smoothing&lt;/h4&gt;

&lt;p&gt;Holt’s linear exponential smoothing, also known as double exponential smoothing, is used to forecast time series data that has a linear trend but no seasonal pattern. This method uses two smoothing parameters: α for the level (the intercept) and β for the trend.&lt;/p&gt;

&lt;p&gt;The formulas for double exponential smoothing are:&lt;/p&gt;

&lt;p&gt;s&lt;sub&gt;t&lt;/sub&gt; = αx&lt;sub&gt;t&lt;/sub&gt; + (1 – α)(s&lt;sub&gt;t-1&lt;/sub&gt; + b&lt;sub&gt;t-1&lt;/sub&gt;)&lt;/p&gt;
&lt;p&gt;β&lt;sub&gt;t&lt;/sub&gt; = β(s&lt;sub&gt;t&lt;/sub&gt; – s&lt;sub&gt;t-1&lt;/sub&gt;) + (1 – β)b&lt;sub&gt;t-1&lt;/sub&gt;&lt;/p&gt;

&lt;p&gt;where&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;bt is the slope and best estimate of the trend at time t,&lt;/li&gt;
  &lt;li&gt;α is the smoothing parameter of data (0 &amp;lt; α &amp;lt; 1), and&lt;/li&gt;
  &lt;li&gt;β is the smoothing parameter for the trend (0 &amp;lt; β &amp;lt; 1).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Holt’s method is more accurate than SES for time series data with a trend, but it doesn’t work well for time series data with a seasonal component.&lt;/p&gt;

&lt;h4 id="holt-winters-exponential-smoothing"&gt;3. Holt-Winters’ Exponential Smoothing&lt;/h4&gt;

&lt;p&gt;Holt-Winters’ exponential smoothing, also referred to as triple exponential smoothing, is used to forecast time series data with both a trend and a seasonal component. It uses three smoothing parameters: α for the level (the intercept), β for the trend, and γ for the seasonal component.&lt;/p&gt;

&lt;p&gt;The triple exponential smoothing formulas are given by:&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/67b5pCQEjFeXrfJTLoj4DY/cc8ea1c3ac3eb77ac2270c8d9c5b3fef/image4.png" alt="image4" /&gt;&lt;/p&gt;

&lt;p&gt;where:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;s&lt;sub&gt;t&lt;/sub&gt; = smoothed statistic; it’s the simple weighted average of current observation Y&lt;sub&gt;t&lt;/sub&gt;&lt;/li&gt;
  &lt;li&gt;s&lt;sub&gt;t-1&lt;/sub&gt; = previous smoothed statistic&lt;/li&gt;
  &lt;li&gt;α = smoothing factor of data (0 &amp;lt; α &amp;lt; 1)&lt;/li&gt;
  &lt;li&gt;t = time period&lt;/li&gt;
  &lt;li&gt;b&lt;sub&gt;t&lt;/sub&gt; = best estimate of a trend at time t&lt;/li&gt;
  &lt;li&gt;β = trend smoothing factor (0 &amp;lt; β &amp;lt;1)&lt;/li&gt;
  &lt;li&gt;c&lt;sub&gt;t&lt;/sub&gt; = seasonal component at time t&lt;/li&gt;
  &lt;li&gt;γ = seasonal smoothing parameter (0 &amp;lt; γ &amp;lt; 1)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Holt-Winters’ method is the most accurate of the three methods, but it’s also the most complex, requiring more data and computation than the other methods.&lt;/p&gt;

&lt;h2 id="when-to-use-exponential-smoothing"&gt;When to use exponential smoothing&lt;/h2&gt;

&lt;p&gt;Exponential smoothing is most useful for time series data that has a consistent trend, seasonality, and random fluctuations.&lt;/p&gt;

&lt;p&gt;It’s particularly useful for short to medium-term forecasting of business metrics such as sales, revenue, and customer traffic. It’s also useful for monitoring and predicting seasonal changes in industries such as tourism, agriculture, and energy.&lt;/p&gt;

&lt;p&gt;Here are some other common situations where exponential smoothing can be useful:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Time series forecasting&lt;/strong&gt; — One of the most common applications of exponential smoothing is in time series forecasting. If you have historical data for a particular variable over time, such as sales or website traffic, you can use exponential smoothing to forecast the future values of that variable.&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Inventory management&lt;/strong&gt;  — Exponential smoothing can be used to forecast demand for products or services, which can be helpful in inventory management. By forecasting demand, businesses can make sure they have enough inventory on hand to meet customer needs without overstocking.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Finance&lt;/strong&gt; — It can be used in finance to forecast stock prices, interest rates, and other financial variables. This can be helpful for investors who are trying to make informed decisions about buying and selling stocks or other financial instruments.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Marketing&lt;/strong&gt; — It’s also used to forecast the effectiveness of marketing campaigns. By tracking past campaign results and using exponential smoothing to forecast future performance, marketers can optimize their campaigns to achieve the best possible results.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="why-is-exponential-smoothing-popular"&gt;Why is exponential smoothing popular?&lt;/h2&gt;

&lt;p&gt;Exponential smoothing is among the most widely used &lt;a href="https://www.influxdata.com/time-series-forecasting-methods/"&gt;time series forecasting methods&lt;/a&gt; due to its simplicity and effectiveness.&lt;/p&gt;

&lt;p&gt;Unlike other methods, exponential smoothing can adapt to changes in data trends. It also provides accurate predictions by assigning different weights to different time periods based on their importance.&lt;/p&gt;

&lt;p&gt;Exponential smoothing is computationally efficient, making it ideal for large datasets. Additionally, it’s widely used in business forecasting, providing accurate, reliable forecasts across a range of applications, including demand, sales, and financial forecasting.&lt;/p&gt;

&lt;h2 id="how-to-perform-exponential-smoothing"&gt;How to perform exponential smoothing&lt;/h2&gt;

&lt;p&gt;Performing exponential smoothing begins with understanding your data’s structure.&lt;/p&gt;

&lt;p&gt;First, examine your time series to identify whether it contains trends, seasonality, or neither. This analysis will guide you in selecting the right exponential smoothing method: SES works best for stationary data, Holt’s method handles data with trends, and Holt-Winters’ method addresses both trends and seasonal patterns.&lt;/p&gt;

&lt;p&gt;Once you’ve chosen your method, the implementation is straightforward. Modern statistical software and libraries can automatically optimize the smoothing parameters (α, β, and γ) by finding values that minimize forecast errors.&lt;/p&gt;

&lt;p&gt;After fitting the model to your historical data, you’ll have a trained forecasting tool ready to generate predictions for future time periods.&lt;/p&gt;

&lt;p&gt;Now, let’s put this into practice by implementing exponential smoothing using Python, one of the most popular tools for time series analysis.&lt;/p&gt;

&lt;h2 id="exponential-smoothing-in-python"&gt;Exponential smoothing in Python&lt;/h2&gt;

&lt;p&gt;Python has several libraries for exponential smoothing, including &lt;a href="https://pandas.pydata.org/"&gt;Pandas&lt;/a&gt;, &lt;a href="https://www.statsmodels.org/"&gt;Statsmodels,&lt;/a&gt; and &lt;a href="http://facebook.github.io/prophet/docs/quick_start.html"&gt;Prophet&lt;/a&gt;. These libraries provide various functions and methods for implementing different types of exponential smoothing methods.&lt;/p&gt;

&lt;h4 id="the-dataset"&gt;The Dataset&lt;/h4&gt;

&lt;p&gt;For this example, we’ll use the AirPassengers dataset, a time series dataset that contains the monthly number of airline passengers from 1949 to 1960. You can download the dataset from &lt;a href="https://raw.githubusercontent.com/jbrownlee/Datasets/master/airline-passengers.csv"&gt;this link&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id="setting-up-the-environment"&gt;Setting Up the Environment&lt;/h4&gt;

&lt;p&gt;To get started, we need to set up our environment. We’ll be using Python 3, so make sure it’s installed. Alternatively, you can use &lt;a href="https://colab.research.google.com/"&gt;Google Colab&lt;/a&gt; and go straight to importing the libraries.&lt;/p&gt;

&lt;p&gt;Next, install these libraries using pip:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-bash"&gt;pip install pandas matplotlib statsmodels&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Once you’ve installed the necessary libraries, you can import them into your Python script:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-bash"&gt;import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.api import SimpleExpSmoothing&lt;/code&gt;&lt;/pre&gt;

&lt;h4 id="loading-the-data"&gt;Loading the Data&lt;/h4&gt;

&lt;p&gt;After setting up the environment, we can load the AirPassengers dataset into a pandas DataFrame using the read_csv function:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-bash"&gt;data = pd.read_csv('airline-passengers.csv', parse_dates=['Month'], index_col='Month')&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;We can then inspect the first few rows of the DataFrame using the head function:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-bash"&gt;print(data.head())&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will output:&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/2X41cTWsMZNTFnbrtyOXkH/682ec3f8d07e9358daa8cddf66f42464/output.png" alt="output" /&gt;&lt;/p&gt;

&lt;h4 id="visualizing-the-data"&gt;Visualizing the Data&lt;/h4&gt;

&lt;p&gt;Before we apply simple exponential smoothing to the data, let’s visualize it to get a better understanding of its properties. We can use the &lt;strong&gt;plot&lt;/strong&gt; function of pandas to create a line plot of the data:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-bash"&gt;plt.plot(data)
plt.xlabel('Year')
plt.ylabel('Number of Passengers')
plt.show()&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will produce a plot of the number of passengers over time:&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/5AatnC33yN99xVDsGExTKJ/f0173855174542b58947f08fd17a635f/plot_of_the_number_of_passengers_over_time.png" alt="plot of the number of passengers over time" /&gt;&lt;/p&gt;

&lt;p&gt;We can see that the number of passengers appears to be increasing, with some seasonality as well.&lt;/p&gt;

&lt;h4 id="performing-ses"&gt;Performing SES&lt;/h4&gt;

&lt;p&gt;Now that we’ve loaded and visualized the data, we can perform simple exponential smoothing using the &lt;strong&gt;SimpleExpSmoothing&lt;/strong&gt; function from the &lt;strong&gt;statsmodels&lt;/strong&gt; library. Then, we’ll create an instance of the &lt;strong&gt;SimpleExpSmoothing&lt;/strong&gt; class, passing in the data as an argument, and then fit the model to the data using the &lt;strong&gt;fit&lt;/strong&gt; method:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-bash"&gt;model = SimpleExpSmoothing(data)
model_fit = model.fit(optimized=True)
print(model_fit.summary())&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will calculate the smoothing parameters and fit the model to the data. The &lt;code class="language-markup"&gt;optimized=True&lt;/code&gt; parameter allows the model to find the best smoothing parameter (α) for your data.&lt;/p&gt;

&lt;h4 id="making-predictions"&gt;Making Predictions&lt;/h4&gt;

&lt;p&gt;Finally, we can use the &lt;strong&gt;forecast&lt;/strong&gt; method to predict future values of the time series, where the argument specifies the number of periods to forecast.&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-bash"&gt;forecast = model_fit.forecast(6)
print(forecast)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will produce a forecast for the next six months:&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/2dnsSkxm1P2vIf4uVmeCaD/24e19b9c94581bba7d451b9a4ab461b8/forecast_for_the_next_six_months.png" alt="forecast for the next six months" /&gt;&lt;/p&gt;

&lt;p&gt;Based on the forecast, we can assume that over the next six months, there will be approximately 432 airline passengers.&lt;/p&gt;

&lt;h2 id="wrapping-up"&gt;Wrapping up&lt;/h2&gt;

&lt;p&gt;Exponential smoothing is a powerful method for time series forecasting that allows for accurate predictions of future values based on past observations. It’s a simple, efficient method that can be used for a wide range of time series data.&lt;/p&gt;

&lt;p&gt;In this post, we provided a beginner’s guide to exponential smoothing, explaining the basics of the method, its types, and how to use it for forecasting. However, there are more advanced techniques and approaches to discover beyond the scope of this post.&lt;/p&gt;

&lt;p&gt;If you’re interested in learning more, be sure to check out this &lt;a href="https://www.influxdata.com/blog/python-time-series-forecasting-tutorial/"&gt;Python time series forecasting tutorial&lt;/a&gt;. It’s a great resource that can help you deepen your understanding of this topic and take your forecasting skills to the next level with &lt;a href="https://www.influxdata.com/get-influxdb/"&gt;InfluxDB&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id="exponential-smoothing-faqs"&gt;Exponential smoothing FAQs&lt;/h2&gt;

&lt;div id="accordion_second"&gt;
    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-1"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What is the smoothing parameter α in exponential smoothing and how do I choose it?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-1" class="message-body is-collapsible is-active" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                The smoothing parameter α (alpha) controls how much weight is given to the most recent observation versus older data. A value close to 1 makes the forecast highly responsive to the latest data point, while a value close to 0 places more emphasis on the historical average. In practice, you don't need to set α manually — libraries like Python's statsmodels can automatically optimize α by minimizing forecast error when you use the &lt;code&gt;optimized=True&lt;/code&gt; parameter.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-2"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What is the difference between simple, double, and triple exponential smoothing?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-2" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Simple exponential smoothing (SES) works best for stationary data with no trend or seasonality, using a single smoothing parameter α. Double exponential smoothing (Holt's method) adds a second parameter β to handle data with a linear trend. Triple exponential smoothing (Holt-Winters' method) adds a third parameter γ to also capture seasonal patterns, making it the most accurate of the three but also the most computationally demanding.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-3"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;How do I know which exponential smoothing method to use for my data?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-3" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Start by plotting your time series and examining its structure. If the data is relatively flat with no clear upward/downward drift or repeating seasonal cycles, use Simple Exponential Smoothing. If there's a consistent trend but no seasonality, use Holt's linear method. If both a trend and seasonal pattern are visible — such as sales data that peaks every holiday quarter — use Holt-Winters' method. The key is to visually inspect your data before selecting a model.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-4"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;Is exponential smoothing the same as a moving average?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-4" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                They are related but not the same. A simple moving average gives equal weight to all observations in the window and completely ignores data outside it. Exponential smoothing, on the other hand, uses all historical data but assigns weights that decrease exponentially with age — meaning the most recent observations have the greatest influence. This makes exponential smoothing more adaptive to recent changes than a standard moving average.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-5"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What Python libraries can I use for exponential smoothing?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-5" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                The most commonly used library is &lt;code&gt;statsmodels&lt;/code&gt;, which provides &lt;code&gt;SimpleExpSmoothing&lt;/code&gt; for SES and &lt;code&gt;ExponentialSmoothing&lt;/code&gt; for Holt's and Holt-Winters' methods. You'll also typically use &lt;code&gt;pandas&lt;/code&gt; for loading and preparing your time series data and &lt;code&gt;matplotlib&lt;/code&gt; for visualizing it. All three can be installed via pip and work well together for end-to-end forecasting workflows in Python.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-6"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What are the limitations of exponential smoothing?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-6" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Exponential smoothing is best suited for short to medium-term forecasting and assumes that future patterns will resemble past ones. It struggles with abrupt structural changes in the data, such as sudden market shifts or one-time events, because the model adapts gradually. It also doesn't capture complex non-linear relationships between multiple variables. For longer-horizon forecasts or multivariate scenarios, models like ARIMA, SARIMA, or machine learning-based approaches may be more appropriate.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-7"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;How accurate are exponential smoothing forecasts?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-7" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Forecast accuracy depends on how well the chosen method matches your data's structure. When the right variant is applied — SES for stationary data, Holt's for trended data, Holt-Winters' for seasonal data — exponential smoothing consistently delivers strong results for short to medium-term horizons. Accuracy also improves when smoothing parameters are automatically optimized to minimize error on your historical data, as supported by statsmodels' &lt;code&gt;optimized=True&lt;/code&gt; option.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was written by Israel Oyetunji. &lt;a href="https://twitter.com/israelmitolu"&gt;Israel&lt;/a&gt; is a frontend developer with a knack for creating engaging UI and interactive experiences. He has proven experience developing consumer-focused websites using HTML, CSS, JavaScript, ReactJS, SASS, and relevant technologies. He loves writing about tech and creating how-to tutorials for developers.&lt;/em&gt;&lt;/p&gt;
</description>
      <pubDate>Tue, 03 Feb 2026 08:00:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/exponential-smoothing-beginners-guide/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/exponential-smoothing-beginners-guide/</guid>
      <category>Developer</category>
      <author>Community (InfluxData)</author>
    </item>
    <item>
      <title>Getting Started with InfluxDB and Pandas: A Beginner's Guide</title>
      <description>&lt;p&gt;InfluxData prides itself on prioritizing developer happiness. A key ingredient to that formula is providing client libraries that let users interact with the database in their chosen language and library. Data analysis is the task most broadly associated with Python use cases, accounting for 58% of Python tasks, so it makes sense that &lt;a href="https://www.jetbrains.com/research/python-developers-survey-2018/"&gt;Pandas is the second most popular library for Python users&lt;/a&gt;. The InfluxDB 3 Python client library supports Pandas DataFrames, making it easy for data scientists to use InfluxDB.&lt;/p&gt;

&lt;p&gt;In this tutorial, we’ll learn how to query our InfluxDB instance and return the data as a DataFrame. We’ll also explore some data science resources included in the Client &lt;a href="https://github.com/InfluxCommunity/influxdb3-python"&gt;repo&lt;/a&gt;. To learn about how to get started with the InfluxDB 3 Python client library, please take a look at this &lt;a href="https://www.youtube.com/watch?v=tpdONTm1GC8"&gt;video&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/1d5h3Jhciel0jmTuowdh41/b40b010caa9dc6b93377d04e6a41e734/pandas-influxdb.jpg" alt="Pandas Query: Getting Started with InfluxDB and Pandas | InfluxData" /&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;Me eagerly consuming Pandas and InfluxDB Documentation. Photo by Sid Balachandran on Unsplash.&lt;/p&gt;

&lt;h2 id="data-science-resources"&gt;Data science resources&lt;/h2&gt;

&lt;p&gt;A variety of data science resources have been included in the InfluxDB Python client repo to help you take advantage of the Pandas functionality of the client. I encourage you to take a look at the &lt;a href="https://github.com/InfluxCommunity/influxdb3-python/tree/main/Examples"&gt;example notebooks&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id="dependencies"&gt;Dependencies&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;pyarrow (automatically comes with influxdb3-python installation)&lt;/li&gt;
  &lt;li&gt;pandas&lt;/li&gt;
  &lt;li&gt;certifi (if you are using Windows)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="installations"&gt;Installations&lt;/h2&gt;

&lt;pre class=""&gt;&lt;code class="language-python"&gt;pip install influxdb3-python pandas certifi&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id="import-dependencies"&gt;Import Dependencies&lt;/h2&gt;

&lt;pre class=""&gt;&lt;code class="language-python"&gt;
import influxdb_client_3 as influxDBclient3
import pandas as pd
Import certifi #if you are on Windows
from influxdb_client_3 import flight_client_options&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id="initialization"&gt;Initialization&lt;/h2&gt;

&lt;h4 id="direct-initialization"&gt;Direct Initialization&lt;/h4&gt;

&lt;p&gt;Take note that the “&lt;strong&gt;database&lt;/strong&gt;” argument in the function is the bucket name if you are using InfluxDB cloud:&lt;/p&gt;

&lt;pre class=""&gt;&lt;code class="language-python"&gt;client = InfluxDBClient3(token="your-token",
                         host="your-host",
                         database="your-database or your bucket name")&lt;/code&gt;&lt;/pre&gt;

&lt;h4 id="for-windows-users"&gt;For Windows Users&lt;/h4&gt;

&lt;p&gt;Include certifi within the “&lt;strong&gt;flight_client_options&lt;/strong&gt;” argument within the client initialization to fix certificate issues:&lt;/p&gt;

&lt;pre class=""&gt;&lt;code class="language-python"&gt;with open(certifi.where(), "r") as fh:
    cert = fh.read()
client = InfluxDBClient3(token="your-token",
                         host="your-host",
                         database="your-database or your bucket name”,
flight_client_options=flight_client_options(tls_root_certs=cert)&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id="prepare-a-pandas-dataframe"&gt;Prepare a pandas Dataframe&lt;/h2&gt;

&lt;p&gt;Let’s use simple weather data:&lt;/p&gt;

&lt;pre class=""&gt;&lt;code class="language-python"&gt;
# Example weather data
df = pd.DataFrame({
    "timestamp": pd.date_range("2025-09-01", periods=4, freq="h", tz="UTC"),
    "city": ["Lagos", "Illinois", "Chicago", "Abuja"],
    "temperature": [30.5, 15, 16, 32],
    "humidity": [20, 10, 10, 19]
})

# ensure timestamp dtype is datetime64[ns] and (optionally) timezone-aware
df['timestamp'] = pd.to_datetime(df['timestamp'], utc=True)
print(df.head())&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/4DCmuV3jkjxRNPXnwnV2PL/3208f398b107a6054eacb0847c981e38/Screenshot_2026-01-16_at_11.25.42Ã___AM.png" alt="Pandas table 1" /&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt; Weather timestamp data.&lt;/p&gt;

&lt;h2 id="write-the-pandas-dataframe-to-influxdb"&gt;Write the pandas Dataframe to InfluxDB&lt;/h2&gt;

&lt;pre class=""&gt;&lt;code class="language-python"&gt;
client._write_api.write(
    bucket="my_bucket",
    record=df,
    data_frame_measurement_name="weather",
    data_frame_tag_columns=["city", "temperature"],
    data_frame_timestamp_column="timestamp"
)
print("DataFrame written to bucket=new-test-bucket, measurement=weather")&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Below is confirmation in your InfluxDB Cloud that the Pandas DataFrame was successfully written to the bucket.
&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/23svEC9jVURIZ1AZR6Yjun/acc25ac179927a0f58a8649fa1d767f6/Screenshot_2026-01-16_at_10.04.51â__AM.png" alt="Pandas DataFrame" /&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;   Pandas Dataframe written to InfluxDB.&lt;/p&gt;

&lt;h2 id="query-influxdb-and-return-a-pandas-dataframe"&gt;Query InfluxDB and return a Pandas DataFrame&lt;/h2&gt;

&lt;pre class=""&gt;&lt;code class="language-python"&gt;query = "SELECT * FROM weather"
table = client.query(query=query, language="influxql")
result_df = table.to_pandas()

print("Loading from InfluxDB:")
print(result_df.head())&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/1KQGAVtQYLnxaKnDpq5m6n/5a4e222723596e843fd31b04e729c534/Screenshot_2026-01-16_at_9.59.00_AM.png" alt="Pandas table" /&gt;
                                  Returning a Pandas DataFrame from InfluxDB&lt;/p&gt;

&lt;h2 id="start-building-with-influxdb-and-pandas"&gt;Start building with InfluxDB and Pandas&lt;/h2&gt;

&lt;p&gt;InfluxDB makes it easy to integrate with your existing &lt;a href="https://www.influxdata.com/time-series-analysis-methods/"&gt;data analysis&lt;/a&gt; tools and frameworks, such as Pandas, to get insights from your time series data. Under the hood, you get the benefits of Apache Arrow for fast data transfers into Pandas DataFrames without any performance hits. Whether you’re building dashboards, machine learning models, or just exploring your metrics, combining InfluxDB 3 with Pandas gives you the best of both worlds in terms of performance and developer experience. As always, if you run into hurdles, please share them on our &lt;a href="https://community.influxdata.com/?utm_source=website&amp;amp;utm_medium=getting_started_with_influxdb_and_pandas&amp;amp;utm_content=blog"&gt;community site&lt;/a&gt; or &lt;a href="https://influxdata.com/slack/?utm_source=website&amp;amp;utm_medium=getting_started_with_influxdb_and_pandas&amp;amp;utm_content=blog"&gt;Slack&lt;/a&gt; channel. We’d love to get your feedback and help with any problems you run into.&lt;/p&gt;
</description>
      <pubDate>Tue, 27 Jan 2026 08:00:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/getting-started-with-influxdb-and-pandas/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/getting-started-with-influxdb-and-pandas/</guid>
      <category>Developer</category>
      <category>Getting Started</category>
      <author>Community (InfluxData)</author>
    </item>
    <item>
      <title>How to Integrate Grafana with Home Assistant in 2026</title>
      <description>&lt;p&gt;This post covers how to get started with Home Assistant and Grafana, including setting up &lt;a href="https://www.influxdata.com/products/influxdb-overview/?utm_source=website&amp;amp;utm_medium=integrate_grafana_ha_influxdb-3&amp;amp;utm_content=blog"&gt;InfluxDB&lt;/a&gt; and &lt;a href="https://www.influxdata.com/grafana/?utm_source=website&amp;amp;utm_medium=integrate_grafana_ha_influxdb-3&amp;amp;utm_content=blog"&gt;Grafana&lt;/a&gt; with Docker, configuring InfluxDB to receive data from Home Assistant, and creating a Grafana dashboard to visualize your data. It provides a comprehensive guide for real-time monitoring and analysis of Home Assistant data.&lt;/p&gt;

&lt;p&gt;In this tutorial, you’ll learn how to install and configure both InfluxDB and Grafana, and create a Grafana dashboard to visualize data from Home Assistant.&lt;/p&gt;

&lt;p&gt;Want to know more about InfluxDB and Grafana before you get started?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.influxdata.com/resources/infrastructure-monitoring-basics-with-telegraf-grafana-influxdb/"&gt;Watch the webinar&lt;/a&gt;.&lt;u&gt;&lt;/u&gt;&lt;/p&gt;

&lt;h2 id="definitions-grafana-home-assistant-influxdb"&gt;Definitions: Grafana, Home Assistant, InfluxDB&lt;/h2&gt;

&lt;h4 id="home-assistant"&gt;Home Assistant&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Home Assistant&lt;/strong&gt; is an open source home automation platform that enables control and monitoring of various devices using a web interface or mobile app. With support for diverse devices and protocols, it’s highly customizable, allowing users to integrate new devices and protocols through custom components.&lt;/p&gt;

&lt;h4 id="grafana"&gt;Grafana&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Grafana&lt;/strong&gt; is a versatile open source analytics and monitoring platform that offers powerful data visualization capabilities. It supports various data sources, including popular databases, such as InfluxDB, Elasticsearch, Prometheus, MySQL, PostgreSQL, and more.&lt;/p&gt;

&lt;p&gt;With its extensibility through plugins, Grafana allows users to easily incorporate new data sources for enhanced analytics and monitoring.&lt;/p&gt;

&lt;h4 id="influxdb"&gt;InfluxDB&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;InfluxDB&lt;/strong&gt; is an open source time series database designed for storing and querying time series data. It supports a wide range of data types, including integers, floats, strings, booleans, and others. Additionally, InfluxDB provides the flexibility to incorporate new data types via plugins.&lt;/p&gt;

&lt;p&gt;Home Assistant integrates with Grafana, an analytics and monitoring platform, to visualize and analyze data. This data can be collected and stored in InfluxDB, an open source time series database, which allows for efficient querying of timestamped data.&lt;/p&gt;

&lt;p&gt;Together, these tools enable users to control and monitor their smart home devices through Home Assistant while visualizing and analyzing the data in real-time using Grafana and InfluxDB.&lt;/p&gt;

&lt;h2 id="prerequisites-and-versions"&gt;Prerequisites and versions&lt;/h2&gt;

&lt;p&gt;To follow this tutorial, you will need the following:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://www.home-assistant.io/installation"&gt;Home Assistant&lt;/a&gt; 2025.1+&lt;/li&gt;
  &lt;li&gt;Docker 24.0+&lt;/li&gt;
  &lt;li&gt;InfluxDB 3.x&lt;/li&gt;
  &lt;li&gt;Grafana 12&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id="step-1-install-influxdb-3-core"&gt;Step 1: Install InfluxDB 3 Core&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Option A: Install via Docker&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First, pull the InfluxDB 3 image using this command:&lt;/p&gt;

&lt;pre class=""&gt;&lt;code class="language-bash"&gt;docker pull influxdb:3-core&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Once the download is complete, run the InfluxDB container with the following command:&lt;/p&gt;

&lt;pre class=""&gt;&lt;code class="language-bash"&gt;docker run -d\
	--name influxdb \
	–p 8086:8086 \
-v influxdb3_data:/var/lib/influxdb2 \
	-v influxdb3_config:/etc/influxdb2 \
-e DOCKER_INFLUXDB_INIT_MODE=setup \
     -e DOCKER_INFLUXDB_INIT_USERNAME=admin \
     -e DOCKER_INFLUXDB_INIT_PASSWORD=your_password \
     -e DOCKER_INFLUXDB_INIT_ORG=home_org \
     -e DOCKER_INFLUXDB_INIT_BUCKET=home_assistant \
     influxdb:3&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This command starts InfluxDB on port 8086, configures an initial user, organization, and bucket, and stores data in Docker volumes so it survives container restarts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option B: Install Directly&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First, you’ll need to install InfluxDB on your machine. You can find instructions for your specific operating system on the &lt;a href="https://www.influxdata.com/?utm_source=website&amp;amp;utm_medium=integrate_grafana_ha_influxdb-3&amp;amp;utm_content=blog"&gt;InfluxDB downloads page&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id="step-2-configure-influxdb-and-generate-an-api-token"&gt;Step 2: Configure InfluxDB and Generate an API Token&lt;/h4&gt;

&lt;p&gt;After installing InfluxDB, you’ll need to configure it to accept data from Home Assistant. You can do this by creating a new InfluxDB database and user account.&lt;/p&gt;

&lt;p&gt;Open your browser and navigate to http://localhost:8086.&lt;/p&gt;

&lt;p&gt;If you used the environment variables in Step 1, you can log in with the username and password you specified. Otherwise, complete the initial setup process.&lt;/p&gt;

&lt;p&gt;Next, generate an API Token by:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;In the InfluxDB UI, click &lt;strong&gt;Load Data&lt;/strong&gt; in the left sidebar&lt;/li&gt;
  &lt;li&gt;Click &lt;strong&gt;API Tokens&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Click &lt;strong&gt;Generate API Token&lt;/strong&gt; (All Access API Token)&lt;/li&gt;
  &lt;li&gt;Give it a description like “Home Assistant Token”&lt;/li&gt;
  &lt;li&gt;Grant &lt;strong&gt;Write&lt;/strong&gt; permission to the &lt;code class="language-markup"&gt;home_assistant&lt;/code&gt; bucket&lt;/li&gt;
  &lt;li&gt;Click &lt;strong&gt;Generate&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lastly, copy and save the token, as you’ll need it for Home Assistant and Grafana configuration.&lt;/p&gt;

&lt;h4 id="step-3-configure-the-influxdb-integration-in-home-assistant"&gt;Step 3: Configure the InfluxDB integration in Home Assistant&lt;/h4&gt;

&lt;p&gt;Now, you’ll need to install the InfluxDB integration in Home Assistant. You can do this by navigating to the Home Assistant web interface, selecting &lt;strong&gt;Settings&lt;/strong&gt; from the sidebar, and then selecting &lt;strong&gt;Integrations&lt;/strong&gt;. From there, you can search for &lt;strong&gt;InfluxDB&lt;/strong&gt; and follow the prompts to configure the integration.
&lt;img src="" alt="" /&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/6ad093ddc249421e98f1400fe87df2bf/d1a15fd8ea44bf9efc84f393fd4ddc52/unnamed.png" alt="" /&gt;
Next, open your Home Assistant &lt;code class="language-markup"&gt;configuration.yaml&lt;/code&gt; file and add the following &lt;code class="language-markup"&gt;influxdb&lt;/code&gt; configuration block:&lt;/p&gt;

&lt;pre class=""&gt;&lt;code class="language-yaml"&gt; influxdb:
     api_version: 2
     ssl: false
     host: YOUR_INFLUXDB_IP
     port: 8086
     token: YOUR_API_TOKEN
     organization: home_org
     bucket: home_assistant
     tags:
       source: HomeAssistant
     tags_attributes:
       - friendly_name
     default_measurement: state
     exclude:
       entity_globs:
         - sensor.date*
         - sensor.time*
     include:
       domains:
         - sensor
         - binary_sensor
         - climate
         - light
         - switch&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then, restart Home Assistant to apply the changes.&lt;/p&gt;

&lt;p&gt;For additional configuration options, see the &lt;a href="https://www.home-assistant.io/integrations/influxdb"&gt;Home Assistant InfluxDB integration documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h5 id="verify-data-is-flowing-to-influxdb"&gt;Verify Data is Flowing to InfluxDB&lt;/h5&gt;

&lt;p&gt;After restarting Home Assistant:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Return to the InfluxDB UI&lt;/li&gt;
  &lt;li&gt;Click the &lt;strong&gt;Data Explorer&lt;/strong&gt; in the left sidebar&lt;/li&gt;
  &lt;li&gt;Select your &lt;code class="language-markup"&gt;home_assistant&lt;/code&gt; bucket&lt;/li&gt;
  &lt;li&gt;Within a few minutes, you should see measurements appearing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you don’t see data, check the logs at &lt;strong&gt;Settings&lt;/strong&gt; -&amp;gt; &lt;strong&gt;System&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Logs&lt;/strong&gt; for connection errors.&lt;/p&gt;

&lt;h4 id="step-4-install-grafana-using-docker"&gt;Step 4: Install Grafana Using Docker&lt;/h4&gt;

&lt;p&gt;If you prefer to run Grafana in Docker rather than install it locally, follow these steps.&lt;/p&gt;

&lt;h5 id="install-docker"&gt;Install Docker&lt;/h5&gt;

&lt;p&gt;If you haven’t already, you’ll need to install Docker on your machine. You can find instructions for your specific OS on the &lt;a href="https://www.docker.com/"&gt;Docker website&lt;/a&gt;.&lt;/p&gt;

&lt;h5 id="pull-the-grafana-docker-image"&gt;Pull the Grafana Docker Image&lt;/h5&gt;

&lt;p&gt;Once Docker is installed, you can pull the Grafana Docker image by running the following command in your terminal:&lt;/p&gt;

&lt;pre class=""&gt;&lt;code class="language-bash"&gt;docker pull grafana/grafana&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will download the latest version of the &lt;a href="https://hub.docker.com/r/grafana/grafana"&gt;Grafana Docker&lt;/a&gt; image to your machine.&lt;/p&gt;

&lt;h5 id="run-the-grafana-docker-container"&gt;Run the Grafana Docker container&lt;/h5&gt;

&lt;p&gt;To start a new Grafana Docker container, run the following command in your terminal:&lt;/p&gt;

&lt;pre class=""&gt;&lt;code class="language-bash"&gt;docker run -d -p 3000:3000 --name=grafana grafana/grafana&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will start a new container named &lt;strong&gt;grafana&lt;/strong&gt; and map port 3000 on the container to port 3000 on your local machine.&lt;/p&gt;

&lt;h5 id="access-the-grafana-web-interface"&gt;Access the Grafana web interface&lt;/h5&gt;

&lt;p&gt;Once the container is running, you can access the Grafana web interface by navigating to http://localhost:3000 in your web browser.&lt;/p&gt;

&lt;h5 id="create-a-grafana-account-and-connect-data-sources"&gt;Create a Grafana account and connect data sources&lt;/h5&gt;

&lt;p&gt;When you first access the Grafana web interface, you’ll be prompted to create a new user account. After creating your account, you can start configuring Grafana by adding a data source and creating dashboards, as described in the previous steps.&lt;/p&gt;

&lt;h5 id="configure-grafana"&gt;Configure Grafana&lt;/h5&gt;

&lt;p&gt;After installing Grafana, you’ll need to configure it to connect to the InfluxDB database. You can do this by following these steps:&lt;/p&gt;

&lt;p&gt;Open the Grafana web interface by navigating to http://localhost:3000 in your web browser. Log in to Grafana using the default username &lt;strong&gt;admin&lt;/strong&gt; and password &lt;strong&gt;admin&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Click on the &lt;strong&gt;Configuration&lt;/strong&gt; icon in the sidebar and select &lt;strong&gt;Data Sources&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;Click on the &lt;strong&gt;Add data source&lt;/strong&gt; button and select &lt;strong&gt;InfluxDB&lt;/strong&gt;. Enter the following information in the &lt;strong&gt;InfluxDB details&lt;/strong&gt; section:
    &lt;ul&gt;
      &lt;li&gt;URL: &lt;a href="http://localhost:8086"&gt;http://localhost:8086&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;Query Language: SQL or InfluxQL&lt;/li&gt;
      &lt;li&gt;Database: homeassistant&lt;/li&gt;
      &lt;li&gt;User: homeassistant&lt;/li&gt;
      &lt;li&gt;Password: yourpassword&lt;/li&gt;
      &lt;li&gt;HTTP method: GET&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Click on the &lt;strong&gt;Save &amp;amp; Test&lt;/strong&gt; button to save the data source and test the connection to InfluxDB.&lt;/li&gt;
&lt;/ul&gt;

&lt;h5 id="create-a-grafana-dashboard"&gt;Create a Grafana dashboard&lt;/h5&gt;

&lt;p&gt;After configuring the InfluxDB data source in Grafana, you can create a new dashboard to visualize the Home Assistant data. To do this, follow these steps:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Click the &lt;strong&gt;Create&lt;/strong&gt; icon in the sidebar, then select &lt;strong&gt;Dashboard&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;Click on the &lt;strong&gt;Add new panel&lt;/strong&gt; button and select &lt;strong&gt;Graph&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;Click on &lt;strong&gt;Panel title&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;In the &lt;strong&gt;Query&lt;/strong&gt; tab, select the InfluxDB data source that you configured.&lt;/li&gt;
  &lt;li&gt;Enter your InfluxDB query in the &lt;strong&gt;Query editor&lt;/strong&gt;. For example, you might enter a query like this to display the temperature from a temperature sensor:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class=""&gt;&lt;code class="language-sql"&gt;SELECT mean("value") FROM "temperature" WHERE ("entity_id" = 'sensor.temperature') AND $timeFilter GROUP BY time($__interval)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This query selects the average temperature from the temperature measurement for the sensor.temperature entity in Home Assistant and groups the results by time interval.&lt;/p&gt;

&lt;p&gt;Click on the &lt;strong&gt;Apply&lt;/strong&gt; button to save the query and display the results.&lt;/p&gt;

&lt;p&gt;Customize your panel as desired by selecting different visualization options, adding legends and annotations, etc.&lt;/p&gt;

&lt;p&gt;Click on the &lt;strong&gt;Save&lt;/strong&gt; icon in the toolbar to save the panel to your dashboard.&lt;/p&gt;

&lt;p&gt;You can repeat these steps to add more panels to your dashboard, using different InfluxDB queries to display different data. Check &lt;a href="https://docs.influxdata.com/influxdb3/core/visualize-data/grafana/"&gt;InfluxDB’s Grafana documentation&lt;/a&gt; for more details.&lt;/p&gt;

&lt;h4 id="step-8-view-your-dashboard"&gt;Step 8: View Your Dashboard&lt;/h4&gt;

&lt;p&gt;After creating your Grafana dashboard, you can view it by navigating to http://localhost:3000/dashboards in your web browser and selecting the dashboard from the list. You should now see a visual representation of your Home Assistant data in Grafana!&lt;/p&gt;

&lt;h2 id="troubleshooting-and-faqs"&gt;Troubleshooting and FAQs&lt;/h2&gt;

&lt;h4 id="no-data-appears-in-influxdb-after-configuring-home-assistant"&gt;No data appears in InfluxDB after configuring Home Assistant&lt;/h4&gt;

&lt;p&gt;Check your Home Assistant logs (&lt;code class="language-markup"&gt;Settings &amp;gt; System &amp;gt; Logs&lt;/code&gt;). If the connection fails, you will see errors there. Ensure the &lt;code class="language-markup"&gt;token&lt;/code&gt; in &lt;code class="language-markup"&gt;configuration.yaml&lt;/code&gt; is correct and wrapped in quotes if it contains special characters.&lt;/p&gt;

&lt;h4 id="can-i-write-to-multiple-influxdb-databases-or-buckets-from-home-assistant"&gt;Can I write to multiple InfluxDB databases or buckets from Home Assistant?&lt;/h4&gt;

&lt;p&gt;No. Home Assistant’s InfluxDB integration only supports writing to a single database or bucket. All your sensor data must be sent to a single location. If you need to separate data streams, you’ll need to use Home Assistant’s filtering options in &lt;code class="language-markup"&gt;configuration.yaml&lt;/code&gt; to exclude certain entities, or run multiple Home Assistant instances.&lt;/p&gt;

&lt;h4 id="my-grafana-cant-connect-to-influxdb-even-though-both-are-running-whats-wrong"&gt;My Grafana can’t connect to InfluxDB even though both are running. What’s wrong?&lt;/h4&gt;

&lt;p&gt;This is often a Docker networking issue. If both services are running in Docker containers, they may not be able to reach each other via &lt;code class="language-markup"&gt;localhost&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Try using your host machine’s actual IP address (like &lt;code class="language-markup"&gt;192.168.1.100:8086&lt;/code&gt;) instead of &lt;code class="language-markup"&gt;localhost:8086&lt;/code&gt; in Grafana’s data source configuration. Also, verify that the port number matches; InfluxDB’s HTTP API uses port 8086 by default.&lt;/p&gt;

&lt;p&gt;If you’re using Home Assistant add-ons, make sure you’re using the correct internal container names (like &lt;code class="language-markup"&gt;a0d7b954-influxdb:8086&lt;/code&gt; instead of &lt;code class="language-markup"&gt;a0d7b954_influxdb:8086&lt;/code&gt;, note the hyphen vs underscore).&lt;/p&gt;

&lt;h4 id="can-i-use-influxdb-cloud-instead-of-running-my-own-instance"&gt;Can I use InfluxDB Cloud instead of running my own instance?&lt;/h4&gt;

&lt;p&gt;Yes. InfluxDB Cloud offers a fully-managed InfluxDB 3 service, and the setup is very similar. You’ll get a URL, organization, bucket, and API token from the InfluxDB Cloud console, then configure Home Assistant and Grafana to point at those cloud endpoints instead of a local instance.&lt;/p&gt;

&lt;p&gt;This eliminates the need to manage Docker containers, backups, and updates yourself. However, you’ll need to consider data egress costs if you have high query volumes, and your Home Assistant data will be stored in the cloud rather than locally.&lt;/p&gt;

&lt;h4 id="can-i-migrate-from-influxdb-2x-to-3x"&gt;Can I migrate from InfluxDB 2.x to 3.x?&lt;/h4&gt;

&lt;p&gt;Yes, InfluxDB 3 maintains backward compatibility with the v2 write API. Your Home Assistant configuration will continue to work. For data migration, refer to the &lt;a href="https://docs.influxdata.com/influxdb3/core/"&gt;official InfluxDB migration documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id="next-steps-for-home-assistant-and-grafana"&gt;Next steps for Home Assistant and Grafana&lt;/h2&gt;

&lt;p&gt;Getting started with Home Assistant and Grafana requires installing InfluxDB and Grafana on your machine, configuring InfluxDB to accept data from Home Assistant, installing the InfluxDB integration in Home Assistant, configuring Grafana to connect to the InfluxDB database, and creating a Grafana dashboard to visualize your data. With these tools and techniques, you can easily monitor and analyze your Home Assistant data in real-time.&lt;/p&gt;
</description>
      <pubDate>Thu, 08 Jan 2026 08:00:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/how-integrate-gafana-home-assistant/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/how-integrate-gafana-home-assistant/</guid>
      <category>Developer</category>
      <category>Product</category>
      <author>Community (InfluxData)</author>
    </item>
    <item>
      <title>A Guide to Regression Analysis with Time Series Data</title>
      <description>&lt;p&gt;Regression analysis with time series data in Python provides a basis for understanding how values change over time. By following this guide, you’ll understand regression as applied to time series data, how to prepare it in Python, and how to create regression models that’ll help discover trends and influence decisions.&lt;/p&gt;

&lt;p&gt;With the vast amount of time series data generated, captured, and consumed daily, how can you make sense of it? This data is projected to triple to more than &lt;a href="https://www.statista.com/statistics/871513/worldwide-data-created/"&gt;180 zettabytes by 2029&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;By using regression analysis with time series data, we can gain valuable insights into the behavior of complex systems over time, identify trends and patterns, and make informed decisions based on our analysis and predictions.&lt;/p&gt;

&lt;p&gt;This post serves as a guide to regression analysis with time series data in Python. By the end, you should know what time series data is and how to use it with regression analysis.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/1B6ynu5G3jV66YDeD82WsL/ef4a40cf6e5fdeb4fc82dee79fe53f48/Screenshot_2026-01-05_at_10.43.10â__PM.png" alt="pull quote TSDB" /&gt;&lt;/p&gt;

&lt;h2 id="what-is-time-series-data"&gt;What is time series data?&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.influxdata.com/what-is-time-series-data/"&gt;Time series data&lt;/a&gt; records each observation at a specific point in time and at regular intervals. In time series data, the order of observations matters, and you use the data to analyze changes or patterns.&lt;/p&gt;

&lt;p&gt;Examples of this type of data include stock prices, weather measurements, economic indicators, and many others. Time series data is widely used across finance, economics, engineering, and social sciences.&lt;/p&gt;

&lt;p&gt;The critical difference between time series data and other data types, such as categorical and numerical, is time. This component allows us to spot trends and makes predictive analysis possible.&lt;/p&gt;

&lt;h2 id="what-is-regression-and-regression-analysis"&gt;What is regression and regression analysis?&lt;/h2&gt;

&lt;p&gt;Regression is a statistical technique you use to explore and model the relationship between a dependent variable (the response variable) and one or more independent variables (the predictor or explanatory variables).&lt;/p&gt;

&lt;p&gt;Regression analysis involves estimating the coefficients of the regression equation, which describe the relationship between the independent and dependent variables. There are several regression models, including linear, logistic, and polynomial regression. In each type, you’re trying to find the best-fit line or curve representing the variables’ relationship.&lt;/p&gt;

&lt;p&gt;Like time series data, you’ll find regression analysis in many fields, including economics, finance, social sciences, and engineering, to understand the underlying relationships between variables and to make predictions based on those relationships.&lt;/p&gt;

&lt;h2 id="can-you-run-a-regression-on-time-series-data"&gt;Can you run a regression on time series data?&lt;/h2&gt;

&lt;p&gt;Yes, you can run a regression on time series data. In time series regression, the dependent variable is a time series, and the independent variables can be other time series or non-time series variables.&lt;/p&gt;

&lt;p&gt;Time series regression helps you understand the relationship between variables over time and forecast future values of the dependent variable.&lt;/p&gt;

&lt;p&gt;Some common application examples of time series regression include:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;predicting stock prices based on economic indicators&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;forecasting electricity demand based on weather data&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;estimating the impact of marketing campaigns on sales&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are various statistical techniques available for time series regression analysis, including &lt;a href="https://www.influxdata.com/glossary/arima/"&gt;Autoregressive Integrated Moving Average&lt;/a&gt; (ARIMA) models, vector autoregression (VAR) models, and Bayesian structural time series (BSTS) models, among others.&lt;/p&gt;

&lt;h2 id="what-are-the-steps-in-time-series-regression-analysis"&gt;What are the steps in time series regression analysis?&lt;/h2&gt;

&lt;p&gt;This guide assumes that you’ve set up your environment. But to follow along, you’ll need Python, Data Package, NumPy, Matplotlib, Seaborn, pandas, and statsmodels.&lt;/p&gt;

&lt;h4 id="data-collection-and-preparation"&gt;Data Collection and Preparation&lt;/h4&gt;

&lt;p&gt;The first step in regression analysis is to collect the data. Time series data is collected over a specific period and includes variables that change over time, ensuring that the data is accurate, complete, and consistent is essential.&lt;/p&gt;

&lt;p&gt;Once you’ve collected the data, prepare for analysis by removing any outliers, handling missing data, and transforming the data as needed.&lt;/p&gt;

&lt;p&gt;In our case, we’ll use gas price data, and we’ll need to import some libraries. We’ll be using Pandas for data handling, Statsmodels for regression analysis, Matplotlib for data visualization, NumPy for numerical operations, and the Data Package to retrieve the data.&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;import statsmodels.api as sm
import datapackage
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;We’ll then load the time series data into a pandas dataframe. Our data is &lt;a href="https://datahub.io/core/natural-gas#data-cli"&gt;natural gas price data from 1997.&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;data_url = 'https://datahub.io/core/natural-gas/datapackage.json'

# to load Data Package into storage
package = datapackage.Package(data_url)

# to load only tabular data
resources = package.resources
for resource in resources:
    if resource.tabular:
        data = pd.read_csv(resource.descriptor['path'])
        print (data)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Since we’re working with time series data, we need to convert the data into a time series format. We can do this by setting the index of the DataFrame to the datetime format.&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;data['Month'] = pd.to_datetime(data['Month'])
data.set_index('Month', inplace=True)&lt;/code&gt;&lt;/pre&gt;

&lt;h4 id="visualization"&gt;Visualization&lt;/h4&gt;

&lt;p&gt;Before conducting regression analysis, it’s essential to &lt;a href="https://www.influxdata.com/how-to-visualize-time-series-data/"&gt;visualize&lt;/a&gt; the data. You can use line graphs, scatter plots, or other graphical representations.&lt;/p&gt;

&lt;p&gt;This helps identify trends, patterns, or relationships between the dependent and independent variables.&lt;/p&gt;

&lt;p&gt;To do this, create a line plot of the data:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;plt.plot(data)
plt.xlabel('Year')
plt.ylabel('Gas Price')
plt.show()&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/2LYrSTULeyOiGE0h9nRwpS/d75d5ced8f52d096674ff606ebf9b5a0/Screenshot_2026-01-05_at_10.50.48â__PM.png" alt="pull quote 2" /&gt;&lt;/p&gt;

&lt;h4 id="model-specification-and-estimation"&gt;Model Specification and Estimation&lt;/h4&gt;

&lt;p&gt;The next step is to specify the regression model by selecting the dependent variable, identifying the independent variables, and choosing the model’s functional form.
The model must account for the time component in time series data, including seasonal patterns, trends, and cyclical fluctuations.&lt;/p&gt;

&lt;p&gt;Once you’ve specified the model, estimate it using statistical software. The most common method for time series regression analysis is ordinary least squares (OLS).&lt;/p&gt;

&lt;p&gt;The software will estimate the model coefficients, which represent the strength and direction of the relationship between the dependent and independent variables.&lt;/p&gt;

&lt;p&gt;Here, we’re using a simple linear regression model with one independent variable. We’ll use the gas price from the previous month as the independent variable and the gas prices for the current month as the dependent variable.&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;X = data['Price'].shift(1)
y = data['Price']&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Before estimating the model, we need to split the data into training and testing sets. We’ll use the first 80% of the data for training the model and the remaining 20% for testing the model.&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;train_size = int(len(data) * 0.8)
train_X, test_X = X[1:train_size], X[train_size:]
train_y, test_y = y[1:train_size], y[train_size:]&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now, we can estimate the model using OLS regression from the statsmodels library.&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;model = sm.OLS(train_y, train_X)
result = model.fit()
print(result.summary())&lt;/code&gt;&lt;/pre&gt;

&lt;h4 id="diagnostic"&gt;Diagnostic&lt;/h4&gt;

&lt;p&gt;After estimating the model, it’s essential to assess model adequacy and identify any violations of the regression model’s assumptions.&lt;/p&gt;

&lt;p&gt;This includes testing for autocorrelation, heteroscedasticity, and normality of residuals. These tests help ensure that the model is appropriate and reliable.&lt;/p&gt;

&lt;p&gt;We can do this by plotting the residuals and conducting statistical tests.&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;residuals = result.resid
plt.plot(residuals)
plt.xlabel('Year')
plt.ylabel('Residuals')
plt.show()
print(sm.stats.diagnostic.acorr_ljungbox(residuals, lags=[12], boxpierce=True))&lt;/code&gt;&lt;/pre&gt;

&lt;h4 id="interpretation"&gt;Interpretation&lt;/h4&gt;

&lt;p&gt;Once you’ve estimated the model and conducted diagnostic tests, you interpret the results. This involves examining the coefficients of the independent variables and the statistical significance of those coefficients.&lt;/p&gt;

&lt;p&gt;The interpretation should also include an assessment of the model’s overall fit, such as the R-squared and adjusted R-squared values.&lt;/p&gt;

&lt;h4 id="possible-forecast"&gt;Possible Forecast&lt;/h4&gt;

&lt;p&gt;Regression analysis with time series data enables you to forecast future values of the dependent variable. This involves using the estimated model to predict future values of the dependent variable based on the values of the independent variables.&lt;/p&gt;

&lt;p&gt;For example, we can use our model to predict the next month’s value. We’ll do this by taking the last price value from the dataset as input(lag_1) and using our model to predict the next value.&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-python"&gt;last_value = data[“Price”].iloc[-1] 
next_value = result.predict([last_value])&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This provides a basic forecast example, but you can improve it by adding multiple lags, rolling averages, or using advanced models like Seasonal Autoregressive Integrated Moving Average with Exogenous Regressors (SARIMAX).&lt;/p&gt;

&lt;p&gt;It’s essential to note that the forecast’s accuracy depends on the quality of the data, the appropriateness of the model, and the validity of the assumptions.&lt;/p&gt;

&lt;h2 id="how-can-you-use-regression-analysis-with-time-series-data"&gt;How can you use regression analysis with time series data?&lt;/h2&gt;

&lt;p&gt;Regression analysis is valuable for analyzing time series data when there’s a temporal relationship between the dependent variable and one or more independent variables.&lt;/p&gt;

&lt;p&gt;Some common scenarios for time series regression analysis include:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Forecasting&lt;/strong&gt;: With time series regression analysis, you can forecast possible future values of a variable based on its past values and the values of other variables that influence it.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Trend analysis&lt;/strong&gt;: Time series regression analysis can identify and analyze trends in the data over time, including long-term trends, seasonal patterns, and cyclic patterns.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Impact analysis&lt;/strong&gt;: You can use time-series regression to examine the impact of specific events or interventions on the time series, such as policy changes, natural disasters, or economic shocks.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Regression analysis with time series data is a potent tool for understanding relationships between variables. It’s a key component for understanding data in various industries, including finance, healthcare, and retail, among others.&lt;/p&gt;

&lt;p&gt;By mastering the basics of regression analysis with time series data, you can unlock the power of your data and make informed decisions.&lt;/p&gt;

&lt;h2 id="time-series-regression-analysis-faqs"&gt;Time series regression analysis FAQs&lt;/h2&gt;

&lt;div id="accordion_second"&gt;
    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-1"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What is regression analysis with time series data?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-1" class="message-body is-collapsible is-active" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Regression analysis with time series data is a statistical technique used to explore the relationship between a dependent variable and one or more independent variables recorded over time. It allows analysts to identify trends, understand how variables interact across time periods, and forecast future values. Common applications include predicting stock prices, forecasting energy demand, and estimating the impact of marketing campaigns on sales.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-2"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;Can you run a regression on time series data?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-2" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Yes, regression can be run on time series data. In time series regression, the dependent variable is a time series, while independent variables can be other time series or non-time series variables. Techniques such as ARIMA, vector autoregression (VAR), and Bayesian structural time series (BSTS) models are commonly used for this type of analysis.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-3"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What is the difference between time series data and other data types?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-3" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                The key difference is the time component. Time series data records each observation at a specific point in time and at regular intervals, meaning the order of observations matters. This temporal structure allows analysts to detect trends, seasonal patterns, and make predictive forecasts — capabilities that are not inherent in categorical or standard numerical data.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-4"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What are the steps in time series regression analysis?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-4" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                The main steps are: (1) data collection and preparation — cleaning, handling missing values, and formatting the data; (2) visualization — plotting the data to identify trends and patterns; (3) model specification and estimation — selecting variables and fitting the model, typically using ordinary least squares (OLS); (4) diagnostics — testing for autocorrelation, heteroscedasticity, and normality of residuals; (5) interpretation — reviewing coefficients and model fit; and (6) forecasting — using the model to predict future values.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-5"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;How do you perform time series regression analysis in Python?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-5" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                To perform time series regression in Python, you'll need libraries including pandas, NumPy, Matplotlib, Seaborn, and statsmodels. Load your data into a pandas DataFrame, convert the date column to datetime format and set it as the index, then use &lt;code&gt;statsmodels.api.OLS&lt;/code&gt; to fit a regression model. Split your data into training and test sets before fitting, and use &lt;code&gt;result.predict()&lt;/code&gt; to generate forecasts.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-6"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What is ordinary least squares (OLS) and when is it used in time series regression?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-6" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Ordinary least squares (OLS) is the most common method for estimating regression model coefficients. It works by finding the line or curve that minimizes the sum of squared differences between observed and predicted values. In time series regression, OLS is used to estimate the strength and direction of the relationship between independent and dependent variables across time periods.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-7"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What diagnostic tests should you run after fitting a time series regression model?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-7" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                After fitting a time series regression model, you should test for autocorrelation (whether residuals are correlated over time), heteroscedasticity (whether variance of residuals is consistent), and normality of residuals. The Ljung-Box test is a common method for checking autocorrelation. Plotting residuals over time is also a useful visual check to identify any systematic patterns that suggest the model can be improved.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-8"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What are common use cases for regression analysis with time series data?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-8" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Common use cases include forecasting (predicting future values based on historical data and related variables), trend analysis (identifying long-term patterns, seasonal cycles, and cyclical fluctuations), and impact analysis (measuring the effect of specific events like policy changes or economic shocks on a time series). Industries using these techniques include finance, healthcare, retail, economics, and engineering.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

&lt;/div&gt;
</description>
      <pubDate>Tue, 06 Jan 2026 08:00:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/guide-regression-analysis-time-series-data/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/guide-regression-analysis-time-series-data/</guid>
      <category>Developer</category>
      <author>Community (InfluxData)</author>
    </item>
    <item>
      <title>Python ARIMA Tutorial 2026</title>
      <description>&lt;p&gt;&lt;a href="https://www.influxdata.com/time-series-forecasting-methods/"&gt;Time series forecasting&lt;/a&gt; is an essential part of data analysis in fields such as finance, weather prediction, and sales forecasting, among others. The ARIMA model—a statistical method well known for its efficiency in estimating and forecasting time-dependent data—is a major topic in this domain. It is loved by many because it accurately models a variety of time series, making it a powerful tool in predictive analytics.&lt;/p&gt;

&lt;p&gt;This guide will break down implementing ARIMA models in Python, a language with rich libraries and tools for data analysis. The simplicity and extensive support Python offers make it suitable for use with complex statistical models like ARIMA.&lt;/p&gt;

&lt;p&gt;We’ll start by setting up your Python environment and building, evaluating, and optimizing ARIMA models. By the end of this post, you should be able to grasp the ARIMA model clearly and understand how to apply it for effective forecasting with Python.&lt;/p&gt;

&lt;h2 id="what-is-arima"&gt;What is ARIMA?&lt;/h2&gt;

&lt;p&gt;The AutoRegressive Integrated Moving Average (ARIMA) is a fundamental tool in time series analysis. It examines past values to understand and predict points within a data sequence. This model is particularly useful when dealing with data that changes over time. It consists of three key parts:&lt;/p&gt;

&lt;h4 id="autoregression-ar"&gt;1. AutoRegression (AR)&lt;/h4&gt;

&lt;p&gt;This represents how much one variable depends on previous variables. AR estimates future values based on past observations; it looks at the relationship between a variable and its prior values.&lt;/p&gt;

&lt;h4 id="integration-i"&gt;2. Integration (I)&lt;/h4&gt;

&lt;p&gt;These are contrary operations that remove trends or seasonality from the data so that their mean and variance are constant over time. Basically, this means &lt;a href="https://www.influxdata.com/blog/time-series-differencing-complete-guide-influxdb/"&gt;differencing&lt;/a&gt; the data (i.e., subtracting the previous value from the current value).&lt;/p&gt;

&lt;h4 id="moving-average-ma"&gt;3. Moving Average (MA)&lt;/h4&gt;

&lt;p&gt;This incorporates errors that occurred previously, taking a combination of past errors into account while modeling them. It can be used to mitigate data noise and identify its underlying trend.&lt;/p&gt;

&lt;h4 id="arima-parameters-p-d-q"&gt;ARIMA parameters (p, d, q)&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;p denotes the AutoRegressive order. That is the number of lags in a model. For example, if p = 2, then the model uses two previous time points to predict the current value.&lt;/li&gt;
  &lt;li&gt;d is the degree of differencing required to make the data stationary (one with a constant mean and variance over time). Say d=1, then you’ll subtract the previous value from the current at least once; otherwise, if d = 0, then the data is stationary.&lt;/li&gt;
  &lt;li&gt;q shows the order of the moving average, which is the residual errors on MAs applied to lagged observations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="when-to-use-arima"&gt;When to use ARIMA&lt;/h2&gt;

&lt;p&gt;The ARIMA model is widely applicable in real-life scenarios. As a result, it is ideal for modeling data with trends and seasonality, such as:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Economic forecasting&lt;/strong&gt;: Predicting GDP, unemployment rates, or stock prices&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Sales forecasting&lt;/strong&gt;: Forecasting future product demand based on previous sales data&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Weather forecasting&lt;/strong&gt;: Temperature, rainfall, or other weather condition predictions&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Resource allocation&lt;/strong&gt;: Forecasting inventory or production needs in industries such as retail and manufacturing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Python offers a range of libraries for implementing ARIMA, such as &lt;strong&gt;statsmodels&lt;/strong&gt;, which provides numerous features for building and analyzing models. Thus, Python is an effective tool for learning about ARIMA models and practically applying them.&lt;/p&gt;

&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;

&lt;p&gt;Here’s what you’ll need to follow along with this tutorial:&lt;/p&gt;

&lt;h4 id="basic-knowledge"&gt;Basic Knowledge&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Python proficiency&lt;/strong&gt;: Familiarity with basic Python programming&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Statistical understanding&lt;/strong&gt;: Fundamental aspects of statistics, especially relevant to &lt;a href="https://www.influxdata.com/what-is-time-series-data/"&gt;time series data
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id="tools-and-libraries"&gt;Tools and Libraries&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Python&lt;/strong&gt;: The primary language for implementation&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://jupyter.org/"&gt;&lt;strong&gt;Jupyter Notebook&lt;/strong&gt;&lt;/a&gt;: An interactive coding experience&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Key libraries&lt;/strong&gt;: pandas, NumPy, matplotlib, statsmodels (pip installable)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="setting-up-your-environment-for-arima-in-python"&gt;Setting up your environment for ARIMA in Python&lt;/h2&gt;

&lt;h4 id="installing-jupyter-notebook"&gt;Installing Jupyter Notebook&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;Open the command line or terminal: Go to the command line (Windows) or terminal (Mac/Linux).&lt;/li&gt;
  &lt;li&gt;Install Jupyter: Type &lt;strong&gt;pip install notebook&lt;/strong&gt; and press enter to install Jupyter Notebook on your computer.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id="installing-python-libraries"&gt;Installing Python libraries&lt;/h4&gt;

&lt;p&gt;The following steps guide you through installing the Jupyter Notebook. To open the Jupyter Notebook, type &lt;strong&gt;jupyter notebook&lt;/strong&gt; in your command line or terminal and press enter, as mentioned below.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Create a new notebook: In the Jupyter interface, create a new notebook for your ARIMA project.&lt;/li&gt;
  &lt;li&gt;Install libraries in notebook: Type and run the following commands in separate cells:&lt;/li&gt;
  &lt;li&gt;!pip install pandas for data manipulation&lt;/li&gt;
  &lt;li&gt;!pip install numpy for numerical operations&lt;/li&gt;
  &lt;li&gt;!pip install matplotlib for data visualization&lt;/li&gt;
  &lt;li&gt;!pip install statsmodels for statistical modeling, including ARIMA&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These steps ensure you have a functional Python environment with all the necessary tools to start working with ARIMA models.&lt;/p&gt;

&lt;h2 id="implementing-your-first-arima-model-in-python"&gt;Implementing your first ARIMA model in Python&lt;/h2&gt;

&lt;h4 id="importing-necessary-libraries"&gt;Importing Necessary Libraries&lt;/h4&gt;

&lt;p&gt;Start by importing the libraries you’ll need. In your Python environment (such as a Jupyter Notebook), enter the following commands:&lt;/p&gt;
&lt;pre class=""&gt;&lt;code class="language-python"&gt;import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.tsa.stattools import adfuller&lt;/code&gt;&lt;/pre&gt;

&lt;h4 id="loading-and-visualizing-time-series-data"&gt;Loading and Visualizing Time Series Data&lt;/h4&gt;

&lt;p&gt;We’re going to use this data from &lt;a href="https://www.kaggle.com/datasets/prashant111/dataset/data"&gt;Kaggle&lt;/a&gt;.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Load data: Use pandas to load your time series data. For instance, you can use &lt;strong&gt;data = pd.read_csv(‘data.csv’)&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;Visualize data: Plot your data to understand its pattern. Here’s an example:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;data.plot()
&lt;br /&gt;
plt.show()&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/7ph29EeVQFlzYZaSHh22f3/5c2e3cb10788ee5081ff1156013f4c9b/Screenshot_2025-12-29_at_11.51.42â__PM.png" alt="ARIMA graph" /&gt;&lt;/p&gt;

&lt;h4 id="testing-for-stationarity"&gt;Testing for Stationarity&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://www.influxdata.com/glossary/stationarity/"&gt;Stationarity&lt;/a&gt; is crucial for ARIMA models. Use the augmented Dickey-Fuller test to check for stationarity:&lt;/p&gt;

&lt;pre class=""&gt;&lt;code class="language-python"&gt;result = adfuller(data['column_name'])
print('ADF Statistic: %f' % result[0])
print('p-value: %f' % result[1])&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;If p-value &amp;gt; 0.05&lt;/strong&gt;, the data are non-stationary and require differencing.&lt;/p&gt;

&lt;h4 id="differencing-if-necessary"&gt;Differencing If Necessary&lt;/h4&gt;

&lt;p&gt;If your data is non-stationary, difference it:&lt;/p&gt;

&lt;pre class=""&gt;&lt;code class="language-python"&gt;data_diff = data.diff().dropna()&lt;/code&gt;&lt;/pre&gt;

&lt;h4 id="determining-arima-parameters-p-d-q"&gt;Determining ARIMA Parameters (p, d, q)&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;Plotting: Use plots (like autocorrelation and partial autocorrelation plots) to estimate ‘p’ and ‘q’.&lt;/li&gt;
  &lt;li&gt;Statistical tests: Use statistical methods or rules of thumb to find optimal ‘p’, ‘d’, ‘q’ values.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id="building-and-fitting-an-arima-model"&gt;Building and Fitting an ARIMA Model&lt;/h4&gt;

&lt;p&gt;Create and fit an ARIMA model with your chosen parameters (here we’ve chosen 1 for all parameters):&lt;/p&gt;

&lt;pre class=""&gt;&lt;code class="language-python"&gt;model = ARIMA(data_diff, order=(1,1,1)) 
model_fit = model.fit()&lt;/code&gt;&lt;/pre&gt;

&lt;h4 id="making-predictions"&gt;Making Predictions&lt;/h4&gt;

&lt;p&gt;Use the fitted model to make forecasts:&lt;/p&gt;

&lt;pre class=""&gt;&lt;code class="language-python"&gt;predictions = model_fit.forecast(steps=5)  # Predict next 5 points
print(predictions)&lt;/code&gt;&lt;/pre&gt;

&lt;h4 id="check-residuals"&gt;Check Residuals&lt;/h4&gt;

&lt;p&gt;Plot to see the distribution of residuals:&lt;/p&gt;

&lt;pre class=""&gt;&lt;code class="language-python"&gt;model_fit.plot_diagnostics(figsize=(10,6))
plt.show()&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/3qbyvIkCP9FYy9dKFR6MA3/304e242c68f13613ffc7a4d677c9746e/Screenshot_2025-12-29_at_11.58.22â__PM.png" alt="ARIMA 4 graph" /&gt;&lt;/p&gt;

&lt;h2 id="how-to-evaluate-an-arima-model"&gt;How to evaluate an ARIMA model&lt;/h2&gt;

&lt;p&gt;Once you have programmed the ARIMA model in Python, it’s essential to evaluate its performance. Knowing how well your model fits the data aids in precise forecasting.&lt;/p&gt;

&lt;h4 id="understanding-performance-metrics"&gt;Understanding Performance Metrics&lt;/h4&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Akaike Information Criterion (AIC)&lt;/strong&gt;: This is a measure of how good a model is. It evaluates the relationship between the model’s complexity and how well it fits the data. The best value for AIC is minimal.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Bayesian Information Criterion (BIC)&lt;/strong&gt;: Similar to AIC, this method assesses quality but penalizes complex models more strongly than AIC. The best value for BIC is minimal.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Root Mean Square Error (RMSE)&lt;/strong&gt;: This metric gives an average error size. It is derived by taking the square root of mean-squared differences between the prediction and the actual observation in cases where a lower rise implies better.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4 id="interpreting-the-model-summary"&gt;Interpreting the Model Summary&lt;/h4&gt;

&lt;p&gt;You can find a summary of the ARIMA model in the statsmodels library. These are some critical things to look at:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Coefficients: The importance of each feature relative to the dependent variables is revealed by these values.&lt;/li&gt;
&lt;/ul&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Metric&lt;/th&gt;
      &lt;th&gt;Meaning&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;P &amp;gt; z&lt;/td&gt;
      &lt;td&gt;(p-values): Low p-values (usually &amp;lt; 0.05) imply that the parameters in this model are statistically significant.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;ul&gt;
  &lt;li&gt;AIC/BIC values: Use these to compare models.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="tuning-your-arima-model"&gt;Tuning your ARIMA model&lt;/h2&gt;

&lt;p&gt;To enhance forecasting accuracy, an ARIMA model needs its parameters (p, d, q) fine-tuned. The following are the appropriate steps to take.&lt;/p&gt;

&lt;h4 id="fine-tuning-model-parameters-p-d-q"&gt;Fine-Tuning Model Parameters (p, d, q)&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Iterative approach&lt;/strong&gt;: Test different combinations of p, d, and q based on initial analysis (such as ACF and PACF plots). For each combination, monitor the model’s performance and adjust accordingly.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Understand the data&lt;/strong&gt;: Sometimes, through analyzing data, we get an idea of how much differencing is required (d) or the number of lag values to be included (p and q).&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Simplicity matters&lt;/strong&gt;: A simpler model that does well with fewer values of p, d, and q is often better than a complex one. Too many parameters result in overloading results.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id="grid-search-for-parameter-optimization"&gt;Grid Search for Parameter Optimization&lt;/h4&gt;

&lt;p&gt;Grid search is the hand-specified examination of an entire space of hyperparameters. The main aim is to find the combination of p, d, and q that minimizes a metric or score.&lt;/p&gt;

&lt;h4 id="implementing-grid-search-in-python"&gt;Implementing Grid Search in Python&lt;/h4&gt;

&lt;p&gt;Here’s a simplified example of how to implement grid search for ARIMA model parameters in Python:&lt;/p&gt;

&lt;pre class=""&gt;&lt;code class="language-python"&gt;from statsmodels.tsa.arima.model import ARIMA
import itertools
# Define the p, d, and q ranges to try
p = range(0, 3)
d = range(0, 2)
q = range(0, 3)
pdq = list(itertools.product(p, d, q))
best_score, best_cfg = float("inf"), None
for param in pdq:
    try:
        model = ARIMA(train_data, order=param)
        model_fit = model.fit()
        # Adjust this to use your preferred metric (e.g., AIC)
        if model_fit.aic "" best_score:
            best_score, best_cfg = model_fit.aic, param
    except:
        continue

print('Best ARIMA%s AIC=%.2f' % (best_cfg, best_score))&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The code will test different combinations of p, d, and q and identify the one with the smallest AIC (in case you prefer another criterion). Keep in mind that optimization may require considerable computer time when working with larger datasets and many possible parameter combinations.&lt;/p&gt;

&lt;h2 id="arima-in-python-wrapping-up"&gt;ARIMA in Python: wrapping up&lt;/h2&gt;

&lt;p&gt;We’ve now walked through developing, implementing, and debugging the ARIMA model in Python. Like any worthwhile journey, there were tricky turns along the way, but the knowledge you received in the time series prediction arena is priceless.&lt;/p&gt;

&lt;p&gt;Keep experimenting and learning from your data. Each dataset has a narrative, and you are now better placed to reveal these concealed stories. Have a great time forecasting!&lt;/p&gt;

&lt;h2 id="python-arima-faqs"&gt;Python ARIMA FAQs&lt;/h2&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;div id="accordion_second"&gt;
    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-1"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What is the difference between ARIMA and SARIMA?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-1" class="message-body is-collapsible is-active" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                ARIMA (AutoRegressive Integrated Moving Average) models trends and non-seasonal patterns in time series data using three parameters: p (autoregressive order), d (differencing degree), and q (moving average order). SARIMA extends ARIMA by adding a seasonal component — it includes additional parameters (P, D, Q, m) to capture repeating cycles, such as monthly or quarterly patterns. If your data has no clear seasonality, ARIMA is sufficient; if seasonal patterns are present, SARIMA is the better choice.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-2"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;How do I know if my time series data is stationary?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-2" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                The most reliable method is the Augmented Dickey-Fuller (ADF) test, available in Python's statsmodels library via &lt;code&gt;adfuller()&lt;/code&gt;. If the p-value returned is greater than 0.05, the data is non-stationary and needs differencing before you can fit an ARIMA model. You can also visually inspect the data by plotting it — a stationary series has a roughly constant mean and variance over time, with no clear upward or downward trend.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-3"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;How do I choose the right p, d, and q values for my ARIMA model?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-3" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Start with &lt;strong&gt;d&lt;/strong&gt;: run the ADF test and difference your data until it becomes stationary — the number of times you difference it is your d value. For &lt;strong&gt;p&lt;/strong&gt; and &lt;strong&gt;q&lt;/strong&gt;, plot the Partial Autocorrelation Function (PACF) to estimate p and the Autocorrelation Function (ACF) to estimate q. If you prefer an automated approach, use grid search with Python's &lt;code&gt;itertools&lt;/code&gt; to systematically test combinations and select the one with the lowest AIC score.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-4"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What does AIC mean in ARIMA and why does a lower value indicate a better model?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-4" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                AIC (Akaike Information Criterion) measures how well a model fits the data while penalizing unnecessary complexity. A lower AIC means the model explains the data well without overfitting by using too many parameters. When comparing multiple ARIMA configurations — for example during grid search — the model with the lowest AIC is generally the best balance between accuracy and simplicity. BIC (Bayesian Information Criterion) works similarly but applies a stronger penalty for complexity.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-5"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;Can ARIMA handle data with multiple seasonal patterns?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-5" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Standard ARIMA is not designed for seasonal data and handles only a single differencing cycle at a time. For data with one seasonal pattern, SARIMA is recommended. For data with multiple overlapping seasonal cycles — for example, hourly data that has both daily and weekly patterns — more advanced methods such as TBATS or Facebook Prophet are typically better suited than ARIMA or SARIMA.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-6"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;How do I check whether my ARIMA model's residuals are well-behaved?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-6" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                After fitting your model, call &lt;code&gt;model_fit.plot_diagnostics()&lt;/code&gt; from statsmodels to generate a four-panel diagnostic plot. Ideally, the residuals should look like white noise — randomly distributed around zero with no visible pattern. The histogram and Q-Q plot should resemble a normal distribution, and the correlogram should show no significant autocorrelation at any lag. If patterns remain in the residuals, it suggests the model has not fully captured the structure in your data and the parameters may need adjustment.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-7"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;When should I use ARIMA instead of a machine learning model for forecasting?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-7" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                ARIMA is a strong choice when your dataset is relatively small, you need an interpretable model, or your time series has a clear linear trend with limited external variables. It is computationally lightweight and well-suited for short to medium-term forecasting in domains like economic indicators, sales, and weather. Machine learning models such as LSTMs or gradient boosting tend to outperform ARIMA when you have large datasets, many input features, or complex non-linear relationships between variables.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was written by Keshav Malik, a highly skilled and enthusiastic security engineer. &lt;a href="https://www.theinfosecguy.xyz/"&gt;Keshav&lt;/a&gt; has a passion for automation, hacking, and exploring different tools and technologies. With a love for finding innovative solutions to complex problems, Keshav is constantly seeking new opportunities to grow and improve as a professional. He is dedicated to staying ahead of the curve and is always on the lookout for the latest and greatest tools and technologies.&lt;/em&gt;&lt;/p&gt;
</description>
      <pubDate>Tue, 30 Dec 2025 08:00:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/python-ARIMA-tutorial-influxDB/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/python-ARIMA-tutorial-influxDB/</guid>
      <category>Developer</category>
      <author>Community (InfluxData)</author>
    </item>
    <item>
      <title>Home Assistant Hardware in 2026: Requirements and Recommendations</title>
      <description>&lt;p&gt;Choosing the proper Home Assistant hardware can be overwhelming. Whether you’re new to home automation or a seasoned pro, the hardware you select can make or break your experience. This comprehensive guide will demystify the requirements, delve into the various options, and help you make an informed decision. From the compact &lt;a href="https://www.influxdata.com/blog/7-hardware-devices-edge-computing-projects-2023/?utm_source=website&amp;amp;utm_medium=home_assistant_hardware_recommendations&amp;amp;utm_content=blog"&gt;Raspberry Pi&lt;/a&gt; to the powerful Intel NUC, we’ve got you covered. So, strap in, and let’s dive into the world of Home Assistant hardware!&lt;/p&gt;

&lt;h2 id="what-is-home-assistant"&gt;What is Home Assistant?&lt;/h2&gt;

&lt;p&gt;If you’re unfamiliar with it, &lt;a href="https://www.home-assistant.io/"&gt;Home Assistant&lt;/a&gt; is an open source home automation platform that allows you to control all your smart home devices from one central hub. But before you start your journey to smart home nirvana, you must ensure you have the right hardware for what you want to accomplish.&lt;/p&gt;

&lt;h2 id="core-hardware-requirements-for-home-assistant"&gt;Core hardware requirements for Home Assistant&lt;/h2&gt;

&lt;p&gt;Setting up your Home Assistant system doesn’t necessarily mean breaking the bank on high-end hardware. Home Assistant is designed to be versatile, and it can comfortably run on devices you might already have lying around. However, understanding the minimum requirements is crucial to ensuring a smooth and frustration-free experience. Let’s break it down.&lt;/p&gt;

&lt;p&gt;At the minimum, you’ll want to hit the following specs for your hardware:&lt;/p&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;CPU&lt;/td&gt;
      &lt;td&gt;1.5GHz single-core processor&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;RAM&lt;/td&gt;
      &lt;td&gt;2GB&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Storage&lt;/td&gt;
      &lt;td&gt;32GB&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Network&lt;/td&gt;
      &lt;td&gt;Ethernet port or reliable WiFi&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;For a more responsive system that  enables  advanced analytics and automation and can extend over time, you will want to target the following:&lt;/p&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;CPU&lt;/td&gt;
      &lt;td&gt;Quad-core processor at 2GHz or higher&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;RAM&lt;/td&gt;
      &lt;td&gt;4-8GB or more&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Storage&lt;/td&gt;
      &lt;td&gt;128GB SSD&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Network&lt;/td&gt;
      &lt;td&gt;Gigabit ethernet&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Architecture matters as well. While ARM processors (like those in Raspberry Pis) are energy-efficient and affordable, x86-64 processors offer better compatibility with add-ons and a generally superior performance. If you plan to run resource-intensive add-ons, such as Frigate for AI-powered camera detection or multiple database systems, you will also need more powerful hardware.&lt;/p&gt;

&lt;h2 id="home-assistant-hardware-options"&gt;Home Assistant hardware options&lt;/h2&gt;

&lt;h4 id="raspberry-pi"&gt;Raspberry Pi&lt;/h4&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/2Xt8UDF4CoKyeWGN8HP9XG/6c4f7395b5da03fb24681cec4dbf2548/Screenshot_2025-11-10_at_10.52.09â__PM.png" alt="Raspberry Pi" /&gt;&lt;/p&gt;

&lt;p&gt;The Raspberry Pi is the poster child for affordable computing and is a popular choice for Home Assistant beginners. Here’s what you need to know:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Model:&lt;/strong&gt; While it’s tempting to go for older, cheaper models, you’ll want at least a Raspberry Pi 3B. The 3B offers a good balance between cost and capability. However, if you can stretch your budget a bit, the Raspberry Pi 4 is even better, boasting faster processing and more RAM.The Raspberry Pi 5 has a 2.4GHz processor and improved I/O and can support NVMe storage with HAT adapters.&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Power Supply:&lt;/strong&gt; Ensure you have a reliable 5V/2.5A micro USB power supply for the Pi 3B and a USB-C power supply for the Pi 4. A stable power source prevents unexpected shutdowns and potential data corruption.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Heat Management:&lt;/strong&gt; Raspberry Pis can get hot, especially when running continuously. Consider adding a heat sink or a fan to keep temperatures in check.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id="odroid"&gt;Odroid&lt;/h4&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/4L1XFvwDghNleHYNbBH6sW/8880d43c880a18db48a13f21c321fca9/Screenshot_2025-11-10_at_11.15.33â__PM.png" alt="Odroid" /&gt;&lt;/p&gt;

&lt;p&gt;Odroid single-board computers from Hardkernel offer a compelling middle ground between Raspberry Pi and full x86 systems. While less well-known, these Korean-made boards deliver superior performance and built-in eMMC storage for Home Assistant deployments.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Odroid-N2+:&lt;/strong&gt; The flagship ARM board and top choice for demanding setups. Features a hexa-core processor (significantly faster than any Raspberry Pi), 2GB or 4GB RAM options, and built-in eMMC storage. Excellent thermal design keeps it stable under continuous load. Ideal for running resource-intensive add-ons like Frigate or managing 100+ devices.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Odroid-M1:&lt;/strong&gt; The modern all-rounder with native M.2 NVMe slot (no adapters needed) and dual SATA ports for traditional drives. Available with 4GB or 8GB DDR4 RAM. Choose this if you prioritize storage flexibility and reliability. The quad-core RK3568 processor is efficient but less powerful than the N2+.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Odroid-C4:&lt;/strong&gt; The Raspberry Pi alternative with a similar form factor but better reliability. Quad-core processor with 4GB RAM and eMMC support. Works well for mid-sized setups (50-75 devices) where you want better stability than Pi without the N2+ price tag.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Odroid-H3:&lt;/strong&gt; The x86 option with Intel Celeron processor, dual M.2 slots, dual SATA ports, and support for up to 64GB RAM. Perfect for virtualization or when you need x86 compatibility.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id="nuc"&gt;NUC&lt;/h4&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/1UmbfHhxEpGT4z6iyseRcV/4656ca7c8cc288815b6aabdfd0cf0ed4/Screenshot_2025-11-10_at_11.17.25â__PM.png" alt="NUC" /&gt;&lt;/p&gt;

&lt;p&gt;If you’re thinking long-term and want a device that’s both compact and powerful, the Intel NUC might be your pick. Here’s a quick rundown:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Versatility:&lt;/strong&gt; The Intel NUC series offers a range of configurations, from energy-efficient dual-core models to quad-core powerhouses. This means you can pick one that fits your needs and budget.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Expandability:&lt;/strong&gt; Unlike the Raspberry Pi and Odroid-N2, the Intel NUC allows for upgrades. Whether it’s RAM or storage, you can expand as your Home Assistant setup grows.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Connectivity:&lt;/strong&gt; With multiple USB ports, HDMI outputs, and even Ethernet, the Intel NUC ensures you’re always connected.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id="home-assistant-green"&gt;Home Assistant Green&lt;/h4&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/7hQjSG4x4YEVo8XRBOGUDW/05925b7a137a34ba63fe9f4cae096dbf/Screenshot_2025-11-10_at_10.58.29â__PM.png" alt="HA Green" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.home-assistant.io/green"&gt;Home Assistant Green&lt;/a&gt; is the official entry-level hardware, designed specifically for beginners starting with Home Assistant. Built around a Raspberry Pi Compute Module 4, it offers:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Pre-installed Home Assistant OS&lt;/li&gt;
  &lt;li&gt;32GB eMMC storage (more reliable than SD cards)&lt;/li&gt;
  &lt;li&gt;Built-in Zigbee coordinator&lt;/li&gt;
  &lt;li&gt;Compact, fanless design&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Green is perfect for apartments or smaller homes with up to 50 devices. Its integrated Zigbee radio means one less USB device to manage, and the pre-installation eliminates setup complexity.&lt;/p&gt;

&lt;h4 id="home-assistant-yellow"&gt;Home Assistant Yellow&lt;/h4&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/5JUxsTwZRzrl10d5Miocgq/14a9efcfb6e2b986530c1e750fdcb3f5/Screenshot_2025-11-10_at_10.58.35â__PM.png" alt="HA Yellow" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.home-assistant.io/yellow"&gt;Yellow&lt;/a&gt; targets enthusiasts who want official hardware with expansion capability:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Raspberry Pi Compute Module 4 (user-supplied)&lt;/li&gt;
  &lt;li&gt;M.2 slot for NVMe storage&lt;/li&gt;
  &lt;li&gt;Built-in Zigbee radio with external antenna&lt;/li&gt;
  &lt;li&gt;Power over Ethernet option&lt;/li&gt;
  &lt;li&gt;GPIO expansion headers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Yellow’s modular design lets you choose your CM4 variant based on needs and budget. The NVMe support ensures long-term reliability, while PoE capability enables clean installations without wall adapters.&lt;/p&gt;

&lt;h2 id="home-assistant-storage-deep-dive"&gt;Home Assistant storage deep dive&lt;/h2&gt;

&lt;p&gt;Storage can often be an afterthought in a smart home installation, with the temptation to choose the cheapest per-gigabyte option. But making a poor choice in storage can lead to all sorts of problems with regard to the usability and reliability of your Home Assistant setup. In this section, we’ll look at some of the options and general best practices for storage.&lt;/p&gt;

&lt;h4 id="sd-cards"&gt;SD Cards&lt;/h4&gt;

&lt;p&gt;The traditional Pi storage medium is also its biggest weakness. Even high-endurance cards like SanDisk Extreme or Samsung Endurance eventually fail from constant writes. If you must use SD cards:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Buy high-endurance models rated for dashcams/surveillance&lt;/li&gt;
  &lt;li&gt;Implement aggressive recorder purging&lt;/li&gt;
  &lt;li&gt;Take regular backups&lt;/li&gt;
  &lt;li&gt;Plan for eventual failure&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id="ssds"&gt;SSDs&lt;/h4&gt;

&lt;p&gt;SSDs are the gold standard for Home Assistant storage:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;SATA SSDs provide excellent reliability and sufficient speed for all Home Assistant needs&lt;/li&gt;
  &lt;li&gt;NVMe drives offer peak performance but are overkill for most setups&lt;/li&gt;
  &lt;li&gt;Even budget SSDs vastly outperform SD cards in reliability
External storage via USB 3.0 works well for Raspberry Pi users. USB-to-SATA adapters with SSDs provide near-native performance with better reliability than SD cards.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id="backup-strategies"&gt;Backup Strategies&lt;/h4&gt;

&lt;p&gt;Backups are insurance against the inevitable hardware failure, corrupted SD card, or configuration mistake that breaks everything. The question isn’t whether you’ll need a backup, but when. A comprehensive backup strategy means the difference between restoring your smart home in minutes versus spending days rebuilding automations from memory. Let’s look at some options for creating backups with Home Assistant with increased levels of maturity.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Local backups: As a starting point, Home Assistant has automatic backup functionality built in that you can use to create snapshots on a set schedule. This allows you to roll back changes that break things like integrations or automations.&lt;/li&gt;
  &lt;li&gt;Network storage: The next step is moving your backups off the device running Home Assistant in case your hardware fails. Network-attached storage on your local network is a common strategy.&lt;/li&gt;
  &lt;li&gt;Cloud backups: The best option for backing up your data is to use cloud storage services to guarantee you can restore your system even if your entire local system fails. A combination of retention policies and scheduled backups can help reduce storage costs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id="database-management"&gt;Database Management&lt;/h4&gt;

&lt;p&gt;Home Assistant’s default SQLite database works well for small installations but can become a bottleneck for certain use cases. If you plan to do analytics on your data or store it long term, you’ll want to use a dedicated database like &lt;a href="https://www.influxdata.com/products/influxdb/?utm_source=website&amp;amp;utm_medium=home_assistant_hardware_recommendations&amp;amp;utm_content=blog"&gt;InfluxDB&lt;/a&gt;. InfluxDB is designed to store the types of data commonly found in Home Assistant installations and is &lt;a href="https://www.home-assistant.io/integrations/influxdb/"&gt;one of the most popular integrations&lt;/a&gt; in the Home Assistant ecosystem.&lt;/p&gt;

&lt;h2 id="power-and-reliability"&gt;Power and reliability&lt;/h2&gt;

&lt;p&gt;Your smart home should work when you need it most. A UPS ensures operation during power outages or surges. To determine how large your UPS needs to be, you’ll want to calculate the power draw of the hardware you want to keep running and size it for at least 30 minutes of operation.
For critical applications, consider the following redundancy strategies:&lt;/p&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;High availability&lt;/td&gt;
      &lt;td&gt;Home Assistant supports active/passive clustering, but requires careful planning and identical hardware.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Cold standby&lt;/td&gt;
      &lt;td&gt;Maintain a second, identical system with regular backup restoration tests. Switch manually during failures.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Hybrid&lt;/td&gt;
      &lt;td&gt;Run critical automations on dedicated hardware (like Hubitat or Shelly devices) with Home Assistant providing the interface and advanced logic.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id="how-to-choose-the-right-hardware"&gt;How to choose the right hardware&lt;/h2&gt;

&lt;p&gt;Choosing the proper hardware for your Home Assistant setup isn’t just about meeting the minimum requirements, it’s about aligning those requirements with your specific needs.  To recap everything covered in this blog, here is what you should keep in mind:&lt;/p&gt;

&lt;h4 id="assess-your-needs"&gt;Assess Your Needs&lt;/h4&gt;

&lt;p&gt;Start by considering how you’ll use Home Assistant. Will it be a small setup with a few devices, or are you planning an extensive smart home system? The more complex your setup, the more powerful hardware you’ll need.&lt;/p&gt;

&lt;h4 id="plan-a-budget"&gt;Plan a Budget&lt;/h4&gt;
&lt;p&gt;Budget plays a crucial role. Raspberry Pi is your go-to for a budget-friendly setup. Intel NUC or a dedicated server could be better options for a more extensive system, but they will be pricier.&lt;/p&gt;

&lt;h4 id="scalability"&gt;Scalability&lt;/h4&gt;
&lt;p&gt;Think long-term. Your smart home will likely grow, so choose hardware that can accommodate future expansions.&lt;/p&gt;

&lt;h4 id="compatible-devices"&gt;Compatible Devices&lt;/h4&gt;
&lt;p&gt;Make sure to check compatibility. Home Assistant works with thousands of devices, from lights and thermostats to speakers and cameras. Compatibility shouldn’t be a significant concern, but it’s always good to double check.&lt;/p&gt;

&lt;h2 id="additional-resources"&gt;Additional resources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://www.influxdata.com/blog/getting-started-home-assistant-webhooks/?utm_source=website&amp;amp;utm_medium=home_assistant_hardware_recommendations&amp;amp;utm_content=blog"&gt;Home Assistant webhooks tutorial&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://www.influxdata.com/blog/getting-started-home-assistant-docker/?utm_source=website&amp;amp;utm_medium=home_assistant_hardware_recommendations&amp;amp;utm_content=blog"&gt;Getting started with Home Assistant and Docker&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://www.influxdata.com/blog/how-integrate-gafana-home-assistant/?utm_source=website&amp;amp;utm_medium=home_assistant_hardware_recommendations&amp;amp;utm_content=blog"&gt;Home Assistant and Grafana tutorial&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://www.influxdata.com/blog/node-red-dashboard-tutorial/?utm_source=website&amp;amp;utm_medium=home_assistant_hardware_recommendations&amp;amp;utm_content=blog"&gt;Node Red dashboard tutorial&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://www.influxdata.com/blog/iot-easy-node-red-influxdb/?utm_source=website&amp;amp;utm_medium=home_assistant_hardware_recommendations&amp;amp;utm_content=blog"&gt;Node Red for IoT&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="faqs"&gt;FAQs&lt;/h2&gt;

&lt;div id="accordion_second"&gt;
    &lt;article class="message"&gt;
                    &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-1"&gt;
                      &lt;div class="message-header"&gt;
                        &lt;p&gt;How do I know if my hardware is powerful enough?&lt;/p&gt;
                        &lt;span class="icon"&gt;
                            &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                        &lt;/span&gt;
                    &lt;/div&gt;&lt;/a&gt;
                    &lt;div id="collapsible-message-accordion-second-1" class="message-body is-collapsible is-active" data-parent="accordion_second" data-allow-multiple="true"&gt;
                        &lt;div class="message-body-content"&gt;
                            Monitor your system metrics. If CPU regularly exceeds 50%, RAM usage stays above 80%, or automations feel sluggish, it's time to upgrade. The System Monitor integration provides detailed metrics.
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/article&gt;

                &lt;article class="message"&gt;
                    &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-2"&gt;
                      &lt;div class="message-header"&gt;
                        &lt;p&gt;What about running Home Assistant on Windows?&lt;/p&gt;
                        &lt;span class="icon"&gt;
                            &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                        &lt;/span&gt;
                    &lt;/div&gt;&lt;/a&gt;
                    &lt;div id="collapsible-message-accordion-second-2" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
                        &lt;div class="message-body-content"&gt;
                            While possible via VirtualBox or WSL2, it's not recommended for production use. Linux-based installations (including Home Assistant OS) provide better stability and performance.
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/article&gt;

                &lt;article class="message"&gt;
                    &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-3"&gt;
                      &lt;div class="message-header"&gt;
                        &lt;p&gt;Which hardware is best for Home Assistant?&lt;/p&gt;
                        &lt;span class="icon"&gt;
                            &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                        &lt;/span&gt;
                    &lt;/div&gt;&lt;/a&gt;
                    &lt;div id="collapsible-message-accordion-second-3" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
                        &lt;div class="message-body-content"&gt;
                            The "best" hardware depends on your specific needs and budget. For small setups, a Raspberry Pi 4 is excellent. For more extensive systems, consider an Intel NUC.
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/article&gt;

                &lt;article class="message"&gt;
                    &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-4"&gt;
                      &lt;div class="message-header"&gt;
                        &lt;p&gt;What hardware is needed for Home Assistant 2025?&lt;/p&gt;
                        &lt;span class="icon"&gt;
                            &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                        &lt;/span&gt;
                    &lt;/div&gt;&lt;/a&gt;
                    &lt;div id="collapsible-message-accordion-second-4" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
                        &lt;div class="message-body-content"&gt;
                            A Raspberry Pi 3B or higher, Odroid-N2, or an old laptop with at least 2GB of RAM will work for running a basic Home Assistant installation.
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/article&gt;

                &lt;article class="message"&gt;
                    &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-5"&gt;
                      &lt;div class="message-header"&gt;
                        &lt;p&gt;How much RAM do I need for Home Assistant hardware?&lt;/p&gt;
                        &lt;span class="icon"&gt;
                            &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                        &lt;/span&gt;
                    &lt;/div&gt;&lt;/a&gt;
                    &lt;div id="collapsible-message-accordion-second-5" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
                        &lt;div class="message-body-content"&gt;
                            A minimum of 2GB RAM is recommended for a basic setup. If you plan on running multiple add-ons and &lt;a href="https://www.influxdata.com/blog/9-home-assistant-integrations-how-use-them/?utm_source=website&amp;amp;utm_medium=home_assistant_hardware_recommendations&amp;amp;utm_content=blog"&gt;integrations&lt;/a&gt;, consider 4GB or more.
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/article&gt;

                &lt;article class="message"&gt;
                    &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-6"&gt;
                      &lt;div class="message-header"&gt;
                        &lt;p&gt;Is the Raspberry Pi 5 worth upgrading to from a Pi 4?&lt;/p&gt;
                        &lt;span class="icon"&gt;
                            &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                        &lt;/span&gt;
                    &lt;/div&gt;&lt;/a&gt;
                    &lt;div id="collapsible-message-accordion-second-6" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
                        &lt;div class="message-body-content"&gt;
                            For most users, no. The Pi 4 remains highly capable for Home Assistant. Upgrade to Pi 5 if you need PCIe storage, run many add-ons, or your Pi 4 shows performance issues.
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/article&gt;

                &lt;article class="message"&gt;
                    &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-7"&gt;
                      &lt;div class="message-header"&gt;
                        &lt;p&gt;Can I run Home Assistant on my existing NAS?&lt;/p&gt;
                        &lt;span class="icon"&gt;
                            &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                        &lt;/span&gt;
                    &lt;/div&gt;&lt;/a&gt;
                    &lt;div id="collapsible-message-accordion-second-7" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
                        &lt;div class="message-body-content"&gt;
                            Yes, if your NAS supports Docker or virtual machines. Synology, QNAP, and Unraid users report good success. However, dedicated hardware often provides better performance and stability.
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/article&gt;

                &lt;article class="message"&gt;
                    &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-8"&gt;
                      &lt;div class="message-header"&gt;
                        &lt;p&gt;Can I use a laptop as my Home Assistant server?&lt;/p&gt;
                        &lt;span class="icon"&gt;
                            &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                        &lt;/span&gt;
                    &lt;/div&gt;&lt;/a&gt;
                    &lt;div id="collapsible-message-accordion-second-8" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
                        &lt;div class="message-body-content"&gt;
                            Old laptops make decent Home Assistant servers. Benefits include built-in battery backup and integrated screens. Downsides include higher power consumption and potential thermal issues.
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/article&gt;
&lt;/div&gt;
</description>
      <pubDate>Thu, 11 Dec 2025 08:00:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/home-assistant-hardware-recommendations/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/home-assistant-hardware-recommendations/</guid>
      <category>Developer</category>
      <author>Community (InfluxData)</author>
    </item>
    <item>
      <title>9 Home Assistant Integrations You Should Be Using in 2026</title>
      <description>&lt;p&gt;With the advent of automation and smart devices, the adoption of home automation has increased.&lt;/p&gt;

&lt;p&gt;The number of smart home users is projected to soar by about &lt;a href="https://www.statista.com/forecasts/887613/number-of-smart-homes-in-the-smart-home-market-in-the-world"&gt;86.5% between 2023 and 2027&lt;/a&gt;. Managing a smart home can get complicated, especially when dealing with multiple devices and platforms that don’t work together seamlessly. Navigating different interfaces and apps to control and monitor your devices can be time-consuming and confusing. Many of these devices and applications will also be generating time series data that you can utilize in a number of ways to make your Home Assistant more efficient and reliable while also enabling powerful automation.&lt;/p&gt;

&lt;p&gt;However, Home Assistant integrations provide a powerful and flexible solution to these problems by allowing you to connect and control a wide range of smart home devices and platforms from a single interface.&lt;/p&gt;

&lt;p&gt;This post will introduce you to Home Assistant and list nine Home Assistant integrations alongside ideas about how to use them. You will also learn how you can use these integrations with time series databases like InfluxDB to maximize the utility of your Home Assistant installation.
&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/ba833dfecd3a49f789a37a631184187f/ceb891d8b41860a3338dda3d50eb10fb/unnamed.jpg" alt="" /&gt;&lt;/p&gt;

&lt;h2 id="what-is-home-assistant"&gt;&lt;strong&gt;What is Home Assistant?&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.home-assistant.io/"&gt;Home Assistant&lt;/a&gt; is an open source home automation platform for smart home devices and services. It allows you to control and automate a wide range of devices from a single interface, including lights, thermostats, cameras, and sensors.&lt;/p&gt;

&lt;p&gt;With Home Assistant, you can create custom automation based on your needs. Custom automation can be triggered by various aspects, such as weather conditions or time of day.&lt;/p&gt;

&lt;p&gt;Home Assistant can be installed on different devices and operating systems, including Raspberry Pi, macOS, Windows, and Linux. Additionally, you can integrate third-party services and platforms like Google Assistant.&lt;/p&gt;

&lt;p&gt;You can also use community-developed add-ons that extend Home Assistant’s functionalities, giving you a robust home automation experience. &lt;u&gt;&lt;/u&gt;&lt;/p&gt;

&lt;h2 id="what-are-home-assistant-integrations"&gt;What are Home Assistant integrations?&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.home-assistant.io/integrations/"&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/79b73bdfd19140fc81ff185bf0f68383/6389e9b0e22f5db961b6b040c28b26ac/unnamed.png" alt="" /&gt;&lt;/a&gt; 
&lt;a href="https://www.home-assistant.io/integrations/"&gt;Home Assistant integrations&lt;/a&gt; are add-ons or plugins that allow Home Assistant to communicate with other devices or services, such as smart home devices, platforms, and protocols. These tools make Home Assistant a powerful and flexible home automation platform.&lt;/p&gt;

&lt;p&gt;Home Assistant has over 2,000 built-in integrations that cover a wide range of smart home devices and services, such as lights, switches, thermostats, sensors, media players, and more.&lt;/p&gt;

&lt;p&gt;The Home Assistant community typically develops integrations that are open source and free to use. &lt;u&gt;&lt;/u&gt;&lt;/p&gt;

&lt;h2 id="imagesctfassetsneto7xu9whrs0u9f09e3ec2d22f496d838faf2a55c5f7e42f8d940ef87462ba6313fb4f7e9766d9unnamedpng"&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/f09e3ec2d22f496d838faf2a55c5f7e4/2f8d940ef87462ba6313fb4f7e9766d9/unnamed.png" alt="" /&gt;&lt;/h2&gt;

&lt;h2 id="pairing-home-assistant-with-a-time-series-database"&gt;Pairing Home Assistant with a time series database&lt;/h2&gt;

&lt;p&gt;Home Assistant provides a recorder integration that can be used for short-term logging and data storage, but this solution will become inefficient as you increase the amount of data you are storing or if you want to analyze your long-term data. A time series database is designed to handle large amounts of data from sensors, switches, thermostats, and other IoT devices. This enables you to monitor changes, identify patterns, and retain historical data far beyond what Home Assistant typically allows.&lt;/p&gt;

&lt;p&gt;Beyond just storage, the integration of a time series database allows you to pair Home Assistant with visualization tools like &lt;a href="https://grafana.com/"&gt;Grafana&lt;/a&gt; to create intuitive dashboards and graphs. These dashboards offer deep insights into your smart home’s performance, including tracking energy consumption by device, monitoring temperature trends by room, and visualizing motion detection over time. This level of visibility empowers smarter decision-making and can even improve automation logic—for example, adjusting HVAC settings based on seasonal data or optimizing device usage during peak hours. Ultimately, a time series database turns Home Assistant from a reactive automation tool into a proactive, data-driven smart home hub.&lt;/p&gt;

&lt;h2 id="adding-integrations-to-home-assistant"&gt;Adding integrations to Home Assistant&lt;/h2&gt;

&lt;p&gt;To use an integration in Home Assistant, you need to install and configure it in the Home Assistant configuration file. The configuration process can vary depending on the integration but typically involves providing configuration details, such as credentials, API keys, or device IDs.&lt;/p&gt;

&lt;p&gt;Once you’ve set up the integration, you can use Home Assistant to control and monitor the associated devices and services, create automation routines, and receive notifications and alerts.&lt;/p&gt;

&lt;p&gt;You can access and manage integrations from the Home Assistant user interface. Depending on your needs, this makes adding, removing, and configuring integrations easy.&lt;/p&gt;

&lt;h2 id="popular-home-assistant-integrations"&gt;9 popular Home Assistant integrations&lt;/h2&gt;

&lt;p&gt;Below is a list of nine popular integrations you can add to your Home Assistant.&lt;/p&gt;

&lt;h4 id="weather-integration"&gt;1. Weather Integration&lt;/h4&gt;

&lt;p&gt;The &lt;a href="https://www.home-assistant.io/integrations/weather/"&gt;Weather integration&lt;/a&gt; in Home Assistant provides real-time weather data directly within your dashboard. By setting up your location, you can access current conditions, hourly forecasts, and extended outlooks.&lt;/p&gt;

&lt;p&gt;Use this data to trigger weather-based automation, such as adjusting your thermostat when temperatures drop or notifying you of incoming storms. Multiple providers are supported, including OpenWeatherMap, AccuWeather, and the National Weather Service.&lt;/p&gt;

&lt;h4 id="z-wave-integration"&gt;2. Z-Wave Integration&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://www.home-assistant.io/integrations/zwave_js/"&gt;Z-Wave&lt;/a&gt; is a low-power wireless protocol designed specifically for smart home automation. Home Assistant’s Z-Wave JS integration allows you to add and control a wide variety of Z-Wave devices like lights, locks, sensors, and switches.&lt;/p&gt;

&lt;p&gt;You’ll need a compatible Z-Wave USB stick or hub to get started. Once configured, you can include Z-Wave devices in automation, scenes, and routines—all managed locally and securely from Home Assistant.&lt;/p&gt;

&lt;h4 id="homekit-integration"&gt;3. HomeKit Integration&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://www.home-assistant.io/integrations/homekit/"&gt;HomeKit&lt;/a&gt; is an Apple framework that allows you to control smart home devices using your Apple products.&lt;/p&gt;

&lt;p&gt;The HomeKit integration connects your Home Assistant devices to your HomeKit ecosystem. To use this integration, you’ll need a HomeKit-enabled device, such as an iPhone or iPad, and the HomeKit integration set up in Home Assistant.&lt;/p&gt;

&lt;p&gt;Once you’ve set up the integration, you can use your Apple devices to control your Home Assistant devices, such as turning on the lights or adjusting the thermostat. &lt;u&gt;&lt;/u&gt;&lt;/p&gt;

&lt;h4 id="google-assistant-integration"&gt;4. Google Assistant Integration&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://www.home-assistant.io/integrations/google_assistant/"&gt;Google Assistant&lt;/a&gt; is a virtual assistant by Google that can control smart home devices.&lt;/p&gt;

&lt;p&gt;You’ll need a Google Assistant-enabled device, such as a Google Home or a smartphone with the Google Assistant app, to use this integration.&lt;/p&gt;

&lt;p&gt;Once you’ve set up the integration, you can use voice commands to control your Home Assistant devices, such as turning on the lights or adjusting the thermostat. &lt;u&gt;&lt;/u&gt;&lt;/p&gt;

&lt;h4 id="mqtt-integration"&gt;5. MQTT Integration&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://www.home-assistant.io/integrations/mqtt/"&gt;MQTT&lt;/a&gt; (Message Queuing Telemetry Transport) is a lightweight, publish-subscribe protocol widely used in IoT systems. Home Assistant’s MQTT integration allows you to connect to a broker and communicate with DIY devices, microcontrollers, and third-party systems.&lt;/p&gt;

&lt;p&gt;By configuring an MQTT broker (like Mosquitto), you can send and receive data from sensors, switches, and custom automation. This integration is ideal for advanced users looking to create a fully customized smart home environment.&lt;/p&gt;

&lt;h4 id="philips-hue-integration"&gt;6. Philips Hue Integration&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://www.home-assistant.io/integrations/hue/"&gt;Philips Hue&lt;/a&gt; is a smart lighting system that can be controlled with Home Assistant. To use this integration, you’ll need a Philips Hue bridge and some Philips Hue lights.&lt;/p&gt;

&lt;p&gt;Once you’ve set up your Hue lights and bridge, you can use Home Assistant to turn your lights on and off, change their color and brightness, and create automation routines. For example, you can set an evening routine in which your lights are set to a warmer hue. &lt;u&gt;&lt;/u&gt;&lt;/p&gt;

&lt;h4 id="sonos-integration"&gt;7. Sonos Integration&lt;/h4&gt;

&lt;p&gt;The &lt;a href="https://www.home-assistant.io/integrations/sonos/"&gt;Sonos integration&lt;/a&gt; lets you control your Sonos speakers from within Home Assistant. Play music, adjust volume, group speakers, or trigger playback based on motion or time-based automation.&lt;/p&gt;

&lt;p&gt;With this integration, your Sonos ecosystem becomes a fully interactive part of your smart home, letting you sync music to lights, play alerts for door sensors, or announce weather updates in the morning.&lt;/p&gt;

&lt;h4 id="google-nest-integration"&gt;8. Google Nest Integration&lt;/h4&gt;

&lt;p&gt;The &lt;a href="https://www.home-assistant.io/integrations/nest/"&gt;Google Nest integration&lt;/a&gt; brings support for Nest thermostats, cameras, and doorbells into Home Assistant. After completing the account linking process, you can view live streams, adjust temperatures, or trigger automation based on motion or temperature events.&lt;/p&gt;

&lt;p&gt;For example, set the thermostat to eco mode when no one is home or get notified if the doorbell camera detects motion after dark. It’s a powerful way to integrate your Nest devices into a broader automation ecosystem.&lt;/p&gt;

&lt;h4 id="tasmota-integration"&gt;9. Tasmota Integration&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://www.home-assistant.io/integrations/tasmota/"&gt;Tasmota&lt;/a&gt; is open-source firmware for ESP8266/ESP32-based smart devices, often used to replace proprietary firmware on switches, plugs, and relays. Home Assistant’s Tasmota integration allows you to discover and manage these devices automatically.&lt;/p&gt;

&lt;p&gt;Using MQTT or HTTP protocols, Tasmota devices can be easily controlled, monitored, and included in automation routines. This is a great option for privacy-conscious users who want reliable local control without depending on cloud services.&lt;/p&gt;

&lt;h2 id="why-should-you-use-influxdb-with-home-assistant"&gt;Why should you use InfluxDB with Home Assistant?&lt;/h2&gt;

&lt;p&gt;When you use &lt;a href="https://www.influxdata.com/products/influxdb/"&gt;InfluxDB with Home Assistant&lt;/a&gt;, you can collect, persist, analyze, and visualize data from your smart home devices over time. &lt;strong&gt;InfluxDB is the most popular database for Home Assistant&lt;/strong&gt;, with over 7% of Home Assistant users installing the InfluxDB integration.&lt;/p&gt;

&lt;p&gt;With the introduction of InfluxDB 3, the database has been completely reengineered to meet the modern demands of IoT and real-time analytics. It now supports high-ingest workloads, millisecond-level query responses, and object storage-based durability, making it ideal for smart home environments where large volumes of sensor data are continuously generated. InfluxDB 3’s new SQL-based query engine and native support for Parquet format also enable deeper, more complex queries for users who want to explore patterns or build advanced automations. InfluxDB 3 also includes a built-in Python engine that allows you to transform, process, and take action on your data without requiring external tools.&lt;/p&gt;

&lt;p&gt;This architecture ensures that you can run &lt;a href="https://www.influxdata.com/products/influxdb/?utm_source=website&amp;amp;utm_medium=direct&amp;amp;utm_campaign=9_home_assistant_integrations_how_use_them&amp;amp;utm_content=blog"&gt;InfluxDB Core&lt;/a&gt; on affordable local hardware for a single home setup—or scale to cloud or hybrid deployments with &lt;a href="https://www.influxdata.com/products/influxdb-3-enterprise/?utm_source=website&amp;amp;utm_medium=direct&amp;amp;utm_campaign=9_home_assistant_integrations_how_use_them&amp;amp;utm_content=blog"&gt;InfluxDB 3 Enterprise&lt;/a&gt; for larger or multi-site installations.
&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/0052d802278741c9926bbeb06805f97e/4e9157cf2dd032633fe6d6d86933069b/unnamed.png" alt="" /&gt;
&lt;a href="https://docs.influxdata.com/influxdb3/core/get-started/?utm_source=website&amp;amp;utm_medium=direct&amp;amp;utm_campaign=9_home_assistant_integrations_how_use_them&amp;amp;utm_content=blog"&gt;Installing the InfluxDB&lt;/a&gt; integration in Home Assistant is straightforward:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Add your instance configuration to the YAML configuration file.&lt;/li&gt;
  &lt;li&gt;Define which entities or domains should report data to InfluxDB.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;From there, you can easily forward information from devices like thermostats, humidity sensors, or energy meters—building a rich historical database of your smart home activity. With this dataset, you can create Grafana dashboards, optimize automation, detect anomalies, and gain long-term insights that wouldn’t be possible with Home Assistant’s default recorder.&lt;/p&gt;

&lt;h2 id="next-steps-and-additional-resources"&gt;Next steps and additional resources&lt;/h2&gt;

&lt;p&gt;Home Assistant is a powerful and flexible platform for managing and automating smart home devices and services. Its integrations cover a wide range of smart home devices and services, including lights, switches, thermostats, sensors, and media players.&lt;/p&gt;

&lt;p&gt;Using Home Assistant integrations, you can streamline your home automation setup, reduce complexity and frustration, and gain more control and visibility into your smart home devices and services.&lt;/p&gt;

&lt;p&gt;With Home Assistant and &lt;a href="https://www.influxdata.com/?utm_source=website&amp;amp;utm_medium=direct&amp;amp;utm_campaign=9_home_assistant_integrations_how_use_them&amp;amp;utm_content=blog"&gt;InfluxDB&lt;/a&gt;, you can take your home automation to the next level and create a brilliant and efficient living environment.&lt;/p&gt;

&lt;p&gt;Here are some additional tutorials showing how you can use Home Assistant:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://www.influxdata.com/blog/getting-started-home-assistant-node-red-tutorial-influxdb/?utm_source=website&amp;amp;utm_medium=direct&amp;amp;utm_campaign=9_home_assistant_integrations_how_use_them&amp;amp;utm_content=blog"&gt;Getting Started with Home Assistant and Node-Red&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://www.influxdata.com/blog/home-assistant-tutorial-beginners-guide-automation-influxdb/?utm_source=website&amp;amp;utm_medium=direct&amp;amp;utm_campaign=9_home_assistant_integrations_how_use_them&amp;amp;utm_content=blog"&gt;Home Assistant Getting Started tutorial&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://www.influxdata.com/blog/home-assistant-hardware-requirements-and-recommendations/?utm_source=website&amp;amp;utm_medium=direct&amp;amp;utm_campaign=9_home_assistant_integrations_how_use_them&amp;amp;utm_content=blog"&gt;Home Assistant Hardware Requirements and Recommendations&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://www.influxdata.com/blog/getting-started-home-assistant-webhooks/?utm_source=website&amp;amp;utm_medium=direct&amp;amp;utm_campaign=9_home_assistant_integrations_how_use_them&amp;amp;utm_content=blog"&gt;Home Assistant Webhooks tutorial&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://www.influxdata.com/blog/getting-started-home-assistant-docker/?utm_source=website&amp;amp;utm_medium=direct&amp;amp;utm_campaign=9_home_assistant_integrations_how_use_them&amp;amp;utm_content=blog"&gt;Home Assistant and Docker tutorial&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://www.influxdata.com/blog/how-integrate-gafana-home-assistant/?utm_source=website&amp;amp;utm_medium=direct&amp;amp;utm_campaign=9_home_assistant_integrations_how_use_them&amp;amp;utm_content=blog"&gt;Grafana and Home Assistant tutorial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="home-assistant-integration-faqs"&gt;Home Assistant integration FAQs&lt;/h2&gt;

&lt;div id="accordion_second"&gt;
    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-1"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;How do I add a new integration in Home Assistant?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-1" class="message-body is-collapsible is-active" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Integrations can be added to Home Assistant using the UI or the YAML configuration file. In the UI, you navigate to settings, then devices and services, and finally, the Add Integration section, where you can search for your desired integration. For certain advanced integrations, you will need to use YAML to set your configuration parameters.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;
    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-2"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What's the difference between using InfluxDB and the Home Assistant recorder?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-2" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                The built-in Home Assistant recorder uses SQLite or other configured databases to store and retain data for a limited time at set intervals. InfluxDB scales better for larger datasets, offers faster query performance, and allows for easy creation of retention and downsampling policies.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;
    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-3"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What can I do with Home Assistant data stored in InfluxDB?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-3" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                With InfluxDB, you can build monitoring dashboards with Grafana, analyze historical trends in your data, detect anomalies in the activity of your devices, and create automated alerts based on your data.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;
    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-4"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;Do I need coding skills to use Home Assistant integrations?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-4" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Most integrations do not require coding, and Home Assistant's user interface makes it easy to add and manage them. However, some custom or community integrations may require light YAML editing or command-line usage.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;
    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-5"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;Can Google Assistant or Amazon Alexa be used with Home Assistant?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-5" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Home Assistant supports both Google Assistant and Amazon Alexa integrations. These allow you to control your smart devices with voice commands by linking your Home Assistant instance with your Voice Assistant account.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;
    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-6"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What devices are compatible with Home Assistant?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-6" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Thousands of devices are compatible with Home Assistant, via direct integrations or common communication protocols like MQTT or Matter. Examples include smart lights, smart thermostats, switches and outlets, security systems, and various monitors or sensors.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;
    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-7"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;Can Home Assistant work without an internet connection?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-7" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Home Assistant is designed to run locally, meaning it works even if your internet goes down. This ensures faster response times, increased reliability, and better privacy.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;
    &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-8"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;What is the difference between a Home Assistant integration and add-on?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-8" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Integrations connect Home Assistant to devices and services, while add-ons are additional applications like InfluxDB, Node-Red, or Grafana that run alongside Home Assistant.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;

  &lt;article class="message"&gt;
        &lt;a href="javascript:void(0)" data-action="collapse" data-target="collapsible-message-accordion-second-9"&gt;
            &lt;div class="message-header"&gt;
                &lt;h3&gt;Can I use Grafana with Home Assistant and InfluxDB?&lt;/h3&gt;
                &lt;span class="icon"&gt;
                    &lt;i class="fas fa-angle-down" aria-hidden="true"&gt;&lt;/i&gt;
                &lt;/span&gt;
            &lt;/div&gt;&lt;/a&gt;
        &lt;div id="collapsible-message-accordion-second-9" class="message-body is-collapsible" data-parent="accordion_second" data-allow-multiple="true"&gt;
            &lt;div class="message-body-content"&gt;
                Yes. Grafana connects directly to InfluxDB to create custom dashboards. Many users visualize trends like temperature, humidity, energy, or device activity over days, weeks, or months using Grafana's powerful charting tools.
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/article&gt;
&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was originally written by Mercy Kibet and later updated by InfluxData staff. &lt;a href="https://hashnode.com/@eiMJay"&gt;Mercy&lt;/a&gt; is a full-stack developer with a knack for learning and writing about new and intriguing tech stacks.&lt;/em&gt;&lt;/p&gt;
</description>
      <pubDate>Thu, 05 Jun 2025 08:00:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/9-home-assistant-integrations-how-use-them/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/9-home-assistant-integrations-how-use-them/</guid>
      <category>Developer</category>
      <author>Community (InfluxData)</author>
    </item>
    <item>
      <title>Getting Started with Home Assistant and Docker</title>
      <description>&lt;p&gt;In this post, we’ll be looking at how to get started with Home Assistant and Docker. First, we’ll look at the prerequisites for getting Docker installed on your system depending on your OS, and run through how to install and run your Home Assistant on Docker using the CLI. Then, we’ll discuss solutions to common issues experienced during the installation process.&lt;/p&gt;

&lt;h2 id="what-is-docker"&gt;What is Docker?&lt;/h2&gt;

&lt;p&gt;Docker is a software platform that allows system administrators and developers to create, deploy, and run applications in containers. In this context, a container is an environment containing all the dependencies, libraries, code, system tools, and more that are required to run a specific application in the host OS. A container is created from an image, which is a template used to define what a container should contain.&lt;/p&gt;

&lt;p&gt;Regardless of your system’s OS and infrastructure, Docker allows you to run any application in a specific environment. Plus, it makes it easy to manage and scale your environments. With Docker, building and deploying your applications become consistent and efficient.&lt;/p&gt;

&lt;h2 id="what-is-home-assistant"&gt;What is Home Assistant?&lt;/h2&gt;

&lt;p&gt;Home Assistant is a flexible platform that allows you to control and automate your home devices, like your cameras, thermostats, lights, and sensors. It’s open source and fully integrated with over 1,000 services and devices, such as Amazon Alexa and Google Assistant. Home Assistant comes with a user-friendly, unified web-based user interface that allows you to create complex automation. Or, in another way, our home devices can also be interacted with using Python scripts via a built-in Python API in Home Assistant called Home Assistant Python API.&lt;/p&gt;

&lt;h2 id="home-assistant-on-docker"&gt;Home Assistant on Docker&lt;/h2&gt;

&lt;p&gt;Docker is a common way of running Home Assistant in a containerized environment. A key advantage of running Home Assistant on Docker is that the software is isolated from the host system and from other containers that might be running on the same host system. Furthermore, it’s very portable and consistent. The software can easily be moved from one host system to another, keeping the container environment completely intact as long as the target system has Docker installed. The ease of deploying your software is also very simple and secure.&lt;/p&gt;

&lt;div class="columns is-vcentered cta-box br-30 my-6 gap-40"&gt;
  &lt;div class="column is-ralative is-8 p-30"&gt;
    &lt;h2 class="text-46 is-navy has-text-weight-bold is-relative m-0 pb-30"&gt;Learn how to use Home Assistant with Grafana and InfluxDB&lt;/h2&gt;
    &lt;a class="button is-gradient is-normal" href="https://www.influxdata.com/blog/how-integrate-gafana-home-assistant/"&gt;Read More&lt;/a&gt;
  &lt;/div&gt;
  &lt;div class="column has-text-right is-ralative" style="overflow: hidden;"&gt;
    &lt;img class="is-hidden-mobile kubo-img" src="//images.ctfassets.net/o7xu9whrs0u9/7E42fAfYRAtZYmEMZhuJh/b0ced10cc75136c51948303b9aa4fdb3/kubo-grey.svg" alt="kubo" itemprop="image" title="kubo" /&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="prerequisites-for-installing-docker"&gt;Prerequisites for installing Docker&lt;/h2&gt;

&lt;p&gt;Depending on your machine’s operating system, your system must meet some minimum requirements.&lt;/p&gt;

&lt;h3 id="windows-10-system-requirements"&gt;Windows 10 system requirements&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Windows 11 64-bit or Windows10 64-bit&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;64-bit processor&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;4 GB or higher system RAM&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additionally, WSL 2 features and BIOS-level hardware virtualization support must be enabled.&lt;/p&gt;

&lt;h3 id="macos-system-requirements"&gt;macOS system requirements&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;macOS version 11 or higher&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;4 GB or higher system RAM&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additionally, make sure the virtualBox below version 4.3.30 is not installed. It’s not compatible with Docker Desktop.&lt;/p&gt;

&lt;h3 id="linux-system-requirements"&gt;Linux system requirements&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;64-bit kernel and CPU&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;KVM virtualization support&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;system init system&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Gnome, MATE, or KDE desktop environment&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;4 GB or higher system RAM&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additionally, ensure that configuration ID mapping is enabled in the user namespaces.&lt;/p&gt;

&lt;h2 id="how-to-install-docker"&gt;How to install Docker&lt;/h2&gt;

&lt;p&gt;To install Docker, you first need to visit the &lt;a href="https://www.docker.com"&gt;Docker website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/4tE4RlFw9wNYAovbfifItP/f6e05acb6ba3d28c5f45afdefe6f0ee1/download-docker.jpg" alt="download-docker" /&gt;&lt;/p&gt;

&lt;p&gt;Now, how to install Docker depends on the OS of your machine. The general steps for installing Docker on Windows, macOS, and Linux are below. You’ll find more information about Docker installation on the &lt;a href="https://www.docker.com/"&gt;official website&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id="windows-installation"&gt;Windows installation&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;On the Docker website, download the Docker Desktop for Windows installer.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Once downloaded, double-click on the downloaded installer to commence Docker installation.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Follow the prompts to complete the installation.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;After successful installation, Docker Desktop will become accessible from your system tray.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="macos-installation"&gt;macOS installation&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;On the Docker website, download the Docker Desktop for Mac installer titled Apple Chip.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Once downloaded, double-click on the downloaded installer to commence Docker installation.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Drag the Docker icon to the Application folder to complete the installation.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;After successful installation, open Docker from the Application folder.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="linux-installation"&gt;Linux installation&lt;/h3&gt;

&lt;p&gt;The process of installing Docker on Linux OSes varies with regard to the distribution or platform. However, for the most part of it, here are the general steps:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;On the Docker website, click on the Docker Desktop for Linux installer.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Follow the instructions regarding which platforms are supported (Ubuntu, Debian, and Fedora).&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;After successful installation, open your application menu and search for Docker Desktop. Select Docker Desktop and start your Docker.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="installing-home-assistant-on-docker"&gt;Installing Home Assistant on Docker&lt;/h2&gt;

&lt;p&gt;There are quite a few ways to install Home Assistant on Docker. We’ll go over a very simple way of installing Home Assistant on Docker, which is by using the CLI on your machine.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;If you’re using Windows, just type &lt;strong&gt;cmd&lt;/strong&gt; into the search bar and click on the command prompt from the search result.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If you’re using Linux, open the application launcher, type &lt;strong&gt;Terminal&lt;/strong&gt; into the search bar, and click on the terminal icon to open the terminal application.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If using macOS, type &lt;strong&gt;Terminal&lt;/strong&gt; into the spotlight search bar. Then click on the terminal app icon from the search results to open the terminal.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now that your terminal is open, all we need to do is to run some Python code to help us install Home Assistant on Docker. Before running the following commands, ensure that your Docker has started running. To do this, open your Docker application.&lt;/p&gt;

&lt;h3 id="step-1-download-the-latest-stable-release-of-home-assistant-container-image-from-docker-hub"&gt;Step 1: Download the latest stable release of Home Assistant container image from Docker Hub&lt;/h3&gt;

&lt;p&gt;First, run the code below in your terminal window:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-bash"&gt;docker pull homeassistant/home-assistant&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The code above is a command to pull the latest stable version of Home Assistant container image from Docker Hub. Docker Hub is a popular container registry for Docker images.&lt;/p&gt;

&lt;p&gt;After running the code, you’ll get the following output:&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/jhUWyhaghGZ1aLnSeElKc/04956ff41292e624ee210ff75dcedf03/docker-home-assistant.png" alt="docker-home-assistant" /&gt;&lt;/p&gt;

&lt;h3 id="step-2-install-and-start-the-home-assistant-container"&gt;Step 2: Install and start the Home Assistant container&lt;/h3&gt;

&lt;p&gt;To install and start the Home Assistant container, run the command below:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-bash"&gt;docker run -d –name = homeassistant -v your_home_directory:/config –net=host homeassistant/home-assistant&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;docker run -d&lt;/strong&gt;: docker run is a run command to launch a container. The &lt;strong&gt;-d&lt;/strong&gt; means that the container will run in a detached mode. In other words, while you’re busy with the terminal, the container runs in the background.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;–name = homeassistant&lt;/strong&gt;: This specifies the name of the container, in this case, &lt;strong&gt;homeassistant&lt;/strong&gt;, which you can use to refer to the container in the Docker commands.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;-v&lt;/strong&gt;: This sets up a volume for the container. This &lt;strong&gt;-v&lt;/strong&gt; flag is followed by the directory where you would like to store your Home Assistant configuration files as well as the container directory. So, I quickly create a new folder named &lt;strong&gt;homeassistant&lt;/strong&gt; in my root directory. In this case, I’ll replace &lt;strong&gt;your_home_directory&lt;/strong&gt; with &lt;strong&gt;C:\homeassistant&lt;/strong&gt;. At the end of the day, the complete directory after the -v flag will be &lt;strong&gt;C:\homeassistant:/config&lt;/strong&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;–net=host&lt;/strong&gt;: This sets the container to use the host network rather than creating a separate namespace.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;homeassistant/home-assistant&lt;/strong&gt;: This is the name and tag of the Docker image we already downloaded.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After completing this step, you’ll have the following output:&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/21kPeimZtNLvozJqSvJIgL/80fd71fc645cbc5eb93ec71ff8756474/home-assistant-output.png" alt="home-assistant-output" /&gt;&lt;/p&gt;

&lt;h3 id="step-3-open-your-docker-to-confirm-your-home-assistant-container"&gt;Step 3: Open your Docker to confirm your Home Assistant container&lt;/h3&gt;

&lt;p&gt;To confirm that you successfully started the Home Assistant container in your Docker, when you open your Docker, you’ll find a similar output in the figure below:&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/5If9ld4wY3DUiGVWcuAQH6/bea3f4e942c795b20a56e559f892f471/home-assistant-container.jpg" alt="home-assistant-container" /&gt;&lt;/p&gt;

&lt;h3 id="step-4-open-your-home-assistant"&gt;Step 4: Open your Home Assistant&lt;/h3&gt;

&lt;p&gt;Right under the &lt;strong&gt;Actions&lt;/strong&gt; tab is a three dots menu, as shown in the figure below. Click on it.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/757h30hYXLHHHUyBA83Jls/0ba05ee6a98d4f60c945d01a4eca9322/home-assistant-menu.png" alt="home-assistant-menu" /&gt;&lt;/p&gt;

&lt;p&gt;After clicking on it, you get the output result as shown in the figure below. Click on &lt;strong&gt;Open with browser&lt;/strong&gt; to easily open your webpage.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/56dmPvqMhfbjV4FTInWyTe/20754ec1b7364d201e76db8e61605876/home-assistant-open-browser.png" alt="home-assistant-open-browser" /&gt;&lt;/p&gt;

&lt;p&gt;Bravo! Now your Home Assistant is up and running as shown below. Now you can proceed to create an account.&lt;/p&gt;

&lt;p&gt;&lt;img src="//images.ctfassets.net/o7xu9whrs0u9/szuzExAB4mFjJeUHlFxuD/b92d689036057b04cbbdc0c965a63066/home-assistant-create-account.png" alt="home-assistant-create-account" /&gt;&lt;/p&gt;

&lt;h2 id="running-home-assistant-on-a-docker-and-standalone"&gt;Running Home Assistant on a Docker and standalone&lt;/h2&gt;

&lt;p&gt;There’s a huge difference between running Home Assistant inside Docker and running it as a standalone service.&lt;/p&gt;

&lt;p&gt;Running Home Assistant as a standalone service simply means that you’ve installed it directly on your machine and you don’t need Docker to run it. In contrast, running Home Assistant on Docker simply means that you’re running it in a containerized environment. In other words, it’s isolated from the host system and other containers, and it has its own required resources already in place.&lt;/p&gt;

&lt;p&gt;The advantage of running your Home Assistant as a standalone is that it’s simpler to set up and manage, as the software itself and the host system will have no additional layers of abstraction. However, the downside is that it’s less portable and may require more effort to maintain.&lt;/p&gt;

&lt;p&gt;The advantage of having to run your Home Assistant on Docker is the fact that the installation and management processes are simplified. Also, all the required resources, dependencies, and configurations are already made available in the Docker image. However, the downside is that it can be more complex to set up. Also, it can be more difficult to troubleshoot since the container environment may be different from the host system.&lt;/p&gt;

&lt;h2 id="common-issues"&gt;Common issues&lt;/h2&gt;

&lt;p&gt;Here are common issues encountered when setting up Home Assistant on Docker.&lt;/p&gt;

&lt;h3 id="issue-1-docker-taking-forever-to-start"&gt;Issue 1: Docker taking forever to start&lt;/h3&gt;

&lt;p&gt;After installation, you need to start your Docker engine; however, it’s taking forever to load. To fix this, first close and restart your Docker using administrator privilege. Then run the code below in your terminal window to start Daemon:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-bash"&gt;cd C:\Program Files\Docker\Docker

./DockerCli.exe -SwitchDaemon&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="issue-2-error-message-error-during-connect"&gt;Issue 2: Error message “Error During Connect”&lt;/h3&gt;

&lt;p&gt;This error can be solved by running the same command in the previous issue.&lt;/p&gt;

&lt;h3 id="issue-3-not-sure-if-your-container-is-up-and-running"&gt;Issue 3: Not sure if your container is up and running&lt;/h3&gt;

&lt;p&gt;If, after starting your container in step 2, you’re not sure if your container is up and running, you can run the code below:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-bash"&gt;docker inspect homeassistant&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This code will return all necessary information about your container.&lt;/p&gt;

&lt;h2 id="summary-and-next-steps"&gt;Summary and next steps&lt;/h2&gt;

&lt;p&gt;Home Assistant is software that allows a user to control and automate home devices, like cameras, thermostats, lights, and sensors. Docker, on the other hand, is a software platform that allows a user to create, deploy, and run software such as Home Assistant in containers. Docker makes it easy to set up the software without any problems arising from the incompatibility of the host system and the software.&lt;/p&gt;

&lt;p&gt;To get Home Assistant up and running on &lt;a href="https://www.influxdata.com/blog/running-influxdb-2-0-and-telegraf-using-docker/"&gt;Docker&lt;/a&gt;, we make use of the host system’s CLI by writing some code. Here are the steps to take to get the Home Assistant running on Docker:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Step 1: Write the code to download the latest stable release of Home Assistant container image from Docker Hub.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Step 2: Write the code to install and start the Home Assistant container.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Step 3: Open your Docker App to confirm your Home Assistant container.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Step 4: Open your Home Assistant.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you have your basic Home Assistant installation complete, there is much more you can do with it by integrating other tools like Grafana and InfluxDB. Check out the following resources for some inspiration on what you can do:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://www.influxdata.com/blog/how-integrate-gafana-home-assistant/"&gt;How to integrate Home Assistant with Grafana and InfluxDB&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://www.influxdata.com/blog/getting-started-home-assistant-node-red-tutorial-influxdb/"&gt;Home Assistant and Node Red automation tutorial&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://www.influxdata.com/blog/monitoring-aquarium-influxdb-grafana/"&gt;Monitoring an aquarium with Home Assistant, InfluxDB, and Grafana&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id="about-the-author"&gt;About the author&lt;/h3&gt;

&lt;p&gt;This post was written by Theophilus Onyejiaku. &lt;a href="https://www.linkedin.com/in/theophilus-chidalu-onyejiaku"&gt;Theophilus&lt;/a&gt; has over 5 years of experience as data scientist and a machine learning engineer. He has garnered expertise in the field of Data Science, Machine Learning, Computer Vision, Deep learning, Object Detection, Model Development and Deployment. He has written well over 660+ articles in the aforementioned fields, python programming, data analytics and so much more.&lt;/p&gt;
</description>
      <pubDate>Tue, 03 Jun 2025 07:35:00 +0000</pubDate>
      <link>https://www.influxdata.com/blog/getting-started-home-assistant-docker/</link>
      <guid isPermaLink="true">https://www.influxdata.com/blog/getting-started-home-assistant-docker/</guid>
      <category>Developer</category>
      <author>Community (InfluxData)</author>
    </item>
  </channel>
</rss>
