NEWS
Pincode Eingabe Alarmanlage
-
Hallo zusammen,
ich habe auch noch eine Frage zum hier vorgestellten tollen Skript.
1.) Wofür wird der State "Pin" erstellt? Ich konnte im Skript nirgendswo eine Zeile finde, die auf diesen Datenpunkt verweist.
*EDIT = Nr. 1 hat sich erledigt. Ich vermute mal, dass man in der Variable den eigentlich PIN auslagern soll damit dieser nicht im Skript steht.
Habe ich mal so gemacht und die PIN dann per getState in die Variable geladen
2.) Im Testskript wurde als Pin "1111" gewählt. Bei mir lässt es das Skript nicht zu zwei gleiche Zahlen hintereinander zu schreiben. Erfasse ich als PIN z.b. "1234" reagiert das Skript wie gewünscht. Habt ihr dieses Phänomen auch?
Skript habe ich aus dem letzten Codeschnippsel Smartboart genommen und lediglich den Datenknoten Alarm in Alarmobjekte geändert.
! ````
! // -----------------------------------------------------------------------------
// allgemeine Variablen
// -----------------------------------------------------------------------------
var logging = true; // Logging on/off
var instanz = 'javascript.0'; instanz = instanz + '.Alarmobjekte'; //
! var pfad0 = 'Alarmobjekte.Pin.Disable.'; // Pfad innerhalb der Instanz
! // -----------------------------------------------------------------------------
// Variablen für Pin-Abfrage
// -----------------------------------------------------------------------------
var PinTast = ""; // Inhalt der Eingabe
var PinTemp =""; // Puffer für eingegebe Ziffern
var PinLae = 0; // Pin-Länge bei Eingabe
! var PinState = false ; // Eingabestatus - Eingabe beginnt nach Taste '#' und wird mit Taste '#' abgeschlossen
var PinFehl =false; // Statusflag für fehlerhafte Eingabe
var PinAnz = ""; // Angezeiger 'Displaytext' z.B. ****
! var PinSoll = 1111; // Pin die zur Deaktivierung der Alarmanlage benötigt wird
! // -----------------------------------------------------------------------------
// Objekte
// -----------------------------------------------------------------------------
! // Objekte für Pin-Eingabe
createState(pfad0 + 'PinSelect', "" , {name: 'Pin-Eingabe'});
createState(pfad0 + 'Pin', '0000' , {name: 'Pin'});
createState(pfad0 + 'PinFehler', false , {name: 'Pin-Fehler'});
createState(pfad0 + 'PinAnz', '' , {name: 'Pin-Anzeige'});
createState(pfad0 + 'VisKeyPad', '' , {name: 'State für Vis Keypad Sichtbar'}); //State für Vis Keypad Sichtbar wird von Button in Vis beschrieben und bei unscharf zurück gesetzt
! // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
! // #############################################################################
// # #
// # Pin-Abfrage #
// # #
// #############################################################################
! on('javascript.0.Alarmobjekte.Pin.Disable.PinSelect', function (dp) {
if (dp.newState.val === 0 || dp.newState.val === 1 || dp.newState.val === 2 || dp.newState.val === 3 || dp.newState.val === 4 || dp.newState.val === 5 || dp.newState.val === 6 || dp.newState.val === 7 || dp.newState.val === 8 || dp.newState.val === 9) {
PinTast = dp.newState.val;
PinEingabe();
}
if (dp.newState.val === 'E') {
PinPruef();
}
if (dp.newState.val === 'R') {
PinReset();
}
});
! function PinEingabe () {
PinTemp = (PinTemp + PinTast);
PinAnz = (PinAnz + '*');
setState('javascript.0.Alarmobjekte.Pin.Disable.PinAnz', PinAnz);
PinLae = (PinLae +1) ;
}
! function unscharf(){
setState('javascript.0.Alarmobjekte.in.disable', true);
setState('javascript.0.Alarmobjekte.Pin.Disable.VisKeyPad', false);
if(logging) log('Deaktivierung der Alarmanlage durch Pineingabe erfolgreich');
///////////////////////////////////////////////////// Hier musst du dann deinen Türöffner auf machen reinschreiben
}
! function PinPruef() {
if (PinTemp == PinSoll) {
if(logging) log('PinEingabe Disable erfolgreich');
unscharf();setTimeout(function() { PinReset(); }, 10 * 1000);
! } else {
if(logging) log('Pin Eingabe Disable falscher Pin');
setState('javascript.0.Alarmobjekte.Pin.Disable.PinFehler', true);
PinReset();
}
}
! function PinReset() {
PinLae=0;
PinAnz="";
PinTemp="";
setState('javascript.0.alarm.Pin.Disable.PinAnz', PinAnz);
} -
OK, hab's selbst gelöst.
Das Skript wird bei gleichem Wert schlicht weg nicht neu getriggert. Daher kommt die Zahl nie an.
setState('javascript.0.Alarmobjekte.Pin.Disable.PinSelect', '11');
Ich setze nach jeder Zahl das Feld auf eine zweistellige Zahl. Damit stell ich sicher, dass beim nächsten Drücken
der Wert auf jeden Fall gezogen wird.
Oder habt ihr bessere Ideen/Erklärungen.
-
Change any Dann wird auch bei gleichen Zahlen getriggert
Gesendet von meinem CLT-L09 mit Tapatalk
-
Wie gesagt habe es 2 mal am laufen . Ich beschreibe mit der pineingabe das state für disable und mit der 2. Pineingabe das state für stop..
Die button dafür aus der alarmanlage setzen den state aus dem pinpad welches ich für vis eingefügt habe…
Sobald also der button deaktiviern oder stop gedrückt wird , öffnet sich das pin pad .sobald der code richtig eingegeben wurd wird der state disable oder stop beschrieben und das pad verschwindet.
function unscharf(){
setState('javascript.0.alarm.in.disable', true);
setState('javascript.0.alarm.Pin.Disable.VisKeyPad', false);
if(logging) log('Deaktivierung der Alarmanlage durch Pineingabe erfolgreich');
Gesendet von meinem SM-G800F mit Tapatalk
![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201809 ... 0fd20f.jpg">https://uploads.tapatalk-cdn.com/20180908/ac0f04bfb882b922ff039b653a0fd20f.jpg</link_text>" />` ~~@smartboartWürdest du dein View incl widget auch hergeben :-)?
oder gar dein Projekt? :mrgreen:~~
-
Hallo, nein das kann ich leider nicht… Bei exportieren werden sämtliche persönliche Daten Passwörter IP zugangsdaten Pins und vieles mehr mitgenommen...eben alles was in den widgets hinterlegt ist... Das zu filtern ist zu viel Aufwand... Dafür habe ich keine Zeit... Und mit den Daten gebe ich nix raus... Sorry
Gesendet von meinem CLT-L09 mit Tapatalk
-
Hallo, nein das kann ich leider nicht… Bei exportieren werden sämtliche persönliche Daten Passwörter IP zugangsdaten Pins und vieles mehr mitgenommen...eben alles was in den widgets hinterlegt ist... Das zu filtern ist zu viel Aufwand... Dafür habe ich keine Zeit... Und mit den Daten gebe ich nix raus... Sorry
Gesendet von meinem CLT-L09 mit Tapatalk `
Und der anonymisierte Export funktioniert nicht?
-
@delfser said in Pincode Eingabe Alarmanlage:
Wie gesagt habe es 2 mal am laufen . Ich beschreibe mit der pineingabe das state für disable und mit der 2. Pineingabe das state für stop..
Die button dafür aus der alarmanlage setzen den state aus dem pinpad welches ich für vis eingefügt habe…
Sobald also der button deaktiviern oder stop gedrückt wird , öffnet sich das pin pad .sobald der code richtig eingegeben wurd wird der state disable oder stop beschrieben und das pad verschwindet.
function unscharf(){
setState('javascript.0.alarm.in.disable', true);
setState('javascript.0.alarm.Pin.Disable.VisKeyPad', false);
if(logging) log('Deaktivierung der Alarmanlage durch Pineingabe erfolgreich');
Gesendet von meinem SM-G800F mit Tapatalk
![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201809 ... 0fd20f.jpg">https://uploads.tapatalk-cdn.com/20180908/ac0f04bfb882b922ff039b653a0fd20f.jpg</link_text>" />` ~~@smartboartWürdest du dein View incl widget auch hergeben :-)?
oder gar dein Projekt? :mrgreen:~~
hui das schaut echt schön aus dein VIS Also da hätte ich auch Intresse dran. Aber beim Thema VIS bin ich noch nicht ganz angekommen. Bin aktuell noch mit Blockly sachen zu gange
-
-
Wie ist denn die Alarmausgabe bei euch realisiert?
Gibts auch was mit mit SIM Karte und sms verschicken? -
Telegram und bei Aktivierung "laut" Alarm auch auf Sonos
-
Danke für alle die an diesem Projekt gearbeitet haben.
Ich hätte noch eine Frage zur Pin-Eingabe, ist es möglich das man mehrere Codes abfragt?
Und natürlich hallo an alle ich bin voll dabei mich einzuarbeiten.
Liebe Grüße
Timo -
@sectorchan
Normale Benachrichtigungen und Statusmeldungen lasse ich mir per Telegram zuschicken.Für die Alarmanlage und andere sehr wichtige Infos nutze ich Pushover.
Bei Pushover kann man sich schön den Dark Mode einstellen und wenn man die Benachrichtigung auf "Priorität hoch" stellt, erscheinen die ganze dringenden Benachrichtigungen, wie z.B eine Fenster wurde grad geöffnet bei scharfer Alarmanlage, rot hinterlegt.Zusätzlich kannst du bei Pushover dir noch einen kurze oder auch langen eindringlichen Benachrichtigungston hinterlegen, was jetzt bei einem Auslösen der Alarmanlage super ist.
Also ich finde es mit Pushover für die Alarmanlage perfekt. -
@sectorchan ginge auch mit Asterisk eine gesprochene Nachricht an eine Rufnummer zu schicken.
-
Hi,
danke für den Quellcode. Ich habe ihn noch etwas erweitert.
Neue Funktion:- Auswahl Zwischen Pin aus der Variablen oder Quellcode
- Vorschau in der Vis von der eingegebenen Zahl, die dann aber wieder verschwindet nach ein paar Millisekunden
- Reaktion auf Taste "#" und "-" anstelle von "R" und "E"
- Nachricht in der VIS wenn der Pin Richtig oder Falsch war
// ----------------------------------------------------------------------------- // allgemeine Variablen // ----------------------------------------------------------------------------- var logging = true; // Logging on/off var instanz = 'javascript.0'; instanz = instanz + '.Alarm'; // var pfad0 = 'alarm.Pin.'; // Pfad innerhalb der Instanz // ----------------------------------------------------------------------------- // Variablen für Pin-Abfrage // ----------------------------------------------------------------------------- var PinTast = ""; // Inhalt der Eingabe var PinTemp =""; // Puffer für eingegebe Ziffern var PinLae = 0; // Pin-Länge bei Eingabe var PinState = false ; // Eingabestatus - Eingabe beginnt nach Taste '#' und wird mit Taste '#' abgeschlossen var PinFehl = false; // Statusflag für fehlerhafte Eingabe var PinAnz = ""; // Angezeiger 'Displaytext' z.B. **** var PinAnzStat = 0; // Status der PinAnzeige im Display (0-Ruhe | 1-Start [grau] | 2-richtig [gruen] | 3-falsch [rot]) var PinShowLastState = true ; // Zeigt die letzte eingegeben Zahl in der Variable VisKeyPad an z.B. ***4 diese Verschwindet automatisch nach einer gewissen zeit var PinShowLastStateDelay = 400 ; // Zeit in ms (Millisekunden) die die letzte eingebene Zahl angezeigt wird var PinSoll = getState(pfad0 + 'Pin').val; // Pin die zur Deaktivierung der Alarmanlage benötigt wird // var PinSoll = String("1111"); // Pin die zur Deaktivierung der Alarmanlage benötigt wird var PinUnlockMsg = "unlock" // Text der in PinAnz zu sehen ist wenn der Pin i.O. eingegeben wurde var PinFailureMsg = "failure" // Text der in PinAnz zu sehen ist wenn der Pin i.O. eingegeben wurde // ----------------------------------------------------------------------------- // Objekte // ----------------------------------------------------------------------------- // Objekte für Pin-Eingabe createState(pfad0 + 'disable', false , {name: 'Alarm abschalten'}); createState(pfad0 + 'PinSelect', "" , {name: 'Pin-Eingabe'}); createState(pfad0 + 'Pin', '0000' , {name: 'Pin'}); createState(pfad0 + 'PinFehler', false , {name: 'Pin-Fehler'}); createState(pfad0 + 'PinAnzStat', 1 , {name: 'PinAnzeigeStatus'}); createState(pfad0 + 'PinAnz', '' , {name: 'Pin-Anzeige'}); createState(pfad0 + 'VisKeyPad', '' , {name: 'State für Vis Keypad Sichtbar'}); //State für Vis Keypad Sichtbar wird von Button in Vis beschrieben und bei unscharf zurück gesetzt // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ // ############################################################################# // # # // # Pin-Abfrage # // # # // ############################################################################# on({id: 'javascript.0.alarm.Pin.PinSelect', change: "any"}, function (dp) { if (dp.state.val === 0 || dp.state.val === 1 || dp.state.val === 2 || dp.state.val === 3 || dp.state.val === 4 || dp.state.val === 5 || dp.state.val === 6 || dp.state.val === 7 || dp.state.val === 8 || dp.state.val === 9) { PinTast = dp.state.val; PinEingabe(); } if (dp.state.val === '#') { PinPruef(); } if (dp.state.val === '-') { PinReset(); } }); function PinEingabe () { PinTemp = (String(PinTemp) + String(PinTast)); setState('javascript.0.alarm.Pin.VisKeyPad', PinAnz + PinTast); PinAnz = String(PinAnz + '*'); // setState('javascript.0.alarm.Pin.PinAnz', PinAnz); timeout = setTimeout(async function () {setState('javascript.0.alarm.Pin.VisKeyPad', PinAnz); }, PinShowLastStateDelay); PinLae = (PinLae +1) ; } function unscharf(){ setState('javascript.0.alarm.Pin.PinAnzStat',1); setState('javascript.0.alarm.Pin.disable', true); setState('javascript.0.alarm.Pin.VisKeyPad', PinUnlockMsg); timeout_unscharf = setTimeout(async function () {setState('javascript.0.alarm.Pin.VisKeyPad', ""); }, 2000); if(logging) log('Deaktivierung / Pineingabe erfolgreich'); ///////////////////////////////////////////////////// Hier musst du dann deinen Türöffner auf machen reinschreiben } function PinPruef() { if (PinTemp == PinSoll) { if(logging) log('PinEingabe erfolgreich'); PinAnzStat = 1; unscharf(); // Resette den Pin nach 2 Sekunden setTimeout(function() { PinReset(); }, 2 * 1000); } else { if(logging) log('PinEingabe Fehler'); PinAnzStat = 2; setState('javascript.0.alarm.Pin.PinAnzStat', 2); setState('javascript.0.alarm.Pin.PinFehler', true); setState('javascript.0.alarm.Pin.disable', false); setState('javascript.0.alarm.Pin.VisKeyPad', PinFailureMsg); PinReset(); } } function PinReset() { if (PinTemp == PinSoll) { setState('javascript.0.alarm.Pin.VisKeyPad', ""); } else { timeout_pinpruef = setTimeout(async function () {setState('javascript.0.alarm.Pin.VisKeyPad', ""); }, 1000); } PinLae=0; PinAnzStat=2; PinAnz=""; PinTemp=""; setState('javascript.0.alarm.Pin.PinAnzStat', 2); setState('javascript.0.alarm.Pin.PinAnz', PinAnz); }
was noch kommt ... Maximale Falscheingabe des PIN, melde Objekt wenn zu oft falsch eingegeben wurde
VG