networkd applies [CAN] bitrate but does not raise the link by itself;
also make the handler reconfigure after reload (reload alone leaves
existing links untouched).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The cutover order moves devices one at a time; a compose service whose
stick is still on the old VM must not block open3e installation.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
mkinitcpio's autodetect missed the eMMC stack in the chroot; the
installed system hung unbootable with root on mmcblk0p2. Pin
sdhci_acpi/sdhci_pci/mmc_block in MODULES and regenerate during install.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds suction/discharge pressure, superheat, EEV positions, fan speeds,
compressor rps, four-way valve + circuit status, evaporator/economizer/
oil temps and defrost energy target, discovered via depictSystem ECU
census + full VCMU DID scan.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The live env detects the eMMC card (sdhci_acpi) but does not autoload
mmc_block, so /dev/mmcblk0 never appears and edge-install finds no
target. Autoload via modules-load.d, belt-and-braces modprobe in
edge-install, check mmcblk0-2, and fix the lsblk fallback (empty TRAN
column shifted the awk fields).
Diagnosed live over SSH on the actual 3040 (10.2.50.109).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds PV energy counters (1802, Energy dashboard solar slot), battery
power/energy/temperature and dynamic charge limits, heating/DHW energy
split (electric in, thermal out — live COP), compressor modulation and
starts/hours, refrigerant inlet/outlet temps, buffer temp, DHW + valve
states. Selected from the full DID scans (539+189 DPs).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Target changed from N100 to a Wyse 3040 (2G RAM / 8G eMMC): default
disk is now autodetected (nvme, else mmcblk0, else first non-USB disk)
and the live environment carries the homelab SSH keys, so the install
runs over SSH without a monitor (firmware boot-order/Secure-Boot still
needs one console visit if not already set).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Without -j open3e flattens complex DIDs into per-key subtopics; the HA
package parses value_json on the base topic and receives nothing.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
mkarchiso against the host repos fails on Manjaro (no archinstall/
reflector, linux is a virtual package) — releng needs real Arch repos.
Split the profile assembly into build-inner.sh and run it in
archlinux:latest (--privileged for pacstrap's bind mounts); verified
build on the Manjaro workstation. gitignore the ISO output dir.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Releng-based archiso overlay: `edge-install` in the live env wipes the
N100 NVMe and installs the ansible-ready base system (systemd-boot,
networkd DHCP, sshd key-only, docker). Service config stays in the
edge-host ansible role; the ISO only produces the base.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replaces the k8s-edge Talos VM (vm_153) with a dedicated Arch host
running the hardware-bound services: zwave-js-ui and sml2mqtt via
docker compose (configs ported 1:1 from the k8s manifests), plus the
new open3e CAN bridge (SocketCAN via systemd-networkd, venv + systemd
unit, read-only datapoint set).
Driver for leaving k8s here: stock Talos ships CONFIG_CAN unset
(siderolabs/talos#7686), so the Vitocal/VX3 CAN adapter cannot work in
any pod without a custom kernel per release.
Base-install procedure, secret bootstrap (vault.yml from cluster
secrets) and per-service cutover checklist in roles/edge-host/README.md.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>