Hallo an alle,
ich hoffe ich hab den richtige Rubrik im Forum gewählt. Ansonsten bitte Bescheid geben wo diese Thema besser aufgehoben ist.
Ich habe auf meinen RasPi FHEM und CumulusMX zu laufen. CumulusMX ist für die Daten meiner Wetterstation zuständig und ladet eine PHP Datei auf meine Homepage um die Wetterdaten dort an zu zeigen. Ich möchte CumulusMX so langsam ablösen und alles nur noch mit FHEM machen.
CumulusMX erzeugt eine Datei mit den Daten und diese wird per FTP hochgeladen. Es geht mir jetzt darum die erzeugte Datei mit FHEM zu erstellen.
Hier die Datei:
<?php
// ----------------------------------------------------------------------------------------------------------------------
// Luftdrucktendenz in Wort
function LuftdruckTendenz($luftdruckvalue)
{
if ($luftdruckvalue == "0.0")
{
$val = '<font color="#008000">gleichbleibend</font>';
}
else if ($luftdruckvalue < "0.0")
{
$val = '<font color="#3366FF">fallend</font>';
}
else if ($luftdruckvalue > "0.0")
{
$val = '<font color="#FF0000">steigend</font>';
}
return $val;
}
$ldtendenz = LuftdruckTendenz($luftdruckvalue);
// ----------------------------------------------------------------------------------------------------------------------
// UV Index Sonnanbrandgefahr
function Sonnenbrand($uvvalue)
{
if ($uvvalue < "3")
{
$val = '<font color="#008000"><b>unwahrscheinlich</b></font>';
}
else if ($uvvalue < "6")
{
$val = '<font color="#99FF99"><b>nach 30 Minuten</b></font>';
}
else if ($uvvalue < "8")
{
$val = '<font color="#FFFF00"><b>nach 20 Minuten</b></font>';
}
else if ($uvvalue < "11")
{
$val = '<font color="#FF9900"><b>nach 15 Minuten</b></font>';
}
else if ($uvvalue > "11")
{
$val = '<font color="#FF0000"><b>nach 10 Minuten</b></font>';
}
return $val;
}
$sonnenbrand = Sonnenbrand($uvvalue);
// ----------------------------------------------------------------------------------------------------------------------
// HTML Ausgabe
echo '<html>';
echo '<head>';
echo '<meta http-equiv="Content-Language" content="de">';
echo '<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">';
echo '<title>Daten von Wetterstation</title>';
echo '<base target="_self">';
echo '</head>';
echo '<font face="Times New Roman" size="2"><b><#LastDataReadT></b></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2"><u><b>Aussen</b></u></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Temperatur <b><#temp> °C</b></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Luftfeuchte <b><#hum> %</b></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Windchill <b><#wchill> °C</b></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Hitzeindex <b><#heatindex> °C</b></font>';
echo '<br />';
//echo '<font face="Times New Roman" size="2">Taupunkt <b><#dew> °C</b></font>';
//echo '<br />';
echo '<font face="Times New Roman" size="2"><u><b>Garage</b></u></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Temperatur <b>'.$ocn_innen_kurz.' °C</b></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Luftfeuchte <b>'.$ocn_hum_kurz.' %</b></font>';
echo '<br />';
//echo '<font face="Times New Roman" size="2">Taupunkt <b>'.$tp.' °C</b></font>';
//echo '<br />';
echo '<font face="Times New Roman" size="2"><u><b>Technikr. Garage</b></u></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Temperatur <b><#intemp> °C</b></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Luftfeuchte <b><#inhum> %</b></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2"><u><b>Sonstiges</b></u></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Vorhersage <b><#cumulusforecastenc></b></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Luftdruck <b><#press> mb</b></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Tendenz <b>'.$ldtendenz.', <#presstrendval> mb/h</b></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Niederschlag Heute <b><#rfall> mm</b></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Windgeschwindigkeit <b><#wlatest> km/h</b></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Windstärke <b><#beaufortnumber>, <#beaudesc></b></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Windrichtung <b><#bearing> °, <#currentwdir></b></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Lichtstärke <b><#Light> lux</b></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Solar Energie <b><#SolarRad> W/m²</b></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">UV Index <b><#UV></b></font>';
echo '<br />';
echo '<font face="Times New Roman" size="2">Sonnenbrand möglich<br>'.$sonnenbrand.'</b></font>';
?>
Bitte nicht wundern in der Datei sind noch Fehler drin.
Die Daten werden hier an den Stellen eingetragen wo <#...> steht. Diese mit FHEM Daten zu ersetzen ist jetzt nicht mein Problem. Wie erzeugt ich die Datei und leg sie auf dem RasPi ab? Ich wollte das mit eine 99_my Datei machen und diese dann alle paar Minuten per at Befehl ansprechen. Ich habe sowas ähnliches schon mal gemacht aber nur mit einen Wert der einfach nur in eine Datei geschrieben wird aber nicht mit einer Vorlage wie die obige Datei. Ich meine damit die Struktur usw..
Vielleicht denk ich gerade auch wieder zu kompliziert. Für einen Tipp wäre ich Dankbar.
Schönes Wochenende
Gruß
Jörg
Hi,
halt so wie man in Perl Dateien schreibt. Z.B. hier erklärt:
https://de.wikibooks.org/wiki/Perl-Programmierung:_Dateien
Gruß,
Thorsten
Alternative: SingleFileLog (https://fhem.de/commandref.html#SingleFileLog)
Moin,
Danke für die Tipps. Bin schon etwas am basteln
Gruß
Jörg
Moin nochmal,
so hab eigentlich fertig. Mein 99_my... erzeugt die Datei auf dem RasPi und schickt sie dann mit NET::FTP auf meinen Server. So weit so gut. Es gibt nur leider einen kleinen Schönheitsfehler.
In der Datei sind Umlaute. Diese sind in der Datei auf dem RasPi auch zu sehen. Es muß also bei dem FTP Upload was passieren. Wie schon erwähnt macht das CumulusMX auch und da sind auch die Umlaute nach dem Upload zu sehen.Ich hab jetzt schon etwas gegoogelt und mit $ftp->ascii() bzw. $ftp->binary(); probiert aber klappt leider nicht.
my ($ftp, $host, $user, $pass, $dir, $fpath);
$host = "xxxxxxx";
$user = "xxxxxxx";
$pass = "xxxxxxx";
$dir = "xxxxxxx";
$fpath = "/opt/fhem/export/wetter_daten_fhem.php";
$ftp = Net::FTP->new($host, Debug => 0);
$ftp->login($user, $pass) || die $ftp->message;
$ftp->cwd($dir);
$ftp->ascii();
$ftp->put($fpath) || die $ftp->message;
$ftp->quit;
print $ftp->message;
Hat jemand eine Idee dazu?
Danke schon mal.
Gruß
Jörg
binär mode statt ascii verwenden.
wenn fhem das log erzeugt hat ist es ziemlich sicher utf8 und nicht ascii.
gruss
andre
Danke aber habs gerade selber gefunden. Hab noch use utf8; in der 99_my... hinzugefügt und dann klappt dat.
Gruß
Jörg
Das ganze soll doch HTML sein, oder? Da verwendet man normalerweise keine Umlaute direkt, sonders so etwas wie ä
Gruß,
Thorsten