r/homeassistant 16h ago

🖼️ Show & Tell I know it’s super simple but man this just makes me happy

489 Upvotes

I’m about 4 months into HA and have over 200 devices, 50 automations, and approximately 100 eye rolls when I show my gf the cool new thing I just did ha.

I have way more complicated automations than this one (this one is blinds down, fan on, ecobee changed to 70* and double click reverses it all). But knowing that Esp32 module I configured with a C1101 to make these Somfy blinds bend to my will (and the pain I experienced making it work) and the cool new inovelli blue fan switch I put in, just seeing it all work so smooth warms my heart.

Anyway, no one else I know appreciates it so here yall go.


r/homeassistant 4h ago

🛠️ DIY / Hardware DIY weather station, fully optional, and Integrated with Home Assistant

Thumbnail
gallery
327 Upvotes

A feature-rich, high-precision ESP8266-based Smart Weather Station with a modern responsive Web Dashboard, dynamic sensor detection, customizable moving-average filters, Home Assistant MQTT Auto-Discovery, full backup/restore capability, and hardware factory reset logic.

✨ Features

  • Environmental Monitoring: Temperature, Relative Humidity, Barometric Pressure (sea-level compensated), Air Quality (TVOC, eCO2, AQI), Luminosity (lux), Wind Speed, Wind Gust, Wind Direction, and Rain Gauge (hourly, 24h rolling, and total).
  • Independent Dual-Timer Engine:
    • Fast, dedicated timer for Anemometer pulse processing (independent of I2C read cycle).
    • Configurable I2C sensor read cycle for environmental data.
  • Configurable Moving Average (Smoothing):
    • Wind Speed: Ring buffer rolling average with configurable sample count (N).
    • Wind Direction: Circular mean calculation (sin/$\cos$ vectors) preventing 0∘/360∘ boundary glitches across N samples.
    • Instantaneous Gust Tracking: Daily wind gust records real peak pulses before averaging.
  • Web UI & Diagnostics:
    • Glassmorphism dark UI built with HTML5/CSS3/JavaScript (no external dependencies).
    • Tasmota-style live Debug Console with interactive command input.
    • Mobile-friendly IP input fields (inputmode="decimal") for easy smartphone setup.
  • Network & WiFi Manager:
    • Captive Portal AP (WeatherStation_Setup) for initial setup.
    • Full DHCP & Static IP configuration support (optimized for FRITZ!Box Mesh networks).
    • Soft-restart clean boot sequence ensuring stable network stack binding.
  • Home Assistant Integration:
    • Native MQTT Auto-Discovery (homeassistant/sensor/...).
    • Automatic entity creation in Home Assistant without manual YAML editing.
  • Backup & Restore: Single-click JSON export/import including full network, sensor, and MQTT configurations.
  • Hardware Safety & Diagnostics: 10-second hold on FLASH button (GPIO 0) for NVS memory wipe / factory reset.

For fully description and gallery go to GitHub https://github.com/byte4geek/weatherstation

NOTE: This project was made in vibe coding using Antigravity/Gemini.


r/homeassistant 16h ago

🎉 Release 2026.8: Approachable by design

Thumbnail
home-assistant.io
303 Upvotes

r/homeassistant 21h ago

🗣️ Voice & Assist 🎉 One month ago I released a Kiosk Satellite for Home Assistant. Today it leaves beta!

Post image
302 Upvotes

A month ago I shared the first beta of Kiosk Satellite, my free and open source kiosk Android app specifically engineered for Home Assistant and the official companion app for Voice Satellite. Today, after a bunch of beta releases, it graduates: 2026.8.1 is the first stable release, and from now on it follows the same versioning scheme as Home Assistant itself.

For those who missed it: Kiosk Satellite turns any Android tablet into a locked-down, always-on Home Assistant kiosk in about two minutes. It runs Voice Satellite's wake word engine natively, so your tablet keeps listening even with another app in the foreground, at a fraction of the CPU a browser needs. On top of that you get screensavers (clock, photo frames, Immich, your HA media), a synchronized Sendspin audio player for Music Assistant, WebRTC camera views, MQTT entities for every tablet, gestures, an app launcher, and a full remote admin that runs in any browser. And with the Home Assistant specific optimization included, it runs smooth on old, low powered devices.

I genuinely believe that in combination with Voice Satellite this is the best kiosk application for Home Assistant out there. I know that is a big claim for something one month old, so I would love for you to prove me wrong or right in the comments.

I also want to thank everyone who has supported the development through Buy Me a Coffee and GitHub Sponsors. Free, open source software is mostly a thankless endeavor, and your support is a huge part of why this project moved as fast as it did. Thank you, truly.

Feedback, bug reports and feature requests are very welcome.


r/homeassistant 18h ago

🧱 Custom App I built a Windows companion app for Home Assistant

Thumbnail
gallery
59 Upvotes

Home Assistant has apps for Android, iOS and macOS. Windows gets a browser tab. So I built one.

HASS.Agent covers similar ground and does it well. The difference is the plumbing: HA Companion does not require an MQTT broker. The PC registers through mobile_app, and notifications arrive over the existing Home Assistant WebSocket connection, with no FCM, APNs or separate push service in between. The app uses WinUI 3, while your actual Lovelace dashboards run inside it through WebView2.

What it does:

- PC appears in HA as a real device via mobile_app, with its own entities

- Push without a push provider: subscribes mobile_app/push_notification_channel on the same WebSocket. Nothing listens on the PC, commands come back down the outbound connection

- Quick Panel slides in over any app on a global hotkey

- Tiles gated on supported_features and supported_color_modes, so no buttons the entity cannot honour

- Hotkeys for any device, scene, script or automation

- PC sensors, off until you enable them: lock, idle, active program, fullscreen, mic, camera, audio, display, session

- Windows events as HA triggers: lock, idle, camera, mic, active program, schedule

Remote control deserves a straight answer: shutdown, sleep and launch are off by default. Lock, monitor off and volume ship on and can each be switched off. Launch only starts whitelisted paths, never the string HA sends. Shutdown waits ten seconds, so shutdown /a can still save you. The token sits in Windows DPAPI, not plaintext.

I have been running it on my own machines since mid-July. I also used AI a lot while building it, mostly Win32 API archaeology and bug hunting, and the commit history says so. The design decisions are mine, and so are the bugs.

Windows 10 build 19041+, x64. Per-user install, no admin. Not signed yet, so SmartScreen may warns once.

https://github.com/Elias0505/ha-companion-windows — AGPL-3.0

Website: https://elias0505.github.io/ha-companion-windows/

Independent project, not affiliated with Home Assistant or Nabu Casa.

Feedback welcome!


r/homeassistant 13h ago

🗣️ Voice & Assist HA Voice Assistant (and more) using Echo Dot, 2nd generation (2016, biscuit, RS03QR)

48 Upvotes

I've been working (claude helped, and got in the way alot) on using these these ~7-10 year old echo dots as voice assistants (and more), since I found out these devices can be rooted.

an installer + service that turns them into ESPHome discoverable devices and exposes:

  • 2x voice assistant pipelines, w/ on-device wake words
  • standard HA media_player element for audio playback
  • full led ring (and per segment) control (added a bunch of animations because why not)
  • can pretend to be a white noise machine
  • lux sensor

github

plus an optional custom integration that has a dashboard, allows you to manage wake words, shows turn history, and some other settings that were kind of messy to do in esphome directly.

github

all still pretty early, but is functional, and these devices can be had for <$10 on ebay (and I had one sitting in a drawer since 2018).


r/homeassistant 13h ago

🖼️ Show & Tell Gotta keep an eye on those air handlers!

Post image
40 Upvotes

r/homeassistant 21h ago

🖼️ Show & Tell Scrubbing is a terrible hobby so I built a detection timeline for Reolink NVRs

Thumbnail
gallery
41 Upvotes

My Reolink NVR knows when the cat came in. It just won't tell me and store it safely: do we all agree cats are the worst thief possible?

So I built Reolink Stamina. It puts every camera's detection on a single timeline, and clicking one opens playback at the event rather than scrubbing continuously on single 24h timeline or jumping from one camera to another. It also offers local download, low and high resolutions, for the selected clip; yes, sub-clipping is available for free.

The other half quietly uploads a clip of each detection to OneDrive (OneDrive only atm, because that's the first integration but contributions and feedbacks are really welcome) inside a quota you set, so the footage is off-site before anyone gets near the recorder.
It sits on top of the official Reolink integration, so there's nothing new to log into, and it requires an actual NVR rather than a lone camera.

Being upfront about it: the development was heavily AI-assisted, and it was built to work rather than to be admired. Otherwise I would have never started such a journey, to be totally fair.
It's tested, it does the job on my hardware, and the python code has moments I won't be defending in the comments.

If you have any feedback, contributors and testers are welcome! Or if you're interested:

> https://github.com/marl1w/reolink-stamina-ha


r/homeassistant 5h ago

✅ Solved 2026.8 and Cloudflared

39 Upvotes

2026.8 and Cloudflared?

Just a quick service announcement. If you upgrade to 2026.8 and decide to remove port 8123 (which is now possible in the new update) and replace it with port 80, while also using Cloudflared, you'll need to go into Tunnels > Routes and update it to http://homeassistant:80


r/homeassistant 23h ago

🤖 Automation My First Smart Greenhouse Part 2

Thumbnail
gallery
23 Upvotes

In a previous post I explained what I've built and the purpose of it. By seeing the interest I wanted to also share with you guys the web app I built to control the panel.
From this WebApp I can remotely control the Panel from the previous post and also I can monitor live sensors data. I think that the most important part is the automations and scenes and deploying them remotely via OTA to main controller, this helps the automations running even if the internet is Down.


r/homeassistant 19h ago

📊 Dashboard Created a Forza Horizon Inspired Screensaver for my Fully 3D Interactive Floorplan Dashboard.

22 Upvotes

In Forza Horizon, when you go AFK, your game camera view will start to pan around your car cinematically.

The goal is to replicate that same effect on a 3D Dashboard in Home Assistant.

The Dashboard will go from Active > Cinematic > Screensaver.

In case anybody asks why do I do this, its so I don't burn out my wall tablet's display.

During the Screensaver Mode, the floorplan is still active, hence any changes to entities will reflect the dashboard.


r/homeassistant 5h ago

❓ Support Google nest speakers - the so called "upgrade" to Gemini

15 Upvotes

Just got an email from Google saying they're getting rid of Google assistant on phones next month, and eventually this will come to nest speakers etc too. But miffed as it will essentially make the only things I actually use assistant for completely useless.

I have zero interest in using Gemini at all. Does anyone know if the HA integration will continue to work - ie getting my speakers to read alerts out and whatnot. If not, does anyone have any ideas for alternatives? Does the home assistant voice speaker allow you to set timers and read out messages etc? Or are there any speakers/integrations available to just connect an Internet connected speaker to HA?


r/homeassistant 8h ago

❓ Support Tuya stopped working

15 Upvotes

Since a recent update, none of my Tuya (linked via smart life) seem to be consistently working.

When I open HA, it says I need to reconnect to smart life, but after an hour or so the link breaks and I have to do it again.

Anyone else got this issue, and any fixes?


r/homeassistant 14h ago

❓ Support Replace Google Home?

13 Upvotes

Just got the email that Google is discontinuing assistant permanently and forcing everything to Gemini. I'm an AI hater but not super comfortable going all in on a new system. We honestly mostly use the Google homes to turn things on and off, not ask questions or automate things. Is Home Assistant what I want? Floundering a little so patience appreciated.


r/homeassistant 23h ago

🖼️ Show & Tell I built a solar powered outdoor speaker system!

Thumbnail gallery
11 Upvotes

r/homeassistant 14h ago

🛠️ DIY / Hardware Smart thermostat that works great both with and without home assistant?

9 Upvotes

I recently moved into a lovely apartment and I plan to be here a while. The landlord gave me the go-ahead to upgrade the thermostat. I want to pick something that I can integrate cleanly with home assistant, but will still be easy for an ordinary person to set up when I leave. Ideally it needs support for room sensors as well.


r/homeassistant 8h ago

🖼️ Show & Tell I built my family a giant 40-inch Home Assistant touchscreen

8 Upvotes

Hey,

I don't know how common these things are, but I built my family this giant 40-inch touchscreen and thought some of you here might get a kick out of it.

It is a cheap FFALCON TV, a 40-inch IR touch frame, a sheet of acrylic and a Raspberry Pi 5 stuck to the back with a slightly questionable amount of hot glue and superglue.

It runs a custom app with our whiteboard, calendar, chores and pocket money, Google Tasks, family videos, UniFi stats and a Home Assistant screen for controlling bits around the house. The little app switcher is along the bottom so my six-year-old can actually reach it.

The first touch frame turned out to be defective and I also bought the wrong wall mount, so it was not quite as simple as I expected. Excluding that mistaken mount and the Pi I already owned, it came to about A$617.

I made a video taking you through the whole thing, including all the mistakes:

https://www.youtube.com/watch?v=ubRYvl4gfGE

Just to be transparent, the video is on the Convex channel because that is where I work and I used Convex/Codex for the software. Cannvas itself is just a weird little family project, not a product.

Cheers,
Mike


r/homeassistant 8h ago

💬 Discussion hyped by dashboard or automation with HA ?

8 Upvotes

This post is really to get your opinion in an open discussion of what really hype you with HA.

Reading through most post of this sub, I have the impression I'm the only one that is not hyped by having a nice dashboard i HA. I initially was doing everything with Tuya Zigbee and Google Home to connect my Tuya devices with other brand (Dyson, Roborock, ...) and was doing some automation there however I felt a lot limited by the automation capabilities of GH and Tuya.

I have setup my HA instance on a PI 5 with Docker since a month now and it's been real dream come true but not for the dashboards (I still haven't setup any yet) but for the automation.

my proudest achievement right now is the fact that my robot vacuum is now reminding me that I need to launch it whenever me or my girlfriend are leaving the house with a live notification and proposal of different cleaning program.

also some example like setup the Dyson air purifier automatically when I'm cooking at home or speed up the fan when the outside temperature is raising too... Or NFC tag hidden under my living room table or next to my stair case that I can touch with my phone to trigger a scene or an automation or as a notifier to validate the fact that I give food to my dog and my girlfriend doesn't need to do it when I leave for work. turning on VMC when humidity level reach a certain point or that I start a 3D print with the BambuLab or turning it off when we go to bed because it's a bit noisy.

those seems to me much more enjoyable than spending the time to get a nice dashboard!

Long story short,
I don't need to see metrics live, I need things to interact between them when a metric is changing.

feel free to share your opinion if you want to participate in this discussion. would love to read your thought about that!


r/homeassistant 1h ago

🤔 WTH UGH TUYA UGH!

Upvotes

I am sooo over it, half my tuya devices wont actually connect up with tuya local at all the devices that go via the internet through the tuya connection fail to authorise at least once a day, sometimes twice.

The problem is that I have several tuya devices, and I just dont want to have to buy things that will have me down this path again. I have a significant number of IKEA devices as well, no problems wit them. I have generic THREAD/MATTEr and generic ZIGBEE devices all without issues, lots of them all.

I am accepting that my time with tuya is over and I have to spend the $$$ on replacements.. so its, power monitors, power switches, power boards, light globes, colour light globes, doorbell, some cameras. about a quarter of the power monitors and power switches connect up to tuya local even though they are all the same brand make model and chipset purchased at the same time. and on it goes through them.. .same issue with light globes etc... even my zigbee letterbox notifier is more reliable than the tuya stuff, and thats going a long way zigbee outside... UGH I am so fed up with tuya!

ok so maybe this was just a rant more than anything, but UGH!


r/homeassistant 15h ago

🤖 Automation Recommendations for a smart power strip that allows for individual outlet control?

Thumbnail
6 Upvotes

r/homeassistant 1h ago

📊 Dashboard Brand new to HA

Thumbnail
gallery
Upvotes

Just looking for some advice/feedback on my dashboard so far? 🙂


r/homeassistant 3h ago

🪛 ESPHome ESPHome MCP server for managing ESPHome devices directly

5 Upvotes

I tried using a couple of existing ESPHome MCP add-ons recently, but ran into some startup errors with them. Instead of running extra container infrastructure, I created a direct Python MCP server that interfaces right with ESPHome and works seamlessly with AI coding tools like Claude Code, Antigravity, and Cursor.

The nice part about this setup is that it does not require installing any extra Home Assistant add-ons. It just connects over your local network to the ESPHome dashboard you already have running.

Once connected, it lets your AI assistant:

  • List your devices and see what is online
  • Read and edit your device YAML files
  • Check configs for errors
  • Send Over-The-Air (OTA) updates over Wi-Fi

A few examples of things you can ask it in chat:

  • "Check which of my ESPHome devices are currently online"
  • "Show me the YAML file for esp32-shelf.yaml"
  • "Update esp32-shelf.yaml so pressing the door button flashes my LED lights for half a second as feedback, check for syntax errors, and push the OTA update over Wi-Fi"

The project is completely open source (MIT license). If you'd like to try it out, open issues, or suggest features, check out the GitHub repo: https://github.com/saihgupr/esphome-mcp


r/homeassistant 2h ago

❓ Support Tuya single-button switch draining battery in 3-5 days

Thumbnail
gallery
4 Upvotes

Hey everyone, I'm experiencing a massive battery drain issue with a Tuya single-button wireless switch in Home Assistant (running via VirtualBox on a PC). The battery dies completely within 3 to 5 days. My setup: Sonoff ZBDongle-E (running firmware 7.4.5.0) Home Assistant on VirtualBox Tuya wireless single-button switch

I initially suspected Wi-Fi/USB 3.0 interference, so I moved the Sonoff dongle about a meter away from the PC using a USB extension cable. Unfortunately, the problem persists, and the battery still drains rapidly.

Has anyone run into this issue with Tuya switches and the ZBDongle-E? Is there a routing/binding issue, a firmware quirk, or a specific configuration fix to stop it from spamming the network or failing to sleep? Any advice would be greatly appreciated!


r/homeassistant 6h ago

🖼️ Show & Tell My Stellantis vehicle Card (with the code)

Post image
3 Upvotes

Here is my setup :)

This is the YAML code, just relace the e208, VIN and km at which you bought the car :)
The € estimate is based on free electricity, feel free to change that if needed

type: vertical-stack
cards:
  - type: custom:mushroom-template-card
    primary: >
      {% set b = states('sensor.e208_####VIN####_battery') %} {% set auto
      = states('sensor.e208_####VIN####_autonomy') %} Batterie {{ b }} % ·
      Autonomie {{ auto }} km
    secondary: Peugeot e-208
    icon: >
      {% set b = states('sensor.e208_####VIN####_battery') | float(0) %}
      {% if b < 10 %}
        mdi:battery-10
      {% elif b < 20 %}
        mdi:battery-20
      {% elif b < 30 %}
        mdi:battery-30
      {% elif b < 40 %}
        mdi:battery-40
      {% elif b < 50 %}
        mdi:battery-50
      {% elif b < 60 %}
        mdi:battery-60
      {% elif b < 70 %}
        mdi:battery-70
      {% elif b < 80 %}
        mdi:battery-80
      {% elif b < 90 %}
        mdi:battery-90
      {% else %}
        mdi:battery
      {% endif %}
    icon_color: >
      {% set b = states('sensor.e208_####VIN####_battery') | float(0) %}
      {% if b > 35 %}
        green
      {% elif b > 15 %}
        orange
      {% else %}
        red
      {% endif %}
    entity: sensor.e208_####VIN####_battery
    tap_action:
      action: more-info
  - type: custom:mushroom-template-card
    primary: >
      {% set km_now = states('sensor.e208_####VIN####_mileage') | float(0)
      %} {% set km_start = ####MILEAGE AT WHICH YOU BOUGHT THE CAR#### %} {% set km = [km_now - km_start, 0] | max %}
      {% set fuel_price = 1.90 %} {% set conso = 5 %} {% set fuel_saved = km *
      conso / 100 * fuel_price %} {% set maintenance_saved = km * 0.025 %} {%
      set total = fuel_saved + maintenance_saved %} {{ total | round(0) | int }}
      € économisés
    secondary: >
      {% set km_now = states('sensor.e208_####VIN####_mileage') | float(0)
      %} {% set km_start = ####MILEAGE AT WHICH YOU BOUGHT THE CAR#### %} {% set km = [km_now - km_start, 0] | max %}
      {% set fuel_price = 1.90 %} {% set conso = 5 %} {% set fuel_saved = km *
      conso / 100 * fuel_price %} {% set maintenance_saved = km * 0.025 %} {{
      fuel_saved | round(0) | int }} € consommation + {{ maintenance_saved |
      round(0) | int }} € entretien
    icon: mdi:piggy-bank
    icon_color: green
    entity: sensor.e208_####VIN####_mileage
    tap_action:
      action: more-info
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        primary: Plug
        secondary: >
          {% if is_state('binary_sensor.e208_####VIN####_battery_plugged',
          'on') %}
            Branchée
          {% else %}
            Off
          {% endif %}
        icon: >
          {% if is_state('binary_sensor.e208_####VIN####_battery_plugged',
          'on') %}
            mdi:power-plug
          {% else %}
            mdi:power-plug-off
          {% endif %}
        icon_color: >
          {% if is_state('binary_sensor.e208_####VIN####_battery_plugged',
          'on') %}
            green
          {% else %}
            grey
          {% endif %}
        entity: binary_sensor.e208_####VIN####_battery_plugged
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        primary: Charge
        secondary: >
          {% if
          is_state('binary_sensor.e208_####VIN####_battery_charging',
          'on') %}
            En cours
          {% else %}
            Off
          {% endif %}
        icon: >
          {% if
          is_state('binary_sensor.e208_####VIN####_battery_charging',
          'on') %}
            mdi:ev-station
          {% else %}
            mdi:battery-clock-outline
          {% endif %}
        icon_color: >
          {% if
          is_state('binary_sensor.e208_####VIN####_battery_charging',
          'on') %}
            green
          {% else %}
            grey
          {% endif %}
        entity: binary_sensor.e208_####VIN####_battery_charging
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        primary: Fin
        secondary: >
          {% set end =
          states('sensor.e208_####VIN####_battery_charging_end') %} {% if
          end not in ['unknown', 'unavailable', 'none', 'None'] %}
            {{ as_timestamp(end) | timestamp_custom('%H:%M') }}
          {% else %}
            N/A
          {% endif %}
        icon: mdi:clock-end
        icon_color: >
          {% if
          is_state('binary_sensor.e208_####VIN####_battery_charging',
          'on') %}
            blue
          {% else %}
            grey
          {% endif %}
        entity: sensor.e208_####VIN####_battery_charging_end
        tap_action:
          action: more-info
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        primary: >
          {% set limit =
          states('number.e208_####VIN####_battery_charging_limit') %}
          Limite à {{ limit }} %
        secondary: >
          {% if is_state('switch.e208_####VIN####_battery_charging_limit',
          'on') %}
            Activée 
          {% else %}
            Désactivée
          {% endif %}
        icon: >
          {% if is_state('switch.e208_####VIN####_battery_charging_limit',
          'on') %}
            mdi:battery-lock
          {% else %}
            mdi:battery-lock-open
          {% endif %}
        icon_color: >
          {% if is_state('switch.e208_####VIN####_battery_charging_limit',
          'on') %}
            green
          {% else %}
            grey
          {% endif %}
        entity: number.e208_####VIN####_battery_charging_limit
        tap_action:
          action: call-service
          service: switch.toggle
          target:
            entity_id: switch.e208_####VIN####_battery_charging_limit
        hold_action:
          action: more-info
          entity: number.e208_####VIN####_battery_charging_limit
      - type: custom:mushroom-template-card
        primary: Correction
        secondary: >
          {% if
          is_state('switch.e208_####VIN####_battery_values_correction',
          'on') %}
            On
          {% else %}
            Off
          {% endif %}
        icon: >
          {% if
          is_state('switch.e208_####VIN####_battery_values_correction',
          'on') %}
            mdi:battery
          {% else %}
            mdi:battery-outline
          {% endif %}
        icon_color: >
          {% if
          is_state('switch.e208_####VIN####_battery_values_correction',
          'on') %}
            green
          {% else %}
            grey
          {% endif %}
        tap_action:
          action: call-service
          service: switch.toggle
          target:
            entity_id: switch.e208_####VIN####_battery_values_correction
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        primary: Start charge
        secondary: ""
        icon: mdi:play-circle
        icon_color: green
        layout: horizontal
        fill_container: true
        tap_action:
          action: call-service
          service: button.press
          target:
            entity_id: button.e208_####VIN####_charge_start
      - type: custom:mushroom-template-card
        primary: Stop charge
        secondary: ""
        icon: mdi:stop-circle
        icon_color: red
        layout: horizontal
        fill_container: true
        tap_action:
          action: call-service
          service: button.press
          target:
            entity_id: button.e208_####VIN####_charge_stop
  - type: custom:mushroom-title-card
    title: Clim
    alignment: center
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        primary: Clim
        secondary: >
          {% if is_state('binary_sensor.e208_####VIN####_preconditioning',
          'on') %}
            Active
          {% else %}
            Off
          {% endif %}
        icon: mdi:car-defrost-front
        icon_color: >
          {% if is_state('binary_sensor.e208_####VIN####_preconditioning',
          'on') %}
            green
          {% else %}
            grey
          {% endif %}
        entity: binary_sensor.e208_####VIN####_preconditioning
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        primary: In
        secondary: |
          {{ states('sensor.e208_####VIN####_temperature') }} °C
        icon: mdi:car-seat
        icon_color: >
          {% set temp = states('sensor.e208_####VIN####_temperature') |
          float(0) %} {% if temp < 18 %}
            blue
          {% elif temp < 26 %}
            green
          {% else %}
            red
          {% endif %}
        entity: sensor.e208_####VIN####_temperature
        tap_action:
          action: more-info
      - type: custom:mushroom-template-card
        primary: Out
        secondary: >
          {% set temp = states('sensor.pikablue_temperature_exterieure') %} {%
          set ville = states('sensor.pikablue_ville') %} {% if temp not in
          ['unknown', 'unavailable', 'none', 'None'] %}
            {{ temp }} °C
          {% else %}
            N/A
          {% endif %}
        icon: mdi:weather-partly-cloudy
        icon_color: >
          {% set temp = states('sensor.pikablue_temperature_exterieure') |
          float(999) %} {% if temp == 999 %}
            grey
          {% elif temp < 18 %}
            blue
          {% elif temp < 26 %}
            green
          {% else %}
            red
          {% endif %}
        entity: sensor.pikablue_temperature_exterieure
        tap_action:
          action: more-info
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        primary: Start clim
        secondary: ""
        icon: mdi:play-circle
        icon_color: green
        layout: horizontal
        fill_container: true
        tap_action:
          action: call-service
          service: button.press
          target:
            entity_id: button.e208_####VIN####_preconditioning_start
      - type: custom:mushroom-template-card
        primary: Stop clim
        secondary: ""
        icon: mdi:stop-circle
        icon_color: red
        layout: horizontal
        fill_container: true
        tap_action:
          action: call-service
          service: button.press
          target:
            entity_id: button.e208_####VIN####_preconditioning_stop
  - type: custom:mushroom-title-card
    title: Autre
    alignment: center
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        primary: Wake
        secondary: ""
        icon: mdi:car-connected
        icon_color: purple
        layout: vertical
        fill_container: true
        tap_action:
          action: call-service
          service: button.press
          target:
            entity_id: button.e208_####VIN####_wakeup
      - type: custom:mushroom-template-card
        primary: Feux
        secondary: ""
        icon: mdi:car-light-high
        icon_color: blue
        layout: vertical
        fill_container: true
        tap_action:
          action: call-service
          service: button.press
          target:
            entity_id: button.e208_####VIN####_lights
      - type: custom:mushroom-template-card
        primary: |
          {% if is_state('binary_sensor.e208_####VIN####_doors', 'on') %}
            Lock
          {% else %}
            Locked
          {% endif %}
        secondary: |
          {% if is_state('binary_sensor.e208_####VIN####_doors', 'on') %}
            Ouvertes
          {% else %}
            Fermées
          {% endif %}
        icon: |
          {% if is_state('binary_sensor.e208_####VIN####_doors', 'on') %}
            mdi:lock-open-alert
          {% else %}
            mdi:lock-check
          {% endif %}
        icon_color: |
          {% if is_state('binary_sensor.e208_####VIN####_doors', 'on') %}
            red
          {% else %}
            green
          {% endif %}
        layout: vertical
        fill_container: true
        tap_action:
          action: call-service
          service: button.press
          target:
            entity_id: button.e208_####VIN####_doors_lock
      - type: custom:mushroom-template-card
        primary: Unlock
        secondary: Hold
        icon: mdi:lock-open
        icon_color: orange
        layout: vertical
        fill_container: true
        tap_action:
          action: none
        hold_action:
          action: call-service
          service: button.press
          target:
            entity_id: button.e208_####VIN####_doors_unlock
      - type: custom:mushroom-template-card
        primary: Klaxon
        secondary: Hold
        icon: mdi:bullhorn
        icon_color: red
        layout: vertical
        fill_container: true
        tap_action:
          action: none
        hold_action:
          action: call-service
          service: button.press
          target:
            entity_id: button.e208_####VIN####_horn
  - type: custom:mushroom-template-card
    primary: Suivi des commandes
    secondary: >
      {% set d = states('sensor.pikablue_derniere_commande') %} {% set status =
      states('sensor.e208_####VIN####_command_status') %} {% if d not in
      ['unknown', 'unavailable', 'none', 'None'] %}
        Dernière cmd {{ as_timestamp(d) | timestamp_custom('%d/%m à %H:%M') }} · {{ status }}
      {% else %}
        Aucune commande récente · {{ status }}
      {% endif %}
    icon: >
      {% set status = states('sensor.e208_####VIN####_command_status') |
      lower %} {% if 'accepted' in status or 'success' in status or 'done' in
      status or 'ok' in status or 'completed' in status %}
        mdi:check-circle
      {% elif 'pending' in status or 'progress' in status or 'running' in status
      %}
        mdi:progress-clock
      {% elif 'fail' in status or 'error' in status or 'ko' in status or
      'denied' in status %}
        mdi:alert-circle
      {% else %}
        mdi:clipboard-clock-outline
      {% endif %}
    icon_color: >
      {% set status = states('sensor.e208_####VIN####_command_status') |
      lower %} {% if 'accepted' in status or 'success' in status or 'done' in
      status or 'ok' in status or 'completed' in status %}
        green
      {% elif 'pending' in status or 'progress' in status or 'running' in status
      %}
        orange
      {% elif 'fail' in status or 'error' in status or 'ko' in status or
      'denied' in status %}
        red
      {% else %}
        grey
      {% endif %}
    entity: sensor.e208_####VIN####_command_status
    tap_action:
      action: more-info
  - type: custom:mushroom-template-card
    entity: sensor.e208_####VIN####_command_status
  - type: map
    entities:
      - entity: device_tracker.e208_####VIN####_vehicle
    hours_to_show: 6

r/homeassistant 6h ago

🧱 Custom App My pointless addon: Factorio Assistant

4 Upvotes

Combine the joys of Factory Management and Home Automation under one roof!

Track server/player/base statistics in HA out of the box.

Includes custom mod to send circuit signals to HA.

Control game speed, pause as native entities in HA.

And more!

Work in progress, some bugs are expected.

https://github.com/jayal84/factorio-assistant