HomeWizard Energy (Wi-Fi P1 meter, kWh meter, Energy Socket and Water Meter)

Please check in your app that you have firmware version 2.11 or higher. This should be automatically updated within an hour after connecting. If not, please send me the serial number of your device via a direct message.

1 Like

We had a powercut a few days ago, and since then I’m seeing error messages in the HA log:

Logger: custom_components.homewizard_energy.sensor
Source: helpers/update_coordinator.py:153
Integration: HomeWizard Energy ([documentation](https://github.com/Unsigus/hass-homewizard-energy), [issues](https://github.com/Unsigus/hass-homewizard-energy/issues))
First occurred: 29 January 2021, 9:50:18 (89 occurrences)
Last logged: 11:30:25

Error requesting p1 meter data: Cannot connect to host 192.168.178.143:80 ssl:default [Connect call failed ('192.168.178.143', 80)]

They seem to be fairly random failures, perhaps 2 or 3 times per hour. Is this something to be looked at, or just ignore? Thanks.

The HomeWizard Energy app itself seems to be functioning as normal.

I will take a look. In the mean time, can you report this issue at https://github.com/DCSBL/ha-homewizard-energy/issues? That way I can have all issues at the same place :slight_smile:!

Wow nice! I’m in for the code as well to make this dashboard :heart_eyes:

thanks in advance if you want to share it

Hi Plaatjesdraaier

how is your dashboard functioning now? All sensors working/giving results? I’m looking for something like this as well, but i couldn’t get the 2 boxes below on the right to work.

If it works for you, can u maybe share an actual screenshot? If so i’m going to delete everything & start from scratch again :smiley:

thanks!

Hi iMatth.
I have been busy with some other automations but as far as I can see, the part from Homewizard is working.
This is my (test) dashboard for now


I have my configuration split up so these are my separate files :
\entities\utilitity_meters\homewizard.yaml :

energy_import_t2_dagelijks:
  source: sensor.p1_meter_total_power_import_t2
  cycle: daily

energy_import_t1_dagelijks:
  source: sensor.p1_meter_total_power_import_t1
  cycle: daily

energy_export_t2_dagelijks:
  source: sensor.p1_meter_total_power_export_t2
  cycle: daily

energy_export_t1_dagelijks:
  source: sensor.p1_meter_total_power_export_t1
  cycle: daily

energy_gas_dagelijks:
  source: sensor.p1_meter_total_gas
  cycle: daily  

\entities\sensors\homewizard.yaml :

#Export electra
- platform: template
  sensors:
    energy_export_t2_dagelijks_eur:
      friendly_name: 'Opbrengsten vandaag nomaal tarief (T2)'
      value_template: "{{ (states('sensor.energy_export_t2_dagelijks')|float * states('input_number.t2_energy_cost')|float)|round(2) }}"
      unit_of_measurement: "€"

- platform: template
  sensors:
    energy_export_t1_dagelijks_eur:
      friendly_name: 'Opbrengsten vandaag dal tarief (T1)'
      value_template: "{{ (states('sensor.energy_export_t1_dagelijks')|float * states('input_number.t1_energy_cost')|float)|round(2) }}"
      unit_of_measurement: "€"

- platform: template
  sensors:
    energy_export_total_dagelijks_eur:
      friendly_name: 'Opbrengsten export vandaag dal + normaal'
      value_template: "{{ (states('sensor.energy_export_t2_dagelijks_eur')|float + states('sensor.energy_export_t1_dagelijks_eur')|float)|round(2) }}"
      unit_of_measurement: "€"

- platform: template
  sensors:
    energy_export_total_dagelijks_kwh:
      friendly_name: 'kWh export vandaag dal + normaal'
      value_template: "{{ (states('sensor.energy_export_t2_dagelijks_eur')|float + states('sensor.energy_export_t1_dagelijks_eur')|float)|round(2) }}"
      unit_of_measurement: "kWh"
          
#import electra 
- platform: template
  sensors:
    energy_import_t2_dagelijks_eur:
      friendly_name: 'Kosten import vandaag nomaal tarief (T2)'
      value_template: "{{ (states('sensor.energy_import_t2_dagelijks')|float * states('input_number.t2_energy_cost')|float)|round(2) }}"
      unit_of_measurement: "€"

- platform: template
  sensors:
    energy_import_t1_dagelijks_eur:
      friendly_name: 'Kosten import vandaag dal tarief (T1)'
      value_template: "{{ (states('sensor.energy_import_t1_dagelijks')|float * states('input_number.t1_energy_cost')|float)|round(2) }}"
      unit_of_measurement: "€"

- platform: template
  sensors:
    energy_import_total_dagelijks_eur:
      friendly_name: 'Kosten import vandaag dal + normaal'
      value_template: "{{ (states('sensor.energy_import_t2_dagelijks_eur')|float + states('sensor.energy_import_t1_dagelijks_eur')|float)|round(2) }}"
      unit_of_measurement: "€"

- platform: template
  sensors:
    energy_import_total_dagelijks_kwh:
      friendly_name: 'kWh import vandaag dal + normaal'
      value_template: "{{ (states('sensor.energy_import_t1_dagelijks')|float + states('sensor.energy_import_t2_dagelijks')|float)|round(2) }}"
      unit_of_measurement: "kWh"

#Netto electra (kosten - opbrengsten) Bij teruggave zal er '-' zichtbaar zijn
- platform: template
  sensors:
    energy_total_dagelijks_eur:
      friendly_name: 'Kosten vandaag electra'
      value_template: "{{ (states('sensor.energy_import_total_dagelijks_eur')|float - states('sensor.energy_export_total_dagelijks_eur')|float)|round(2) }}"
      unit_of_measurement: "€"


#import gas
- platform: template
  sensors:
    energy_gass_eur:
      friendly_name: 'Kosten vandaag gas'
      value_template: "{{ (states('sensor.energy_gas_dagelijks')|float * states('input_number.gas_energy_cost')|float)|round(2) }}"
      unit_of_measurement: "€"

#Totale netto kosten (Gas + electra)
- platform: template
  sensors:
    energy_gas_en_elektriciteit_eur:
      friendly_name: 'Totale netto kosten energie'
      value_template: "{{ (states('sensor.energy_gass_eur')|float + states('sensor.energy_total_dagelijks_eur')|float)|round(2) }}"
      unit_of_measurement: "€"

And these are my 3 ‘helper’ (under ‘settings’

1 Like

I will share my code later this week, remind me if i forget :laughing:

2 Likes

Slightly changed dashboard :


1:

type: vertical-stack
cards:
  - type: gauge
    entity: sensor.p1_meter_active_power
    max: 5000
    name: Actueel verbruik
    min: -5000
    severity:
      green: 600
      yellow: 2000
      red: 3000
  - type: glance
    entities:
      - entity: sensor.p1_meter_total_power_export_t1
      - entity: sensor.p1_meter_total_power_import_t1
    state_color: false
  - type: entities
    entities:
      - entity: input_number.t2_energy_cost
      - entity: input_number.t1_energy_cost
      - entity: input_number.gas_energy_cost
    title: Tarieven

2:

type: vertical-stack
cards:
  - type: entity
    entity: sensor.energy_gas_en_elektriciteit_eur
    name: Totale netto kosten energie (electro + gas) -  opbr zon
    icon: 'mdi:currency-eur'
  - type: entity
    entity: sensor.energy_export_total_dagelijks_eur
    name: Opbrengst zonnepanelen
  - type: entity
    entity: sensor.energy_import_total_dagelijks_eur
    name: Electriciteitskosten vandaag
  - type: entity
    entity: sensor.energy_gass_eur
    name: Gas kosten vandaag

3:

type: vertical-stack
cards:
  - type: entities
    entities:
      - entity: sensor.p1_meter_total_power_export_t1
      - entity: sensor.p1_meter_total_power_export_t2
      - entity: sensor.p1_meter_total_power_import_t1
      - entity: sensor.p1_meter_total_power_import_t2
      - entity: sensor.p1_meter_total_gas
    title: Meterstanden
  - type: entities
    entities:
      - entity: sensor.energy_export_total_dagelijks_kwh
      - entity: sensor.energy_import_total_dagelijks_kwh
  - type: entities
    entities:
      - entity: sensor.energy_export_t2_dagelijks_eur
      - entity: sensor.energy_export_t1_dagelijks_eur
    title: Zonnepanelen

2 Likes

Done. Thanks.

oh boy, i would love to get it like that…
is that possible with the integrated dsmr slimme meter too?

This is my Mobile View at the moment.

3 Likes

Nice one, did u managed to make the sum of the T1 & T2 meter? And in what way are u able to count ‘per dag’ & ‘per week’?

Thanks for sharing!

You need to create utility meters:
You can also create yearly in a easy way if you want just change the cycle to yearly

##############################
## Utility Meter            ##
##############################

utility_meter:
  energy_import_t2_dagelijks:
    source: sensor.p1_meter_total_power_import_t2
    cycle: daily

  energy_import_t1_dagelijks:
    source: sensor.p1_meter_total_power_import_t1
    cycle: daily
    
  energy_import_t2_wekelijks:
    source: sensor.p1_meter_total_power_import_t2
    cycle: weekly

  energy_import_t1_wekelijks:
    source: sensor.p1_meter_total_power_import_t1
    cycle: weekly   

  energy_import_t2_maandelijks:
    source: sensor.p1_meter_total_power_import_t2
    cycle: monthly

  energy_import_t1_maandelijks:
    source: sensor.p1_meter_total_power_import_t1
    cycle: monthly   


#  energy_export_t2_dagelijks:
#    source: sensor.p1_meter_total_power_export_t2_kwh
#    cycle: daily

#  energy_export_t1_dagelijks:
#    source: sensor.p1_meter_total_power_export_t1_kwh
#    cycle: daily

  energy_gas_dagelijks:
    source: sensor.p1_meter_total_gas
    cycle: daily
    
  energy_gas_wekelijks:
    source: sensor.p1_meter_total_gas
    cycle: weekly
    
  energy_gas_maandelijks:
    source: sensor.p1_meter_total_gas
    cycle: monthly

And a couple of sensors:

sensor:
##############################################
##                 ELEKTRA                  ##
##############################################

  - platform: template
    sensors:
      energy_import_t2_dagelijks_eur:
        friendly_name: 'Dagelijkse kosten nomaal tarief (T2)'
        value_template: "{{ (states('sensor.energy_import_t2_dagelijks')|float * states('input_number.t2_energy_cost')|float)|round(2) }}"
        unit_of_measurement: "€"
  
  - platform: template
    sensors:
      energy_import_t2_wekelijks_eur:
        friendly_name: 'Wekelijkse kosten nomaal tarief (T2)'
        value_template: "{{ (states('sensor.energy_import_t2_wekelijks')|float * states('input_number.t2_energy_cost')|float)|round(2) }}"
        unit_of_measurement: "€"

  - platform: template
    sensors:
      energy_import_t2_maandelijks_eur:
        friendly_name: 'Maandelijkse kosten nomaal tarief (T2)'
        value_template: "{{ (states('sensor.energy_import_t2_maandelijks')|float * states('input_number.t2_energy_cost')|float)|round(2) }}"
        unit_of_measurement: "€"
        
##############################################  
  
  - platform: template
    sensors:
      energy_import_t1_dagelijks_eur:
        friendly_name: 'Dagelijkse kosten dal tarief (T1)'
        value_template: "{{ (states('sensor.energy_import_t1_dagelijks')|float * states('input_number.t1_energy_cost')|float)|round(2) }}"
        unit_of_measurement: "€"

  - platform: template
    sensors:
      energy_import_t1_wekelijks_eur:
        friendly_name: 'Wekelijkse kosten dal tarief (T1)'
        value_template: "{{ (states('sensor.energy_import_t1_wekelijks')|float * states('input_number.t1_energy_cost')|float)|round(2) }}"
        unit_of_measurement: "€"

  - platform: template
    sensors:
      energy_import_t1_maandelijks_eur:
        friendly_name: 'Maandelijkse kosten dal tarief (T1)'
        value_template: "{{ (states('sensor.energy_import_t1_maandelijks')|float * states('input_number.t1_energy_cost')|float)|round(2) }}"
        unit_of_measurement: "€"
        
##############################################  		

  - platform: template
    sensors:
      energy_import_total_dagelijks_eur:
        friendly_name: 'Dagelijkse kosten dal + normaal'
        value_template: "{{ (states('sensor.energy_import_t2_dagelijks_eur')|float + states('sensor.energy_import_t1_dagelijks_eur')|float)|round(2) }}"
        unit_of_measurement: "€"

  - platform: template
    sensors:
      energy_import_total_wekelijks_eur:
        friendly_name: 'Wekelijkse kosten dal + normaal'
        value_template: "{{ (states('sensor.energy_import_t2_wekelijks_eur')|float + states('sensor.energy_import_t1_wekelijks_eur')|float)|round(2) }}"
        unit_of_measurement: "€"

  - platform: template
    sensors:
      energy_import_total_maandelijks_eur:
        friendly_name: 'Maandelijkse kosten dal + normaal'
        value_template: "{{ (states('sensor.energy_import_t2_maandelijks_eur')|float + states('sensor.energy_import_t1_maandelijks_eur')|float)|round(2) }}"
        unit_of_measurement: "€"

############################################## 

  - platform: template
    sensors:
      energy_import_total_dagelijks_kwh:
        friendly_name: 'kWh vandaag dal + normaal'
        value_template: "{{ (states('sensor.energy_import_t1_dagelijks')|float + states('sensor.energy_import_t2_dagelijks')|float)|round(2) }}"
        unit_of_measurement: "kWh"


  - platform: template
    sensors:
      energy_import_total_wekelijks_kwh:
        friendly_name: 'kWh wekelijks dal + normaal'
        value_template: "{{ (states('sensor.energy_import_t1_wekelijks')|float + states('sensor.energy_import_t2_wekelijks')|float)|round(2) }}"
        unit_of_measurement: "kWh"

  - platform: template
    sensors:
      energy_import_total_maandelijks_kwh:
        friendly_name: 'kWh maandelijks dal + normaal'
        value_template: "{{ (states('sensor.energy_import_t1_maandelijks')|float + states('sensor.energy_import_t2_maandelijks')|float)|round(2) }}"
        unit_of_measurement: "kWh"
 
 ############################################## 
 ##                    GAS                   ##
 ##############################################
 
  - platform: template
    sensors:
      energy_gas_daily_eur:
        friendly_name: 'Dagelijkse kosten gas'
        value_template: "{{ (states('sensor.energy_gas_dagelijks')|float * states('input_number.gas_energy_cost')|float)|round(2) }}"
        unit_of_measurement: "€"
  
  - platform: template
    sensors:
      energy_gas_weekly_eur:
        friendly_name: 'Wekelijkse kosten gas'
        value_template: "{{ (states('sensor.energy_gas_wekelijks')|float * states('input_number.gas_energy_cost')|float)|round(2) }}"
        unit_of_measurement: "€"
        
  - platform: template
    sensors:
      energy_gas_monthly_eur:
        friendly_name: 'Maandelijkse kosten gas'
        value_template: "{{ (states('sensor.energy_gas_maandelijks')|float * states('input_number.gas_energy_cost')|float)|round(2) }}"
        unit_of_measurement: "€"   

 ############################################## 
 ##   Totale netto kosten (Gas + electra)    ##
 ##############################################
 
  - platform: template
    sensors:
      energy_gas_en_elektriciteit_dagelijks_eur:
        friendly_name: 'Totale netto dag kosten energie'
        value_template: "{{ (states('sensor.energy_gas_daily_eur')|float + states('sensor.energy_import_total_dagelijks_eur')|float)|round(2) }}"
        unit_of_measurement: "€"

  - platform: template
    sensors:
      energy_gas_en_elektriciteit_wekelijks_eur:
        friendly_name: 'Totale netto week kosten energie'
        value_template: "{{ (states('sensor.energy_gas_weekly_eur')|float + states('sensor.energy_import_total_wekelijks_eur')|float)|round(2) }}"
        unit_of_measurement: "€"

  - platform: template
    sensors:
      energy_gas_en_elektriciteit_maandelijks_eur:
        friendly_name: 'Totale netto maand kosten energie'
        value_template: "{{ (states('sensor.energy_gas_monthly_eur')|float + states('sensor.energy_import_total_maandelijks_eur')|float)|round(2) }}"
        unit_of_measurement: "€"
3 Likes

Thanks for the info. Dashboard made with Grafana?

Nope only mini graph cards in a stack

Repreducing the graphs from the P1 Energy Meter app in HA.
Still a work in prgress.

Energy_Meter

5 Likes

Guess you’re using: apexcharts-card looks smooth…

Yes, great custom card, lots of options and many new lately …

Total_Costs

Can you share that one, so I can also play with it…

sure, here it is:

type: 'custom:apexcharts-card'
graph_span: 7d
span:
  end: day
header:
  show: true
  title: Totale energie kosten per dag in €
apex_config:
  chart:
    type: area
    height: 315
  stroke:
    show: true
    width: 1
    curve: smooth
  legend:
    show: true
  dataLabels:
    enabled: true
  fill:
    type: gradient
    gradient:
      shadeIntensity: 0.1
      opacityFrom: 0.25
      opacityTo: 1
      inverseColors: true
      stops:
        - 0
        - 90
        - 100
series:
  - color: 'rgb(138,43,226)'
    entity: sensor.energy_gas_en_elektriciteit_eur
    type: column
    group_by:
      func: max
      duration: 24h
1 Like