Gelöst:Readings Wert keine Übereinstimmung mit Anzeige

Begonnen von Deckoffizier, 08 Februar 2017, 17:34:32

Vorheriges Thema - Nächstes Thema

Deckoffizier

Hallo an Alle,

seit heute morgen beglücken mich zwei FS20 HMS100tf Sensoren mit 0 Prozent Luftfeuchtigkeit in den entsprechenden Räumen.

Verwirrend ist für mich das in der Webansicht hierfür der Wert ok  angezeigt wird und nicht wie aus dem Reading mit "0" oder von mir aus mit none statt ok was ja wohl alleine physikalisch nicht stimmen mag.

Liegt dies an meinem Code für den Temperatursensor sorry am ? Modul hierfür oder woher erscheint auf einmal dieses ok.

Anbei hier mal ein List des Sensors

Internals:
   CODE       c547
   DEF        c547
   IODev      MyCUL868
   LASTInputDev MyCUL868
   MSGCNT     1023
   MyCUL868_MSGCNT 1023
   MyCUL868_RAWMSG 810e04xx0510a001c547000000350200
   MyCUL868_RSSI -50.5
   MyCUL868_TIME 2017-02-08 17:22:09
   NAME       Buerosensor
   NR         232
   STATE      <div style='color:red' >Temp: 23.5°C <div style='color:blue'>Feuchte: ok%H <div style='color:green'>Batterie: ok
   TYPE       HMS
   Readings:
     2017-02-08 17:22:09   battery         ok
     2017-02-08 17:22:09   humidity        0
     2017-02-08 17:22:09   state           T: 23.5  H: 0  Bat: ok
     2017-02-08 17:22:09   temperature     23.5
     2017-02-08 17:22:09   type            HMS100TF
Attributes:
   IODev      MyCUL868
   alias      Büro-Sensor
   comment    eneloop eingelegt 01.02.2017
   event-on-change-reading .*
   eventMap   battery 0.0:ok -1:Achtung
   group      Heizung und Temperatur
   icon       temp_inside
   model      hms100-tf
   room       Büro,Funk_Sensoren
   sortby     4
   stateFormat {sprintf("<div style='color:red' >Temp: %.1f",ReadingsVal("Buerosensor","temperature",0))."°C ". sprintf("<div style='color:blue'>Feuchte: %.1f",ReadingsVal("Buerosensor","humidity",0)) ."%H ". sprintf("<div style='color:green'>Batterie: %.1f",ReadingsVal("Buerosensor","battery",-1)) ." "}



Gruß

Hans-Jürgen
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,2 1Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Aeotec USB Dongle Z-Wave Plus

Thorsten Pferdekaemper

Hi,
ich kann mir vorstellen, dass die eventMap Schuld ist. Hier wird 0.0 durch ok ersetzt.
Gruß,
   Thorsten
FUIP

KernSani

Guck mal dein eventMap Attribut an (und ggf. Syntax in der commandref)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

franky08

#3
stateFormat setzt aber nur STATE, hier kommt in den Readings für die Feuchte schon eine 0 vom device, da irgendwas anderes faul.

2017-02-08 17:22:09   humidity        0

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

Thorsten Pferdekaemper

Hi,
Zitat von: franky08 am 08 Februar 2017, 17:54:29
stateFormat setzt aber nur STATE,
Aus der fhem.pl:


sub
evalStateFormat($)
{
  my ($hash) = @_;

  my $name = $hash->{NAME};

  ###########################
  # Set STATE
  my $sr = AttrVal($name, "stateFormat", undef);
  my $st = $hash->{READINGS}{state};
  if(!$sr) {
    $st = $st->{VAL} if(defined($st));

  } elsif($sr =~ m/^{(.*)}$/s) {
    $st = eval $1;
    if($@) {
      $st = "Error evaluating $name stateFormat: $@";
      Log 1, $st;
    }

  } else {
    # Substitute reading names with their values, leave the rest untouched.
    $st = $sr;
    my $r = $hash->{READINGS};
    $st =~ s/\b([A-Za-z\d_\.-]+)\b/($r->{$1} ? $r->{$1}{VAL} : $1)/ge;

  }
  $hash->{STATE} = ReplaceEventMap($name, $st, 1) if(defined($st));
}

...man beachte die letzte Zeile.
Gruß,
   Thorsten
FUIP

franky08

#5
$hash->{STATE} = ReplaceEventMap($name, $st, 1) if(defined($st));

ist richtig, über das Thema hatte ich schon einmal eine Diskussion mit Andre.

Zitat
Zitat von: justme1968 am 25 Dezember 2016, 20:50:47
oder die {} variante von eventMap verwenden. damit kann man die richtung device -> fhem und fhem -> device getrennt mappen.

gruss
  andre

VG
Frank

P.S. Trotzdem liefert das Device, im Reading, schon den Wert 0 für die Feuchte  :)
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

Deckoffizier

Hallo,

sorry für meine Unwissenheit, aber ich war eigentlich der Annahme das sich das Eventmap "nur" auf battery bezieht oder sehe ich das verkehrt ?

Gruß

Hans-Jürgen
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,2 1Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Aeotec USB Dongle Z-Wave Plus

franky08

Nimm doch die beiden Attribute, eventMap und stateFormat mal raus und sieh mal was dann passiert.

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

Thorsten Pferdekaemper

Zitat von: franky08 am 08 Februar 2017, 18:24:23P.S. Trotzdem liefert das Device, im Reading, schon den Wert 0 für die Feuchte  :)
Ja, weil's ja 0 ist und nicht 0.0

Zitat von: Deckoffizier am 08 Februar 2017, 18:56:23
sorry für meine Unwissenheit, aber ich war eigentlich der Annahme das sich das Eventmap "nur" auf battery bezieht oder sehe ich das verkehrt ?
Ja, meiner Meinung nach siehst Du das verkehrt. Ich glaube, dass das eventMap nicht auf diese Art auf bestimmte Readings beschränkt werden kann.

Zitat von: franky08 am 08 Februar 2017, 19:05:05
Nimm doch die beiden Attribute, eventMap und stateFormat mal raus und sieh mal was dann passiert.
stateFormat würde ich erstmal drin lassen.

Gruß,
   Thorsten
FUIP

Deckoffizier

Hallo nochmal,

eventMap gelöscht ,abgespeichert dann FHEM neu gestartet....

leider immer noch das selbe Elend Feuchte ok oha gut einen Moment gewartet jetzt Feuchte wie es sein soll mit 0.0 obwohl es ja theoretisch auch nicht stimmen kann.

Werde mich mal intensiver in eventMap reinknien.

bin zwar etwas ratlos :-).

Aber vielen Dank für Eure Hartleibigkeit bei der Problemlösung !!

Gruß

Hans-Jürgen
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,2 1Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Aeotec USB Dongle Z-Wave Plus

franky08

Ich würde mal noch etwas warten, könnte sein das der Sensor etwas braucht ehe er Daten liefert.

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

Deckoffizier

Potzblitz,

da ist wohl noch der Wurm drin...
hatte gerade mal einen Feuchte Wert von 0.9 und 5.9 zur Anzeige aber dafür bleibt battery bei 0.0 in konstanter Boshaftigkeit in der Anzeige auch nach 2 FHEM neustarts ?

Na mal sehen ob ich noch den Dreh finde..

Gruß

Hans-Jürgen

FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,2 1Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Aeotec USB Dongle Z-Wave Plus

Thorsten Pferdekaemper

Zitat von: Deckoffizier am 08 Februar 2017, 20:55:27aber dafür bleibt battery bei 0.0 in konstanter Boshaftigkeit
Warum auch nicht? Ich dachte, dass das der Wert für "ok" wäre. Ohne die eventMap bleibt das dann bei 0.0, oder?

Zitat
in der Anzeige auch nach 2 FHEM neustarts ?
Was erwartet Ihr Euch eigentlich immer von den Neustarts? Das braucht man normalerweise nur, wenn man ein update macht oder sonst Coding von Modulen oder so ändert.
Gruß,
  Thorsten
FUIP

Deckoffizier

Hallo Thorsten,

nochmal klar Schiff...
attr eventMap ist gelöscht.

Reading liefert battery als Wert ok und nicht 0.0

in der Anzeige möchte ich auch das ok lesen so wie das Reading es mir anzeigt bzw geliefert bekommt.

Ziel ist wenn Reading battery nicht als Wert ok liefert dafür etwas anderes Angezeigt wird wie z.B. Achtung Akku alle.

Hoffentlich reden wir nicht aneinander vorbei.

Grüße

Hans-Jürgen
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,2 1Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Aeotec USB Dongle Z-Wave Plus

franky08

#14
sub BattBuerosensor()
{
my $readBatt = ReadingsVal("Buerosensor","battery",0);
if($readBatt ne "ok") {
fhem "setreading Buerosensor battery Achtung Akku alle"
}
}

würde in der 99_myUtils laufen denn alles was über 3 Programmzeilen geht, landet bei mir dort!

Mit folgender sub überwache ich den Status meiner Batterien:

sub
Batt_dead

{

my $batt = ReadingsVal("ActionDetector","state","undef");
my @daten = split(/[^\d]./,$batt);

my $alive = $daten[3];
my $dead = $daten[6];
my $unkn = $daten[9];

fhem "setreading Batt_Level Alive $alive";
fhem "setreading Batt_Level Dead $dead";
fhem "setreading Batt_Level Unknown $unkn";

if( $alive != 54 or $dead != 0 or $unkn != 0 ) {
fhem "set Batterien_Pruefung Baterrien Ueberpruefen";
fhem "attr WEB roomIcons Batterien:general_low\@red";
fhem "attr WEBtablet2 roomIcons Batterien:general_low\@red";
} else {
fhem "attr WEB roomIcons Batterien:general_ok";
fhem "attr WEBtablet2 roomIcons Batterien:general_ok";
fhem "set Batterien_Pruefung Batterien OK";
}

}


VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1