FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: DeeSPe am 22 Dezember 2017, 20:56:09

Titel: Codevorschlag Erweiterung sub IsDevice()
Beitrag von: DeeSPe am 22 Dezember 2017, 20:56:09
Ich habe die sub IsDevice() umgebaut und um zwei Parameter erweitert damit man damit auch prüfen kann ob das Device ein bestimmtes Reading besitzt mit bestimmten Werten.
Würde mich freuen wenn das Anklang findet und in fhem.pl mit einfliessen würde.

sub
IsDevice($;$$$)
{
  my ($devname,$devtype,$devread,$readval) = @_;
  return 0
    if (!defined($devname) || !defined($defs{$devname}));
  return 0
    if ($devtype && $defs{$devname}{TYPE} !~ /^$devtype$/);
  return 0
    if ($devread && !defined(ReadingsVal($devname,$devread,undef)));
  return 0
    if ($readval && ReadingsVal($devname,$devread,"") !~ /^$readval$/);
  return 1;
}


Auch wenn die Logik in der Funktion nun umgekehrt ist, sollte es voll abwärtskompatibel sein, habe es vielfach getestet.

Gruß
Dan
Titel: Antw:Codevorschlag Erweiterung sub IsDevice()
Beitrag von: rudolfkoenig am 22 Dezember 2017, 21:50:36
Den Namen finde ich fuer diesen Fall irrefuehrend, die Aufgabe klingt eher nach ReadingsVal.
Wozu braucht man sowas?
Titel: Antw:Codevorschlag Erweiterung sub IsDevice()
Beitrag von: DeeSPe am 22 Dezember 2017, 23:09:18
Zitat von: rudolfkoenig am 22 Dezember 2017, 21:50:36
Wozu braucht man sowas?

Für Automationsmodule bei denen es wichtig ist dass die zu automatisierenden Devices auch bestimmte Readings und Werte haben damit die Automation funktioniert.

Gruß
Dan
Titel: Antw:Codevorschlag Erweiterung sub IsDevice()
Beitrag von: rudolfkoenig am 22 Dezember 2017, 23:29:06
So eine Antwort haette ich auch selbst formulieren koennen.
Kannst du es mir anders beschreiben, evtl. mit einem Beispiel?
Titel: Antw:Codevorschlag Erweiterung sub IsDevice()
Beitrag von: DeeSPe am 22 Dezember 2017, 23:46:49
In einem Attribut kann man ein Triggerdevice mit passenden Reading und möglichen on/off Werten angeben.
z.B.: device1:reading:onValue:offValue
Dann könnte man prüfen mit:
my @d = split /:/,$attr_value;
return "Not a valid device!" if(!IsDevice($d[0],undef,$d[1],$d[2]."|".$d[3]));


Gruß
Dan
Titel: Antw:Codevorschlag Erweiterung sub IsDevice()
Beitrag von: betateilchen am 23 Dezember 2017, 12:40:30
Sowas gehört m.E. nicht in die fhem.pl sondern maximal in ein Modul, das diese Abfrage wirklich benötigt und die Information nicht mit den unzähligen bereits bestehenden Möglichkeiten beschaffen kann (was ich mir aber irgendwie nicht vorstellen kann).


Warum soll es zur Lösung solch simpler Aufgaben im Standard immer mehrere Lösungen geben?
Titel: Antw:Codevorschlag Erweiterung sub IsDevice()
Beitrag von: DeeSPe am 23 Dezember 2017, 14:56:26
Okay, ist also nicht gewünscht!

Ziehe hiermit meinen Codevorschlag zurück.

Gruß
Dan