Plugwise Smile custom_component (BETA)

Yes thanks, I understand now. Was a bit confusing at first, since the previous naming exactly coincided with my home hardware, having a boiler heat up when my boiler feeds the external water boiler / cv system (with a 3-way valve)…

I would of course welcome any sensor you can create, if not, I template the values out of the main climate entity.

If anything, I think it would be really cool if you could embrace the water tap icon in the integration, indicating the heater is heating for hot water, and not heating. The plugise hardware sees this and shows it on the Anna thermostat, so why not use that info too? it would really add to the usefulness if the integration.

If its any use to you, here’s what I use, with comments in front of the sensors needed in the core Plugwise integration, now superseded by the sensors the beta integration creates:

sensor:
  - platform: template
    sensors:
      kantoor_thermostat_state:
        friendly_name: Current state
        value_template: >
          {{states('climate.kantoor')|capitalize}}
        icon_template: >
          {% set state = states('climate.kantoor') %}
          {% if state == 'auto' %} mdi:autorenew
          {% elif state == 'idle' %} mdi:pause
          {% else %} mdi:power-off
          {% endif %}

      kantoor_thermostat_hvac_action:
        friendly_name: Hvac action
        value_template: >
          {{state_attr('climate.kantoor','hvac_action')|capitalize}}
        icon_template: >
          {% set action = state_attr('climate.kantoor','hvac_action') %}
          {% set icon = {'heating':'mdi:fire',
                         'cooling':'mdi:snowflake',
                         'auto':'mdi:autorenew'} %}
          {{icon[action] if action in icon else 'mdi:pause-circle'}}

#      kantoor_thermostat_temperature_current:
#        friendly_name: Current temp
#        value_template: >
#          {{state_attr('climate.kantoor','current_temperature')}}
#        icon_template: >
#          {% if state_attr('climate.kantoor','current_temperature') > 15 %} mdi:home-thermometer
#          {% else %} mdi:home-thermometer-outline
#          {% endif %}
#        unit_of_measurement: '°C'

#      kantoor_thermostat_temperature_target:
#        friendly_name: Target temp
#        value_template: >
#          {{state_attr('climate.kantoor','temperature')}}
#        icon_template: >
#          {{'mdi:thermostat'}}
#        unit_of_measurement: '°C'

#      kantoor_thermostat_temperature_boiler:
#        friendly_name: Boiler temp
#        value_template: >
#          {{state_attr('climate.kantoor','boiler_temperature')}}
#        icon_template: >
#          {% set boiler = state_attr('climate.kantoor','boiler_temperature')|int %}
#          {% if boiler > 60 %} mdi:thermometer-high
#          {% elif boiler > 20 %} mdi:thermometer
#          {% elif boiler > 0 %} mdi:thermometer-low
#          {% else %} mdi:thermometer-alert
#          {% endif %}
#        unit_of_measurement: '°C'

#      kantoor_thermostat_temperature_outdoor:
#        friendly_name: Outdoor temp
#        value_template: >
#          {{state_attr('climate.kantoor','outdoor_temperature')}}
#        icon_template: >
#          {% set outdoor = state_attr('climate.kantoor','outdoor_temperature')|int %}
#          {% if outdoor > 20 %} mdi:thermometer-high
#          {% elif outdoor > 10 %} mdi:thermometer
#          {% elif outdoor > 0 %} mdi:thermometer-low
#          {% else %} mdi:thermometer-alert
#          {% endif %}
#        unit_of_measurement: '°C'

      kantoor_thermostat_available_schemas:
        friendly_name: Available schemas
        value_template: >
          {{state_attr('climate.kantoor','available_schemas')}}
        icon_template: >
          {{'mdi:calendar-multiple-check'}}

      kantoor_thermostat_selected_schema:
        friendly_name: Selected schema
        value_template: >
          {{state_attr('climate.kantoor','selected_schema')}}
        icon_template: >
          {{'mdi:calendar-multiple-check'}}

      kantoor_thermostat_preset_modes:
        friendly_name: Preset modes
        value_template: >
          {{state_attr('climate.kantoor','preset_modes')}}
        icon_template: >
          {{'mdi:format-list-bulleted'}}

      kantoor_thermostat_current_preset_mode:
        friendly_name: Current preset mode
        value_template: >
          {{state_attr('climate.kantoor','preset_mode')|replace('_',' ')|capitalize}}
        icon_template: >
          {% set mode = state_attr('climate.kantoor','preset_mode') %}
          {% set icon = {'Temporary':'mdi:gesture-double-tap',
                         'Regulier':'mdi:check-circle',
                         'Manual':'mdi:gesture-swipe-vertical',
                         'away':'mdi:home-export-outline',
                         'vacation':'mdi:beach',
                         'asleep':'mdi:hotel',
                         'no_frost':'mdi:snowflake'} %}
          {{icon[mode] if mode in icon else 'mdi:home'}}

      kantoor_thermostat_hvac_modes:
        friendly_name: Hvac modes
        value_template: >
          {{state_attr('climate.kantoor','hvac_modes')}}
        icon_template: >
          {{'mdi:format-list-text'}}

      kantoor_thermostat_min_temp:
        friendly_name: Min temp
        value_template: >
          {{state_attr('climate.kantoor','min_temp')}}
        icon_template: >
          {{'mdi:thermometer-minus'}}

      kantoor_thermostat_max_temp:
        friendly_name: Max temp
        value_template: >
          {{state_attr('climate.kantoor','max_temp')}}
        icon_template: >
          {{'mdi:thermometer-plus'}}

      inside_temperature_color_name:
        value_template: >
          {% set temp = states('sensor.temperatuur_living')|float %}
          {% if temp < -5 %} mediumblue
          {% elif temp < 0 %} dodgerblue
          {% elif temp < 5 %} deepskyblue
          {% elif temp < 10 %} lightblue
          {% elif temp < 15 %} turquoise
          {% elif temp < 20 %} green
          {% elif temp < 25 %} darkgreen
          {% elif temp < 30 %} orange
          {% elif temp < 35 %} crimson
          {% else %} firebrick
          {% endif %}

bottom one of course merely for customizations :wink:

thanks, and please keep up the good work, much appreciated!

Wrt to the tapping-icon, the best we can do is show it as an icon for the binary_sensor.auxilairy_dhw_state.
If you want it to be somewhere else, request it as a feature, or create something yourself.

Small update from my sight. My Anna / Smile combination is now stable for 5 days. Switched from WiFi to Ethernet connection and got great support from PlugWise support sorting my issue with the app, where the native connection between app and Smile gateway didn’t work (no remote connection). Afterwards I saw they remotely updated my firmware version from 4.0.15 to 4.0.18. Don’t know what changed. I will now enable this custom_component integration for PlugWise in HA again and see if the gateway stays stable.

1 Like

Deleted, not relevant.

Hi Bouwe,

Now I browse my Plugwise system via the network, I see an extra sensor for Modulation level (the black graph Under Activities) is available as there is a temp sensor for ‘Aanvoer’ ('Retour temp is the currently provided sensor for Boiler temperature)
Apparently there should also be a ‘Gewenst’ boiler temp, but that isn’t showing in my graph.


would it be possible to have these sensors in the Integration too?

i was wondering if the integration would be able to read the dhw comfort setting from the smile and if possible to enable/disable the setting with HA.

For feature-requests please create an Issue on our Plugwise-beta github.

In the newest prerelease versions (0.2.7rc1, 0.2.10b0) the modulation-level is there (Anna only, not present for Adam), as is intended_boiler_temperature = Gewenst?
Note: boiler_temperature is Aanvoer temp.
Retourtemp links to the xml-key return_water_temperature.

I see 2 xml-keys: domestic_hot_water_comfort_mode and intended_domestic_hot_water_comfort_mode. Not sure what does what.

Enabling, disabling via HA, I quickly had a look at my xml-data (Adam), domestic_hot_water_comfort_mode is one of the actuator_functionalities, so yes, looks like it is possible.
But, how often would you switch this function? We do not have the intention to replace the present Plugwise App functionality, only provide the basic and most used functions.

not really sure you’re saying this is available as sensor too? Would be really nice since it would be an important instrument checking correct functionality (in my system…) Im trying to optimize the hardware side of my system, and need to see if the differences between Aanvoer and Retour are as expected.

did you ever consider adding ‘entity_namespace’ to the plugwise integration? it would make it very easy to find all created sensors that way in the developer-tools/states. It would be really nice to be able to have all integration sensors begin with a name of choice, or at least with ‘plugwise’…
(and yes I know we can search in the integration page. The overview we get there underlines my point )

I’m saying: can be added as a sensor. See a few posts up for the procedure of getting it in.

Entity namespace: “These options are being phased out and are only available for single platform integrations.”
And, as I read this, this is something the user, you, can do. I’m not sure what the code-owner should do?

ha missed that, Ill file a feature request.

yes, but only on integrations we set using yaml, and the beta is configured via the UI…
maybe consider to prefix all entities with a clear name?

I mean we must have a lot of fantasy finding the
binary_sensor.auxiliary_dhw_state a plugwise entity in the states page.

if these entities were prefixed with plugwise_ it would help a lot.

Please create another Issue for this on the github.

As per your request, and thanks for considering: [IDEAS/FUTURE/ROADMAP] Investigate custom added entity-prefix (using config-flow) · Issue #66 · plugwise/plugwise-beta · GitHub

btw:

using 0.2.10.b0, should I see it here?:

Yes, as sensor.auxiliary_modulation_level I think.
Otherwise, search for “modulation” on the Developers Tools --> States page.

sorry, was just editing my post above, apparently the click restart hadn’t kicked in, and I had to manually restart the Ha instance to load the new Custom component. Happens every once in a while:


thanks for your reply.

btw, I can confirm that using the yaml config and

climate:
  - platform: plugwise
    password: 'password'
    host: 192.168.1.130
    name: Kantoor
    entity_namespace: plugwise

the namespace is set accordingly (only on climate in this setup, because this is the core integration on ha 0.110 release, and no extra sensors are created):

As replied on the feature-issue - please see if /config/entities works - filter/sorting on the custom or core integrations is part of that page. This will show the human readable name, entity and integration. I fully understand it’s not the same as ‘more easily type-out {domain}.thisintegration_whatever’ but it could double as a lookup in a secondary tab, just copy/pasting along.

OK, reply to my own post to let you know that my Anna is now stable for 4 days with the integration enabled in HA and connected via UTP. Really happy. I updated HA today to 0.110.0 without issues. Unfortunately I didn’t get a response from PlugWise regarding my question what they changed remotely and what the updated firmware changed.

Thanks to the people supplying us with this integration!

@Atarian Glad to read that, enjoy the integration!

got all sorts of errors using rc2 on 109.6… https://github.com/plugwise/plugwise-beta/issues/65#issuecomment-632044769

even a deletion and reconfiguration to the integrations didnt help.

–edit–
unless

the 0.110 onward (0.111 must-have)

means this isnt for 109.6… back to rc1 it is