iobroker.alarm 2.2.1 → 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/README.md +4 -2
- package/admin/index_m.html +95 -72
- package/admin/words.js +51 -10
- package/io-package.json +18 -4
- package/main.js +101 -93
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -31,9 +31,9 @@ Hier werden die Einstellungen wie die Zeiten der Nachtruhe, Sirenezeit, Stiller-
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
- Aktivierzeit -> Zeitverzögerung bis zu Aktivierung wenn man einen delay Datenpunkt benutzt
|
|
34
|
-
- 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
|
|
35
35
|
- Alarmverzögerung -> Verzögerungszeit bis Einbruch ausgelöst wird (während dieser Zeit wird der Stille Alarm ausgelöst)
|
|
36
|
-
|
|
36
|
+
|
|
37
37
|
|
|
38
38
|
----------------------------------------------------------------------------------------------------------------------
|
|
39
39
|
|
|
@@ -153,6 +153,8 @@ Beinhaltet die Informationen für die "anderen" Alarmkreise 1 + 2.
|
|
|
153
153
|
|
|
154
154
|
## Changelog
|
|
155
155
|
|
|
156
|
+
#### 3.0.3 (31.01.2022)
|
|
157
|
+
* (misanorot) changed burgle concept, added silent alarm at sharp inside, fixed little issues
|
|
156
158
|
|
|
157
159
|
#### 2.2.1 (20.01.2022)
|
|
158
160
|
* (misanorot) added notification when warnings at beginning night rest
|
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,6 +64,9 @@
|
|
|
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
|
});
|
|
@@ -83,11 +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
90
|
|
|
91
|
+
$('#opt_leave').change(leaving);
|
|
88
92
|
$('#opt_telegram').change(telChanging);
|
|
89
|
-
|
|
90
|
-
|
|
91
93
|
$('.sendTo_Chips').chips({
|
|
92
94
|
placeholder: 'Add adapter',
|
|
93
95
|
secondaryPlaceholder: '+instance'
|
|
@@ -104,12 +106,11 @@
|
|
|
104
106
|
});
|
|
105
107
|
});
|
|
106
108
|
list2chips('.sendTo_Chips', settings.sendTo || '', onChange);
|
|
107
|
-
|
|
108
109
|
$('#sayit_help').on('click', ()=> {
|
|
109
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.');
|
|
110
111
|
});
|
|
111
112
|
$('#circuits_help').on('click', ()=> {
|
|
112
|
-
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');
|
|
113
114
|
});
|
|
114
115
|
$('#test_sayit').on('click', ()=>{
|
|
115
116
|
const tts_instance = table2values('sayit');
|
|
@@ -156,12 +157,21 @@
|
|
|
156
157
|
obj.zone_five = table2values('zone_five');
|
|
157
158
|
obj.zone_six = table2values('zone_six');*/
|
|
158
159
|
obj.states = states;
|
|
160
|
+
obj.version = new_version;
|
|
159
161
|
callback(obj);
|
|
160
162
|
}
|
|
161
163
|
//##############################################
|
|
162
164
|
|
|
163
165
|
//########### HELPERS ###########
|
|
164
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
|
+
|
|
165
175
|
function checkTrigger(val, id) {
|
|
166
176
|
if (val === 'status.state_list') {
|
|
167
177
|
$('#shorts .values-input[data-name="trigger_val"][data-index="' + id + '"] option[value=true]').prop('disabled',true);
|
|
@@ -191,7 +201,6 @@ $('select').select()
|
|
|
191
201
|
|
|
192
202
|
function telChanging() {
|
|
193
203
|
let check = document.getElementById('opt_telegram').checked;
|
|
194
|
-
|
|
195
204
|
if (check) {
|
|
196
205
|
$('#user').prop('disabled', false);
|
|
197
206
|
$('#chatID').prop('disabled', false);
|
|
@@ -206,9 +215,7 @@ function telChanging() {
|
|
|
206
215
|
}
|
|
207
216
|
|
|
208
217
|
function leaving() {
|
|
209
|
-
|
|
210
218
|
let check = document.getElementById('opt_leave').checked;
|
|
211
|
-
|
|
212
219
|
if (check) {
|
|
213
220
|
$('#circuits .table-values-div .table-values [data-name="leave"]').each(function() {
|
|
214
221
|
$(this).prop('disabled', false);
|
|
@@ -568,11 +575,26 @@ function getName(obj) {
|
|
|
568
575
|
|
|
569
576
|
<div id="tab_settings" class="col s12 page">
|
|
570
577
|
<div class="row">
|
|
578
|
+
<div class="col s12 m2">
|
|
571
579
|
<form action="https://www.paypal.com/donate" method="post" target="_top">
|
|
572
580
|
<input type="hidden" name="hosted_button_id" value="BXTYTYW3D5MRU" />
|
|
573
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" />
|
|
574
582
|
<img alt="" border="0" src="https://www.paypal.com/de_DE/i/scr/pixel.gif" width="1" height="1" />
|
|
575
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>
|
|
576
598
|
</div>
|
|
577
599
|
<div class="row">
|
|
578
600
|
<div class="input-field col s4 m2 l1">
|
|
@@ -605,36 +627,6 @@ function getName(obj) {
|
|
|
605
627
|
<option value="min">min</option>
|
|
606
628
|
</select>
|
|
607
629
|
</div>
|
|
608
|
-
<div class="input-field col s4 m2 l1">
|
|
609
|
-
<i class="material-icons prefix">alarm</i>
|
|
610
|
-
<input id="time_silent"
|
|
611
|
-
type="number"
|
|
612
|
-
class="validate value tooltipped"
|
|
613
|
-
data-position="top"
|
|
614
|
-
data-tooltip="in sec">
|
|
615
|
-
<label for="time_silent" class="translate">time_silent</label>
|
|
616
|
-
</div>
|
|
617
|
-
<div class="input-field col s2 m1 l1">
|
|
618
|
-
<select id="time_silent_select" class="value">
|
|
619
|
-
<option value="sec">sec</option>
|
|
620
|
-
<option value="min">min</option>
|
|
621
|
-
</select>
|
|
622
|
-
</div>
|
|
623
|
-
<div class="input-field col s4 m2 l1">
|
|
624
|
-
<i class="material-icons prefix">alarm</i>
|
|
625
|
-
<input id="time_warning"
|
|
626
|
-
type="number"
|
|
627
|
-
class="validate value tooltipped"
|
|
628
|
-
data-position="top"
|
|
629
|
-
data-tooltip="in sec">
|
|
630
|
-
<label for="time_warning" class="translate">time_warning</label>
|
|
631
|
-
</div>
|
|
632
|
-
<div class="input-field col s2 m1 l1">
|
|
633
|
-
<select id="time_warning_select" class="value">
|
|
634
|
-
<option value="sec">sec</option>
|
|
635
|
-
<option value="min">min</option>
|
|
636
|
-
</select>
|
|
637
|
-
</div>
|
|
638
630
|
<div class="input-field col s6 m3 l2">
|
|
639
631
|
<i class="material-icons prefix">alarm</i>
|
|
640
632
|
<input id="alarm_flash"
|
|
@@ -644,14 +636,36 @@ function getName(obj) {
|
|
|
644
636
|
data-tooltip="in sec">
|
|
645
637
|
<label for="alarm_flash" class="translate">alarm_flash</label>
|
|
646
638
|
</div>
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
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>
|
|
655
669
|
</div>
|
|
656
670
|
</div>
|
|
657
671
|
<div class="row">
|
|
@@ -671,6 +685,32 @@ function getName(obj) {
|
|
|
671
685
|
</div>
|
|
672
686
|
</div>
|
|
673
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">
|
|
674
714
|
<!--
|
|
675
715
|
<div class="col s12">
|
|
676
716
|
<input type="checkbox" id="opt_night" class="value" /><label for="opt_night" class="translate">opt_night</label>
|
|
@@ -683,7 +723,7 @@ function getName(obj) {
|
|
|
683
723
|
<input type="checkbox" id="opt_warning" class="value" /><label for="opt_warning" class="translate">opt_warning</label>
|
|
684
724
|
</div>
|
|
685
725
|
<div class="col s12 m4 l2">
|
|
686
|
-
<input type="checkbox" id="
|
|
726
|
+
<input type="checkbox" id="opt_siren" class="value" /><label for="opt_siren" class="translate">opt_siren</label>
|
|
687
727
|
</div>
|
|
688
728
|
<div class="col s12 m4 l2">
|
|
689
729
|
<input type="checkbox" id="opt_leave" class="value" /><label for="opt_leave" class="translate">opt_leave</label>
|
|
@@ -764,6 +804,9 @@ function getName(obj) {
|
|
|
764
804
|
<div class="col s12 m6 l4">
|
|
765
805
|
<input type="checkbox" id="send_activation_warnings_inside" class="value" /><label for="send_activation_warnings_inside" class="translate">send_activation_warnings</label>
|
|
766
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>
|
|
767
810
|
</div>
|
|
768
811
|
<div class="row">
|
|
769
812
|
<div class="col s12">
|
|
@@ -813,7 +856,7 @@ function getName(obj) {
|
|
|
813
856
|
<a class="btn-floating waves-effect waves-light blue table-button-add" id="circuits_table"><i class="material-icons">add</i></a>
|
|
814
857
|
</div>
|
|
815
858
|
<div class="col s2 m1 l1 right">
|
|
816
|
-
<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>
|
|
817
860
|
</div>
|
|
818
861
|
</div>
|
|
819
862
|
<div class="table-values-div">
|
|
@@ -826,10 +869,11 @@ function getName(obj) {
|
|
|
826
869
|
<th data-buttons="edit" style="width: 40px" class="header"></th>
|
|
827
870
|
<th data-name="negativ" style="width: 100px" data-type="checkbox" class="header translate">negativ</th>
|
|
828
871
|
<th data-name="alarm" style="width: 100px" data-type="checkbox" class="header translate">alarm</th>
|
|
829
|
-
<th data-name="warning" style="width: 100px" data-type="checkbox" class="header translate">inside</th>
|
|
830
|
-
<th data-name="night" style="width: 130px" data-type="checkbox" class="header translate">notification</th>
|
|
831
872
|
<th data-name="delay" style="width: 100px" data-type="checkbox" class="header translate">delay</th>
|
|
832
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>
|
|
833
877
|
<th data-buttons="delete" style="width: 40px" class="header"></th>
|
|
834
878
|
</tr>
|
|
835
879
|
</thead>
|
|
@@ -912,27 +956,6 @@ function getName(obj) {
|
|
|
912
956
|
<textarea id="text_warning" class="materialize-textarea value"></textarea>
|
|
913
957
|
<label for="text_warning" class="translate">text_warning</label>
|
|
914
958
|
</div>
|
|
915
|
-
<div class="input-field col s9 m4 l3">
|
|
916
|
-
<i class="material-icons prefix">filter_5</i>
|
|
917
|
-
<textarea id="text_changes" class="materialize-textarea value"></textarea>
|
|
918
|
-
<label for="text_changes" class="translate">text_changes</label>
|
|
919
|
-
</div>
|
|
920
|
-
<div class="input-field col s3 m2 l1">
|
|
921
|
-
<select id="changes_repeat" class="value">
|
|
922
|
-
<option value="1">1x</option>
|
|
923
|
-
<option value="2">2x</option>
|
|
924
|
-
<option value="3">3x</option>
|
|
925
|
-
<option value="4">4x</option>
|
|
926
|
-
<option value="5">5x</option>
|
|
927
|
-
<option value="6">6x</option>
|
|
928
|
-
<option value="7">7x</option>
|
|
929
|
-
<option value="8">8x</option>
|
|
930
|
-
<option value="9">9x</option>
|
|
931
|
-
<option value="10">10x</option>
|
|
932
|
-
<option value="15">15x</option>
|
|
933
|
-
<option value="20">20x</option>
|
|
934
|
-
</select>
|
|
935
|
-
</div>
|
|
936
959
|
<div class="input-field col s9 m4 l3">
|
|
937
960
|
<i class="material-icons prefix">filter_6</i>
|
|
938
961
|
<textarea id="text_alarm" class="materialize-textarea value"></textarea>
|
|
@@ -1019,7 +1042,7 @@ function getName(obj) {
|
|
|
1019
1042
|
<thead>
|
|
1020
1043
|
<tr>
|
|
1021
1044
|
<th data-name="enabled" style="width: 50px" data-type="checkbox" class="header translate">active</th>
|
|
1022
|
-
<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>
|
|
1023
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>
|
|
1024
1047
|
<th data-name="name" data-type="text" class="header translate">Name</th>
|
|
1025
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': '您可以在单词选项卡上编辑通知'},
|
|
@@ -110,16 +141,16 @@ systemDictionary = {
|
|
|
110
141
|
'es': 'activación al salir durante la cuenta atrás',
|
|
111
142
|
'pl': 'aktywacja przy wyjściu podczas odliczania',
|
|
112
143
|
'zh-cn': '倒计时离开时激活' },
|
|
113
|
-
'
|
|
114
|
-
'de': '
|
|
115
|
-
'ru': '
|
|
116
|
-
'pt': '
|
|
117
|
-
'nl': '
|
|
118
|
-
'fr': "
|
|
119
|
-
'it': "
|
|
120
|
-
'es': '
|
|
121
|
-
'pl': '
|
|
122
|
-
'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': '内部爆破时激活外部警报器' },
|
|
123
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': '记录输出'},
|
|
124
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': '在夜间休息期间控制配置状态'},
|
|
125
156
|
'opt_night_silent': {'en': 'no speech output during night rest',
|
|
@@ -284,6 +315,16 @@ systemDictionary = {
|
|
|
284
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': '激活时间(秒)'},
|
|
285
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': '警报器的警笛时间在几秒钟内'},
|
|
286
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': '内部报警延迟尖锐'},
|
|
287
328
|
'time_warning': { 'en': 'Siren time at sharp inside',
|
|
288
329
|
'de': 'Sirenenzeit scharf innen',
|
|
289
330
|
'ru': 'Время сирены на резком внутри',
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
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
|
+
},
|
|
6
18
|
"2.2.1": {
|
|
7
19
|
"en": "added notification when warnings at beginning night rest",
|
|
8
20
|
"de": "Benachrichtigung bei Warnungen zu Beginn der Nachtruhe hinzugefügt",
|
|
@@ -155,6 +167,7 @@
|
|
|
155
167
|
"installedFrom": "misanorot/ioBroker.alarm"
|
|
156
168
|
},
|
|
157
169
|
"native": {
|
|
170
|
+
"new_version": false,
|
|
158
171
|
"circuits": [],
|
|
159
172
|
"shorts_in": [],
|
|
160
173
|
"shorts": [],
|
|
@@ -178,7 +191,7 @@
|
|
|
178
191
|
"opt_say_warn_changes": true,
|
|
179
192
|
"opt_night": true,
|
|
180
193
|
"opt_log": true,
|
|
181
|
-
"
|
|
194
|
+
"opt_siren": false,
|
|
182
195
|
"opt_leave": false,
|
|
183
196
|
"opt_warning": false,
|
|
184
197
|
"night_from": "",
|
|
@@ -195,6 +208,7 @@
|
|
|
195
208
|
"send_activation_warnings_night": true,
|
|
196
209
|
"send_activated_with_warnings": true,
|
|
197
210
|
"send_alarm_silent": true,
|
|
211
|
+
"send_alarm_silent_inside": true,
|
|
198
212
|
"send_failed": true,
|
|
199
213
|
"sayit": [],
|
|
200
214
|
"text_activated": "Alarmanlage aktiviert",
|
|
@@ -668,11 +682,11 @@
|
|
|
668
682
|
"native": {}
|
|
669
683
|
},
|
|
670
684
|
{
|
|
671
|
-
"_id": "
|
|
685
|
+
"_id": "status.siren_inside",
|
|
672
686
|
"type": "state",
|
|
673
687
|
"common": {
|
|
674
688
|
"role": "",
|
|
675
|
-
"name": "
|
|
689
|
+
"name": "Sharp inside siren",
|
|
676
690
|
"desc": "Changes in sharp inside circuit detected",
|
|
677
691
|
"type": "boolean",
|
|
678
692
|
"read": true,
|
package/main.js
CHANGED
|
@@ -64,7 +64,7 @@ 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,
|
|
@@ -212,6 +212,7 @@ function main() {
|
|
|
212
212
|
//################# ENABLE ####################################################
|
|
213
213
|
|
|
214
214
|
function enable(id, state){
|
|
215
|
+
if (activated || burgle) return;
|
|
215
216
|
let say = A.text_failed;
|
|
216
217
|
if(timer) {
|
|
217
218
|
clearInterval(timer);
|
|
@@ -282,22 +283,10 @@ function disable(){
|
|
|
282
283
|
adapter.setState('info.log', `${A.log_deact}`, true);
|
|
283
284
|
sayit(A.text_deactivated, 2);
|
|
284
285
|
if(log)adapter.log.info(`${A.log_deact}`);
|
|
285
|
-
adapter.setState('status.siren', false, true);
|
|
286
|
-
adapter.setState('status.silent_flash', false, true);
|
|
287
|
-
adapter.setState('status.alarm_flash', false, true);
|
|
288
|
-
adapter.setState('status.activated', false, true);
|
|
289
|
-
adapter.setState('status.deactivated', true, true);
|
|
290
286
|
adapter.setState('status.activated_with_warnings', false, true);
|
|
291
287
|
adapter.setState('status.activation_failed', false, true);
|
|
292
|
-
adapter.setState('status.siren', false, true);
|
|
293
|
-
adapter.setState('status.burglar_alarm', false, true);
|
|
294
|
-
adapter.setState('status.silent_alarm', false, true);
|
|
295
|
-
adapter.setState('status.state', 'deactivated', true);
|
|
296
|
-
adapter.setState('status.state_list',0, true);
|
|
297
|
-
adapter.setState('homekit.CurrentState', 3, true);
|
|
298
|
-
adapter.setState('homekit.TargetState', 3, true);
|
|
299
|
-
adapter.setState('use.list',0, true);
|
|
300
288
|
if(A.send_activation) messages(`${A.log_deact}`);
|
|
289
|
+
disableStates();
|
|
301
290
|
}else if (inside) {
|
|
302
291
|
inside_ends(true);
|
|
303
292
|
}else if (night_rest) {
|
|
@@ -310,7 +299,7 @@ function disable(){
|
|
|
310
299
|
|
|
311
300
|
//################# BURGALARY ####################################################
|
|
312
301
|
|
|
313
|
-
function burglary(id, state, silent){
|
|
302
|
+
function burglary(id, state, silent, indoor){
|
|
314
303
|
if(burgle) return;
|
|
315
304
|
if(silent_timer && silent) return;
|
|
316
305
|
let count = 0;
|
|
@@ -320,7 +309,8 @@ function burglary(id, state, silent){
|
|
|
320
309
|
if(silent){
|
|
321
310
|
adapter.setState('status.silent_alarm', true, true);
|
|
322
311
|
adapter.setState('status.state', 'silent alarm', true);
|
|
323
|
-
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}`);
|
|
324
314
|
if(A.silent_flash > 0) {
|
|
325
315
|
silent_interval = setInterval(()=>{
|
|
326
316
|
if(silent_i) {
|
|
@@ -359,25 +349,22 @@ function burglary(id, state, silent){
|
|
|
359
349
|
adapter.setState('status.burglar_alarm', true, true);
|
|
360
350
|
adapter.setState('status.silent_alarm', false, true);
|
|
361
351
|
adapter.setState('status.silent_flash', false, true);
|
|
362
|
-
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
|
+
}
|
|
363
365
|
adapter.setState('status.state', 'burgle', true);
|
|
364
366
|
adapter.setState('status.state_list', 3, true);
|
|
365
367
|
adapter.setState('homekit.CurrentState', 4, true);
|
|
366
|
-
if(A.alarm_flash > 0) {
|
|
367
|
-
alarm_interval = setInterval(()=>{
|
|
368
|
-
if(alarm_i) {
|
|
369
|
-
adapter.setState('status.alarm_flash', true, true);
|
|
370
|
-
alarm_i = false;
|
|
371
|
-
} else {
|
|
372
|
-
adapter.setState('status.alarm_flash', false, true);
|
|
373
|
-
alarm_i = true;
|
|
374
|
-
}
|
|
375
|
-
}, A.alarm_flash * 1000);
|
|
376
|
-
}
|
|
377
|
-
siren_timer = setTimeout(()=>{
|
|
378
|
-
adapter.setState('status.siren', false, true);
|
|
379
|
-
clearTimeout(siren_timer);
|
|
380
|
-
}, timeMode(A.time_alarm_select) * A.time_alarm);
|
|
381
368
|
}, timeMode(A.time_silent_select) * A.time_silent);
|
|
382
369
|
}
|
|
383
370
|
else if (!silent) {
|
|
@@ -385,7 +372,8 @@ function burglary(id, state, silent){
|
|
|
385
372
|
clearTimeout(silent_timer);
|
|
386
373
|
clearInterval(silent_interval);
|
|
387
374
|
clearInterval(silent_contdown);
|
|
388
|
-
if(A.
|
|
375
|
+
if(A.send_alarm_inside && indoor) messages(`${A.log_burgle} ${name}`);
|
|
376
|
+
if(A.send_alarm && !indoor) messages(`${A.log_burgle} ${name}`);
|
|
389
377
|
sayit(A.text_alarm, 6);
|
|
390
378
|
text_alarm_interval = setInterval(()=> {
|
|
391
379
|
if(count < alarm_repeat) {
|
|
@@ -398,21 +386,22 @@ function burglary(id, state, silent){
|
|
|
398
386
|
adapter.setState('status.burglar_alarm', true, true);
|
|
399
387
|
adapter.setState('status.silent_alarm', false, true);
|
|
400
388
|
adapter.setState('status.silent_flash', false, true);
|
|
401
|
-
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
|
+
}
|
|
402
402
|
adapter.setState('status.state', 'burgle', true);
|
|
403
403
|
adapter.setState('status.state_list', 3, true);
|
|
404
404
|
adapter.setState('homekit.CurrentState', 4, true);
|
|
405
|
-
if(A.alarm_flash > 0) {
|
|
406
|
-
alarm_interval = setInterval(()=>{
|
|
407
|
-
if(alarm_i) {
|
|
408
|
-
adapter.setState('status.alarm_flash', true, true);
|
|
409
|
-
alarm_i = false;
|
|
410
|
-
} else {
|
|
411
|
-
adapter.setState('status.alarm_flash', false, true);
|
|
412
|
-
alarm_i = true;
|
|
413
|
-
}
|
|
414
|
-
}, A.alarm_flash * 1000);
|
|
415
|
-
}
|
|
416
405
|
siren_timer = setTimeout(()=>{
|
|
417
406
|
adapter.setState('status.siren', false, true);
|
|
418
407
|
clearTimeout(siren_timer);
|
|
@@ -583,10 +572,10 @@ function change(id, state){
|
|
|
583
572
|
return;
|
|
584
573
|
}
|
|
585
574
|
else if(id === adapter.namespace + '.use.quit_changes'){
|
|
586
|
-
clearTimeout(
|
|
575
|
+
clearTimeout(siren_inside_timer);
|
|
587
576
|
clearTimeout(timer_notification_changes);
|
|
588
577
|
adapter.setState('status.activation_failed', false, true);
|
|
589
|
-
adapter.setState('
|
|
578
|
+
adapter.setState('status.siren_inside', false, true);
|
|
590
579
|
adapter.setState('info.notification_circuit_changes', false, true);
|
|
591
580
|
adapter.setState('other_alarms.one_changes', false, true);
|
|
592
581
|
adapter.setState('other_alarms.two_changes', false, true);
|
|
@@ -628,8 +617,8 @@ function change(id, state){
|
|
|
628
617
|
shortcuts('status.state', state.val);
|
|
629
618
|
return;
|
|
630
619
|
}
|
|
631
|
-
else if(id === adapter.namespace + '.
|
|
632
|
-
shortcuts('
|
|
620
|
+
else if(id === adapter.namespace + '.status.siren_inside'){
|
|
621
|
+
shortcuts('status.siren_inside', state.val);
|
|
633
622
|
return;
|
|
634
623
|
}
|
|
635
624
|
else if(id === adapter.namespace + '.info.notification_circuit_changes'){
|
|
@@ -727,33 +716,9 @@ function change(id, state){
|
|
|
727
716
|
return;
|
|
728
717
|
}
|
|
729
718
|
if(inside_ids.includes(id) && inside && isTrue(id, state)){
|
|
730
|
-
|
|
731
|
-
const name = get_name(id);
|
|
732
|
-
let say = A.text_changes;
|
|
733
|
-
adapter.setState('info.log', `${A.log_warn} ${name}`, true);
|
|
734
|
-
if (A.opt_list) adapter.setState('status.state', 'burgle', true);
|
|
735
|
-
if (A.opt_list) adapter.setState('status.state_list', 3, true);
|
|
736
|
-
if (A.opt_list) adapter.setState('homekit.CurrentState', 4, true);
|
|
737
|
-
adapter.setState('info.sharp_inside_siren', true, true);
|
|
738
|
-
if(log) adapter.log.info(`${A.log_warn} ${name}`);
|
|
739
|
-
if(A.send_alarm_inside) messages(`${A.log_warn} ${name}`);
|
|
740
|
-
if(A.opt_say_names){
|
|
741
|
-
say = say + ' ' + name;
|
|
742
|
-
}
|
|
743
|
-
sayit(say, 5);
|
|
744
|
-
text_changes_interval = setInterval(()=> {
|
|
745
|
-
if(count < changes_repeat) {
|
|
746
|
-
sayit(say, 5);
|
|
747
|
-
count++;
|
|
748
|
-
} else {
|
|
749
|
-
clearInterval(text_changes_interval);
|
|
750
|
-
}
|
|
751
|
-
}, 5000);
|
|
752
|
-
timer_inside_changes = setTimeout(()=>{
|
|
753
|
-
adapter.setState('info.sharp_inside_siren', false, true);
|
|
754
|
-
}, timeMode(A.time_warning_select) * A.time_warning);
|
|
755
|
-
return;
|
|
719
|
+
burglary(id, state, isSilent(id, true), true);
|
|
756
720
|
}
|
|
721
|
+
|
|
757
722
|
if(notification_ids.includes(id) && isTrue(id, state)){
|
|
758
723
|
if(!activated && !inside && !night_rest) return;
|
|
759
724
|
const name = get_name(id);
|
|
@@ -844,7 +809,7 @@ function set_subs(){
|
|
|
844
809
|
}
|
|
845
810
|
});
|
|
846
811
|
adapter.subscribeStates('info.log');
|
|
847
|
-
adapter.subscribeStates('
|
|
812
|
+
adapter.subscribeStates('status.siren_inside');
|
|
848
813
|
adapter.subscribeStates('info.notification_circuit_changes');
|
|
849
814
|
adapter.subscribeStates('other_alarms.one_changes');
|
|
850
815
|
adapter.subscribeStates('other_alarms.two_changes');
|
|
@@ -1002,6 +967,47 @@ function sayit(message, opt_val){
|
|
|
1002
967
|
|
|
1003
968
|
//################# HELPERS ####################################################
|
|
1004
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
|
+
|
|
1005
1011
|
function check_doubles() {
|
|
1006
1012
|
clean_ids.forEach((ele, i) => {
|
|
1007
1013
|
one_ids.forEach((item, i) => {
|
|
@@ -1014,12 +1020,21 @@ function check_doubles() {
|
|
|
1014
1020
|
|
|
1015
1021
|
}
|
|
1016
1022
|
|
|
1017
|
-
function isSilent(id) {
|
|
1018
|
-
|
|
1019
|
-
const
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
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
|
+
|
|
1023
1038
|
}
|
|
1024
1039
|
|
|
1025
1040
|
function timeMode(value) {
|
|
@@ -1064,8 +1079,8 @@ function inside_begins(){
|
|
|
1064
1079
|
adapter.setState('homekit.CurrentState', 0, true);
|
|
1065
1080
|
adapter.setState('homekit.TargetState', 0, true);
|
|
1066
1081
|
adapter.setState('use.list', 2, true);
|
|
1067
|
-
adapter.setState('status.activated',
|
|
1068
|
-
adapter.setState('status.deactivated',
|
|
1082
|
+
adapter.setState('status.activated', true, true);
|
|
1083
|
+
adapter.setState('status.deactivated', false, true);
|
|
1069
1084
|
}
|
|
1070
1085
|
}
|
|
1071
1086
|
|
|
@@ -1073,20 +1088,13 @@ function inside_ends(off){
|
|
|
1073
1088
|
if(inside){
|
|
1074
1089
|
inside = false;
|
|
1075
1090
|
if(off){
|
|
1076
|
-
clearTimeout(
|
|
1091
|
+
clearTimeout(siren_inside_timer);
|
|
1077
1092
|
clearTimeout(timer_notification_changes);
|
|
1078
1093
|
adapter.setState('info.log', `${A.log_warn_deact}`, true);
|
|
1079
1094
|
if(log)adapter.log.info(`${A.log_warn_deact}`);
|
|
1080
1095
|
if(A.send_activation_inside) messages(`${A.log_warn_deact}`);
|
|
1081
1096
|
sayit(A.text_warn_end, 0);
|
|
1082
|
-
|
|
1083
|
-
adapter.setState('status.state', 'deactivated', true);
|
|
1084
|
-
adapter.setState('status.state_list',0, true);
|
|
1085
|
-
adapter.setState('homekit.CurrentState', 3, true);
|
|
1086
|
-
adapter.setState('homekit.TargetState', 3, true);
|
|
1087
|
-
adapter.setState('use.list',0, true);
|
|
1088
|
-
adapter.setState('info.sharp_inside_siren', false, true);
|
|
1089
|
-
adapter.setState('info.notification_circuit_changes', false, true);
|
|
1097
|
+
disableStates();
|
|
1090
1098
|
}
|
|
1091
1099
|
|
|
1092
1100
|
}
|
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": {
|
|
@@ -80,5 +80,5 @@
|
|
|
80
80
|
"test:package": "mocha test/package --exit",
|
|
81
81
|
"test:unit": "mocha test/unit --exit"
|
|
82
82
|
},
|
|
83
|
-
"version": "
|
|
83
|
+
"version": "3.0.3"
|
|
84
84
|
}
|