buffy007 / garni Goto Github PK
View Code? Open in Web Editor NEWScripts and tools for Garni Meteo devices.
License: MIT License
Scripts and tools for Garni Meteo devices.
License: MIT License
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.