Alarm und FTUI: Unterschied zwischen den Versionen

Aus FHEMWiki
Zeile 8: Zeile 8:


==1.Schritt: Anlegen eines Dummy==
==1.Schritt: Anlegen eines Dummy==
  defmod AlarmKeypadDummy dummy
  defmod AAA.key dummy
  attr AlarmKeypadDummy alarmDevice Sensor
  attr AAA.key alarmDevice Sensor
  attr AlarmKeypadDummy alarmSettings alarm0,|AlarmKeypadDummy:.unlocked|unlocked|off  # wird durch das Modul Alarm angelegt
  attr AAA.key alarmSettings alarm0,|AlarmKeypadDummy:.unlocked|unlocked|off  # wird durch das Modul Alarm angelegt
  attr AlarmKeypadDummy event-on-change-reading state,inputPin
  attr AAA.key event-on-change-reading state,inputPin
  attr AlarmKeypadDummy event-on-update-reading key
  attr AAA.key event-on-update-reading key
  attr AlarmKeypadDummy readingList key,inputPin,fails,unlockPin
  attr AAA.key readingList key,inputPin,fails,unlockPin
  attr AlarmKeypadDummy room Alarm
  attr AAA.key room Alarm
  attr AlarmKeypadDummy setList unlockPin
  attr AAA.key setList unlockPin
  attr AlarmKeypadDummy userReadings inputPin:key:.[0-9] { return ReadingsVal($NAME, "inputPin", "*") . ReadingsVal($NAME, "key", "0");; }, fails:key:.# { if (ReadingsVal($NAME, "inputPin", "0") ne ReadingsVal($NAME, "unlockPin", "0")) { return ReadingsVal($NAME, "fails", 0)+1;; } else { return 0;; } }, state:key:.# { if (ReadingsVal($NAME, "inputPin", "0") ne ReadingsVal($NAME, "unlockPin", "0")) { return "locked";; } else { return "unlocked";; } }, inputPin:key:.[\<] { my $inputVal = ReadingsVal($NAME, "inputPin", "0");; chop($inputVal);; return $inputVal;; },  inputPin:key:.# { return "";; }
  attr AAA.key userReadings inputPin:key:.[0-9] { return ReadingsVal($NAME, "inputPin", "*") . ReadingsVal($NAME, "key", "0");; }, fails:key:.# { if (ReadingsVal($NAME, "inputPin", "0") ne ReadingsVal($NAME, "unlockPin", "0")) { return ReadingsVal($NAME, "fails", 0)+1;; } else { return 0;; } }, state:key:.# { if (ReadingsVal($NAME, "inputPin", "0") ne ReadingsVal($NAME, "unlockPin", "0")) { return "locked";; } else { return "unlocked";; } }, inputPin:key:.[\<] { my $inputVal = ReadingsVal($NAME, "inputPin", "0");; chop($inputVal);; return $inputVal;; },  inputPin:key:.# { return "";; }
In diesem Device kann über den Befehl
In diesem Device kann über den Befehl
  set unlockPin <Wert>
  set unlockPin <Wert>

Version vom 26. Februar 2018, 15:16 Uhr

Ziel und Voraussetzungen

Auf dieser Seite wird erläutert, wie man das Modul Alarm mit Hilfe eines Keypads aus dem FTUI heraus steuert.

Ziel ist, das TabletUI mit einem Keypad zu schützen während der Alarm aktiv ist und darüber hinaus über Eingabe des korrekten Pins die Alarmanlage zu entschärfen.

  • Das Modul Alarm muss installiert sein, das Alarmdevice wird im Folgenden AAA genannt (ansonsten muss der entsprechende Name in den nachfolgenden Beispielen geändert werden)
  • Es muss eine laufende TabletUI-Instanz vorhanden sein

1.Schritt: Anlegen eines Dummy

defmod AAA.key dummy
attr AAA.key alarmDevice Sensor
attr AAA.key alarmSettings alarm0,|AlarmKeypadDummy:.unlocked|unlocked|off   # wird durch das Modul Alarm angelegt
attr AAA.key event-on-change-reading state,inputPin
attr AAA.key event-on-update-reading key
attr AAA.key readingList key,inputPin,fails,unlockPin
attr AAA.key room Alarm
attr AAA.key setList unlockPin
attr AAA.key userReadings inputPin:key:.[0-9] { return ReadingsVal($NAME, "inputPin", "*") . ReadingsVal($NAME, "key", "0");; }, fails:key:.# { if (ReadingsVal($NAME, "inputPin", "0") ne ReadingsVal($NAME, "unlockPin", "0")) { return ReadingsVal($NAME, "fails", 0)+1;; } else { return 0;; } }, state:key:.# { if (ReadingsVal($NAME, "inputPin", "0") ne ReadingsVal($NAME, "unlockPin", "0")) { return "locked";; } else { return "unlocked";; } }, inputPin:key:.[\<] { my $inputVal = ReadingsVal($NAME, "inputPin", "0");; chop($inputVal);; return $inputVal;; },  inputPin:key:.# { return "";; }

In diesem Device kann über den Befehl

set unlockPin <Wert>

der gültige Pincode gesetzt werden

Die Userreadings füllen (je nach Änderung des Readings key) die folgenden Readings:

  • fails (Anzahl ungültiger Versuche)
  • inputPin (Eingabe Pin aufsummiert aus den einzelnen Keys)
  • state (locked/unlocked)

2.Schritt: Anlegen eines Notify

Wenn der richtige Code eingegeben wurde, soll die Alarmanlage unscharf geschaltet werden:

defmod AAA.disarmed.N notify AlarmKeypadDummy:unlocked set AAA disarmed <alarmlevel>
attr AAA.disarmed.N room Alarm

Bedienung