diff --git a/NSPanel-cardtypen.md b/NSPanel-cardtypen.md new file mode 100644 index 0000000..525ace8 --- /dev/null +++ b/NSPanel-cardtypen.md @@ -0,0 +1,155 @@ +# Einleitung +Hier werden alle Spezialseiten beschrieben mit ihren Parametern, Scripten und Hinweisen. + +## Verszeichnis + + + +## Alarm Page** + + +* **Quelle**: +Post [1087](https://forum.iobroker.net/topic/50888/sonoff-nspanel/1087), [1265](https://forum.iobroker.net/topic/50888/sonoff-nspanel/1265)+[1270](https://forum.iobroker.net/topic/50888/sonoff-nspanel/1270) im ioBroker Forum. + +* **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 Parameter `autoCreateALias: true` gesetzt ist. Sobald der Code der Alarm Page das erste Mal geladen wird, werden die Datenpunkte angelegt. + + +![Bildschirmfoto 2023-04-25 um 10 11 30](https://user-images.githubusercontent.com/101348966/234215552-92739704-bf84-4792-bccb-f130ec111fd4.png) + + 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 Parameter `autoCreateALias: true` auch automatisch angelegt. + + ![image](https://user-images.githubusercontent.com/99131208/188514578-43f08178-b8f0-4d09-8e76-02cbe55d5557.png) + + 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_Failed + + Falls 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.** + +```typescript +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**: + ```typescript + 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. + + ![image](https://user-images.githubusercontent.com/99131208/188735860-880e0a81-407e-454e-b7d2-05cf8f57acfb.png) + + + [Zum Blocky](https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/Blockly/Alarm_Page_Testskript.xml) + (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**: +1. 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. + +![image](https://user-images.githubusercontent.com/99131208/188736479-e56f574b-5ab3-442b-90d1-384672779ec9.png) + +Das Panel wechselt in den Status (AlarmState) "arming" (Icon = gelbes blinkendes Schild/Keine Tastatur) + +![image](https://user-images.githubusercontent.com/99131208/188736544-3a3e7e12-b28d-476a-bb97-3b2e9a1cc1e0.png) + +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: + +![image](https://user-images.githubusercontent.com/99131208/188736580-0a8c8a8d-5c6c-40d5-ab64-a305a05da70e.png) + +Der AlarmType ist jetzt D1, die Tastatur ist wieder eingeblendet und die card Alarm bereit für die Deaktivierung. + +2. Ablauf Alarm Deaktivierung: +PIN-Eingabe zur Deaktivierung und Bestätigung durch den Button "Deaktivieren". + +![image](https://user-images.githubusercontent.com/99131208/188736732-324c0cb7-f638-4bf7-80cb-b5b631bc1360.png) + +Das Panel vergleicht jetzt den Aktivierungs-PIN mit dem Deaktivierungs-PIN. Stimmen die PIN's überein, dann wird der AlarmState auf "pending" gesetzt. + +![image](https://user-images.githubusercontent.com/99131208/188736794-73d106c4-263a-4e4b-9b41-cb53ca1e457f.png) + +Das externe Alarm-Skript macht seine restlichen Aufgaben und setzt dann den Status auf "disarmed" + +![image](https://user-images.githubusercontent.com/99131208/188736826-ba9c0373-248e-4762-8b11-c5c66d540d8a.png) + +Sollte der Pin nicht übereinstimmen, so setzt das Panel den AlarmState "triggered" (Icon blinkt) + +![image](https://user-images.githubusercontent.com/99131208/188736871-5d91b8b3-83bf-435b-9346-07c419aee21c.png) + + +**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): + +![image](https://user-images.githubusercontent.com/99131208/188736871-5d91b8b3-83bf-435b-9346-07c419aee21c.png) + +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: + +![image](https://user-images.githubusercontent.com/99131208/188738657-6e322211-b5d8-4528-9623-747813c5780f.png) + + 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. + +[Zum Blockly](https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/Blockly/Alarm_Page_Erweitertes_Skript_mit_PopupNotifyPage.xml) + +**Hinweis Verknüpfung mit Alarm - Adapter**: +es gibt im Forum ein [Post](https://forum.iobroker.net/post/987357) @danny_v1, wo ein Blockly vorgestellt wird, welches eine Verbindung zum Alarm-Adapter herstellt. + +*** + + \ No newline at end of file