I’m looking but not finding an add on to help me keep track of things related to HA.
UI
At it’s simplest I want two tabs or cards, one for input and one for reading, although a combined card could also work.
Writing
For input, I want to type some text and save. This records the text and when it was created. I may edit it later but it’s the creation date that I want. Nice to have would be a easy to add tags similar to those we have here when creating a post. The ability to attach photos or other media would be nice to have.
Reading
When reading these notes I’d like a chronological rendering of the complete notes. Optional search by keyword, and optionally filter by tags, resulting in a chronological list of the full notes (not links or previews unless that’s optional) based on creation date. Jump forward or back maybe. I don’t expect to make that many notes so probably not important for me.
Purpose - a home assistant diary
I’d like to record certain actions so I know what I did when under different headings (ie tags). Things like moved a device, or did a calibration, or fixed a leak in the roof. Tags would be things like leaks, roof, damp etc. This is not a task manager or a calendar, but a list of notes by creation date.
If you know of something that provides even a subset of this with good UX I’d like to hear. I don’t have time to build myself but one day it’s the kind of project I’d used to get started.
I use the MkDocs add-on to keep a journal of changes. You can edit in the File Editor and the add-on gives a web UI for reading. There’s nothing automatic about it though.
There are a few note-taking options, but you end up with them scattered all over the place. I use:
The Entity Notes integration, which allows you to add a note field to the settings pop-up of any entity or device. Very short, though, max 250 characters.
Description fields in automations and scripts
Comments in templates and intent scripts
Systematic labels
A journal in MKDocs
A cobbled-together AI agent combines them into (fairly) sensible reports. I don’t give it access to the journal - too many opportunities for hallucination.
So… “Tell me about contact sensors” gives:
Contact Sensors Overview
Contact sensors are Zigbee (ZHA) devices that detect whether a window or door is open or closed. They are primarily used for security (alarm system) and automation (e.g., preventing lights from turning on if a window is open).
List of Contact Sensors
All contact sensors follow the naming convention: binary_sensor.<area>_window_contact_sensor (for windows) or binary_sensor.<door>_contact_sensor (for doors).
Entity ID
Device Name
Area
Notes
binary_sensor.back_door_contact_sensor
Back door contact sensor
Kitchen
Zigbee (Signify SOC001)
binary_sensor.front_door_contact_sensor
Front door contact sensor
Living Room
Zigbee (Signify SOC001)
binary_sensor.bathroom_window_contact_sensor
Bathroom window contact sensor
Bathroom
Zigbee (eWeLink DS01)
binary_sensor.kitchen_window_contact_sensor
Kitchen window contact sensor
Kitchen
Zigbee (Signify SOC001)
binary_sensor.landing_window_contact_sensor
Landing window contact sensor
Landing
Zigbee (Signify SOC001)
binary_sensor.living_room_window_contact_sensor
Living room window contact sensor
Living Room
Zigbee (Signify SOC001)
binary_sensor.study_window_contact_sensor
Study window contact sensor
Study
Zigbee (Signify SOC001)
Key Group Helpers
binary_sensor.alarm
Purpose: Group helper for all contact sensors except the bedroom window (which has no sensor).
Members:
All door sensors (back_door, front_door).
All window sensors (bathroom, kitchen, landing, living_room, study).
Behavior: Turns on if any door/window is open; off only if all are closed.
Role: Triggers the alarm system (via automation.alarm_triggered).
binary_sensor.window_open
Purpose: Group helper for window sensors only (excludes doors).
Members: All window contact sensors.
Behavior: on if any window is open.
Role: Used by automation.window_open to block alarm arming if a window is open (announces open windows via TTS).
Role: Used by automation.arm_night_alarm to prevent night alarm arming if a door is open.
Security System Integration
Alarm Triggering:
If binary_sensor.alarm turns onwhile the alarm is armed (input_boolean.alarm_armed = on), automation.alarm_triggered starts a 30-second countdown (timer.alarm_pending).
If the timer expires, automation.sound_alarm activates the kitchen siren (30-second alarm).
Arming Blockers:
automation.window_open: If binary_sensor.window_open = on when arming starts (timer.alarm_arming activates), it cancels arming and announces open windows.
automation.arm_night_alarm: Requires binary_sensor.door_open = off to arm the night alarm.
Disarming:
Automatic disarm via automation.disarm_alarm (triggered by keys returning home).
Manual disarm via script.cancel_alarm (dashboard keypad).
Voice Assistants:
Some contact sensors (e.g., kitchen_window, living_room_window) are exposed to voice assistants for queries like “Is the kitchen window open?”.
Battery Monitoring:
Each contact sensor has a battery level sensor (e.g., sensor.back_door_contact_sensor_battery), tracked by the battery_notes_integration.
Exceptions
Bedroom Window: No contact sensor exists for the bedroom window. It is explicitly excluded from binary_sensor.alarm and binary_sensor.window_open.
Battery-Powered: All contact sensors are battery-powered Zigbee end devices.
Labels (for Filtering)
All contact sensors are tagged with:
contact_sensor
security
zha_integration
battery_powered
assist (for voice assistant exposure, where applicable)
You still have to watch out for fantasy, though. The bit about “preventing lights from turning on if a window is open” is nonsense…
I decided to look for a self hosted web app with mobile UI. That narrows the search results quite a lot!
Anchor Notes looks closest to my wish list and should be easy to set up on my HomeLab server because they provide Docker Compose settings.
It shows the date on each note and supports tags, so fingers crossed. It’s also offline first which is a bonus, and no AI rot which is a must for me that I didn’t mention. Also AGPL!