[Modul] OpenWeatherMap

Hi,

I got the temperature in fahrenheit, how can i change it to Celcius?

thanx!

hi,

can you send mit debug-date of the module? (open the module-configpage, activate debug and press the button „update data“. on the register „debug“, you ca select/save the debug-data

you can send me the data as a PM

demel

Don’t bother… my bad. Switched Lon/Lat…

Vielen Dank für das super Modul demel42!

Mit der Einrichtung hat alles wunderbar funktioniert. Nun wollte ich die Darstellung gern etwas in der HTML-Box mit der Zusammenfassung des Wetters anpassen und habe gesehen, dass man das über ein Script realisieren kann. In der Beschreibung gibt es auch ein paar Code-Fragmente. Ich habe auch schon alle verschiedenen Beiträge Gelsen, kann mir da aber leider nichts zusammenbauen. Das übersteigt meine Programmier-Kenntnisse.

Könntest Du hier bitte ein vollständiges Beispielscript zur Verfügung stellen?

Vielen Dank im Voraus und frohe Weihnachten.

fixmax

Hallo,

wenn das Script nicht angegeben wird, wird die Modul-interne Funktion Build_WeatherSummary() benutzt.

Es gibt allerdings kein vollständiges Beispiel, um die Visualisierung zu erstellen.

Wo liegt denn Dein Problem? Im Datenzugriff oder in Optik?

Gruß
demel

Hallo,

ich habe mal auf die Schnelle die interne Funktion „übersetzt“ - ungerüstet und ohne Gewähr auf Fehlerarmut :wink:


$html = '';

$img_url = 'http://openweathermap.org/img/w/';

$temperature = GetValueFloat(1234 /* Temperatur */);
$humidity = GetValueFloat(1234 /* Humidity */);
$wind_speed = GetValueFloat(1234, /* WindSpeed */);
$rain_3h = GetValueFloat(1234, /* Rain_3h */);
$clouds = GetValueFloat(1234, /* Cloudiness */);
$icon = GetValueString(1234, /* ConditionIcon */);

$wind_speed = round($wind_speed);

$html = '
<table>
  <tr>

    <td align="center" valign="top" style="width:140px;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;">
        ' . round($temperature) . '°C<br>
        ' . round($humidity) . '%<br>
      </div>
      <div style="clear: both; font-size: 11px;">
        <table>
          <tr>
            <td>Ø Wind</td>
            <td>' . $wind_speed . ' km/h<td>
          </tr>
          <tr>
            <td>Regen 3h</td>
            <td>' . $rain_3h . ' mm</td>
          </tr>
          <tr>
            <td>Bewölkung</td>
            <td>' . $clouds . ' %</td>
          </tr>
        </table>
      </div>
    </td>
';

for ($i = 0; $i < 3; $i++) {
    switch ($i) {
        case 0:
            $timestampID = 1234 /* HourlyForecastBegin_00 */;
            $temperature_minID = 1234 /* HourlyForecastTemperatureMin_00 */;
            $temperature_maxID = 1234 /* HourlyForecastTemperatureMax_00 */;
            $wind_speedID = 1234 /* HourlyForecastWindSpeed_00 */;
            $rain_3hID = 1234 /* HourlyForecastRain_3h_00 */;
            $cloudsID = 1234 /* HourlyForecastCloudiness_00 */;
            $iconID = 1234 /* HourlyForecastConditionIcon_00 */;
            break;
        case 1:
            $timestampID = 1234 /* HourlyForecastBegin_01 */;
            $temperature_minID = 1234 /* HourlyForecastTemperatureMin_01 */;
            $temperature_maxID = 1234 /* HourlyForecastTemperatureMax_01 */;
            $wind_speedID = 1234 /* HourlyForecastWindSpeed_01 */;
            $rain_3hID = 1234 /* HourlyForecastRain_3h_01 */;
            $cloudsID = 1234 /* HourlyForecastCloudiness_01 */;
            $iconID = 1234 /* HourlyForecastConditionIcon_01 */;
            break;
        case 1:
            $timestampID = 1234 /* HourlyForecastBegin_02 */;
            $temperature_minID = 1234 /* HourlyForecastTemperatureMin_02 */;
            $temperature_maxID = 1234 /* HourlyForecastTemperatureMax_02 */;
            $wind_speedID = 1234 /* HourlyForecastWindSpeed_02 */;
            $rain_3hID = 1234 /* HourlyForecastRain_3h_02 */;
            $cloudsID = 1234 /* HourlyForecastCloudiness_02 */;
            $iconID = 1234 /* HourlyForecastConditionIcon_02 */;
            break;
    }
    $timestamp = GetValueInteger($timestampID);
    $temperature_min = GetValueFloat($temperature_minID);
    $temperature_max = GetValueFloat($temperature_maxID);
    $wind_speed = GetValueFloat($wind_speedID);
    $rain_3h = GetValueFloat($rain_3hID);
    $clouds = GetValueFloat($cloudsID);
    $icon = GetValueString($iconID);

    $wind_speed = round($wind_speed);
    $is_today = date('d.m.Y', $timestamp) == date('d.m.Y', time());
    $weekDay = $is_today ? 'today' : date('l', $timestamp);
    $time = date('H:i', $timestamp);

    $html .= '
    <td align="center" valign="top" style="width: 140px; padding-left: 20px;">
      ' . $weekDay . ' <font size="2">' . $time . '</font><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;">
        ' . round($temperature_min) . '°C<br>
        ' . round($temperature_max) . '°C<br>
      </div>
      <div style="clear: both; font-size: 11px;">
        <table>
          <tr>
            <td>Ø Wind</td>
            <td>' . $wind_speed . ' km/h<td>
          </tr>
          </tr>
          <tr>
            <td>Regen 3h</td>
            <td>' . $rain_3h . ' mm</td>
          </tr>
          <tr>
            <td>Bewölkung</td>
            <td>' . $clouds . ' %</td>
          </tr>
        </table>
      </div>
    </td>
    ';
}

$html .= '
</tr>
</table>';

echo $html;

Auf jeden Fall die richtigen Variablen-ID’s einsetzen! (hier alle als 1234 angegeben)

Gruß
demel

Hallo,

das ging ja schnell. Ja es geht um die grafische Darstellung. Hab mal ein Bild angefügt.

Hab auch schon versucht, aus dem Modul eine Passage zu verwenden und als Script zu nutzen. Werde gleich mal das von Dir gesendete testen. Vielen Dank schon einmal für die schnelle Hilfe.

Vielen, vielen Dank. Habs integriert und funktioniert. Jetzt kann ich die Form anpassen. :slight_smile:

Hallo,

hat da jemand schon was in der Richtung gemacht???

Wie ist die Highcharts-Geschichte für IPSView einzubinden (welcher Code muss wie, wo hin)??? Ich hab da leider zu wenig Ahnung von. Vielleicht könnte jemand für DAUs wie mich ein kleines HowTo verfassen.

Vielen Dank.

Gruß Proxima

Ich hab mir das Ganze mal angeschaut und das ist genau das was ich auch schon gesucht habe.
Leider weiß ich grade nicht, wie ich das in eine html Box die ich in meinem Webfront einbinden kann integriert bekomme.
Ich bekomme das zwar als html in die Box und kann die auch anzeigen aber da läuft dann nur der Ladekringel und die Grafik wird nie geladen.

Kannst Du mir da auf die Sprünge helfen?

Speichere Dein Skript weather.html in Webfront/user Ordner.

Erstelle eine String Variable mit html-Profil und füge das I-Frame so ein:

<center><iframe src="user/weather.html"width='100%' height='320' frameborder='0' scrolling='no'></iframe>

Gruss Saschild

Ah super, das scheint es zu sein. Allerdings bekomme ich jetzt die Meldung, „Fehler beim Laden der Daten“ Wenn ich die Seite direkt aufrufe ist alles OK.

[Edit]
Hab den Fehler gefunden, am Ende des Aufrufs der Seite muss noch die Location mit angegeben werden in der Form:

<iframe src="user/Wetter/Wetter.html#https://www.yr.no/place/Germany/North_Rhine-Westphalia/Köln/forecast_hour_by_hour.xml"width='100%' height='100%' frameborder='0' scrolling='no'></iframe> 

So ,

das Ganze sieht schon mal sehr gut aus.

Auch das Anpassen des Styles geht super. Muss ich noch was experimentieren!

Seit ein paar Tagen läuft das Ganze scheinbar nicht mehr. Ich bekomme immer die Meldung „Fehler beim Laden der Daten. Bitte versuchen Sie es später noch einmal.“

Wenn ich mir die HighCharts Demo ansehe dann scheint es hier auch nur mit der Einstellung: place = ‚United_Kingdom/England/London‘; zu funktionieren. Alle anderen Beispiele funktionieren hier auch nicht mehr.

Wenn ich mir das XML meines Wohnortes geben lasse kommen Daten.

Hat das Problem noch jemand und ggf. eine Lösung für mich? Ich finde das Tool einfach klasse und richte danach immer aus, ob es Sinn macht mit dem Rad zur Arbeit zu fahren oder nicht. OK im Moment also nicht so wichtig aber wenn man sich mal an was Gutes gewöhnt hat :wink:

Hallo,

ist das ein Problem, was du in der OpenWeather-Abfrage siehst oder in der Visualisierung/Highchart?
Ich hatte vorhin nachgeschaut, der Datenabruf funktioniert bei mir

Gruß
demel

Das ist eine Gute Frage. London scheint ja zu funktionieren und der Datenabruf der XML Daten scheint auch von meinem Standort zu funktionieren. Ich hab es noch nicht raus finden können wir genau das Problem liegt.

Gesendet von meinem ONEPLUS A3003 mit Tapatalk

Kann das sein, dass die Norweger da etwas blocken?

Ich hatte den Fehler in den letzten Wochen schon öfter, jetzt geht’s garnicht mehr

Gruß
Thomas

Auch das Original-Script mit „place = ‚United_Kingdom/England/London‘;“ läuft in Symcon auch nicht…

Bleibt hier hängen: Loading data from external source

OK, es liegt hier dran: Alles wird durch den Higcharts Proxy geleitet…
Man muss wohl einen eigenen nutzen…

Meteogram JS


// Then get the XML file through Highcharts' CORS proxy. Our proxy is limited to
// this specific location. Useing the third party, rate limited cors.io service
// for experimenting with other locations.
url = location.hash.substr(1);
$.ajax({
    dataType: 'xml',
    url: url === 'https://www.yr.no/place/United_Kingdom/England/London/forecast_hour_by_hour.xml' ?
        'https://www.highcharts.com/samples/data/cors.php?url=' + url :
        'https://cors.io/?' + url,
    success: function (xml) {
        window.meteogram = new Meteogram(xml, 'container');
    },
    error: Meteogram.prototype.error
});

@mws - kannst du bitte mal deine index.html und das js für dein Meteogram posten?

Ich habe meine Scripte, welche schon mal gingen leider überschrieben…