You’d probably like the object taxonomy used by Premise.
Premise Home Control is the home automation software I started using in 2008, 2 years after the product was discontinued (its development started in 1998). I still use in (together with Home Assistant).
In Premise, everything is object-oriented. You have classes for lights, outlets, relays, refrigerators, pumps, blinds, etc. Each of these classes inherits from simpler ones like power, dimmer, temperature, digital_output, etc.
So an outlet inherits from power whereas a light inherits from power and dimmer classes. There are many existing classes available to represent a vast array of common devices (sprinkler, fountain, glass-break sensor, etc etc). However, if there is no class to represent what you have in mind, you can (fairly) easily create your own (using a GUI). For example, I have a custom Door class that is composed of:
- contact sensor for the door
- contact sensor for the deadbolt
- relay for locking the deadbolt
- relay for unlocking the deadbolt
In other words, you can throw together existing ‘things’ to create a more complex ‘thing’. So instead of using the default door class, to model all monitored doors in my home, I use my custom door class. This is the essence of Premise; plenty of flexibility to define new things using existing ‘building blocks’.
The reason I gravitated to Home Assistant (aside from the obvious that Premise hasn’t changed in ~15 years) is because it’s the closest thing I’ve seen to Premise … and is being actively developed. Over time, I hope to see more of Premise’s ideas incorporated in Home Assistant.