hoffmation-base 0.1.14 → 0.1.18
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/lib/index.d.ts +2 -0
- package/lib/index.js +14 -0
- package/lib/models/actuatorSettings.d.ts +5 -0
- package/lib/models/actuatorSettings.js +11 -0
- package/lib/models/connectionCallbacks.d.ts +10 -0
- package/lib/models/connectionCallbacks.js +6 -0
- package/lib/models/daytime.d.ts +5 -0
- package/lib/models/daytime.js +10 -0
- package/lib/models/deviceConfig.d.ts +11 -0
- package/lib/models/deviceConfig.js +2 -0
- package/lib/models/dimmerSettings.d.ts +5 -0
- package/lib/models/dimmerSettings.js +11 -0
- package/lib/models/iTemperaturDataPoint.d.ts +9 -0
- package/lib/models/iTemperaturDataPoint.js +2 -0
- package/lib/models/index.d.ts +12 -0
- package/lib/models/index.js +24 -0
- package/lib/models/ledSettings.d.ts +19 -0
- package/lib/models/ledSettings.js +25 -0
- package/lib/models/logLevel.d.ts +9 -0
- package/lib/models/logLevel.js +13 -0
- package/lib/models/persistence/BasicRoomInfo.d.ts +5 -0
- package/lib/models/persistence/BasicRoomInfo.js +10 -0
- package/lib/models/persistence/CurrentIlluminationDataPoint.d.ts +8 -0
- package/lib/models/persistence/CurrentIlluminationDataPoint.js +13 -0
- package/lib/models/persistence/DailyMovementCount.d.ts +7 -0
- package/lib/models/persistence/DailyMovementCount.js +12 -0
- package/lib/models/persistence/RoomDetailInfo.d.ts +6 -0
- package/lib/models/persistence/RoomDetailInfo.js +11 -0
- package/lib/models/persistence/index.d.ts +6 -0
- package/lib/models/persistence/index.js +18 -0
- package/lib/models/persistence/temperaturDataPoint.d.ts +10 -0
- package/lib/models/persistence/temperaturDataPoint.js +14 -0
- package/lib/models/persistence/todaysCount.d.ts +5 -0
- package/lib/models/persistence/todaysCount.js +10 -0
- package/lib/models/rooms/RoomBase.d.ts +81 -0
- package/lib/models/rooms/RoomBase.js +309 -0
- package/lib/models/rooms/RoomSettings/RoomSettings.d.ts +57 -0
- package/lib/models/rooms/RoomSettings/RoomSettings.js +120 -0
- package/lib/models/rooms/RoomSettings/hmIPRoomSettings.d.ts +17 -0
- package/lib/models/rooms/RoomSettings/hmIPRoomSettings.js +51 -0
- package/lib/models/rooms/RoomSettings/iRoomDefaultSettings.d.ts +16 -0
- package/lib/models/rooms/RoomSettings/iRoomDefaultSettings.js +2 -0
- package/lib/models/rooms/RoomSettings/index.d.ts +4 -0
- package/lib/models/rooms/RoomSettings/index.js +16 -0
- package/lib/models/rooms/RoomSettings/zigbeeRoomSettings.d.ts +17 -0
- package/lib/models/rooms/RoomSettings/zigbeeRoomSettings.js +51 -0
- package/{models/rooms/iRoomImportEnforcer.ts → lib/models/rooms/iRoomImportEnforcer.d.ts} +1 -1
- package/lib/models/rooms/iRoomImportEnforcer.js +2 -0
- package/lib/models/rooms/index.d.ts +3 -0
- package/lib/models/rooms/index.js +15 -0
- package/lib/models/temperaturSettings.d.ts +9 -0
- package/lib/models/temperaturSettings.js +21 -0
- package/lib/models/timeCallback.d.ts +19 -0
- package/lib/models/timeCallback.js +73 -0
- package/lib/server/config/iConfig.d.ts +45 -0
- package/lib/server/config/iConfig.js +2 -0
- package/lib/server/config/index.d.ts +1 -0
- package/lib/server/config/index.js +13 -0
- package/lib/server/devices/DeviceInfo.d.ts +17 -0
- package/lib/server/devices/DeviceInfo.js +48 -0
- package/lib/server/devices/Griffe.d.ts +5 -0
- package/lib/server/devices/Griffe.js +31 -0
- package/lib/server/devices/Heizgruppen.d.ts +8 -0
- package/lib/server/devices/Heizgruppen.js +78 -0
- package/lib/server/devices/Rollos.d.ts +5 -0
- package/lib/server/devices/Rollos.js +43 -0
- package/lib/server/devices/deviceUpdater.d.ts +13 -0
- package/lib/server/devices/deviceUpdater.js +64 -0
- package/lib/server/devices/devices.d.ts +21 -0
- package/lib/server/devices/devices.js +172 -0
- package/lib/server/devices/groups/fensterGroup.d.ts +15 -0
- package/lib/server/devices/groups/fensterGroup.js +138 -0
- package/lib/server/devices/groups/heatGroup.d.ts +9 -0
- package/lib/server/devices/groups/heatGroup.js +33 -0
- package/lib/server/devices/groups/index.d.ts +8 -0
- package/lib/server/devices/groups/index.js +20 -0
- package/lib/server/devices/groups/lampenGroup.d.ts +18 -0
- package/lib/server/devices/groups/lampenGroup.js +95 -0
- package/lib/server/devices/groups/praesenzGroup.d.ts +18 -0
- package/lib/server/devices/groups/praesenzGroup.js +145 -0
- package/lib/server/devices/groups/smokeGroup.d.ts +8 -0
- package/lib/server/devices/groups/smokeGroup.js +18 -0
- package/lib/server/devices/groups/sonosGroup.d.ts +11 -0
- package/lib/server/devices/groups/sonosGroup.js +38 -0
- package/lib/server/devices/groups/tasterGroup.d.ts +8 -0
- package/lib/server/devices/groups/tasterGroup.js +43 -0
- package/lib/server/devices/groups/waterGroup.d.ts +8 -0
- package/lib/server/devices/groups/waterGroup.js +18 -0
- package/lib/server/devices/hmIPDevices/Fenster.d.ts +22 -0
- package/lib/server/devices/hmIPDevices/Fenster.js +100 -0
- package/lib/server/devices/hmIPDevices/FensterPosition.d.ts +5 -0
- package/lib/server/devices/hmIPDevices/FensterPosition.js +9 -0
- package/lib/server/devices/hmIPDevices/TuerPosition.d.ts +4 -0
- package/lib/server/devices/hmIPDevices/TuerPosition.js +8 -0
- package/lib/server/devices/hmIPDevices/hmIpBewegung.d.ts +25 -0
- package/lib/server/devices/hmIPDevices/hmIpBewegung.js +106 -0
- package/lib/server/devices/hmIPDevices/hmIpDevice.d.ts +19 -0
- package/lib/server/devices/hmIPDevices/hmIpDevice.js +72 -0
- package/lib/server/devices/hmIPDevices/hmIpDeviceType.d.ts +14 -0
- package/lib/server/devices/hmIPDevices/hmIpDeviceType.js +18 -0
- package/lib/server/devices/hmIPDevices/hmIpGriff.d.ts +22 -0
- package/lib/server/devices/hmIPDevices/hmIpGriff.js +117 -0
- package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.d.ts +34 -0
- package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.js +143 -0
- package/lib/server/devices/hmIPDevices/hmIpHeizung.d.ts +15 -0
- package/lib/server/devices/hmIPDevices/hmIpHeizung.js +54 -0
- package/lib/server/devices/hmIPDevices/hmIpLampe.d.ts +27 -0
- package/lib/server/devices/hmIPDevices/hmIpLampe.js +96 -0
- package/lib/server/devices/hmIPDevices/hmIpPraezenz.d.ts +22 -0
- package/lib/server/devices/hmIPDevices/hmIpPraezenz.js +89 -0
- package/lib/server/devices/hmIPDevices/hmIpRoll.d.ts +22 -0
- package/lib/server/devices/hmIPDevices/hmIpRoll.js +105 -0
- package/lib/server/devices/hmIPDevices/hmIpTaster.d.ts +13 -0
- package/lib/server/devices/hmIPDevices/hmIpTaster.js +78 -0
- package/lib/server/devices/hmIPDevices/hmIpTherm.d.ts +7 -0
- package/lib/server/devices/hmIPDevices/hmIpTherm.js +17 -0
- package/lib/server/devices/hmIPDevices/hmIpTuer.d.ts +16 -0
- package/lib/server/devices/hmIPDevices/hmIpTuer.js +94 -0
- package/lib/server/devices/hmIPDevices/hmIpWippe.d.ts +12 -0
- package/lib/server/devices/hmIPDevices/hmIpWippe.js +50 -0
- package/lib/server/devices/hmIPDevices/index.d.ts +16 -0
- package/lib/server/devices/hmIPDevices/index.js +28 -0
- package/lib/server/devices/iDeviceUpdater.d.ts +5 -0
- package/lib/server/devices/iDeviceUpdater.js +2 -0
- package/{server/devices/iIlluminationSensor.ts → lib/server/devices/iIlluminationSensor.d.ts} +1 -1
- package/lib/server/devices/iIlluminationSensor.js +2 -0
- package/lib/server/devices/iIoBrokerDevice.d.ts +30 -0
- package/lib/server/devices/iIoBrokerDevice.js +37 -0
- package/lib/server/devices/iLamp.d.ts +8 -0
- package/lib/server/devices/iLamp.js +2 -0
- package/lib/server/devices/iTaster.d.ts +7 -0
- package/lib/server/devices/iTaster.js +2 -0
- package/lib/server/devices/index.d.ts +16 -0
- package/lib/server/devices/index.js +28 -0
- package/lib/server/devices/taste.d.ts +15 -0
- package/lib/server/devices/taste.js +64 -0
- package/lib/server/devices/wledDevice.d.ts +38 -0
- package/lib/server/devices/wledDevice.js +97 -0
- package/lib/server/devices/zigbee/ZigbeeActuator.d.ts +17 -0
- package/lib/server/devices/zigbee/ZigbeeActuator.js +83 -0
- package/lib/server/devices/zigbee/index.d.ts +13 -0
- package/lib/server/devices/zigbee/index.js +25 -0
- package/lib/server/devices/zigbee/zigbeeAquaraMotion.d.ts +31 -0
- package/lib/server/devices/zigbee/zigbeeAquaraMotion.js +137 -0
- package/lib/server/devices/zigbee/zigbeeAquaraVibra.d.ts +23 -0
- package/lib/server/devices/zigbee/zigbeeAquaraVibra.js +121 -0
- package/lib/server/devices/zigbee/zigbeeAquaraWater.d.ts +18 -0
- package/lib/server/devices/zigbee/zigbeeAquaraWater.js +84 -0
- package/lib/server/devices/zigbee/zigbeeBlitzShp.d.ts +16 -0
- package/lib/server/devices/zigbee/zigbeeBlitzShp.js +64 -0
- package/lib/server/devices/zigbee/zigbeeDevice.d.ts +20 -0
- package/lib/server/devices/zigbee/zigbeeDevice.js +83 -0
- package/lib/server/devices/zigbee/zigbeeDeviceType.d.ts +14 -0
- package/lib/server/devices/zigbee/zigbeeDeviceType.js +18 -0
- package/lib/server/devices/zigbee/zigbeeHeimanSmoke.d.ts +18 -0
- package/lib/server/devices/zigbee/zigbeeHeimanSmoke.js +89 -0
- package/lib/server/devices/zigbee/zigbeeIkeaSteckdose.d.ts +10 -0
- package/lib/server/devices/zigbee/zigbeeIkeaSteckdose.js +26 -0
- package/lib/server/devices/zigbee/zigbeeIlluActuator.d.ts +11 -0
- package/lib/server/devices/zigbee/zigbeeIlluActuator.js +28 -0
- package/lib/server/devices/zigbee/zigbeeIlluDimmer.d.ts +23 -0
- package/lib/server/devices/zigbee/zigbeeIlluDimmer.js +128 -0
- package/lib/server/devices/zigbee/zigbeeIlluLampe.d.ts +10 -0
- package/lib/server/devices/zigbee/zigbeeIlluLampe.js +31 -0
- package/lib/server/devices/zigbee/zigbeeIlluLedRGBCCT.d.ts +22 -0
- package/lib/server/devices/zigbee/zigbeeIlluLedRGBCCT.js +122 -0
- package/lib/server/index.d.ts +4 -0
- package/lib/server/index.js +16 -0
- package/lib/server/ioBroker/connection.d.ts +160 -0
- package/lib/server/ioBroker/connection.js +1419 -0
- package/lib/server/ioBroker/index.d.ts +6 -0
- package/lib/server/ioBroker/index.js +18 -0
- package/lib/server/ioBroker/ioBroker.main.d.ts +15 -0
- package/lib/server/ioBroker/ioBroker.main.js +85 -0
- package/lib/server/ioBroker/socketIOAuthInfo.d.ts +5 -0
- package/lib/server/ioBroker/socketIOAuthInfo.js +6 -0
- package/lib/server/ioBroker/socketIOConnectOptions.d.ts +6 -0
- package/lib/server/ioBroker/socketIOConnectOptions.js +6 -0
- package/lib/server/ioBroker/socketIOLogging.d.ts +12 -0
- package/lib/server/ioBroker/socketIOLogging.js +32 -0
- package/lib/server/ioBroker/socketIOVisCommand.d.ts +6 -0
- package/lib/server/ioBroker/socketIOVisCommand.js +11 -0
- package/lib/server/services/HTTPSOptions.d.ts +12 -0
- package/lib/server/services/HTTPSOptions.js +16 -0
- package/lib/server/services/Sonos/OwnSonosDevices.d.ts +7 -0
- package/lib/server/services/Sonos/OwnSonosDevices.js +10 -0
- package/lib/server/services/Sonos/index.d.ts +4 -0
- package/lib/server/services/Sonos/index.js +16 -0
- package/lib/server/services/Sonos/mp3-server.d.ts +7 -0
- package/lib/server/services/Sonos/mp3-server.js +90 -0
- package/lib/server/services/Sonos/polly-service.d.ts +12 -0
- package/lib/server/services/Sonos/polly-service.js +117 -0
- package/lib/server/services/Sonos/sonos-service.d.ts +30 -0
- package/lib/server/services/Sonos/sonos-service.js +140 -0
- package/lib/server/services/Telegram/index.d.ts +3 -0
- package/lib/server/services/Telegram/index.js +15 -0
- package/lib/server/services/Telegram/telegram-Commands.d.ts +3 -0
- package/lib/server/services/Telegram/telegram-Commands.js +128 -0
- package/lib/server/services/Telegram/telegram-service.d.ts +19 -0
- package/lib/server/services/Telegram/telegram-service.js +150 -0
- package/lib/server/services/Telegram/telegramMessageCalback.d.ts +9 -0
- package/lib/server/services/Telegram/telegramMessageCalback.js +13 -0
- package/lib/server/services/calendar/index.d.ts +2 -0
- package/lib/server/services/calendar/index.js +14 -0
- package/lib/server/services/calendar/muell-tonne.d.ts +12 -0
- package/lib/server/services/calendar/muell-tonne.js +73 -0
- package/lib/server/services/calendar/m/303/274ll-service.d.ts +24 -0
- package/lib/server/services/calendar/m/303/274ll-service.js +108 -0
- package/lib/server/services/dbo/index.d.ts +1 -0
- package/lib/server/services/dbo/index.js +13 -0
- package/lib/server/services/dbo/persist.d.ts +27 -0
- package/lib/server/services/dbo/persist.js +107 -0
- package/lib/server/services/https-service.d.ts +6 -0
- package/lib/server/services/https-service.js +87 -0
- package/lib/server/services/index.d.ts +12 -0
- package/lib/server/services/index.js +24 -0
- package/lib/server/services/log-service.d.ts +14 -0
- package/lib/server/services/log-service.js +41 -0
- package/lib/server/services/news-service.d.ts +10 -0
- package/lib/server/services/news-service.js +90 -0
- package/lib/server/services/settings-service.d.ts +6 -0
- package/lib/server/services/settings-service.js +19 -0
- package/lib/server/services/time-callback-service.d.ts +39 -0
- package/lib/server/services/time-callback-service.js +182 -0
- package/lib/server/services/utils/index.d.ts +2 -0
- package/lib/server/services/utils/index.js +14 -0
- package/lib/server/services/utils/ringstorage.d.ts +8 -0
- package/lib/server/services/utils/ringstorage.js +27 -0
- package/lib/server/services/utils/utils.d.ts +9 -0
- package/lib/server/services/utils/utils.js +44 -0
- package/lib/server/services/weather/index.d.ts +9 -0
- package/lib/server/services/weather/index.js +21 -0
- package/lib/server/services/weather/weather-alert.d.ts +7 -0
- package/lib/server/services/weather/weather-alert.js +2 -0
- package/lib/server/services/weather/weather-current.d.ts +25 -0
- package/lib/server/services/weather/weather-current.js +2 -0
- package/lib/server/services/weather/weather-daily.d.ts +21 -0
- package/lib/server/services/weather/weather-daily.js +2 -0
- package/lib/server/services/weather/weather-feelsLike.d.ts +6 -0
- package/lib/server/services/weather/weather-feelsLike.js +2 -0
- package/lib/server/services/weather/weather-hourly.d.ts +16 -0
- package/lib/server/services/weather/weather-hourly.js +2 -0
- package/lib/server/services/weather/weather-item.d.ts +6 -0
- package/lib/server/services/weather/weather-item.js +2 -0
- package/lib/server/services/weather/weather-minutes.d.ts +4 -0
- package/lib/server/services/weather/weather-minutes.js +2 -0
- package/lib/server/services/weather/weather-service.d.ts +37 -0
- package/lib/server/services/weather/weather-service.js +173 -0
- package/lib/server/services/weather/weather-temp.d.ts +8 -0
- package/lib/server/services/weather/weather-temp.js +2 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/package.json +21 -10
- package/.eslintrc.js +0 -27
- package/.github/workflows/npm-publish.yml +0 -33
- package/.prettierrc.js +0 -9
- package/index.js +0 -1
- package/models/actuatorSettings.ts +0 -5
- package/models/connectionCallbacks.ts +0 -13
- package/models/daytime.ts +0 -3
- package/models/deviceConfig.ts +0 -8
- package/models/dimmerSettings.ts +0 -5
- package/models/iTemperaturDataPoint.ts +0 -9
- package/models/ledSettings.ts +0 -19
- package/models/logLevel.ts +0 -9
- package/models/persistence/BasicRoomInfo.ts +0 -3
- package/models/persistence/CurrentIlluminationDataPoint.ts +0 -9
- package/models/persistence/DailyMovementCount.ts +0 -3
- package/models/persistence/RoomDetailInfo.ts +0 -4
- package/models/persistence/temperaturDataPoint.ts +0 -12
- package/models/persistence/todaysCount.ts +0 -3
- package/models/rooms/RoomBase.ts +0 -358
- package/models/rooms/RoomSettings/RoomSettings.ts +0 -159
- package/models/rooms/RoomSettings/hmIPRoomSettings.ts +0 -53
- package/models/rooms/RoomSettings/iRoomDefaultSettings.ts +0 -17
- package/models/rooms/RoomSettings/readme.md +0 -18
- package/models/rooms/RoomSettings/zigbeeRoomSettings.ts +0 -51
- package/models/rooms/readme.md +0 -11
- package/models/temperaturSettings.ts +0 -22
- package/models/timeCallback.ts +0 -90
- package/server/config/config-readme.md +0 -19
- package/server/config/iConfig.ts +0 -53
- package/server/config/private/mainConfig.json +0 -64
- package/server/devices/DeviceInfo.ts +0 -66
- package/server/devices/Griffe.ts +0 -31
- package/server/devices/Heizgruppen.ts +0 -91
- package/server/devices/Rollos.ts +0 -48
- package/server/devices/deviceUpdater.ts +0 -72
- package/server/devices/devices.ts +0 -193
- package/server/devices/groups/fensterGroup.ts +0 -175
- package/server/devices/groups/heatGroup.ts +0 -32
- package/server/devices/groups/lampenGroup.ts +0 -106
- package/server/devices/groups/praesenzGroup.ts +0 -187
- package/server/devices/groups/smokeGroup.ts +0 -16
- package/server/devices/groups/sonosGroup.ts +0 -33
- package/server/devices/groups/tasterGroup.ts +0 -48
- package/server/devices/groups/waterGroup.ts +0 -16
- package/server/devices/hmIPDevices/Fenster.ts +0 -114
- package/server/devices/hmIPDevices/FensterPosition.ts +0 -5
- package/server/devices/hmIPDevices/TuerPosition.ts +0 -4
- package/server/devices/hmIPDevices/hmIpBewegung.ts +0 -145
- package/server/devices/hmIPDevices/hmIpDevice.ts +0 -90
- package/server/devices/hmIPDevices/hmIpDeviceType.ts +0 -14
- package/server/devices/hmIPDevices/hmIpGriff.ts +0 -143
- package/server/devices/hmIPDevices/hmIpHeizgruppe.ts +0 -172
- package/server/devices/hmIPDevices/hmIpHeizung.ts +0 -69
- package/server/devices/hmIPDevices/hmIpLampe.ts +0 -120
- package/server/devices/hmIPDevices/hmIpPraezenz.ts +0 -117
- package/server/devices/hmIPDevices/hmIpRoll.ts +0 -133
- package/server/devices/hmIPDevices/hmIpTaster.ts +0 -82
- package/server/devices/hmIPDevices/hmIpTherm.ts +0 -19
- package/server/devices/hmIPDevices/hmIpTuer.ts +0 -115
- package/server/devices/hmIPDevices/hmIpWippe.ts +0 -55
- package/server/devices/iDeviceUpdater.ts +0 -4
- package/server/devices/iIoBrokerDevice.ts +0 -44
- package/server/devices/iLamp.ts +0 -10
- package/server/devices/iTaster.ts +0 -6
- package/server/devices/taste.ts +0 -84
- package/server/devices/wledDevice.ts +0 -124
- package/server/devices/zigbee/ZigbeeActuator.ts +0 -113
- package/server/devices/zigbee/zigbeeAquaraMotion.ts +0 -205
- package/server/devices/zigbee/zigbeeAquaraVibra.ts +0 -171
- package/server/devices/zigbee/zigbeeAquaraWater.ts +0 -94
- package/server/devices/zigbee/zigbeeBlitzShp.ts +0 -77
- package/server/devices/zigbee/zigbeeDevice.ts +0 -115
- package/server/devices/zigbee/zigbeeDeviceType.ts +0 -14
- package/server/devices/zigbee/zigbeeHeimanSmoke.ts +0 -99
- package/server/devices/zigbee/zigbeeIkeaSteckdose.ts +0 -31
- package/server/devices/zigbee/zigbeeIlluActuator.ts +0 -37
- package/server/devices/zigbee/zigbeeIlluDimmer.ts +0 -166
- package/server/devices/zigbee/zigbeeIlluLampe.ts +0 -33
- package/server/devices/zigbee/zigbeeIlluLedRGBCCT.ts +0 -137
- package/server/ioBroker/connection.ts +0 -1655
- package/server/ioBroker/ioBroker.main.ts +0 -99
- package/server/ioBroker/socketIOAuthInfo.ts +0 -5
- package/server/ioBroker/socketIOConnectOptions.ts +0 -6
- package/server/ioBroker/socketIOLogging.ts +0 -29
- package/server/ioBroker/socketIOVisCommand.ts +0 -11
- package/server/services/HTTPSOptions.ts +0 -14
- package/server/services/Sonos/OwnSonosDevices.ts +0 -9
- package/server/services/Sonos/mp3-server.ts +0 -75
- package/server/services/Sonos/polly-service.ts +0 -100
- package/server/services/Sonos/sonos-service.ts +0 -194
- package/server/services/Telegram/telegram-Commands.ts +0 -237
- package/server/services/Telegram/telegram-service.ts +0 -177
- package/server/services/Telegram/telegramMessageCalback.ts +0 -11
- package/server/services/calendar/muell-tonne.ts +0 -82
- package/server/services/calendar/m/303/274ll-service.ts +0 -147
- package/server/services/dbo/persist.ts +0 -142
- package/server/services/https-service.ts +0 -71
- package/server/services/log-service.ts +0 -69
- package/server/services/news-service.ts +0 -81
- package/server/services/settings-service.ts +0 -15
- package/server/services/time-callback-service.ts +0 -223
- package/server/services/utils/ringstorage.ts +0 -24
- package/server/services/utils/utils.ts +0 -52
- package/server/services/weather/weather-alert.ts +0 -7
- package/server/services/weather/weather-current.ts +0 -26
- package/server/services/weather/weather-daily.ts +0 -22
- package/server/services/weather/weather-feelsLike.ts +0 -6
- package/server/services/weather/weather-hourly.ts +0 -17
- package/server/services/weather/weather-item.ts +0 -6
- package/server/services/weather/weather-minutes.ts +0 -4
- package/server/services/weather/weather-service.ts +0 -277
- package/server/services/weather/weather-temp.ts +0 -8
- package/tsconfig.json +0 -58
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SonosService = exports.OwnSonosDevice = void 0;
|
|
4
|
+
const lib_1 = require("@svrooij/sonos/lib");
|
|
5
|
+
const log_service_1 = require("../log-service");
|
|
6
|
+
const polly_service_1 = require("./polly-service");
|
|
7
|
+
const logLevel_1 = require("../../../models/logLevel");
|
|
8
|
+
const utils_1 = require("../utils/utils");
|
|
9
|
+
const telegram_service_1 = require("../Telegram/telegram-service");
|
|
10
|
+
const timeCallback_1 = require("../../../models/timeCallback");
|
|
11
|
+
const time_callback_service_1 = require("../time-callback-service");
|
|
12
|
+
class OwnSonosDevice {
|
|
13
|
+
constructor(name, roomName, device) {
|
|
14
|
+
this.name = name;
|
|
15
|
+
this.roomName = roomName;
|
|
16
|
+
this.device = device;
|
|
17
|
+
this.maxPlayOnAllVolume = 80;
|
|
18
|
+
}
|
|
19
|
+
playTestMessage() {
|
|
20
|
+
SonosService.speakOnDevice(`Ich bin ${this.name}`, this);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.OwnSonosDevice = OwnSonosDevice;
|
|
24
|
+
class SonosService {
|
|
25
|
+
static addOwnDevices(snDevices, reinitializationDevice) {
|
|
26
|
+
this.ownDevices = snDevices;
|
|
27
|
+
this.reinitializationDevice = reinitializationDevice;
|
|
28
|
+
}
|
|
29
|
+
static initialize(reinitialize = false) {
|
|
30
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Initialisiere Sonos Service`);
|
|
31
|
+
if (!reinitialize) {
|
|
32
|
+
this.checkTimeCallback = new timeCallback_1.TimeCallback('SonosFunctionallityChecker', timeCallback_1.TimeCallbackType.TimeOfDay, () => {
|
|
33
|
+
this.checkAll();
|
|
34
|
+
}, 0, 23, 30);
|
|
35
|
+
time_callback_service_1.TimeCallbackService.addCallback(this.checkTimeCallback);
|
|
36
|
+
}
|
|
37
|
+
this.all = [];
|
|
38
|
+
this.sonosManager = new lib_1.SonosManager();
|
|
39
|
+
this.sonosManager
|
|
40
|
+
.InitializeWithDiscovery(10)
|
|
41
|
+
.then(() => {
|
|
42
|
+
this.sonosManager.OnNewDevice((d) => {
|
|
43
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `SonosDevice ${d.Name} joined`);
|
|
44
|
+
SonosService.initializeDevice(d);
|
|
45
|
+
});
|
|
46
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `${this.sonosManager.Devices.length} Sonos Geräte gefunden.`);
|
|
47
|
+
this.sonosManager.Devices.forEach((d) => {
|
|
48
|
+
SonosService.initializeDevice(d);
|
|
49
|
+
});
|
|
50
|
+
this.isInitialized = true;
|
|
51
|
+
if (!reinitialize && this.reinitializationDevice !== undefined) {
|
|
52
|
+
this.speakOnDevice(`Sonos System initialisiert und bereit für Sprachausgaben.`, this.reinitializationDevice, 30);
|
|
53
|
+
}
|
|
54
|
+
})
|
|
55
|
+
.catch(console.error);
|
|
56
|
+
}
|
|
57
|
+
static async checkAll() {
|
|
58
|
+
var _a;
|
|
59
|
+
let currentDevice;
|
|
60
|
+
try {
|
|
61
|
+
for (const deviceName in this.ownDevices) {
|
|
62
|
+
currentDevice = this.ownDevices[deviceName];
|
|
63
|
+
if ((currentDevice === null || currentDevice === void 0 ? void 0 : currentDevice.device) === undefined) {
|
|
64
|
+
throw `${currentDevice === null || currentDevice === void 0 ? void 0 : currentDevice.name} is missing`;
|
|
65
|
+
}
|
|
66
|
+
await currentDevice.device.GetState();
|
|
67
|
+
}
|
|
68
|
+
if (currentDevice !== undefined) {
|
|
69
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `Alle Geräte okay --> Last checked ${currentDevice.name}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Error, `Atleast one device failed --> Last checked ${(_a = currentDevice === null || currentDevice === void 0 ? void 0 : currentDevice.name) !== null && _a !== void 0 ? _a : 'undefined'}`);
|
|
74
|
+
telegram_service_1.TelegramService.inform(`Sonos device is failing --> Reinitialize whole system`);
|
|
75
|
+
this.initialize(true);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
static speakOnAll(pMessage, volumeOverride = -1) {
|
|
79
|
+
if (!this.isInitialized) {
|
|
80
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Alert, `SonosService noch nicht initialisiert.`);
|
|
81
|
+
}
|
|
82
|
+
polly_service_1.PollyService.tts(pMessage, (networkPath, duration) => {
|
|
83
|
+
const hours = new Date().getHours();
|
|
84
|
+
const volume = hours < 10 || hours > 22 ? 40 : 80;
|
|
85
|
+
for (const deviceName in this.ownDevices) {
|
|
86
|
+
SonosService.playOnDevice(this.ownDevices[deviceName], networkPath, duration, volumeOverride > -1 ? volumeOverride : Math.min(volume, this.ownDevices[deviceName].maxPlayOnAllVolume));
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
static playOnDevice(ownSnDevice, mp3Name, duration, volume = undefined, onlyWhenPlaying = undefined, resolveAfterRevert = false) {
|
|
91
|
+
const specificTimeout = Math.ceil(duration / 1000) + 5;
|
|
92
|
+
const options = {
|
|
93
|
+
trackUri: `http://192.168.178.13:8081/file.mp3?fname=${mp3Name}`,
|
|
94
|
+
delayMs: 750,
|
|
95
|
+
onlyWhenPlaying: onlyWhenPlaying,
|
|
96
|
+
resolveAfterRevert: resolveAfterRevert,
|
|
97
|
+
volume: volume,
|
|
98
|
+
specificTimeout: specificTimeout,
|
|
99
|
+
notificationFired: (played) => {
|
|
100
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Sonos Notification ("${mp3Name}") was${played ? '' : "n't"} played in ${ownSnDevice.roomName} (duration: "${specificTimeout}")`);
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
try {
|
|
104
|
+
const device = ownSnDevice.device;
|
|
105
|
+
if (device === undefined) {
|
|
106
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Alert, `Sonos Geräte ${ownSnDevice.name} ist nicht initialisiert`);
|
|
107
|
+
utils_1.Utils.guardedTimeout(() => {
|
|
108
|
+
this.initialize();
|
|
109
|
+
}, 500, this);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Spiele nun die Ausgabe für "${mp3Name}" auf "${ownSnDevice.name}"`);
|
|
113
|
+
device.PlayNotificationTwo(options).then((played) => {
|
|
114
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Sonos Notification ("${mp3Name}") was${played ? '' : "n't"} played in ${ownSnDevice.roomName} (duration: "${specificTimeout}")`);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
118
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `Sonos Error ${err.message}: ${err.stack}`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
static speakOnDevice(pMessage, ownSnDevice, volume = undefined, onlyWhenPlaying = undefined, resolveAfterRevert = undefined) {
|
|
122
|
+
polly_service_1.PollyService.tts(pMessage, (networkPath, duration) => {
|
|
123
|
+
SonosService.playOnDevice(ownSnDevice, networkPath, duration, volume, onlyWhenPlaying, resolveAfterRevert);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
static speakTestMessageOnEachDevice() {
|
|
127
|
+
for (const deviceName in this.ownDevices) {
|
|
128
|
+
this.ownDevices[deviceName].playTestMessage();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
static initializeDevice(d) {
|
|
132
|
+
this.devicesDict[d.Name] = d;
|
|
133
|
+
this.ownDevices[d.Name].device = d;
|
|
134
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Sonos ${d.Uuid} für ${d.Name} gefunden`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.SonosService = SonosService;
|
|
138
|
+
SonosService.ownDevices = {};
|
|
139
|
+
SonosService.all = [];
|
|
140
|
+
SonosService.devicesDict = {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./telegram-service"), exports);
|
|
14
|
+
__exportStar(require("./telegram-Commands"), exports);
|
|
15
|
+
__exportStar(require("./telegramMessageCalback"), exports);
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TelegramCommands = void 0;
|
|
4
|
+
const devices_1 = require("../../devices/devices");
|
|
5
|
+
const telegram_service_1 = require("./telegram-service");
|
|
6
|
+
const telegramMessageCalback_1 = require("./telegramMessageCalback");
|
|
7
|
+
const Griffe_1 = require("../../devices/Griffe");
|
|
8
|
+
const Heizgruppen_1 = require("../../devices/Heizgruppen");
|
|
9
|
+
const Rollos_1 = require("../../devices/Rollos");
|
|
10
|
+
const zigbeeDeviceType_1 = require("../../devices/zigbee/zigbeeDeviceType");
|
|
11
|
+
const RoomBase_1 = require("../../../models/rooms/RoomBase");
|
|
12
|
+
const sonos_service_1 = require("../Sonos/sonos-service");
|
|
13
|
+
const hmIpDeviceType_1 = require("../../devices/hmIPDevices/hmIpDeviceType");
|
|
14
|
+
class TelegramCommands {
|
|
15
|
+
static initialize() {
|
|
16
|
+
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('AlarmStop', /\/stop_alarm/, async (m) => {
|
|
17
|
+
if (m.from === undefined)
|
|
18
|
+
return false;
|
|
19
|
+
RoomBase_1.RoomBase.clearAllAlarms();
|
|
20
|
+
telegram_service_1.TelegramService.sendMessage([m.from.id], 'Alle ausgelösten Wasser-/Rauchmelder und Eindringlingsalarme wurden gestoppt.');
|
|
21
|
+
return true;
|
|
22
|
+
}, 'Eine Möglichkeit bei Fehlalarm den Alarm abzuschalten'));
|
|
23
|
+
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('AwayModeStart', /\/away_mode_start/, async (m) => {
|
|
24
|
+
if (m.from === undefined)
|
|
25
|
+
return false;
|
|
26
|
+
RoomBase_1.RoomBase.startAwayMode();
|
|
27
|
+
telegram_service_1.TelegramService.inform('Der Abwesenheitsmodus ist initiiert');
|
|
28
|
+
return true;
|
|
29
|
+
}, 'Eine Möglichkeit die Alarmanlage scharfzuschalten'));
|
|
30
|
+
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('NightAlarmMode', /\/nightalarm_mode_start/, async (m) => {
|
|
31
|
+
if (m.from === undefined)
|
|
32
|
+
return false;
|
|
33
|
+
RoomBase_1.RoomBase.startNightAlarmMode();
|
|
34
|
+
telegram_service_1.TelegramService.inform('Der Nachtmodus ist initiiert');
|
|
35
|
+
return true;
|
|
36
|
+
}, 'Alarmanlage für die Nacht scharf schalten'));
|
|
37
|
+
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('AlarmModesEnd', /\/alarm_modes_end/, async (m) => {
|
|
38
|
+
if (m.from === undefined)
|
|
39
|
+
return false;
|
|
40
|
+
RoomBase_1.RoomBase.endAlarmModes();
|
|
41
|
+
telegram_service_1.TelegramService.sendMessage([m.from.id], 'Der Abwesenheitsmodus ist deaktiviert.');
|
|
42
|
+
return true;
|
|
43
|
+
}, 'Alarmanlage nach Abwesenheit/Nacht entschärfen'));
|
|
44
|
+
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('LastMovements', /\/check_movement/, async (m) => {
|
|
45
|
+
if (m.from === undefined)
|
|
46
|
+
return false;
|
|
47
|
+
telegram_service_1.TelegramService.sendMessage([m.from.id], `Im Folgenden sind die letzten Bewegungen\n${RoomBase_1.RoomBase.getLastMovements()}`);
|
|
48
|
+
return true;
|
|
49
|
+
}, 'Gibt die letzten Bewegungen inkl. ihrer Uhrzeit aus.'));
|
|
50
|
+
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('TelegramTest', /\/test/, async (m) => {
|
|
51
|
+
if (m.from === undefined)
|
|
52
|
+
return false;
|
|
53
|
+
telegram_service_1.TelegramService.sendMessage([m.from.id], 'Hallo, ich bin der HoffMation Bot.');
|
|
54
|
+
return true;
|
|
55
|
+
}, 'Eine Möglichkeit die Verknüpfung mit dem HoffMation Bot zu testen'));
|
|
56
|
+
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('RolloObenCheck', /\/check_rollo/, async (m) => {
|
|
57
|
+
if (m.from === undefined)
|
|
58
|
+
return false;
|
|
59
|
+
telegram_service_1.TelegramService.sendMessage([m.from.id], Rollos_1.Rolladen.getRolladenPosition());
|
|
60
|
+
return true;
|
|
61
|
+
}, 'Gibt die Positionen der Rollos aus, warnt über offene Rollos und nennt die nächsten Fahrten'));
|
|
62
|
+
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('FensterCheck', /\/check_fenster/, async (m) => {
|
|
63
|
+
if (m.from === undefined)
|
|
64
|
+
return false;
|
|
65
|
+
telegram_service_1.TelegramService.sendMessage([m.from.id], Griffe_1.Griffe.getGriffPosition());
|
|
66
|
+
return true;
|
|
67
|
+
}, 'Gibt die Positionen der Fenstergriffe aus und warnt somit über offene Fenster'));
|
|
68
|
+
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('HeizungCheck', /\/check_temperatur/, async (m) => {
|
|
69
|
+
if (m.from === undefined)
|
|
70
|
+
return false;
|
|
71
|
+
telegram_service_1.TelegramService.sendMessage([m.from.id], Heizgruppen_1.Heizgruppen.getInfo());
|
|
72
|
+
return true;
|
|
73
|
+
}, 'Gibt die Namen und aktuellen Werte sämtlicher Heizgruppen aus (aktuelle Temperatur, Soll Temperatur, Ventilstellung).'));
|
|
74
|
+
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('HeizungError', /\/temperatur_error/, async (m) => {
|
|
75
|
+
if (m.from === undefined)
|
|
76
|
+
return false;
|
|
77
|
+
telegram_service_1.TelegramService.sendMessage([m.from.id], Heizgruppen_1.Heizgruppen.getProblems());
|
|
78
|
+
return true;
|
|
79
|
+
}, 'Zeigt Differenzen zwischen Heizungen und den jeweiligen Heizgruppen auf'));
|
|
80
|
+
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('HeizungCheckOne', /\/check_1_temperatur.*/, async (m) => {
|
|
81
|
+
if (m.from === undefined)
|
|
82
|
+
return false;
|
|
83
|
+
telegram_service_1.TelegramService.sendMessage([m.from.id], await Heizgruppen_1.Heizgruppen.getSpecificInfo(m.text));
|
|
84
|
+
return true;
|
|
85
|
+
}, `Gibt den Verlauf der in \\"\\" übergebenen Heizgruppe aus.`, /\/check_1_temperatur/));
|
|
86
|
+
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('AllRolloDown', /\/all_rollo_down/, async (m) => {
|
|
87
|
+
if (m.from === undefined)
|
|
88
|
+
return false;
|
|
89
|
+
RoomBase_1.RoomBase.setAllRolloOfFloor(-1, 0);
|
|
90
|
+
telegram_service_1.TelegramService.sendMessage([m.from.id], `Es werden alle Rollos heruntergefahren`);
|
|
91
|
+
return true;
|
|
92
|
+
}, `Fährt alle rollos runter`));
|
|
93
|
+
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('VibrationSensitivity', /\/set_vibration_sensitivity/, async (m) => {
|
|
94
|
+
if (m.from === undefined)
|
|
95
|
+
return false;
|
|
96
|
+
for (const id in devices_1.Devices.Zigbee) {
|
|
97
|
+
const d = devices_1.Devices.Zigbee[id];
|
|
98
|
+
if (d.deviceType === zigbeeDeviceType_1.ZigbeeDeviceType.ZigbeeAquaraVibra) {
|
|
99
|
+
d.setSensitivity(2);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
telegram_service_1.TelegramService.sendMessage([m.from.id], 'Abgeschlossen');
|
|
103
|
+
return true;
|
|
104
|
+
}, `Setzt alle Vibrationsensoren auf High`));
|
|
105
|
+
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('AllButtonAssignments', /\/get_all_button_assignments/, async (m) => {
|
|
106
|
+
if (m.from === undefined)
|
|
107
|
+
return false;
|
|
108
|
+
const response = ['These are the assignments for all buttons'];
|
|
109
|
+
for (const id in devices_1.Devices.hmIP) {
|
|
110
|
+
const d = devices_1.Devices.hmIP[id];
|
|
111
|
+
if (d.deviceType === hmIpDeviceType_1.HmIpDeviceType.HmIpTaster) {
|
|
112
|
+
response.push(d.getTastenAssignment());
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
telegram_service_1.TelegramService.sendMessage([m.from.id], response.join('\n'));
|
|
116
|
+
return true;
|
|
117
|
+
}, `Retrieves the button assignments for all buttons in home`));
|
|
118
|
+
telegram_service_1.TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('SonosTest', /\/perform_sonos_test/, async (m) => {
|
|
119
|
+
if (m.from === undefined)
|
|
120
|
+
return false;
|
|
121
|
+
sonos_service_1.SonosService.speakTestMessageOnEachDevice();
|
|
122
|
+
telegram_service_1.TelegramService.sendMessage([m.from.id], 'Testnachricht gesprochen --> Führe weiteren Test durch');
|
|
123
|
+
sonos_service_1.SonosService.checkAll();
|
|
124
|
+
return true;
|
|
125
|
+
}, `Spiele eine kurze Nachricht auf allen Sonos Geräten um diese zu identifizieren`));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.TelegramCommands = TelegramCommands;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import TelegramBot from 'node-telegram-bot-api';
|
|
2
|
+
import { TelegramMessageCallback } from './telegramMessageCalback';
|
|
3
|
+
import { iTelegramSettings } from '../../config/iConfig';
|
|
4
|
+
export declare class TelegramService {
|
|
5
|
+
static subscribedIDs: number[];
|
|
6
|
+
private static token;
|
|
7
|
+
private static active;
|
|
8
|
+
private static bot;
|
|
9
|
+
private static allowedIDs;
|
|
10
|
+
private static settings;
|
|
11
|
+
private static callbacks;
|
|
12
|
+
static addMessageCallback(pCallback: TelegramMessageCallback, reset?: boolean): void;
|
|
13
|
+
static initialize(settings?: iTelegramSettings): void;
|
|
14
|
+
static publishCommands(): void;
|
|
15
|
+
static inform(message: string): void;
|
|
16
|
+
static sendMessage(ids: number[], message: string): void;
|
|
17
|
+
static checkAuthorized(msg: TelegramBot.Message): boolean;
|
|
18
|
+
static resetMessageCallbacks(): void;
|
|
19
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TelegramService = void 0;
|
|
7
|
+
const node_telegram_bot_api_1 = __importDefault(require("node-telegram-bot-api"));
|
|
8
|
+
const log_service_1 = require("../log-service");
|
|
9
|
+
const telegramMessageCalback_1 = require("./telegramMessageCalback");
|
|
10
|
+
const logLevel_1 = require("../../../models/logLevel");
|
|
11
|
+
const utils_1 = require("../utils/utils");
|
|
12
|
+
class TelegramService {
|
|
13
|
+
static addMessageCallback(pCallback, reset = false) {
|
|
14
|
+
if (!reset) {
|
|
15
|
+
TelegramService.callbacks[pCallback.name] = pCallback;
|
|
16
|
+
}
|
|
17
|
+
TelegramService.bot.onText(pCallback.identifier, (msg) => {
|
|
18
|
+
if (!TelegramService.checkAuthorized(msg)) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
pCallback.callback(msg);
|
|
22
|
+
});
|
|
23
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Telegram Callback mit Namen ${pCallback.name} für Nachrichten mit "${pCallback.identifier}" hinzugefügt`);
|
|
24
|
+
}
|
|
25
|
+
static initialize(settings) {
|
|
26
|
+
if (!settings && this.settings === undefined) {
|
|
27
|
+
this.active = false;
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (settings) {
|
|
31
|
+
this.settings = settings;
|
|
32
|
+
log_service_1.ServerLogService.telegramLevel = settings.logLevel;
|
|
33
|
+
this.token = settings.telegramToken;
|
|
34
|
+
this.allowedIDs = settings.allowedIDs;
|
|
35
|
+
this.subscribedIDs = settings.subscribedIDs;
|
|
36
|
+
}
|
|
37
|
+
this.active = true;
|
|
38
|
+
this.bot = new node_telegram_bot_api_1.default(this.token, { polling: true, webHook: false });
|
|
39
|
+
this.bot.on('polling_error', (e) => {
|
|
40
|
+
/*
|
|
41
|
+
if (!this.reinitiliazeWithTimeout()) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
*/
|
|
45
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Telegram Polling Error: ${e.message}`);
|
|
46
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Telegram Polling Error stack: ${e.stack}`);
|
|
47
|
+
});
|
|
48
|
+
TelegramService.addMessageCallback(new telegramMessageCalback_1.TelegramMessageCallback('helpCommand', /\/help/, async (m) => {
|
|
49
|
+
var _a;
|
|
50
|
+
if (m.from === undefined)
|
|
51
|
+
return true;
|
|
52
|
+
const message = [];
|
|
53
|
+
message.push('Im folgenden ist eine Liste sämtlicher Kommandos:\n');
|
|
54
|
+
for (const cName in TelegramService.callbacks) {
|
|
55
|
+
const telegramCb = TelegramService.callbacks[cName];
|
|
56
|
+
message.push(`${telegramCb.identifier.toString().replace(/\//g, '').replace(/\\/g, '')} - ${telegramCb.helpMessage}`);
|
|
57
|
+
}
|
|
58
|
+
TelegramService.sendMessage([(_a = m.from) === null || _a === void 0 ? void 0 : _a.id], message.join('\n'));
|
|
59
|
+
return true;
|
|
60
|
+
}, `Gibt eine Liste mit sämtlichen Kommandos aus`));
|
|
61
|
+
TelegramService.inform(`(Re-)Initialisierung abgeschlossen`);
|
|
62
|
+
}
|
|
63
|
+
static publishCommands() {
|
|
64
|
+
const commands = [];
|
|
65
|
+
for (const cName in TelegramService.callbacks) {
|
|
66
|
+
const telegramCb = TelegramService.callbacks[cName];
|
|
67
|
+
const commandIdentifier = (telegramCb.identifierForCommandList !== undefined ? telegramCb.identifierForCommandList : telegramCb.identifier)
|
|
68
|
+
.toString()
|
|
69
|
+
.replace(/\//g, '')
|
|
70
|
+
.replace(/\\/g, '');
|
|
71
|
+
commands.push({ command: commandIdentifier, description: telegramCb.helpMessage });
|
|
72
|
+
}
|
|
73
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `New Telegram Commands: "${JSON.stringify(commands)}"`);
|
|
74
|
+
TelegramService.bot.setMyCommands(commands);
|
|
75
|
+
}
|
|
76
|
+
static inform(message) {
|
|
77
|
+
this.sendMessage(this.subscribedIDs, message);
|
|
78
|
+
}
|
|
79
|
+
static sendMessage(ids, message) {
|
|
80
|
+
if (!TelegramService.active) {
|
|
81
|
+
// We can't use Log Service here, as it might result in a recursion
|
|
82
|
+
console.log(`Telegram message ${message} wasn't send as TelegramService is inactive`);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const chunksNeeded = Math.ceil(message.length / 4095);
|
|
86
|
+
for (let i = 0; i < chunksNeeded; i++) {
|
|
87
|
+
for (const id of ids) {
|
|
88
|
+
utils_1.Utils.guardedTimeout(() => {
|
|
89
|
+
this.bot.sendMessage(id, message.substring(i * 4095, i * 4095 + 4095)).catch((r) => {
|
|
90
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Warn, `Send Telegram Message to ${id} failed: ${r}`);
|
|
91
|
+
});
|
|
92
|
+
}, 200 * i, this);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
static checkAuthorized(msg) {
|
|
97
|
+
var _a;
|
|
98
|
+
if (msg.from !== undefined && this.allowedIDs.includes((_a = msg.from) === null || _a === void 0 ? void 0 : _a.id)) {
|
|
99
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `Authorisierte Telegram Message erhalten: ${JSON.stringify(msg)}`);
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Alert, `Fremden Telegram Nutzer erkannt. Nachricht "${JSON.stringify(msg)}"`);
|
|
103
|
+
TelegramService.sendMessage([msg.chat.id], "Hello stranger,\nExcuse me, but you're not yet on the guest list.\nPlease contact our manager.\nHave a great day");
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
/*
|
|
107
|
+
private static reinitialize(): void {
|
|
108
|
+
ServerLogService.writeLog(LogLevel.Info, `Reinitialize Telegram Bot: Stop Polling`);
|
|
109
|
+
this.bot
|
|
110
|
+
.startPolling({ restart: true })
|
|
111
|
+
.then(() => {
|
|
112
|
+
this.restartTimeout = undefined;
|
|
113
|
+
this.resetMessageCallbacks();
|
|
114
|
+
ServerLogService.writeLog(LogLevel.Debug, `Reinitialization of Telegram finished.`);
|
|
115
|
+
})
|
|
116
|
+
.catch((e) => {
|
|
117
|
+
ServerLogService.writeLog(LogLevel.Info, `Can't start polling: ${e}`);
|
|
118
|
+
TelegramService.reinitiliazeWithTimeout(true);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
public static reinitiliazeWithTimeout(force: boolean = false): boolean {
|
|
123
|
+
if (this.restartTimeout !== undefined && !force) {
|
|
124
|
+
return false;
|
|
125
|
+
} else if (force && this.restartTimeout !== undefined) {
|
|
126
|
+
clearTimeout(this.restartTimeout);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
this.restartTimeout = Utils.guardedTimeout(
|
|
130
|
+
() => {
|
|
131
|
+
this.reinitialize();
|
|
132
|
+
},
|
|
133
|
+
10000,
|
|
134
|
+
this,
|
|
135
|
+
);
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
*/
|
|
139
|
+
static resetMessageCallbacks() {
|
|
140
|
+
TelegramService.bot.clearTextListeners();
|
|
141
|
+
for (const name in TelegramService.callbacks) {
|
|
142
|
+
this.addMessageCallback(TelegramService.callbacks[name]);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
exports.TelegramService = TelegramService;
|
|
147
|
+
TelegramService.active = false;
|
|
148
|
+
TelegramService.settings = undefined;
|
|
149
|
+
// private static restartTimeout: NodeJS.Timeout | undefined = undefined;
|
|
150
|
+
TelegramService.callbacks = {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import TelegramBot from 'node-telegram-bot-api';
|
|
2
|
+
export declare class TelegramMessageCallback {
|
|
3
|
+
name: string;
|
|
4
|
+
identifier: RegExp;
|
|
5
|
+
callback: (message: TelegramBot.Message) => Promise<boolean>;
|
|
6
|
+
helpMessage: string;
|
|
7
|
+
identifierForCommandList?: RegExp | undefined;
|
|
8
|
+
constructor(name: string, identifier: RegExp, callback: (message: TelegramBot.Message) => Promise<boolean>, helpMessage: string, identifierForCommandList?: RegExp | undefined);
|
|
9
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TelegramMessageCallback = void 0;
|
|
4
|
+
class TelegramMessageCallback {
|
|
5
|
+
constructor(name, identifier, callback, helpMessage, identifierForCommandList) {
|
|
6
|
+
this.name = name;
|
|
7
|
+
this.identifier = identifier;
|
|
8
|
+
this.callback = callback;
|
|
9
|
+
this.helpMessage = helpMessage;
|
|
10
|
+
this.identifierForCommandList = identifierForCommandList;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.TelegramMessageCallback = TelegramMessageCallback;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./muell-tonne"), exports);
|
|
14
|
+
__exportStar(require("./m\u00FCll-service"), exports);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { OwnSonosDevice } from '../Sonos/sonos-service';
|
|
2
|
+
export declare class MuellTonne {
|
|
3
|
+
name: string;
|
|
4
|
+
ownSonosDevice?: OwnSonosDevice | undefined;
|
|
5
|
+
static oneDay: number;
|
|
6
|
+
nextDate: Date | undefined;
|
|
7
|
+
dates: Date[];
|
|
8
|
+
constructor(name: string, ownSonosDevice?: OwnSonosDevice | undefined);
|
|
9
|
+
sortDates(): void;
|
|
10
|
+
removePassedDates(): void;
|
|
11
|
+
check(): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MuellTonne = void 0;
|
|
4
|
+
const sonos_service_1 = require("../Sonos/sonos-service");
|
|
5
|
+
const log_service_1 = require("../log-service");
|
|
6
|
+
const logLevel_1 = require("../../../models/logLevel");
|
|
7
|
+
const telegram_service_1 = require("../Telegram/telegram-service");
|
|
8
|
+
class MuellTonne {
|
|
9
|
+
constructor(name, ownSonosDevice) {
|
|
10
|
+
this.name = name;
|
|
11
|
+
this.ownSonosDevice = ownSonosDevice;
|
|
12
|
+
this.nextDate = undefined;
|
|
13
|
+
this.dates = [];
|
|
14
|
+
}
|
|
15
|
+
sortDates() {
|
|
16
|
+
this.dates = this.dates.sort((a, b) => a.getTime() - b.getTime());
|
|
17
|
+
this.removePassedDates();
|
|
18
|
+
if (this.nextDate !== undefined) {
|
|
19
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `Die "${this.name}" ist das nächste mal am ${this.nextDate.toLocaleDateString('de-DE')} zu leeren`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
removePassedDates() {
|
|
23
|
+
const todayMidnight = new Date().setHours(0, 0, 0, 0);
|
|
24
|
+
while (this.dates.length > 0 && this.dates[0].getTime() < todayMidnight) {
|
|
25
|
+
this.dates.shift();
|
|
26
|
+
}
|
|
27
|
+
this.nextDate = this.dates[0];
|
|
28
|
+
}
|
|
29
|
+
check() {
|
|
30
|
+
this.removePassedDates();
|
|
31
|
+
if (this.nextDate === undefined) {
|
|
32
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Alert, `Die Mülltonne mit dem Namen ${this.name} hat keine nächste Abholung!`);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const todayMidnight = new Date().setHours(0, 0, 0, 0);
|
|
36
|
+
const tomorowMidnight = todayMidnight + MuellTonne.oneDay;
|
|
37
|
+
const tomorowAfterMidnight = tomorowMidnight + MuellTonne.oneDay;
|
|
38
|
+
const nextTimestamp = this.nextDate.getTime();
|
|
39
|
+
const daysTilNextEvent = (nextTimestamp - todayMidnight) / MuellTonne.oneDay;
|
|
40
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `Die Mülltonne mit dem Namen ${this.name} wird in ${daysTilNextEvent} Tagen das nächste Mal abgeholt.`);
|
|
41
|
+
if (nextTimestamp >= tomorowAfterMidnight) {
|
|
42
|
+
log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Die Mülltonne mit dem Namen ${this.name} wird erst nach Übermorgen abgeholt`);
|
|
43
|
+
return; // Es ist noch lange hin
|
|
44
|
+
}
|
|
45
|
+
if (nextTimestamp >= tomorowMidnight) {
|
|
46
|
+
const message = `Die Mülltonne mit dem Namen ${this.name} wird morgen abgeholt!`;
|
|
47
|
+
telegram_service_1.TelegramService.inform(message);
|
|
48
|
+
if (this.ownSonosDevice) {
|
|
49
|
+
sonos_service_1.SonosService.speakOnDevice(message, this.ownSonosDevice, 30);
|
|
50
|
+
}
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (nextTimestamp >= todayMidnight) {
|
|
54
|
+
if (new Date().getHours() > 10) {
|
|
55
|
+
const message = `Die Mülltonne mit dem Namen ${this.name} wurde heute abgeholt, Mülltonne zurückstellen!`;
|
|
56
|
+
telegram_service_1.TelegramService.inform(message);
|
|
57
|
+
if (this.ownSonosDevice) {
|
|
58
|
+
sonos_service_1.SonosService.speakOnDevice(message, this.ownSonosDevice, 30);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
const message = `Die Mülltonne mit dem Namen ${this.name} wird heute abgeholt!`;
|
|
63
|
+
telegram_service_1.TelegramService.inform(message);
|
|
64
|
+
if (this.ownSonosDevice) {
|
|
65
|
+
sonos_service_1.SonosService.speakOnDevice(message, this.ownSonosDevice, 30);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.MuellTonne = MuellTonne;
|
|
73
|
+
MuellTonne.oneDay = 1000 * 60 * 60 * 24;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { TimeCallback } from '../../../models/timeCallback';
|
|
2
|
+
import { iMuellSettings } from '../../config/iConfig';
|
|
3
|
+
import { MuellTonne } from './muell-tonne';
|
|
4
|
+
import { OwnSonosDevice } from '../Sonos/sonos-service';
|
|
5
|
+
export declare class MuellService {
|
|
6
|
+
static alleTonnen: Array<{
|
|
7
|
+
name: string;
|
|
8
|
+
date: Date;
|
|
9
|
+
}>;
|
|
10
|
+
static blaueTonne: MuellTonne;
|
|
11
|
+
static graueTonne: MuellTonne;
|
|
12
|
+
static gelbeTonne: MuellTonne;
|
|
13
|
+
static brauneTonne: MuellTonne;
|
|
14
|
+
static updateTimeCallback: TimeCallback;
|
|
15
|
+
static checkTimeCallback: TimeCallback;
|
|
16
|
+
private static lastCheck;
|
|
17
|
+
private static _calendarURL;
|
|
18
|
+
private static _active;
|
|
19
|
+
private static defaultSonosDevice;
|
|
20
|
+
static months: string[];
|
|
21
|
+
static intialize(config: iMuellSettings, defaultSonosDevice: OwnSonosDevice | undefined): void;
|
|
22
|
+
static updateCalendar(checkAfterwards?: boolean): void;
|
|
23
|
+
static checkAll(pRetries?: number): void;
|
|
24
|
+
}
|