iobroker-ucl 1.4.27 → 1.4.29

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.
@@ -9,6 +9,7 @@ tsc date.ts test.ts main.ts html.ts homematicClasses.ts homematicFunctions.ts zi
9
9
  // 2.) In package.json eine Nummer hochzählen bei der Version
10
10
 
11
11
  // 3.) Danach auf NPM Repository pushen: (unten im TERMINAL-Fenster) --> https://www.npmjs.com/package/iobroker-ucl
12
+ npm login ----> authentifizieren
12
13
  npm publish
13
14
 
14
15
  // 4.) In docker iobroker Container rein: (PUTTY in Umgebung Uwe / Bei Klaus einfach Portainer nehmen und in den iobroker Container gehen und dort auf Konsole)
@@ -21,7 +22,7 @@ npm update iobroker-ucl (initial installieren mit: npm install
21
22
 
22
23
  // 6.) In iobroker Weboberfläche die Javascript Instance restarten
23
24
 
24
-
25
+ // 7. Links im Menü (Icon mit den 3 kleinen Kreisen) auf Github pushen (einchecken) --> Müsste auf github dann aktuell sein: https://github.com/uwe72/iobroker-ucl.git
25
26
 
26
27
 
27
28
  Neuer Rechner alles wieder einrichten:
@@ -110,7 +110,7 @@ var AbstractHomematic = /** @class */ (function () {
110
110
  "def": 0,
111
111
  "smartName": {
112
112
  "de": smartName,
113
- "smartType": "LIGHT"
113
+ "smartType": "dimmer"
114
114
  }
115
115
  };
116
116
  this.adapter.setObject(alexaLampeLevel, objLevel);
@@ -116,7 +116,7 @@ export abstract class AbstractHomematic {
116
116
  "def": 0,
117
117
  "smartName": {
118
118
  "de": smartName,
119
- "smartType": "LIGHT"
119
+ "smartType": "dimmer"
120
120
  }
121
121
  };
122
122
  this.adapter.setObject(alexaLampeLevel, objLevel);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker-ucl",
3
- "version": "1.4.27",
3
+ "version": "1.4.29",
4
4
  "main": "main.js",
5
5
  "scripts": {
6
6
  "build": "tsc --build",
package/shellyClasses.js CHANGED
@@ -22,6 +22,7 @@ var deviceShellyLampeRGB = "Lampe RGB";
22
22
  var deviceShellySteckdose = "Steckdose";
23
23
  var deviceShellyRollladen = "Rollladen";
24
24
  var deviceShellySensor = "Sensor";
25
+ var deviceShellyRauchmelder = "Rauchmelder";
25
26
  var AbstractShelly = /** @class */ (function () {
26
27
  function AbstractShelly(adapter, id, etage, raum, device, baseState) {
27
28
  this.adapter = adapter;
@@ -122,7 +123,7 @@ var AbstractShelly = /** @class */ (function () {
122
123
  "def": 0,
123
124
  "smartName": {
124
125
  "de": smartName,
125
- "smartType": "LIGHT"
126
+ "smartType": "dimmer"
126
127
  }
127
128
  };
128
129
  this.adapter.setObject(alexaLampeLevel, objLevel);
@@ -742,6 +743,44 @@ var ShellySensor = /** @class */ (function (_super) {
742
743
  };
743
744
  return ShellySensor;
744
745
  }(AbstractShelly));
746
+ var ShellyRauchmelder = /** @class */ (function (_super) {
747
+ __extends(ShellyRauchmelder, _super);
748
+ function ShellyRauchmelder(adapter, id, etage, raum, device, baseState) {
749
+ return _super.call(this, adapter, id, etage, raum, device, baseState) || this;
750
+ }
751
+ ShellyRauchmelder.prototype.isAlarm = function () {
752
+ return this.adapter.getState(this.baseState + ".Smoke0.Alarm").val;
753
+ };
754
+ ShellyRauchmelder.prototype.isOnline = function () {
755
+ var status = this.adapter.getState(this.baseState + ".online").val;
756
+ if (status && status.ts) {
757
+ var lastUpdate = status.ts; // Zeitstempel in Millisekunden
758
+ var jetzt = Date.now();
759
+ var differenzMinuten = Math.floor((jetzt - lastUpdate) / (1000 * 60));
760
+ var differenzStunden = (differenzMinuten / 60).toFixed(1);
761
+ // Schwellenwert: 24 Stunden + 1 Stunde Puffer = 1500 Minuten
762
+ var maxInaktivitaet = 1500;
763
+ if (differenzMinuten > maxInaktivitaet) {
764
+ return false;
765
+ // log("WARNUNG: Rauchmelder seit " + differenzStunden + " Stunden inaktiv! Ggf. Batterie leer.", "warn");
766
+ // Hier könntest du eine Telegram-Nachricht senden
767
+ // sendTo("telegram.0", "Rauchmelder Wohnzimmer ist seit " + differenzStunden + "h offline!");
768
+ }
769
+ else {
770
+ return true;
771
+ //log("Rauchmelder ist okay. Letztes Lebenszeichen vor " + differenzMinuten + " Minuten.");
772
+ }
773
+ }
774
+ else {
775
+ return false;
776
+ //log("Datenpunkt konnte nicht gelesen werden.", "error");
777
+ }
778
+ };
779
+ ShellyRauchmelder.prototype.getCategory = function () {
780
+ return deviceShellyRauchmelder;
781
+ };
782
+ return ShellyRauchmelder;
783
+ }(AbstractShelly));
745
784
  module.exports = {
746
785
  AbstractShelly: AbstractShelly,
747
786
  ShellyLampeWeiss: ShellyLampeWeiss,
@@ -754,10 +793,12 @@ module.exports = {
754
793
  ShellySteckdose: ShellySteckdose,
755
794
  ShellyRollladen: ShellyRollladen,
756
795
  ShellySensor: ShellySensor,
796
+ ShellyRauchmelder: ShellyRauchmelder,
757
797
  deviceShellyLampeWeiss: deviceShellyLampeWeiss,
758
798
  deviceShellyDimmer: deviceShellyDimmer,
759
799
  deviceShellyLampeRGB: deviceShellyLampeRGB,
760
800
  deviceShellySteckdose: deviceShellySteckdose,
761
801
  deviceShellyRollladen: deviceShellyRollladen,
762
- deviceShellySensor: deviceShellySensor
802
+ deviceShellySensor: deviceShellySensor,
803
+ deviceShellyRauchmelder: deviceShellyRauchmelder
763
804
  };
package/shellyClasses.ts CHANGED
@@ -4,6 +4,7 @@ const deviceShellyLampeRGB: string = "Lampe RGB"
4
4
  const deviceShellySteckdose: string = "Steckdose"
5
5
  const deviceShellyRollladen: string = "Rollladen"
6
6
  const deviceShellySensor: string = "Sensor"
7
+ const deviceShellyRauchmelder: string = "Rauchmelder"
7
8
 
8
9
  export abstract class AbstractShelly {
9
10
  protected baseState: string;
@@ -127,7 +128,7 @@ export abstract class AbstractShelly {
127
128
  "def": 0,
128
129
  "smartName": {
129
130
  "de": smartName,
130
- "smartType": "LIGHT"
131
+ "smartType": "dimmer"
131
132
  }
132
133
  };
133
134
  this.adapter.setObject(alexaLampeLevel, objLevel);
@@ -877,9 +878,52 @@ class ShellySensor extends AbstractShelly {
877
878
  }
878
879
  }
879
880
 
881
+ class ShellyRauchmelder extends AbstractShelly {
882
+
883
+ constructor(adapter: any, id: number, etage: string, raum: string, device: string, baseState: string) {
884
+ super(adapter, id, etage, raum, device, baseState);
885
+ }
886
+
887
+ public isAlarm() : boolean {
888
+ return this.adapter.getState(this.baseState + ".Smoke0.Alarm").val;
889
+ }
890
+
891
+ public isOnline() : boolean {
892
+ const status = this.adapter.getState(this.baseState + ".online").val;
893
+
894
+ if (status && status.ts) {
895
+ const lastUpdate = status.ts; // Zeitstempel in Millisekunden
896
+ const jetzt = Date.now();
897
+ const differenzMinuten = Math.floor((jetzt - lastUpdate) / (1000 * 60));
898
+ const differenzStunden = (differenzMinuten / 60).toFixed(1);
899
+
900
+ // Schwellenwert: 24 Stunden + 1 Stunde Puffer = 1500 Minuten
901
+ const maxInaktivitaet = 1500;
902
+
903
+ if (differenzMinuten > maxInaktivitaet) {
904
+ return false;
905
+ // log("WARNUNG: Rauchmelder seit " + differenzStunden + " Stunden inaktiv! Ggf. Batterie leer.", "warn");
906
+ // Hier könntest du eine Telegram-Nachricht senden
907
+ // sendTo("telegram.0", "Rauchmelder Wohnzimmer ist seit " + differenzStunden + "h offline!");
908
+ } else {
909
+ return true;
910
+ //log("Rauchmelder ist okay. Letztes Lebenszeichen vor " + differenzMinuten + " Minuten.");
911
+ }
912
+ } else {
913
+ return false;
914
+ //log("Datenpunkt konnte nicht gelesen werden.", "error");
915
+ }
916
+ }
917
+
918
+ public getCategory() : string {
919
+ return deviceShellyRauchmelder;
920
+ }
921
+ }
922
+
923
+
880
924
  module.exports = {
881
- AbstractShelly, ShellyLampeWeiss, ShellyDimmerAlexaScheme, ShellyDimmerTasterScheme, ShellyDimmer, ShellyRGBAlexaScheme, ShellyRGBTasterScheme, ShellyLampeRGB, ShellySteckdose, ShellyRollladen,ShellySensor,
882
- deviceShellyLampeWeiss, deviceShellyDimmer, deviceShellyLampeRGB, deviceShellySteckdose, deviceShellyRollladen, deviceShellySensor
925
+ AbstractShelly, ShellyLampeWeiss, ShellyDimmerAlexaScheme, ShellyDimmerTasterScheme, ShellyDimmer, ShellyRGBAlexaScheme, ShellyRGBTasterScheme, ShellyLampeRGB, ShellySteckdose, ShellyRollladen,ShellySensor,ShellyRauchmelder,
926
+ deviceShellyLampeWeiss, deviceShellyDimmer, deviceShellyLampeRGB, deviceShellySteckdose, deviceShellyRollladen, deviceShellySensor, deviceShellyRauchmelder
883
927
  };
884
928
 
885
929
 
@@ -1,17 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createShellySensor = createShellySensor;
4
+ exports.createShellyRauchmelder = createShellyRauchmelder;
4
5
  exports.createShellyRollladen = createShellyRollladen;
5
6
  exports.createShellyDimmer = createShellyDimmer;
6
7
  exports.createShellyLampe = createShellyLampe;
7
8
  exports.createShellySteckdose = createShellySteckdose;
8
9
  exports.loadShellyRollladen = loadShellyRollladen;
9
10
  exports.loadShellySensoren = loadShellySensoren;
11
+ exports.loadShellyRauchmelder = loadShellyRauchmelder;
10
12
  exports.loadShellyDimmer = loadShellyDimmer;
11
13
  exports.loadShellyLampenWeiss = loadShellyLampenWeiss;
12
14
  exports.loadShellySteckdosen = loadShellySteckdosen;
13
15
  exports.loadShellyDevicesAll = loadShellyDevicesAll;
14
- var _a = require('./shellyClasses.js'), ShellyLampeWeiss = _a.ShellyLampeWeiss, ShellyDimmerAlexaScheme = _a.ShellyDimmerAlexaScheme, ShellyDimmerTasterScheme = _a.ShellyDimmerTasterScheme, ShellyDimmer = _a.ShellyDimmer, ShellyRGBAlexaScheme = _a.ShellyRGBAlexaScheme, ShellyRGBTasterScheme = _a.ShellyRGBTasterScheme, ShellyLampeRGB = _a.ShellyLampeRGB, ShellySteckdose = _a.ShellySteckdose, ShellyRollladen = _a.ShellyRollladen, ShellySensor = _a.ShellySensor, deviceShellyLampeWeiss = _a.deviceShellyLampeWeiss, deviceShellyDimmer = _a.deviceShellyDimmer, deviceShellyLampeRGB = _a.deviceShellyLampeRGB, deviceShellySteckdose = _a.deviceShellySteckdose, deviceShellyRollladen = _a.deviceShellyRollladen, deviceShellySensor = _a.deviceShellySensor;
16
+ var _a = require('./shellyClasses.js'), ShellyLampeWeiss = _a.ShellyLampeWeiss, ShellyDimmerAlexaScheme = _a.ShellyDimmerAlexaScheme, ShellyDimmerTasterScheme = _a.ShellyDimmerTasterScheme, ShellyDimmer = _a.ShellyDimmer, ShellyRGBAlexaScheme = _a.ShellyRGBAlexaScheme, ShellyRGBTasterScheme = _a.ShellyRGBTasterScheme, ShellyLampeRGB = _a.ShellyLampeRGB, ShellySteckdose = _a.ShellySteckdose, ShellyRollladen = _a.ShellyRollladen, ShellySensor = _a.ShellySensor, deviceShellyLampeWeiss = _a.deviceShellyLampeWeiss, deviceShellyDimmer = _a.deviceShellyDimmer, deviceShellyLampeRGB = _a.deviceShellyLampeRGB, deviceShellySteckdose = _a.deviceShellySteckdose, deviceShellyRollladen = _a.deviceShellyRollladen, deviceShellySensor = _a.deviceShellySensor, deviceShellyRauchmelder = _a.deviceShellyRauchmelder;
15
17
  var attributeRawID = "rawId";
16
18
  var attributeBaseState = "baseState";
17
19
  var attributeEtage = "etage";
@@ -95,6 +97,10 @@ console.log("test");
95
97
  function createShellySensor(adapter, rawId, etage, raum, device, baseState) {
96
98
  createShellyDevice(adapter, rawId, etage, raum, device, baseState, deviceShellySensor);
97
99
  }
100
+ // Rauchmelder:
101
+ function createShellyRauchmelder(adapter, rawId, etage, raum, device, baseState) {
102
+ createShellyDevice(adapter, rawId, etage, raum, device, baseState, deviceShellyRauchmelder);
103
+ }
98
104
  // Rollladen:
99
105
  function createShellyRollladen(adapter, rawId, etage, raum, device, baseState) {
100
106
  createShellyDevice(adapter, rawId, etage, raum, device, baseState, deviceShellyRollladen);
@@ -482,6 +488,28 @@ function loadShellySensoren(adapter) {
482
488
  cacheSensorenArray = sortArray(cacheSensorenArray);
483
489
  return cacheSensorenArray;
484
490
  }
491
+ var cacheRauchmelderArray = null;
492
+ function loadShellyRauchmelder(adapter) {
493
+ if (cacheRauchmelderArray != null) {
494
+ return cacheRauchmelderArray;
495
+ }
496
+ // @ts-ignore
497
+ cacheRauchmelderArray = [];
498
+ adapter.$('state[id=0_userdata.0.devices.shelly.*.*.category]').each(function (datenpunktKey) {
499
+ var datenpunktPraefix = datenpunktKey.replaceAll(".category", "");
500
+ if (adapter.getState(datenpunktKey).val == deviceShellyRauchmelder) {
501
+ // @ts-ignore
502
+ cacheRauchmelderArray.push(new ShellyRauchmelder(adapter, adapter.getState(datenpunktPraefix + "." + attributeRawID).val, // [0] Device-ID (z.B. 1 --> In der Anzeige wird daraus "H01")
503
+ adapter.getState(datenpunktPraefix + "." + attributeEtage).val, // [1] Etage/Bereich (z.B. EG)
504
+ adapter.getState(datenpunktPraefix + "." + attributeRaum).val, // [2] Raum/Unterbereich (z.B. Wohnzimmer)
505
+ adapter.getState(datenpunktPraefix + "." + attributeDevice).val, // [3] Device (z.B. Stehlampe)
506
+ adapter.getState(datenpunktPraefix + "." + attributeBaseState).val // [4] Datenpunkt Device (z.B. hm-rpc.1.001B9D898F9CBC)
507
+ ));
508
+ }
509
+ });
510
+ cacheRauchmelderArray = sortArray(cacheRauchmelderArray);
511
+ return cacheRauchmelderArray;
512
+ }
485
513
  var cacheDimmerArray = null;
486
514
  function loadShellyDimmer(adapter) {
487
515
  if (cacheDimmerArray != null) {
@@ -729,4 +757,4 @@ function getEtageSortIndex(etage) {
729
757
  return "d";
730
758
  }
731
759
  }
732
- module.exports = { createShellyDevice: createShellyDevice, createShellySensor: createShellySensor, createShellyRollladen: createShellyRollladen, createShellyDimmer: createShellyDimmer, createShellyLampe: createShellyLampe, createShellySteckdose: createShellySteckdose, loadShellyRollladen: loadShellyRollladen, loadShellySensoren: loadShellySensoren, loadShellyDimmer: loadShellyDimmer, loadShellyLampenWeiss: loadShellyLampenWeiss, loadShellySteckdosen: loadShellySteckdosen, loadShellyDevicesAll: loadShellyDevicesAll, clearShellyCaches: clearShellyCaches };
760
+ module.exports = { createShellyDevice: createShellyDevice, createShellySensor: createShellySensor, createShellyRollladen: createShellyRollladen, createShellyDimmer: createShellyDimmer, createShellyLampe: createShellyLampe, createShellySteckdose: createShellySteckdose, loadShellyRollladen: loadShellyRollladen, loadShellySensoren: loadShellySensoren, loadShellyRauchmelder: loadShellyRauchmelder, loadShellyDimmer: loadShellyDimmer, loadShellyLampenWeiss: loadShellyLampenWeiss, loadShellySteckdosen: loadShellySteckdosen, loadShellyDevicesAll: loadShellyDevicesAll, clearShellyCaches: clearShellyCaches };
@@ -1,5 +1,5 @@
1
1
  const {ShellyLampeWeiss, ShellyDimmerAlexaScheme, ShellyDimmerTasterScheme, ShellyDimmer, ShellyRGBAlexaScheme, ShellyRGBTasterScheme, ShellyLampeRGB, ShellySteckdose, ShellyRollladen,ShellySensor,
2
- deviceShellyLampeWeiss, deviceShellyDimmer, deviceShellyLampeRGB, deviceShellySteckdose, deviceShellyRollladen, deviceShellySensor } = require('./shellyClasses.js');
2
+ deviceShellyLampeWeiss, deviceShellyDimmer, deviceShellyLampeRGB, deviceShellySteckdose, deviceShellyRollladen, deviceShellySensor, deviceShellyRauchmelder } = require('./shellyClasses.js');
3
3
 
4
4
  const attributeRawID = "rawId";
5
5
  const attributeBaseState = "baseState";
@@ -102,6 +102,11 @@ export function createShellySensor(adapter: any, rawId: number, etage: string,
102
102
  createShellyDevice(adapter, rawId, etage, raum, device, baseState, deviceShellySensor);
103
103
  }
104
104
 
105
+ // Rauchmelder:
106
+ export function createShellyRauchmelder(adapter: any, rawId: number, etage: string, raum: string, device: string, baseState: string) {
107
+ createShellyDevice(adapter, rawId, etage, raum, device, baseState, deviceShellyRauchmelder);
108
+ }
109
+
105
110
  // Rollladen:
106
111
  export function createShellyRollladen(adapter: any, rawId: number, etage: string, raum: string, device: string, baseState: string) {
107
112
  createShellyDevice(adapter, rawId, etage, raum, device, baseState, deviceShellyRollladen);
@@ -518,6 +523,31 @@ export function loadShellySensoren(adapter: any) {
518
523
  return cacheSensorenArray;
519
524
  }
520
525
 
526
+ var cacheRauchmelderArray = null;
527
+ export function loadShellyRauchmelder(adapter: any) {
528
+ if (cacheRauchmelderArray != null) {
529
+ return cacheRauchmelderArray;
530
+ }
531
+ // @ts-ignore
532
+ cacheRauchmelderArray = [];
533
+ adapter.$('state[id=0_userdata.0.devices.shelly.*.*.category]').each(datenpunktKey => {
534
+ let datenpunktPraefix = datenpunktKey.replaceAll(".category", "");
535
+ if (adapter.getState(datenpunktKey).val == deviceShellyRauchmelder) {
536
+ // @ts-ignore
537
+ cacheRauchmelderArray.push(new ShellyRauchmelder(adapter,
538
+ adapter.getState(datenpunktPraefix + "." + attributeRawID).val, // [0] Device-ID (z.B. 1 --> In der Anzeige wird daraus "H01")
539
+ adapter.getState(datenpunktPraefix + "." + attributeEtage).val, // [1] Etage/Bereich (z.B. EG)
540
+ adapter.getState(datenpunktPraefix + "." + attributeRaum).val, // [2] Raum/Unterbereich (z.B. Wohnzimmer)
541
+ adapter.getState(datenpunktPraefix + "." + attributeDevice).val, // [3] Device (z.B. Stehlampe)
542
+ adapter.getState(datenpunktPraefix + "." + attributeBaseState).val // [4] Datenpunkt Device (z.B. hm-rpc.1.001B9D898F9CBC)
543
+ ));
544
+ }
545
+ });
546
+ cacheRauchmelderArray = sortArray(cacheRauchmelderArray);
547
+ return cacheRauchmelderArray;
548
+ }
549
+
550
+
521
551
  var cacheDimmerArray = null;
522
552
  export function loadShellyDimmer(adapter: any) {
523
553
  if (cacheDimmerArray != null) {
@@ -824,4 +854,4 @@ function getEtageSortIndex(etage: string) {
824
854
  }
825
855
 
826
856
 
827
- module.exports = { createShellyDevice, createShellySensor, createShellyRollladen, createShellyDimmer, createShellyLampe, createShellySteckdose, loadShellyRollladen, loadShellySensoren, loadShellyDimmer, loadShellyLampenWeiss, loadShellySteckdosen, loadShellyDevicesAll, clearShellyCaches };
857
+ module.exports = { createShellyDevice, createShellySensor, createShellyRollladen, createShellyDimmer, createShellyLampe, createShellySteckdose, loadShellyRollladen, loadShellySensoren, loadShellyRauchmelder, loadShellyDimmer, loadShellyLampenWeiss, loadShellySteckdosen, loadShellyDevicesAll, clearShellyCaches };
package/zigbeeClasses.js CHANGED
@@ -104,7 +104,7 @@ var AbstractZigbee = /** @class */ (function () {
104
104
  "def": 0,
105
105
  "smartName": {
106
106
  "de": smartName,
107
- "smartType": "LIGHT"
107
+ "smartType": "dimmer"
108
108
  }
109
109
  };
110
110
  this.adapter.setObject(alexaLampeLevel, objLevel);
package/zigbeeClasses.ts CHANGED
@@ -108,7 +108,7 @@ export abstract class AbstractZigbee {
108
108
  "def": 0,
109
109
  "smartName": {
110
110
  "de": smartName,
111
- "smartType": "LIGHT"
111
+ "smartType": "dimmer"
112
112
  }
113
113
  };
114
114
  this.adapter.setObject(alexaLampeLevel, objLevel);