Die Wetterstation HmIP-SWO-PL sollte an das e-Paper Display HM-Dis-EP-WM55 die drei wichtigsten Daten melden:
Temperatur
Luftfeuchtigkeit
regnet es?
Folgendes setze ich vorraus:
1. die Wetterstation ist eingebunden und liefert Werte
2. Das Display ist grundsätzlich im System vorhanden und kann angesteuert werden.
Bei mir sieht das so aus:
define Status_Display CUL_HM 51D9E9
setuuid Status_Display 60e454f6-f33f-d3fe-79a6-637c2d95911a3f18
attr Status_Display .mId 00FB
attr Status_Display IODev HMLAN
attr Status_Display autoReadReg 4_reqStatus
attr Status_Display expert rawReg
attr Status_Display firmware 1.1
attr Status_Display model HM-DIS-EP-WM55
attr Status_Display msgRepeat 1
attr Status_Display room Systemware
attr Status_Display serialNr NEQ1595384
attr Status_Display subType display
attr Status_Display webCmd getConfig:clear msgEvents
define Status_Display_Btn_01 CUL_HM 51D9E901
attr Status_Display_Btn_01 model HM-DIS-EP-WM55
attr Status_Display_Btn_01 peerIDs 00000000
define Status_Display_Btn_02 CUL_HM 51D9E902
attr Status_Display_Btn_02 model HM-DIS-EP-WM55
attr Status_Display_Btn_02 peerIDs 00000000
define Status_Display_Dis CUL_HM 51D9E903
attr Status_Display_Dis model HM-DIS-EP-WM55
Die Key-Kanäle benötige ich nicht. Die Button-Kanäle haben aktuell keine echte Funktion, ausser dass man später mit ihnen noch die Anzeige aktualisieren können soll.
Ich definiere noch dazu 2 notifys und eine at Funktion, die die Anzeige stündlich aktualisiert. Je öfter man die Anzeige aktualisiert, um so schneller werden die Batterien geleert.
define Status_Display_Btn_01_short notify Status_Display_Btn_01 {StatusDisplayAktualisierung}
define Status_Display_Btn_02_short notify Status_Display_Btn_02 {StatusDisplayAktualisierung}
define at_Status_Display_Update at +*01:00:00 {StatusDisplayAktualisierung}
In der 99_myUtils.pm ist eine weitere Funktion definiert, StatusDisplayAktualisierung, die für die Aktualisierung der Anzeige sorgt.
Es geht dabei um die Zeilen2, 3 und 4.
Zeile 1 habe ich mittels
set Status_Display_Btn_02 text Wetter
auf die Anzeige von "Wetter" gesetzt. Zeile 5 nutze ich nicht.
Die Zeilen 2-4 werden mit dieser Funktion aktualisiert:
##########################################################
# Status Display aktualisierung
# Der Wettersensor heisst Wetter_FuchsbauIP (HmIP-SWO-PL)
##########################################################
sub StatusDisplayAktualisierung()
{
my $fuchsbau_temp = ReadingsVal("Wetter_FuchsbauIP","1.ACTUAL_TEMPERATURE","defekt");
my $fuchsbau_hum = ReadingsVal("Wetter_FuchsbauIP","1.HUMIDITY","defekt");
my $fuchsbau_rain = ReadingsVal("Wetter_FuchsbauIP","1.RAINING","");
if ($fuchsbau_rain eq "yes")
{
$fuchsbau_rain="ja";
}
else
{
$fuchsbau_rain="nein";
}
fhem("set Status_Display_Dis displayEP Temp.\x5c_$fuchsbau_temp^C,noIcon:Feucht.\x5c_$fuchsbau_hum\%,noIcon:Regen\x5c_$fuchsbau_rain,noIcon:");
}
Die ersten Zeilen definieren Variablen und in diese werden die von der Wetterstation gelieferten Daten gespeichert. Das if-Konstrukt macht nichts anderes als die englischen Begriffe durch die deutschen zu ersetzen.
Die letzte Zeile ist Erklärungsbedürftig:
Temp., Feucht. und Regen sind dabei die Inahlte der drei Zeilen
\x5c ist ein Leerzeichen
^C wird zu °C
\% ist das Prozentzeichen für die Luftfeuchtigkeit
noIcon bredeutet, dass in keiner Zeile ein Icon angezeigt werden soll.
Die Anzeige sieht also grundsätzlich so aus:
Wetter
_____________
Temp. 25,1°C
Feucht. 95%
Regen ja
_____________
Ein Druck auf die Tasten sorgt nur dafür, dass die Anzeige außerhalb der geplanten Zeit aktualisiert werden soll. Dazu dient das oben definierte notify
Hallo,
funktioniert das so bei dir?
Hallo,
Danke für die tolle Idee
Ich habe mir mal erlaubt das Beispiel für HMCCU umzusetzen. Vielleicht hilft es ja jemanden.
defmod at_Status_Display_Update at +*01:00:00 {
my $f_temp = ReadingsVal("log2syslog","aussentemperatur","defekt");
my $f_hum = ReadingsVal("log2syslog","rel_feuchte","defekt");
my $f_rain = ReadingsVal("log2syslog","regenmelder","");
if ($f_rain == 1)
{
$f_rain="ja";
}
else
{
$f_rain="nein";
}
# my $alles = "text1:Temp: ".sprintf("%02.2f", $f_temp).",text2:Feucht: ".sprintf("%02.2f",$f_hum).",text3:Regen: ".$f_rain;
my $alles = "text1:Temp: ".$f_temp.",text2:Feucht: ".$f_hum.",text3:Regen: ".$f_rain;
# Log 1, "set d_woh_EPAnz datapoint 3.SUBMIT \"$alles\"";
fhem("set d_woh_EPAnz datapoint 3.SUBMIT \"$alles\"");
}
VG
Heiko