[patch] GDS 4-Tage-Wettervorhersage für einen ausgewählten Ort

Begonnen von jensb, 13 Juni 2015, 22:38:26

Vorheriges Thema - Nächstes Thema

betateilchen

Zitat von: jensb am 10 Oktober 2015, 22:56:23
Werde den Generator wahrscheinlich nächste Woche auf das neue GDS-Modul umstellen und nach 99_myUtils verschieben.

in contrib/55_GDS.2015 habe ich bereits eine 99_gdsUtils.pm eingecheckt, die den bisher von Dir beschriebenen Generator komplett enthält. Den kannst Du gerne als Grundlage verwenden und weiterpflegen.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

jensb

FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

betateilchen

#47
Hallo Jens,

noch ein Tipp zu dem Thema: Die sub GDSAsHtmlD($;$) musst Du Dir nochmal genau anschauen.

Hintergrund:

Moduldateien mit 99_ am Anfang werden beim fhem Start vor allen anderen Modulen geladen. Zu diesem Zeitpunkt gibt es noch keine FHEMWEB Instanz, die $FW_ss bereitstellt.

Das Tückische an solchen Punkten in den 99er-Dateien ist, dass das immer erst beim nächsten Systemstart auffällt  8)

Tendenziell würde ich dazu raten, die Datei nicht als 99_ Datei anzulegen, sondern als GDSweblink.pm Die Datei könnte man dann per eval {} in 55_GDS laden.



eval { use GDSweblink; };

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

jensb

Hallo betateilchen,

mit eval könnte man wahrscheinlich auch von 99_myUtils auf GDSweblink zugreifen, ohne dass es Startprobleme gibt und damit die Integration in das GDS-Modul umgehen. Andereseits hätte man mit der  indirekten Integration in das GDS-Modul eine funktionsfähige Standardimplementierung zur Hand, ohne dass zusätzlicher Code für die Nutzung nötig ist und die sich jeder bei Bedarf immer noch selbst anpassen kann, ohne das GDS-Modul dabei ändern zu müssen. Die Entscheidung liegt bei dir.

Es juckt mir zwar in den Fingern, es gleich auszuprobieren, aber mein RPi ist für die nächsten 6 Tage mehr als 600 km zu weit weg zum Entwickeln.
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

betateilchen

Bei mir habe ich das jetzt wie oben beschrieben umgesetzt.

Dein gesamter html Generator - ohne jede Änderung - befindet sich in der Datei GDSweblink.pm

In der 55_GDS.pm steht dann einfach



...

eval { use GDSweblink; };

no if $] >= 5.017011, warnings => 'experimental';

my ($bulaList, $cmapList, %rmapList, $fmapList, %bula2bulaShort, %bulaShort2dwd, %dwd2Dir, %dwd2Name,
$alertsXml, %capCityHash, %capCellHash, $sList, $aList, $fList, $fcmapList, $tempDir, @weekdays);

...



Und das funktioniert hier einwandfrei :)

Die Lösung hat gegenüber der 99_ den Vorteil, dass der Generator nur dann von fhem geladen wird, wenn auch das GDS Modul geladen wird.
Die 99_gdsUtil würde IMMER automatisch geladen, auch wenn der Benutzer beispielsweise alle gds-Devices gelöscht hat und nicht daran denkt, diese 99_Datei wieder aus ./FHEM zu entfernen.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

jensb

Super, dann lassen wir das so. Ist kein GDSweblink da, stellt das GDS-Modul "nur" seine Backend-Funktionen zur Verfügung, und wenn es geladen werden kann, dann wird es bunt.
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

betateilchen

#51
Im anstehenden RC2 (kommt vermutlich noch heute) werde ich das so veröffentlichen.

Und in der MAINTAINER.txt werde ich Dich als Supporter für den Weblink eintragen :)

ZitatEs juckt mir zwar in den Fingern, es gleich auszuprobieren, aber mein RPi ist für die nächsten 6 Tage mehr als 600 km zu weit weg zum Entwickeln.

Für solche Fälle habe ich einen Cubietruck mit 60GB SSD und eingebautem Akku als "Unterwegs-Entwicklungssystem"  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

jensb

Vielleicht sollte ich mr auch so einen mobilen Begleiter zulegen, aber ich weiß jetzt schon, dass meine Frau die Augen verdrehen wird, wenn ich den mit einpacke ;D.
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb