From f141c6915b300aedf471f5cfd79a7be249a2eaf7 Mon Sep 17 00:00:00 2001 From: Ivan Pavlina Date: Wed, 8 Apr 2020 16:01:27 +0200 Subject: [PATCH] Fix icons for accounting sensors, update accounting docs --- README.md | 11 ++--------- custom_components/mikrotik_router/sensor.py | 8 ++++---- docs/assets/images/ui/accounting_sensor.jpg | Bin 18269 -> 21017 bytes 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index e5c2938..a5036e7 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ You can add this integration several times for different devices. ![Add Integration](https://raw.githubusercontent.com/tomaae/homeassistant-mikrotik_router/master/docs/assets/images/ui/setup_integration.png) * "Host" - Use hostname or IP * "Port" - Leave at 0 for defaults -* "Name of the integration" - Friendy name for this router +* "Name of the integration" - Friendly name for this router * "Unit of measurement" - Traffic sensor measurement (bps, Kbps, Mbps, B/s, KB/s, MB/s) # Configuration @@ -68,11 +68,4 @@ For per-IP throughput tracking Mikrotik's accounting feature is used. Feature will be automatically used if accounting is enabled in Mikrotik. Feature is present in Winbox IP-Accounting. Make sure that threshold is set to reasonable value to store all connections between user defined scan interval. Max value is 8192 so for piece of mind I recommend setting that value. Web Access is not needed, integration is using API access. -Integration will scan DHCP Lease table and ARP table to generate all known hosts and create two sensors for WAN traffic (mikrotik-XXX-wan-rx and mikrotik-XXX-wan-tx). If the parameter *account-local-traffic* is set in Mikrotik's accounting configuration it will also create two sensors for LAN traffic (mikrotik-XXX-lan-rx and mikrotik-XXX-lan-tx). - -Device's name will be determined by first available string in this order: -1. DHCP hostname -2. DNS static entry -3. Device's MAC address - -Devices attributes contain IP Address, MAC address and Comment (filled by comment of devices DHCP lease, fallbacks to device name in definition above) \ No newline at end of file +Integration will scan DHCP Lease table and ARP table to generate all known hosts. For every host aleast two sensors for WAN traffic (mikrotik-XXX-wan-rx and mikrotik-XXX-wan-tx) are created. If the parameter *account-local-traffic* is set in Mikrotik's accounting configuration it will also create two sensors for LAN traffic (mikrotik-XXX-lan-rx and mikrotik-XXX-lan-tx). diff --git a/custom_components/mikrotik_router/sensor.py b/custom_components/mikrotik_router/sensor.py index 1241f32..d784af8 100644 --- a/custom_components/mikrotik_router/sensor.py +++ b/custom_components/mikrotik_router/sensor.py @@ -81,7 +81,7 @@ SENSOR_TYPES = { }, "accounting_lan_tx": { ATTR_DEVICE_CLASS: None, - ATTR_ICON: "mdi:download-network", + ATTR_ICON: "mdi:upload-network", ATTR_LABEL: "LAN TX", ATTR_GROUP: "Accounting", ATTR_UNIT: "ps", @@ -91,7 +91,7 @@ SENSOR_TYPES = { }, "accounting_lan_rx": { ATTR_DEVICE_CLASS: None, - ATTR_ICON: "mdi:upload-network", + ATTR_ICON: "mdi:download-network", ATTR_LABEL: "LAN RX", ATTR_GROUP: "Accounting", ATTR_UNIT: "ps", @@ -101,7 +101,7 @@ SENSOR_TYPES = { }, "accounting_wan_tx": { ATTR_DEVICE_CLASS: None, - ATTR_ICON: "mdi:download-network", + ATTR_ICON: "mdi:upload-network", ATTR_LABEL: "WAN TX", ATTR_GROUP: "Accounting", ATTR_UNIT: "ps", @@ -111,7 +111,7 @@ SENSOR_TYPES = { }, "accounting_wan_rx": { ATTR_DEVICE_CLASS: None, - ATTR_ICON: "mdi:upload-network", + ATTR_ICON: "mdi:download-network", ATTR_LABEL: "WAN RX", ATTR_GROUP: "Accounting", ATTR_UNIT: "ps", diff --git a/docs/assets/images/ui/accounting_sensor.jpg b/docs/assets/images/ui/accounting_sensor.jpg index 97ee35dcb3e569af1052f3aab1d9dd5eda5ee9c5..c41942c2dbfc472b75cc14b4a17ae7ae86d32435 100644 GIT binary patch literal 21017 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 literal 18269 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