hoffmation-base 0.1.1 → 0.1.5

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.
Files changed (113) hide show
  1. package/.eslintrc.js +27 -27
  2. package/.github/workflows/npm-publish.yml +50 -0
  3. package/.prettierrc.js +9 -9
  4. package/LICENSE +21 -21
  5. package/index.js +1 -1
  6. package/models/connectionCallbacks.ts +13 -13
  7. package/models/daytime.ts +3 -3
  8. package/models/deviceConfig.ts +8 -8
  9. package/models/dimmerSettings.ts +5 -5
  10. package/models/iTemperaturDataPoint.ts +9 -9
  11. package/models/lampSettings.ts +5 -5
  12. package/models/ledSettings.ts +19 -19
  13. package/models/logLevel.ts +9 -9
  14. package/models/persistence/BasicRoomInfo.ts +3 -3
  15. package/models/persistence/DailyMovementCount.ts +3 -3
  16. package/models/persistence/RoomDetailInfo.ts +4 -4
  17. package/models/persistence/temperaturDataPoint.ts +12 -12
  18. package/models/persistence/todaysCount.ts +3 -3
  19. package/models/rooms/RoomBase.ts +357 -357
  20. package/models/rooms/RoomSettings/RoomSettings.ts +159 -159
  21. package/models/rooms/RoomSettings/hmIPRoomSettings.ts +53 -53
  22. package/models/rooms/RoomSettings/iRoomDefaultSettings.ts +17 -17
  23. package/models/rooms/RoomSettings/readme.md +17 -17
  24. package/models/rooms/RoomSettings/zigbeeRoomSettings.ts +51 -51
  25. package/models/rooms/iRoomImportEnforcer.ts +3 -3
  26. package/models/rooms/readme.md +11 -11
  27. package/models/temperaturSettings.ts +22 -22
  28. package/models/timeCallback.ts +90 -90
  29. package/package.json +1 -1
  30. package/server/config/config-readme.md +19 -19
  31. package/server/config/iConfig.ts +53 -53
  32. package/server/config/private/mainConfig.json +64 -64
  33. package/server/devices/DeviceInfo.ts +66 -66
  34. package/server/devices/Griffe.ts +31 -31
  35. package/server/devices/Heizgruppen.ts +91 -91
  36. package/server/devices/Rollos.ts +48 -48
  37. package/server/devices/deviceUpdater.ts +72 -72
  38. package/server/devices/devices.ts +189 -189
  39. package/server/devices/groups/fensterGroup.ts +175 -175
  40. package/server/devices/groups/heatGroup.ts +32 -32
  41. package/server/devices/groups/lampenGroup.ts +88 -88
  42. package/server/devices/groups/praesenzGroup.ts +182 -182
  43. package/server/devices/groups/smokeGroup.ts +16 -16
  44. package/server/devices/groups/sonosGroup.ts +33 -33
  45. package/server/devices/groups/tasterGroup.ts +48 -48
  46. package/server/devices/groups/waterGroup.ts +16 -16
  47. package/server/devices/hmIPDevices/Fenster.ts +114 -114
  48. package/server/devices/hmIPDevices/FensterPosition.ts +5 -5
  49. package/server/devices/hmIPDevices/TuerPosition.ts +4 -4
  50. package/server/devices/hmIPDevices/hmIpBewegung.ts +126 -126
  51. package/server/devices/hmIPDevices/hmIpDevice.ts +90 -90
  52. package/server/devices/hmIPDevices/hmIpDeviceType.ts +14 -14
  53. package/server/devices/hmIPDevices/hmIpGriff.ts +143 -143
  54. package/server/devices/hmIPDevices/hmIpHeizgruppe.ts +172 -172
  55. package/server/devices/hmIPDevices/hmIpHeizung.ts +69 -69
  56. package/server/devices/hmIPDevices/hmIpLampe.ts +119 -119
  57. package/server/devices/hmIPDevices/hmIpPraezenz.ts +99 -99
  58. package/server/devices/hmIPDevices/hmIpRoll.ts +133 -133
  59. package/server/devices/hmIPDevices/hmIpTaster.ts +82 -73
  60. package/server/devices/hmIPDevices/hmIpTherm.ts +19 -19
  61. package/server/devices/hmIPDevices/hmIpTuer.ts +115 -115
  62. package/server/devices/hmIPDevices/hmIpWippe.ts +55 -55
  63. package/server/devices/iDeviceUpdater.ts +4 -4
  64. package/server/devices/iIoBrokerDevice.ts +44 -44
  65. package/server/devices/iTaster.ts +6 -0
  66. package/server/devices/{hmIPDevices/hmIpTaste.ts → taste.ts} +84 -72
  67. package/server/devices/wledDevice.ts +124 -124
  68. package/server/devices/zigbee/ZigbeeActuator.ts +113 -113
  69. package/server/devices/zigbee/zigbeeAquaraVibra.ts +171 -171
  70. package/server/devices/zigbee/zigbeeAquaraWater.ts +94 -94
  71. package/server/devices/zigbee/zigbeeBlitzShp.ts +77 -77
  72. package/server/devices/zigbee/zigbeeDevice.ts +115 -115
  73. package/server/devices/zigbee/zigbeeDeviceType.ts +13 -13
  74. package/server/devices/zigbee/zigbeeHeimanSmoke.ts +99 -99
  75. package/server/devices/zigbee/zigbeeIkeaSteckdose.ts +31 -31
  76. package/server/devices/zigbee/zigbeeIlluActuator.ts +37 -37
  77. package/server/devices/zigbee/zigbeeIlluDimmer.ts +165 -165
  78. package/server/devices/zigbee/zigbeeIlluLampe.ts +33 -33
  79. package/server/devices/zigbee/zigbeeIlluLedRGBCCT.ts +137 -137
  80. package/server/ioBroker/connection.ts +1655 -1655
  81. package/server/ioBroker/ioBroker.main.ts +99 -99
  82. package/server/ioBroker/socketIOAuthInfo.ts +5 -5
  83. package/server/ioBroker/socketIOConnectOptions.ts +6 -6
  84. package/server/ioBroker/socketIOLogging.ts +29 -29
  85. package/server/ioBroker/socketIOVisCommand.ts +11 -11
  86. package/server/services/HTTPSOptions.ts +14 -14
  87. package/server/services/Sonos/OwnSonosDevices.ts +9 -0
  88. package/server/services/Sonos/mp3-server.ts +75 -75
  89. package/server/services/Sonos/polly-service.ts +100 -100
  90. package/server/services/Sonos/sonos-service.ts +194 -199
  91. package/server/services/Telegram/telegram-Commands.ts +237 -215
  92. package/server/services/Telegram/telegram-service.ts +171 -171
  93. package/server/services/Telegram/telegramMessageCalback.ts +11 -11
  94. package/server/services/calendar/muell-tonne.ts +82 -83
  95. package/server/services/calendar/m/303/274ll-service.ts +147 -146
  96. package/server/services/dbo/persist.ts +125 -125
  97. package/server/services/https-service.ts +71 -71
  98. package/server/services/log-service.ts +69 -69
  99. package/server/services/news-service.ts +81 -81
  100. package/server/services/settings-service.ts +15 -15
  101. package/server/services/time-callback-service.ts +223 -223
  102. package/server/services/utils/ringstorage.ts +24 -24
  103. package/server/services/utils/utils.ts +52 -52
  104. package/server/services/weather/weather-alert.ts +7 -7
  105. package/server/services/weather/weather-current.ts +26 -26
  106. package/server/services/weather/weather-daily.ts +22 -22
  107. package/server/services/weather/weather-feelsLike.ts +6 -6
  108. package/server/services/weather/weather-hourly.ts +17 -17
  109. package/server/services/weather/weather-item.ts +6 -6
  110. package/server/services/weather/weather-minutes.ts +4 -4
  111. package/server/services/weather/weather-service.ts +277 -277
  112. package/server/services/weather/weather-temp.ts +8 -8
  113. package/tsconfig.json +58 -58
@@ -1,22 +1,22 @@
1
- import { Daytime } from './daytime';
2
-
3
- export class TemperaturSettings {
4
- public constructor(
5
- public start: Daytime,
6
- public end: Daytime,
7
- public temperatur: number,
8
- public active: boolean = true,
9
- ) {}
10
-
11
- public isNowInRange(): boolean {
12
- const now: number = new Date().getTime();
13
- const todayStart: number = new Date().setHours(this.start.hour, this.start.minute);
14
- if (now < todayStart) {
15
- return false;
16
- }
17
-
18
- const todayEnd: number = new Date().setHours(this.end.hour, this.end.minute);
19
-
20
- return now < todayEnd;
21
- }
22
- }
1
+ import { Daytime } from './daytime';
2
+
3
+ export class TemperaturSettings {
4
+ public constructor(
5
+ public start: Daytime,
6
+ public end: Daytime,
7
+ public temperatur: number,
8
+ public active: boolean = true,
9
+ ) {}
10
+
11
+ public isNowInRange(): boolean {
12
+ const now: number = new Date().getTime();
13
+ const todayStart: number = new Date().setHours(this.start.hour, this.start.minute);
14
+ if (now < todayStart) {
15
+ return false;
16
+ }
17
+
18
+ const todayEnd: number = new Date().setHours(this.end.hour, this.end.minute);
19
+
20
+ return now < todayEnd;
21
+ }
22
+ }
@@ -1,90 +1,90 @@
1
- import { LogLevel } from './logLevel';
2
- import { ServerLogService } from '../server/services/log-service';
3
- import { SunTimeOffsets, TimeCallbackService } from '../server/services/time-callback-service';
4
-
5
- export class TimeCallback {
6
- public lastDone: Date = new Date(0);
7
- public nextToDo?: Date;
8
-
9
- constructor(
10
- public name: string,
11
- public type: TimeCallbackType,
12
- public cFunction: () => void,
13
- public minuteOffset: number,
14
- public hours?: number,
15
- public minutes?: number,
16
- public sunTimeOffset?: SunTimeOffsets,
17
- ) {}
18
-
19
- public recalcNextToDo(now: Date): void {
20
- const today: Date = new Date(now.getTime());
21
- today.setHours(0, 0, 0, 0);
22
- switch (this.type) {
23
- case TimeCallbackType.TimeOfDay:
24
- if (this.hours === undefined) {
25
- this.hours = 0;
26
- }
27
-
28
- if (this.minutes === undefined) {
29
- this.minutes = 0;
30
- }
31
-
32
- this.nextToDo = new Date(
33
- today.getTime() + this.hours * 60 * 60 * 1000 + (this.minutes + this.minuteOffset) * 60 * 1000,
34
- );
35
-
36
- if (this.nextToDo < now) {
37
- // Heute ist schon abgelaufen, also morgen festlegen
38
- this.nextToDo = new Date(this.nextToDo.getTime() + 24 * 60 * 60 * 1000);
39
- }
40
-
41
- ServerLogService.writeLog(
42
- LogLevel.Trace,
43
- `Nächste Zeitevent für "${this.name}" um ${this.nextToDo.toLocaleTimeString('de-DE')}`,
44
- );
45
- break;
46
- case TimeCallbackType.Sunrise:
47
- let fixedSRDate: Date = new Date(TimeCallbackService.nextSunRise.getTime() + this.minuteOffset * 60 * 1000);
48
- if (this.sunTimeOffset) {
49
- const nextMinSR: Date = this.sunTimeOffset.getNextMinimumSunrise();
50
- if (fixedSRDate.getDate() === nextMinSR.getDate()) {
51
- fixedSRDate = nextMinSR;
52
- }
53
- }
54
- if (now > fixedSRDate) {
55
- return;
56
- }
57
-
58
- ServerLogService.writeLog(
59
- LogLevel.Trace,
60
- `Nächste Zeitevent für "${this.name}" um ${fixedSRDate.toLocaleTimeString('de-DE')}`,
61
- );
62
- this.nextToDo = fixedSRDate;
63
- break;
64
- case TimeCallbackType.SunSet:
65
- let fixedSSDate: Date = new Date(TimeCallbackService.nextSunSet.getTime() + this.minuteOffset * 60 * 1000);
66
- if (this.sunTimeOffset) {
67
- const nextMaxSS: Date = this.sunTimeOffset.getNextMaximumSunset();
68
- if (fixedSSDate.getDate() === nextMaxSS.getDate()) {
69
- fixedSSDate = nextMaxSS;
70
- }
71
- }
72
- if (now > fixedSSDate) {
73
- return;
74
- }
75
-
76
- ServerLogService.writeLog(
77
- LogLevel.Trace,
78
- `Nächste Zeitevent für "${this.name}" um ${fixedSSDate.toLocaleTimeString('de-DE')}`,
79
- );
80
- this.nextToDo = fixedSSDate;
81
- break;
82
- }
83
- }
84
- }
85
-
86
- export enum TimeCallbackType {
87
- TimeOfDay = 1,
88
- Sunrise = 2,
89
- SunSet = 3,
90
- }
1
+ import { LogLevel } from './logLevel';
2
+ import { ServerLogService } from '../server/services/log-service';
3
+ import { SunTimeOffsets, TimeCallbackService } from '../server/services/time-callback-service';
4
+
5
+ export class TimeCallback {
6
+ public lastDone: Date = new Date(0);
7
+ public nextToDo?: Date;
8
+
9
+ constructor(
10
+ public name: string,
11
+ public type: TimeCallbackType,
12
+ public cFunction: () => void,
13
+ public minuteOffset: number,
14
+ public hours?: number,
15
+ public minutes?: number,
16
+ public sunTimeOffset?: SunTimeOffsets,
17
+ ) {}
18
+
19
+ public recalcNextToDo(now: Date): void {
20
+ const today: Date = new Date(now.getTime());
21
+ today.setHours(0, 0, 0, 0);
22
+ switch (this.type) {
23
+ case TimeCallbackType.TimeOfDay:
24
+ if (this.hours === undefined) {
25
+ this.hours = 0;
26
+ }
27
+
28
+ if (this.minutes === undefined) {
29
+ this.minutes = 0;
30
+ }
31
+
32
+ this.nextToDo = new Date(
33
+ today.getTime() + this.hours * 60 * 60 * 1000 + (this.minutes + this.minuteOffset) * 60 * 1000,
34
+ );
35
+
36
+ if (this.nextToDo < now) {
37
+ // Heute ist schon abgelaufen, also morgen festlegen
38
+ this.nextToDo = new Date(this.nextToDo.getTime() + 24 * 60 * 60 * 1000);
39
+ }
40
+
41
+ ServerLogService.writeLog(
42
+ LogLevel.Trace,
43
+ `Nächste Zeitevent für "${this.name}" um ${this.nextToDo.toLocaleTimeString('de-DE')}`,
44
+ );
45
+ break;
46
+ case TimeCallbackType.Sunrise:
47
+ let fixedSRDate: Date = new Date(TimeCallbackService.nextSunRise.getTime() + this.minuteOffset * 60 * 1000);
48
+ if (this.sunTimeOffset) {
49
+ const nextMinSR: Date = this.sunTimeOffset.getNextMinimumSunrise();
50
+ if (fixedSRDate.getDate() === nextMinSR.getDate()) {
51
+ fixedSRDate = nextMinSR;
52
+ }
53
+ }
54
+ if (now > fixedSRDate) {
55
+ return;
56
+ }
57
+
58
+ ServerLogService.writeLog(
59
+ LogLevel.Trace,
60
+ `Nächste Zeitevent für "${this.name}" um ${fixedSRDate.toLocaleTimeString('de-DE')}`,
61
+ );
62
+ this.nextToDo = fixedSRDate;
63
+ break;
64
+ case TimeCallbackType.SunSet:
65
+ let fixedSSDate: Date = new Date(TimeCallbackService.nextSunSet.getTime() + this.minuteOffset * 60 * 1000);
66
+ if (this.sunTimeOffset) {
67
+ const nextMaxSS: Date = this.sunTimeOffset.getNextMaximumSunset();
68
+ if (fixedSSDate.getDate() === nextMaxSS.getDate()) {
69
+ fixedSSDate = nextMaxSS;
70
+ }
71
+ }
72
+ if (now > fixedSSDate) {
73
+ return;
74
+ }
75
+
76
+ ServerLogService.writeLog(
77
+ LogLevel.Trace,
78
+ `Nächste Zeitevent für "${this.name}" um ${fixedSSDate.toLocaleTimeString('de-DE')}`,
79
+ );
80
+ this.nextToDo = fixedSSDate;
81
+ break;
82
+ }
83
+ }
84
+ }
85
+
86
+ export enum TimeCallbackType {
87
+ TimeOfDay = 1,
88
+ Sunrise = 2,
89
+ SunSet = 3,
90
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "hoffmation-base",
3
3
  "description": "Base Libraries and functions for own Hoffmation projects",
4
- "version": "0.1.1",
4
+ "version": "0.1.5",
5
5
  "main": "index.js",
6
6
  "repository": {
7
7
  "type": "git",
@@ -1,19 +1,19 @@
1
- # Config
2
- This home automation system is configured using multiple files which are described below.
3
-
4
- ## Device Config
5
- To highly decrease workload manually entering device data from ioBroker
6
- you can simply download your whole object tree from within the ioBroker -> objects page.
7
-
8
- The resulting `.json` should be placed within `.\server\config\private` folder, renamed to `devices.json`
9
-
10
- ## Main Config
11
- Please place a `mainConfig.json` in the `.\server\config\private` folder.
12
-
13
- The file should contain all the desired services, which definitions can be found within the `iConfig.ts` file.
14
-
15
- ## RoomConfig
16
- Please use the `.\models\rooms\Raumdefinition.xlsm` excel sheet to
17
- generate a `RoomConfig.txt`. As this needs running a specific node script
18
- afterwards you should follow the steps within `.\models\rooms\readme.md`
19
-
1
+ # Config
2
+ This home automation system is configured using multiple files which are described below.
3
+
4
+ ## Device Config
5
+ To highly decrease workload manually entering device data from ioBroker
6
+ you can simply download your whole object tree from within the ioBroker -> objects page.
7
+
8
+ The resulting `.json` should be placed within `.\server\config\private` folder, renamed to `devices.json`
9
+
10
+ ## Main Config
11
+ Please place a `mainConfig.json` in the `.\server\config\private` folder.
12
+
13
+ The file should contain all the desired services, which definitions can be found within the `iConfig.ts` file.
14
+
15
+ ## RoomConfig
16
+ Please use the `.\models\rooms\Raumdefinition.xlsm` excel sheet to
17
+ generate a `RoomConfig.txt`. As this needs running a specific node script
18
+ afterwards you should follow the steps within `.\models\rooms\readme.md`
19
+
@@ -1,53 +1,53 @@
1
- import { LogLevel } from '../../models/logLevel';
2
- import { iRoomDefaultSettings } from '../../models/rooms/RoomSettings/iRoomDefaultSettings';
3
-
4
- export interface iConfig {
5
- roomDefault: iRoomDefaultSettings;
6
- timeSettings: iTimeSettings;
7
- ioBrokerUrl: string;
8
- telegram?: iTelegramSettings;
9
- polly?: iPollySettings;
10
- mp3Server?: iMp3Settings;
11
- weather?: iWeatherSettings;
12
- muell?: iMuellSettings;
13
- }
14
-
15
- export interface iTimePair {
16
- hours: number;
17
- minutes: number;
18
- }
19
-
20
- export interface iTimeSettings {
21
- nightStart: iTimePair;
22
- nightEnd: iTimePair;
23
- }
24
-
25
- export interface iTelegramSettings {
26
- logLevel: LogLevel;
27
- telegramToken: string;
28
- allowedIDs: number[];
29
- subscribedIDs: number[];
30
- }
31
-
32
- export interface iPollySettings {
33
- mp3Path: string;
34
- region: string;
35
- signatureVersion: string;
36
- accessKeyId: string;
37
- secretAccessKey: string;
38
- voiceID: string;
39
- }
40
-
41
- export interface iMp3Settings {
42
- path: string;
43
- }
44
-
45
- export interface iWeatherSettings {
46
- lattitude: string;
47
- longitude: string;
48
- appid: string;
49
- }
50
-
51
- export interface iMuellSettings {
52
- calendarURL: string;
53
- }
1
+ import { LogLevel } from '../../models/logLevel';
2
+ import { iRoomDefaultSettings } from '../../models/rooms/RoomSettings/iRoomDefaultSettings';
3
+
4
+ export interface iConfig {
5
+ roomDefault: iRoomDefaultSettings;
6
+ timeSettings: iTimeSettings;
7
+ ioBrokerUrl: string;
8
+ telegram?: iTelegramSettings;
9
+ polly?: iPollySettings;
10
+ mp3Server?: iMp3Settings;
11
+ weather?: iWeatherSettings;
12
+ muell?: iMuellSettings;
13
+ }
14
+
15
+ export interface iTimePair {
16
+ hours: number;
17
+ minutes: number;
18
+ }
19
+
20
+ export interface iTimeSettings {
21
+ nightStart: iTimePair;
22
+ nightEnd: iTimePair;
23
+ }
24
+
25
+ export interface iTelegramSettings {
26
+ logLevel: LogLevel;
27
+ telegramToken: string;
28
+ allowedIDs: number[];
29
+ subscribedIDs: number[];
30
+ }
31
+
32
+ export interface iPollySettings {
33
+ mp3Path: string;
34
+ region: string;
35
+ signatureVersion: string;
36
+ accessKeyId: string;
37
+ secretAccessKey: string;
38
+ voiceID: string;
39
+ }
40
+
41
+ export interface iMp3Settings {
42
+ path: string;
43
+ }
44
+
45
+ export interface iWeatherSettings {
46
+ lattitude: string;
47
+ longitude: string;
48
+ appid: string;
49
+ }
50
+
51
+ export interface iMuellSettings {
52
+ calendarURL: string;
53
+ }
@@ -1,64 +1,64 @@
1
- {
2
- "ioBrokerUrl": "http://xxx.xxx.xxx.xxx:8xx4",
3
- "timeSettings": {
4
- "nightStart": {
5
- "hours": 23,
6
- "minutes": 45
7
- },
8
- "nightEnd": {
9
- "hours": 6,
10
- "minutes": 30
11
- }
12
- },
13
- "roomDefault": {
14
- "lampenBeiBewegung": true,
15
- "lichtSonnenAufgangAus": true,
16
- "sonnenUntergangRollos": true,
17
- "sonnenAufgangRollos": true,
18
- "movementResetTimer": 240,
19
- "sonnenUntergangRolloDelay": 15,
20
- "sonnenUntergangLampenDelay": 15,
21
- "sonnenUntergangRolloMaxTime": {
22
- "hours": 21,
23
- "minutes": 30
24
- },
25
- "sonnenAufgangRolloMinTime": {
26
- "hours": 7,
27
- "minutes": 30
28
- },
29
- "sonnenAufgangRolloDelay": 35,
30
- "sonnenAufgangLampenDelay": 15,
31
- "lightIfNoWindows": false
32
- },
33
- "telegram": {
34
- "logLevel": 1,
35
- "telegramToken": "15xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXU",
36
- "allowedIDs": [
37
- 111111111,
38
- 111111111
39
- ],
40
- "subscribedIDs": [
41
- 111111111,
42
- 111111111
43
- ]
44
- },
45
- "mp3Server": {
46
- "path": "//XXXXXXXXXX/XXXXX/XXXXXX/XXX/ttsMP3/"
47
- },
48
- "muell": {
49
- "calendarURL": "https://xxxxxxxxxxxxxxxxxxxxx.de/abfuhrkalender?format=ical&street=xxxxxxxx&number=xx"
50
- },
51
- "polly": {
52
- "mp3Path": "//xxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/ttsMP3/",
53
- "region": "eu-central-1",
54
- "signatureVersion": "v4",
55
- "accessKeyId": "xxxxxxxxxxxxxxxxxxxx",
56
- "secretAccessKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
57
- "voiceID": "Vicki"
58
- },
59
- "weather": {
60
- "lattitude": "xx.xxxxxx",
61
- "longitude": "xx.xxxxx",
62
- "appid": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
63
- }
64
- }
1
+ {
2
+ "ioBrokerUrl": "http://xxx.xxx.xxx.xxx:8xx4",
3
+ "timeSettings": {
4
+ "nightStart": {
5
+ "hours": 23,
6
+ "minutes": 45
7
+ },
8
+ "nightEnd": {
9
+ "hours": 6,
10
+ "minutes": 30
11
+ }
12
+ },
13
+ "roomDefault": {
14
+ "lampenBeiBewegung": true,
15
+ "lichtSonnenAufgangAus": true,
16
+ "sonnenUntergangRollos": true,
17
+ "sonnenAufgangRollos": true,
18
+ "movementResetTimer": 240,
19
+ "sonnenUntergangRolloDelay": 15,
20
+ "sonnenUntergangLampenDelay": 15,
21
+ "sonnenUntergangRolloMaxTime": {
22
+ "hours": 21,
23
+ "minutes": 30
24
+ },
25
+ "sonnenAufgangRolloMinTime": {
26
+ "hours": 7,
27
+ "minutes": 30
28
+ },
29
+ "sonnenAufgangRolloDelay": 35,
30
+ "sonnenAufgangLampenDelay": 15,
31
+ "lightIfNoWindows": false
32
+ },
33
+ "telegram": {
34
+ "logLevel": 1,
35
+ "telegramToken": "15xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXU",
36
+ "allowedIDs": [
37
+ 111111111,
38
+ 111111111
39
+ ],
40
+ "subscribedIDs": [
41
+ 111111111,
42
+ 111111111
43
+ ]
44
+ },
45
+ "mp3Server": {
46
+ "path": "//XXXXXXXXXX/XXXXX/XXXXXX/XXX/ttsMP3/"
47
+ },
48
+ "muell": {
49
+ "calendarURL": "https://xxxxxxxxxxxxxxxxxxxxx.de/abfuhrkalender?format=ical&street=xxxxxxxx&number=xx"
50
+ },
51
+ "polly": {
52
+ "mp3Path": "//xxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/ttsMP3/",
53
+ "region": "eu-central-1",
54
+ "signatureVersion": "v4",
55
+ "accessKeyId": "xxxxxxxxxxxxxxxxxxxx",
56
+ "secretAccessKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
57
+ "voiceID": "Vicki"
58
+ },
59
+ "weather": {
60
+ "lattitude": "xx.xxxxxx",
61
+ "longitude": "xx.xxxxx",
62
+ "appid": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
63
+ }
64
+ }
@@ -1,66 +1,66 @@
1
- import { deviceConfig } from '../../models/deviceConfig';
2
-
3
- export class DeviceInfo {
4
- public devID: string;
5
- public room: string;
6
- public deviceType: string;
7
- public deviceRoomIndex: number;
8
- public type: 'device' | 'channel' | 'state';
9
- public fullName: string;
10
- private _customName?: string;
11
- public fullID: string;
12
- public channel?: number;
13
- public valueName?: string;
14
- public devConf: deviceConfig;
15
-
16
- public constructor(pDevConf: deviceConfig) {
17
- this.devConf = pDevConf;
18
- this.type = pDevConf.type as 'device' | 'channel' | 'state';
19
-
20
- this.fullID = pDevConf._id;
21
- /**
22
- * 0: hm-rpc
23
- * 1: rcpInstance
24
- * 2: Device ID
25
- * 3?: Channel
26
- * 4?: ValueName
27
- */
28
- const idSplit: string[] = pDevConf._id.split('.');
29
- this.devID = idSplit[2];
30
-
31
- if (idSplit.length > 3) {
32
- this.channel = Number(idSplit[3]);
33
- }
34
-
35
- if (idSplit.length > 4) {
36
- this.valueName = idSplit[4];
37
- }
38
-
39
- this.fullName = pDevConf.common.name;
40
- /**
41
- * 0: Indikator own "00"
42
- * 1: "HmIP"
43
- * 2: Raum
44
- * 3: Was für ein Gerät
45
- * 4: Index dieses Gerätes im Raum (ggf. + :Channel)
46
- * 5?: Name des Wertes
47
- */
48
- const nameSplit: string[] = pDevConf.common.name.split('-');
49
-
50
- this.room = nameSplit[2];
51
- this.deviceType = nameSplit[3];
52
- this.deviceRoomIndex = Number(nameSplit[4].split(':')[0]);
53
- }
54
-
55
- public set customName(val: string) {
56
- this._customName = val;
57
- }
58
-
59
- public get customName(): string {
60
- if (this._customName !== undefined) {
61
- return this._customName;
62
- }
63
-
64
- return this.fullName;
65
- }
66
- }
1
+ import { deviceConfig } from '../../models/deviceConfig';
2
+
3
+ export class DeviceInfo {
4
+ public devID: string;
5
+ public room: string;
6
+ public deviceType: string;
7
+ public deviceRoomIndex: number;
8
+ public type: 'device' | 'channel' | 'state';
9
+ public fullName: string;
10
+ private _customName?: string;
11
+ public fullID: string;
12
+ public channel?: number;
13
+ public valueName?: string;
14
+ public devConf: deviceConfig;
15
+
16
+ public constructor(pDevConf: deviceConfig) {
17
+ this.devConf = pDevConf;
18
+ this.type = pDevConf.type as 'device' | 'channel' | 'state';
19
+
20
+ this.fullID = pDevConf._id;
21
+ /**
22
+ * 0: hm-rpc
23
+ * 1: rcpInstance
24
+ * 2: Device ID
25
+ * 3?: Channel
26
+ * 4?: ValueName
27
+ */
28
+ const idSplit: string[] = pDevConf._id.split('.');
29
+ this.devID = idSplit[2];
30
+
31
+ if (idSplit.length > 3) {
32
+ this.channel = Number(idSplit[3]);
33
+ }
34
+
35
+ if (idSplit.length > 4) {
36
+ this.valueName = idSplit[4];
37
+ }
38
+
39
+ this.fullName = pDevConf.common.name;
40
+ /**
41
+ * 0: Indikator own "00"
42
+ * 1: "HmIP"
43
+ * 2: Raum
44
+ * 3: Was für ein Gerät
45
+ * 4: Index dieses Gerätes im Raum (ggf. + :Channel)
46
+ * 5?: Name des Wertes
47
+ */
48
+ const nameSplit: string[] = pDevConf.common.name.split('-');
49
+
50
+ this.room = nameSplit[2];
51
+ this.deviceType = nameSplit[3];
52
+ this.deviceRoomIndex = Number(nameSplit[4].split(':')[0]);
53
+ }
54
+
55
+ public set customName(val: string) {
56
+ this._customName = val;
57
+ }
58
+
59
+ public get customName(): string {
60
+ if (this._customName !== undefined) {
61
+ return this._customName;
62
+ }
63
+
64
+ return this.fullName;
65
+ }
66
+ }