@w8emv Beyond naming convention, one thing I learnt early on in #OpenHAB - not yet completed switch to #HomeAssistant - and intended to document is using a state machine for anything reasonably complex.
For example, rather than "turn lights on if it's dark and we're home and we're not in bed, or it's 6:30 on a weekday or 7:30 on a weekend or there's activity", which could include loads of different sensors and flags, have a single value for "phase of the day". For example, EARLY, DAY, NIGHT; and a Boolean for "activity in communal areas" and "is dark outside".
The naming convention is also useful, at least in OpenHAB, because a script can react to a group of items and then use the naming convention to affect something else. For example, when `Internal_Lounge_TV_Online` switch `Internal_Louge_Audio_Source` to the TV, because `Internal_*_TV_Online` changed to `ON`.