[Modul] OpenWeatherMap

Hallo
Hab mich auch mal an das Modul OpenWeatherMap herangewagt. Ich würde gerne in IPSView zusätzlich zu ein paar Wetterdaten noch das Icon darstellen wollen. Kann mir bitte einer erklären, was ich da tun muss? Ich möchte keine Highcharts oä, Vorhersagen oä, einfach nur das aktuelle Icon passend zur Icon-ID darstellen.

In dem Modul OpenWeatherData/modul.php gibt es eine Funktion Build_WeatherSummary(), in der die in der Variable ConditionIcon angelegten Icon-ID’s als Icon dargestellt werden.

Die Icon’s befinden sich in http://openweathermap.org/img/w/ als <IconID>.png

demel

Hallo
Danke für die schnelle Hilfe. Ich bekomme die Werte bzw. Icon jetzt angezeigt, nur ist der Text versetzt.

OWM.png

Wo kann man das anpassen?

ich habe keine Ahnung, wie du diese Darstellung erzeugst, von daher ist die Beantwortung schwierig. Wenn es die vom modul gefüllte HTML-Box ist … Änderungen sind möglich, indem du in der Konfiguration ein eigenes Script angibst, das den HtML-Code erzeugt. Ein Rumpf-Aufruf steht im README.md, und den Code zur HTML-Generierung kann man ja aus der genannten modul-Funktion abkupfern.

demel

Ich habe in der Modul-Konfiguration eine Script angegeben. Der Inhalt des Scriptes ist der aus Beitrag 86. Objekt-ID’s angepasst und am Ende des Scriptes schiebe ich den Html-Code noch in eine Stringvariable mit Variablenprofil „Html-Box“.

Dann verstehe ich nix mehr, dann liegt es doch in dem HTML-Code, den du bereits selber setzt :confused:

Übrigens: in dem Script muss die Variable nicht gesetzt werden, gemäß der Vorlage in dem README muss der String mit HTML per echo ausgegeben werden und wird dann von dem Modul in die Variable eingetragen.


$instID = $_IPS['InstanceID'];

$html = '';

$data = OpenWeatherData_GetData($instID, 'Current');
if ($data) {
    $jdata = json_decode($data, true);

    $temperature = $jdata['main']['temp'];

    $html = 'Temperatur: ' . $temperatur . ' °C<br>';
}

echo $html;

demel

Wenn ich das Script ausführe und mir die Ausgabe im Scripteditor anschaue passt alles, deshalb sollte der html-Code doch passen, oder? Die verschobene Darstellung habe ich nur, wenn ich die Html-Box aufrufe.

Sorry, das verstehe ich nicht. Ohne das Du Daten in der HTML-Box ablegst kannst Du doch nicht sehen, ob es passt?
Du musst mir schon genauer erklären, was Du machst sonst kann ich nicht helfen.

Gruß
demel

Folgende Konfiguration habe ich für die Instanz „OpenWeatherData“ gemacht:

Im OWM Script ist exakt der Inhalt des Scriptes aus Beitrag 86 eingefügt und die Objekt ID’s wurden angepasst.
Wenn ich im Scripteditor das Script händisch ausführe, wird folgendes angezeigt.

In der Ausgabe passt ja alles.

Wenn ich aber in IPSView die Html-Box anzeigen lasse, ist die Darstellung verschoben.

IPSV.png

Das Problem wurde auch schon im Beitrag 103 durch einen anderen User angebracht, aber da gab es keine Antwort

Die Ausgabe im Script-Edior ist doch keine HTML-Darstellung! Nimm doch einfach mal den Haken „HTML Filter“ rechts über dem Ausgabefenster raus und schon siehst du den komplette HTML-Text.

Wenn die Breiten bei dir nicht passen musst du doch nur die HTML-Code-Erzeugung nach eigenen Wünschen anpassen.
Genau dafür ist die Möglichkeit da, die Erzeugung des HTML-Codes aus dem Modul in ein Script zu verlagern.

Ich benutze die Darstellung nicht, aber habe sie gerade mal aktiviert - bei mir sehen die Ausgabe richtig aus. Aber das hängt ja von Schriften, Größen der Darstellung etc ab, das kann man ja nicht für alles vorbereiten.

Wenn du da eine Verbesserung findest, kann ich die gerne übernehmen.

demel

Ich hab es jetzt so einigermaßen hin bekommen. Ich bin was php und html angeht ein absoluter Laie, und für solche ist es dann schwer das ganze hinzubekommen. Die Module die ich kenne bzw. im Einsatz habe, mußte ich bisher nirgends hinsichtlich php/html anpassen, außer natürlich die Konfiguration. Das soll keineswegs böse gemeint sein, ganz im Gegenteil, ich und alle anderen die es mit Programmierkenntnissen nicht so haben, sind ja froh, dass es Leute gibt, die Module zur Verfügung stellen.
Eine letzte Frage hätte ich noch. Um die Schriftgröße von den Texten unterhalb des Icons zu ändern, sollte man doch bloß den folgenden Wert ändern:

Font.png

Ich kann da eintragen was ich will, es ändert sich nichts.

Naja, in HTML kann ich auch nur Basics, aber grundsätzlich sollte das die richtige Stellen sein. Es muss natürlich die HTML-Box noch neu gefüllt werden (also Daten aktualisieren).

gruß
demel

Du musst in dem Fall mit CSS arbeiten und eine eigene Klasse zuweisen, sonst wird das von dem CSS von IP-Symcon überschrieben.

Hallo, ich habe das Modul seit einigen Tage integriert, bekomme aber nur unsinnige Daten angezeigt. Nun habe ich heute mal die Koordinaten von Berlin eingetragen. Angeblich hat es dort gerade 29 °C, mit Windchill sogar gefühlt 31,4! C. Und das morgens um 6:30 :confused:

Gibt es eine Möglichkeit, zu debuggen, was da wirklich für ein Ort abgefragt wird? Danke.

MfG
Ralph

Hallo,

dir URL wird im Debug der Instanz ausgegeben, da kannst Du das leicht überprüfen

demel

Vielen Dank, ich wußte gar nicht, dass es diese Möglichkeit gibt. Das half natürlich sofort. Es waren Längen- und Breitengrad vertauscht, somit hatte ich das Wetter aus Somalia.

Viele Grüße
Ralph

@demel42

Gerade installiert. Ein sehr schön umgesetztes Modul!

Vielen Dank dafür!

Grüße

Gollum

… ich hab da noch ein zwei Fragen:

Welche Variablen / Zustände gibt es denn beim Wetter so alles, sodas ich entsprechen mit Scripten / Ereignissen die Rollläden und Co fahren lassen kann? Ich bin auf der Site (IPSymconOpenWeatherMap auf GitHub) aber finde dazu leider nichts.

Ansonsten: Sehr coole Nummer - DANKE SEHR!

Liebe Grüße
Dennis.

Hallo,

die Variable habe ich nicht dokumentiert, weil man die ja sieht, wenn man die Instanz mal anlegt.
Ich nehme an, Du meinst OpenWeatherData (also den Anruf der Daten) und nicht OpenWeatherStation (das schicken von eigenen Daten an OW)?

Ich habe mal fix in den Code geschaut:

Aktuelle Daten:

Temperature
Humidity
AbsoluteHumidity
Dewpoint
Heatindex
Windchill
Pressure
AbsolutePressure
WindSpeed
WindStrength
WindStrengthText
WindAngle
WindDirection
Rain_3h
Snow_3h
Cloudiness
Conditions
ConditionIcon
ConditionId
LastMeasurement
WeatherSummary

Stündliche Vorhersage, nn = 00…39:

HourlyForecastBegin_nn
HourlyForecastTemperatureMin_nn
HourlyForecastTemperatureMax_nn
HourlyForecastHumidity_nn
HourlyForecastPressure_nn
HourlyForecastAbsolutePressure_nn
HourlyForecastWindSpeed_nn
HourlyForecastWindStrength_nn
HourlyForecastWindStrengthText_nn
HourlyForecastWindAngle_nn
HourlyForecastWindDirection_nn
HourlyForecastRain_3h_nn
HourlyForecastSnow_3h_nn
HourlyForecastCloudiness_nn
HourlyForecastConditions_nn
HourlyForecastConditionIcon_nn
HourlyForecastConditionId_nn

demel

Hi Demel,
erstmal danke sehr. :slight_smile:

Ich frag nochmal anders, indem ich erkläre was ich vor habe: Wenn es regnet möchte ich, falls ein Fenster offen ist, dass der entsprechende Rollladen runter fährt. Wie ich das Script grundsätzlich baue ist mir klar, jedoch was ich nicht habe ist den Wert für Regen (im Profil).

Ich kann beim Fenster ja sagen: Wenn Abwesend = true und Fenster = open und Wetter = ???

Und hier ist die Frage wie sind denn die einzelnen Werte zu den Variablen? Normal kann ich ja im Profilmanager die entsprechenden Werte auslesen… aber hier sind überall keine Werte zu lesen…

Ich hoffe das ich mein Anliegen jetzt besser beschrieben und mich nicht gleichzeitg blamiert habe.

Liebe Grüße Dennis.