iobroker.alarm 2.1.1 → 3.0.4

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2019-2021 misanorot <audi16v@gmx.de>
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
  ![Number of Installations](http://iobroker.live/badges/alarm-installed.svg) ![Number of Installations](http://iobroker.live/badges/alarm-stable.svg)[![NPM version](http://img.shields.io/npm/v/iobroker.alarm.svg)](https://www.npmjs.com/package/iobroker.alarm)
5
5
  [![Downloads](https://img.shields.io/npm/dm/iobroker.alarm.svg)](https://www.npmjs.com/package/iobroker.alarm)
6
- [![Dependency Status](https://img.shields.io/david/misanorot/iobroker.alarm.svg)](https://david-dm.org/misanorot/iobroker.alarm)
7
6
  [![Known Vulnerabilities](https://snyk.io/test/github/misanorot/ioBroker.alarm/badge.svg)](https://snyk.io/test/github/misanorot/ioBroker.alarm)
8
7
 
9
8
  [![NPM](https://nodei.co/npm/iobroker.alarm.png?downloads=true)](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
- - Auslösezeit bei Warnungen/Sirene innen -> Bei Auslösung des Benachrichtigungskreises oder scharf innen Kreises, wird der jeweils zugehörige Datenpunkt für die Zeit auf true gesetzt
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,15 @@ 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
+
155
165
  #### 2.1.1 (07.11.2021)
156
166
  * (misanorot) added countdown state for silent alarm
157
167
 
@@ -245,4 +255,4 @@ Beinhaltet die Informationen für die "anderen" Alarmkreise 1 + 2.
245
255
  ## License
246
256
  MIT License
247
257
 
248
- Copyright (c) 2019-2021 misanorot <audi16v@gmx.de>
258
+ Copyright (c) 2019-2022 misanorot <audi16v@gmx.de>
@@ -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 *** Scharf innen => entspricht Aussenhautüberwachung, Betreiber ist anwesend *** Benachrichtigungen => Es werden Meldungen während scharf und scharf innen aussgegeben *** Stiller Alarm => Bei Aktivierung wird erst der stille statt der richtige Alarm ausgelöst. *** negieren => triggert den State auf false ');
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 leaving() {
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
- <div class="input-field col s6 m3 l2">
630
- <i class="material-icons prefix">alarm</i>
631
- <input id="silent_flash"
632
- type="number"
633
- class="validate value tooltipped"
634
- data-position="top"
635
- data-tooltip="in sec">
636
- <label for="silent_flash" class="translate">silent_flash</label>
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="opt_list" class="value" /><label for="opt_list" class="translate">opt_list</label>
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;info.sharp_inside_siren;info.notification_circuit_changes;status.alarm_flash;status.silent_flash;other_alarms.one_changes;other_alarms.two_changes" class="header translate">Name</th>
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': { 'en': 'Notification', 'de': 'Benachrichtigung', 'ru': 'уведомление', 'pt': 'Notificação', 'nl': 'Kennisgeving', 'fr': 'Notification', 'it': 'Notifica', 'es': 'Notificación', 'pl': 'Powiadomienie', 'zh-cn': '通知'},
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
- 'opt_list': { 'en': 'set list states to burgle when sharp inside triggered',
105
- 'de': 'List States auf Einbruch setzen, wenn scharf Innen ausgelöst wird',
106
- 'ru': 'установить список состояний для взлома при резком срабатывании внутри',
107
- 'pt': 'definir os estados da lista para burgle quando afiado for acionado',
108
- 'nl': 'stel lijststaten in om in te breken wanneer scherp van binnen wordt geactiveerd',
109
- 'fr': "définir les états de liste pour cambrioler lorsque l'intérieur pointu est déclenché",
110
- 'it': "imposta gli stati dell'elenco per svaligiare quando viene attivato l'interno tagliente",
111
- 'es': 'Establecer estados de lista para robar cuando se activa el interior agudo',
112
- 'pl': 'ustawić stany listy na włamanie po wyzwoleniu ostrego środka',
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 wenn Warnungen bei Aktivierung',
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,56 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "alarm",
4
- "version": "2.1.1",
4
+ "version": "3.0.4",
5
5
  "news": {
6
+ "3.0.4": {
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
+ },
6
54
  "2.1.1": {
7
55
  "en": "added countdown state for silent alarm",
8
56
  "de": "Countdown-Status für stillen Alarm hinzugefügt",
@@ -119,6 +167,7 @@
119
167
  "installedFrom": "misanorot/ioBroker.alarm"
120
168
  },
121
169
  "native": {
170
+ "new_version": false,
122
171
  "circuits": [],
123
172
  "shorts_in": [],
124
173
  "shorts": [],
@@ -142,7 +191,7 @@
142
191
  "opt_say_warn_changes": true,
143
192
  "opt_night": true,
144
193
  "opt_log": true,
145
- "opt_list": false,
194
+ "opt_siren": false,
146
195
  "opt_leave": false,
147
196
  "opt_warning": false,
148
197
  "night_from": "",
@@ -156,8 +205,10 @@
156
205
  "send_activation_inside": false,
157
206
  "send_activation_warnings": true,
158
207
  "send_activation_warnings_inside": true,
208
+ "send_activation_warnings_night": true,
159
209
  "send_activated_with_warnings": true,
160
210
  "send_alarm_silent": true,
211
+ "send_alarm_silent_inside": true,
161
212
  "send_failed": true,
162
213
  "sayit": [],
163
214
  "text_activated": "Alarmanlage aktiviert",
@@ -200,7 +251,10 @@
200
251
  "log_one": "Alarmanlage meldet einen Feueralarm:",
201
252
  "log_two": "Alarmanlage meldet einen Wasseralarm:",
202
253
  "one_name": "Feueralarm",
203
- "two_name": "Wasseralarm"
254
+ "two_name": "Wasseralarm",
255
+ "opt_telegram": false,
256
+ "chatID": "",
257
+ "user": ""
204
258
  },
205
259
  "objects": [],
206
260
  "instanceObjects": [
@@ -628,11 +682,11 @@
628
682
  "native": {}
629
683
  },
630
684
  {
631
- "_id": "info.sharp_inside_siren",
685
+ "_id": "status.siren_inside",
632
686
  "type": "state",
633
687
  "common": {
634
688
  "role": "",
635
- "name": "Changes sharp inside circuit",
689
+ "name": "Sharp inside siren",
636
690
  "desc": "Changes in sharp inside circuit detected",
637
691
  "type": "boolean",
638
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
- timer_inside_changes = null,
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,11 @@ 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);
288
+ adapter.setState('status.activated', false, true);
300
289
  if(A.send_activation) messages(`${A.log_deact}`);
290
+ disableStates();
301
291
  }else if (inside) {
302
292
  inside_ends(true);
303
293
  }else if (night_rest) {
@@ -310,7 +300,7 @@ function disable(){
310
300
 
311
301
  //################# BURGALARY ####################################################
312
302
 
313
- function burglary(id, state, silent){
303
+ function burglary(id, state, silent, indoor){
314
304
  if(burgle) return;
315
305
  if(silent_timer && silent) return;
316
306
  let count = 0;
@@ -320,7 +310,8 @@ function burglary(id, state, silent){
320
310
  if(silent){
321
311
  adapter.setState('status.silent_alarm', true, true);
322
312
  adapter.setState('status.state', 'silent alarm', true);
323
- if(A.send_alarm_silent) messages(`${A.log_burgle} ${name}`);
313
+ if (A.send_alarm_silent_inside && indoor) messages(`${A.log_burgle} ${name}`);
314
+ if(A.send_alarm_silent && !indoor) messages(`${A.log_burgle} ${name}`);
324
315
  if(A.silent_flash > 0) {
325
316
  silent_interval = setInterval(()=>{
326
317
  if(silent_i) {
@@ -359,25 +350,22 @@ function burglary(id, state, silent){
359
350
  adapter.setState('status.burglar_alarm', true, true);
360
351
  adapter.setState('status.silent_alarm', false, true);
361
352
  adapter.setState('status.silent_flash', false, true);
362
- adapter.setState('status.siren', true, true);
353
+ adapter.setState('status.siren_inside', true, true);
354
+ siren_inside_timer = setTimeout(()=>{
355
+ adapter.setState('status.siren_inside', false, true);
356
+ }, timeMode(A.time_warning_select) * A.time_warning);
357
+ if (A.opt_siren && indoor) {
358
+ alarmSiren();
359
+ alarmFlash();
360
+ }
361
+ if (!indoor) {
362
+ adapter.setState('status.siren', true, true);
363
+ alarmSiren();
364
+ alarmFlash();
365
+ }
363
366
  adapter.setState('status.state', 'burgle', true);
364
367
  adapter.setState('status.state_list', 3, true);
365
368
  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
369
  }, timeMode(A.time_silent_select) * A.time_silent);
382
370
  }
383
371
  else if (!silent) {
@@ -385,7 +373,8 @@ function burglary(id, state, silent){
385
373
  clearTimeout(silent_timer);
386
374
  clearInterval(silent_interval);
387
375
  clearInterval(silent_contdown);
388
- if(A.send_alarm) messages(`${A.log_burgle} ${name}`);
376
+ if(A.send_alarm_inside && indoor) messages(`${A.log_burgle} ${name}`);
377
+ if(A.send_alarm && !indoor) messages(`${A.log_burgle} ${name}`);
389
378
  sayit(A.text_alarm, 6);
390
379
  text_alarm_interval = setInterval(()=> {
391
380
  if(count < alarm_repeat) {
@@ -398,21 +387,22 @@ function burglary(id, state, silent){
398
387
  adapter.setState('status.burglar_alarm', true, true);
399
388
  adapter.setState('status.silent_alarm', false, true);
400
389
  adapter.setState('status.silent_flash', false, true);
401
- adapter.setState('status.siren', true, true);
390
+ adapter.setState('status.siren_inside', true, true);
391
+ siren_inside_timer = setTimeout(()=>{
392
+ adapter.setState('status.siren_inside', false, true);
393
+ }, timeMode(A.time_warning_select) * A.time_warning);
394
+ if (A.opt_siren && indoor) {
395
+ alarmSiren();
396
+ alarmFlash();
397
+ }
398
+ if (!indoor) {
399
+ adapter.setState('status.siren', true, true);
400
+ alarmSiren();
401
+ alarmFlash();
402
+ }
402
403
  adapter.setState('status.state', 'burgle', true);
403
404
  adapter.setState('status.state_list', 3, true);
404
405
  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
406
  siren_timer = setTimeout(()=>{
417
407
  adapter.setState('status.siren', false, true);
418
408
  clearTimeout(siren_timer);
@@ -583,10 +573,10 @@ function change(id, state){
583
573
  return;
584
574
  }
585
575
  else if(id === adapter.namespace + '.use.quit_changes'){
586
- clearTimeout(timer_inside_changes);
576
+ clearTimeout(siren_inside_timer);
587
577
  clearTimeout(timer_notification_changes);
588
578
  adapter.setState('status.activation_failed', false, true);
589
- adapter.setState('info.sharp_inside_siren', false, true);
579
+ adapter.setState('status.siren_inside', false, true);
590
580
  adapter.setState('info.notification_circuit_changes', false, true);
591
581
  adapter.setState('other_alarms.one_changes', false, true);
592
582
  adapter.setState('other_alarms.two_changes', false, true);
@@ -628,8 +618,8 @@ function change(id, state){
628
618
  shortcuts('status.state', state.val);
629
619
  return;
630
620
  }
631
- else if(id === adapter.namespace + '.info.sharp_inside_siren'){
632
- shortcuts('info.sharp_inside_siren', state.val);
621
+ else if(id === adapter.namespace + '.status.siren_inside'){
622
+ shortcuts('status.siren_inside', state.val);
633
623
  return;
634
624
  }
635
625
  else if(id === adapter.namespace + '.info.notification_circuit_changes'){
@@ -727,33 +717,9 @@ function change(id, state){
727
717
  return;
728
718
  }
729
719
  if(inside_ids.includes(id) && inside && isTrue(id, state)){
730
- let count = 0;
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;
720
+ burglary(id, state, isSilent(id, true), true);
756
721
  }
722
+
757
723
  if(notification_ids.includes(id) && isTrue(id, state)){
758
724
  if(!activated && !inside && !night_rest) return;
759
725
  const name = get_name(id);
@@ -844,7 +810,7 @@ function set_subs(){
844
810
  }
845
811
  });
846
812
  adapter.subscribeStates('info.log');
847
- adapter.subscribeStates('info.sharp_inside_siren');
813
+ adapter.subscribeStates('status.siren_inside');
848
814
  adapter.subscribeStates('info.notification_circuit_changes');
849
815
  adapter.subscribeStates('other_alarms.one_changes');
850
816
  adapter.subscribeStates('other_alarms.two_changes');
@@ -858,9 +824,15 @@ function set_subs(){
858
824
 
859
825
  function messages(content){
860
826
  if(send_instances.length){
827
+ const reg = new RegExp('telegram');
861
828
  send_instances.forEach((ele)=>{
862
- adapter.log.debug(`Send message to ${ele}, message: ${content}`);
863
- adapter.sendTo(ele, content);
829
+ if (reg.test(ele) && A.opt_telegram) {
830
+ adapter.log.debug(`Send message to ${ele} with special parameter, message: text: ${content}, user: ${A.user}, chatID: ${A.chatID}`);
831
+ adapter.sendTo(ele, 'send', {'text':content, 'user': A.user, 'chatId': A.chatID});
832
+ } else {
833
+ adapter.log.debug(`Send message to ${ele}, message: ${content}`);
834
+ adapter.sendTo(ele, {'text':content});
835
+ }
864
836
  });
865
837
  }
866
838
  }
@@ -996,6 +968,45 @@ function sayit(message, opt_val){
996
968
 
997
969
  //################# HELPERS ####################################################
998
970
 
971
+ function alarmSiren() {
972
+ adapter.setState('status.siren', true, true);
973
+ siren_timer = setTimeout(()=>{
974
+ adapter.setState('status.siren', false, true);
975
+ clearTimeout(siren_timer);
976
+ }, timeMode(A.time_alarm_select) * A.time_alarm);
977
+ }
978
+
979
+ function alarmFlash() {
980
+ if(A.alarm_flash > 0) {
981
+ alarm_interval = setInterval(()=>{
982
+ if(alarm_i) {
983
+ adapter.setState('status.alarm_flash', true, true);
984
+ alarm_i = false;
985
+ } else {
986
+ adapter.setState('status.alarm_flash', false, true);
987
+ alarm_i = true;
988
+ }
989
+ }, A.alarm_flash * 1000);
990
+ }
991
+ }
992
+
993
+ function disableStates() {
994
+ adapter.setState('status.deactivated', true, true);
995
+ adapter.setState('status.state', 'deactivated', true);
996
+ adapter.setState('status.state_list',0, true);
997
+ adapter.setState('homekit.CurrentState', 3, true);
998
+ adapter.setState('homekit.TargetState', 3, true);
999
+ adapter.setState('use.list',0, true);
1000
+ adapter.setState('status.siren_inside', false, true);
1001
+ adapter.setState('status.siren', false, true);
1002
+ adapter.setState('info.notification_circuit_changes', false, true);
1003
+ adapter.setState('status.silent_flash', false, true);
1004
+ adapter.setState('status.alarm_flash', false, true);
1005
+ adapter.setState('status.burglar_alarm', false, true);
1006
+ adapter.setState('status.silent_alarm', false, true);
1007
+ }
1008
+
1009
+
999
1010
  function check_doubles() {
1000
1011
  clean_ids.forEach((ele, i) => {
1001
1012
  one_ids.forEach((item, i) => {
@@ -1008,12 +1019,21 @@ function check_doubles() {
1008
1019
 
1009
1020
  }
1010
1021
 
1011
- function isSilent(id) {
1012
- const temp = A.circuits.findIndex((obj)=>{
1013
- const reg = new RegExp(id);
1014
- return reg.test(obj.name_id);
1015
- });
1016
- return A.circuits[temp].delay;
1022
+ function isSilent(id, indoor) {
1023
+ if (indoor) {
1024
+ const temp = A.circuits.findIndex((obj)=>{
1025
+ const reg = new RegExp(id);
1026
+ return reg.test(obj.name_id);
1027
+ });
1028
+ return A.circuits[temp].delay_inside;
1029
+ } else {
1030
+ const temp = A.circuits.findIndex((obj)=>{
1031
+ const reg = new RegExp(id);
1032
+ return reg.test(obj.name_id);
1033
+ });
1034
+ return A.circuits[temp].delay;
1035
+ }
1036
+
1017
1037
  }
1018
1038
 
1019
1039
  function timeMode(value) {
@@ -1059,7 +1079,7 @@ function inside_begins(){
1059
1079
  adapter.setState('homekit.TargetState', 0, true);
1060
1080
  adapter.setState('use.list', 2, true);
1061
1081
  adapter.setState('status.activated', false, true);
1062
- adapter.setState('status.deactivated', true, true);
1082
+ adapter.setState('status.deactivated', false, true);
1063
1083
  }
1064
1084
  }
1065
1085
 
@@ -1067,20 +1087,14 @@ function inside_ends(off){
1067
1087
  if(inside){
1068
1088
  inside = false;
1069
1089
  if(off){
1070
- clearTimeout(timer_inside_changes);
1090
+ clearTimeout(siren_inside_timer);
1071
1091
  clearTimeout(timer_notification_changes);
1072
1092
  adapter.setState('info.log', `${A.log_warn_deact}`, true);
1073
1093
  if(log)adapter.log.info(`${A.log_warn_deact}`);
1074
1094
  if(A.send_activation_inside) messages(`${A.log_warn_deact}`);
1075
1095
  sayit(A.text_warn_end, 0);
1076
1096
  adapter.setState('status.sharp_inside_activated', false, true);
1077
- adapter.setState('status.state', 'deactivated', true);
1078
- adapter.setState('status.state_list',0, true);
1079
- adapter.setState('homekit.CurrentState', 3, true);
1080
- adapter.setState('homekit.TargetState', 3, true);
1081
- adapter.setState('use.list',0, true);
1082
- adapter.setState('info.sharp_inside_siren', false, true);
1083
- adapter.setState('info.notification_circuit_changes', false, true);
1097
+ disableStates();
1084
1098
  }
1085
1099
 
1086
1100
  }
@@ -1105,7 +1119,7 @@ function sleep_begin(auto) {
1105
1119
  adapter.setState('use.list', 4, true);
1106
1120
  if(is_notification){
1107
1121
  let say = A.text_warning;
1108
- //if(night_message) messages(`${A.log_nights_b_w} ${names_notification}`);
1122
+ if(A.send_activation_warnings_night) messages(`${A.log_nights_b_w} ${names_notification}`);
1109
1123
  adapter.setState('info.log', `${A.log_nights_b_w} ${names_notification}`, true);
1110
1124
  if(log) adapter.log.info(`${A.log_nights_b_w} ${names_notification}`);
1111
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@2.1.1",
3
+ "_id": "iobroker.alarm@3.0.4",
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#db96e71c91e2e21d8cf7a725bd2e5a35624816d1",
25
+ "_resolved": "github:misanorot/ioBroker.alarm#7808aadd3a1a21733062b86f49a4f3e970bd6743",
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": "2.1.1"
83
+ "version": "3.0.4"
85
84
  }