<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-AU" xmlns:media="http://search.yahoo.com/mrss/">
  <id>https://david.gardiner.net.au/feed.xml</id>
  <title type="html">David Gardiner</title>
  <updated>2026-09-26T06:30:00.000Z</updated>
  <subtitle>A blog of software development, .NET and other interesting things</subtitle>
  <rights>Copyright 2026 David Gardiner</rights>
  <icon>https://www.gravatar.com/avatar/37edf2567185071646d62ba28b868fab?s=64</icon>
  <logo>https://www.gravatar.com/avatar/37edf2567185071646d62ba28b868fab?s=256</logo>
  <generator uri="https://github.com/flcdrg/astrojs-atom" version="3">astrojs-atom</generator>
  <author>
    <name>David Gardiner</name>
  </author>
  <link href="https://david.gardiner.net.au/feed.xml" rel="self" type="application/atom+xml"/>
  <link href="https://flcdrg.superfeedr.com" rel="hub"/>
  <link href="https://david.gardiner.net.au/" rel="alternate" type="text/html" hreflang="en-AU"/>
  <category term=".NET"/>
  <category term="Software Development"/>
  <category term="Azure"/>
  <category term="DevOps"/>
  <entry>
    <id>https://david.gardiner.net.au/2026/09/actions-setup-dotnet</id>
    <updated>2026-09-26T16:00:00.000+09:30</updated>
    <title>Troubleshooting GitHub Package NuGet feeds with GitHub Actions</title>
    <link href="https://david.gardiner.net.au/2026/09/actions-setup-dotnet" rel="alternate" type="text/html" title="Troubleshooting GitHub Package NuGet feeds with GitHub Actions"/>
    <category term=".NET"/>
    <category term="GitHub Actions"/>
    <published>2026-09-26T16:00:00.000+09:30</published>
    <summary type="html">Make sure you configure the actions/setup-dotnet action correctly to set up the right .NET SDK and authenticate to a GitHub Packages NuGet feed.</summary>
    <content type="html">&lt;p&gt;If you&apos;re building .NET applications with GitHub Actions, then you want to ensure the correct .NET SDK is in place. If you&apos;re using &lt;a href=&quot;https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-nuget-registry&quot;&gt;GitHub Packages to access a private NuGet feed&lt;/a&gt; then you&apos;ll also need to be able to authenticate to that feed. The &lt;a href=&quot;https://github.com/marketplace/actions/setup-net-core-sdk&quot;&gt;actions/setup-dotnet&lt;/a&gt; action is great for doing both of these tasks, but there are some gotchas I&apos;ve encountered when using it.&lt;/p&gt;
&lt;p&gt;Using the action is pretty straight forward:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;- uses: actions/setup-dotnet@v6
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you have a &lt;code&gt;global.json&lt;/code&gt; file present in the root of your repo it will read it by default. If you don&apos;t then it doesn&apos;t know which version to install and you&apos;ll see this logged in the workflow run:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;The global.json wasn&apos;t found in the root directory. No .NET version will be installed.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Better to use &lt;code&gt;dotnet-version&lt;/code&gt; to indicate one (or more) SDK version ranges to install:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;- uses: actions/setup-dotnet@v6
  with:
    dotnet-version: 10.0.x
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That is fine, but the best approach in my opinion is to have a &lt;code&gt;global.json&lt;/code&gt; file with an sdk property set like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  &quot;sdk&quot;: {
    &quot;version&quot;: &quot;10.0.401&quot;,
    &quot;rollForward&quot;: &quot;latestFeature&quot;
  },
  &quot;test&quot;: {
    &quot;runner&quot;: &quot;Microsoft.Testing.Platform&quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The action will read the SDK version from there. This is often a good thing as it means you just need to set the version in one place rather than all through your workflow files.&lt;/p&gt;
&lt;h2&gt;Using GitHub Packages feeds&lt;/h2&gt;
&lt;p&gt;Assuming you&apos;ve already configured your GitHub packages feed in your &lt;code&gt;NuGet.Config&lt;/code&gt; file (and note the use of the newer &lt;code&gt;packageSourceMapping&lt;/code&gt; block):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;configuration&amp;gt;
    &amp;lt;packageSources&amp;gt;
        &amp;lt;add key=&quot;nuget&quot; value=&quot;https://api.nuget.org/v3/index.json&quot; /&amp;gt;
        &amp;lt;add key=&quot;github&quot; value=&quot;https://nuget.pkg.github.com/flcdrg/index.json&quot; /&amp;gt;
    &amp;lt;/packageSources&amp;gt;

    &amp;lt;packageSourceMapping&amp;gt;
        &amp;lt;packageSource key=&quot;nuget&quot;&amp;gt;
            &amp;lt;package pattern=&quot;*&quot; /&amp;gt;
        &amp;lt;/packageSource&amp;gt;
        &amp;lt;packageSource key=&quot;github&quot;&amp;gt;
            &amp;lt;package pattern=&quot;Verify.MongoDB&quot; /&amp;gt;
        &amp;lt;/packageSource&amp;gt;
    &amp;lt;/packageSourceMapping&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then you can use the action to wire up authentication for the Packages feed with the &lt;code&gt;source-url&lt;/code&gt; input parameter:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;- uses: actions/setup-dotnet@v6
  with:
    source-url: https://nuget.pkg.github.com/flcdrg/index.json
  env:
    NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that you must grant the GitHub token access to read packages!&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;permissions:
  contents: read
  packages: read
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And you&apos;d think that would be it. But there are some edge cases to be aware of.&lt;/p&gt;
&lt;h2&gt;Building from a subdirectory&lt;/h2&gt;
&lt;p&gt;The action defaults to looking in the root of the repository for &lt;code&gt;global.json&lt;/code&gt; and &lt;code&gt;NuGet.Config&lt;/code&gt; files. If your .NET source code resides in a subdirectory (often the case if you are using a monorepo approach), then make sure you tell the action where they are:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;- uses: actions/setup-dotnet@v6
  with:
    global-json-file: globaljson-and-nugetconfig/global.json
    source-url: https://nuget.pkg.github.com/flcdrg/index.json
    config-file: globaljson-and-nugetconfig/nuget.config
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you forget to set &lt;code&gt;global-json-file&lt;/code&gt; and/or &lt;code&gt;config-file&lt;/code&gt; then it will only look in the root of the repository, and either load the wrong files or load nothing if those files don&apos;t exist at the root (as we saw earlier).&lt;/p&gt;
&lt;p&gt;When the &lt;code&gt;action/setup-dotnet&lt;/code&gt; action runs with &lt;code&gt;source-url&lt;/code&gt;, it actually generates an additional temporary &lt;code&gt;nuget.config&lt;/code&gt; file. You can see this in the workflow run output:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dotnet-auth: Finding any source references in /home/runner/work/using-setup-dotnet-action/using-setup-dotnet-action/nuget.config, writing a new temporary configuration file with credentials to /home/runner/work/using-setup-dotnet-action/nuget.config
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That temporary file contains the authentication details for the feed.&lt;/p&gt;
&lt;p&gt;But the restore fails:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Determining projects to restore...
/usr/share/dotnet/sdk/10.0.401/NuGet.targets(198,5): warning : Your request could not be authenticated by the GitHub Packages service. Please ensure your access token is valid and has the appropriate scopes configured. [/home/runner/work/using-setup-dotnet-action/using-setup-dotnet-action/globaljson-and-nugetconfig/tests/tests.csproj]
  Retrying &apos;FindPackagesByIdAsync&apos; for source &apos;https://nuget.pkg.github.com/flcdrg/download/verify.mongodb/index.json&apos;.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you take a look at the contents of the temporary nuget.config file you might see the problem:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;configuration&amp;gt;
  &amp;lt;config&amp;gt;
    &amp;lt;add key=&quot;defaultPushSource&quot; value=&quot;https://nuget.pkg.github.com/flcdrg/index.json&quot;/&amp;gt;
  &amp;lt;/config&amp;gt;
  &amp;lt;packageSources&amp;gt;
    &amp;lt;add key=&quot;Source&quot; value=&quot;https://nuget.pkg.github.com/flcdrg/index.json&quot;/&amp;gt;
  &amp;lt;/packageSources&amp;gt;
  &amp;lt;packageSourceCredentials&amp;gt;
    &amp;lt;Source&amp;gt;
      &amp;lt;add key=&quot;Username&quot; value=&quot;flcdrg&quot;/&amp;gt;
      &amp;lt;add key=&quot;ClearTextPassword&quot; value=&quot;***&quot;/&amp;gt;
    &amp;lt;/Source&amp;gt;
  &amp;lt;/packageSourceCredentials&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The action knows the feed URL, but it has defaulted to using &lt;code&gt;Source&lt;/code&gt; as the source name.&lt;/p&gt;
&lt;p&gt;The issue here is that when &lt;code&gt;dotnet restore&lt;/code&gt; runs, it finds the &lt;code&gt;nuget.config&lt;/code&gt; file in the application directory and combines that with the temporary file.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;packageSourceMapping&lt;/code&gt; defines the &lt;code&gt;github&lt;/code&gt; source as the only place to look for &lt;code&gt;Verify.MongoDB&lt;/code&gt; package. But the temporary &lt;code&gt;nuget.config&lt;/code&gt; file didn&apos;t use that name. So you end up that error.&lt;/p&gt;
&lt;p&gt;The solution is to set the &lt;code&gt;config-file&lt;/code&gt; input parameter so that the action can use the correct source name from your &lt;code&gt;nuget.config&lt;/code&gt; file. With the names aligned, everything should work correctly.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;If &lt;code&gt;global.json&lt;/code&gt; is not in the root of the repository, use &lt;code&gt;global-json-file&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;NuGet.Config&lt;/code&gt; is not in the root of the repository, use &lt;code&gt;config-file&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2026/09/sapower</id>
    <updated>2026-09-23T13:30:00.000+09:30</updated>
    <title>SA Power Networks meter data</title>
    <link href="https://david.gardiner.net.au/2026/09/sapower" rel="alternate" type="text/html" title="SA Power Networks meter data"/>
    <category term=".NET"/>
    <category term="Home Assistant"/>
    <published>2026-09-23T13:30:00.000+09:30</published>
    <summary type="html">A .NET tool and Home Assistant integration for downloading SA Power Networks electricity meter data and importing historical readings.</summary>
    <content type="html">&lt;p&gt;For folks living in South Australia, electricity is distributed by SA Power Networks. As an electricity consumer, you don&apos;t normally deal with them directly. Instead you go through a retail company, of which there are a number to choose from.&lt;/p&gt;
&lt;p&gt;SA Power Networks provide a service that allows you as a consumer to download your electricity data - &lt;a href=&quot;https://www.sapowernetworks.com.au/incapsula-redirect/meterdata/CADSiteLogin&quot;&gt;Your Meter Data&lt;/a&gt; (you register for the service &lt;a href=&quot;https://www.sapowernetworks.com.au/incapsula-redirect/meterdata/CADRegoPage&quot;&gt;here&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Once you sign in you either download a PDF summary or a CSV file (in &lt;a href=&quot;https://www.aemo.com.au/-/media/files/stakeholder_consultation/consultations/nem-consultations/2025/flexible-trading-arrangements/final-stage/mdff-specification-nem12-nem13-v3.pdf?rev=81faa73e39754a93a6669235976b22f5&amp;amp;sc_lang=en&quot;&gt;&apos;NEM12&apos; format&lt;/a&gt;) with all your meter data, which includes both incoming and outgoing (like excess solar or battery) amounts.&lt;/p&gt;
&lt;p&gt;I was keen to get that data so I could do some analysis of our power usage.&lt;/p&gt;
&lt;p&gt;Having to repeatedly sign into that page and click on the various options just to download a CSV is a bit annoying. Ideally they&apos;d provide a customer-facing API that I could call, but they don&apos;t. (I presume they do provide an API for the electricity retailers).&lt;/p&gt;
&lt;p&gt;So I wrote a .NET library and an example console application that will do all that for you from the command line. Source available at &lt;a href=&quot;https://github.com/flcdrg/sapowernetworks-meterdata-net&quot;&gt;https://github.com/flcdrg/sapowernetworks-meterdata-net&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You just supply your email address and password (that you signed up to the Your Meter Data site with) and it will grab the CSV for you:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dotnet run --project src/Gardiner.SaPowerNetworks.MeterData.Console -- --email your@email.com --password &apos;YOURPASSWORD&apos; --file data.csv
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If all goes well, will produce:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Logging in as your@email.com...
Logged in successfully.
Found 1 NMI(s):
  200012345678  Home  STREET SUBURBNAME 5000
Fetching data from 2026-08-18 to 2026-08-20...
Saved detailed NEM12 CSV to /Users/david/dev/sapowernetworks-meterdata-net/data.csv
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The data looks something like this (truncated):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;200,1234567899,E1B1,E1,E1,,LG1201234567,KWH,05,
300,20260619,0.00000000000000,0.00000000000000,0.00000000000000,0.00000000000000,0.00000000000000,
400,1,154,F19,,
400,155,288,A,,
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;And what about Home Assistant?&lt;/h2&gt;
&lt;p&gt;Hey, wouldn&apos;t this be a great data source for integrating with &lt;a href=&quot;https://www.home-assistant.io/&quot;&gt;Home Assistant&lt;/a&gt;? You could use it to import your electricity meter data directly into HA.
Well yes it would, but as nice as my console app is, it&apos;s written in .NET and Home Assistant integrations are written in Python.&lt;/p&gt;
&lt;p&gt;So I used Copilot to create a new Home Assistant integration that imports the data each day automatically! It was able to use the .NET implementation as a reference and created equivalent Python code that would work with Home Assistant.&lt;/p&gt;
&lt;p&gt;The source for the integration is at &lt;a href=&quot;https://github.com/flcdrg/sapowernetworks-meterdata-ha&quot;&gt;https://github.com/flcdrg/sapowernetworks-meterdata-ha&lt;/a&gt;. For the moment you will need to add that as a custom repository in Home Assistant &lt;a href=&quot;https://hacs.xyz/&quot;&gt;HACS&lt;/a&gt;, but I&apos;ve submitted it to be listed so that you will be able to just search for it in the HACS store.&lt;/p&gt;
&lt;p&gt;The integration provides a control and a number of sensors:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/sapower-deviceinfo.BjY_W28p_2ovQfE.webp&quot; alt=&quot;Screenshot of Integration in Home Assistant&quot; /&gt;&lt;/p&gt;
&lt;p&gt;But because all the data is historic, it doesn&apos;t provide a sensor with the current reading. Instead it publishes the historic data to Home Assistant&apos;s &lt;a href=&quot;https://www.home-assistant.io/integrations/recorder/&quot;&gt;Recorder&lt;/a&gt; as statistics.&lt;/p&gt;
&lt;p&gt;One way to view the data is via a &lt;a href=&quot;https://www.home-assistant.io/dashboards/statistics-graph/&quot;&gt;Statistics graph card&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;eg.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/sapower-ha-statsgraph.DIgD2A4T_Zf81Oz.webp&quot; alt=&quot;Screenshot of Statistics Graph settings in Home Assistant&quot; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;- type: statistics-graph
  entities:
    - sapowernetworks:9999999_import_e1
    - sapowernetworks:9999999_export_b1
  days_to_show: 7
  period: day
  chart_type: bar
  stat_types:
    - change
  logarithmic_scale: false
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Which can give you a graph like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/sapower-7days.cN-HWE9-_ZrIgrV.webp&quot; alt=&quot;Seven-day Home Assistant statistics graph showing electricity imported from and exported to the grid&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The blue &apos;import&apos; is the electricity that came from the grid into the house. The yellow &apos;export&apos; is excess solar power that was exported back to the grid.&lt;/p&gt;
&lt;p&gt;The Saturday 19th and Sunday 20th were both beautiful sunny days here in Adelaide. The reason for the differences in the amounts on those days is that Saturday I was out driving most of the day, so we did not charge our car during the 11am-2pm free period that our current electricity plan offers. But Sunday once I got home from church the car was plugged in and recharged, so for that period while it was just as sunny, that solar power was going straight into our car instead of being exported.&lt;/p&gt;
</content>
    <media:thumbnail url="https://david.gardiner.net.au/_astro/sapower-7days.cN-HWE9-.png" width="523" height="320"/>
    <media:content medium="image" url="https://david.gardiner.net.au/_astro/sapower-7days.cN-HWE9-.png" width="523" height="320"/>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2026/08/evnex</id>
    <updated>2026-08-30T23:00:00.000+09:30</updated>
    <title>Evnex E2 Plus EV Charger</title>
    <link href="https://david.gardiner.net.au/2026/08/evnex" rel="alternate" type="text/html" title="Evnex E2 Plus EV Charger"/>
    <category term="Energy"/>
    <category term="Home Assistant"/>
    <published>2026-08-30T23:00:00.000+09:30</published>
    <summary type="html">An overview of the Evnex E2 Plus Charger, using the Evnex mobile app to manage charging, and Home Assistant integration.</summary>
    <content type="html">&lt;p&gt;As part of the discussions with Adam from &lt;a href=&quot;https://www.lammelectrical.com.au/&quot;&gt;LAMM Solar and Electrical&lt;/a&gt;, I mentioned that we were getting an electric vehicle and I was interested in getting a home charger for faster charging. After clarifying that I wanted nothing to do with a certain T*sla brand, they recommended taking a look at an &lt;a href=&quot;https://www.evnex.com/au/chargers/compare&quot;&gt;Evnex charger&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We only have single-phase power in our house (and no immediate plans to change that), so that narrowed it down to one of their E2 range that can provide up to 7.4 kilowatts:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Connectivity&lt;/th&gt;
&lt;th&gt;Solar&lt;/th&gt;
&lt;th&gt;Cable&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;E2 Flex&lt;/td&gt;
&lt;td&gt;WiFi&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;5m&lt;/td&gt;
&lt;td&gt;$AU799&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E2 Core&lt;/td&gt;
&lt;td&gt;WiFi&lt;/td&gt;
&lt;td&gt;Y&lt;/td&gt;
&lt;td&gt;5m&lt;/td&gt;
&lt;td&gt;$AU1,099&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E2 Plus&lt;/td&gt;
&lt;td&gt;WiFi+4G&lt;/td&gt;
&lt;td&gt;Y&lt;/td&gt;
&lt;td&gt;8m&lt;/td&gt;
&lt;td&gt;$AU1,399&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The Flex is the base model. It doesn&apos;t have the &apos;Solar smart&apos; feature that allows you to &quot;schedule your charging to use only your excess solar power without drawing from the grid, giving you free kilometres from sunshine&quot;.&lt;/p&gt;
&lt;p&gt;The Core sounded like it was the one, but I took note of Adam&apos;s advice to always get a longer cable than you think you&apos;ll need, as you won&apos;t regret it. Some chargers let you plug in your own cable, whereas unfortunately the Evnex ones don&apos;t. That pushed me to the &apos;Plus&apos; as rather than 5m it comes with an 8m cable. It also supports a client/server model which I understand would be useful if we wanted to get a second charger installed and they could be managed together.&lt;/p&gt;
&lt;p&gt;I was also interested to see what kind of ongoing support they had - I found there&apos;s an active &lt;a href=&quot;https://community.evnex.com/&quot;&gt;support forum&lt;/a&gt; with prompt responses to queries, so that was also encouraging. They&apos;re designed and manufactured in New Zealand. If I can&apos;t buy Australian then New Zealand is the next best thing!&lt;/p&gt;
&lt;p&gt;And so that&apos;s what we got. We ordered directly from Evnex and it arrived a couple of weeks later, just in time for LAMM to install when they refreshed our solar panels (there was a small reduction in costs for doing both together).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/evnex-wall-mounted.QJNPkC16_Z2buJVq.webp&quot; alt=&quot;Evnex charger mounted on brick wall&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Oh and Adam was spot on with the longer cable. 8 metres was enough that I could run the cable along the ceiling of our carport over to near the charging port on our car. Keeping it off the ground and avoiding a tripping hazard. 5m would have been too short to do that.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/evnex-charging-kia.C-L61qLV_1vDuxT.webp&quot; alt=&quot;Evnex charging cable plugged into Kia EV5&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Mobile app&lt;/h2&gt;
&lt;p&gt;Evnex provides a mobile app that you can view and manage your charger.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/evnex-app-home-charging.DDeQn4FT_ZCpnAj.webp&quot; alt=&quot;Screenshot of Evnex app home screen&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For comparison, here&apos;s the Kia app at the same time:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/kia-app-charging-in-progress.5wgxNfFI_Z1xBnwU.webp&quot; alt=&quot;Screenshot of Kia app with charging in progress&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In the Evnex app you can view the details of the current charging session (and past ones too)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/evnex-app-charging.CqWi1Y0N_70HLM.webp&quot; alt=&quot;Screenshot of Evnex app current charging session details&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Like the solar inverter, the Evnex also uses a CT clamp to monitor actual electricity usage in your house. I&apos;d say &apos;current usage&apos; but that could be confusing🙂&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/evnex-app-live-load.B_yjyr2k_Z9X8Wh.webp&quot; alt=&quot;Screenshot of Evnex app Live Load screen&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You might just want to be able to charge any time, but for me I wanted to limit charging to when our electricity plan is cheapest. It is true that the Kia app provides simple scheduling for when to accept charging:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/kia-app-scheduled-charging.Cdfw0mS4_Z2nFvoN.webp&quot; alt=&quot;Screenshot of Kia app scheduled charging page&quot; /&gt;&lt;/p&gt;
&lt;p&gt;But the Evnex app has much more advanced controls:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/evnex-app-charge-settings.DioeqroV_ZFXWel.webp&quot; alt=&quot;Screenshot of Evnex app charge settings&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The app has an advanced schedule setting, where you can configure when you want to allow charging and the costs that it would incur (from your electricity plan).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/evnex-app-schedule.DXYNpP0-_Z2gXS6q.webp&quot; alt=&quot;Screenshot of Evnex app edit schedule&quot; /&gt;&lt;/p&gt;
&lt;p&gt;My current electricity plan has free power from 11am-2pm, so that&apos;s the main time I allow the car to charge. But on occasion I may want to allow charging overnight (when it isn&apos;t free but the cost is low) so I&apos;ve created 1 hour intervals that I can selectively enable if needed.&lt;/p&gt;
&lt;p&gt;You can add in different prices.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/evnex-app-price-settings.gb2azmHc_ZGRhCR.webp&quot; alt=&quot;Screenshot of Evnex app price settings&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And for each time period you can assign one of three behaviours:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/evnex-app-behaviour-settings.BbDsl2cd_ZynQ4e.webp&quot; alt=&quot;Screenshot of Evnex app behaviour settings&quot; /&gt;&lt;/p&gt;
&lt;p&gt;If we had a larger solar installation, then the Solar Smart feature could be useful too, to manage how much of your solar-generated electricity to allocate to EV charging.&lt;/p&gt;
&lt;p&gt;Charging done (set to stop at 90%):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/kia-app-charging-complete.CBLiZ5lC_1O8RHN.webp&quot; alt=&quot;Screenshot of Kia app showing charging complete&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Home Assistant&lt;/h2&gt;
&lt;p&gt;Yes, there&apos;s a really good Home Assistant integration for the Evnex chargers. It provides two devices:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-evnex-device.COnIzvzU_15XbhP.webp&quot; alt=&quot;Screenshot of Home Assistant Evnex integration two devices&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There&apos;s a number of controls and a bunch of sensors&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-evnex-controls.DdznzjC1_Z1nEvs3.webp&quot; alt=&quot;Screenshot of Home Assistant Evnex integration&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-evnex-charger-sensors.zftnz-vi_Z1jxsGL.webp&quot; alt=&quot;Screenshot of Home Assistant Evnex integration&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You can use these to track usage and generate some nice graphs. I can imagine you could get quite clever with using Home Assistant to provide even finer control over how your car is charged. I could see something like monitoring the weather forecast to predict likely future solar generation to adjust how and when charging is offered. Not something I&apos;m going to do now, but there&apos;s all kinds of possibilities.&lt;/p&gt;
&lt;h2&gt;Money back&lt;/h2&gt;
&lt;p&gt;Narelle discovered that our local council were offering a &lt;a href=&quot;https://www.onkaparingacity.com/Services/Waste-and-recycling/Sustainability-rebates-and-subsidies&quot;&gt;number of sustainability rebates&lt;/a&gt;, including for installing your own EV charger! We just had to supply a before and after photo of the installation and then a week or two later we got $200 back. Nice!&lt;/p&gt;
</content>
    <media:thumbnail url="https://david.gardiner.net.au/_astro/evnex-wall-mounted.QJNPkC16.jpg" width="429" height="571"/>
    <media:content medium="image" url="https://david.gardiner.net.au/_astro/evnex-wall-mounted.QJNPkC16.jpg" width="429" height="571"/>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2026/08/new-solar-panels</id>
    <updated>2026-08-27T22:00:00.000+09:30</updated>
    <title>Replacing those panels</title>
    <link href="https://david.gardiner.net.au/2026/08/new-solar-panels" rel="alternate" type="text/html" title="Replacing those panels"/>
    <category term="Energy"/>
    <category term="Home Assistant"/>
    <published>2026-08-27T22:00:00.000+09:30</published>
    <summary type="html">Is it possible to improve the efficiency of our home solar panels without losing our feed-in tariff?</summary>
    <content type="html">&lt;p&gt;So previously I described how &lt;a href=&quot;/2026/08/solar-problems&quot;&gt;our rooftop solar panels had a small failure&lt;/a&gt; that resulted in a reduced generating capacity. Now that we also &lt;a href=&quot;/2026/08/kia-ev5&quot;&gt;have an EV&lt;/a&gt;, I was keen to get them back working as  efficiently as possible. Ideally we&apos;d be generating as much power as possible, not only to use in our house, but also to charge the new car.&lt;/p&gt;
&lt;p&gt;Again, I contacted a few different installers, but ended back with &lt;a href=&quot;https://www.lammelectrical.com.au/&quot;&gt;LAMM Solar and Electrical&lt;/a&gt; again. There were a couple of constraints that they understood and worked with us on:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;We&apos;re still receiving a generous government feed-in tariff for power we send back to the grid (paid in addition to any input rate on our electricity plan)&lt;/li&gt;
&lt;li&gt;We don&apos;t have heaps of money to throw at a huge upgrade.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The first point is important. As I understand it, if you make any significant changes to your system, like increasing capacity or installing a battery, then the government tariff gets cancelled. So if at all possible, I&apos;d prefer to keep that until it runs out in a couple of years.&lt;/p&gt;
&lt;p&gt;Adam from LAMM patiently came up with a few different options to choose from that all kept any changes compliant. As long as the new system didn&apos;t exceed the capacity of the original then the feed-in tariff would continue.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/new-solar.J7HO6D3V_nzfuJ.webp&quot; alt=&quot;New solar panels installed on roof&quot; /&gt;&lt;/p&gt;
&lt;p&gt;One thing I hadn&apos;t considered was that solar panel technology has advanced a lot since our original panels were installed. The old system consisted of 24 x 190W panels.&lt;/p&gt;
&lt;p&gt;The new system is 9 x 500W panels - and as it takes up a lot less roof space, it gives us physical room to expand in the future.&lt;/p&gt;
&lt;p&gt;The alignment of the original panels was in two strings - with a longer one more north-aligned. It was great in Summer, but shaded by trees a lot more in Winter. The second string was at a slightly less north-facing angle, but not impacted by trees, so it could be relied on to keep generating through the whole year.&lt;/p&gt;
&lt;p&gt;The replacement installation kept the second string. The plan was to put all 9 panels in that position, but on the day of installation we realised that they were just a bit too big to fit, so 3 panels were put on a different part of the roof. Those will pick up more afternoon sun and should also do well over Summer.&lt;/p&gt;
&lt;p&gt;One slight annoyance was to discover that the government incentives for installing solar actually meant it was cheaper to put in a brand new inverter, rather than keep the perfectly fine one we had (it was only a few years old, having replaced the original inverter when that became faulty).&lt;/p&gt;
&lt;p&gt;In a similar way, there wasn&apos;t much that could be done with the remaining old panels. If I had a farm shed or something similar I might have been able to repurpose them in some off-grid system, but I don&apos;t have any such thing. Even donating them to someone else would not be worth it, as I was informed that the cost of reinstallation would outweigh any savings compared to just putting in a new system. A shame but not much I could do about that.&lt;/p&gt;
&lt;h2&gt;Home Assistant monitoring&lt;/h2&gt;
&lt;p&gt;The new inverter is a &lt;a href=&quot;https://www.goodwe.com.au/dns-g4&quot;&gt;GoodWe&lt;/a&gt; brand, and &lt;a href=&quot;https://www.home-assistant.io/&quot;&gt;Home Assistant&lt;/a&gt; has support for that built in with the &lt;a href=&quot;https://www.home-assistant.io/integrations/goodwe&quot;&gt;GoodWe Inverter integration&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I had read the documentation for that integration which mentioned you needed the &lt;em&gt;Modbus TCP option enabled&lt;/em&gt;. That wasn&apos;t on by default. I want to give an extra thanks to the LAMM installers (Liam, Ethan and Ben), as they not only completed the installation but were happy to stay on a bit longer and adjust the inverter settings for me until the HA integration worked. That was much appreciated.&lt;/p&gt;
&lt;p&gt;One advantage to getting a new inverter is it comes with a CT (Current Transformer) clamp. This allows it to monitor the electrical current in the mains connection. With that in place, you are able to see the actual amount of electricity that is being consumed by the house (in addition to any that is being generated by the solar panels).&lt;/p&gt;
&lt;p&gt;I wish I&apos;d started using Home Assistant much earlier, as I would have had a much longer history to compare with. As it is, here&apos;s a couple of months of the old system (and bear in mind it is Winter here in Adelaide, so any sunshine peaking through the clouds this time of year is a bonus!)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/fronius-generation.COjbcoUV_1cfAbu.webp&quot; alt=&quot;Graph of Fronius power generation with just a few days peaking above 6 kWh&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The new panels are already proving their worth. Whereas the old panels were lucky to get 6 kWh maximum, the new ones seem to have that as almost a daily minimum!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/goodwe-generation.8jEEmMEp_1KUDTN.webp&quot; alt=&quot;Graph of GoodWe power generation with most days at a minimum of 6 kWh&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Replacing the panels was an unplanned expense, but the proceeds from selling the old Kia Sorento car ended up covering a good portion of the cost.&lt;/p&gt;
&lt;p&gt;There&apos;s one other thing that I got LAMM Solar and Electrical to install on the day. I&apos;ll talk about that more in another post!&lt;/p&gt;
</content>
    <media:thumbnail url="https://david.gardiner.net.au/_astro/new-solar.J7HO6D3V.jpg" width="571" height="428"/>
    <media:content medium="image" url="https://david.gardiner.net.au/_astro/new-solar.J7HO6D3V.jpg" width="571" height="428"/>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2026/08/kia-ev5</id>
    <updated>2026-08-20T20:30:00.000+09:30</updated>
    <title>An electric vehicle</title>
    <link href="https://david.gardiner.net.au/2026/08/kia-ev5" rel="alternate" type="text/html" title="An electric vehicle"/>
    <category term="Energy"/>
    <category term="Family"/>
    <category term="Transport"/>
    <published>2026-08-20T20:30:00.000+09:30</published>
    <summary type="html">We bought a new car. A Kia EV5 in fact. Why did we pick that one, and how is it going?</summary>
    <content type="html">&lt;p&gt;We got an EV! I had been thinking for a while now that our next car should be an electric vehicle. Our good friend Jane had got one last year (and prior to that had a hybrid), and was a strong proponent making the switch, so it was definitely on my radar. We also attended a really informative community seminar early last year, where lots of EV owners brought their along cars for people to look at and ask questions. A few speakers gave really good presentations on what it&apos;s like owning an EV and the current state of the market. Given our driving patterns it just felt like the logical choice.&lt;/p&gt;
&lt;p&gt;Our old car (a &lt;a href=&quot;/2011/09/busy-but-enjoyable-weekend&quot;&gt;Kia Sorento 7 seater SUV&lt;/a&gt;) has had a good run, but it had recently ticked over 300,000 kms and while it was still going remarkably well (we did a road trip from Adelaide to Sydney earlier this year with it), it was likely going to get more expensive to keep on the road.&lt;/p&gt;
&lt;p&gt;In hindsight I really should have done something about this last year - but I didn&apos;t count on a world-wide oil shortage, which then encouraged a lot of other people to start buying EVs too!&lt;/p&gt;
&lt;p&gt;I also decided to take advantage of using a novated lease through work. There&apos;s some helpful government discounts that made this an option to consider. Some employers might only support a single lease provider, but &lt;a href=&quot;https://handbook.sixpivot.com.au/perks-and-benefits/benefits&quot;&gt;SixPivot doesn&apos;t have any such limitation&lt;/a&gt;. I looked around at a number of leasing companies and also spoke to my work colleagues who were already leasing to hear their experiences. That&apos;s how I ended up choosing &lt;a href=&quot;https://www.fleetcare.com.au/referred&quot;&gt;Fleetcare&lt;/a&gt; (If you&apos;re interested in using them, let me know and I&apos;ll share a referral code with you, and we both get a $250 gift card each if your lease is settled).&lt;/p&gt;
&lt;p&gt;After a decent amount of research we settled on a &lt;a href=&quot;https://www.kia.com/au/cars/ev5/features.html&quot;&gt;Kia EV5&lt;/a&gt;. The base model (which we got) has a ~400km range and quite decent boot space compared to some other cars we looked at. It&apos;s a 5 seater SUV. Not quite as big as our old Sorento, but it does pass the &quot;Cello&quot; test. That&apos;s where you take a full-size Cello in its case and try and fit it into the car boot without having to put down one of the back seats. It&apos;s a lot more modern than our old car, but there&apos;s still a bit of &quot;Kia&quot; familiarity to it.&lt;/p&gt;
&lt;p&gt;I&apos;d also spent a bit of time looking at our past driving history and running costs to try and get a good idea of how much we could afford to budget for a new car. (The running costs also proved useful when filling out the lease documentation).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/kia-ev5-showroom.hPwFEQqb_2mcKAk.webp&quot; alt=&quot;Kia EV5 in car showroom&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Some other brands I tried felt like the usable area of the windscreen was reduced quite a bit, especially around the rear-view mirror area - almost like driving with blinkers on. Maybe that&apos;s ok for shorter people, but as someone slightly taller, that was noticeable to me. A number of new cars seem to be adopting a US layout with indicator and wiper controls on the &quot;wrong&quot; side of the steering wheel. Not a deal breaker, but it was appreciated that the EV5 keeps with what I&apos;m used to - wipers on the left, indicator on the right.&lt;/p&gt;
&lt;p&gt;There&apos;s also a lot of variation across EV models as to how the gear stick is located. Not that you usually have more than just forward, park and reverse. Some have a dial in the centre console, some have what looks like a traditional gear stick, and some (like the EV5) have the gear stick as an extra &quot;stalk&quot; on the steering wheel.&lt;/p&gt;
&lt;h2&gt;A few bumps&lt;/h2&gt;
&lt;p&gt;About a week after we got the new car, I started noticing some weird error messages appearing on the dashboard display. They&apos;d appear briefly and then go away, but a small warning icon would remain. They&apos;d disappear when the car was turned off, but then another error would show up at some stage later. The strange thing was it wasn&apos;t always the same system that the error was referring to. They weren&apos;t predictable either.&lt;/p&gt;
&lt;p&gt;Here&apos;s one that I did manage to get a photo of. The text would only appear for a few seconds, but the warning icon would stay in the bottom right of the display until you turned off the car.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/kia-ev5-error.DfSD7wjB_Z2tFc7a.webp&quot; alt=&quot;Photo of EV5 dashboard showing &apos;Check Parking Distance Warning System&apos; error&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I contacted our car sales guy to ask what the message meant, and he referred it to their service department. They asked for me to bring it in for a day. The result of that was they said they needed to book it in again for an extended period as they weren&apos;t sure what the problem was.&lt;/p&gt;
&lt;p&gt;As a software developer, the worst kind of bug is one that you can&apos;t reproduce. Given the amount of software that runs inside a car these days, I was worried this might be one of those situations. But I was somewhat relieved to hear that when they plugged in their diagnostic tools into the car the technician could see a whole bunch of errors being logged. So it wasn&apos;t just me.&lt;/p&gt;
&lt;p&gt;A couple of weeks later we took it back and it stayed in for a few days, during which they informed me they&apos;d referred it up to Kia Australia. Finally they identified a fault with a high-voltage cable being too close to other wiring and causing interference and the &apos;phantom&apos; warnings.&lt;/p&gt;
&lt;p&gt;It was disappointing to be without our new car for about a week all up (at least we were given a loan car) but hopefully that problem is permanently resolved.&lt;/p&gt;
&lt;h2&gt;Bells and whistles&lt;/h2&gt;
&lt;p&gt;The new car is quite an upgrade from the old Sorento. Like most new cars on the market these days, it comes with a fully electronic dashboard, with navigation and all kinds of driving assistance features. Many of these like to go &apos;ding&apos;! The steering wheel will rumble if the car thinks you&apos;re going out of your lane (or if it thinks you&apos;re about to change lanes and bump into a car).&lt;/p&gt;
&lt;p&gt;As an avid Double-J Radio listener, I do appreciate having DAB digital radio built in.&lt;/p&gt;
&lt;p&gt;Apple CarPlay is also nice, though maybe I&apos;m &quot;holding it wrong&quot; as I&apos;ve missed a few messages sometimes, that I thought I would get notified about. Also a bonus to be able to rely on Bluetooth and retire the old Aux cable. There can be a bit of competition now as to whose phone is the one to connect first and choose their music!&lt;/p&gt;
&lt;p&gt;The built-in speed limit warnings are handy, except when they&apos;re not. As I understand it, the car can detect speed limit signs, but it presumably has some fallback mapping data that it defaults to. The quality of that data is variable. Some roads that have changed speed limits in the last year are obviously still using the old speed limits in its dataset. Others seem to have weird limits that make no sense - eg. there&apos;s a couple of roads where it insists the limit is &quot;55km/h&quot; - there is never a &quot;55&quot; speed limit. 40, 50 or 60, but not 55. I wish I knew how to submit updates or give feedback.&lt;/p&gt;
&lt;p&gt;The EV5 does come with V2L (Vehicle to Load) with a standard Australian power point inside the boot. I haven&apos;t used it yet, but it&apos;s good to know the option is there. Handy if you&apos;re out on a picnic and want to boil a kettle, or if we ever have another massive storm with extended blackouts then we could use the car&apos;s battery to tide us over.&lt;/p&gt;
&lt;p&gt;The car came with a standard charging cable (known by some as a &apos;granny&apos; charger), that just plugs into a regular wall socket. My plan was to see how we went with that, knowing that it may take a while to recharge. In the short-term I could always take the car to a nearby fast-charging point, but if it became a regular problem then installing a higher-powered home charger would always an option.&lt;/p&gt;
&lt;h2&gt;Range anxiety?&lt;/h2&gt;
&lt;p&gt;The old car would average around 600km on a full tank. The new car has a nominal range of 400km, but I&apos;ve found it can vary a bit depending on the kind of driving you&apos;re doing. Shorter drives to the shops or around town are easy. The longest we&apos;ve done so far is a round trip to Port Elliott/Victor Harbor (~145km) which has been fine as well. I did notice that the faster highway driving does use up a bit more battery than just the normal suburban trips. But that&apos;s pretty normal for current generation EVs.&lt;/p&gt;
&lt;p&gt;The more we use it, the more we get a feel for what it can do. I&apos;m looking forward to taking on a longer drive. Yes, we&apos;ll need to plan out our stops for recharging, but given you really should stop every couple of hours for a break, I think that should coincide nicely.&lt;/p&gt;
&lt;p&gt;And then there&apos;s the joy of driving past a petrol station and just ignoring the price of petrol. Probably the only downside to that is it means I need to be more intentional about stopping in occasionally just to keep the tyres up to pressure.&lt;/p&gt;
&lt;p&gt;So yes, I&apos;m happy we chose it.&lt;/p&gt;
</content>
    <media:thumbnail url="https://david.gardiner.net.au/_astro/kia-ev5-showroom.hPwFEQqb.jpg" width="1142" height="857"/>
    <media:content medium="image" url="https://david.gardiner.net.au/_astro/kia-ev5-showroom.hPwFEQqb.jpg" width="1142" height="857"/>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2026/08/home-assistant</id>
    <updated>2026-08-16T22:00:00.000+09:30</updated>
    <title>Home Assistant</title>
    <link href="https://david.gardiner.net.au/2026/08/home-assistant" rel="alternate" type="text/html" title="Home Assistant"/>
    <category term="Energy"/>
    <category term="Home Assistant"/>
    <category term="Synology"/>
    <published>2026-08-16T22:00:00.000+09:30</published>
    <summary type="html">Getting started with Home Assistant, installing and configuring the Home Assistant Community Store,
and then installing an integration for GloBird Energy to track electricity (and later gas) usage.</summary>
    <content type="html">&lt;p&gt;My first exposure to &lt;a href=&quot;https://www.home-assistant.io/&quot;&gt;Home Assistant&lt;/a&gt; (or &apos;HA&apos; for short) was as an option for triggering a hallway light from a motion sensor for people who might want to go to the bathroom in the middle of the night. I know you can get self-contained sensor lights that do all that, but while I was researching those I found a few references to HA and I was intrigued.&lt;/p&gt;
&lt;p&gt;I spun up a container on our Synology and had a play. Then I discovered that we already had a few devices in our house that it could talk to, like our UniFi network gear, the Synology itself and even our solar inverter!&lt;/p&gt;
&lt;p&gt;I was curious about what else it could work with. I noticed that there were &lt;a href=&quot;https://www.home-assistant.io/integrations/&quot;&gt;lots of integrations you could search for&lt;/a&gt;, including some power companies. But not the one I was using at the time - &lt;a href=&quot;https://quote.globirdenergy.com.au/quote?pcode=refer&amp;amp;ref=6OIYNZ&quot;&gt;GloBird Energy&lt;/a&gt;. I did a general web search and discovered someone had built a custom integration for GloBird with HA - &lt;a href=&quot;https://github.com/bolagnaise/globird-ha&quot;&gt;https://github.com/bolagnaise/globird-ha&lt;/a&gt; using something called &quot;HACS&quot;. It turns out that HACS is the &lt;a href=&quot;https://hacs.xyz/&quot;&gt;Home Assistant Community Store&lt;/a&gt;. Once you add HACS to your HA, you can add a whole bunch of additional 3rd-party integrations, plugins, themes and scripts. Lots of these are listed in the HACS store, but you can also add custom repositories that point to a Git repo (eg on GitHub) too.&lt;/p&gt;
&lt;h2&gt;Adding HACS to Home Assistant&lt;/h2&gt;
&lt;p&gt;After confirming I was running a recent version of Home Assistant, I followed the &lt;a href=&quot;https://hacs.xyz/docs/use/download/download/#to-download-hacs-container&quot;&gt;HACS instructions for installing into a Container&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As my container is running on my Synology NAS server, I needed to &lt;code&gt;ssh&lt;/code&gt; to the Synology, then I could use the &lt;code&gt;docker&lt;/code&gt; command to manage the container&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-01-configure-hacs.DovvZHwh_17CRrD.webp&quot; alt=&quot;Screenshot of terminal session enabling HACS download&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Once you&apos;ve done that then you can return to HA and proceed to setup HACS from within the UI.&lt;/p&gt;
&lt;p&gt;Now you can search for HACS as a new integration&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-03-install-hacs.DciOIMC9_ZsKN2e.webp&quot; alt=&quot;Screenshot of HA searching for HACS&quot; /&gt;&lt;/p&gt;
&lt;p&gt;There&apos;s a few conditions to confirm before proceeding&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-02-install-hacs-confirm.DlH55fS9_Wjc72.webp&quot; alt=&quot;Screenshot of HA HACS confirmation dialog&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then a short wait for HACS to activate&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-04-activate-hacs.g7Lc7s0p_uq7m9.webp&quot; alt=&quot;Screenshot of HA waiting for HACS activation&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And then you need to authorise HACS with GitHub&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-05-authorise-hacs.iZklQCvu_Z1GSUOF.webp&quot; alt=&quot;Screenshot of HA authorising HACS&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Give HACS a name (or accept the default)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-06-hacs-name-assign.CogyEuGb_1GXiLJ.webp&quot; alt=&quot;Screenshot of HA giving HACS device a name&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And you&apos;re done&lt;/p&gt;
&lt;h2&gt;Adding GloBird integration from HACS to Home Assistant&lt;/h2&gt;
&lt;p&gt;Now that HACS is installed, there&apos;s a whole new list of integrations to choose from. But at the time GloBird wasn&apos;t in that list. That&apos;s ok. We can add a custom repository to let HACS know about it. Use the context menu.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-07-hacs-add-custom-repo.C2_resbr_1i8TdG.webp&quot; alt=&quot;Screenshot of HACS showing custom repositories menu item&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then enter the Git repository URL and select &apos;Integration&apos; from the &lt;strong&gt;Type&lt;/strong&gt; list.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-08-hacs-globird-repo.BTqFddB6_CfDPc.webp&quot; alt=&quot;Screenshot of HACS entering GloBird custom repository details&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now that HACS is aware of the new repository, you can search the HACS store and GloBird will appear in the list.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-09-hacs-store.bqTI5oSb_2rql9K.webp&quot; alt=&quot;Screenshot of HACS store showing &quot; /&gt;&lt;/p&gt;
&lt;p&gt;Click on the context menu and choose &lt;strong&gt;Download&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-10-hacs-globird-downloading.s4bynB5R_ZqrmFw.webp&quot; alt=&quot;Screenshot of HACS store downloading GloBird&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Once it is downloaded, HA lets you know that it needs to be restarted.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-11-hacs-globird-pending-resart.CraryHFX_ZBEchO.webp&quot; alt=&quot;Screenshot of HA showing GloBird integration pending restart&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The first time I saw this, I switched back to the Synology Container Manager to restart the container. (I later realised that HA can actually restart itself through the UI and using Container Manager wasn&apos;t necessary!)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-12-synology-container-manager.BLZbenLX_27c1aE.webp&quot; alt=&quot;Screenshot of Synology showing Container Manager&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now that the GloBird integration is installed, you can click on the Plus icon, and choose &lt;strong&gt;Add device&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Then enter &apos;GloBird&apos; and click on the matching item.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-13-find-brand.DTBo4mVD_Zj9ESR.webp&quot; alt=&quot;Screenshot of HA searching for GloBird&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You&apos;ll be prompted to enter your credentials. For GloBird this is your account email and password.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-14-globird-credentials.BvFkfCHN_ZFNGHK.webp&quot; alt=&quot;Screenshot of HA entering GloBird credentials&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You can accept the default device name or change it, and optionally assign the device to a &apos;room&apos;. That makes more sense for physical devices in or around your house, but you can still do the same for &apos;utility&apos; devices like an electricity provider.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-15-globird-name-assign.DaDjDpP8_rowT4.webp&quot; alt=&quot;Screenshot of HA assigning a name to GloBird device&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And with that, the integration should be installed and configured. You can now see a page that shows all the current sensors and information from the device.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-16-globird-device-info.BUqhBRdx_Z1BcrVY.webp&quot; alt=&quot;Screenshot of HA showing GloBird device details&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You might choose to add this to one or more dashboards, and also given in this case it relates to electricity, you could also add it to the Energy page.&lt;/p&gt;
&lt;p&gt;Interestingly, when I first added the GloBird integration it provided information about our electricity account and usage, but GloBird also provide gas too (and we are using them as our gas provider). I contributed an update to the GloBird integration so that if you have a gas service with them, then you can also get that information as well.&lt;/p&gt;
&lt;p&gt;Unlike electricity, gas requires a manual measurement - either by an official meter checker, or by me taking a photo of the meter and submitting it to GloBird. So the measurements are not &quot;live&quot; like a lot of HA devices, but always in the past. Because of that, the implementation I contributed sends the readings directly to HA&apos;s &quot;&lt;a href=&quot;https://www.home-assistant.io/integrations/recorder/&quot;&gt;recorder&lt;/a&gt;&quot;. They show up in HA as &apos;statistics&apos;, and you can visualise them.&lt;/p&gt;
&lt;p&gt;Here&apos;s our recent monthly gas usage in HA.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ha-17-gas-usage.DHDF10YB_13tiok.webp&quot; alt=&quot;Graph of gas usage from March to August&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I&apos;ve since switched to a different electricity provider but I&apos;m still using GloBird for gas. I&apos;ll be keeping an eye on their plans and there&apos;s always a chance I switch back.&lt;/p&gt;
&lt;p&gt;Feel free to use &lt;a href=&quot;https://quote.globirdenergy.com.au/quote?pcode=refer&amp;amp;ref=6OIYNZ&quot;&gt;this referral link if you want to check out GloBird for electricity or gas&lt;/a&gt; in Australia. You and I both get $50 credit (&lt;a href=&quot;https://www.globirdenergy.com.au/legal/referral-terms-conditions/&quot;&gt;conditions apply&lt;/a&gt;)&lt;/p&gt;
</content>
    <media:thumbnail url="https://david.gardiner.net.au/_astro/ha-17-gas-usage.DHDF10YB.png" width="690" height="634"/>
    <media:content medium="image" url="https://david.gardiner.net.au/_astro/ha-17-gas-usage.DHDF10YB.png" width="690" height="634"/>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2026/08/solar-problems</id>
    <updated>2026-08-13T21:30:00.000+09:30</updated>
    <title>Solar panel problems</title>
    <link href="https://david.gardiner.net.au/2026/08/solar-problems" rel="alternate" type="text/html" title="Solar panel problems"/>
    <category term="Energy"/>
    <published>2026-08-13T21:30:00.000+09:30</published>
    <summary type="html">When you start getting emails from your solar panels, something strange is going on</summary>
    <content type="html">&lt;p&gt;Back in March last year I discovered that the company that originally &lt;a href=&quot;/2011/10/going-solar&quot;&gt;installed our solar panels back in 2011&lt;/a&gt; had gone out of business. It was only in 2022 that they&apos;d replaced a faulty inverter, so that was quite a surprise. I thought that they were a stayer, but like so many other solar companies, they didn&apos;t last.&lt;/p&gt;
&lt;p&gt;When the inverter was installed, they configured it so that supposedly they would be monitoring it, and I was given &quot;guest&quot; access to view the daily statistics. I realised that obviously they wouldn&apos;t be monitoring it now they no longer existed. I got in touch with &lt;a href=&quot;https://www.fronius.com/en-au/australia&quot;&gt;Fronius&lt;/a&gt; (the inverter manufacturer) and they were able to give me &apos;administrator&apos; access. In doing that I updated the email it was using to send any notifications.&lt;/p&gt;
&lt;p&gt;With my admin access, I now discovered that the firmware for the inverter and data sensor were both really outdated. Probably the same version it came with when it was installed. Something I assumed the installer would have been taking care of, but apparently not. Needless to say I fixed that.&lt;/p&gt;
&lt;p&gt;And all was good until around November when I started getting some emails from the inverter saying &quot;Code 475 Isolation Error&quot;. Not the most helpful of error messages! And we&apos;re heading into Summer when you want those panels working hard.&lt;/p&gt;
&lt;p&gt;I contacted a few local solar companies - some just wanted to replace everything with a brand new, larger system, without even coming to take a look. &lt;a href=&quot;https://www.lammelectrical.com.au/&quot;&gt;LAMM Solar and Electrical&lt;/a&gt; were a bit more helpful.&lt;/p&gt;
&lt;p&gt;One reason I tried them in the first place was that I remember seeing them at a local community fete. I was in favour of using a local company if possible.&lt;/p&gt;
&lt;p&gt;One of their guys came out, discovered that one of my panels had actually cracked. It could have been a branch blown in the wind, or a bird dropping something on it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/shattered-solar-panel.Bx64Kc91_SfTGQ.webp&quot; alt=&quot;A solar panel with the glass cover all shattered&quot; /&gt;&lt;/p&gt;
&lt;p&gt;As a short-term fix they disconnected the group of panels it was in. Our inverter was happier, though we now had slightly less generating capacity. Unfortunately, due to the age of the panel, it would be really unlikely to be able to replace it with another of the same capacity.&lt;/p&gt;
&lt;p&gt;Our panels were back up and running, and if we ever needed someone to do more work on them then I now know a good company to deal with (and more about that soon).&lt;/p&gt;
</content>
    <media:thumbnail url="https://david.gardiner.net.au/_astro/shattered-solar-panel.Bx64Kc91.jpg" width="321" height="428"/>
    <media:content medium="image" url="https://david.gardiner.net.au/_astro/shattered-solar-panel.Bx64Kc91.jpg" width="321" height="428"/>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2026/08/power-posts</id>
    <updated>2026-08-09T21:00:00.000+09:30</updated>
    <title>Power Posts</title>
    <link href="https://david.gardiner.net.au/2026/08/power-posts" rel="alternate" type="text/html" title="Power Posts"/>
    <category term="Energy"/>
    <published>2026-08-09T21:00:00.000+09:30</published>
    <summary type="html">I want to write some blog posts related to energy and electricity, but am having trouble knowing where to start</summary>
    <content type="html">&lt;p&gt;I&apos;ve got a number of blog posts buzzing around in my head that I need to write up, all related to the topics of energy and electricity.&lt;/p&gt;
&lt;p&gt;I think what&apos;s making it hard to get them out is they&apos;re all kind of interrelated. Yes, there is a timeline of events, but they cross over a bit, so figuring out which one to start with has me spinning my wheels a bit.&lt;/p&gt;
&lt;p&gt;Hence this short post to at least get the ideas down as a list:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Solar panels (repairing vs replacing ours)&lt;/li&gt;
&lt;li&gt;Electric vehicles (and the one we now have)&lt;/li&gt;
&lt;li&gt;EV charging&lt;/li&gt;
&lt;li&gt;Electricity smart meters&lt;/li&gt;
&lt;li&gt;Choosing electricity plans&lt;/li&gt;
&lt;li&gt;Home Assistant&lt;/li&gt;
&lt;li&gt;Creating Home Assistant integrations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ok. That&apos;s probably the posts I need to work on. Let&apos;s see which one comes together first 😀&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2026/07/dotnet-on-macos</id>
    <updated>2026-07-19T13:30:00.000+09:30</updated>
    <title>Multiple .NET SDK versions and PowerShell on macOS with Homebrew</title>
    <link href="https://david.gardiner.net.au/2026/07/dotnet-on-macos" rel="alternate" type="text/html" title="Multiple .NET SDK versions and PowerShell on macOS with Homebrew"/>
    <category term=".NET"/>
    <category term="macOS"/>
    <category term="PowerShell"/>
    <published>2026-07-19T13:30:00.000+09:30</published>
    <summary type="html">How to run multiple .NET SDK versions on macOS with Homebrew while keeping PowerShell working, by using alternate casks and adjusting PATH precedence.</summary>
    <content type="html">&lt;p&gt;As a long-time &lt;a href=&quot;https://community.chocolatey.org&quot;&gt;Chocolatey&lt;/a&gt; user on Windows, it&apos;s not surprising that &lt;a href=&quot;https://brew.sh/&quot;&gt;Homebrew&lt;/a&gt; has become my go-to solution for installing software on macOS. There are a few quirks though, and the .NET SDK is one of them.&lt;/p&gt;
&lt;p&gt;There&apos;s a &lt;a href=&quot;https://formulae.brew.sh/formula/dotnet&quot;&gt;dotnet&lt;/a&gt; &apos;Formula&apos; (which installs the &lt;code&gt;dotnet&lt;/code&gt; binary in &lt;code&gt;/opt/homebrew/bin/dotnet&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;There&apos;s also a &lt;a href=&quot;https://formulae.brew.sh/cask/dotnet-sdk&quot;&gt;dotnet-sdk&lt;/a&gt; &apos;Cask&apos;, but these are not compatible, and are known to conflict with each other.&lt;/p&gt;
&lt;p&gt;(&lt;a href=&quot;https://docs.brew.sh/Formula-Cookbook#homebrew-terminology&quot;&gt;For my own benefit&lt;/a&gt;, a &apos;formula&apos; is &quot;Homebrew package definition that builds from upstream sources&quot;, and a &apos;cask&apos; is a &quot;Homebrew package definition that installs pre-compiled binaries built and signed by upstream&quot;)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://formulae.brew.sh/formula/powershell&quot;&gt;PowerShell&lt;/a&gt; is also available via Homebrew, and interestingly it depends on the &apos;dotnet&apos; formula, so if you also want to install PowerShell this way then that makes the decision for you.&lt;/p&gt;
&lt;p&gt;But there&apos;s another problem. It&apos;s quite common to need to have multiple versions of .NET SDKs installed. Unfortunately the way that the default &apos;dotnet&apos; formulae work is that while you can run &lt;code&gt;brew install dotnet@8&lt;/code&gt; as well, you only end up with one .NET SDK available (e.g. when you run &lt;code&gt;dotnet --list-sdks&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Fortunately, some community members have built their own Homebrew packages that resolve this. I&apos;ve used the one created by &lt;a href=&quot;https://www.junian.dev/&quot;&gt;Junian Triajianto&lt;/a&gt; in &lt;a href=&quot;https://github.com/junian/homebrew-dotnet&quot;&gt;https://github.com/junian/homebrew-dotnet&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After adding his &apos;tap&apos; (a &lt;a href=&quot;https://docs.brew.sh/Taps&quot;&gt;Tap&lt;/a&gt; is Homebrew&apos;s term for a 3rd-party repository)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;brew trust junian/homebrew-dotnet
brew tap junian/homebrew-dotnet
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can then install the SDKs. Note that you should use the full version number &apos;8.0&apos; or &apos;10.0&apos; otherwise Homebrew might install the above cask instead of Junian&apos;s&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;brew install dotnet-sdk@8.0
brew install dotnet-sdk@10.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That installs &lt;code&gt;dotnet&lt;/code&gt; in &lt;code&gt;/usr/local/share/dotnet/dotnet&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&quot;But hey, what about PowerShell?&quot; you ask!&lt;/p&gt;
&lt;p&gt;Installing PowerShell via Homebrew will still install the dependent package &apos;dotnet&apos;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;brew install powershell
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And by default Homebrew will have updated the PATH so that its binaries are found first. We need to fix that&lt;/p&gt;
&lt;p&gt;I edited my &lt;code&gt;~/.zprofile&lt;/code&gt; and appended the following to it:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Force the https://github.com/junian/homebrew-dotnet versions of .NET (not the one installed by PowerShell)
export DOTNET_ROOT=&quot;/usr/local/share/dotnet&quot;

# Keep dotnet ahead of Homebrew paths.
typeset -U path
path=(&quot;$DOTNET_ROOT&quot; &quot;$HOME/.dotnet/tools&quot; $path)
export PATH
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The end result is that I get multiple .NET SDKs working:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dotnet --list-sdks
8.0.423 [/usr/local/share/dotnet/sdk]
10.0.302 [/usr/local/share/dotnet/sdk]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But PowerShell is still happy too:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/macos-powershell-launching.8pddqUKe_Z2aY3e5.webp&quot; alt=&quot;Screenshot of macOS terminal with PowerShell being launched&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In this scenario, I&apos;d suggest that Chocolatey probably does a better job of curating packages so that you don&apos;t end up with multiple variations of packages for the same software, but it&apos;s good that Homebrew offers a way to resolve the issue.&lt;/p&gt;
</content>
    <media:thumbnail url="https://david.gardiner.net.au/_astro/dotnet.DQUHciW5.png" width="456" height="456"/>
    <media:content medium="image" url="https://david.gardiner.net.au/_astro/dotnet.DQUHciW5.png" width="456" height="456"/>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2026/06/switchy-switch</id>
    <updated>2026-06-16T20:30:00.000+09:30</updated>
    <title>The network switch that keeps switching more than it should</title>
    <link href="https://david.gardiner.net.au/2026/06/switchy-switch" rel="alternate" type="text/html" title="The network switch that keeps switching more than it should"/>
    <category term="Hardware"/>
    <category term="Networking"/>
    <category term="Synology"/>
    <published>2026-06-16T20:30:00.000+09:30</published>
    <summary type="html">How I accidentally discovered that one of my home network switches seems unable to decide who its upstream
device should be.</summary>
    <content type="html">&lt;p&gt;A couple of months ago a suggestion came up at home about getting some kind of low-powered light in the hallway for people who might need to go to the bathroom in the middle of the night. Not an unreasonable request - maybe some LED strip lights would work? And then I wondered, how about adding a motion sensor? And then could you integrate it with some home automation of some kind? And that&apos;s how I ended up completely distracted looking at &lt;a href=&quot;https://www.home-assistant.io/&quot;&gt;Home Assistant&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Installing it on our Synology NAS seemed the logical choice, and it was pretty straightforward, going down the Docker container route. I clicked around the UI and it looked interesting, but didn&apos;t go much further (and I must admit by that time I&apos;d forgotten the original reason for heading down this rabbit hole).&lt;/p&gt;
&lt;p&gt;Then a couple of weeks ago we got a new car (a Kia EV5) and it has an app that you can use to check current status and some limited remote control options. Given the need to charge it at home started me off on a new area of research for home charging devices, and also considering the current state of our home solar panels - whether to upgrade them, or at least figure out how to replace some that have had to be taken out of service due to impact damage.&lt;/p&gt;
&lt;p&gt;That inspired me to go back and take another look at my Home Assistant instance, and see if I could add some &apos;integrations&apos; with some of the existing networked devices we already have. It turns out our current model solar panel inverter (a &lt;a href=&quot;https://www.fronius.com/en-au/australia/solar-energy/home-owners&quot;&gt;Fronius&lt;/a&gt;) is supported, as well as the &lt;a href=&quot;https://techspecs.ui.com/unifi&quot;&gt;Ubiquiti UniFi&lt;/a&gt; networking gear I have installed. That is pretty cool.&lt;/p&gt;
&lt;p&gt;And that is a very long way of getting to the point of this blog post - once I had these devices integrated, I noticed in Home Assistant&apos;s &lt;strong&gt;Activity&lt;/strong&gt; page, that there were heaps of these entries being logged for my UniFi &lt;a href=&quot;https://www.amazon.com.au/Ubiquiti-Flex-Managed-Gigabit-Switch/dp/B08VRV9PWD?&amp;amp;linkCode=ll2&amp;amp;tag=flcdrg07-22&amp;amp;linkId=0dfeac74af4a36b6280c22ca74a2afad&amp;amp;ref_=as_li_ss_tl&quot;&gt;USW Flex Mini&lt;/a&gt; switch:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/home-assistant-activity-uplink-mac.8u9k_5cq_Z96Tnj.webp&quot; alt=&quot;Screenshot of Activity page in Home Assistant showing USW Flex Mini Uplink MAC address changing frequently&quot; /&gt;&lt;/p&gt;
&lt;p&gt;For some reason, either the Flex Mini switch itself, or my &lt;a href=&quot;https://www.amazon.com.au/Ubiquiti-UniFi-Cloud-Gateway-Ultra/dp/B0D8PSW2BZ?&amp;amp;linkCode=ll2&amp;amp;tag=flcdrg07-22&amp;amp;linkId=39ad4320d21517a1048ccd7df111cbd5&amp;amp;ref_=as_li_ss_tl&quot;&gt;UniFi Cloud Gateway Ultra&lt;/a&gt; thinks that the uplink MAC address for the switch is changing every minute. That is really weird.&lt;/p&gt;
&lt;p&gt;The physical arrangement of networking hardware in our home looks roughly like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
graph TD;
    ISP --&amp;gt; GW
    GW[Cloud Gateway Ultra]
    click GW href &quot;https://www.amazon.com.au/Ubiquiti-UniFi-Cloud-Gateway-Ultra/dp/B0D8PSW2BZ?&amp;amp;linkCode=ll2&amp;amp;tag=flcdrg07-22&amp;amp;linkId=39ad4320d21517a1048ccd7df111cbd5&amp;amp;ref_=as_li_ss_tl&quot; &quot;Cloud Gateway Ultra on Amazon&quot; _blank
    GW --&amp;gt; TP

    TP[TP-Link Switch]
    TP --&amp;gt; PR

    LT(UAP AC Lite)
    TP --&amp;gt; LT

    PR(AC Pro)
    click PR href &quot;https://www.amazon.com.au/UAP-AC-PRO-UBIQUITI-Ac1750-Access-Injector/dp/B07JDNS774?&amp;amp;linkCode=ll2&amp;amp;tag=flcdrg07-22&amp;amp;linkId=bfe6e1c092cbf6dbf88d14b28e295ed4&amp;amp;ref_=as_li_ss_tl&quot; &quot;AC Pro&quot; _blank

    USW(USW Flex Mini)
    click USW href &quot;https://www.amazon.com.au/Ubiquiti-Flex-Managed-Gigabit-Switch/dp/B08VRV9PWD?&amp;amp;linkCode=ll2&amp;amp;tag=flcdrg07-22&amp;amp;linkId=0dfeac74af4a36b6280c22ca74a2afad&amp;amp;ref_=as_li_ss_tl&quot; &quot;USW Flex Mini switch on Amazon&quot; _blank
    TP --&amp;gt; USW
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I had to do some hunting within the Cloud Gateway UI to figure out what the devices where that corresponded to the two MAC addresses.&lt;/p&gt;
&lt;p&gt;One was indeed the gateway (which is what I would expect). The second, surprisingly turned out to be &lt;a href=&quot;https://www.amazon.com.au/UAP-AC-PRO-UBIQUITI-Ac1750-Access-Injector/dp/B07JDNS774?&amp;amp;linkCode=ll2&amp;amp;tag=flcdrg07-22&amp;amp;linkId=bfe6e1c092cbf6dbf88d14b28e295ed4&amp;amp;ref_=as_li_ss_tl&quot;&gt;AC Pro wireless access point&lt;/a&gt;. That doesn&apos;t make a lot of sense - it&apos;s a wireless access point. It should not be acting as the upstream for a wired device.&lt;/p&gt;
&lt;p&gt;It&apos;s funny though. Once you&apos;re paying attention to something, you often notice other things that have probably been there the whole time.&lt;/p&gt;
&lt;p&gt;Switching to the Cloud Gateway UI and bringing up the &lt;strong&gt;Network&lt;/strong&gt; page, I noticed something interesting.&lt;/p&gt;
&lt;p&gt;At first it looked as I would have expected:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/gateway-network1.1E1pG1Li_2UGfQ.webp&quot; alt=&quot;Screenshot from Cloud Gateway Network page with expected layout&quot; /&gt;&lt;/p&gt;
&lt;p&gt;But then while on that page it updated and woah! That lines up with those logs!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/gateway-network2.1r40Rzbb_ZC8CXu.webp&quot; alt=&quot;Screenshot from Cloud Gateway Network page with unexpected layout&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Both the Flex Mini switch and the AC Pro access point use Power over Ethernet (PoE), and the &lt;a href=&quot;https://www.amazon.com.au/TP-Link-Gigabit-Ethernet-Unmanaged-TL-SG1008P/dp/B00BP0SSAS?th=1&amp;amp;linkCode=ll2&amp;amp;tag=flcdrg07-22&amp;amp;linkId=6bbad2b757ca1431cfe8c2b8e50ccbfc&amp;amp;ref_=as_li_ss_tl&quot;&gt;TP-Link switch&lt;/a&gt; provides that on some of its ports so I had them both plugged into that.&lt;/p&gt;
&lt;p&gt;The TP-Link is not a managed switch. It is essentially &apos;invisible&apos; to other devices on the network (notice how it doesn&apos;t show up on those Gateway Network diagrams above), so I wonder if that may be relevant?&lt;/p&gt;
&lt;p&gt;To test this theory, I changed the cables so that the Flex Mini is plugged directly into the Cloud Gateway. But as the gateway doesn&apos;t provide PoE I needed to power the Mini directly through its USB-C port.&lt;/p&gt;
&lt;p&gt;Making that change, and now the Cloud Gateway&apos;s Network page reverts back to the expected layout and doesn&apos;t change. Home Assistant&apos;s Activity log also becomes a lot quieter.&lt;/p&gt;
&lt;p&gt;That seems to have solved the problem. I&apos;d really prefer to keep using PoE for the Flex Mini switch, but I suspect to do that in a reliable way might mean replacing the unmanaged TP-Link switch with a newer managed one - something like the UniFi &lt;a href=&quot;https://www.amazon.com.au/Ubiquiti-UniFi-Switch-8-Port-Network/dp/B0C6BPKXDF?&amp;amp;linkCode=ll2&amp;amp;tag=flcdrg07-22&amp;amp;linkId=5a4b1ea1f998e5eb75850909842534ac&amp;amp;ref_=as_li_ss_tl&quot;&gt;USW Lite 8&lt;/a&gt; or &lt;a href=&quot;https://www.amazon.com.au/Ubiquiti-Ultra-8-Port-Network-Switch/dp/B0CR1YNLXC?&amp;amp;linkCode=ll2&amp;amp;tag=flcdrg07-22&amp;amp;linkId=a2f9311298976c19d21acec1f9d7eb81&amp;amp;ref_=as_li_ss_tl&quot;&gt;USW Ultra&lt;/a&gt;. Except it does seem the price jumps quite a bit when you go from 5 ports to 8. Maybe I&apos;ll stick with the USB-C power option for now.&lt;/p&gt;
&lt;p&gt;Amazon affiliate links&lt;/p&gt;
</content>
    <media:thumbnail url="https://david.gardiner.net.au/_astro/unifi-usw-flex-mini-00.BEVh-cO7.jpg" width="493" height="180"/>
    <media:content medium="image" url="https://david.gardiner.net.au/_astro/unifi-usw-flex-mini-00.BEVh-cO7.jpg" width="493" height="180"/>
  </entry>
</feed>
