FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: FHEMAN am 27 Juli 2016, 13:58:55

Titel: [gelöst] Reservierte Namen für Attribute und Readings (bspw. trigger)
Beitrag von: FHEMAN am 27 Juli 2016, 13:58:55
Mahlzeit!

Ich wollte an einigen Dummys das Reading "trigger" setzen, um nachträglich das Sender-Device bzw. Sender-Notify zu identifizieren.
Das funktioniert zwar, allerdings verursacht anscheinend das Wort trigger im Aufruf ein weiteres Event.

Beispiel
define notify1 notify MySender {
  fhem("setreading MyDummy trigger $NAME:$EVENT");
  fhem("set MyDummy off");
}

define notify2 notify MyDummy {
  my $Trigger = ReadingsVal("MyDevice", "trigger", 0);
  Log 1, $NAME.": ".$EVENT;
}


verursacht:
MyDummy: trigger:MySender:off
UND
MyDummy: off

Mache ich einen Logikfehler, ist es ein Bug oder darf ich bei den Attributnamen und -Readings keine FHEM Funktionsnamen verwenden?

Danke für eine Antwort!
Ronny
Titel: Antw:Reservierte Namen für Attribute und Readings (bspw. trigger)
Beitrag von: justme1968 am 27 Juli 2016, 14:24:56
du bekommst ein event für das reading trigger (aus setreading) und ein event für state (aus set). das korrekt so. da ist nichts doppelt.
Titel: Antw:Reservierte Namen für Attribute und Readings (bspw. trigger)
Beitrag von: FHEMAN am 27 Juli 2016, 14:48:57
Verstehe. Das heißt, ich müsste entweder mein Notify einschränken durch
define notify2 notify MyDummy:(on|off)
oder meinen Dummy mit event-on-change-reading austatten:
attr MyDummy event-on-change-reading state
Nur zur Vervollständigung:
Ich nehme an, dass bei solchen Konstrukten aus Performancegründen wohl die 2. Variante zu empfehlen ist, da keine Events von FHEM verarbeitet werden müssen?
Titel: Antw:Reservierte Namen für Attribute und Readings (bspw. trigger)
Beitrag von: justme1968 am 27 Juli 2016, 14:50:45
es ist normalerweise sinnvoll beides zu tun. event-on-change setzen und die notifys so genau wie möglich zu definieren.

gruss
  andre
Titel: Antw:Reservierte Namen für Attribute und Readings (bspw. trigger)
Beitrag von: FHEMAN am 27 Juli 2016, 15:09:39
Du meinst, damit nicht in den Codeteil gesprungen wird bei einem Fall, den man eventuell nicht berücksichtigt hat? Alleine aus Perfomancesicht müsste aber event-on-change-reading reichen, oder?
Ich frage deswegen nochmal nach, weil ich eine Art Best-Practice bei der Programmierung erreichen will. Aber auch, um sämtliche Verzögerungen im Ablauf zu minimieren.
Titel: Antw:[gelöst] Reservierte Namen für Attribute und Readings (bspw. trigger)
Beitrag von: justme1968 am 27 Juli 2016, 15:23:00
best practice ist beides