Habe bei mir Schnee und Regen mit drinnen, haben gestern 5 cm Schnee bekommen, wurde aber nicht angezeigt
ok spannend - könntest du mir deine angepasste Version zukommen lassen?
nicht die Visu sondern dein angepasstes Modul
modul.php usw. von OpenWeatherOneCall
Danke im Voraus
Achtung, läuft bei mir auf einer Windows Maschine
<?php
//Wettersymbole in Medienobjekt schreiben
//IPS_Sleep(1000); // Script verzögern damit alle OpenWeatherMap Daten geladen werden können
$MediaID = 17541; // Image im MedienPool (übergeodnetes Objekt)
$Wetterbedingung = GetValue(16749); // Wetterbedingungssymbol von OpenWeatherMap (auslösende Variable)
$Path = "C:\\ProgramData\Symcon\\media\\Wettersymbole\\";
$Image = "44.png"; // N/A Wettersymbol wenn Wetter Code nicht vorhanden
// ******************* Bedingungen vergleichen *************************
//day
if ($Wetterbedingung == "01d") $Image = "32.png";
if ($Wetterbedingung == "02d") $Image = "30.png";
if ($Wetterbedingung == "03d") $Image = "28.png";
if ($Wetterbedingung == "04d") $Image = "26.png";
if ($Wetterbedingung == "09d") $Image = "40.png";
if ($Wetterbedingung == "10d") $Image = "39.png";
if ($Wetterbedingung == "11d") $Image = "3.png";
if ($Wetterbedingung == "13d") $Image = "13.png";
if ($Wetterbedingung == "50d") $Image = "34.png";
//night
if ($Wetterbedingung == "01n") $Image = "31.png";
if ($Wetterbedingung == "02n") $Image = "29.png";
if ($Wetterbedingung == "03n") $Image = "27.png";
if ($Wetterbedingung == "04n") $Image = "26.png";
if ($Wetterbedingung == "09n") $Image = "40.png";
if ($Wetterbedingung == "10n") $Image = "45.png";
if ($Wetterbedingung == "11n") $Image = "47.png";
if ($Wetterbedingung == "13n") $Image = "46.png";
if ($Wetterbedingung == "50n") $Image = "33.png";
// *********************************************************************
//$ImageFile = $Path.$Image; // Image-Datei
//IPS_SetMediaContent($MediaID, IPS_GetMediaContent($MediaID)); // Image im MedienPool mit Image-Datei
//Echo $ImageFile;
$ImageFile = $Path.$Image; // Image-Datei
IPS_SetMediaFile($MediaID, $ImageFile, true); // Image im MedienPool mit Image-Datei
danke für die Übermittlung. Das passt bei mir auch so.
Ursprünglich war mein Anliegen ein anderes.
Mittels OWM One Call und eine php Skript wird die Wochenvorschau des Wetters in der Webfront angezeigt (funktioniert soweit alles).
Jedoch nur Wind, Regen, Bewölkung und Temperaturen.
Hier möchte ich auch Schnee anzeigen lassen (ICON (wenn leicht möglich) und Text).
Jedoch wird SNOW im Modul OWM One Call für die Vorschau nicht von der API ausgelesen (nur Snow_1h).
Hier wäre die Frage ob dies schon jemand bei sich in einem eigenen Modul nachgezogen hat, damit von der API über OWM OneCalll auch Snow für die Wochenvorschau ausgelesen wird.
Dafür reichen meine php und HTML Kenntnisse leider nicht aus
Kannst du mal deine Vorschau posten wie die aussieht. Wie hast du die dann im Einzelnen aufgebaut.
Das Frage ich mich auch, warum wird von OWM die beiden Werte nicht gefüllt oder liest das Modul die Werte falsch aus!?
Habe gerade noch mal im Archiv geschaut da ist noch nie was angekommen.
schaut so in der Webfront aus →
Ich hole mir dafür die Daten über das Modul OpenWeatherMap und mittels dem php-Skript " oneCallStatus.php" (liegt im Github dabei) wird diese Vorschau erstellt.
Im Skript wird einerseits die zu befüllende HTML Box angegeben und die Instanz für den OWM OneCall Abruf →
Im Skript ist zu sehen, dass eben nur gewisse Werte vom OWM One Call ausgelesen werden - eben nicht Schnee („snow“). Hätte cih schon probiert und bin aber dann draufgekommen, dass eben Snow schon gar nicht vom Modul OWM One-Call aus der API ausgelesen wird - und hier stehe ich dann leider an
ich bin etwas verwirrt und verstehe dein Problem nicht.
In der Vorschau, die man zB bekommt, wenn man eine Vorschau aufbaut - siehe zB das Standard-Script aus dem Github-Verzeichnis (IPSymconOpenWeatherMap/docs/oneCallStatus.php at master · demel42/IPSymconOpenWeatherMap · GitHub) - sind die Icons von OpenWeather enthalten und damit auch der Schneefall
.Das ist natürlich die Tagesvorschau, die stündliche Vorschau muss man selbst zusammen bauen.
Die von OpenWeather vorgesehenen Icon’s sind ja codiert in ConditionIcon („Wetterbedingung-Symbol“) enthalten.
Die Icons sollen von hier geholt werden.
Und was den Menge des Schneefalls angeht: da gibt in der API nur einen 1h-Wert.
Nun kann ich nicht sagen, ob der übermittelt wird, weil ich noch nie eine passende Situation hatte um das überprüfen zu können; aber wenn es bei dir schneit, dann kannst Du ja einen Debug des Moduls erstellen und gerne mir zu mailen (als Datei, nicht etwa als Screenshot).
Und unbedingt die Limitierung des Debug entsprechend erhöhen, damit ein Abruf zu sehen ist.
Theoretisch sieht es aus, wie in der API vorgegeben, aber kann natürlich sein, das es Abweichungen gibt.
Danke für die ausführliche Antwort.
Habe nun bei mir auch einmal die Variable Schnee_1h ins Archiv aufgenommen - mal schauen ob da was kommt (es schneit aktuell).
Bzgl. API
Ist das nicht der Parameter „daily.snow“ der die „Schneevorschau“ in mm liefern sollte?
Meinem Verständnis nach ist „daily.rain“ ja die tägliche Regenmenge welche ja funktioniert?
Direkt auf der Homepage ist der Wert ja auch da? Genau diesen würde ich mir hier erwarten (1.17mm).
Guter Hinweis, das habe ich tatsächlich nicht ausgewertet, gibt ja auch im IPS keine Variable dazu.
Ok, kann ich natürlich nachführen.
Snow gibt es nur bei current und bei hourly als 1h-Wert
Gesagt, getan: versuch mal die aktuelle Modulstore/Beta des Moduls (v 2.15), da ist nun daily.snow mit drin.
Wäre toll eilt aber nicht
Wäre dies möglich, wenn Vorschau Schnee > Vorschau Regen (falls überhaupt parallel in der API so möglich) dann in der HTML Box den Text „Schnee“ zu verwenden und ansonsten wie gehabt Regen (würde Platz sparen )
Danke vorab.
das geht ja schnell
Muss leider jetzt weg → werde ich morgen testen.
Danke schonmal.
Moin demel42,
Danke nun wird der Schnee auch in den Variablen #H1…48 angezeigt.
Könnest du noch den Wert #H1 in die Variable (bei mir Position 16 „Schneefall der letzten Stunde“ anzeigen. Denke diese war dafür gedacht!?
Analog auch dann zu der Regenmenge.
Danke und Gruß
Carsten
das müsste eigentlich schon drin sein (lt. API), daher bitte ein Debug von einem Abruf (Limitierung erhöhen)
Hallo,
sieht echt super aus.
Okay in den Einstellungen unter OpenWeather habe ich 40 eingetragen und erhalte damit für 5 Tage alle 3 h die Vorschau.
Zusätzlich habe ich unter OpenWeather eine String Variable für die HTML-Box angelegt.
Wie erreiche ich, dass in der HTML Box der Forecast für 5 Tage angezeigt werden, aktuell wird in der HTML Box nur der aktuelle Tag angezeigt?
<?php
declare(strict_types=1);
// Einrichtung:
// String-Variable mit Profil "~HTML-Box" anlegen, VariablenID weiter unten eintragen
// ID der Instanz von "OpenWeatherMap - OneCall-Datenabruf" konfigurieren
// das Script auslösen bei Änderung einer Variablen, z.B "letzte Messung" ('LastMeasurement')
// die Einstellungen im Script nach Belieben anpassen
// HTML-Box
$varID = 49284;
// Instanz von "OpenWeatherMap - OneCall-Datenabruf"
$instID = 35994;
$scriptName = IPS_GetName($_IPS['SELF']) . '(' . $_IPS['SELF'] . ')';
$img_url = 'http://openweathermap.org/img/w/';
$wday2name = ['Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sonntag'];
$daily_forecast_count = IPS_GetProperty($instID, 'daily_forecast_count');
$temperature = GetValueFormatted(IPS_GetObjectIDByIdent('Temperature', $instID));
$humidity = GetValueFormatted(IPS_GetObjectIDByIdent('Humidity', $instID));
$wind_speed = GetValueFormatted(IPS_GetObjectIDByIdent('WindSpeed', $instID));
$rain_3h = GetValueFormatted(IPS_GetObjectIDByIdent('Rain_3h', $instID));
$clouds = GetValueFormatted(IPS_GetObjectIDByIdent('Cloudiness', $instID));
$icon = GetValueString(IPS_GetObjectIDByIdent('ConditionIcon', $instID));
$html = '
<table>
<tr>
<td align="center" valign="top" style="width: 150px; padding: 0px; padding-left: 20px;">
' . 'aktuell' . '<br>';
if ($icon != '') {
$html .= '
<img src="' . $img_url . $icon . '.png" style="float: left; padding-left: 17px;">';
}
$html .= '
<div style="float: right; font-size: 13px; padding-right: 17px;">
' . $temperature . '<br>
' . $humidity . '<br>
</div>
<div style="clear: both; font-size: 11px; padding: 0px">
<table>
<tr>
<td>' . 'Ø Wind' . '</td>
<td>' . $wind_speed . '</td>
</tr>
<tr>
<td>' . 'Regen 3h' . '</td>
<td>' . $rain_3h . '</td>
</tr>
<tr>
<td>' . 'Bewölkung' . '</td>
<td>' . $clouds . '</td>
</tr>
</table>
</div>
</td>
';
for ($i = 0; $i < $daily_forecast_count; $i++) {
$pre = 'DailyForecast';
$post = '_' . sprintf('%02d', $i);
$timestamp = GetValueInteger(IPS_GetObjectIDByIdent($pre . 'Begin' . $post, $instID));
$temperature_min = GetValueFormatted(IPS_GetObjectIDByIdent($pre . 'TemperatureMin' . $post, $instID));
$temperature_max = GetValueFormatted(IPS_GetObjectIDByIdent($pre . 'TemperatureMax' . $post, $instID));
$wind_speed = GetValueFormatted(IPS_GetObjectIDByIdent($pre . 'WindSpeed' . $post, $instID));
$rain = GetValueFormatted(IPS_GetObjectIDByIdent($pre . 'Rain' . $post, $instID));
$clouds = GetValueFormatted(IPS_GetObjectIDByIdent($pre . 'Cloudiness' . $post, $instID));
$icon = GetValueString(IPS_GetObjectIDByIdent($pre . 'ConditionIcon' . $post, $instID));
$is_today = date('d.m.Y', $timestamp) == date('d.m.Y', time());
$weekDay = $is_today ? 'heute' : $wday2name[date('N', $timestamp) - 1];
$html .= '
<td align="center" valign="top" style="width: 150px; padding: 0px; padding-left: 20px;">
' . $weekDay . '<br>';
if ($icon != '') {
$html .= '
<img src="' . $img_url . $icon . '.png" style="float: left; padding-left: 17px;">';
}
$html .= '
<div style="float: right; font-size: 13px; padding-right: 17px;">
' . $temperature_min . '<br>
' . $temperature_max . '<br>
</div>
<div style="clear: both; font-size: 11px; padding: 0px">
<table>
<tr>
<td>' . 'Ø Wind' . '</td>
<td>' . $wind_speed . '</td>
</tr>
<tr>
<td>' . 'Regen' . '</td>
<td>' . $rain . '</td>
</tr>
<tr>
<td>' . 'Bewölkung' . '</td>
<td>' . $clouds . '</td>
</tr>
</table>
</div>
</td>
';
}
$html .= '
</tr>
</table>';
SetValueString($varID, $html);
Im Skript erhalte ich noch folgende Fehlermeldung
Warning: Eigenschaft daily_forecast_count nicht gefunden in C:\ProgramData\Symcon\scripts\16020.ips.php on line 22
Vielen Dank schon mal für die Unterstützung
Hallo,
die instID$ ist die ID der Instanz „OPENWEATHER - ONECALL-DATENABRUF“ und nicht der Instanz „OPENWEATHER - DATENABRUF“?
Hallo Gossi,
ich habe OpenWeatherMap installiert, die Werte kommen auch alle an. Habe die Vermutung, da ich die Free-Version nutze 3h Intervall - 5 Tage, dass die Begrifflichkeit nicht passt und er das nicht findet.
Den Namen habe ich zudem manuell geändert
Hast du neben der OpenWeatherMap noch etwas anderes bei dir installiert?
Bin zwar auch erst dabei mich da „rein zu fuchsen“ aber aus meiner Sicht ist das so aufgebaut.
Das Modul besitzt 3 Instanzen →
Datenabruf → Instanz die die Daten aus deinem Screenshot oben liefern
Messwerte übertragen → hier kann man die Daten aus seiner Wetterstation an OWM übertragen
OneCall Datenabruf → „Kostenpflichtig“ aber 1000 Aufrufe pro Tag gratis (für Tagesvorschau mittels php- Skript)