DOIF für Battery leer Warnung mit unterchiedlichen Devices

Begonnen von Johann.S, 24 September 2019, 16:18:12

Vorheriges Thema - Nächstes Thema

stera

#30
Hallo Damian,

ich frage mal in diesem Topic und vllt hast du eine schnelle Idee. Kann man bei der Abfrage des Device auch irgendwie filtern "alles, außer HM_ Devices" zum Beispiel

Hintergrund ist und ich habe das noch nicht direkt gefunden. Es gibt ja Geräte mit Battery "low bzw. ok" oder die HUE Geräte mit Prozent Zahl.

Oder anders gefragt, man könnte auch nur nach Zahlen im Reading suchen. Aber mit $number geht das auch nicht.. Am besten wäre natürlich eine kombinierte Abfrage. Steh da gerade auf dem Schlauch und wäre für Hilfe dankbar.


{ [12:00];
  if (($_dev=[?@"":battery:$_ < 30,"keine"]) ne "keine") {
    set_State ("In folgenden Geräten ist die Batterie zu wechseln: $_dev");   
  }
}



{ [12:00];
  if (($_dev=[?@"":battery:$number < 30,"keine"]) ne "keine") {
    set_State ("In folgenden Geräten ist die Batterie zu wechseln: $_dev");   
  }
}



Kleines Update:
Geht leider doch nicht, zeigt alle Geräte von HUE an.
Ich habe eine Lösung gefunden, aber evtl. gibt es ja noch eine bessere Abfrage:


{ [12:00];
  if (($_dev=[?@"":battery:$_ < 30 and $TYPE eq "HUEDevice","keine"]) ne "keine") {
    set_State ("In folgenden Geräten ist die Batterie zu wechseln: $_dev");   
  }
}




Damian

Zitat von: stera am 20 Januar 2022, 08:42:30
Hallo Damian,

ich frage mal in diesem Topic und vllt hast du eine schnelle Idee. Kann man bei der Abfrage des Device auch irgendwie filtern "alles, außer HM_ Devices" zum Beispiel

Hintergrund ist und ich habe das noch nicht direkt gefunden. Es gibt ja Geräte mit Battery "low bzw. ok" oder die HUE Geräte mit Prozent Zahl.

Oder anders gefragt, man könnte auch nur nach Zahlen im Reading suchen. Aber mit $number geht das auch nicht.. Am besten wäre natürlich eine kombinierte Abfrage. Steh da gerade auf dem Schlauch und wäre für Hilfe dankbar.

Du kannst auch Verneinungen beim Trigger definieren, siehe: https://forum.fhem.de/index.php/topic,125545.msg1201935.html#msg1201935

Sonst kanns du als Bedingung definieren:

$TYPE ne "HUEDevice" and $_ ne "ok" or $TYPE eq "HUEDevice" and $number < 30

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

stera

Danke für die schnelle Antwort. Ich habe nun für mich eine gute Lösung gefunden.

Bekomme immer noch Logs im 10s Takt und komischerweise ist ja ein Zeittrigger hinterlegt.?
2022.01.20 15:34:28.037 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 146052) line 1.
2022.01.20 15:34:28.037 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 146053) line 1.
2022.01.20 15:34:28.037 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 146054) line 1.
2022.01.20 15:34:28.037 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 146055) line 1.




defmod doif_SensorUeberwachung DOIF { [12:00];; \
  if (($_batt1=[?@"HUE|BWM":battery:$_ < 30,"keine"]) ne "keine") {\
  fhem("setreading doif_SensorUeberwachung battery_low_percent $_batt1;;")\
  } else { fhem("setreading doif_SensorUeberwachung battery_low_percent keine;;") };;;;\
  \
  if (($_batt2=[?@"HM":battery:$_ ne "ok","keine"]) ne "keine") {\
  fhem("setreading doif_SensorUeberwachung battery_low_static $_batt2;;")\
  } else { fhem("setreading doif_SensorUeberwachung battery_low_static keine;;") }\
}
attr doif_SensorUeberwachung room SensorÜberachung
attr doif_SensorUeberwachung verbose 0

Damian

Zitat von: stera am 20 Januar 2022, 15:38:10
Danke für die schnelle Antwort. Ich habe nun für mich eine gute Lösung gefunden.

Bekomme immer noch Logs im 10s Takt und komischerweise ist ja ein Zeittrigger hinterlegt.?
2022.01.20 15:34:28.037 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 146052) line 1.
2022.01.20 15:34:28.037 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 146053) line 1.
2022.01.20 15:34:28.037 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 146054) line 1.
2022.01.20 15:34:28.037 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 146055) line 1.


Dann ist es keine Gute Lösung wenn man "ok" mit > vergleicht

Kann dir aber nicht sagen, woher es kommt, es scheint aber nicht vom geposteten DOIF zu sein, es muss ein  Größer-Zeichen > vorkommen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

stera

Hallo Damian,

danke für die Rückmeldung. Das waren doch Meldungen von einer Readingsgroup, die ich auch mit angelegt hatte.
Hast du eine Idee wie in die Warnung hier am besten wegbekomme im ValueFormat?


defmod ReadingGroup_Battery readingsGroup .*:[Bb]attery
attr ReadingGroup_Battery room SensorÜberwachung
attr ReadingGroup_Battery valueFormat { return undef if( $VALUE > 50 );;;; return undef if( $VALUE eq "ok" );;;;}
attr ReadingGroup_Battery valueIcon {'battery.low' => 'unknown@red','battery.ok' => 'general_ok@green','battery' => '{if ($VALUE <= 25) {"measure_battery_".(sprintf("%.0f",(($VALUE)/25))*25)."\@red"} else {if ($VALUE <= 50) {"measure_battery_".(sprintf("%.0f",(($VALUE)/25))*25)."\@orange"} else {if ($VALUE <= 75) {"measure_battery_".(sprintf("%.0f",(($VALUE)/25))*25)."\@yellow"} else {"measure_battery_".(sprintf("%.0f",(($VALUE)/25))*25)."\@green"}}}}'}\
attr ReadingGroup_Battery verbose 0


Damian

Zitat von: stera am 20 Januar 2022, 21:54:07
Hallo Damian,

danke für die Rückmeldung. Das waren doch Meldungen von einer Readingsgroup, die ich auch mit angelegt hatte.
Hast du eine Idee wie in die Warnung hier am besten wegbekomme im ValueFormat?


defmod ReadingGroup_Battery readingsGroup .*:[Bb]attery
attr ReadingGroup_Battery room SensorÜberwachung
attr ReadingGroup_Battery valueFormat { return undef if( $VALUE > 50 );;;; return undef if( $VALUE eq "ok" );;;;}
attr ReadingGroup_Battery valueIcon {'battery.low' => 'unknown@red','battery.ok' => 'general_ok@green','battery' => '{if ($VALUE <= 25) {"measure_battery_".(sprintf("%.0f",(($VALUE)/25))*25)."\@red"} else {if ($VALUE <= 50) {"measure_battery_".(sprintf("%.0f",(($VALUE)/25))*25)."\@orange"} else {if ($VALUE <= 75) {"measure_battery_".(sprintf("%.0f",(($VALUE)/25))*25)."\@yellow"} else {"measure_battery_".(sprintf("%.0f",(($VALUE)/25))*25)."\@green"}}}}'}\
attr ReadingGroup_Battery verbose 0



Readingsgroup ist nicht meine Baustelle, da musst du im Readingsgroup-Board anfragen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF