Quantcast
Channel: Configuration - Home Assistant Community
Viewing all articles
Browse latest Browse all 96121

SNMP bandwidth monitor using statistics and a utility meter

$
0
0

@parautenbach wrote:

I’ve built a bandwidth monitor based on this and this post. It almost works. I have read through this post and other related ones to see if I’ve missed something but to no avail.

My goal is to see instantaneous usage but especially daily and monthly totals. The former works, but the latter two seems to be off. I’m using a utility meter for that.

Here is my config (as a minimal example – my full config can be seen here):

input_number:
  wan_traffic_delta_in:
    min: 0
    max: 4294967295
  wan_traffic_delta_out:
    min: 0
    max: 4294967295

utility_meter:
  daily_internet_usage_in:
    source: sensor.internet_usage_in
    cycle: daily
  daily_internet_usage_out:
    source: sensor.internet_usage_out
    cycle: daily
  monthly_internet_usage_in:
    source: sensor.internet_usage_in
    cycle: monthly
  monthly_internet_usage_out:
    source: sensor.internet_usage_out
    cycle: monthly

automation:
  - alias: "Monitor Inbound Internet Traffic"
    trigger:
      platform: state
      entity_id: sensor.snmp_wan_in
    action:
      - service: input_number.set_value
        data_template:
          entity_id: input_number.wan_traffic_delta_in
          value: '{{ ((trigger.to_state.state | int - trigger.from_state.state | int) * 8 ) / ( as_timestamp(trigger.to_state.last_updated) - as_timestamp(trigger.from_state.last_updated) ) }}'
  - alias: "Monitor Outbound Internet Traffic"
    trigger:
      platform: state
      entity_id: sensor.snmp_wan_out
    action:
      - service: input_number.set_value
        data_template:
          entity_id: input_number.wan_traffic_delta_out
          value: '{{ ((trigger.to_state.state | int - trigger.from_state.state | int) * 8 ) / ( as_timestamp(trigger.to_state.last_updated) - as_timestamp(trigger.from_state.last_updated) ) }}'

sensor:
  - platform: snmp
    name: snmp_wan_in
    host: 192.168.0.1
    community: Router
    version: 2c
    baseoid: 1.3.6.1.2.1.2.2.1.10.18  # ifInOctets.14
    unit_of_measurement: octets
  - platform: snmp
    name: snmp_wan_out
    host: 192.168.0.1
    community: Router
    version: 2c
    baseoid: 1.3.6.1.2.1.2.2.1.16.18  # ifOutOctets.14
    unit_of_measurement: octets
  - platform: statistics
    name: 'Internet Traffic In'
    entity_id: sensor.internet_speed_in
  - platform: statistics
    name: 'Internet Traffic Out'
    entity_id: sensor.internet_speed_out
  - platform: template
    sensors:
      internet_speed_in:
        value_template: '{{ ((states.input_number.wan_traffic_delta_in.state | float ) / 1000000 ) | round(3) }}'
        unit_of_measurement: 'Mbps'
      internet_speed_out:
        value_template: '{{ ((states.input_number.wan_traffic_delta_out.state | float ) / 1000000 ) | round(3) }}'
        unit_of_measurement: 'Mbps'
      internet_usage_in:
        value_template: '{{ ((states.input_number.wan_traffic_delta_in.state | float ) / 1000000000 / 8 ) | round(3) }}'
        unit_of_measurement: 'GB'
      internet_usage_out:
        value_template: '{{ ((states.input_number.wan_traffic_delta_out.state | float ) / 1000000000 / 8 ) | round(3) }}'
        unit_of_measurement: 'GB'

In my ui-lovelace.yaml I have:

          - type: history-graph
            entities:
              - entity: sensor.internet_speed_in
              - entity: sensor.internet_speed_out
            hours_to_show: 24
            refresh_interval: 60
          - type: glance
            title: Today
            show_name: false
            columns: 2
            entities:
              - entity: sensor.daily_internet_usage_in
                name: Today
              - entity: sensor.daily_internet_usage_out
                name: Today
          - type: glance
            title: This Month
            show_name: false
            columns: 2
            entities:
              - entity: sensor.monthly_internet_usage_in
                name: This Month
              - entity: sensor.monthly_internet_usage_out
                name: This Month

What I see:

What my ISP says:

I’m pretty confident (as can be seen from my history graph of the instantaneous usage) that that part is working correctly (it’s a 10Mbps line (downlink) and a 5Mbps uplink).

I’m not sure whether it will be sensible to start fiddling with sampling sizes and scan intervals.

I’m I misunderstanding how a utility meter could be used for this or do I have an error in my calculations or config?

Posts: 1

Participants: 1

Read full topic


Viewing all articles
Browse latest Browse all 96121

Trending Articles