There are currently four ways to run the application (see build for details):
- Standalone ("minimal")
- SpringBoot
- Quarkus
- Docker
The "minimal" variant is the only one that requires things to be spelled out exactly, the rest follow the usual Spring and Quarkus conventions (splitting configuration into many files, specifying active profiles, using YAML anchors, etc.).
NOTE: YAML merging is not so smart. Verify the effective configuration, it is logged at debug level at the start of the application.
Configuration file for HCC can be quite big (400+ lines is not unheard of), do take advantage of YAML Anchors to make it stable.
This part contains what you would usually provide for your standard Spring or Quarkus applications. For your convenience, basic localhost and docker profiles are included into default configuration - feel free to override them as you see fit.
NOTE: There are two source trees, Spring specific and Quarkus specific that directly map to configuration entries. They are expected to behave the same way (the reason two of them exist is very different conventions followed by Spring and Quarkus), if there's ever any discrepancy (the application works invoked with Spring and doesn't work invoked with Quarkus, or the other way around), please file an issue.
NOTE: You can use your IDE to edit configuration files, this will give you code completion and extended documentation, thanks to Spring Configuration Metadata, and "code walking" if you are using YAML anchors.
Here's the configuration file skeleton:
home-climate-control:
instance: <your-instance-name>
esphome: ...
zigbee2mqtt: ...
zwave2mqtt: ...
onewire: ...
xbee: ...
mocks: ...
filters: ...
zones: ...
schedule: ...
connectors: ...
hvac: ...
units: ...
directors: ...
web-ui: ...
console: ...
No-frills, one heatpump, three zones configuration. With traces of some lessons learned, though - note the naming conventions. This system grows much faster than one would expect.
NOTE: Calendar integration turned out to be one of the most usable features. Take your time to configure it.
home-climate-control:
instance: bootstrap
esphome:
- host: mqtt-esphome
root-topic: /esphome
sensors:
- address: air-ambient-north
- address: air-ambient-south
- address: air-bedroom-master
- address: air-bedroom-kids
- address: air-family-room
switches:
- id: switch-heatpump-mode
address: /esphome/board-MAC/switch-heatpump-mode
- id: switch-heatpump-running
address: /esphome/board-MAC/switch-heatpump-running
- id: switch-heatpump-fan
address: /esphome/board-MAC/switch-heatpump-fan
zones:
- id: bedroom-master
name: Master Bedroom
controller:
p: 0.7
i: 0.000002
limit: 1.1
settings:
setpoint: 31
setpoint-range:
min: 25.5
max: 33
- id: bedroom-kids
name: Kids' Bedroom
controller:
p: 1
i: 0.000002
limit: 1.1
settings:
setpoint: 31
setpoint-range:
min: 25.5
max: 33
- id: room-family
name: Family Room
controller:
p: 0.85
i: 0.0000008
limit: 1.1
settings:
setpoint: 31
setpoint-range:
min: 26
max: 33
schedule:
google-calendar:
- zone: bedroom-master
calendar: "HCC Schedule: Master Bedroom"
- zone: bedroom-kids
calendar: "HCC Schedule: Kids' Bedroom"
- zone: room-family
calendar: "HCC Schedule: Family Room"
connectors:
- influx:
id: influxdb-connector-house
instance: house
db: hcc
uri: http://dx:8086
sensor-feed-mapping:
air-ambient: air-ambient-temperature
air-bedroom-master: air-bedroom-master-temperature
air-bedroom-kids: air-bedroom-kids-temperature
air-family-room: air-family-room-temperature
hvac:
- heatpump:
- id: heatpump-main
switch-mode: switch-heatpump-mode
switch-mode-reverse: true
switch-running: switch-heatpump-running
switch-fan: switch-heatpump-fan
filter:
lifetime: 200H
units:
- single-stage:
- id: heatpump
directors:
- id: house
connectors:
- influxdb-connector-house
sensor-feed-mapping:
air-bedroom-master: bedroom-master
air-bedroom-kids: bedroom-kids
air-family-room: room-family
unit: heatpump
hvac: heatpump-main
mode: cooling
web-ui:
directors:
- house
sensors:
- air-ambient-north
- air-ambient-south
console:
directors:
- house
sensors:
- air-ambient-north
- air-ambient-south