FTUI Beispiel Mondphase: Unterschied zwischen den Versionen

Aus FHEMWiki
(Link auf den relevanteren Thread korrigiert.)
Keine Bearbeitungszusammenfassung
 
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt)
Zeile 1: Zeile 1:
Die aktuelle Mondphase soll in [[FHEM Tablet UI]] als Bild angezeigt werden.
Die aktuelle Mondphase soll in [[FHEM Tablet UI V2]] als Bild angezeigt werden.


<gallery>
<gallery>
Zeile 14: Zeile 14:
</syntaxhighlight>
</syntaxhighlight>


Eine im ''Astro-Device'' erzeugte SVG-Datei kann in FTUI eingebunden werden; Farben und Größe sind hierbei frei wählbar:
Eine im ''Astro-Device'' erzeugte SVG-Datei kann in FTUI eingebunden werden (xxx.yyy.zzz.aa an die lokalen Gegebenheiten anpassen); Farben und Größe sind frei wählbar:
<syntaxhighlight lang="html">
<syntaxhighlight lang="html">
<div data-type="image"
<div data-type="image"
Zeile 86: Zeile 86:
<syntaxhighlight lang="html">
<syntaxhighlight lang="html">
<div data-type="image" data-device="SonneMond" data-get="Mondbild"></div>
<div data-type="image" data-device="SonneMond" data-get="Mondbild"></div>
<div data-type="label" data-get="SonneMond:MoonPhaseS" data-color="#8C8C8C" style="height:25px" class="cell"></div>
<div data-type="label" data-get="SonneMond:MoonPhaseS" data-color="#8C8C8C"></div>
</syntaxhighlight>
</syntaxhighlight>


==Hinweise==
==Hinweise==
Die beschriebenen Vorgehensweisen sind aus einem [https://forum.fhem.de/index.php/topic,73951.0.html Beitrag im Forum] entnommen. Dort werden auch weitere Optionen, z.B. zur Reduzierung des Datenvolumens diskutiert.
Die beschriebenen Vorgehensweisen sind [https://forum.fhem.de/index.php/topic,73951.0.html Beiträgen im Forum] entnommen. Dort werden auch weitere Optionen, z.B. zur Reduzierung des Datenvolumens diskutiert.


==Links==
==Links==
[http://lexikon.astronomie.info/java/sunmoon/ Astronomischer Hintergrund]
[https://fhem.de/commandref.html#Astro Astro-Device]
[[FHEM Tablet UI]]
[[FHEM Tablet UI]]


[http://lexikon.astronomie.info/java/sunmoon/ Fachlicher Hintergrund]
[[Kategorie:FHEM Tablet UI V2|Mondphase]]
 
[[Kategorie:FHEM Tablet UI|Mondphase]]

Aktuelle Version vom 2. August 2024, 15:05 Uhr

Die aktuelle Mondphase soll in FHEM Tablet UI V2 als Bild angezeigt werden.

Vektorgrafik

Zunächst wird das FHEM-Device Astro definiert, im nachfolgenden Beispiel unter dem Namen SonneMond:

defmod SonneMond Astro
attr SonneMond icon weather_moon_phases_8
attr SonneMond stateFormat Mondphase: MoonPhaseN

Eine im Astro-Device erzeugte SVG-Datei kann in FTUI eingebunden werden (xxx.yyy.zzz.aa an die lokalen Gegebenheiten anpassen); Farben und Größe sind frei wählbar:

<div data-type="image"
     data-url="http://xxx.yyy.zzz.aa:8083/fhem/Astro_moonwidget?name=SonneMond&mooncolor=grey&moonshadow=black&size=100x100">
</div>

Pixelgrafik

Unter Inkaufnahme größeren Datenvolumens lassen sich auch wirklichkeitsnahe Bilder einbinden. Hierzu wird zunächst eine Sammlung von 100 Phasenbildern im Verzeichnis /opt/fhem/www/images/phasenbilder gespeichert. Die Bilder holt man sich aus Phasenbilder.

Das FHEM-Device Astro wird um ein Userreading (hier Mondbild genannt) erweitert:

defmod SonneMond Astro
attr SonneMond icon weather_moon_phases_8
attr SonneMond stateFormat Mondphase: MoonPhaseN
attr SonneMond userReadings Mondbild {moon_pics("myAstro")}

In 99_myUtils.pm hinterlegt man eine Funktion, welche das Userreading füllt:

#-- Moon picture

sub myUtils_Astro_Initialize($$)
{
  my ($hash) = @_;
}

sub moon_pics($)
{
 my ($name)    = @_;
 my $picNo     = ReadingsVal("SonneMond","MoonAge",0);
 my $picOrd    = "/fhem/www/images/phasenbilder/";
 my $picPath   = "";

  if(  $picNo < 180 ){
    $picNo = int($picNo/180*49+51);
  }else{
    $picNo = int(($picNo/180-1)*49+1);
  }

$picPath =  $picOrd.$picNo.".png";

return $picPath
}

sub Moon_to_html($)
{
   my($hash) = @_;
   $hash = $defs{$hash} if( ref($hash) ne 'HASH' );
   return undef if( !$hash );

   my $name = $hash->{NAME};
   my $scale = "100";
   my $state = $hash->{STATE};
   my $pathToPictures = ReadingsVal("SonneMond", "Mondbild", "");
   my $ret;

   $ret .= "<div style='width:".$scale."px; text-align: center;'>";
   $ret .= "<img src='$pathToPictures$\' width='$scale' height='$scale'>";
   $ret .= "</div>";

   $hash->{fhem}->{cached} = $ret;

   return $ret;
}

1;

Die Einbindung in FTUI erfolgt über das Image-Widget, ergänzt um Label:

<div data-type="image" data-device="SonneMond" data-get="Mondbild"></div>
<div data-type="label" data-get="SonneMond:MoonPhaseS" data-color="#8C8C8C"></div>

Hinweise

Die beschriebenen Vorgehensweisen sind Beiträgen im Forum entnommen. Dort werden auch weitere Optionen, z.B. zur Reduzierung des Datenvolumens diskutiert.

Links

Astronomischer Hintergrund

Astro-Device

FHEM Tablet UI