iobroker.alarm 2.1.0 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +17 -4
- package/admin/index_m.html +128 -71
- package/admin/words.js +83 -12
- package/io-package.json +84 -137
- package/main.js +125 -96
- package/package.json +3 -4
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2019-
|
|
3
|
+
Copyright (c) 2019-2022 misanorot <audi16v@gmx.de>
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
|
|
4
4
|
 [](https://www.npmjs.com/package/iobroker.alarm)
|
|
5
5
|
[](https://www.npmjs.com/package/iobroker.alarm)
|
|
6
|
-
[](https://david-dm.org/misanorot/iobroker.alarm)
|
|
7
6
|
[](https://snyk.io/test/github/misanorot/ioBroker.alarm)
|
|
8
7
|
|
|
9
8
|
[](https://nodei.co/npm/iobroker.alarm/)
|
|
@@ -32,9 +31,9 @@ Hier werden die Einstellungen wie die Zeiten der Nachtruhe, Sirenezeit, Stiller-
|
|
|
32
31
|
|
|
33
32
|
|
|
34
33
|
- Aktivierzeit -> Zeitverzögerung bis zu Aktivierung wenn man einen delay Datenpunkt benutzt
|
|
35
|
-
- Sirenenzeit bei Einbruch -> Bei Einbruch wird der Datenpunkt alarm.0.status.siren für die Zeit auf true gesetzt
|
|
34
|
+
- Sirenenzeit bei Einbruch -> Bei Einbruch wird der Datenpunkt alarm.0.status.siren / siren_inside für die Zeit auf true gesetzt
|
|
36
35
|
- Alarmverzögerung -> Verzögerungszeit bis Einbruch ausgelöst wird (während dieser Zeit wird der Stille Alarm ausgelöst)
|
|
37
|
-
|
|
36
|
+
|
|
38
37
|
|
|
39
38
|
----------------------------------------------------------------------------------------------------------------------
|
|
40
39
|
|
|
@@ -43,6 +42,8 @@ Hier werden die Einstellungen wie die Zeiten der Nachtruhe, Sirenezeit, Stiller-
|
|
|
43
42
|
Benachrichtigungen über Andere Adapter wie z. B. Telegramm, Email oder andere.
|
|
44
43
|
[Probleme](#Probleme)
|
|
45
44
|
|
|
45
|
+
Bei Benachrichtigungen an den Telegram Adapter, ist es möglich User- oder Chat IDs zu benutzen.
|
|
46
|
+
|
|
46
47
|
----------------------------------------------------------------------------------------------------------------------
|
|
47
48
|
|
|
48
49
|
### Tab Überwachung
|
|
@@ -152,6 +153,18 @@ Beinhaltet die Informationen für die "anderen" Alarmkreise 1 + 2.
|
|
|
152
153
|
|
|
153
154
|
## Changelog
|
|
154
155
|
|
|
156
|
+
#### 3.0.3 (31.01.2022)
|
|
157
|
+
* (misanorot) changed burgle concept, added silent alarm at sharp inside, fixed little issues
|
|
158
|
+
|
|
159
|
+
#### 2.2.1 (20.01.2022)
|
|
160
|
+
* (misanorot) added notification when warnings at beginning night rest
|
|
161
|
+
|
|
162
|
+
#### 2.2.0 (16.01.2022)
|
|
163
|
+
* (misanorot) added telegram special parameters
|
|
164
|
+
|
|
165
|
+
#### 2.1.1 (07.11.2021)
|
|
166
|
+
* (misanorot) added countdown state for silent alarm
|
|
167
|
+
|
|
155
168
|
#### 2.1.0 (11.10.2021)
|
|
156
169
|
* (misanorot) extend list states and speech output, added leave option
|
|
157
170
|
|
|
@@ -242,4 +255,4 @@ Beinhaltet die Informationen für die "anderen" Alarmkreise 1 + 2.
|
|
|
242
255
|
## License
|
|
243
256
|
MIT License
|
|
244
257
|
|
|
245
|
-
Copyright (c) 2019-
|
|
258
|
+
Copyright (c) 2019-2022 misanorot <audi16v@gmx.de>
|
package/admin/index_m.html
CHANGED
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
sayit = settings.sayit || [];
|
|
39
39
|
one = settings.one || [];
|
|
40
40
|
two = settings.two || [];
|
|
41
|
+
new_version = settings.version;
|
|
41
42
|
|
|
42
43
|
|
|
43
44
|
|
|
@@ -63,12 +64,15 @@
|
|
|
63
64
|
onChange(false);
|
|
64
65
|
// reinitialize all the Materialize labels on the page if you are dynamically adding inputs:
|
|
65
66
|
if (M) M.updateTextFields();
|
|
67
|
+
if (!new_version) {
|
|
68
|
+
version('', onChange);
|
|
69
|
+
}
|
|
66
70
|
$('.timepicker').timepicker({
|
|
67
71
|
"twelveHour":false
|
|
68
72
|
});
|
|
69
73
|
|
|
70
74
|
$('.tooltipped').tooltip();
|
|
71
|
-
|
|
75
|
+
telChanging();
|
|
72
76
|
values2table('circuits', circuits, onChange, tableOnReady);
|
|
73
77
|
leaving();
|
|
74
78
|
values2table('shorts_in', shorts_in, onChange, tableOnReady);
|
|
@@ -83,9 +87,9 @@
|
|
|
83
87
|
values2table('zone_five', zone_five, onChange, tableOnReady);
|
|
84
88
|
values2table('zone_six', zone_six, onChange, tableOnReady);
|
|
85
89
|
*/
|
|
86
|
-
$('#opt_leave').change(leaving);
|
|
87
|
-
|
|
88
90
|
|
|
91
|
+
$('#opt_leave').change(leaving);
|
|
92
|
+
$('#opt_telegram').change(telChanging);
|
|
89
93
|
$('.sendTo_Chips').chips({
|
|
90
94
|
placeholder: 'Add adapter',
|
|
91
95
|
secondaryPlaceholder: '+instance'
|
|
@@ -102,12 +106,11 @@
|
|
|
102
106
|
});
|
|
103
107
|
});
|
|
104
108
|
list2chips('.sendTo_Chips', settings.sendTo || '', onChange);
|
|
105
|
-
|
|
106
109
|
$('#sayit_help').on('click', ()=> {
|
|
107
110
|
showMessage('Bitte einen state auswählen, wo Sie sicher sind, dass dieser mit einem Text zur Sprachausgabe beschrieben werden kann! Als Beispiel sayit.0.tts.text. Als Optionen zur Ausgabe, stehen die unten stehenden Sätze mit der entsprechenden Nummer zu Verfügung.');
|
|
108
111
|
});
|
|
109
112
|
$('#circuits_help').on('click', ()=> {
|
|
110
|
-
showMessage('Alarmkreis => entspricht Vollschutz, Betreiber ist nicht Zuhause
|
|
113
|
+
showMessage('* Alarmkreis => entspricht Vollschutz, Betreiber ist nicht Zuhause <br>* Scharf innen => entspricht Aussenhautüberwachung, Betreiber ist anwesend <br>* Benachrichtigungen => Es werden Meldungen während scharf und scharf innen aussgegeben <br>* Stiller Alarm => Bei Aktivierung wird erst der Stille statt der richtige Alarm ausgelöst. <br>* negieren => triggert den State auf false <br>* verlassen => Bei Aktivierung über Countdown, wird dieser beendet und die Alarmanlage aktiviert');
|
|
111
114
|
});
|
|
112
115
|
$('#test_sayit').on('click', ()=>{
|
|
113
116
|
const tts_instance = table2values('sayit');
|
|
@@ -154,12 +157,21 @@
|
|
|
154
157
|
obj.zone_five = table2values('zone_five');
|
|
155
158
|
obj.zone_six = table2values('zone_six');*/
|
|
156
159
|
obj.states = states;
|
|
160
|
+
obj.version = new_version;
|
|
157
161
|
callback(obj);
|
|
158
162
|
}
|
|
159
163
|
//##############################################
|
|
160
164
|
|
|
161
165
|
//########### HELPERS ###########
|
|
162
166
|
|
|
167
|
+
function version(id, callback) {
|
|
168
|
+
if (id !== 'version_button') {
|
|
169
|
+
new_version = true;
|
|
170
|
+
callback();
|
|
171
|
+
}
|
|
172
|
+
showMessage('<b>Ab Version 3.x.x, habe ich mich dazu entschieden den Alarm auch bei scharf innen auszulösen! Das verändert die Funktion des Adapters ein wenig. Es wird jetzt zwischen Sirene intern und extern unterschieden, hierzu ist zu beachten, dass es den Datenpunkt info.sharp_inside_siren nicht mehr gibt. Diesen bitte ggf. manuell löschen! Der Datenpunkt wurde durch status.siren_inside ersetzt, und entspricht der Innensirene. Es ist zu beachten, dass das auch ggf. bei den Verknüpfungen neu einzustellen ist. Möchte man dies Aussensirene auch bei innen Alarm auslösen, kann man das in den allgemeinen Einstellungen tun. <br><br> DANKE FÜR DAS VERSTÄNDNIS, ABER ICH DENKE SO IST ES LOGISCHER!</b>');
|
|
173
|
+
}
|
|
174
|
+
|
|
163
175
|
function checkTrigger(val, id) {
|
|
164
176
|
if (val === 'status.state_list') {
|
|
165
177
|
$('#shorts .values-input[data-name="trigger_val"][data-index="' + id + '"] option[value=true]').prop('disabled',true);
|
|
@@ -187,10 +199,23 @@ function checkTrigger(val, id) {
|
|
|
187
199
|
$('select').select()
|
|
188
200
|
}
|
|
189
201
|
|
|
190
|
-
function
|
|
202
|
+
function telChanging() {
|
|
203
|
+
let check = document.getElementById('opt_telegram').checked;
|
|
204
|
+
if (check) {
|
|
205
|
+
$('#user').prop('disabled', false);
|
|
206
|
+
$('#chatID').prop('disabled', false);
|
|
207
|
+
$('#user').show();
|
|
208
|
+
$('#chatID').show();
|
|
209
|
+
} else {
|
|
210
|
+
$('#user').prop('disabled', true);
|
|
211
|
+
$('#chatID').prop('disabled', true);
|
|
212
|
+
$('#user').hide();
|
|
213
|
+
$('#chatID').hide();
|
|
214
|
+
}
|
|
215
|
+
}
|
|
191
216
|
|
|
217
|
+
function leaving() {
|
|
192
218
|
let check = document.getElementById('opt_leave').checked;
|
|
193
|
-
|
|
194
219
|
if (check) {
|
|
195
220
|
$('#circuits .table-values-div .table-values [data-name="leave"]').each(function() {
|
|
196
221
|
$(this).prop('disabled', false);
|
|
@@ -550,11 +575,26 @@ function getName(obj) {
|
|
|
550
575
|
|
|
551
576
|
<div id="tab_settings" class="col s12 page">
|
|
552
577
|
<div class="row">
|
|
578
|
+
<div class="col s12 m2">
|
|
553
579
|
<form action="https://www.paypal.com/donate" method="post" target="_top">
|
|
554
580
|
<input type="hidden" name="hosted_button_id" value="BXTYTYW3D5MRU" />
|
|
555
581
|
<input type="image" src="https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif" border="0" name="submit" title="PayPal - The safer, easier way to pay online!" alt="Donate with PayPal button" />
|
|
556
582
|
<img alt="" border="0" src="https://www.paypal.com/de_DE/i/scr/pixel.gif" width="1" height="1" />
|
|
557
583
|
</form>
|
|
584
|
+
</div>
|
|
585
|
+
<div class="col s12 m8">
|
|
586
|
+
<p class=" left translate">donat</p>
|
|
587
|
+
</div>
|
|
588
|
+
<div>
|
|
589
|
+
<a id="version_button" onclick="version(this.id)" class="pulse waves-effect waves-light btn">Version > 3</a>
|
|
590
|
+
</div>
|
|
591
|
+
</div>
|
|
592
|
+
<div class="row">
|
|
593
|
+
<div class="col s12">
|
|
594
|
+
<div class="card-panel">
|
|
595
|
+
<span class="blue-text text-darken-2 translate">alarm</span>
|
|
596
|
+
</div>
|
|
597
|
+
</div>
|
|
558
598
|
</div>
|
|
559
599
|
<div class="row">
|
|
560
600
|
<div class="input-field col s4 m2 l1">
|
|
@@ -587,36 +627,6 @@ function getName(obj) {
|
|
|
587
627
|
<option value="min">min</option>
|
|
588
628
|
</select>
|
|
589
629
|
</div>
|
|
590
|
-
<div class="input-field col s4 m2 l1">
|
|
591
|
-
<i class="material-icons prefix">alarm</i>
|
|
592
|
-
<input id="time_silent"
|
|
593
|
-
type="number"
|
|
594
|
-
class="validate value tooltipped"
|
|
595
|
-
data-position="top"
|
|
596
|
-
data-tooltip="in sec">
|
|
597
|
-
<label for="time_silent" class="translate">time_silent</label>
|
|
598
|
-
</div>
|
|
599
|
-
<div class="input-field col s2 m1 l1">
|
|
600
|
-
<select id="time_silent_select" class="value">
|
|
601
|
-
<option value="sec">sec</option>
|
|
602
|
-
<option value="min">min</option>
|
|
603
|
-
</select>
|
|
604
|
-
</div>
|
|
605
|
-
<div class="input-field col s4 m2 l1">
|
|
606
|
-
<i class="material-icons prefix">alarm</i>
|
|
607
|
-
<input id="time_warning"
|
|
608
|
-
type="number"
|
|
609
|
-
class="validate value tooltipped"
|
|
610
|
-
data-position="top"
|
|
611
|
-
data-tooltip="in sec">
|
|
612
|
-
<label for="time_warning" class="translate">time_warning</label>
|
|
613
|
-
</div>
|
|
614
|
-
<div class="input-field col s2 m1 l1">
|
|
615
|
-
<select id="time_warning_select" class="value">
|
|
616
|
-
<option value="sec">sec</option>
|
|
617
|
-
<option value="min">min</option>
|
|
618
|
-
</select>
|
|
619
|
-
</div>
|
|
620
630
|
<div class="input-field col s6 m3 l2">
|
|
621
631
|
<i class="material-icons prefix">alarm</i>
|
|
622
632
|
<input id="alarm_flash"
|
|
@@ -626,14 +636,36 @@ function getName(obj) {
|
|
|
626
636
|
data-tooltip="in sec">
|
|
627
637
|
<label for="alarm_flash" class="translate">alarm_flash</label>
|
|
628
638
|
</div>
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
639
|
+
</div>
|
|
640
|
+
<div class="row">
|
|
641
|
+
<div class="col s12">
|
|
642
|
+
<div class="card-panel">
|
|
643
|
+
<span class="blue-text text-darken-2 translate">inside</span>
|
|
644
|
+
</div>
|
|
645
|
+
</div>
|
|
646
|
+
</div>
|
|
647
|
+
<div class="row">
|
|
648
|
+
<div class="input-field col s4 m2 l1">
|
|
649
|
+
<i class="material-icons prefix">alarm</i>
|
|
650
|
+
<input id="time_warning"
|
|
651
|
+
type="number"
|
|
652
|
+
class="validate value tooltipped"
|
|
653
|
+
data-position="top"
|
|
654
|
+
data-tooltip="in sec">
|
|
655
|
+
<label for="time_warning" class="translate">time_warning</label>
|
|
656
|
+
</div>
|
|
657
|
+
<div class="input-field col s2 m1 l1">
|
|
658
|
+
<select id="time_warning_select" class="value">
|
|
659
|
+
<option value="sec">sec</option>
|
|
660
|
+
<option value="min">min</option>
|
|
661
|
+
</select>
|
|
662
|
+
</div>
|
|
663
|
+
</div>
|
|
664
|
+
<div class="row">
|
|
665
|
+
<div class="col s12">
|
|
666
|
+
<div class="card-panel">
|
|
667
|
+
<span class="blue-text text-darken-2 translate">general_settings</span>
|
|
668
|
+
</div>
|
|
637
669
|
</div>
|
|
638
670
|
</div>
|
|
639
671
|
<div class="row">
|
|
@@ -653,6 +685,32 @@ function getName(obj) {
|
|
|
653
685
|
</div>
|
|
654
686
|
</div>
|
|
655
687
|
<div class="row">
|
|
688
|
+
<div class="input-field col s4 m2 l1">
|
|
689
|
+
<i class="material-icons prefix">alarm</i>
|
|
690
|
+
<input id="time_silent"
|
|
691
|
+
type="number"
|
|
692
|
+
class="validate value tooltipped"
|
|
693
|
+
data-position="top"
|
|
694
|
+
data-tooltip="in sec">
|
|
695
|
+
<label for="time_silent" class="translate">time_silent</label>
|
|
696
|
+
</div>
|
|
697
|
+
<div class="input-field col s2 m1 l1">
|
|
698
|
+
<select id="time_silent_select" class="value">
|
|
699
|
+
<option value="sec">sec</option>
|
|
700
|
+
<option value="min">min</option>
|
|
701
|
+
</select>
|
|
702
|
+
</div>
|
|
703
|
+
<div class="input-field col s6 m3 l2">
|
|
704
|
+
<i class="material-icons prefix">alarm</i>
|
|
705
|
+
<input id="silent_flash"
|
|
706
|
+
type="number"
|
|
707
|
+
class="validate value tooltipped"
|
|
708
|
+
data-position="top"
|
|
709
|
+
data-tooltip="in sec">
|
|
710
|
+
<label for="silent_flash" class="translate">silent_flash</label>
|
|
711
|
+
</div>
|
|
712
|
+
</div>
|
|
713
|
+
<div class="row">
|
|
656
714
|
<!--
|
|
657
715
|
<div class="col s12">
|
|
658
716
|
<input type="checkbox" id="opt_night" class="value" /><label for="opt_night" class="translate">opt_night</label>
|
|
@@ -665,7 +723,7 @@ function getName(obj) {
|
|
|
665
723
|
<input type="checkbox" id="opt_warning" class="value" /><label for="opt_warning" class="translate">opt_warning</label>
|
|
666
724
|
</div>
|
|
667
725
|
<div class="col s12 m4 l2">
|
|
668
|
-
<input type="checkbox" id="
|
|
726
|
+
<input type="checkbox" id="opt_siren" class="value" /><label for="opt_siren" class="translate">opt_siren</label>
|
|
669
727
|
</div>
|
|
670
728
|
<div class="col s12 m4 l2">
|
|
671
729
|
<input type="checkbox" id="opt_leave" class="value" /><label for="opt_leave" class="translate">opt_leave</label>
|
|
@@ -689,6 +747,19 @@ function getName(obj) {
|
|
|
689
747
|
<div class="chips sendTo_Chips"></div>
|
|
690
748
|
</div>
|
|
691
749
|
</div>
|
|
750
|
+
<div class="row">
|
|
751
|
+
<div class="col s12 m4 l2">
|
|
752
|
+
<input type="checkbox" id="opt_telegram" class="value" /><label for="opt_telegram" class="translate">opt_telegram</label>
|
|
753
|
+
</div>
|
|
754
|
+
<div class="input-field col s6 m4 l2">
|
|
755
|
+
<input id="chatID" type="text" class="validate value">
|
|
756
|
+
<label for="chatID">chatID</label>
|
|
757
|
+
</div>
|
|
758
|
+
<div class="input-field col s6 m4 l2">
|
|
759
|
+
<input id="user" type="text" class="validate value">
|
|
760
|
+
<label for="user">user</label>
|
|
761
|
+
</div>
|
|
762
|
+
</div>
|
|
692
763
|
<div class="row">
|
|
693
764
|
<div class="col s12">
|
|
694
765
|
<div class="card-panel">
|
|
@@ -733,6 +804,9 @@ function getName(obj) {
|
|
|
733
804
|
<div class="col s12 m6 l4">
|
|
734
805
|
<input type="checkbox" id="send_activation_warnings_inside" class="value" /><label for="send_activation_warnings_inside" class="translate">send_activation_warnings</label>
|
|
735
806
|
</div>
|
|
807
|
+
<div class="col s12 m6 l4">
|
|
808
|
+
<input type="checkbox" id="send_alarm_silent_inside" class="value" /><label for="send_alarm_silent_inside" class="translate">send_alarm_silent</label>
|
|
809
|
+
</div>
|
|
736
810
|
</div>
|
|
737
811
|
<div class="row">
|
|
738
812
|
<div class="col s12">
|
|
@@ -745,6 +819,9 @@ function getName(obj) {
|
|
|
745
819
|
<div class="col s12 m6 l4">
|
|
746
820
|
<input type="checkbox" id="send_notification_changes" class="value" /><label for="send_notification_changes" class="translate">send_notification_changes</label>
|
|
747
821
|
</div>
|
|
822
|
+
<div class="col s12 m6 l4">
|
|
823
|
+
<input type="checkbox" id="send_activation_warnings_night" class="value" /><label for="send_activation_warnings_night" class="translate">send_activation_warnings_night</label>
|
|
824
|
+
</div>
|
|
748
825
|
</div>
|
|
749
826
|
<div class="row">
|
|
750
827
|
<div class="col s12">
|
|
@@ -779,7 +856,7 @@ function getName(obj) {
|
|
|
779
856
|
<a class="btn-floating waves-effect waves-light blue table-button-add" id="circuits_table"><i class="material-icons">add</i></a>
|
|
780
857
|
</div>
|
|
781
858
|
<div class="col s2 m1 l1 right">
|
|
782
|
-
<a class="btn-floating waves-effect waves-light blue" id="circuits_help"><i class="material-icons">help_center</i></a>
|
|
859
|
+
<a class="btn-floating pulse waves-effect waves-light blue" id="circuits_help"><i class="material-icons">help_center</i></a>
|
|
783
860
|
</div>
|
|
784
861
|
</div>
|
|
785
862
|
<div class="table-values-div">
|
|
@@ -792,10 +869,11 @@ function getName(obj) {
|
|
|
792
869
|
<th data-buttons="edit" style="width: 40px" class="header"></th>
|
|
793
870
|
<th data-name="negativ" style="width: 100px" data-type="checkbox" class="header translate">negativ</th>
|
|
794
871
|
<th data-name="alarm" style="width: 100px" data-type="checkbox" class="header translate">alarm</th>
|
|
795
|
-
<th data-name="warning" style="width: 100px" data-type="checkbox" class="header translate">inside</th>
|
|
796
|
-
<th data-name="night" style="width: 130px" data-type="checkbox" class="header translate">notification</th>
|
|
797
872
|
<th data-name="delay" style="width: 100px" data-type="checkbox" class="header translate">delay</th>
|
|
798
873
|
<th data-name="leave" style="width: 100px" data-type="checkbox" class="header translate">leave</th>
|
|
874
|
+
<th data-name="warning" style="width: 100px" data-type="checkbox" class="header translate">inside</th>
|
|
875
|
+
<th data-name="delay_inside" style="width: 100px" data-type="checkbox" class="header translate">delay_inside</th>
|
|
876
|
+
<th data-name="night" style="width: 130px" data-type="checkbox" class="header translate">notification</th>
|
|
799
877
|
<th data-buttons="delete" style="width: 40px" class="header"></th>
|
|
800
878
|
</tr>
|
|
801
879
|
</thead>
|
|
@@ -878,27 +956,6 @@ function getName(obj) {
|
|
|
878
956
|
<textarea id="text_warning" class="materialize-textarea value"></textarea>
|
|
879
957
|
<label for="text_warning" class="translate">text_warning</label>
|
|
880
958
|
</div>
|
|
881
|
-
<div class="input-field col s9 m4 l3">
|
|
882
|
-
<i class="material-icons prefix">filter_5</i>
|
|
883
|
-
<textarea id="text_changes" class="materialize-textarea value"></textarea>
|
|
884
|
-
<label for="text_changes" class="translate">text_changes</label>
|
|
885
|
-
</div>
|
|
886
|
-
<div class="input-field col s3 m2 l1">
|
|
887
|
-
<select id="changes_repeat" class="value">
|
|
888
|
-
<option value="1">1x</option>
|
|
889
|
-
<option value="2">2x</option>
|
|
890
|
-
<option value="3">3x</option>
|
|
891
|
-
<option value="4">4x</option>
|
|
892
|
-
<option value="5">5x</option>
|
|
893
|
-
<option value="6">6x</option>
|
|
894
|
-
<option value="7">7x</option>
|
|
895
|
-
<option value="8">8x</option>
|
|
896
|
-
<option value="9">9x</option>
|
|
897
|
-
<option value="10">10x</option>
|
|
898
|
-
<option value="15">15x</option>
|
|
899
|
-
<option value="20">20x</option>
|
|
900
|
-
</select>
|
|
901
|
-
</div>
|
|
902
959
|
<div class="input-field col s9 m4 l3">
|
|
903
960
|
<i class="material-icons prefix">filter_6</i>
|
|
904
961
|
<textarea id="text_alarm" class="materialize-textarea value"></textarea>
|
|
@@ -985,7 +1042,7 @@ function getName(obj) {
|
|
|
985
1042
|
<thead>
|
|
986
1043
|
<tr>
|
|
987
1044
|
<th data-name="enabled" style="width: 50px" data-type="checkbox" class="header translate">active</th>
|
|
988
|
-
<th data-name="select_id" data-type="select" data-options="status.state_list;status.activated;status.gets_activated;status.deactivated;status.burglar_alarm;status.silent_alarm;status.siren;status.activation_failed;status.sleep;status.activated_with_warnings;status.enableable;status.sharp_inside_activated;
|
|
1045
|
+
<th data-name="select_id" data-type="select" data-options="status.state_list;status.activated;status.gets_activated;status.deactivated;status.burglar_alarm;status.silent_alarm;status.siren;status.activation_failed;status.sleep;status.activated_with_warnings;status.enableable;status.sharp_inside_activated;status.siren_inside;info.notification_circuit_changes;status.alarm_flash;status.silent_flash;other_alarms.one_changes;other_alarms.two_changes" class="header translate">Name</th>
|
|
989
1046
|
<th data-name="trigger_val" data-type="select" data-options=" ;true;false;deactivated;sharp;sharp_inside;burglary;night_rest;gets_activated;activation_failed;activation_aborted" class="header translate">Trigger</th>
|
|
990
1047
|
<th data-name="name" data-type="text" class="header translate">Name</th>
|
|
991
1048
|
<th data-name="name_id" data-type="text" class="header translate">Object-ID</th>
|
package/admin/words.js
CHANGED
|
@@ -32,8 +32,39 @@ systemDictionary = {
|
|
|
32
32
|
'es': 'alarma silenciosa',
|
|
33
33
|
'pl': 'cichy alarm',
|
|
34
34
|
'zh-cn': '静音警报'},
|
|
35
|
+
'delay_inside': {
|
|
36
|
+
'en': 'silent alarm sharp inside',
|
|
37
|
+
'de': 'Stiller Alarm scharf innen',
|
|
38
|
+
'ru': 'тихая тревога острая внутри',
|
|
39
|
+
'pt': 'alarme silencioso afiado por dentro',
|
|
40
|
+
'nl': 'stil alarm scherp van binnen',
|
|
41
|
+
'fr': "alarme silencieuse à l'intérieur",
|
|
42
|
+
'it': "allarme silenzioso acuto all'interno",
|
|
43
|
+
'es': 'alarma silenciosa aguda en el interior',
|
|
44
|
+
'pl': 'cichy alarm ostry w środku',
|
|
45
|
+
'zh-cn': '静音报警尖锐内部'},
|
|
35
46
|
'disabled': { 'en': 'disabled', 'de': 'deaktiviert', 'ru': 'отключен', 'pt': 'Desativado', 'nl': 'invalide', 'fr': 'désactivée', 'it': 'Disabilitato', 'es': 'discapacitado', 'pl': 'wyłączone', 'zh-cn': '残'},
|
|
47
|
+
'donat': {'en': "I'm not a professional developer and this is a private project, the development takes place in my spare time, if you want to support this you can thank me with a donation under PayPal. You are also welcome to send me feature requests for future versions of the adapter.",
|
|
48
|
+
'de': 'Ich bin kein professioneller Entwickler und dies ist ein privates Projekt, die Entwicklung findet in meiner Freizeit statt, wenn Sie dies unterstützen möchten, können Sie sich mit einer Spende unter PayPal bei mir bedanken. Sie können mir auch gerne Funktionsanfragen für zukünftige Versionen des Adapters senden.',
|
|
49
|
+
'ru': 'Я не профессиональный разработчик, и это частный проект, разработка происходит в свободное время, если вы хотите поддержать это, вы можете отблагодарить меня пожертвованием через PayPal. Вы также можете присылать мне запросы функций для будущих версий адаптера.',
|
|
50
|
+
'pt': 'Eu não sou um desenvolvedor profissional e este é um projeto privado, o desenvolvimento ocorre no meu tempo livre, se você quiser apoiar isso, pode me agradecer com uma doação no PayPal. Você também pode me enviar solicitações de recursos para versões futuras do adaptador.',
|
|
51
|
+
'nl': 'Ik ben geen professionele ontwikkelaar en dit is een privé project, de ontwikkeling vindt plaats in mijn vrije tijd, als je dit wilt steunen kun je me bedanken met een donatie onder PayPal. U bent ook welkom om mij functieverzoeken te sturen voor toekomstige versies van de adapter.',
|
|
52
|
+
'fr': "Je ne suis pas un développeur professionnel et c'est un projet privé, le développement a lieu sur mon temps libre, si vous voulez soutenir cela vous pouvez me remercier avec un don sous PayPal. Vous pouvez également m'envoyer des demandes de fonctionnalités pour les futures versions de l'adaptateur.",
|
|
53
|
+
'it': "Non sono uno sviluppatore professionista e questo è un progetto privato, lo sviluppo avviene nel mio tempo libero, se vuoi supportarlo puoi ringraziarmi con una donazione sotto PayPal. Puoi anche inviarmi richieste di funzionalità per versioni future dell'adattatore.",
|
|
54
|
+
'es': 'No soy un desarrollador profesional y este es un proyecto privado, el desarrollo se lleva a cabo en mi tiempo libre, si quieres apoyar esto puedes agradecerme con una donación a través de PayPal. También puede enviarme solicitudes de funciones para futuras versiones del adaptador.',
|
|
55
|
+
'pl': 'Nie jestem profesjonalnym programistą i jest to projekt prywatny, rozwój odbywa się w wolnym czasie, jeśli chcesz to wesprzeć, możesz mi podziękować darowizną w systemie PayPal. Zapraszam również do przesyłania mi próśb o funkcje dla przyszłych wersji adaptera.',
|
|
56
|
+
'zh-cn': '我不是专业开发人员,这是一个私人项目,开发是在我的业余时间进行的,如果你想支持这个,你可以通过 PayPal 捐款来感谢我。也欢迎您向我发送有关适配器未来版本的功能请求。'},
|
|
36
57
|
'general': { 'en': 'Main settings', 'de': 'Haupteinstellungen', 'ru': 'Основные параметры', 'pt': 'Configurações principais', 'nl': 'Belangrijkste instellingen', 'fr': 'Réglages principaux', 'it': 'Impostazioni principali', 'es': 'Ajustes principales', 'pl': 'Ustawienia główne', 'zh-cn': '主要设置'},
|
|
58
|
+
'general_settings': { 'en': 'general settings',
|
|
59
|
+
'de': 'Allgemeine Einstellungen',
|
|
60
|
+
'ru': 'общие настройки',
|
|
61
|
+
'pt': 'Configurações Gerais',
|
|
62
|
+
'nl': 'Algemene instellingen',
|
|
63
|
+
'fr': 'réglages généraux',
|
|
64
|
+
'it': 'impostazioni generali',
|
|
65
|
+
'es': 'Configuración general',
|
|
66
|
+
'pl': 'Ustawienia główne',
|
|
67
|
+
'zh-cn': '常规设置'},
|
|
37
68
|
'important': { 'en': 'Important! Do not create loops.', 'de': 'Wichtig! Erstellen Sie keine Schleifen.', 'ru': 'Важный! Не создавайте петли.', 'pt': 'Importante! Não crie loops.', 'nl': 'Belangrijk! Maak geen lussen.', 'fr': 'Important! Ne créez pas de boucles.', 'it': 'Importante! Non creare loop.', 'es': '¡Importante! No cree bucles.', 'pl': 'Ważny! Nie twórz pętli.', 'zh-cn': '重要!不要创建循环。'},
|
|
38
69
|
'input': { 'en': 'Input shortcuts', 'de': 'Eingabeverknüpfungen', 'ru': 'Входные ярлыки', 'pt': 'Atalhos de entrada', 'nl': 'Sneltoetsen invoeren', 'fr': "Raccourcis d'entrée", 'it': 'Scorciatoie di input', 'es': 'Atajos de entrada', 'pl': 'Skróty wprowadzania', 'zh-cn': '输入快捷键'},
|
|
39
70
|
'info_words': { 'en': 'You can edit the notifications at words tab', 'de': 'Texte der Benachrichtigungen können auf der Registerkarte Texte bearbeitet werden', 'ru': 'Вы можете редактировать уведомления на вкладке слов', 'pt': 'Você pode editar as notificações na guia palavras', 'nl': 'Je kunt de meldingen bewerken op het tabblad Woorden', 'fr': "Vous pouvez modifier les notifications dans l'onglet mots", 'it': 'Puoi modificare le notifiche nella scheda parole', 'es': 'Puedes editar las notificaciones en la pestaña de palabras', 'pl': 'Możesz edytować powiadomienia na karcie słów', 'zh-cn': '您可以在单词选项卡上编辑通知'},
|
|
@@ -89,7 +120,16 @@ systemDictionary = {
|
|
|
89
120
|
'night_Chips': { 'en': 'States for night rest circuit', 'de': 'Zustände für die Nachtruhe', 'ru': 'Штаты для ночного отдыха', 'pt': 'Estados para circuito de descanso noturno', 'nl': 'Staten voor nachtrustcircuit', 'fr': 'États pour circuit de nuit', 'it': 'Stati per il circuito di riposo notturno', 'es': 'Estados para el circuito de descanso nocturno.', 'pl': 'Stany na nocny obwód odpoczynku', 'zh-cn': '国家为夜间休息电路'},
|
|
90
121
|
'night_from': { 'en': 'Begins of the night rest', 'de': 'Beginn der Nachtruhe', 'ru': 'Начинается ночной отдых', 'pt': 'Começa do resto da noite', 'nl': 'Begin van de nachtrust', 'fr': 'Commence la nuit repos', 'it': 'Inizia il riposo notturno', 'es': 'Comienzo del descanso nocturno.', 'pl': 'Zaczyna się nocny odpoczynek', 'zh-cn': '开始的夜晚休息'},
|
|
91
122
|
'night_to': { 'en': 'Ends of the night rest', 'de': 'Ende der Nachtruhe', 'ru': 'Концы ночного отдыха', 'pt': 'Termina do resto da noite', 'nl': 'Einde van de nachtrust', 'fr': 'Fin de la nuit repos', 'it': 'Fine del riposo notturno', 'es': 'Finales del descanso nocturno.', 'pl': 'Koniec nocnego odpoczynku', 'zh-cn': '晚上休息'},
|
|
92
|
-
'notification': {
|
|
123
|
+
'notification': {'en': 'notifications (include night rest)',
|
|
124
|
+
'de': 'Benachrichtigungen (einschließlich Nachtruhe)',
|
|
125
|
+
'ru': 'уведомления (включая ночной отдых)',
|
|
126
|
+
'pt': 'notificações (incluindo descanso noturno)',
|
|
127
|
+
'nl': 'notificaties (inclusief nachtrust)',
|
|
128
|
+
'fr': 'notifications (y compris le repos nocturne)',
|
|
129
|
+
'it': 'notifiche (incluso riposo notturno)',
|
|
130
|
+
'es': 'notificaciones (incluye descanso nocturno)',
|
|
131
|
+
'pl': 'powiadomienia (w tym odpoczynek nocny)',
|
|
132
|
+
'zh-cn': '通知(包括夜间休息)'},
|
|
93
133
|
'notifications': { 'en': 'Notifications', 'de': 'Benachrichtigungen', 'ru': 'Уведомления', 'pt': 'Notificações', 'nl': 'Kennisgevingen', 'fr': 'Notifications', 'it': 'notifiche', 'es': 'Notificaciones', 'pl': 'Powiadomienia', 'zh-cn': '通知事项'},
|
|
94
134
|
'opt_leave': { 'en': 'activation at leaving during countdown',
|
|
95
135
|
'de': 'Aktivierung beim Verlassen während des Countdowns',
|
|
@@ -101,16 +141,16 @@ systemDictionary = {
|
|
|
101
141
|
'es': 'activación al salir durante la cuenta atrás',
|
|
102
142
|
'pl': 'aktywacja przy wyjściu podczas odliczania',
|
|
103
143
|
'zh-cn': '倒计时离开时激活' },
|
|
104
|
-
'
|
|
105
|
-
'de': '
|
|
106
|
-
'ru': '
|
|
107
|
-
'pt': '
|
|
108
|
-
'nl': '
|
|
109
|
-
'fr': "
|
|
110
|
-
'it': "
|
|
111
|
-
'es': '
|
|
112
|
-
'pl': '
|
|
113
|
-
'zh-cn': '
|
|
144
|
+
'opt_siren': { 'en': 'activate outside siren at burgle sharp inside',
|
|
145
|
+
'de': 'Außensirene bei Einbruch scharf innen aktivieren',
|
|
146
|
+
'ru': 'активировать внешнюю сирену при взломе резко внутри',
|
|
147
|
+
'pt': 'ativar a sirene externa em arrombamento afiado por dentro',
|
|
148
|
+
'nl': 'activeer buitensirene bij inbraak scherp binnen',
|
|
149
|
+
'fr': "activer la sirène extérieure en cas d'effraction à l'intérieur",
|
|
150
|
+
'it': "attivare la sirena esterna in caso di scasso acuto all'interno",
|
|
151
|
+
'es': 'activar la sirena exterior en caso de robo agudo en el interior',
|
|
152
|
+
'pl': 'aktywuj syrenę zewnętrzną podczas włamywania się do środka',
|
|
153
|
+
'zh-cn': '内部爆破时激活外部警报器' },
|
|
114
154
|
'opt_log': { 'en': 'Log output', 'de': 'Ausgabe protokollieren', 'ru': 'Выход журнала', 'pt': 'Saída de log', 'nl': 'Log output', 'fr': 'Journal de sortie', 'it': "Registrare l'output", 'es': 'Salida de registro', 'pl': 'Wynik dziennika', 'zh-cn': '记录输出'},
|
|
115
155
|
'opt_night': { 'en': 'Control configured states during night rest', 'de': 'Konfigurierte Zustände während der Nachtruhe überwachen', 'ru': 'Контроль настроенных состояний во время ночного отдыха', 'pt': 'Controle configurado estados durante o resto da noite', 'nl': 'Controleer geconfigureerde staten tijdens nachtrust', 'fr': 'Contrôler les états configurés pendant le repos de nuit', 'it': 'Controllare gli stati configurati durante il riposo notturno', 'es': 'Control de estados configurados durante el descanso nocturno.', 'pl': 'Kontroluj skonfigurowane stany podczas nocnego odpoczynku', 'zh-cn': '在夜间休息期间控制配置状态'},
|
|
116
156
|
'opt_night_silent': {'en': 'no speech output during night rest',
|
|
@@ -128,6 +168,17 @@ systemDictionary = {
|
|
|
128
168
|
'opt_say_night': { 'en': "Warnings at the beginning of the night's rest", 'de': 'Warnungen zu Beginn der Nachtruhe', 'ru': 'Предупреждения в начале ночного отдыха', 'pt': 'Advertências no início do resto da noite', 'nl': 'Waarschuwingen aan het begin van de nachtrust', 'fr': 'Avertissements au début du repos nocturne', 'it': "Avvertenze all'inizio del riposo notturno", 'es': 'Advertencias al comienzo del descanso nocturno.', 'pl': 'Ostrzeżenia na początku nocnego odpoczynku', 'zh-cn': '夜间休息开始时的警告'},
|
|
129
169
|
'opt_say_warn': { 'en': 'Warnings at the beginning of the warn circuit activate', 'de': 'Warnungen zu Beginn der Warnkreis Aktivierung', 'ru': 'Предупреждения в начале ночного отдыха', 'pt': 'Advertências no início do resto da noite', 'nl': 'Waarschuwingen aan het begin van de nachtrust', 'fr': 'Avertissements au début du repos nocturne', 'it': "Avvertenze all'inizio del riposo notturno", 'es': 'Advertencias al comienzo del descanso nocturno.', 'pl': 'Ostrzeżenia na początku nocnego odpoczynku', 'zh-cn': '夜间休息开始时的警告'},
|
|
130
170
|
'opt_say_warn_changes': { 'en': 'Changes during sharp inside', 'de': 'Veränderungen während SCHARF INTERN', 'ru': 'Изменения во время ночного отдыха и резких внутри', 'pt': 'Alterações durante o descanso noturno e nítidas por dentro', 'nl': 'Veranderingen tijdens nachtrust en scherp van binnen', 'fr': 'Changements pendant le repos nocturne et intérieur vif', 'it': "Cambiamenti durante il riposo notturno e taglienti all'interno", 'es': 'Cambios durante el descanso nocturno y agudo por dentro', 'pl': 'Zmiany podczas nocnego odpoczynku i ostre wnętrze', 'zh-cn': '夜间休息时变化多端,内部锐利'},
|
|
171
|
+
'opt_telegram': {'en': 'special parameters for Telegram',
|
|
172
|
+
'de': 'spezielle Parameter für Telegram',
|
|
173
|
+
'ru': 'специальные параметры для Telegram',
|
|
174
|
+
'pt': 'parâmetros especiais para Telegram',
|
|
175
|
+
'nl': 'speciale parameters voor Telegram',
|
|
176
|
+
'fr': 'paramètres spéciaux pour Telegram',
|
|
177
|
+
'it': 'parametri speciali per Telegram',
|
|
178
|
+
'es': 'parámetros especiales para Telegram',
|
|
179
|
+
'pl': 'specjalne parametry dla Telegrama',
|
|
180
|
+
'zh-cn': '电报的特殊参数'},
|
|
181
|
+
|
|
131
182
|
'opt_warning': { 'en': 'Ignore configured states at activation', 'de': 'Konfigurierte Zustände bei der Aktivierung ignorieren', 'ru': 'Игнорировать настроенные состояния предупреждения при активации', 'pt': 'Ignore os estados de aviso configurados na ativação', 'nl': 'Negeer geconfigureerde waarschuwingsstatussen bij activering', 'fr': "Ignorer les états d'avertissement configurés lors de l'activation", 'it': "Ignora gli stati di avviso configurati all'attivazione", 'es': 'Ignorar los estados de advertencia configurados en la activación', 'pl': 'Zignoruj skonfigurowane stany ostrzeżeń przy aktywacji', 'zh-cn': '激活时忽略已配置的警告状态'},
|
|
132
183
|
'other_alarms': {'en': 'other alarms',
|
|
133
184
|
'de': 'andere Alarme',
|
|
@@ -187,7 +238,7 @@ systemDictionary = {
|
|
|
187
238
|
'pl': 'Aktywowany z ostrzeżeniami',
|
|
188
239
|
'zh-cn': '警告激活'},
|
|
189
240
|
'send_activation_warnings': { 'en': 'Notification if warnings upon activation',
|
|
190
|
-
'de': 'Benachrichtigung
|
|
241
|
+
'de': 'Benachrichtigung falls Warnungen bei Aktivierung',
|
|
191
242
|
'ru': 'Уведомление, если предупреждения при активации',
|
|
192
243
|
'pt': 'Notificação se houver avisos na ativação',
|
|
193
244
|
'nl': 'Melding als waarschuwingen bij activering',
|
|
@@ -196,6 +247,16 @@ systemDictionary = {
|
|
|
196
247
|
'es': 'Notificación de advertencias sobre la activación',
|
|
197
248
|
'pl': 'Powiadomienie o ostrzeżeniach po aktywacji',
|
|
198
249
|
'zh-cn': '激活时发出警告通知'},
|
|
250
|
+
'send_activation_warnings_night': {'en': 'notification when warnings at beginning night rest',
|
|
251
|
+
'de': 'Benachrichtigung bei Warnungen zu Beginn der Nachtruhe',
|
|
252
|
+
'ru': 'уведомление при предупреждениях о начале ночного отдыха',
|
|
253
|
+
'pt': 'notificação quando avisos no início do descanso noturno',
|
|
254
|
+
'nl': 'melding bij waarschuwingen bij het begin van de nachtrust',
|
|
255
|
+
'fr': 'notification lors des avertissements au début du repos nocturne',
|
|
256
|
+
'it': "notifica quando avvisi all'inizio del riposo notturno",
|
|
257
|
+
'es': 'notificación cuando avisos al inicio del descanso nocturno',
|
|
258
|
+
'pl': 'powiadomienie o ostrzeżeniach na początku odpoczynku nocnego',
|
|
259
|
+
'zh-cn': '在开始夜间休息时发出警告时的通知' },
|
|
199
260
|
'send_failed': {
|
|
200
261
|
'en': 'wrong password',
|
|
201
262
|
'de': 'falsches Passwort',
|
|
@@ -254,6 +315,16 @@ systemDictionary = {
|
|
|
254
315
|
'time_activate': { 'en': 'Activation time', 'de': 'Aktivierungszeit', 'ru': 'Время активации', 'pt': 'Tempo de ativação', 'nl': 'Activeringstijd', 'fr': "Temps d'activation", 'it': 'Tempo di attivazione', 'es': 'Tiempo de activacion', 'pl': 'Czas aktywacji', 'zh-cn': '激活时间(秒)'},
|
|
255
316
|
'time_alarm': { 'en': 'Siren time at burgle', 'de': 'Sirenenzeit bei Einbruch', 'ru': 'Сирена время в Burgle', 'pt': 'Hora da sirene no burgle', 'nl': 'Sirenetijd bij inbraak', 'fr': 'Temps de sirène à burgle', 'it': 'Ora della sirena al burgle', 'es': 'Tiempo de sirena en burgle', 'pl': 'Czas syreny w burgle', 'zh-cn': '警报器的警笛时间在几秒钟内'},
|
|
256
317
|
'time_silent': { 'en': 'Alarm delay', 'de': 'Alarmverzögerung', 'ru': 'Задержка тревоги в секундах', 'pt': 'Atraso do alarme em segundos', 'nl': 'Alarmvertraging in seconden', 'fr': "Délai d'alarme en secondes", 'it': "Ritardo dell'allarme in secondi", 'es': 'Retraso de alarma en segundos', 'pl': 'Opóźnienie alarmu w sekundach', 'zh-cn': '警报延迟秒数'},
|
|
318
|
+
'time_silent_inside': { 'en': 'alarm delay sharp inside',
|
|
319
|
+
'de': 'Alarmverzögerung scharf innen',
|
|
320
|
+
'ru': 'задержка будильника резко внутри',
|
|
321
|
+
'pt': 'atraso de alarme acentuado por dentro',
|
|
322
|
+
'nl': 'alarmvertraging scherp van binnen',
|
|
323
|
+
'fr': "retard d'alarme net à l'intérieur",
|
|
324
|
+
'it': "ritardo di allarme acuto all'interno",
|
|
325
|
+
'es': 'retardo de alarma agudo en el interior',
|
|
326
|
+
'pl': 'opóźnienie alarmu ostre wewnątrz',
|
|
327
|
+
'zh-cn': '内部报警延迟尖锐'},
|
|
257
328
|
'time_warning': { 'en': 'Siren time at sharp inside',
|
|
258
329
|
'de': 'Sirenenzeit scharf innen',
|
|
259
330
|
'ru': 'Время сирены на резком внутри',
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,68 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "alarm",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "3.0.3",
|
|
5
5
|
"news": {
|
|
6
|
+
"3.0.2": {
|
|
7
|
+
"en": "changed burgle concept, added silent alarm at sharp inside, fixed little issues",
|
|
8
|
+
"de": "Einbruchkonzept geändert, stiller Alarm bei scharf Innen hinzugefügt, kleine Probleme behoben",
|
|
9
|
+
"ru": "изменена концепция взломов, добавлена бесшумная сигнализация при проникновении внутрь, исправлены мелкие недочеты",
|
|
10
|
+
"pt": "mudou o conceito de burle, adicionou alarme silencioso no interior, corrigiu pequenos problemas",
|
|
11
|
+
"nl": "gewijzigd inbraakconcept, stil alarm toegevoegd aan scherpe binnenkant, kleine problemen opgelost",
|
|
12
|
+
"fr": "changement du concept de cambriolage, ajout d'une alarme silencieuse à l'intérieur net, petits problèmes résolus",
|
|
13
|
+
"it": "cambiato il concetto di furto, aggiunto un allarme silenzioso all'interno acuto, risolti piccoli problemi",
|
|
14
|
+
"es": "cambió el concepto de robo, agregó alarma silenciosa en el interior agudo, solucionó pequeños problemas",
|
|
15
|
+
"pl": "zmieniono koncepcję włamywania, dodano cichy alarm w ostrym wnętrzu, naprawiono małe problemy",
|
|
16
|
+
"zh-cn": "改变了防盗概念,在尖锐的内部增加了静音警报,修复了一些小问题"
|
|
17
|
+
},
|
|
18
|
+
"2.2.1": {
|
|
19
|
+
"en": "added notification when warnings at beginning night rest",
|
|
20
|
+
"de": "Benachrichtigung bei Warnungen zu Beginn der Nachtruhe hinzugefügt",
|
|
21
|
+
"ru": "добавлено уведомление при предупреждениях при начале ночного отдыха",
|
|
22
|
+
"pt": "adicionada notificação quando avisos no início do descanso noturno",
|
|
23
|
+
"nl": "melding toegevoegd bij waarschuwingen bij het begin van de nachtrust",
|
|
24
|
+
"fr": "ajout d'une notification lors des avertissements au début du repos nocturne",
|
|
25
|
+
"it": "aggiunta notifica quando avverte all'inizio del riposo notturno",
|
|
26
|
+
"es": "notificación agregada cuando las advertencias al comienzo del descanso nocturno",
|
|
27
|
+
"pl": "dodano powiadomienie, gdy ostrzeżenia o rozpoczęciu nocnego odpoczynku",
|
|
28
|
+
"zh-cn": "在开始夜间休息时发出警告时添加通知"
|
|
29
|
+
},
|
|
30
|
+
"2.2.0": {
|
|
31
|
+
"en": "added telegram special parameters",
|
|
32
|
+
"de": "spezielle Telegrammparameter hinzugefügt",
|
|
33
|
+
"ru": "добавлены специальные параметры телеграммы",
|
|
34
|
+
"pt": "parâmetros especiais de telegrama adicionados",
|
|
35
|
+
"nl": "toegevoegde telegram speciale parameters",
|
|
36
|
+
"fr": "paramètres spéciaux de télégramme ajoutés",
|
|
37
|
+
"it": "aggiunti parametri speciali del telegramma",
|
|
38
|
+
"es": "parámetros especiales de telegrama agregados",
|
|
39
|
+
"pl": "dodano parametry specjalne telegramu",
|
|
40
|
+
"zh-cn": "添加电报特殊参数"
|
|
41
|
+
},
|
|
42
|
+
"2.1.2": {
|
|
43
|
+
"en": "fixed \"colors\" vulnerabilities",
|
|
44
|
+
"de": "\"Farben\"-Schwachstellen behoben",
|
|
45
|
+
"ru": "исправлены \"цветовые\" уязвимости",
|
|
46
|
+
"pt": "vulnerabilidades de \"cores\" corrigidas",
|
|
47
|
+
"nl": "vaste \"kleuren\" kwetsbaarheden",
|
|
48
|
+
"fr": "vulnérabilités \"couleurs\" corrigées",
|
|
49
|
+
"it": "risolte le vulnerabilità dei \"colori\".",
|
|
50
|
+
"es": "vulnerabilidades de \"colores\" fijas",
|
|
51
|
+
"pl": "naprawiono podatności na „kolory”",
|
|
52
|
+
"zh-cn": "修复了“颜色”漏洞"
|
|
53
|
+
},
|
|
54
|
+
"2.1.1": {
|
|
55
|
+
"en": "added countdown state for silent alarm",
|
|
56
|
+
"de": "Countdown-Status für stillen Alarm hinzugefügt",
|
|
57
|
+
"ru": "добавлен обратный отсчет для тихой тревоги",
|
|
58
|
+
"pt": "adicionado estado de contagem regressiva para alarme silencioso",
|
|
59
|
+
"nl": "aftelstatus toegevoegd voor stil alarm",
|
|
60
|
+
"fr": "état de compte à rebours ajouté pour l'alarme silencieuse",
|
|
61
|
+
"it": "stato aggiunto il conto alla rovescia per l'allarme silenzioso",
|
|
62
|
+
"es": "estado de cuenta regresiva agregado para alarma silenciosa",
|
|
63
|
+
"pl": "dodano stan odliczania dla cichego alarmu;",
|
|
64
|
+
"zh-cn": "增加了静音报警的倒计时状态"
|
|
65
|
+
},
|
|
6
66
|
"2.1.0": {
|
|
7
67
|
"en": "extend list states and speech output, added leave option",
|
|
8
68
|
"de": "List States und Sprachausgabe erweitert, Verlassen-Option hinzugefügt",
|
|
@@ -50,138 +110,6 @@
|
|
|
50
110
|
"es": "agregó otras alarmas",
|
|
51
111
|
"pl": "dodano inne alarmy",
|
|
52
112
|
"zh-cn": "添加了其他警报"
|
|
53
|
-
},
|
|
54
|
-
"1.9.0": {
|
|
55
|
-
"en": "added html states and fixed little issues",
|
|
56
|
-
"de": "HTML-Status hinzugefügt und kleine Probleme behoben",
|
|
57
|
-
"ru": "добавлены состояния html и исправлены мелкие проблемы",
|
|
58
|
-
"pt": "adicionamos estados html e corrigimos pequenos problemas",
|
|
59
|
-
"nl": "html-staten toegevoegd en kleine problemen opgelost",
|
|
60
|
-
"fr": "ajout d'états html et correction de petits problèmes",
|
|
61
|
-
"it": "aggiunti stati html e risolti piccoli problemi",
|
|
62
|
-
"es": "estados html agregados y pequeños problemas solucionados",
|
|
63
|
-
"pl": "dodano stany html i naprawiono drobne problemy",
|
|
64
|
-
"zh-cn": "添加了html状态并修复了一些小问题"
|
|
65
|
-
},
|
|
66
|
-
"1.8.3": {
|
|
67
|
-
"en": "fixed issues at enable with delay",
|
|
68
|
-
"de": "Probleme bei der Aktivierung mit Verzögerung behoben",
|
|
69
|
-
"ru": "исправлены проблемы при включении с задержкой",
|
|
70
|
-
"pt": "problemas corrigidos na ativação com atraso",
|
|
71
|
-
"nl": "opgeloste problemen bij inschakelen met vertraging",
|
|
72
|
-
"fr": "problèmes résolus lors de l'activation avec retard",
|
|
73
|
-
"it": "risolti problemi all'abilitazione con ritardo",
|
|
74
|
-
"es": "problemas solucionados al habilitar con retraso",
|
|
75
|
-
"pl": "naprawiono problemy z włączaniem z opóźnieniem",
|
|
76
|
-
"zh-cn": "解决了启用延迟问题"
|
|
77
|
-
},
|
|
78
|
-
"1.8.2": {
|
|
79
|
-
"en": "fixed little issues at notifications",
|
|
80
|
-
"de": "kleine Probleme bei Benachrichtigungen behoben",
|
|
81
|
-
"ru": "исправлены небольшие проблемы с уведомлениями",
|
|
82
|
-
"pt": "corrigiu pequenos problemas nas notificações",
|
|
83
|
-
"nl": "kleine problemen opgelost bij meldingen",
|
|
84
|
-
"fr": "correction de petits problèmes au niveau des notifications",
|
|
85
|
-
"it": "risolti piccoli problemi alle notifiche",
|
|
86
|
-
"es": "pequeños problemas solucionados en las notificaciones",
|
|
87
|
-
"pl": "naprawiono drobne problemy z powiadomieniami",
|
|
88
|
-
"zh-cn": "修复了通知中的小问题"
|
|
89
|
-
},
|
|
90
|
-
"1.8.1": {
|
|
91
|
-
"en": "fixed little issues at silent alarm",
|
|
92
|
-
"de": "kleine Probleme bei stillem Alarm behoben",
|
|
93
|
-
"ru": "исправлены небольшие проблемы при тихой тревоге",
|
|
94
|
-
"pt": "corrigiu pequenos problemas no alarme silencioso",
|
|
95
|
-
"nl": "kleine problemen opgelost bij stil alarm",
|
|
96
|
-
"fr": "correction de petits problèmes lors d'une alarme silencieuse",
|
|
97
|
-
"it": "risolti piccoli problemi con l'allarme silenzioso",
|
|
98
|
-
"es": "pequeños problemas solucionados en alarma silenciosa",
|
|
99
|
-
"pl": "naprawiono drobne problemy przy cichym alarmie",
|
|
100
|
-
"zh-cn": "修复了无声警报中的小问题"
|
|
101
|
-
},
|
|
102
|
-
"1.8.0": {
|
|
103
|
-
"en": "added status.state_list to shortcuts",
|
|
104
|
-
"de": "status.state_list zu Verknüpfungen hinzugefügt",
|
|
105
|
-
"ru": "в ярлыки добавлен status.state_list",
|
|
106
|
-
"pt": "adicionou status.state_list aos atalhos",
|
|
107
|
-
"nl": "status.state_list toegevoegd aan snelkoppelingen",
|
|
108
|
-
"fr": "ajout de status.state_list aux raccourcis",
|
|
109
|
-
"it": "aggiunto status.state_list alle scorciatoie",
|
|
110
|
-
"es": "agregado status.state_list a atajos",
|
|
111
|
-
"pl": "dodano status.state_list do skrótów",
|
|
112
|
-
"zh-cn": "在快捷方式中添加了status.state_list"
|
|
113
|
-
},
|
|
114
|
-
"1.7.0": {
|
|
115
|
-
"en": "changed notifications and fixed little issues",
|
|
116
|
-
"de": "Benachrichtigungen geändert und kleine Probleme behoben",
|
|
117
|
-
"ru": "изменены уведомления и исправлены мелкие проблемы",
|
|
118
|
-
"pt": "alterou notificações e corrigiu pequenos problemas",
|
|
119
|
-
"nl": "gewijzigde meldingen en opgeloste kleine problemen",
|
|
120
|
-
"fr": "modifications des notifications et correction de petits problèmes",
|
|
121
|
-
"it": "notifiche modificate e risolti piccoli problemi",
|
|
122
|
-
"es": "notificaciones cambiadas y pequeños problemas solucionados",
|
|
123
|
-
"pl": "zmieniono powiadomienia i naprawiono drobne problemy",
|
|
124
|
-
"zh-cn": "更改了通知并修复了小问题"
|
|
125
|
-
},
|
|
126
|
-
"1.6.0": {
|
|
127
|
-
"en": "changed time inputs to numbers",
|
|
128
|
-
"de": "Zeiteingaben in Zahlen geändert",
|
|
129
|
-
"ru": "изменил ввод времени на числа",
|
|
130
|
-
"pt": "alterou as entradas de tempo para números",
|
|
131
|
-
"nl": "veranderde tijdinvoer in cijfers",
|
|
132
|
-
"fr": "modification des entrées de temps en nombres",
|
|
133
|
-
"it": "cambiato gli input di tempo in numeri",
|
|
134
|
-
"es": "cambió las entradas de tiempo a números",
|
|
135
|
-
"pl": "zmieniono wejścia czasowe na liczby",
|
|
136
|
-
"zh-cn": "将时间输入更改为数字"
|
|
137
|
-
},
|
|
138
|
-
"1.5.0": {
|
|
139
|
-
"en": "added stop inside alarm with disable",
|
|
140
|
-
"de": "Quittierung Alarm innen mit Deaktivierung hinzugefügt",
|
|
141
|
-
"ru": "добавлена остановка внутри будильника с отключением",
|
|
142
|
-
"pt": "adicionado parada dentro do alarme com desabilitar",
|
|
143
|
-
"nl": "stop binnen alarm toegevoegd met uitschakelen",
|
|
144
|
-
"fr": "arrêt ajouté à l'intérieur de l'alarme avec désactivation",
|
|
145
|
-
"it": "aggiunto stop all'interno dell'allarme con disabilitazione",
|
|
146
|
-
"es": "parada agregada dentro de la alarma con deshabilitar",
|
|
147
|
-
"pl": "dodano stop wewnątrz alarmu z wyłączeniem",
|
|
148
|
-
"zh-cn": "添加了禁用内部警报"
|
|
149
|
-
},
|
|
150
|
-
"1.4.0": {
|
|
151
|
-
"en": "added silent alarm selection for every state (PLEASE CHECK YOUR OLD CONFIG MONITORING SETTINGS)",
|
|
152
|
-
"de": "stille Alarmauswahl für jeden Zustand hinzugefügt (BITTE ÜBERPRÜFEN SIE IHRE ALTEN ÜBERWACHUNGSEINSTELLUNGEN)",
|
|
153
|
-
"ru": "добавлен выбор тихого сигнала тревоги для каждого состояния (ПОЖАЛУЙСТА, ПРОВЕРЬТЕ СТАРЫЕ НАСТРОЙКИ МОНИТОРИНГА КОНФИГУРАЦИИ)",
|
|
154
|
-
"pt": "adicionado seleção de alarme silencioso para cada estado (VERIFIQUE SUAS ANTIGAS CONFIGURAÇÕES DE MONITORAMENTO)",
|
|
155
|
-
"nl": "stille alarmselectie toegevoegd voor elke status (CONTROLEER UW OUDE CONFIG-MONITORING-INSTELLINGEN)",
|
|
156
|
-
"fr": "ajout de la sélection d'alarme silencieuse pour chaque état (VEUILLEZ VÉRIFIER VOS ANCIENS PARAMÈTRES DE SURVEILLANCE CONFIG)",
|
|
157
|
-
"it": "aggiunta la selezione dell'allarme silenzioso per ogni stato (CONTROLLA LE IMPOSTAZIONI DI MONITORAGGIO DELLA VECCHIA CONFIG)",
|
|
158
|
-
"es": "Se agregó una selección de alarma silenciosa para cada estado (COMPRUEBE SUS ANTIGUOS AJUSTES DE MONITOREO DE CONFIG)",
|
|
159
|
-
"pl": "dodany cichy wybór alarmu dla każdego stanu (PROSZĘ SPRAWDZIĆ STARE USTAWIENIA KONFIGURACJI MONITOROWANIA)",
|
|
160
|
-
"zh-cn": "为每个状态添加了静音警报选择(请检查您的旧配置监测设置)"
|
|
161
|
-
},
|
|
162
|
-
"1.3.0": {
|
|
163
|
-
"en": "added diffrent time options",
|
|
164
|
-
"de": "verschiedene Zeitoptionen hinzugefügt",
|
|
165
|
-
"ru": "добавлены разные варианты времени",
|
|
166
|
-
"pt": "adicionaram opções de tempo diferentes",
|
|
167
|
-
"nl": "verschillende tijdopties toegevoegd",
|
|
168
|
-
"fr": "ajout d'options de temps différentes",
|
|
169
|
-
"it": "aggiunte diverse opzioni di tempo",
|
|
170
|
-
"es": "se agregaron diferentes opciones de tiempo",
|
|
171
|
-
"pl": "dodano różne opcje czasowe",
|
|
172
|
-
"zh-cn": "添加了不同时间选项"
|
|
173
|
-
},
|
|
174
|
-
"1.2.0": {
|
|
175
|
-
"en": "added countdown speech output",
|
|
176
|
-
"de": "Countdown-Sprachausgabe hinzugefügt",
|
|
177
|
-
"ru": "добавлен обратный отсчет",
|
|
178
|
-
"pt": "saída de fala de contagem regressiva adicionada",
|
|
179
|
-
"nl": "countdown spraakuitvoer toegevoegd",
|
|
180
|
-
"fr": "sortie vocale à compte à rebours ajoutée",
|
|
181
|
-
"it": "aggiunto l'output vocale del conto alla rovescia",
|
|
182
|
-
"es": "salida de voz de cuenta regresiva agregada",
|
|
183
|
-
"pl": "dodano wyjście mowy odliczania",
|
|
184
|
-
"zh-cn": "增加了倒计时语音输出"
|
|
185
113
|
}
|
|
186
114
|
},
|
|
187
115
|
"title": "alarm system",
|
|
@@ -239,6 +167,7 @@
|
|
|
239
167
|
"installedFrom": "misanorot/ioBroker.alarm"
|
|
240
168
|
},
|
|
241
169
|
"native": {
|
|
170
|
+
"new_version": false,
|
|
242
171
|
"circuits": [],
|
|
243
172
|
"shorts_in": [],
|
|
244
173
|
"shorts": [],
|
|
@@ -262,7 +191,7 @@
|
|
|
262
191
|
"opt_say_warn_changes": true,
|
|
263
192
|
"opt_night": true,
|
|
264
193
|
"opt_log": true,
|
|
265
|
-
"
|
|
194
|
+
"opt_siren": false,
|
|
266
195
|
"opt_leave": false,
|
|
267
196
|
"opt_warning": false,
|
|
268
197
|
"night_from": "",
|
|
@@ -276,8 +205,10 @@
|
|
|
276
205
|
"send_activation_inside": false,
|
|
277
206
|
"send_activation_warnings": true,
|
|
278
207
|
"send_activation_warnings_inside": true,
|
|
208
|
+
"send_activation_warnings_night": true,
|
|
279
209
|
"send_activated_with_warnings": true,
|
|
280
210
|
"send_alarm_silent": true,
|
|
211
|
+
"send_alarm_silent_inside": true,
|
|
281
212
|
"send_failed": true,
|
|
282
213
|
"sayit": [],
|
|
283
214
|
"text_activated": "Alarmanlage aktiviert",
|
|
@@ -320,7 +251,10 @@
|
|
|
320
251
|
"log_one": "Alarmanlage meldet einen Feueralarm:",
|
|
321
252
|
"log_two": "Alarmanlage meldet einen Wasseralarm:",
|
|
322
253
|
"one_name": "Feueralarm",
|
|
323
|
-
"two_name": "Wasseralarm"
|
|
254
|
+
"two_name": "Wasseralarm",
|
|
255
|
+
"opt_telegram": false,
|
|
256
|
+
"chatID": "",
|
|
257
|
+
"user": ""
|
|
324
258
|
},
|
|
325
259
|
"objects": [],
|
|
326
260
|
"instanceObjects": [
|
|
@@ -531,6 +465,19 @@
|
|
|
531
465
|
},
|
|
532
466
|
"native": {}
|
|
533
467
|
},
|
|
468
|
+
{
|
|
469
|
+
"_id": "status.silent_countdown",
|
|
470
|
+
"type": "state",
|
|
471
|
+
"common": {
|
|
472
|
+
"role": "",
|
|
473
|
+
"name": "Silent countdown",
|
|
474
|
+
"desc": "Time to trigger the alarm system",
|
|
475
|
+
"type": "number",
|
|
476
|
+
"read": true,
|
|
477
|
+
"write": false
|
|
478
|
+
},
|
|
479
|
+
"native": {}
|
|
480
|
+
},
|
|
534
481
|
{
|
|
535
482
|
"_id": "status.sharp_inside_activated",
|
|
536
483
|
"type": "state",
|
|
@@ -735,11 +682,11 @@
|
|
|
735
682
|
"native": {}
|
|
736
683
|
},
|
|
737
684
|
{
|
|
738
|
-
"_id": "
|
|
685
|
+
"_id": "status.siren_inside",
|
|
739
686
|
"type": "state",
|
|
740
687
|
"common": {
|
|
741
688
|
"role": "",
|
|
742
|
-
"name": "
|
|
689
|
+
"name": "Sharp inside siren",
|
|
743
690
|
"desc": "Changes in sharp inside circuit detected",
|
|
744
691
|
"type": "boolean",
|
|
745
692
|
"read": true,
|
package/main.js
CHANGED
|
@@ -64,10 +64,11 @@ let activated = false,
|
|
|
64
64
|
|
|
65
65
|
let timer = null,
|
|
66
66
|
silent_timer = null,
|
|
67
|
-
|
|
67
|
+
siren_inside_timer = null,
|
|
68
68
|
timer_notification_changes = null,
|
|
69
69
|
siren_timer = null,
|
|
70
70
|
silent_interval = null,
|
|
71
|
+
silent_contdown = null,
|
|
71
72
|
alarm_interval = null,
|
|
72
73
|
text_alarm_interval = null,
|
|
73
74
|
text_changes_interval = null;
|
|
@@ -103,6 +104,7 @@ function startAdapter(options) {
|
|
|
103
104
|
clearTimeout(silent_timer);
|
|
104
105
|
clearTimeout(siren_timer);
|
|
105
106
|
clearInterval(silent_interval);
|
|
107
|
+
clearInterval(silent_contdown);
|
|
106
108
|
clearInterval(alarm_interval);
|
|
107
109
|
clearInterval(text_alarm_interval);
|
|
108
110
|
clearInterval(text_changes_interval);
|
|
@@ -210,6 +212,7 @@ function main() {
|
|
|
210
212
|
//################# ENABLE ####################################################
|
|
211
213
|
|
|
212
214
|
function enable(id, state){
|
|
215
|
+
if (activated || burgle) return;
|
|
213
216
|
let say = A.text_failed;
|
|
214
217
|
if(timer) {
|
|
215
218
|
clearInterval(timer);
|
|
@@ -264,12 +267,14 @@ function disable(){
|
|
|
264
267
|
clearTimeout(silent_timer);
|
|
265
268
|
clearTimeout(siren_timer);
|
|
266
269
|
clearInterval(silent_interval);
|
|
270
|
+
clearInterval(silent_contdown);
|
|
267
271
|
clearInterval(alarm_interval);
|
|
268
272
|
clearInterval(text_alarm_interval);
|
|
269
273
|
clearInterval(text_changes_interval);
|
|
270
274
|
silent_timer = null;
|
|
271
275
|
siren_timer = null;
|
|
272
276
|
silent_interval = null,
|
|
277
|
+
silent_contdown = null,
|
|
273
278
|
alarm_interval = null;
|
|
274
279
|
text_alarm_interval = null;
|
|
275
280
|
text_changes_interval = null;
|
|
@@ -278,22 +283,10 @@ function disable(){
|
|
|
278
283
|
adapter.setState('info.log', `${A.log_deact}`, true);
|
|
279
284
|
sayit(A.text_deactivated, 2);
|
|
280
285
|
if(log)adapter.log.info(`${A.log_deact}`);
|
|
281
|
-
adapter.setState('status.siren', false, true);
|
|
282
|
-
adapter.setState('status.silent_flash', false, true);
|
|
283
|
-
adapter.setState('status.alarm_flash', false, true);
|
|
284
|
-
adapter.setState('status.activated', false, true);
|
|
285
|
-
adapter.setState('status.deactivated', true, true);
|
|
286
286
|
adapter.setState('status.activated_with_warnings', false, true);
|
|
287
287
|
adapter.setState('status.activation_failed', false, true);
|
|
288
|
-
adapter.setState('status.siren', false, true);
|
|
289
|
-
adapter.setState('status.burglar_alarm', false, true);
|
|
290
|
-
adapter.setState('status.silent_alarm', false, true);
|
|
291
|
-
adapter.setState('status.state', 'deactivated', true);
|
|
292
|
-
adapter.setState('status.state_list',0, true);
|
|
293
|
-
adapter.setState('homekit.CurrentState', 3, true);
|
|
294
|
-
adapter.setState('homekit.TargetState', 3, true);
|
|
295
|
-
adapter.setState('use.list',0, true);
|
|
296
288
|
if(A.send_activation) messages(`${A.log_deact}`);
|
|
289
|
+
disableStates();
|
|
297
290
|
}else if (inside) {
|
|
298
291
|
inside_ends(true);
|
|
299
292
|
}else if (night_rest) {
|
|
@@ -306,7 +299,7 @@ function disable(){
|
|
|
306
299
|
|
|
307
300
|
//################# BURGALARY ####################################################
|
|
308
301
|
|
|
309
|
-
function burglary(id, state, silent){
|
|
302
|
+
function burglary(id, state, silent, indoor){
|
|
310
303
|
if(burgle) return;
|
|
311
304
|
if(silent_timer && silent) return;
|
|
312
305
|
let count = 0;
|
|
@@ -316,7 +309,8 @@ function burglary(id, state, silent){
|
|
|
316
309
|
if(silent){
|
|
317
310
|
adapter.setState('status.silent_alarm', true, true);
|
|
318
311
|
adapter.setState('status.state', 'silent alarm', true);
|
|
319
|
-
if(A.
|
|
312
|
+
if (A.send_alarm_silent_inside && indoor) messages(`${A.log_burgle} ${name}`);
|
|
313
|
+
if(A.send_alarm_silent && !indoor) messages(`${A.log_burgle} ${name}`);
|
|
320
314
|
if(A.silent_flash > 0) {
|
|
321
315
|
silent_interval = setInterval(()=>{
|
|
322
316
|
if(silent_i) {
|
|
@@ -328,6 +322,16 @@ function burglary(id, state, silent){
|
|
|
328
322
|
}
|
|
329
323
|
}, A.silent_flash * 1000);
|
|
330
324
|
}
|
|
325
|
+
let silent_contdown_time = timeMode(A.time_silent_select) * A.time_silent / 1000;
|
|
326
|
+
silent_contdown = setInterval(()=>{
|
|
327
|
+
if(silent_contdown_time > 0) {
|
|
328
|
+
silent_contdown_time = silent_contdown_time - 1;
|
|
329
|
+
adapter.setState('status.silent_countdown', silent_contdown_time, true);
|
|
330
|
+
} else {
|
|
331
|
+
adapter.setState('status.silent_countdown', null, true);
|
|
332
|
+
clearInterval(silent_contdown);
|
|
333
|
+
}
|
|
334
|
+
}, 1000);
|
|
331
335
|
silent_timer = setTimeout(()=>{
|
|
332
336
|
burgle = true;
|
|
333
337
|
if(A.send_alarm) messages(`${A.log_burgle} ${name}`);
|
|
@@ -345,32 +349,31 @@ function burglary(id, state, silent){
|
|
|
345
349
|
adapter.setState('status.burglar_alarm', true, true);
|
|
346
350
|
adapter.setState('status.silent_alarm', false, true);
|
|
347
351
|
adapter.setState('status.silent_flash', false, true);
|
|
348
|
-
adapter.setState('status.
|
|
352
|
+
adapter.setState('status.siren_inside', true, true);
|
|
353
|
+
siren_inside_timer = setTimeout(()=>{
|
|
354
|
+
adapter.setState('status.siren_inside', false, true);
|
|
355
|
+
}, timeMode(A.time_warning_select) * A.time_warning);
|
|
356
|
+
if (A.opt_siren && indoor) {
|
|
357
|
+
alarmSiren();
|
|
358
|
+
alarmFlash();
|
|
359
|
+
}
|
|
360
|
+
if (!indoor) {
|
|
361
|
+
adapter.setState('status.siren', true, true);
|
|
362
|
+
alarmSiren();
|
|
363
|
+
alarmFlash();
|
|
364
|
+
}
|
|
349
365
|
adapter.setState('status.state', 'burgle', true);
|
|
350
366
|
adapter.setState('status.state_list', 3, true);
|
|
351
367
|
adapter.setState('homekit.CurrentState', 4, true);
|
|
352
|
-
if(A.alarm_flash > 0) {
|
|
353
|
-
alarm_interval = setInterval(()=>{
|
|
354
|
-
if(alarm_i) {
|
|
355
|
-
adapter.setState('status.alarm_flash', true, true);
|
|
356
|
-
alarm_i = false;
|
|
357
|
-
} else {
|
|
358
|
-
adapter.setState('status.alarm_flash', false, true);
|
|
359
|
-
alarm_i = true;
|
|
360
|
-
}
|
|
361
|
-
}, A.alarm_flash * 1000);
|
|
362
|
-
}
|
|
363
|
-
siren_timer = setTimeout(()=>{
|
|
364
|
-
adapter.setState('status.siren', false, true);
|
|
365
|
-
clearTimeout(siren_timer);
|
|
366
|
-
}, timeMode(A.time_alarm_select) * A.time_alarm);
|
|
367
368
|
}, timeMode(A.time_silent_select) * A.time_silent);
|
|
368
369
|
}
|
|
369
370
|
else if (!silent) {
|
|
370
371
|
burgle = true;
|
|
371
372
|
clearTimeout(silent_timer);
|
|
372
373
|
clearInterval(silent_interval);
|
|
373
|
-
|
|
374
|
+
clearInterval(silent_contdown);
|
|
375
|
+
if(A.send_alarm_inside && indoor) messages(`${A.log_burgle} ${name}`);
|
|
376
|
+
if(A.send_alarm && !indoor) messages(`${A.log_burgle} ${name}`);
|
|
374
377
|
sayit(A.text_alarm, 6);
|
|
375
378
|
text_alarm_interval = setInterval(()=> {
|
|
376
379
|
if(count < alarm_repeat) {
|
|
@@ -383,21 +386,22 @@ function burglary(id, state, silent){
|
|
|
383
386
|
adapter.setState('status.burglar_alarm', true, true);
|
|
384
387
|
adapter.setState('status.silent_alarm', false, true);
|
|
385
388
|
adapter.setState('status.silent_flash', false, true);
|
|
386
|
-
adapter.setState('status.
|
|
389
|
+
adapter.setState('status.siren_inside', true, true);
|
|
390
|
+
siren_inside_timer = setTimeout(()=>{
|
|
391
|
+
adapter.setState('status.siren_inside', false, true);
|
|
392
|
+
}, timeMode(A.time_warning_select) * A.time_warning);
|
|
393
|
+
if (A.opt_siren && indoor) {
|
|
394
|
+
alarmSiren();
|
|
395
|
+
alarmFlash();
|
|
396
|
+
}
|
|
397
|
+
if (!indoor) {
|
|
398
|
+
adapter.setState('status.siren', true, true);
|
|
399
|
+
alarmSiren();
|
|
400
|
+
alarmFlash();
|
|
401
|
+
}
|
|
387
402
|
adapter.setState('status.state', 'burgle', true);
|
|
388
403
|
adapter.setState('status.state_list', 3, true);
|
|
389
404
|
adapter.setState('homekit.CurrentState', 4, true);
|
|
390
|
-
if(A.alarm_flash > 0) {
|
|
391
|
-
alarm_interval = setInterval(()=>{
|
|
392
|
-
if(alarm_i) {
|
|
393
|
-
adapter.setState('status.alarm_flash', true, true);
|
|
394
|
-
alarm_i = false;
|
|
395
|
-
} else {
|
|
396
|
-
adapter.setState('status.alarm_flash', false, true);
|
|
397
|
-
alarm_i = true;
|
|
398
|
-
}
|
|
399
|
-
}, A.alarm_flash * 1000);
|
|
400
|
-
}
|
|
401
405
|
siren_timer = setTimeout(()=>{
|
|
402
406
|
adapter.setState('status.siren', false, true);
|
|
403
407
|
clearTimeout(siren_timer);
|
|
@@ -568,10 +572,10 @@ function change(id, state){
|
|
|
568
572
|
return;
|
|
569
573
|
}
|
|
570
574
|
else if(id === adapter.namespace + '.use.quit_changes'){
|
|
571
|
-
clearTimeout(
|
|
575
|
+
clearTimeout(siren_inside_timer);
|
|
572
576
|
clearTimeout(timer_notification_changes);
|
|
573
577
|
adapter.setState('status.activation_failed', false, true);
|
|
574
|
-
adapter.setState('
|
|
578
|
+
adapter.setState('status.siren_inside', false, true);
|
|
575
579
|
adapter.setState('info.notification_circuit_changes', false, true);
|
|
576
580
|
adapter.setState('other_alarms.one_changes', false, true);
|
|
577
581
|
adapter.setState('other_alarms.two_changes', false, true);
|
|
@@ -613,8 +617,8 @@ function change(id, state){
|
|
|
613
617
|
shortcuts('status.state', state.val);
|
|
614
618
|
return;
|
|
615
619
|
}
|
|
616
|
-
else if(id === adapter.namespace + '.
|
|
617
|
-
shortcuts('
|
|
620
|
+
else if(id === adapter.namespace + '.status.siren_inside'){
|
|
621
|
+
shortcuts('status.siren_inside', state.val);
|
|
618
622
|
return;
|
|
619
623
|
}
|
|
620
624
|
else if(id === adapter.namespace + '.info.notification_circuit_changes'){
|
|
@@ -712,33 +716,9 @@ function change(id, state){
|
|
|
712
716
|
return;
|
|
713
717
|
}
|
|
714
718
|
if(inside_ids.includes(id) && inside && isTrue(id, state)){
|
|
715
|
-
|
|
716
|
-
const name = get_name(id);
|
|
717
|
-
let say = A.text_changes;
|
|
718
|
-
adapter.setState('info.log', `${A.log_warn} ${name}`, true);
|
|
719
|
-
if (A.opt_list) adapter.setState('status.state', 'burgle', true);
|
|
720
|
-
if (A.opt_list) adapter.setState('status.state_list', 3, true);
|
|
721
|
-
if (A.opt_list) adapter.setState('homekit.CurrentState', 4, true);
|
|
722
|
-
adapter.setState('info.sharp_inside_siren', true, true);
|
|
723
|
-
if(log) adapter.log.info(`${A.log_warn} ${name}`);
|
|
724
|
-
if(A.send_alarm_inside) messages(`${A.log_warn} ${name}`);
|
|
725
|
-
if(A.opt_say_names){
|
|
726
|
-
say = say + ' ' + name;
|
|
727
|
-
}
|
|
728
|
-
sayit(say, 5);
|
|
729
|
-
text_changes_interval = setInterval(()=> {
|
|
730
|
-
if(count < changes_repeat) {
|
|
731
|
-
sayit(say, 5);
|
|
732
|
-
count++;
|
|
733
|
-
} else {
|
|
734
|
-
clearInterval(text_changes_interval);
|
|
735
|
-
}
|
|
736
|
-
}, 5000);
|
|
737
|
-
timer_inside_changes = setTimeout(()=>{
|
|
738
|
-
adapter.setState('info.sharp_inside_siren', false, true);
|
|
739
|
-
}, timeMode(A.time_warning_select) * A.time_warning);
|
|
740
|
-
return;
|
|
719
|
+
burglary(id, state, isSilent(id, true), true);
|
|
741
720
|
}
|
|
721
|
+
|
|
742
722
|
if(notification_ids.includes(id) && isTrue(id, state)){
|
|
743
723
|
if(!activated && !inside && !night_rest) return;
|
|
744
724
|
const name = get_name(id);
|
|
@@ -829,7 +809,7 @@ function set_subs(){
|
|
|
829
809
|
}
|
|
830
810
|
});
|
|
831
811
|
adapter.subscribeStates('info.log');
|
|
832
|
-
adapter.subscribeStates('
|
|
812
|
+
adapter.subscribeStates('status.siren_inside');
|
|
833
813
|
adapter.subscribeStates('info.notification_circuit_changes');
|
|
834
814
|
adapter.subscribeStates('other_alarms.one_changes');
|
|
835
815
|
adapter.subscribeStates('other_alarms.two_changes');
|
|
@@ -843,9 +823,15 @@ function set_subs(){
|
|
|
843
823
|
|
|
844
824
|
function messages(content){
|
|
845
825
|
if(send_instances.length){
|
|
826
|
+
const reg = new RegExp('telegram');
|
|
846
827
|
send_instances.forEach((ele)=>{
|
|
847
|
-
|
|
848
|
-
|
|
828
|
+
if (reg.test(ele) && A.opt_telegram) {
|
|
829
|
+
adapter.log.debug(`Send message to ${ele} with special parameter, message: text: ${content}, user: ${A.user}, chatID: ${A.chatID}`);
|
|
830
|
+
adapter.sendTo(ele, 'send', {'text':content, 'user': A.user, 'chatId': A.chatID});
|
|
831
|
+
} else {
|
|
832
|
+
adapter.log.debug(`Send message to ${ele}, message: ${content}`);
|
|
833
|
+
adapter.sendTo(ele, {'text':content});
|
|
834
|
+
}
|
|
849
835
|
});
|
|
850
836
|
}
|
|
851
837
|
}
|
|
@@ -981,6 +967,47 @@ function sayit(message, opt_val){
|
|
|
981
967
|
|
|
982
968
|
//################# HELPERS ####################################################
|
|
983
969
|
|
|
970
|
+
function alarmSiren() {
|
|
971
|
+
adapter.setState('status.siren', true, true);
|
|
972
|
+
siren_timer = setTimeout(()=>{
|
|
973
|
+
adapter.setState('status.siren', false, true);
|
|
974
|
+
clearTimeout(siren_timer);
|
|
975
|
+
}, timeMode(A.time_alarm_select) * A.time_alarm);
|
|
976
|
+
}
|
|
977
|
+
|
|
978
|
+
function alarmFlash() {
|
|
979
|
+
if(A.alarm_flash > 0) {
|
|
980
|
+
alarm_interval = setInterval(()=>{
|
|
981
|
+
if(alarm_i) {
|
|
982
|
+
adapter.setState('status.alarm_flash', true, true);
|
|
983
|
+
alarm_i = false;
|
|
984
|
+
} else {
|
|
985
|
+
adapter.setState('status.alarm_flash', false, true);
|
|
986
|
+
alarm_i = true;
|
|
987
|
+
}
|
|
988
|
+
}, A.alarm_flash * 1000);
|
|
989
|
+
}
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
function disableStates() {
|
|
993
|
+
adapter.setState('status.sharp_inside_activated', false, true);
|
|
994
|
+
adapter.setState('status.state', 'deactivated', true);
|
|
995
|
+
adapter.setState('status.deactivated', true, true);
|
|
996
|
+
adapter.setState('status.activated', false, true);
|
|
997
|
+
adapter.setState('status.state_list',0, true);
|
|
998
|
+
adapter.setState('homekit.CurrentState', 3, true);
|
|
999
|
+
adapter.setState('homekit.TargetState', 3, true);
|
|
1000
|
+
adapter.setState('use.list',0, true);
|
|
1001
|
+
adapter.setState('status.siren_inside', false, true);
|
|
1002
|
+
adapter.setState('status.siren', false, true);
|
|
1003
|
+
adapter.setState('info.notification_circuit_changes', false, true);
|
|
1004
|
+
adapter.setState('status.silent_flash', false, true);
|
|
1005
|
+
adapter.setState('status.alarm_flash', false, true);
|
|
1006
|
+
adapter.setState('status.burglar_alarm', false, true);
|
|
1007
|
+
adapter.setState('status.silent_alarm', false, true);
|
|
1008
|
+
}
|
|
1009
|
+
|
|
1010
|
+
|
|
984
1011
|
function check_doubles() {
|
|
985
1012
|
clean_ids.forEach((ele, i) => {
|
|
986
1013
|
one_ids.forEach((item, i) => {
|
|
@@ -993,12 +1020,21 @@ function check_doubles() {
|
|
|
993
1020
|
|
|
994
1021
|
}
|
|
995
1022
|
|
|
996
|
-
function isSilent(id) {
|
|
997
|
-
|
|
998
|
-
const
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1023
|
+
function isSilent(id, indoor) {
|
|
1024
|
+
if (indoor) {
|
|
1025
|
+
const temp = A.circuits.findIndex((obj)=>{
|
|
1026
|
+
const reg = new RegExp(id);
|
|
1027
|
+
return reg.test(obj.name_id);
|
|
1028
|
+
});
|
|
1029
|
+
return A.circuits[temp].delay_inside;
|
|
1030
|
+
} else {
|
|
1031
|
+
const temp = A.circuits.findIndex((obj)=>{
|
|
1032
|
+
const reg = new RegExp(id);
|
|
1033
|
+
return reg.test(obj.name_id);
|
|
1034
|
+
});
|
|
1035
|
+
return A.circuits[temp].delay;
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1002
1038
|
}
|
|
1003
1039
|
|
|
1004
1040
|
function timeMode(value) {
|
|
@@ -1043,8 +1079,8 @@ function inside_begins(){
|
|
|
1043
1079
|
adapter.setState('homekit.CurrentState', 0, true);
|
|
1044
1080
|
adapter.setState('homekit.TargetState', 0, true);
|
|
1045
1081
|
adapter.setState('use.list', 2, true);
|
|
1046
|
-
adapter.setState('status.activated',
|
|
1047
|
-
adapter.setState('status.deactivated',
|
|
1082
|
+
adapter.setState('status.activated', true, true);
|
|
1083
|
+
adapter.setState('status.deactivated', false, true);
|
|
1048
1084
|
}
|
|
1049
1085
|
}
|
|
1050
1086
|
|
|
@@ -1052,20 +1088,13 @@ function inside_ends(off){
|
|
|
1052
1088
|
if(inside){
|
|
1053
1089
|
inside = false;
|
|
1054
1090
|
if(off){
|
|
1055
|
-
clearTimeout(
|
|
1091
|
+
clearTimeout(siren_inside_timer);
|
|
1056
1092
|
clearTimeout(timer_notification_changes);
|
|
1057
1093
|
adapter.setState('info.log', `${A.log_warn_deact}`, true);
|
|
1058
1094
|
if(log)adapter.log.info(`${A.log_warn_deact}`);
|
|
1059
1095
|
if(A.send_activation_inside) messages(`${A.log_warn_deact}`);
|
|
1060
1096
|
sayit(A.text_warn_end, 0);
|
|
1061
|
-
|
|
1062
|
-
adapter.setState('status.state', 'deactivated', true);
|
|
1063
|
-
adapter.setState('status.state_list',0, true);
|
|
1064
|
-
adapter.setState('homekit.CurrentState', 3, true);
|
|
1065
|
-
adapter.setState('homekit.TargetState', 3, true);
|
|
1066
|
-
adapter.setState('use.list',0, true);
|
|
1067
|
-
adapter.setState('info.sharp_inside_siren', false, true);
|
|
1068
|
-
adapter.setState('info.notification_circuit_changes', false, true);
|
|
1097
|
+
disableStates();
|
|
1069
1098
|
}
|
|
1070
1099
|
|
|
1071
1100
|
}
|
|
@@ -1090,7 +1119,7 @@ function sleep_begin(auto) {
|
|
|
1090
1119
|
adapter.setState('use.list', 4, true);
|
|
1091
1120
|
if(is_notification){
|
|
1092
1121
|
let say = A.text_warning;
|
|
1093
|
-
|
|
1122
|
+
if(A.send_activation_warnings_night) messages(`${A.log_nights_b_w} ${names_notification}`);
|
|
1094
1123
|
adapter.setState('info.log', `${A.log_nights_b_w} ${names_notification}`, true);
|
|
1095
1124
|
if(log) adapter.log.info(`${A.log_nights_b_w} ${names_notification}`);
|
|
1096
1125
|
if(A.opt_say_names){
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_from": "github:misanorot/ioBroker.alarm",
|
|
3
|
-
"_id": "iobroker.alarm@
|
|
3
|
+
"_id": "iobroker.alarm@3.0.3",
|
|
4
4
|
"_inBundle": false,
|
|
5
5
|
"_integrity": "",
|
|
6
6
|
"_location": "/iobroker.alarm",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"#USER",
|
|
23
23
|
"/"
|
|
24
24
|
],
|
|
25
|
-
"_resolved": "github:misanorot/ioBroker.alarm#
|
|
25
|
+
"_resolved": "github:misanorot/ioBroker.alarm#c0dbb5f94a2e68082036829747dd3fc8c1f4615b",
|
|
26
26
|
"_spec": "misanorot/ioBroker.alarm",
|
|
27
27
|
"_where": "/opt/iobroker",
|
|
28
28
|
"author": {
|
|
@@ -46,7 +46,6 @@
|
|
|
46
46
|
"@iobroker/testing": "^1.2.5",
|
|
47
47
|
"chai": "^4.2.0",
|
|
48
48
|
"chai-as-promised": "^7.1.1",
|
|
49
|
-
"colors": "^1.4.0",
|
|
50
49
|
"copyfiles": "^2.2.0",
|
|
51
50
|
"coveralls": "^3.0.11",
|
|
52
51
|
"eslint-config-prettier": "^6.10.1",
|
|
@@ -81,5 +80,5 @@
|
|
|
81
80
|
"test:package": "mocha test/package --exit",
|
|
82
81
|
"test:unit": "mocha test/unit --exit"
|
|
83
82
|
},
|
|
84
|
-
"version": "
|
|
83
|
+
"version": "3.0.3"
|
|
85
84
|
}
|