bmx sollte oben sein, bitte mal testen!
Ankündigung
Einklappen
Keine Ankündigung bisher.
Plugin darksky.net für Wetterdaten - wird Ende 2021 Abgeschaltet
Einklappen
X
-
Hallo zusammen,
erst einmal vielen Dank für die viele Arbeit am DarkSky plugin.
Ich versuche nun schon seit paar Tagen das DarkSky plugin zum Laufen zu bekommen.
* gemäss README.html Dateides plugins
1) Generieren von API-Key
2) Konfigurieren des plugins *
3) Erstellen von Items *
4) Copy/Paste von Stefan Widmers PHP Skript in "/var/www/html/smartVISU/lib/weather/service/"
PHP-Code:<?php
/**
* -----------------------------------------------------------------------------
* @package smartVISU
* @author Stefan Widmer
* @copyright 2018
* @license GPL [http://www.gnu.de]
* -----------------------------------------------------------------------------
*/
require_once '../../../lib/includes.php';
require_once const_path_system.'weather/weather.php';
require_once const_path_system.'class_cache.php';
/**
* This class generates a weather
*/
class weather_darksky extends weather
{
/**
* retrieve the content
*/
public function run()
{
// api call
$cache = new class_cache('darksky_'.$this->location.'.json');
if ($cache->hit($this->cache_duration_minutes))
{
$content = $cache->read();
}
else
{
$url = 'https://api.darksky.net/forecast/'.config_weather_key.'/'.$this->location.'?exclude=minutely,hourly,alerts&units=a uto&lang='.trans('darksky', 'lang');
$content = file_get_contents($url);
$cache->write($content);
}
$parsed_json = json_decode($content);
if ($parsed_json->{'daily'})
{
$this->debug($parsed_json);
// today
$this->data['current']['temp'] = transunit('temp', (float)$parsed_json->{'currently'}->{'temperature'});
$this->data['current']['conditions'] = (string)$parsed_json->{'currently'}->{'summary'};
$this->data['current']['icon'] = $this->icon((string)$parsed_json->{'currently'}->{'icon'}, $this->icon_sm);
$wind_speed = transunit('speed', (float)$parsed_json->{'currently'}->{'windSpeed'});
$wind_gust = transunit('speed', (float)$parsed_json->{'currently'}->{'windGust'});
$wind_direction = (int)$parsed_json->{'currently'}->{'windBearing'};
$this->data['current']['wind'] = translate('wind', 'darksky')." ".$wind_speed;
// when there is no wind, direction is blank
if ($parsed_json->{'currently'}->{'windSpeed'} != 0)
$this->data['current']['wind'] .= " ".translate('from', 'darksky')." ".$wind_direction."°";
if ($wind_gust > 0)
$this->data['current']['wind'] .= ", ".translate('wind_gust', 'darksky')." ".$wind_gust;
$this->data['current']['more'] = translate('humidity', 'darksky')." ".transunit('%', 100*(float)$parsed_json->{'currently'}->{'humidity'});
// forecast
$i = 0;
foreach ($parsed_json->{'daily'}->{'data'} as $day)
{
if((int)$day->{'time'} < mktime(0, 0 ,0) || (int)$day->{'time'} > time()+3*24*60*60) // next 4 days only
continue;
$this->data['forecast'][$i]['date'] = date('Y-m-d', (int)$day->{'time'});
$this->data['forecast'][$i]['conditions'] = (string)$day->{'summary'};
$this->data['forecast'][$i]['icon'] = $this->icon((string)$day->{'icon'});
$this->data['forecast'][$i]['temp'] = round((float)$day->{'temperatureHigh'}, 0).'°/'.round((float)$day->{'temperatureLow'}, 0).'°';
$i++;
}
}
else
{
$add = $parsed_json->{'flags'}->{'darksky-unavailable'};
$this->error('Weather: darksky.net', 'Read request failed'.($add ? ': '.$add : '').'!');
}
}
/*
* Icon-Mapper
*/
function icon($name, $sm = 'sun_')
{
$ret = '';
$icon['clear-day'] = $sm.'1';
$icon['clear-night'] = $sm.'1';
$icon['partly-cloudy-day'] = $sm.'4';
$icon['partly-cloudy-night'] = $sm.'4';
$icon['fog'] = $sm.'6';
$icon['rain'] = 'cloud_8';
$icon['wind'] = $sm.'10';
$icon['snow'] = $sm.'12';
$icon['cloudy'] = 'cloud_4';
$icon['sleet'] = 'cloud_11';
$ret = $icon[$name];
return $ret;
}
}
// -----------------------------------------------------------------------------
// call the service
// -----------------------------------------------------------------------------
$service = new weather_darksky(array_merge($_GET, $_POST));
echo $service->json();
?>
Das fetchen/updaten der Daten funktioniert einwandfrei (beurteilt am Webinterface von DarkSky).
Jeodch kann ich leider die widgets nicht in SmartVisu darstellen
Code:<hr> {% import "weather.html" as weather %} {{ weather.current('weather') }} <hr> {{weather.forecastweek('weather_forecast') }} <hr>
Hat hier jemand eine Idee was ich hier übersehe? Wo ich suchen soll?
Liebe Grüsse,
brunosa3
Kommentar
-
Das eine ist das plugin
https://github.com/smarthomeNG/plugi...ksky/README.md
das andere die Visu. Das php Skript brauchst du nicht, nimm einfach aktuellen develop branch der Visu! Dort musst du in den visu settings deine Daten inkl api key eingeben. Hat aber wie erwähnt nix mit dem plugin von shng zu tun
Kommentar
-
Hallo Onkelandy ,
es tut mir Leid wenn ich noch einige Dinge vertausche.
Ich habe nun das PHP Skript verworfen und auf develop branch gewechselt.
Code:cd /var/www/html/smartVISU git checkout develop
2020-02-06_22-19-13.png
Leider sehe ich trotzdem keine Wetter Daten
2020-02-06_22-19-56.png
ich habe es bereits erfolglos mit "API key" oder "API key/passwort" probiert.
Auch habe ich das ü in Baden-Wüttember mit einem ue ausgetauscht. jeodch ohne Erfolg.
Wisst Ihr was sich hier beisst?
Liebe Grüsse,
brunosa3
Kommentar
-
Zitat von wvhn Beitrag anzeigenund das "r" in Württemberg?
Habe nun verschiedene Sachen ausprobiert:
- Onkelandy Beispiel mit 47.****/7.**** oder Germany/47.****/7.**** oder Germany/Baden-Württemberg/47.****/7.****
- das Beispiel "Germany/Bayern/Würzburg"
Leider ohne Erfolg.
Es muss wohl an etwas anderes liegen.
was für ein Format verwendet Ihr beim API-Key für darksky.net? "API-KEY" oder "API-KEY/Passwort" oder "API-KEY/Passwort/Number of requests per hour"
Keiner der Optionen hat bei mir funktioniert.
Das Plugin verwendet man hauptsächlich für die Logiken oder?
Liebe Grüsse,
brunosa3
Kommentar
-
Ich habe am Wochenende meine SmartHomeNG auf die 1.71 geupdated. Vorher hatte ich 1.61, glaube ich. Seitdem scheint darksky nicht mehr so richtig zu funktionieren. Es gibt keine Fehlermeldungen in den Logs, alles läuft scheinbar, aber die Werte stimmen nicht. Und nun habe ich mal in die Details geschaut:
....darksky.daily.data
....darksky.hourly.data
werden gar nicht aktualisiert und damit stimmen natürlich auch die abhängen Items, die die Daten daraus beziehen nicht. Habe ich da eine Änderung übersehen?
- Likes 1
Kommentar
Kommentar