-
-
Notifications
You must be signed in to change notification settings - Fork 193
cardalarm
-
Voraussetzung:
Konfigurationsskript NsPanelTs.ts mindestens in der Version: Version 4.3.3.9 -
Im IoBroker
Im IoBroker wird unter 0_userdata.0.NSPanel.Alarm die Datenpunkte AlarmPin, AlarmState, AlarmType, PANEL und PIN_Failed benötigt. Diese werden i.d.R. generisch erzeugt, wenn im PageItem der ParameterautoCreateALias: true
gesetzt ist. Sobald der Code der Alarm Page das erste Mal geladen wird, werden die Datenpunkte angelegt.
Bei Aktivierung oder Deaktivierung der Alarmanlage wechselt der Status in arming oder pending. Im Falle einer PIN Falscheingabe gibt es nun auch triggered. Da die Verarbeitung der Alarmlogik außerhalb des Skriptes stattfindet, müssen die Datenpunkte auch entsprechend durch das externe Skript weiter getaktet werden
-
Aliase:
Die vier Datenpunkte AlarmPin, AlarmState, AlarmType und Pin_Failed werden in einem Alias vom Typ Feueralarm im Gerätemanager oder Alias Adapter angelegt und dieser Alias wird dann im Konfigurationsskript auf der Alarm-Page verwendet.
Diese werden, mit dem ParameterautoCreateALias: true
auch automatisch angelegt.Alias-Typ Feueralarm:
ACTUAL = 0_userdata.0.NSXXXX.Alarm.AlarmState
PIN = 0_userdata.0.NSXXXX.Alarm.PIN
TYPE = 0_userdata.0.NSXXXX.Alarm.AlarmType
PANEL = 0_userdata.0.NSXXXX.Alarm.PANEL
PIN_Failed = 0_userdata.0.NSXXXX.Alarm.PIN_FailedFalls ein Wert im Alias nicht vorhanden ist, dann separat hinzufügen
-
Konfigurationsskript
Allgemeine Einstellung:
Es gibt eine Konstante, die den Pfad definiert, in dem der Ordner Alarm angelgt wird. Default ist 0_userdata.0.NSPanel.
const NSPanel_Alarm_Path = '0_userdata.0.NSPanel.';
//Neuer Pfad für gemeinsame Nutzung durch mehrere Panels
Page Type: Die Alarmfunktion kann nur auf einer PageAlarm verwendet werden
Beispiel:
let Alarmseite: PageType =
{
"type": "cardAlarm",
"heading": "Alarm",
"subPage": false,
"items": [
{ id: 'alias.0.NSPanel.Alarm',
actionStringArray: ['Vollschutz','Zuhause','Nacht','Besuch','Ausschalten'],
autoCreateALias: true }
]
}
Parameter:
- id -> Pfad zum Alias Datenpunkt
- actionStringArray -> Möglichkeit eigene Texte zu definieren für die Schutzzustände A1 bis A4 und Text für Deaktivierung
Wenn das Array nicht definiert wird, ziehen die Standardtexte in der eingestellten Sprache. - autoCreateALias -> bei True werden alle Datenpunkte durch das Script angelegt
Blockly Testskript
Nachfolgend ein kurzes Emulationsskript für die Weiterverarbeitung. Diese Logik sollte auch in dein eigenes externes Alarm-Skript übernommen werden.
Zum Blocky
(Bild & Blockly by @Armilar)
Test-Blockly starten:
Alarm-Code in die cardAlarm eingeben --> Schutz auswählen --> aktiviert
Alarm-Code in die cardAlarm eingeben --> Deaktivieren --> deaktiviert
Ablauf:
- Ablauf Alarm Aktivierung:
PIN eingeben und dann Alarm-Modus (Vollschutz, Zuhause, Nacht oder Besuch) auswählen. Im Datenpunkt AlarmType wird das als A1, A2, A3 oder A4 interpretiert und kann extern weiterverarbeitet werden.
Das Panel wechselt in den Status (AlarmState) "arming" (Icon = gelbes blinkendes Schild/Keine Tastatur)
Wenn durch das externe Skript (oder Emulator) der Status "armed" in den Datenpunkt AlarmState eingetragen wird (vorausgesetzt das externe Skript findet z.B, keine offenen Fenster) wird das Icon rot:
Der AlarmType ist jetzt D1, die Tastatur ist wieder eingeblendet und die card Alarm bereit für die Deaktivierung.
- Ablauf Alarm Deaktivierung:
PIN-Eingabe zur Deaktivierung und Bestätigung durch den Button "Deaktivieren".
Das Panel vergleicht jetzt den Aktivierungs-PIN mit dem Deaktivierungs-PIN. Stimmen die PIN's überein, dann wird der AlarmState auf "pending" gesetzt.
Das externe Alarm-Skript macht seine restlichen Aufgaben und setzt dann den Status auf "disarmed"
Sollte der Pin nicht übereinstimmen, so setzt das Panel den AlarmState "triggered" (Icon blinkt)
Neues: Neu ist in diesem Zusammenhang der Alias "PIN_Failed" (state/number) Das TS-Skript zählt die missglückten Anmeldeversuche und trägt sie hier ein. Könnte man also auch für einen Trigger mit Meldung an Telegram nutzen. Außerdem wird bei Fehlerhaften PIN-Eingaben der Datenpunkt AlarmState auf "triggered" gesetzt. Im Panel sieht das dann so aus (das Icon blinkt):
Status "triggered":
Durch das externe Skript (alternativ der Alarm-Emulator) kann ein Status "triggered" gesetzt werden.
Zum Beispiel wenn der Alarm ausgelöst wurde, Die Deaktivierung der cardAlarm funktioniert somit auch bei dem Status "triggered".
Erweitertes Blockly mit popupNotify Page:
Voraussetzung: Ein neuer Datepunkt mit einer vodefinierten PIN.
Definieren der Basiseinstellungen in der gleichnamigen Funktion:
Es gibt fünf Basiseinstellungen:
- Datenpunkt AlarmPIN: Hier muss der Pfad zu dem Datenpunkt konfiguriert werden, der die original PIN enthält. Gegen diese wird bei der Eingabe vom Skript verglichen. Wichtig: Dieser Datenpunkt muss manuell im ioBroker erzeugt werden. Es handelt sich nicht um den Datenpunkt 0_userdata.0.NSPanel.Alarm.AlarmPin !!!
- Anzahl_NSPanles: Die Anzahl der NSPanels, die mit dem ioBroker verbunden sind
- Notifay_OnOff: Soll es eine Information mit der popupNotify Page geben? wahr=an und falsch=aus.
- Notify_Interaktion: An einem Panel wird eine Eigabe gemacht, manipulation versucht o.ä. Wer soll eine popupNotify Page erhalten? jeweils=nur das Panel an dem gerade eine Eingabe erfolgt oder global=alle angeschlossenen Panels
- Notify_Event: Ein Alarm wird ausgelöst, wer soll mit einer popupNotify Page informiert werden? jeweils=nur das Panel an dem gerade eine Eingabe erfolgt oder global=alle angeschlossenen Panels
Hinweis: Wenn Ihr eine Anpassung am Skript oder an einem Datenpunkt vornehmet, startet bitte das Skript einmal neu.
Hinweis Verknüpfung mit Alarm - Adapter:
es gibt im Forum ein Post @danny_v1, wo ein Blockly vorgestellt wird, welches eine Verbindung zum Alarm-Adapter herstellt.