Migration from AppDaemon Config¶
This page explains how to migrate panel configuration from the legacy AppDaemon apps.yaml format to the standalone rewrite panels.yaml format.
File and structure changes¶
Old (AppDaemon):
- panel config lived under
apps.yaml - MQTT and Home Assistant base connection config was split across AppDaemon files (
appdaemon.yaml, plugin config, and app config)
New (rewrite):
- panel config lives in one file:
panels.yaml(usually/config/panels.yaml) - connection values are read from this file and/or environment variables
Minimal before/after example¶
Old AppDaemon (apps.yaml):
nspanel-1:
module: nspanel-lovelace-ui
class: NsPanelLovelaceUIManager
config:
panelRecvTopic: "tele/tasmota_panel/RESULT"
panelSendTopic: "cmnd/tasmota_panel/CustomSend"
model: eu
locale: en_US
timeFormat: "%H:%M"
New rewrite (panels.yaml):
home_assistant_address: "http://supervisor"
home_assistant_token: "YOUR_TOKEN"
nspanels:
panel-1:
panelRecvTopic: "tele/tasmota_panel/RESULT"
panelSendTopic: "cmnd/tasmota_panel/CustomSend"
model: eu
locale: en_US
timeZone: "Europe/Berlin"
timeFormat: "%H:%M"
dateFormat: "full"
screensaver:
entities:
- entity: weather.home
cards:
- type: cardEntities
title: Main
entities:
- entity: light.kitchen
Key mapping¶
| Legacy AppDaemon key or concept | Standalone rewrite | Notes |
|---|---|---|
module, class, config wrapper |
removed | Rewrite uses nspanels.<panel_name> directly. |
panelRecvTopic |
panelRecvTopic |
Same meaning. |
panelSendTopic |
panelSendTopic |
Same meaning. |
model |
model |
Same meaning (eu, us-p, us-l). |
locale |
locale |
Same meaning. |
timeFormat |
timeFormat |
Same meaning. |
timezone (legacy docs casing) |
timeZone |
Use exact camelCase timeZone. |
dateFormatBabel / dateFormat |
dateFormat |
Rewrite expects dateFormat. |
cards |
cards |
Same concept. |
hiddenCards |
hiddenCards |
Same concept. |
screensaver |
screensaver |
Same concept; some legacy theme options are not available. |
defaultCard under screensaver usage |
defaultCard (panel level) |
Use as panel-level key in rewrite. |
temperatureUnit (card-level legacy usage) |
temp_unit (panel level) |
Rewrite reads panel-level temp_unit. |
sleepBrightness list schedule |
not supported | Rewrite supports integer or entity id, not list-based schedules. |
screenBrightness list schedule |
not supported | Rewrite supports integer or entity id, not list-based schedules. |
sleepTracking |
sleepTracking |
Same concept. |
sleepTrackingZones |
sleepTrackingZones |
Same concept. |
sleepOverride |
sleepOverride |
Same concept. |
updateMode / OTA URL overrides (displayURL-*, berryURL) |
not supported | Rewrite does not implement these legacy update keys. |
theme, dateAdditionalTemplate, timeAdditionalTemplate |
not supported | Not implemented in rewrite config. |
Connection config differences¶
In AppDaemon setups, MQTT and Home Assistant connectivity was mostly configured via AppDaemon plugin settings.
In the rewrite, connectivity is resolved directly by the runtime:
- Home Assistant:
home_assistant_addresshome_assistant_token- MQTT (for MQTT mode):
mqtt_server,mqtt_port,mqtt_username,mqtt_password- Optional mode switch:
- set
use_ha_apito use Home Assistant event mode instead of MQTT receive mode
Entity-level differences to watch¶
Some legacy entity config fields are not implemented in the rewrite parser/renderer:
state,state_not,state_template- direct
service.*action entries with customdata action_name
Supported and commonly used fields in rewrite:
entity,name,icon,color,value,font- weather-related:
attribute,day,hour,unit - light detail helper:
effectList - navigation helper:
statusfornavigate.*entities
Migration checklist¶
- Create
/config/panels.yamlfrom the rewrite example. - Move each old app entry (
nspanel-1,nspanel-2, ...) intonspanels. - Remove
module/class/configwrappers. - Rename
timezonetotimeZone. - Ensure each panel has
dateFormat,timeFormat,screensaver, andcards. - Replace unsupported scheduled brightness lists with integer/entity-based values.
- Remove unsupported legacy-only keys listed above.