https://github.com/ccmpbll/cloudflare-speedtest-mqtt
A simple container designed to send JSON formatted CloudFlare speedtest results over MQTT.
https://github.com/ccmpbll/cloudflare-speedtest-mqtt
cloudflare json mqtt speedtest
Last synced: 5 months ago
JSON representation
A simple container designed to send JSON formatted CloudFlare speedtest results over MQTT.
- Host: GitHub
- URL: https://github.com/ccmpbll/cloudflare-speedtest-mqtt
- Owner: ccmpbll
- License: gpl-3.0
- Created: 2022-11-20T19:29:00.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-06-26T02:44:53.000Z (about 2 years ago)
- Last Synced: 2025-02-22T20:17:09.730Z (over 1 year ago)
- Topics: cloudflare, json, mqtt, speedtest
- Language: Python
- Homepage:
- Size: 223 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# cloudflare-speedtest-mqtt
   
A simple container designed to send JSON formatted CloudFlare speed test results over MQTT. Borrows code from [tevslin/cloudflarepycli](https://github.com/tevslin/cloudflarepycli) to perform the speed test.
#### Required environment variables:
MQTT_SERVER : IP address of MQTT server
MQTT_TOPIC : Topic for speed test results
SLEEP : Seconds between speed test runs
#### Optional environment variables:
MQTT_USER: MQTT username
MQTT_PASS: MQTT password
#### Example:
```
docker run -d -e MQTT_TOPIC='cfspeedtest/results' -e MQTT_SERVER_='192.168.1.10' -e SLEEP='3600' ccmpbll/cloudflare-speedtest-mqtt:latest
```
#### Telegraf Config Example
I use Telegraf to get this data into my InfluxDB instance. Below is an excerpt from my Telegraf config that demonstrates how I accomplish this.
If there is a better way to do this, I am *very* open to suggestions.
```TOML
[[inputs.mqtt_consumer]]
name_override = ""
servers = ["tcp://:1883"]
topics = [""]
data_format = "json_v2"
[[inputs.mqtt_consumer.json_v2]]
[[inputs.mqtt_consumer.json_v2.field]]
path = "wan_ip.value"
rename = "wan_ip"
type = "string"
[[inputs.mqtt_consumer.json_v2.field]]
path = "service_provider.value"
rename = "service_provider"
type = "string"
[[inputs.mqtt_consumer.json_v2.field]]
path = "test_location_code.value"
rename = "test_location_code"
type = "string"
[[inputs.mqtt_consumer.json_v2.field]]
path = "client_location_city.value"
rename = "client_location_city"
type = "string"
[[inputs.mqtt_consumer.json_v2.field]]
path = "client_location_region.value"
rename = "client_location_region"
type = "string"
[[inputs.mqtt_consumer.json_v2.field]]
path = "client_location_country.value"
rename = "client_location_country"
type = "string"
[[inputs.mqtt_consumer.json_v2.field]]
path = "latency_ms.value"
rename = "latency_ms"
type = "float"
[[inputs.mqtt_consumer.json_v2.field]]
path = "jitter_ms.value"
rename = "jitter_ms"
type = "float"
[[inputs.mqtt_consumer.json_v2.field]]
path = "100kB_download_Mbps.value"
rename = "100kB_download_Mbps"
type = "float"
[[inputs.mqtt_consumer.json_v2.field]]
path = "1MB_download_Mbps.value"
rename = "1MB_download_Mbps"
type = "float"
[[inputs.mqtt_consumer.json_v2.field]]
path = "10MB_download_Mbps.value"
rename = "10MB_download_Mbps"
type = "float"
[[inputs.mqtt_consumer.json_v2.field]]
path = "25MB_download_Mbps.value"
rename = "25MB_download_Mbps"
type = "float"
[[inputs.mqtt_consumer.json_v2.field]]
path = "90th_percentile_download_Mbps.value"
rename = "90th_percentile_download_Mbps"
type = "float"
[[inputs.mqtt_consumer.json_v2.field]]
path = "100kB_upload_Mbps.value"
rename = "100kB_upload_Mbps"
type = "float"
[[inputs.mqtt_consumer.json_v2.field]]
path = "1MB_upload_Mbps.value"
rename = "1MB_upload_Mbps"
type = "float"
[[inputs.mqtt_consumer.json_v2.field]]
path = "10MB_upload_Mbps.value"
rename = "10MB_upload_Mbps"
type = "float"
[[inputs.mqtt_consumer.json_v2.field]]
path = "90th_percentile_upload_Mbps.value"
rename = "90th_percentile_upload_Mbps"
type = "float"
```