Autor Thema: Namen anhand von Werten ausgeben  (Gelesen 210 mal)

Offline AlexMuc81

  • New Member
  • *
  • Beiträge: 9
Namen anhand von Werten ausgeben
« am: 12 September 2019, 11:23:30 »
Hallo zusammen,

mein Regensensor meldet zuverlässig den Wert an FHEM über die aktuelle Regenmenge (z.B. 0,315)
In meiner Handy App sind das dann 3 mm/h

Ich würde die Werte gerne in Wörter übersetzen.

0 = kein Regen
0.1 - 0.5 = Nieselregen
0.6 - 2.5 = leichter Regen
2.6 - 10 = mäßiger Regen
10.1 - 50 = Starkregen

wie bekomme ich das im FHEM bzw. dann auch im FTUI abgebildet?

netatmo_moduleGarten

Readings:
rain = 0 (aktuell)

Danke

Gruß
Alex

Online MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 5924
  • NIVEAu ist keine Creme...
Antw:Namen anhand von Werten ausgeben
« Antwort #1 am: 12 September 2019, 11:33:06 »
In Perl z.B.:

sub RegenmengeAlsText($)
{
my ($Regenmenge)  = @_;

my $RegenmengeText = "";

if($Regenmenge == 0)
{
  $RegenmengeText = "Kein Regen";
}
elsif(Regenmenge >= 0.1 and $Regenmenge <= 0.5)
{
  $RegenmengeText = "Nieselregen";
}
elsif($Regenmenge >= 0.6 and $Regenmenge <= 2.5)
{
  $RegenmengeText = "Leichter Regen";
}

...

fhem("setreading WO-SOLL-ES-LANDEN WIE-SOLL-DAS-READING-HEISSEN $RegenmengeText");
}

Oder halt anders setzen, damit es dann in FTUI (oder wo auch immer) angezeigt werden kann/wird...
...kenne allerdings FTUI nicht...

EDIT: und das dann mit z.B. einem passenden notify (z.B. wenn sich die Regenmenge ändert ;)  ) aufrufen define nRegenText notify Regenmesser:Regenmenge {RegenmengeAlsText(Regenmenge)} das musst du natürlich an deine Umgebung etc. anpassen... Regenmenge kann je nach "Ausführung" des RegEx des notify dann $EVENT oder $EVTPART1 etc. sein, da sollte ja dann der entsprechende Regenmengenwert drin stehen...

Gruß, Joachim
« Letzte Änderung: 12 September 2019, 11:40:55 von MadMax-FHEM »
FHEM 5.9 PI3: HM-CFG-USB, 40x HM, ZWave-USB, 6x ZWave, EnOcean-PI, 3x EnOcean, HUE, CO2, ESP-Multisensor, FireTV, KODI, alexa-fhem, ...
FHEM 5.9 PI2: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, KODI, ha-bridge, ...
FHEM 5.9 PI3 (Test): HM-MOD-PCB, Snips, Google Home, ...

Offline AlexMuc81

  • New Member
  • *
  • Beiträge: 9
Antw:Namen anhand von Werten ausgeben
« Antwort #2 am: 12 September 2019, 11:40:31 »
Danke dir!

Wo muss ich das Perl Script einfügen? In die 99_myUtils.pm?

Offline Byte09

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1461
Antw:Namen anhand von Werten ausgeben
« Antwort #3 am: 12 September 2019, 12:01:43 »
Danke dir!

Wo muss ich das Perl Script einfügen? In die 99_myUtils.pm?

du kannst es auch ohne notify und 99_myutils direkt im device als userreading anlegen ( wie in Fhem fast immer führen viele Wege zum Ziel  ;) ).

wiki userreading:
https://wiki.fhem.de/wiki/UserReadings

erklärung ReadingsNum:
https://wiki.fhem.de/wiki/DevelopmentModuleAPI#ReadingsNum

raintext:rain:.* {
my $rain = ReadingsNum( $name, 'rain', 0 );
return "kein regen" if $rain ==0;
return "Starkregen" if $rain > 10;
return "mäßiger Regen" if $rain > 2.5;
return "leichter Regen" if $rain > 0.5;
return "Nieselregen" if $rain > 0;
}


dummy incl Userreading
defmod reading dummy
attr reading readingList rain
attr reading room 05_test
attr reading setList rain:slider,0,0.1,11,1
attr reading stateFormat rain\
raintext\

attr reading userReadings raintext:rain:.* {\
my $rain = ReadingsNum( $name, 'rain', 0 );;\
return "kein regen" if $rain ==0;;\
return "Starkregen" if $rain > 10;;\
return "mäßiger Regen" if $rain > 2.5;;\
return "leichter Regen" if $rain > 0.5;;\
return "Nieselregen" if $rain > 0;;\
}
attr reading webCmd rain

setstate reading 0.0\
kein regen\

setstate reading 2019-09-12 12:20:32 rain 0.0
setstate reading 2019-09-12 12:20:32 raintext kein regen
gruss Byte09
« Letzte Änderung: 12 September 2019, 12:27:30 von Byte09 »

Online MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 5924
  • NIVEAu ist keine Creme...
Antw:Namen anhand von Werten ausgeben
« Antwort #4 am: 12 September 2019, 13:56:34 »
wie in Fhem fast immer führen viele Wege zum Ziel  ;)

Damit ist alles gesagt ;)

Einfach mal lesen/anregen lassen/lernen/ausprobieren -> eigenen Weg finden (ist finde ich wichtig!)

Der eine (ich ;) ) hat mehr einen Hang zu myUtils bzw.:

alles was "Programmierung" ist -> myUtils

alles was "Konfiguration" ist -> fhem.cfg (config.db)

Ich mische ungern "Programmierung" und "Konfiguration"...
...daher tue ich mich mit DOIF auch so schwer ;)

Aber wie geschrieben: das ist "mein Weg"... Jeder seinen selbst bitte! ;)

Viel Erfolg, Joachim
FHEM 5.9 PI3: HM-CFG-USB, 40x HM, ZWave-USB, 6x ZWave, EnOcean-PI, 3x EnOcean, HUE, CO2, ESP-Multisensor, FireTV, KODI, alexa-fhem, ...
FHEM 5.9 PI2: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, KODI, ha-bridge, ...
FHEM 5.9 PI3 (Test): HM-MOD-PCB, Snips, Google Home, ...

Offline Byte09

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1461
Antw:Namen anhand von Werten ausgeben
« Antwort #5 am: 14 September 2019, 09:31:39 »
Hallo zusammen,
.
.
.
Gruß
Alex

Ich persönlich finde es ja immer ganz nett , wenn nochmal eine Resonanz kommt nachdem man im Forum eine Frage gestellt hat und sich User bemüht haben zu helfen ( ggf. bin ich da aber nur etwas komisch  ;) ).

Somit die Frage: Hast du es denn hinbekommen ( wie auch immer ) ?

gruss Byte09
« Letzte Änderung: 14 September 2019, 09:35:12 von Byte09 »

Online Helmi55

  • Hero Member
  • *****
  • Beiträge: 1087
    • Helmi's Fotoseite
Antw:Namen anhand von Werten ausgeben
« Antwort #6 am: 14 September 2019, 09:56:30 »
Ja eine Antwort mit dem Beispiel wie umgesetzt wäre für Interessierte auch gut.
So lernen andere auch noch durch lesen.
Gruß
Helmut
System1 fhem 5.9 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 5.9 auf RPi 3B mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/album

 

decade-submarginal