AttrFn und Hilfetext bei userattr

Begonnen von fruemmel, 17 März 2026, 16:33:51

Vorheriges Thema - Nächstes Thema

fruemmel

Hallo allerseits,

gibt es eine Möglichkeit das Setzen/Löschen/Verändern von selbst definierten Attributen (userattr) global in einer AttrFn abzufangen und z. B. syntaktisch zu prüfen?
Und als passende zweite Frage: gibt es eine Möglichkeit für entsprechende selbst definierte Attribute einen Hilfetext für die Eingabe bereitzustellen (Stichwort POD)?

Vielen Dank im voraus, Gruß Wolfgang

Beta-User

Was genau schwebt dir vor?

Es gibt diverse Module, die "ihre" Attribute allgemein verteilen, und (zumindest teilweise) auch eine Syntaxprüfung machen. Vielleicht schaust du dir unter dem Gesichtspunkt v.a. RHASSPY mal an. MQTT_GENERIC_BRIDGE und AutoShuttersControl wären weitere Kandidaten, aber da bin ich wegen der Syntaxprüfung nicht sicher, ob die das auch machen...
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

fruemmel

Ich habe bei mir ein userattr definiert, in dem ich hinterlegen kann, wie alt ein bestimmtes Reading bei einem konkreten Device (z. B. temperatur bei einem Sensor) sein darf. Je nach Konfiguration des Sensors kann dieses maximale Alter unterschiedlich sein. In einem Hilfsmodul verwalte ich die Devices, bei denen das userattr gesetzt ist und reagiere in der NotifyFn auf Aktualisierungen. In einer Timer-Routine stelle ich außerdem fest, wenn ein Reading zu lange nicht gesetzt wurde. Abhängig vom Alter des Readings (und des maximalen Alters im userattr) setze ich ein weiteres Reading im jeweiligen Device auf ok oder err. So kann ich z. B. veraltete Sensorwerte individuell erkennen und in FTUI markieren.

Ich kann aber z. B. nicht automatisch erkennen, wenn bei einem weiteren Sensor das userattr gefüllt wird, um es anschließend im Hilfsmodul zu überwachen. Auch eine Syntax-Prüfung ist an dieser Stelle nicht möglich. Außerdem kann ich beim Setzen des userattr im GUI derzeit keinen Hilfetext für die Syntax ausgeben.

Beta-User

Na ja, FHEMWEB verwaltet intern eine Liste, aus der sich ergibt, zu welchem Modul welches Attribut gehört. Funktionen dazu sind addToAttrList() und addToDevAttrList().

Vielleicht wird es klarer, wie das beim/nach FHEM-Start befüllt wird, wenn du dir die sub "initialize_prefix" im RHASSPY-Code anschaust und die commandref dazu (mit "wildcards", Stichwort "data-pattern").

"Eigentlich" müßte das auch mit myUtils-Code funktionieren.
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

rudolfkoenig

Zitatgibt es eine Möglichkeit das Setzen/Löschen/Verändern von selbst definierten Attributen (userattr) global in einer AttrFn abzufangen und z. B. syntaktisch zu prüfen?
Womoeglich funktioniert das mit einem cmdAlias:
define myUserAttrChecker cmdalias attr .* AS { myUserAttrChecker($EVENT) }und der Funktion myUserAttrChecker in 99_myUtils.pm in etwa so:
sub
myUserAttrChecker($)
{
  my @p = split(" ", @_[0], 3);
  if($p[1] eq "myRoom" && $p[2] eq "blue") {
    return "this is not allowed";
  }
  return CommandAttr(undef, join(" ", @p));
}
Damit darf man ein myRoom Attribut nicht mehr auf blue setzen.
Egal ob myRoom als userattr oder sonstwie definiert wurde.


ZitatUnd als passende zweite Frage: gibt es eine Möglichkeit für entsprechende selbst definierte Attribute einen Hilfetext für die Eingabe bereitzustellen (Stichwort POD)?
Mir ist nichts bekannt.
Wenn eine ueberwaeltigende Interesse danach besteht, kann ich aber was einbauen.

JoWiemann

Zitat von: rudolfkoenig am 17 März 2026, 19:37:38Wenn eine ueberwaeltigende Interesse danach besteht, kann ich aber was einbauen.
Hallo Rudi,

würde mir gefallen. Manchmal nervt es schon, wenn die Hilfe separat nachgeschlagen werden muss.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Prof. Dr. Peter Henning

Ich hielte es hingegen für überflüssig. "Selbst definierte Attribute" sollten sprechende Namen haben, so dass man auch noch nach 10 Jahren weiß, wofür sie gut sind.

LG

pah