๐Ÿ“ฆ fffonion / tplink-plug-exporter

TP-Link Smart Plug Prometheus Exporter

โ˜… 133 stars โ‘‚ 23 forks ๐Ÿ‘ 133 watching โš–๏ธ BSD 2-Clause "Simplified" License
prometheus-exportersmart-hometplinktplink-kasa
๐Ÿ“ฅ Clone https://github.com/fffonion/tplink-plug-exporter.git
HTTPS git clone https://github.com/fffonion/tplink-plug-exporter.git
SSH git clone git@github.com:fffonion/tplink-plug-exporter.git
CLI gh repo clone fffonion/tplink-plug-exporter
fffonion fffonion baipiao a39b3b2 7 months ago ๐Ÿ“ History
๐Ÿ“‚ a39b3b2197456f09248aa1fda32ea2d530032eb6 View all commits โ†’
๐Ÿ“ .github
๐Ÿ“ exporter
๐Ÿ“ kasa
๐Ÿ“„ .gitignore
๐Ÿ“„ .goreleaser.yml
๐Ÿ“„ Dockerfile
๐Ÿ“„ go.mod
๐Ÿ“„ go.sum
๐Ÿ“„ LICENSE
๐Ÿ“„ main.go
๐Ÿ“„ README.md
๐Ÿ“„ README.md

tplink-plug-exporter

Export TP-Link Smart Plug metrics to grafana dashboard

Install

Download from releases or run from docker

docker run -d -p 9233:9233 fffonion/tplink-plug-exporter

Usage

Use the -h flag to see full usage:

$ tplink-plug-exporter -h
Usage of tplink-plug-exporter:
  -metrics.listen-addr string
        listen address for tplink-plug exporter (default ":9233")

Grafana dashboard

Search for Kasa inside grafana or install from https://grafana.com/grafana/dashboards/10957 img

Sample prometheus config

# scrape kasa devices
scrape_configs:
  - job_name: 'kasa'
    static_configs:
    - targets:
      # IP of your smart plugs
      - 192.168.0.233
      - 192.168.0.234
    metrics_path: /scrape
    relabel_configs:
      - source_labels : [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        # IP of the exporter
        replacement: localhost:9233

# scrape kasa_exporter itself
  - job_name: 'kasa_exporter'
    static_configs:
      - targets:
        # IP of the exporter
        - localhost:9233

Docker Build Instructions

Build for both arm64 and amd64:

docker build -t <image-name>:latest-arm64 --platform linux/arm64 --build-arg GOARCH=arm64 .
docker build -t <image-name>:latest-amd64 --platform linux/amd64 --build-arg GOARCH=amd64 .

Merge them in one manifest:

docker manifest create <image-name>:latest --amend <image-name>:latest-arm64 --amend <image-name>:latest-amd64
docker manifest push <image-name>:latest

See also

  • Original reverse engineering work: https://github.com/softScheck/tplink-smartplug
Powered by DartNode