Open juriad opened 4 years ago
Hi, I made a similar script which puts the data into InfluxDB and then shows them in Grafana.
Php script:
<?php # forward data to weatherunderground $url = 'http://rtupdate.wunderground.com/weatherstation/updateweatherstation.php?' . http_build_query($_GET); $result = file_get_contents($url); # no need to save to file, but I like to see that the script works file_put_contents('update', json_encode([$_GET, $result])); # utility functions for unit conversion function f2c($f) { return 5 / 9 * ($f - 32); } function in2hpa($in) { return $in * 33.86389; } function p2dec($p) { return $p / 100; } function mph2kmph($mph) { return $mph * 1.609344; } function in2mm($in) { return $in * 25.4; } function toInflux() { $barometric_pressure_hpa = in2hpa($_GET['baromin']); $temperature_c = f2c($_GET['tempf']); $humidity = $_GET['humidity']; $dew_point_c = f2c($_GET['dewptf']); $wind_speed_kmph = mph2kmph($_GET['windspeedmph']); $wind_gust_kmph = mph2kmph($_GET['windgustmph']); $wind_direction = $_GET['winddir']; $rain_mm = in2mm($_GET['rainin']); $daily_rain_mm = in2mm($_GET['dailyrainin']); $indoor_temperature_c = f2c($_GET['indoortempf']); $indoor_humidity = $_GET['indoorhumidity']; $content = [ 'barometric_pressure_hpa' => $barometric_pressure_hpa, 'temperature_c' => $temperature_c, 'humidity' => $humidity, 'dew_point_c' => $dew_point_c, 'wind_speed_kmph' => $wind_speed_kmph, 'wind_gust_kmph' => $wind_gust_kmph, 'wind_direction' => $wind_direction, 'rain_mm' => $rain_mm, 'daily_rain_mm' => $daily_rain_mm, 'indoor_temperature_c' => $indoor_temperature_c, 'indoor_humidity' => $indoor_humidity ]; $opts = [ 'http' => [ 'method' => "POST", 'content' => "weather " . http_build_query($content, '', ','), ] ]; $params = [ "db" => "meteo" ]; # no need to store to file file_put_contents('influx', json_encode($opts)); file_get_contents( 'http://localhost:8086/write?' . http_build_query($params), false, stream_context_create($opts) ); } toInflux();
docker-compose.yml:
version: '3' services: influxdb: image: influxdb:1.8 ports: - 8086:8086 volumes: - /srv/influxdvb:/var/lib/influxdb chronograf: image: chronograf:1.8 ports: - 8888:8888 environment: INFLUXDB_URL: http://influxdb:8086 grafana: image: grafana/grafana:7.0.0 ports: - 3000:3000 volumes: - /srv/grafana:/var/lib/grafana
It would be easy to add php to the docker setup, I haven't done it yet.
The result can then look like this (grafana dashboard):
My setup does not include UV as my UV sensor is faulty and always reports 0. It would be very easy to add.
Nice work!
Hi, I made a similar script which puts the data into InfluxDB and then shows them in Grafana.
Php script:
docker-compose.yml:
It would be easy to add php to the docker setup, I haven't done it yet.
The result can then look like this (grafana dashboard):
My setup does not include UV as my UV sensor is faulty and always reports 0. It would be very easy to add.