Multizone thermostat incl various control options

This past winter I’ve spend ‘some’ time writing a thermostat fulfilling my requirements. Eventually it became quite some work and therefore share it here such that it could be used by others. I’ve started by borrowing and continuing on code mainly from (thus thanx to):

The thermostat works as follows:

Multi-zone heating:
Each room has its own thermostat definition including ‘room size’ and one thermostat needs to be configured as ‘master’ with a list of ‘satellites’. The room size is used as scale factor for determination of average temperature and set point. The master controller gets updated when the satellites change.

Individual thermostat:
Each thermostat can be configured and updated via the services tool (will not update the yaml file that needs to be done manually). Per thermostat two operation modes can be defined: heat and cool. I did not have cooling in my house thus not have tested that part extensively). Per operation mode the controller can be defined.

Included controllers:

  • On/off mode
  • Proportional control
    • PID controller
    • Weather compensation
    • Valve control (master mode)

filtered temperature reading:
In my case I use battery controller temperature sensors which update irregularly and batteries die often. Therefore a emergency stop and a filter to smoothen the temperature reading is added.

Disclaimer:
I’m not a native programmer… If you have questions, I’ll try to explain. Some things might not be optimal and could be written better, please let me know. I did my best trying to make it robust and check/test it thoroughly and have used it several months in my house. If you want to help improve, you’re welcome.
Use on own risk, I do not take any responsibility for malfunction or damage.

This part is only the software operation. Please check if hardware modifications to you’re heating system are required! For instance: maybe the system needs to be equipped with a bypass valve to handle situations where too much valves are closed but still heat is required.

Current configuration:

  • House heated by district heating
  • Main valve supplies the house with heat (warm water)
  • 5 rooms with floor heating, 1 room with high temp radiators
  • floor heating by 8 zone manifold with thermal actuators
  • thermal actuators operated by 2x4ch sonoff
  • main valve by 1 relay sonoff
  • temperature sensors: xiaomi zigbee temp sensor
  • radiators eurotronic z-wave radiator valve

Some pictures:

thermostat UI (I’ve used the ‘simple-thermostat’ lovelace card for visualisation.)

filtered temperture and valve position:

thermostat attribute data example:

change active thermostat
afbeelding

example multizone yaml config:


  - platform: multizone_thermostat
    name: main_controller
    sensor_out: sensor.br_temperature
    initial_hvac_mode: "off"
    initial_preset_mode: "none"
    precision: 0.1
    heat:
      entity_id: switch.mainvalve
      initial_target_temp: 20
      away_temp: 16
      proportional_mode:
        control_interval:
          seconds: 60
        difference: 100
        minimal_diff: 5
        pwm:
          seconds: 600
        PID_mode:
          kp: 3
          ki: 0
          kd: 0
        weather_mode:
          ka: 2
          kb: -6
        MASTER_mode:
          satelites: [living, room1]
          goal: 80
          kp: -0.15
          ki: 0
          kd: 0
    sensor_stale_duration:
      hours: 12
    restore_from_old_state: True      
    restore_parameters: False
    restore_integral: True  

  - platform: multizone_thermostat
    name: living
    sensor: sensor.temp_wk
    initial_hvac_mode: "off"
    initial_preset_mode: "none"
    room_area: 60
    precision: 0.1
    heat:
      entity_id: input_boolean.woonkamer
      min_temp: 15
      max_temp: 24
      initial_target_temp: 20
      away_temp: 16
      proportional_mode:
        control_interval:
          seconds: 90
        difference: 100
        minimal_diff: 5
        pwm:
          seconds: 180
        PID_mode:
          kp: 30
          ki: 0.005
          kd: -24000
    sensor_stale_duration:
      hours: 12
    restore_from_old_state: True      
    restore_parameters: False
    restore_integral: True


  - platform: multizone_thermostat
    name: room1
    sensor: sensor.temp_sl1
    initial_hvac_mode: "off"
    initial_preset_mode: "none"
    room_area: 20
    precision: 0.1
    heat:
      entity_id: switch.verdeler_8
      min_temp: 15
      max_temp: 24
      initial_target_temp: 18
      away_temp: 16
      proportional_mode:
        control_interval:
          seconds: 90
        difference: 100
        minimal_diff: 5
        pwm:
          seconds: 180
        PID_mode:
          kp: 30
          ki: 0.003
          kd: -24000
    sensor_stale_duration:
      hours: 12
    restore_from_old_state: True      
    restore_parameters: False
    restore_integral: True   

the custom component can be found at https://github.com/vindaalex/multizone_thermostat

for more explanation please see the readme.

3 Likes

I would like to share my card configuration :slightly_smiling_face:


type: 'custom:simple-thermostat'
control:
  _icons: null
  fan:
    high:
      icon: 'mdi:concourse-ci'
      name: 3
    low:
      icon: 'mdi:concourse-ci'
      name: 1
    mid:
      icon: 'mdi:concourse-ci'
      name: 2
    turbo:
      icon: 'mdi:fan'
      name: full
  hvac:
    auto: false
    cool:
      icon: 'mdi:snowflake'
      name: Cool
    heat: false
    'off':
      color: '#dff4fd'
      icon: 'mdi:power'
      name: 'Off'
decimal: 1
decimals: '0'
entity: climate.office_ac
hide:
  temperature: true
name: office AC
sensors:
  - entity: sensor.broadlink_temperature
    name: ROOM Temp
step_size: '1'
style: |
  ha-card {
    --st-mode-active-background: {% if is_state('climate.office_ac','off') %} #FF430A !important {% endif %};
    --st-mode-active-background: {% if is_state('climate.office_ac','cool') %} #18A330 !important {% endif %};
  }
  header {
    margin-bottom: 0px !important;
    padding-bottom: 0px !important;
  }
1 Like

Hello @axax, I tried your custom components, but it breaks startup of my Home Assistant environment (2021.10.0 running in Docker container on a Raspberry Pi).

The log mentions some Python errors when booting after adding the configurations of multizone thermostat:

2021-10-09T08:52:00.757829886Z [finish] process exit code 256
2021-10-09T08:52:00.762100355Z [finish] process received signal 15
2021-10-09T08:52:00.769280476Z [cont-finish.d] executing container finish scripts...
2021-10-09T08:52:00.772899952Z [cont-finish.d] done.
2021-10-09T08:52:00.774229715Z [s6-finish] waiting for services.
2021-10-09T08:52:01.011145823Z [s6-finish] sending all processes the TERM signal.
2021-10-09T08:52:01.626184256Z [s6-init] making user provided files available at /var/run/s6/etc...exited 0.
2021-10-09T08:52:01.711025495Z [s6-init] ensuring user provided files have correct perms...exited 0.
2021-10-09T08:52:01.714360512Z [fix-attrs.d] applying ownership & permissions fixes...
2021-10-09T08:52:01.717598419Z [fix-attrs.d] done.
2021-10-09T08:52:01.719770042Z [cont-init.d] executing container initialization scripts...
2021-10-09T08:52:01.722810433Z [cont-init.d] done.
2021-10-09T08:52:01.726141857Z [services.d] starting services
2021-10-09T08:52:01.747874420Z [services.d] done.
2021-10-09T08:52:06.760978260Z 2021-10-09 10:52:06 WARNING (SyncWorker_2) [homeassistant.loader] We found a custom integration smart_irrigation which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2021-10-09T08:52:06.762982830Z 2021-10-09 10:52:06 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration multizone_thermostat which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2021-10-09T08:52:06.765169286Z 2021-10-09 10:52:06 WARNING (SyncWorker_1) [homeassistant.loader] We found a custom integration smart_thermostat which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2021-10-09T08:52:06.766455345Z 2021-10-09 10:52:06 WARNING (SyncWorker_2) [homeassistant.loader] We found a custom integration daily which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2021-10-09T08:52:06.767718849Z 2021-10-09 10:52:06 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration hacs which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2021-10-09T08:52:06.769298664Z 2021-10-09 10:52:06 WARNING (SyncWorker_3) [homeassistant.loader] We found a custom integration scheduler which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2021-10-09T08:52:07.687143110Z 2021-10-09 10:52:07 WARNING (Recorder) [homeassistant.components.recorder.util] The system could not validate that the sqlite3 database at //config/home-assistant_v2.db was shutdown cleanly
2021-10-09T08:52:07.767802933Z 2021-10-09 10:52:07 WARNING (Recorder) [homeassistant.components.recorder.util] Ended unfinished session (id=91 from 2021-10-09 08:47:34.092316)
2021-10-09T08:52:07.899058447Z 2021-10-09 10:52:07 WARNING (MainThread) [homeassistant.components.lovelace] Lovelace is running in storage mode. Define resources via user interface
2021-10-09T08:54:10.646532389Z 2021-10-09 10:54:10 ERROR (SyncWorker_3) [homeassistant.util.package] Unable to install package numpy==1.20.0: ERROR: Command errored out with exit status 1:
2021-10-09T08:54:10.646672554Z      command: /usr/local/bin/python3 /usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmp9rj3axdw
2021-10-09T08:54:10.646704387Z          cwd: /tmp/pip-install-aelx5ylg/numpy
2021-10-09T08:54:10.646752312Z     Complete output (225 lines):
2021-10-09T08:54:10.646779793Z     Running from numpy source directory.
2021-10-09T08:54:10.646824497Z     setup.py:485: UserWarning: Unrecognized setuptools command, proceeding with generating Cython sources and expanding templates
2021-10-09T08:54:10.646851774Z       run_build = parse_setuppy_commands()
2021-10-09T08:54:10.646877403Z     Processing numpy/random/_bounded_integers.pxd.in
2021-10-09T08:54:10.646925125Z     Processing numpy/random/mtrand.pyx
2021-10-09T08:54:10.646950180Z     Processing numpy/random/_generator.pyx
2021-10-09T08:54:10.647001957Z     Processing numpy/random/_common.pyx
2021-10-09T08:54:10.647029290Z     Processing numpy/random/_bounded_integers.pyx.in
2021-10-09T08:54:10.647072586Z     Processing numpy/random/bit_generator.pyx
2021-10-09T08:54:10.647100067Z     Processing numpy/random/_pcg64.pyx
2021-10-09T08:54:10.647125493Z     Processing numpy/random/_sfc64.pyx
2021-10-09T08:54:10.647175511Z     Processing numpy/random/_mt19937.pyx
2021-10-09T08:54:10.647202029Z     Processing numpy/random/_philox.pyx
2021-10-09T08:54:10.647275213Z     Cythonizing sources
2021-10-09T08:54:10.647299509Z     blas_opt_info:
2021-10-09T08:54:10.647343768Z     blas_mkl_info:
2021-10-09T08:54:10.647367342Z     customize UnixCCompiler
2021-10-09T08:54:10.647389175Z       libraries mkl_rt not found in ['/usr/local/lib', '/usr/lib']
2021-10-09T08:54:10.647430804Z       NOT AVAILABLE
2021-10-09T08:54:10.647452285Z     
2021-10-09T08:54:10.647491396Z     blis_info:
2021-10-09T08:54:10.647515174Z       libraries blis not found in ['/usr/local/lib', '/usr/lib']
2021-10-09T08:54:10.647537321Z       NOT AVAILABLE
2021-10-09T08:54:10.647577599Z     
2021-10-09T08:54:10.647601839Z     openblas_info:
2021-10-09T08:54:10.647623672Z       libraries openblas not found in ['/usr/local/lib', '/usr/lib']
2021-10-09T08:54:10.647664116Z       NOT AVAILABLE
2021-10-09T08:54:10.647686931Z     
2021-10-09T08:54:10.647708393Z     atlas_3_10_blas_threads_info:
2021-10-09T08:54:10.647749060Z     Setting PTATLAS=ATLAS
2021-10-09T08:54:10.647772189Z       libraries tatlas not found in ['/usr/local/lib', '/usr/lib']
2021-10-09T08:54:10.647793892Z       NOT AVAILABLE
2021-10-09T08:54:10.647833373Z     
2021-10-09T08:54:10.647856169Z     atlas_3_10_blas_info:
2021-10-09T08:54:10.647878540Z       libraries satlas not found in ['/usr/local/lib', '/usr/lib']
2021-10-09T08:54:10.647922446Z       NOT AVAILABLE
2021-10-09T08:54:10.647945668Z     
2021-10-09T08:54:10.647967224Z     atlas_blas_threads_info:
2021-10-09T08:54:10.648007631Z     Setting PTATLAS=ATLAS
2021-10-09T08:54:10.648031167Z       libraries ptf77blas,ptcblas,atlas not found in ['/usr/local/lib', '/usr/lib']
2021-10-09T08:54:10.648053389Z       NOT AVAILABLE
2021-10-09T08:54:10.648094370Z     
2021-10-09T08:54:10.648117315Z     atlas_blas_info:
2021-10-09T08:54:10.648138777Z       libraries f77blas,cblas,atlas not found in ['/usr/local/lib', '/usr/lib']
2021-10-09T08:54:10.648179980Z       NOT AVAILABLE
2021-10-09T08:54:10.648202388Z     
2021-10-09T08:54:10.648249813Z     /tmp/pip-install-aelx5ylg/numpy/numpy/distutils/system_info.py:1989: UserWarning:
2021-10-09T08:54:10.648274276Z         Optimized (vendor) Blas libraries are not found.
2021-10-09T08:54:10.648296035Z         Falls back to netlib Blas library which has worse performance.
2021-10-09T08:54:10.648336627Z         A better performance should be easily gained by switching
2021-10-09T08:54:10.648360330Z         Blas library.
2021-10-09T08:54:10.648381922Z       if self._calc_info(blas):
2021-10-09T08:54:10.648450422Z     blas_info:
2021-10-09T08:54:10.648474366Z       libraries blas not found in ['/usr/local/lib', '/usr/lib']
2021-10-09T08:54:10.648516088Z       NOT AVAILABLE
2021-10-09T08:54:10.648537680Z     
2021-10-09T08:54:10.648559754Z     /tmp/pip-install-aelx5ylg/numpy/numpy/distutils/system_info.py:1989: UserWarning:
2021-10-09T08:54:10.648602087Z         Blas (http://www.netlib.org/blas/) libraries not found.
2021-10-09T08:54:10.648624327Z         Directories to search for the libraries can be specified in the
2021-10-09T08:54:10.648665493Z         numpy/distutils/site.cfg file (section [blas]) or by setting
2021-10-09T08:54:10.648690123Z         the BLAS environment variable.
2021-10-09T08:54:10.648711882Z       if self._calc_info(blas):
2021-10-09T08:54:10.648752066Z     blas_src_info:
2021-10-09T08:54:10.648776214Z       NOT AVAILABLE
2021-10-09T08:54:10.648798621Z     
2021-10-09T08:54:10.648838936Z     /tmp/pip-install-aelx5ylg/numpy/numpy/distutils/system_info.py:1989: UserWarning:
2021-10-09T08:54:10.648862250Z         Blas (http://www.netlib.org/blas/) sources not found.
2021-10-09T08:54:10.648883954Z         Directories to search for the sources can be specified in the
2021-10-09T08:54:10.648924472Z         numpy/distutils/site.cfg file (section [blas_src]) or by setting
2021-10-09T08:54:10.648947416Z         the BLAS_SRC environment variable.
2021-10-09T08:54:10.648969119Z       if self._calc_info(blas):
2021-10-09T08:54:10.649010674Z       NOT AVAILABLE
2021-10-09T08:54:10.649035063Z     
2021-10-09T08:54:10.649057229Z     non-existing path in 'numpy/distutils': 'site.cfg'
2021-10-09T08:54:10.649100747Z     lapack_opt_info:
2021-10-09T08:54:10.649123988Z     lapack_mkl_info:
2021-10-09T08:54:10.649145969Z       libraries mkl_rt not found in ['/usr/local/lib', '/usr/lib']
2021-10-09T08:54:10.649189080Z       NOT AVAILABLE
2021-10-09T08:54:10.649211061Z     
2021-10-09T08:54:10.649233042Z     openblas_lapack_info:
2021-10-09T08:54:10.649273856Z       libraries openblas not found in ['/usr/local/lib', '/usr/lib']
2021-10-09T08:54:10.649296171Z       NOT AVAILABLE
2021-10-09T08:54:10.649334670Z     
2021-10-09T08:54:10.649357818Z     openblas_clapack_info:
2021-10-09T08:54:10.649379411Z       libraries openblas,lapack not found in ['/usr/local/lib', '/usr/lib']
2021-10-09T08:54:10.649418836Z       NOT AVAILABLE
2021-10-09T08:54:10.649441465Z     
2021-10-09T08:54:10.649462799Z     flame_info:
2021-10-09T08:54:10.649501928Z       libraries flame not found in ['/usr/local/lib', '/usr/lib']
2021-10-09T08:54:10.649525946Z       NOT AVAILABLE
2021-10-09T08:54:10.649592593Z     
2021-10-09T08:54:10.649616241Z     atlas_3_10_threads_info:
2021-10-09T08:54:10.649637667Z     Setting PTATLAS=ATLAS
2021-10-09T08:54:10.649678055Z       libraries lapack_atlas not found in /usr/local/lib
2021-10-09T08:54:10.649701129Z       libraries tatlas,tatlas not found in /usr/local/lib
2021-10-09T08:54:10.649722851Z       libraries lapack_atlas not found in /usr/lib
2021-10-09T08:54:10.649762499Z       libraries tatlas,tatlas not found in /usr/lib
2021-10-09T08:54:10.649791721Z     <class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
2021-10-09T08:54:10.649831202Z       NOT AVAILABLE
2021-10-09T08:54:10.649854368Z     
2021-10-09T08:54:10.649875608Z     atlas_3_10_info:
2021-10-09T08:54:10.649914256Z       libraries lapack_atlas not found in /usr/local/lib
2021-10-09T08:54:10.649937885Z       libraries satlas,satlas not found in /usr/local/lib
2021-10-09T08:54:10.649959681Z       libraries lapack_atlas not found in /usr/lib
2021-10-09T08:54:10.650002311Z       libraries satlas,satlas not found in /usr/lib
2021-10-09T08:54:10.650026588Z     <class 'numpy.distutils.system_info.atlas_3_10_info'>
2021-10-09T08:54:10.650048884Z       NOT AVAILABLE
2021-10-09T08:54:10.650088624Z     
2021-10-09T08:54:10.650111513Z     atlas_threads_info:
2021-10-09T08:54:10.650132920Z     Setting PTATLAS=ATLAS
2021-10-09T08:54:10.650172549Z       libraries lapack_atlas not found in /usr/local/lib
2021-10-09T08:54:10.650195290Z       libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib
2021-10-09T08:54:10.650217438Z       libraries lapack_atlas not found in /usr/lib
2021-10-09T08:54:10.650258456Z       libraries ptf77blas,ptcblas,atlas not found in /usr/lib
2021-10-09T08:54:10.650280844Z     <class 'numpy.distutils.system_info.atlas_threads_info'>
2021-10-09T08:54:10.650303714Z       NOT AVAILABLE
2021-10-09T08:54:10.650343695Z     
2021-10-09T08:54:10.650365325Z     atlas_info:
2021-10-09T08:54:10.650387232Z       libraries lapack_atlas not found in /usr/local/lib
2021-10-09T08:54:10.650429954Z       libraries f77blas,cblas,atlas not found in /usr/local/lib
2021-10-09T08:54:10.650452398Z       libraries lapack_atlas not found in /usr/lib
2021-10-09T08:54:10.650492416Z       libraries f77blas,cblas,atlas not found in /usr/lib
2021-10-09T08:54:10.650516527Z     <class 'numpy.distutils.system_info.atlas_info'>
2021-10-09T08:54:10.650538897Z       NOT AVAILABLE
2021-10-09T08:54:10.650560100Z     
2021-10-09T08:54:10.650599563Z     lapack_info:
2021-10-09T08:54:10.650622211Z       libraries lapack not found in ['/usr/local/lib', '/usr/lib']
2021-10-09T08:54:10.650672914Z       NOT AVAILABLE
2021-10-09T08:54:10.650696858Z     
2021-10-09T08:54:10.650724987Z     /tmp/pip-install-aelx5ylg/numpy/numpy/distutils/system_info.py:1849: UserWarning:
2021-10-09T08:54:10.650762765Z         Lapack (http://www.netlib.org/lapack/) libraries not found.
2021-10-09T08:54:10.650784524Z         Directories to search for the libraries can be specified in the
2021-10-09T08:54:10.650806412Z         numpy/distutils/site.cfg file (section [lapack]) or by setting
2021-10-09T08:54:10.650828319Z         the LAPACK environment variable.
2021-10-09T08:54:10.650850208Z       return getattr(self, '_calc_info_{}'.format(name))()
2021-10-09T08:54:10.650872060Z     lapack_src_info:
2021-10-09T08:54:10.650893374Z       NOT AVAILABLE
2021-10-09T08:54:10.650914763Z     
2021-10-09T08:54:10.650936411Z     /tmp/pip-install-aelx5ylg/numpy/numpy/distutils/system_info.py:1849: UserWarning:
2021-10-09T08:54:10.650979929Z         Lapack (http://www.netlib.org/lapack/) sources not found.
2021-10-09T08:54:10.651002058Z         Directories to search for the sources can be specified in the
2021-10-09T08:54:10.651023910Z         numpy/distutils/site.cfg file (section [lapack_src]) or by setting
2021-10-09T08:54:10.651045798Z         the LAPACK_SRC environment variable.
2021-10-09T08:54:10.651067057Z       return getattr(self, '_calc_info_{}'.format(name))()
2021-10-09T08:54:10.651096631Z       NOT AVAILABLE
2021-10-09T08:54:10.651118871Z     
2021-10-09T08:54:10.651139982Z     numpy_linalg_lapack_lite:
2021-10-09T08:54:10.651161482Z       FOUND:
2021-10-09T08:54:10.651182834Z         language = c
2021-10-09T08:54:10.651204389Z     
2021-10-09T08:54:10.651226259Z     /usr/local/lib/python3.9/distutils/dist.py:274: UserWarning: Unknown distribution option: 'define_macros'
2021-10-09T08:54:10.651248148Z       warnings.warn(msg)
2021-10-09T08:54:10.651269610Z     running dist_info
2021-10-09T08:54:10.651290795Z     running build_src
2021-10-09T08:54:10.651312147Z     build_src
2021-10-09T08:54:10.651354720Z     building py_modules sources
2021-10-09T08:54:10.651377591Z     creating build
2021-10-09T08:54:10.651398961Z     creating build/src.linux-armv7l-3.9
2021-10-09T08:54:10.651420331Z     creating build/src.linux-armv7l-3.9/numpy
2021-10-09T08:54:10.651442053Z     creating build/src.linux-armv7l-3.9/numpy/distutils
2021-10-09T08:54:10.651463460Z     building library "npymath" sources
2021-10-09T08:54:10.651485737Z     Could not locate executable gfortran
2021-10-09T08:54:10.651507256Z     Could not locate executable f95
2021-10-09T08:54:10.651528663Z     Could not locate executable ifort
2021-10-09T08:54:10.651573218Z     Could not locate executable ifc
2021-10-09T08:54:10.651595810Z     Could not locate executable lf95
2021-10-09T08:54:10.651617754Z     Could not locate executable pgfortran
2021-10-09T08:54:10.651639384Z     Could not locate executable nvfortran
2021-10-09T08:54:10.651660735Z     Could not locate executable f90
2021-10-09T08:54:10.651682272Z     Could not locate executable f77
2021-10-09T08:54:10.651703457Z     Could not locate executable fort
2021-10-09T08:54:10.651724679Z     Could not locate executable efort
2021-10-09T08:54:10.651746142Z     Could not locate executable efc
2021-10-09T08:54:10.651767438Z     Could not locate executable g77
2021-10-09T08:54:10.651788919Z     Could not locate executable g95
2021-10-09T08:54:10.651810067Z     Could not locate executable pathf95
2021-10-09T08:54:10.651831104Z     Could not locate executable nagfor
2021-10-09T08:54:10.651852733Z     Could not locate executable frt
2021-10-09T08:54:10.651873974Z     don't know how to compile Fortran code on platform 'posix'
2021-10-09T08:54:10.651895455Z     Traceback (most recent call last):
2021-10-09T08:54:10.651916917Z       File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 280, in <module>
2021-10-09T08:54:10.651939973Z         main()
2021-10-09T08:54:10.651961676Z       File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 263, in main
2021-10-09T08:54:10.651983861Z         json_out['return_val'] = hook(**hook_input['kwargs'])
2021-10-09T08:54:10.652005694Z       File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 133, in prepare_metadata_for_build_wheel
2021-10-09T08:54:10.652028416Z         return hook(metadata_directory, config_settings)
2021-10-09T08:54:10.652075138Z       File "/tmp/pip-build-env-axghablh/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 157, in prepare_metadata_for_build_wheel
2021-10-09T08:54:10.652097952Z         self.run_setup()
2021-10-09T08:54:10.652119452Z       File "/tmp/pip-build-env-axghablh/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 248, in run_setup
2021-10-09T08:54:10.652147618Z         super(_BuildMetaLegacyBackend,
2021-10-09T08:54:10.652169563Z       File "/tmp/pip-build-env-axghablh/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 142, in run_setup
2021-10-09T08:54:10.652191951Z         exec(compile(code, __file__, 'exec'), locals())
2021-10-09T08:54:10.652213414Z       File "setup.py", line 513, in <module>
2021-10-09T08:54:10.652260265Z         setup_package()
2021-10-09T08:54:10.652282561Z       File "setup.py", line 505, in setup_package
2021-10-09T08:54:10.652304376Z         setup(**metadata)
2021-10-09T08:54:10.652326135Z       File "/tmp/pip-install-aelx5ylg/numpy/numpy/distutils/core.py", line 169, in setup
2021-10-09T08:54:10.652371245Z         return old_setup(**new_attr)
2021-10-09T08:54:10.652393819Z       File "/tmp/pip-build-env-axghablh/overlay/lib/python3.9/site-packages/setuptools/__init__.py", line 165, in setup
2021-10-09T08:54:10.652416560Z         return distutils.core.setup(**attrs)
2021-10-09T08:54:10.652438356Z       File "/usr/local/lib/python3.9/distutils/core.py", line 148, in setup
2021-10-09T08:54:10.652460152Z         dist.run_commands()
2021-10-09T08:54:10.652481670Z       File "/usr/local/lib/python3.9/distutils/dist.py", line 966, in run_commands
2021-10-09T08:54:10.652504040Z         self.run_command(cmd)
2021-10-09T08:54:10.652525762Z       File "/usr/local/lib/python3.9/distutils/dist.py", line 985, in run_command
2021-10-09T08:54:10.652547891Z         cmd_obj.run()
2021-10-09T08:54:10.652569410Z       File "/tmp/pip-build-env-axghablh/overlay/lib/python3.9/site-packages/setuptools/command/dist_info.py", line 31, in run
2021-10-09T08:54:10.652592095Z         egg_info.run()
2021-10-09T08:54:10.652613650Z       File "/tmp/pip-install-aelx5ylg/numpy/numpy/distutils/command/egg_info.py", line 24, in run
2021-10-09T08:54:10.652635816Z         self.run_command("build_src")
2021-10-09T08:54:10.652657723Z       File "/usr/local/lib/python3.9/distutils/cmd.py", line 313, in run_command
2021-10-09T08:54:10.652680334Z         self.distribution.run_command(command)
2021-10-09T08:54:10.652702001Z       File "/usr/local/lib/python3.9/distutils/dist.py", line 985, in run_command
2021-10-09T08:54:10.652724223Z         cmd_obj.run()
2021-10-09T08:54:10.652745741Z       File "/tmp/pip-install-aelx5ylg/numpy/numpy/distutils/command/build_src.py", line 144, in run
2021-10-09T08:54:10.652768130Z         self.build_sources()
2021-10-09T08:54:10.652789518Z       File "/tmp/pip-install-aelx5ylg/numpy/numpy/distutils/command/build_src.py", line 155, in build_sources
2021-10-09T08:54:10.652811555Z         self.build_library_sources(*libname_info)
2021-10-09T08:54:10.652833129Z       File "/tmp/pip-install-aelx5ylg/numpy/numpy/distutils/command/build_src.py", line 288, in build_library_sources
2021-10-09T08:54:10.652855425Z         sources = self.generate_sources(sources, (lib_name, build_info))
2021-10-09T08:54:10.652880980Z       File "/tmp/pip-install-aelx5ylg/numpy/numpy/distutils/command/build_src.py", line 378, in generate_sources
2021-10-09T08:54:10.652904665Z         source = func(extension, build_dir)
2021-10-09T08:54:10.652926239Z       File "numpy/core/setup.py", line 676, in get_mathlib_info
2021-10-09T08:54:10.652948424Z         raise RuntimeError("Broken toolchain: cannot link a simple C program")
2021-10-09T08:54:10.652970553Z     RuntimeError: Broken toolchain: cannot link a simple C program
2021-10-09T08:54:10.652992201Z     ----------------------------------------
2021-10-09T08:54:10.653033941Z ERROR: Command errored out with exit status 1: /usr/local/bin/python3 /usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmp9rj3axdw Check the logs for full command output.
2021-10-09T08:54:10.653057756Z WARNING: You are using pip version 20.2.4; however, version 21.2.4 is available.
2021-10-09T08:54:10.653079848Z You should consider upgrading via the '/usr/local/bin/python3 -m pip install --upgrade pip' command.

When commenting the multizone thermostat lines in configuration.yaml, and putting back the generic thermostat instead, everything is back to normal.
If I uncomment the multizone thermostat lines, then the “verify configuration” service in HA fails to work, and reboot never ends.

Hi Adrien,

I’ve been using it for a hassio version dating back from somewhere in the spring. I had to reboot hassio without any multizone thermostat config settings in order to install it properly and hereafter I rebooted it and was able to config it.

At your log I see a package installation requiment

2021-10-09T08:54:10.646532389Z 2021-10-09 10:54:10 ERROR (SyncWorker_3) [homeassistant.util.package] Unable to install package numpy==1.20.0: ERROR: Command errored out with exit status 1:

It seems that I set the requirement equal to 1.20.0 by ‘==’ you might try to change it to ‘>=’ instead. It is specified in requirements.txt.

Otherwise I can test if it still works on the latest hassio version somewhere this week.

Hm, I wonder if it is this problem after reading about the error. I think it might has to with your installation method by using docker in combination with a RPI.

I will try to look into it this week.

Yeah, I think it’s related to the use of docker image.
If I open a docker bash in the container and start Python, I can see filterpy is not installed, and numpy is 1.21.2.
When trying to install filterpy with pip, it downloads filterpy and scipy, and then I get the errors like in the log when it tries to install it.
The system docker image is read only I think, it would request to build a specific HA docker image with the required modules directly. Something I prefer not doing, so that I can keep the docker images clean to easily revert

It might work if you’re able to install and see that numpy+filterpy are installed. Does it work when you change the == to >= for numpy and filterpy in manifest.json?

Edit:
Ah sorry I didn’t read it correctly I think. You were not able to install filterpy and scipy manually from pip?

I’m not familiar with docker images but does this give any clues for installation options? filterpy · PyPI

Hi, I tried to install this perfect thermostat.

But I get always a error

Platform error climate.multizone_thermostat - Requirements for multizone_thermostat not found: ['numpy==1.20.0'].

I tried several ways into Custom_components directory
but nothing works…
please help.

This is inside my climate.yaml


- platform: multizone_thermostat
  name: pid.woonkamer
  sensor: sensor.thermostat_hc1_current_room_temperature
  initial_hvac_mode: "off"
  initial_preset_mode: "none"
  room_area: 20
  precision: 0.1
  heat:
    entity_id: switch.virtual_switch_fake_heater_switch
    min_temp: 15
    max_temp: 24
    initial_target_temp: 18
    away_temp: 16
    proportional_mode:
      control_interval:
        seconds: 60
      difference: 100
      minimal_diff: 5
      pwm:
        seconds: 300
      PID_mode:
        kp: 30
        ki: 0.003
        kd: -24000
  sensor_stale_duration:
    hours: 12
  restore_from_old_state: True
  restore_parameters: False
  restore_integral: True

Hi, sorry to hear it doesn’t work.

Could you try again as follows:

  • remove the climate.yaml
  • modify in manifest.json the requiments for numpy from == to >=
  • restart HA

I hope that it now installs the required modules and load HA without errors.

Next steps:

  • include climate.yaml
  • modify name without ‘.’ (not sure if dot is allowed)
  • restart HA

Now the climate should work.

Edit: start with only numpy change to >=

Hi @axax ,

I tried in all version I have, directory “custom_components”

{
  "domain": "multizone_thermostat",
  "name": "MultiZone thermostat",
  "documentation": ["https://github.com/vindaalex/multizone_thermostat","https://community.home-assistant.io/t/multizone-thermostat-incl-various-control-options/308898"],
  "requirements": ["numpy>=1.20.0", "filterpy==1.4.4"],
  "dependencies": ["sensor", "switch"],
  "codeowners": ["vindaalex"],
  "version": "0.1"
}

/custom_components/multizone_thermostat
/custom_components/multizone_thermostat-master
/custom_compentens/multizone_thermosts-master/multizone_thermosts-master
etc

No succes…

Can you sent me a picture of a good working directory…
maybe I do something wrong…

Sorry … but i’m not a Noob :slight_smile:

misschien ikke beetje doorgedraaid :slight_smile:

ow nieuwe melding…

The system cannot restart because the configuration is not valid: Platform error climate.multizone_thermostat - Requirements for multizone_thermostat not found: ['filterpy==1.4.4']

Can’t you just make a HACS? lol

so all files should be in:
config\custom_components\multizone_thermostat\

hi @axax ,

Thank you for your patience with me.

but…

I all did. and nothing.

I shall try to reinstall a fresh HA.
but this is strange.

I like your thermostat because I have Underfloor heating and thermostatic valves on the heaters.

greets Remco

No worries. For me it also the first time creating something like this.

Did you remove the config for the thermostat before the reboot? When you leave it, it check your config and sees a reference to the multizone_thermostat which has not been installed and then you can’t reboot.

The part in your config where you configure the thermostat:

Climate:
  Platform: multizone_thermostat
...
  

offcourse,

I first install the integration.
remove all climate config…
then restart.

then again put in the climate config.
then I get the failure…
Frustrating grmbllllllll

How is your folder structure now?And after first reboot, without the climate config, what does your logs mention?

Edit: ah sorry, you already shared updated folder structure already
Seems to be ok.

Goodmorning @axax ,

I did a fresh install on Proxmox.
installed it and I get now 2 failures.

first this:

image

when I removed the lines, I get

Platform error climate.multizone_thermostat - Requirements for multizone_thermostat not found: ['filterpy==1.4.4'].

does it have to do about the new update core?

greets

Ai, my mistake.

Nice to see you are at least able to config the thermostat! So the custom component is now able to install the requirements?

The example has for on/off mode an indentation too much. See example for proportional config. on_off_mode should be on the same level as away_temp

Hi @Axax,

No nothing works, because he can’t install “filterpy”
That’s the whole issue.

Logger: homeassistant.util.package
Source: util/package.py:99
First occurred: 11:53:56 (1 occurrences)
Last logged: 11:53:56

Unable to install package filterpy>=1.4.4: ERROR: Command errored out with exit status 1: command: /usr/local/bin/python3 /usr/local/lib/python3.9/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-qa8j7jjo/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple --find-links https://wheels.home-assistant.io/alpine-3.14/amd64/ --prefer-binary -- 'wheel<0.37.0' 'setuptools<58.0.0' 'Cython>=0.29.18,<3.0' 'pybind11>=2.4.3,<2.7.0' pythran==0.9.11 'numpy==1.19.2; python_version=='"'"'3.7'"'"' and platform_machine=='"'"'aarch64'"'"'' 'numpy==1.19.2; python_version=='"'"'3.8'"'"' and platform_machine=='"'"'aarch64'"'"'' 'numpy==1.16.5; python_version=='"'"'3.7'"'"' and platform_machine!='"'"'aarch64'"'"' and platform_python_implementation != '"'"'PyPy'"'"'' 'numpy==1.17.3; python_version=='"'"'3.8'"'"' and platform_machine!='"'"'aarch64'"'"' and platform_python_implementation != '"'"'PyPy'"'"'' 'numpy==1.19.3; python_version=='"'"'3.9'"'"' and platform_python_implementation != '"'"'PyPy'"'"'' 'numpy==1.20.0; python_version=='"'"'3.7'"'"' and platform_python_implementation=='"'"'PyPy'"'"'' 'numpy; python_version=='"'"'3.8'"'"' and platform_python_implementation=='"'"'PyPy'"'"'' 'numpy; python_version=='"'"'3.9'"'"' and platform_python_implementation=='"'"'PyPy'"'"'' cwd: None Complete output (262 lines): Looking in links: https://wheels.home-assistant.io/alpine-3.14/amd64/ Ignoring numpy: markers 'python_version == "3.7" and platform_machine == "aarch64"' don't match your environment Ignoring numpy: markers 'python_version == "3.8" and platform_machine == "aarch64"' don't match your environment Ignoring numpy: markers 'python_version == "3.7" and platform_machine != "aarch64" and platform_python_implementation != "PyPy"' don't match your environment Ignoring numpy: markers 'python_version == "3.8" and platform_machine != "aarch64" and platform_python_implementation != "PyPy"' don't match your environment Ignoring numpy: markers 'python_version == "3.7" and platform_python_implementation == "PyPy"' don't match your environment Ignoring numpy: markers 'python_version == "3.8" and platform_python_implementation == "PyPy"' don't match your environment Ignoring numpy: markers 'python_version == "3.9" and platform_python_implementation == "PyPy"' don't match your environment Collecting wheel<0.37.0 Downloading wheel-0.36.2-py2.py3-none-any.whl (35 kB) Collecting setuptools<58.0.0 Downloading setuptools-57.5.0-py3-none-any.whl (819 kB) Collecting Cython<3.0,>=0.29.18 Downloading Cython-0.29.24-py2.py3-none-any.whl (979 kB) Collecting pybind11<2.7.0,>=2.4.3 Downloading pybind11-2.6.2-py2.py3-none-any.whl (191 kB) Collecting pythran==0.9.11 Downloading pythran-0.9.11-py3-none-any.whl (4.2 MB) Collecting numpy==1.19.3 Downloading numpy-1.19.3.zip (7.3 MB) Installing build dependencies: started Installing build dependencies: finished with status 'done' Getting requirements to build wheel: started Getting requirements to build wheel: finished with status 'done' Preparing wheel metadata: started Preparing wheel metadata: finished with status 'error' ERROR: Command errored out with exit status 1: command: /usr/local/bin/python3 /usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmpnuu60d0p cwd: /tmp/pip-install-7yic5oyg/numpy Complete output (228 lines): Running from numpy source directory. setup.py:480: UserWarning: Unrecognized setuptools command, proceeding with generating Cython sources and expanding templates run_build = parse_setuppy_commands() Processing numpy/random/_bounded_integers.pxd.in Processing numpy/random/mtrand.pyx Processing numpy/random/_pcg64.pyx Processing numpy/random/bit_generator.pyx Processing numpy/random/_sfc64.pyx Processing numpy/random/_common.pyx Processing numpy/random/_bounded_integers.pyx.in Processing numpy/random/_philox.pyx Processing numpy/random/_generator.pyx Processing numpy/random/_mt19937.pyx Cythonizing sources blas_opt_info: blas_mkl_info: customize UnixCCompiler libraries mkl_rt not found in ['/usr/local/lib', '/usr/lib'] NOT AVAILABLE blis_info: libraries blis not found in ['/usr/local/lib', '/usr/lib'] NOT AVAILABLE openblas_info: libraries openblas not found in ['/usr/local/lib', '/usr/lib'] NOT AVAILABLE atlas_3_10_blas_threads_info: Setting PTATLAS=ATLAS libraries tatlas not found in ['/usr/local/lib', '/usr/lib'] NOT AVAILABLE atlas_3_10_blas_info: libraries satlas not found in ['/usr/local/lib', '/usr/lib'] NOT AVAILABLE atlas_blas_threads_info: Setting PTATLAS=ATLAS libraries ptf77blas,ptcblas,atlas not found in ['/usr/local/lib', '/usr/lib'] NOT AVAILABLE atlas_blas_info: libraries f77blas,cblas,atlas not found in ['/usr/local/lib', '/usr/lib'] NOT AVAILABLE accelerate_info: NOT AVAILABLE /tmp/pip-install-7yic5oyg/numpy/numpy/distutils/system_info.py:1914: UserWarning: Optimized (vendor) Blas libraries are not found. Falls back to netlib Blas library which has worse performance. A better performance should be easily gained by switching Blas library. if self._calc_info(blas): blas_info: libraries blas not found in ['/usr/local/lib', '/usr/lib'] NOT AVAILABLE /tmp/pip-install-7yic5oyg/numpy/numpy/distutils/system_info.py:1914: UserWarning: Blas (http://www.netlib.org/blas/) libraries not found. Directories to search for the libraries can be specified in the numpy/distutils/site.cfg file (section [blas]) or by setting the BLAS environment variable. if self._calc_info(blas): blas_src_info: NOT AVAILABLE /tmp/pip-install-7yic5oyg/numpy/numpy/distutils/system_info.py:1914: UserWarning: Blas (http://www.netlib.org/blas/) sources not found. Directories to search for the sources can be specified in the numpy/distutils/site.cfg file (section [blas_src]) or by setting the BLAS_SRC environment variable. if self._calc_info(blas): NOT AVAILABLE non-existing path in 'numpy/distutils': 'site.cfg' lapack_opt_info: lapack_mkl_info: libraries mkl_rt not found in ['/usr/local/lib', '/usr/lib'] NOT AVAILABLE openblas_lapack_info: libraries openblas not found in ['/usr/local/lib', '/usr/lib'] NOT AVAILABLE openblas_clapack_info: libraries openblas,lapack not found in ['/usr/local/lib', '/usr/lib'] NOT AVAILABLE flame_info: libraries flame not found in ['/usr/local/lib', '/usr/lib'] NOT AVAILABLE atlas_3_10_threads_info: Setting PTATLAS=ATLAS libraries lapack_atlas not found in /usr/local/lib libraries tatlas,tatlas not found in /usr/local/lib libraries lapack_atlas not found in /usr/lib libraries tatlas,tatlas not found in /usr/lib <class 'numpy.distutils.system_info.atlas_3_10_threads_info'> NOT AVAILABLE atlas_3_10_info: libraries lapack_atlas not found in /usr/local/lib libraries satlas,satlas not found in /usr/local/lib libraries lapack_atlas not found in /usr/lib libraries satlas,satlas not found in /usr/lib <class 'numpy.distutils.system_info.atlas_3_10_info'> NOT AVAILABLE atlas_threads_info: Setting PTATLAS=ATLAS libraries lapack_atlas not found in /usr/local/lib libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib libraries lapack_atlas not found in /usr/lib libraries ptf77blas,ptcblas,atlas not found in /usr/lib <class 'numpy.distutils.system_info.atlas_threads_info'> NOT AVAILABLE atlas_info: libraries lapack_atlas not found in /usr/local/lib libraries f77blas,cblas,atlas not found in /usr/local/lib libraries lapack_atlas not found in /usr/lib libraries f77blas,cblas,atlas not found in /usr/lib <class 'numpy.distutils.system_info.atlas_info'> NOT AVAILABLE lapack_info: libraries lapack not found in ['/usr/local/lib', '/usr/lib'] NOT AVAILABLE /tmp/pip-install-7yic5oyg/numpy/numpy/distutils/system_info.py:1748: UserWarning: Lapack (http://www.netlib.org/lapack/) libraries not found. Directories to search for the libraries can be specified in the numpy/distutils/site.cfg file (section [lapack]) or by setting the LAPACK environment variable. return getattr(self, '_calc_info_{}'.format(name))() lapack_src_info: NOT AVAILABLE /tmp/pip-install-7yic5oyg/numpy/numpy/distutils/system_info.py:1748: UserWarning: Lapack (http://www.netlib.org/lapack/) sources not found. Directories to search for the sources can be specified in the numpy/distutils/site.cfg file (section [lapack_src]) or by setting the LAPACK_SRC environment variable. return getattr(self, '_calc_info_{}'.format(name))() NOT AVAILABLE numpy_linalg_lapack_lite: FOUND: language = c define_macros = [('HAVE_BLAS_ILP64', None), ('BLAS_SYMBOL_SUFFIX', '64_')] /usr/local/lib/python3.9/distutils/dist.py:274: UserWarning: Unknown distribution option: 'define_macros' warnings.warn(msg) running dist_info running build_src build_src building py_modules sources creating build creating build/src.linux-x86_64-3.9 creating build/src.linux-x86_64-3.9/numpy creating build/src.linux-x86_64-3.9/numpy/distutils building library "npymath" sources Could not locate executable gfortran Could not locate executable f95 Could not locate executable ifort Could not locate executable ifc Could not locate executable lf95 Could not locate executable pgfortran Could not locate executable nvfortran Could not locate executable f90 Could not locate executable f77 Could not locate executable fort Could not locate executable efort Could not locate executable efc Could not locate executable g77 Could not locate executable g95 Could not locate executable pathf95 Could not locate executable nagfor don't know how to compile Fortran code on platform 'posix' Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 280, in <module> main() File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 263, in main json_out['return_val'] = hook(**hook_input['kwargs']) File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 133, in prepare_metadata_for_build_wheel return hook(metadata_directory, config_settings) File "/tmp/pip-build-env-df_h3yqk/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 157, in prepare_metadata_for_build_wheel self.run_setup() File "/tmp/pip-build-env-df_h3yqk/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 248, in run_setup super(_BuildMetaLegacyBackend, File "/tmp/pip-build-env-df_h3yqk/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 142, in run_setup exec(compile(code, __file__, 'exec'), locals()) File "setup.py", line 508, in <module> setup_package() File "setup.py", line 500, in setup_package setup(**metadata) File "/tmp/pip-install-7yic5oyg/numpy/numpy/distutils/core.py", line 169, in setup return old_setup(**new_attr) File "/tmp/pip-build-env-df_h3yqk/overlay/lib/python3.9/site-packages/setuptools/__init__.py", line 165, in setup return distutils.core.setup(**attrs) File "/usr/local/lib/python3.9/distutils/core.py", line 148, in setup dist.run_commands() File "/usr/local/lib/python3.9/distutils/dist.py", line 966, in run_commands self.run_command(cmd) File "/usr/local/lib/python3.9/distutils/dist.py", line 985, in run_command cmd_obj.run() File "/tmp/pip-build-env-df_h3yqk/overlay/lib/python3.9/site-packages/setuptools/command/dist_info.py", line 31, in run egg_info.run() File "/tmp/pip-install-7yic5oyg/numpy/numpy/distutils/command/egg_info.py", line 24, in run self.run_command("build_src") File "/usr/local/lib/python3.9/distutils/cmd.py", line 313, in run_command self.distribution.run_command(command) File "/usr/local/lib/python3.9/distutils/dist.py", line 985, in run_command cmd_obj.run() File "/tmp/pip-install-7yic5oyg/numpy/numpy/distutils/command/build_src.py", line 144, in run self.build_sources() File "/tmp/pip-install-7yic5oyg/numpy/numpy/distutils/command/build_src.py", line 155, in build_sources self.build_library_sources(*libname_info) File "/tmp/pip-install-7yic5oyg/numpy/numpy/distutils/command/build_src.py", line 288, in build_library_sources sources = self.generate_sources(sources, (lib_name, build_info)) File "/tmp/pip-install-7yic5oyg/numpy/numpy/distutils/command/build_src.py", line 378, in generate_sources source = func(extension, build_dir) File "numpy/core/setup.py", line 663, in get_mathlib_info raise RuntimeError("Broken toolchain: cannot link a simple C program") RuntimeError: Broken toolchain: cannot link a simple C program ---------------------------------------- ERROR: Command errored out with exit status 1: /usr/local/bin/python3 /usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmpnuu60d0p Check the logs for full command output. WARNING: You are using pip version 20.2.4; however, version 21.3 is available. You should consider upgrading via the '/usr/local/bin/python3 -m pip install --upgrade pip' command. ---------------------------------------- ERROR: Command errored out with exit status 1: /usr/local/bin/python3 /usr/local/lib/python3.9/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-qa8j7jjo/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple --find-links https://wheels.home-assistant.io/alpine-3.14/amd64/ --prefer-binary -- 'wheel<0.37.0' 'setuptools<58.0.0' 'Cython>=0.29.18,<3.0' 'pybind11>=2.4.3,<2.7.0' pythran==0.9.11 'numpy==1.19.2; python_version=='"'"'3.7'"'"' and platform_machine=='"'"'aarch64'"'"'' 'numpy==1.19.2; python_version=='"'"'3.8'"'"' and platform_machine=='"'"'aarch64'"'"'' 'numpy==1.16.5; python_version=='"'"'3.7'"'"' and platform_machine!='"'"'aarch64'"'"' and platform_python_implementation != '"'"'PyPy'"'"'' 'numpy==1.17.3; python_version=='"'"'3.8'"'"' and platform_machine!='"'"'aarch64'"'"' and platform_python_implementation != '"'"'PyPy'"'"'' 'numpy==1.19.3; python_version=='"'"'3.9'"'"' and platform_python_implementation != '"'"'PyPy'"'"'' 'numpy==1.20.0; python_version=='"'"'3.7'"'"' and platform_python_implementation=='"'"'PyPy'"'"'' 'numpy; python_version=='"'"'3.8'"'"' and platform_python_implementation=='"'"'PyPy'"'"'' 'numpy; python_version=='"'"'3.9'"'"' and platform_python_implementation=='"'"'PyPy'"'"'' Check the logs for full command output. WARNING: You are using pip version 20.2.4; however, version 21.3 is available. You should consider upgrading via the '/usr/local/bin/python3 -m pip install --upgrade pip' command.

and second error.

Logger: homeassistant.components.hassio
Source: components/hassio/__init__.py:552
Integration: Home Assistant Supervisor (documentation, issues)
First occurred: 11:53:56 (1 occurrences)
Last logged: 11:53:56

The system cannot restart because the configuration is not valid: Platform error climate.multizone_thermostat - Requirements for multizone_thermostat not found: ['filterpy>=1.4.4'].

I’m running in Proxmox.
I tried to install throug pip… but it don’t work.

really frustrating…

yup, indeed a python problem i gues.

I run hassio via proxmox as well. I will try coming days if I can reproduce te error and hopefully fix it.