FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Nogga am 20 Oktober 2023, 22:57:23

Titel: Reading-Werte umbenennen
Beitrag von: Nogga am 20 Oktober 2023, 22:57:23
Vielleicht hat jemand von Euch eine Idee?

Ich lese per Modbus meine Heizung aus.
Der Kesselstatus gibt einen Integer zurück, der wiederum verschiedene Status beschreibt:

1   Heizung Aus
2   Bereit
3   Zündvorbereiten
4   Vorbelüften
5   Kaltstart
6   Anbrennphase
uvm.

Wie kann ich jetzt am einfachsten rund 16 Zahlen im Reading-Wert durch die entsprechenden Strings ersetzen?
Ich habe es schon per UserReading probiert, aber irgendwie klappt das einfach nicht:

attr Pelletheizung Kessel userReadings KesselStatus:.* {
if (ReadingsVal("$SELF", "KesselStatus", 0) == 1)
return "Heizung aus";
elsif (ReadingsVal("$SELF", "KesselStatus", 0) == 3)
return "Bereit";
else
return ReadingsVal("$SELF", "KesselStatus", 0);
}

Das Modbus-Modul erlaubt auch Werte per Regex zu manipulieren - das wäre natürlich das genialste, wenn es einen OneLine gibt der mehrere Werte ersetzen kann (Google hat nichts funktionierendes ausgespuckt).

Pseudocode mäßig wie folgt:

s/(1|2)/(Heizung aus|Bereit)/

Habt Ihr irgendwelche Ideen?
Titel: Aw: Reading-Werte umbenennen
Beitrag von: TomLee am 20 Oktober 2023, 23:30:49
ZitatWie kann ich jetzt am einfachsten rund 16 Zahlen im Reading-Wert durch die entsprechenden Strings ersetzen?

Sowas kann man unter Zuhilfenahme eines Hash umsetzen:

attr Pelletheizung userReadings KesselStatusasstring:KesselStatus.* {\
my %int2str = (\
1 => 'Heizung Aus',\
2 => 'Bereit',\
3 => 'Zündvorbereiten',\
4 => 'Vorbelüften',\
5 => 'Kaltstart',\
6 => ' Anbrennphase');;\
return $int2str{ReadingsNum($NAME,'KesselStatus',1)}\
}
Titel: Aw: Reading-Werte umbenennen
Beitrag von: Nogga am 20 Oktober 2023, 23:38:17
Das ist gemein! Ich hab den ganzen Abend gesucht und an Hash hab ich auch schon gedacht, aber mein Perl-Knowhow ist sehr limitiert...

Aber was soll ich sagen? Es funktioniert!
Vielen Dank!
Titel: Aw: Reading-Werte umbenennen
Beitrag von: TomLee am 22 Oktober 2023, 00:01:11
Zitat... an Hash hab ich auch schon gedacht, aber mein Perl-Knowhow ist sehr limitiert...


http://www.mathe2.uni-bayreuth.de/perl/GK/hashes.htm