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.
Files changed (365) hide show
  1. package/lib/index.d.ts +2 -0
  2. package/lib/index.js +14 -0
  3. package/lib/models/actuatorSettings.d.ts +5 -0
  4. package/lib/models/actuatorSettings.js +11 -0
  5. package/lib/models/connectionCallbacks.d.ts +10 -0
  6. package/lib/models/connectionCallbacks.js +6 -0
  7. package/lib/models/daytime.d.ts +5 -0
  8. package/lib/models/daytime.js +10 -0
  9. package/lib/models/deviceConfig.d.ts +11 -0
  10. package/lib/models/deviceConfig.js +2 -0
  11. package/lib/models/dimmerSettings.d.ts +5 -0
  12. package/lib/models/dimmerSettings.js +11 -0
  13. package/lib/models/iTemperaturDataPoint.d.ts +9 -0
  14. package/lib/models/iTemperaturDataPoint.js +2 -0
  15. package/lib/models/index.d.ts +12 -0
  16. package/lib/models/index.js +24 -0
  17. package/lib/models/ledSettings.d.ts +19 -0
  18. package/lib/models/ledSettings.js +25 -0
  19. package/lib/models/logLevel.d.ts +9 -0
  20. package/lib/models/logLevel.js +13 -0
  21. package/lib/models/persistence/BasicRoomInfo.d.ts +5 -0
  22. package/lib/models/persistence/BasicRoomInfo.js +10 -0
  23. package/lib/models/persistence/CurrentIlluminationDataPoint.d.ts +8 -0
  24. package/lib/models/persistence/CurrentIlluminationDataPoint.js +13 -0
  25. package/lib/models/persistence/DailyMovementCount.d.ts +7 -0
  26. package/lib/models/persistence/DailyMovementCount.js +12 -0
  27. package/lib/models/persistence/RoomDetailInfo.d.ts +6 -0
  28. package/lib/models/persistence/RoomDetailInfo.js +11 -0
  29. package/lib/models/persistence/index.d.ts +6 -0
  30. package/lib/models/persistence/index.js +18 -0
  31. package/lib/models/persistence/temperaturDataPoint.d.ts +10 -0
  32. package/lib/models/persistence/temperaturDataPoint.js +14 -0
  33. package/lib/models/persistence/todaysCount.d.ts +5 -0
  34. package/lib/models/persistence/todaysCount.js +10 -0
  35. package/lib/models/rooms/RoomBase.d.ts +81 -0
  36. package/lib/models/rooms/RoomBase.js +309 -0
  37. package/lib/models/rooms/RoomSettings/RoomSettings.d.ts +57 -0
  38. package/lib/models/rooms/RoomSettings/RoomSettings.js +120 -0
  39. package/lib/models/rooms/RoomSettings/hmIPRoomSettings.d.ts +17 -0
  40. package/lib/models/rooms/RoomSettings/hmIPRoomSettings.js +51 -0
  41. package/lib/models/rooms/RoomSettings/iRoomDefaultSettings.d.ts +16 -0
  42. package/lib/models/rooms/RoomSettings/iRoomDefaultSettings.js +2 -0
  43. package/lib/models/rooms/RoomSettings/index.d.ts +4 -0
  44. package/lib/models/rooms/RoomSettings/index.js +16 -0
  45. package/lib/models/rooms/RoomSettings/zigbeeRoomSettings.d.ts +17 -0
  46. package/lib/models/rooms/RoomSettings/zigbeeRoomSettings.js +51 -0
  47. package/{models/rooms/iRoomImportEnforcer.ts → lib/models/rooms/iRoomImportEnforcer.d.ts} +1 -1
  48. package/lib/models/rooms/iRoomImportEnforcer.js +2 -0
  49. package/lib/models/rooms/index.d.ts +3 -0
  50. package/lib/models/rooms/index.js +15 -0
  51. package/lib/models/temperaturSettings.d.ts +9 -0
  52. package/lib/models/temperaturSettings.js +21 -0
  53. package/lib/models/timeCallback.d.ts +19 -0
  54. package/lib/models/timeCallback.js +73 -0
  55. package/lib/server/config/iConfig.d.ts +45 -0
  56. package/lib/server/config/iConfig.js +2 -0
  57. package/lib/server/config/index.d.ts +1 -0
  58. package/lib/server/config/index.js +13 -0
  59. package/lib/server/devices/DeviceInfo.d.ts +17 -0
  60. package/lib/server/devices/DeviceInfo.js +48 -0
  61. package/lib/server/devices/Griffe.d.ts +5 -0
  62. package/lib/server/devices/Griffe.js +31 -0
  63. package/lib/server/devices/Heizgruppen.d.ts +8 -0
  64. package/lib/server/devices/Heizgruppen.js +78 -0
  65. package/lib/server/devices/Rollos.d.ts +5 -0
  66. package/lib/server/devices/Rollos.js +43 -0
  67. package/lib/server/devices/deviceUpdater.d.ts +13 -0
  68. package/lib/server/devices/deviceUpdater.js +64 -0
  69. package/lib/server/devices/devices.d.ts +21 -0
  70. package/lib/server/devices/devices.js +172 -0
  71. package/lib/server/devices/groups/fensterGroup.d.ts +15 -0
  72. package/lib/server/devices/groups/fensterGroup.js +138 -0
  73. package/lib/server/devices/groups/heatGroup.d.ts +9 -0
  74. package/lib/server/devices/groups/heatGroup.js +33 -0
  75. package/lib/server/devices/groups/index.d.ts +8 -0
  76. package/lib/server/devices/groups/index.js +20 -0
  77. package/lib/server/devices/groups/lampenGroup.d.ts +18 -0
  78. package/lib/server/devices/groups/lampenGroup.js +95 -0
  79. package/lib/server/devices/groups/praesenzGroup.d.ts +18 -0
  80. package/lib/server/devices/groups/praesenzGroup.js +145 -0
  81. package/lib/server/devices/groups/smokeGroup.d.ts +8 -0
  82. package/lib/server/devices/groups/smokeGroup.js +18 -0
  83. package/lib/server/devices/groups/sonosGroup.d.ts +11 -0
  84. package/lib/server/devices/groups/sonosGroup.js +38 -0
  85. package/lib/server/devices/groups/tasterGroup.d.ts +8 -0
  86. package/lib/server/devices/groups/tasterGroup.js +43 -0
  87. package/lib/server/devices/groups/waterGroup.d.ts +8 -0
  88. package/lib/server/devices/groups/waterGroup.js +18 -0
  89. package/lib/server/devices/hmIPDevices/Fenster.d.ts +22 -0
  90. package/lib/server/devices/hmIPDevices/Fenster.js +100 -0
  91. package/lib/server/devices/hmIPDevices/FensterPosition.d.ts +5 -0
  92. package/lib/server/devices/hmIPDevices/FensterPosition.js +9 -0
  93. package/lib/server/devices/hmIPDevices/TuerPosition.d.ts +4 -0
  94. package/lib/server/devices/hmIPDevices/TuerPosition.js +8 -0
  95. package/lib/server/devices/hmIPDevices/hmIpBewegung.d.ts +25 -0
  96. package/lib/server/devices/hmIPDevices/hmIpBewegung.js +106 -0
  97. package/lib/server/devices/hmIPDevices/hmIpDevice.d.ts +19 -0
  98. package/lib/server/devices/hmIPDevices/hmIpDevice.js +72 -0
  99. package/lib/server/devices/hmIPDevices/hmIpDeviceType.d.ts +14 -0
  100. package/lib/server/devices/hmIPDevices/hmIpDeviceType.js +18 -0
  101. package/lib/server/devices/hmIPDevices/hmIpGriff.d.ts +22 -0
  102. package/lib/server/devices/hmIPDevices/hmIpGriff.js +117 -0
  103. package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.d.ts +34 -0
  104. package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.js +143 -0
  105. package/lib/server/devices/hmIPDevices/hmIpHeizung.d.ts +15 -0
  106. package/lib/server/devices/hmIPDevices/hmIpHeizung.js +54 -0
  107. package/lib/server/devices/hmIPDevices/hmIpLampe.d.ts +27 -0
  108. package/lib/server/devices/hmIPDevices/hmIpLampe.js +96 -0
  109. package/lib/server/devices/hmIPDevices/hmIpPraezenz.d.ts +22 -0
  110. package/lib/server/devices/hmIPDevices/hmIpPraezenz.js +89 -0
  111. package/lib/server/devices/hmIPDevices/hmIpRoll.d.ts +22 -0
  112. package/lib/server/devices/hmIPDevices/hmIpRoll.js +105 -0
  113. package/lib/server/devices/hmIPDevices/hmIpTaster.d.ts +13 -0
  114. package/lib/server/devices/hmIPDevices/hmIpTaster.js +78 -0
  115. package/lib/server/devices/hmIPDevices/hmIpTherm.d.ts +7 -0
  116. package/lib/server/devices/hmIPDevices/hmIpTherm.js +17 -0
  117. package/lib/server/devices/hmIPDevices/hmIpTuer.d.ts +16 -0
  118. package/lib/server/devices/hmIPDevices/hmIpTuer.js +94 -0
  119. package/lib/server/devices/hmIPDevices/hmIpWippe.d.ts +12 -0
  120. package/lib/server/devices/hmIPDevices/hmIpWippe.js +50 -0
  121. package/lib/server/devices/hmIPDevices/index.d.ts +16 -0
  122. package/lib/server/devices/hmIPDevices/index.js +28 -0
  123. package/lib/server/devices/iDeviceUpdater.d.ts +5 -0
  124. package/lib/server/devices/iDeviceUpdater.js +2 -0
  125. package/{server/devices/iIlluminationSensor.ts → lib/server/devices/iIlluminationSensor.d.ts} +1 -1
  126. package/lib/server/devices/iIlluminationSensor.js +2 -0
  127. package/lib/server/devices/iIoBrokerDevice.d.ts +30 -0
  128. package/lib/server/devices/iIoBrokerDevice.js +37 -0
  129. package/lib/server/devices/iLamp.d.ts +8 -0
  130. package/lib/server/devices/iLamp.js +2 -0
  131. package/lib/server/devices/iTaster.d.ts +7 -0
  132. package/lib/server/devices/iTaster.js +2 -0
  133. package/lib/server/devices/index.d.ts +16 -0
  134. package/lib/server/devices/index.js +28 -0
  135. package/lib/server/devices/taste.d.ts +15 -0
  136. package/lib/server/devices/taste.js +64 -0
  137. package/lib/server/devices/wledDevice.d.ts +38 -0
  138. package/lib/server/devices/wledDevice.js +97 -0
  139. package/lib/server/devices/zigbee/ZigbeeActuator.d.ts +17 -0
  140. package/lib/server/devices/zigbee/ZigbeeActuator.js +83 -0
  141. package/lib/server/devices/zigbee/index.d.ts +13 -0
  142. package/lib/server/devices/zigbee/index.js +25 -0
  143. package/lib/server/devices/zigbee/zigbeeAquaraMotion.d.ts +31 -0
  144. package/lib/server/devices/zigbee/zigbeeAquaraMotion.js +137 -0
  145. package/lib/server/devices/zigbee/zigbeeAquaraVibra.d.ts +23 -0
  146. package/lib/server/devices/zigbee/zigbeeAquaraVibra.js +121 -0
  147. package/lib/server/devices/zigbee/zigbeeAquaraWater.d.ts +18 -0
  148. package/lib/server/devices/zigbee/zigbeeAquaraWater.js +84 -0
  149. package/lib/server/devices/zigbee/zigbeeBlitzShp.d.ts +16 -0
  150. package/lib/server/devices/zigbee/zigbeeBlitzShp.js +64 -0
  151. package/lib/server/devices/zigbee/zigbeeDevice.d.ts +20 -0
  152. package/lib/server/devices/zigbee/zigbeeDevice.js +83 -0
  153. package/lib/server/devices/zigbee/zigbeeDeviceType.d.ts +14 -0
  154. package/lib/server/devices/zigbee/zigbeeDeviceType.js +18 -0
  155. package/lib/server/devices/zigbee/zigbeeHeimanSmoke.d.ts +18 -0
  156. package/lib/server/devices/zigbee/zigbeeHeimanSmoke.js +89 -0
  157. package/lib/server/devices/zigbee/zigbeeIkeaSteckdose.d.ts +10 -0
  158. package/lib/server/devices/zigbee/zigbeeIkeaSteckdose.js +26 -0
  159. package/lib/server/devices/zigbee/zigbeeIlluActuator.d.ts +11 -0
  160. package/lib/server/devices/zigbee/zigbeeIlluActuator.js +28 -0
  161. package/lib/server/devices/zigbee/zigbeeIlluDimmer.d.ts +23 -0
  162. package/lib/server/devices/zigbee/zigbeeIlluDimmer.js +128 -0
  163. package/lib/server/devices/zigbee/zigbeeIlluLampe.d.ts +10 -0
  164. package/lib/server/devices/zigbee/zigbeeIlluLampe.js +31 -0
  165. package/lib/server/devices/zigbee/zigbeeIlluLedRGBCCT.d.ts +22 -0
  166. package/lib/server/devices/zigbee/zigbeeIlluLedRGBCCT.js +122 -0
  167. package/lib/server/index.d.ts +4 -0
  168. package/lib/server/index.js +16 -0
  169. package/lib/server/ioBroker/connection.d.ts +160 -0
  170. package/lib/server/ioBroker/connection.js +1419 -0
  171. package/lib/server/ioBroker/index.d.ts +6 -0
  172. package/lib/server/ioBroker/index.js +18 -0
  173. package/lib/server/ioBroker/ioBroker.main.d.ts +15 -0
  174. package/lib/server/ioBroker/ioBroker.main.js +85 -0
  175. package/lib/server/ioBroker/socketIOAuthInfo.d.ts +5 -0
  176. package/lib/server/ioBroker/socketIOAuthInfo.js +6 -0
  177. package/lib/server/ioBroker/socketIOConnectOptions.d.ts +6 -0
  178. package/lib/server/ioBroker/socketIOConnectOptions.js +6 -0
  179. package/lib/server/ioBroker/socketIOLogging.d.ts +12 -0
  180. package/lib/server/ioBroker/socketIOLogging.js +32 -0
  181. package/lib/server/ioBroker/socketIOVisCommand.d.ts +6 -0
  182. package/lib/server/ioBroker/socketIOVisCommand.js +11 -0
  183. package/lib/server/services/HTTPSOptions.d.ts +12 -0
  184. package/lib/server/services/HTTPSOptions.js +16 -0
  185. package/lib/server/services/Sonos/OwnSonosDevices.d.ts +7 -0
  186. package/lib/server/services/Sonos/OwnSonosDevices.js +10 -0
  187. package/lib/server/services/Sonos/index.d.ts +4 -0
  188. package/lib/server/services/Sonos/index.js +16 -0
  189. package/lib/server/services/Sonos/mp3-server.d.ts +7 -0
  190. package/lib/server/services/Sonos/mp3-server.js +90 -0
  191. package/lib/server/services/Sonos/polly-service.d.ts +12 -0
  192. package/lib/server/services/Sonos/polly-service.js +117 -0
  193. package/lib/server/services/Sonos/sonos-service.d.ts +30 -0
  194. package/lib/server/services/Sonos/sonos-service.js +140 -0
  195. package/lib/server/services/Telegram/index.d.ts +3 -0
  196. package/lib/server/services/Telegram/index.js +15 -0
  197. package/lib/server/services/Telegram/telegram-Commands.d.ts +3 -0
  198. package/lib/server/services/Telegram/telegram-Commands.js +128 -0
  199. package/lib/server/services/Telegram/telegram-service.d.ts +19 -0
  200. package/lib/server/services/Telegram/telegram-service.js +150 -0
  201. package/lib/server/services/Telegram/telegramMessageCalback.d.ts +9 -0
  202. package/lib/server/services/Telegram/telegramMessageCalback.js +13 -0
  203. package/lib/server/services/calendar/index.d.ts +2 -0
  204. package/lib/server/services/calendar/index.js +14 -0
  205. package/lib/server/services/calendar/muell-tonne.d.ts +12 -0
  206. package/lib/server/services/calendar/muell-tonne.js +73 -0
  207. package/lib/server/services/calendar/m/303/274ll-service.d.ts +24 -0
  208. package/lib/server/services/calendar/m/303/274ll-service.js +108 -0
  209. package/lib/server/services/dbo/index.d.ts +1 -0
  210. package/lib/server/services/dbo/index.js +13 -0
  211. package/lib/server/services/dbo/persist.d.ts +27 -0
  212. package/lib/server/services/dbo/persist.js +107 -0
  213. package/lib/server/services/https-service.d.ts +6 -0
  214. package/lib/server/services/https-service.js +87 -0
  215. package/lib/server/services/index.d.ts +12 -0
  216. package/lib/server/services/index.js +24 -0
  217. package/lib/server/services/log-service.d.ts +14 -0
  218. package/lib/server/services/log-service.js +41 -0
  219. package/lib/server/services/news-service.d.ts +10 -0
  220. package/lib/server/services/news-service.js +90 -0
  221. package/lib/server/services/settings-service.d.ts +6 -0
  222. package/lib/server/services/settings-service.js +19 -0
  223. package/lib/server/services/time-callback-service.d.ts +39 -0
  224. package/lib/server/services/time-callback-service.js +182 -0
  225. package/lib/server/services/utils/index.d.ts +2 -0
  226. package/lib/server/services/utils/index.js +14 -0
  227. package/lib/server/services/utils/ringstorage.d.ts +8 -0
  228. package/lib/server/services/utils/ringstorage.js +27 -0
  229. package/lib/server/services/utils/utils.d.ts +9 -0
  230. package/lib/server/services/utils/utils.js +44 -0
  231. package/lib/server/services/weather/index.d.ts +9 -0
  232. package/lib/server/services/weather/index.js +21 -0
  233. package/lib/server/services/weather/weather-alert.d.ts +7 -0
  234. package/lib/server/services/weather/weather-alert.js +2 -0
  235. package/lib/server/services/weather/weather-current.d.ts +25 -0
  236. package/lib/server/services/weather/weather-current.js +2 -0
  237. package/lib/server/services/weather/weather-daily.d.ts +21 -0
  238. package/lib/server/services/weather/weather-daily.js +2 -0
  239. package/lib/server/services/weather/weather-feelsLike.d.ts +6 -0
  240. package/lib/server/services/weather/weather-feelsLike.js +2 -0
  241. package/lib/server/services/weather/weather-hourly.d.ts +16 -0
  242. package/lib/server/services/weather/weather-hourly.js +2 -0
  243. package/lib/server/services/weather/weather-item.d.ts +6 -0
  244. package/lib/server/services/weather/weather-item.js +2 -0
  245. package/lib/server/services/weather/weather-minutes.d.ts +4 -0
  246. package/lib/server/services/weather/weather-minutes.js +2 -0
  247. package/lib/server/services/weather/weather-service.d.ts +37 -0
  248. package/lib/server/services/weather/weather-service.js +173 -0
  249. package/lib/server/services/weather/weather-temp.d.ts +8 -0
  250. package/lib/server/services/weather/weather-temp.js +2 -0
  251. package/lib/tsconfig.tsbuildinfo +1 -0
  252. package/package.json +21 -10
  253. package/.eslintrc.js +0 -27
  254. package/.github/workflows/npm-publish.yml +0 -33
  255. package/.prettierrc.js +0 -9
  256. package/index.js +0 -1
  257. package/models/actuatorSettings.ts +0 -5
  258. package/models/connectionCallbacks.ts +0 -13
  259. package/models/daytime.ts +0 -3
  260. package/models/deviceConfig.ts +0 -8
  261. package/models/dimmerSettings.ts +0 -5
  262. package/models/iTemperaturDataPoint.ts +0 -9
  263. package/models/ledSettings.ts +0 -19
  264. package/models/logLevel.ts +0 -9
  265. package/models/persistence/BasicRoomInfo.ts +0 -3
  266. package/models/persistence/CurrentIlluminationDataPoint.ts +0 -9
  267. package/models/persistence/DailyMovementCount.ts +0 -3
  268. package/models/persistence/RoomDetailInfo.ts +0 -4
  269. package/models/persistence/temperaturDataPoint.ts +0 -12
  270. package/models/persistence/todaysCount.ts +0 -3
  271. package/models/rooms/RoomBase.ts +0 -358
  272. package/models/rooms/RoomSettings/RoomSettings.ts +0 -159
  273. package/models/rooms/RoomSettings/hmIPRoomSettings.ts +0 -53
  274. package/models/rooms/RoomSettings/iRoomDefaultSettings.ts +0 -17
  275. package/models/rooms/RoomSettings/readme.md +0 -18
  276. package/models/rooms/RoomSettings/zigbeeRoomSettings.ts +0 -51
  277. package/models/rooms/readme.md +0 -11
  278. package/models/temperaturSettings.ts +0 -22
  279. package/models/timeCallback.ts +0 -90
  280. package/server/config/config-readme.md +0 -19
  281. package/server/config/iConfig.ts +0 -53
  282. package/server/config/private/mainConfig.json +0 -64
  283. package/server/devices/DeviceInfo.ts +0 -66
  284. package/server/devices/Griffe.ts +0 -31
  285. package/server/devices/Heizgruppen.ts +0 -91
  286. package/server/devices/Rollos.ts +0 -48
  287. package/server/devices/deviceUpdater.ts +0 -72
  288. package/server/devices/devices.ts +0 -193
  289. package/server/devices/groups/fensterGroup.ts +0 -175
  290. package/server/devices/groups/heatGroup.ts +0 -32
  291. package/server/devices/groups/lampenGroup.ts +0 -106
  292. package/server/devices/groups/praesenzGroup.ts +0 -187
  293. package/server/devices/groups/smokeGroup.ts +0 -16
  294. package/server/devices/groups/sonosGroup.ts +0 -33
  295. package/server/devices/groups/tasterGroup.ts +0 -48
  296. package/server/devices/groups/waterGroup.ts +0 -16
  297. package/server/devices/hmIPDevices/Fenster.ts +0 -114
  298. package/server/devices/hmIPDevices/FensterPosition.ts +0 -5
  299. package/server/devices/hmIPDevices/TuerPosition.ts +0 -4
  300. package/server/devices/hmIPDevices/hmIpBewegung.ts +0 -145
  301. package/server/devices/hmIPDevices/hmIpDevice.ts +0 -90
  302. package/server/devices/hmIPDevices/hmIpDeviceType.ts +0 -14
  303. package/server/devices/hmIPDevices/hmIpGriff.ts +0 -143
  304. package/server/devices/hmIPDevices/hmIpHeizgruppe.ts +0 -172
  305. package/server/devices/hmIPDevices/hmIpHeizung.ts +0 -69
  306. package/server/devices/hmIPDevices/hmIpLampe.ts +0 -120
  307. package/server/devices/hmIPDevices/hmIpPraezenz.ts +0 -117
  308. package/server/devices/hmIPDevices/hmIpRoll.ts +0 -133
  309. package/server/devices/hmIPDevices/hmIpTaster.ts +0 -82
  310. package/server/devices/hmIPDevices/hmIpTherm.ts +0 -19
  311. package/server/devices/hmIPDevices/hmIpTuer.ts +0 -115
  312. package/server/devices/hmIPDevices/hmIpWippe.ts +0 -55
  313. package/server/devices/iDeviceUpdater.ts +0 -4
  314. package/server/devices/iIoBrokerDevice.ts +0 -44
  315. package/server/devices/iLamp.ts +0 -10
  316. package/server/devices/iTaster.ts +0 -6
  317. package/server/devices/taste.ts +0 -84
  318. package/server/devices/wledDevice.ts +0 -124
  319. package/server/devices/zigbee/ZigbeeActuator.ts +0 -113
  320. package/server/devices/zigbee/zigbeeAquaraMotion.ts +0 -205
  321. package/server/devices/zigbee/zigbeeAquaraVibra.ts +0 -171
  322. package/server/devices/zigbee/zigbeeAquaraWater.ts +0 -94
  323. package/server/devices/zigbee/zigbeeBlitzShp.ts +0 -77
  324. package/server/devices/zigbee/zigbeeDevice.ts +0 -115
  325. package/server/devices/zigbee/zigbeeDeviceType.ts +0 -14
  326. package/server/devices/zigbee/zigbeeHeimanSmoke.ts +0 -99
  327. package/server/devices/zigbee/zigbeeIkeaSteckdose.ts +0 -31
  328. package/server/devices/zigbee/zigbeeIlluActuator.ts +0 -37
  329. package/server/devices/zigbee/zigbeeIlluDimmer.ts +0 -166
  330. package/server/devices/zigbee/zigbeeIlluLampe.ts +0 -33
  331. package/server/devices/zigbee/zigbeeIlluLedRGBCCT.ts +0 -137
  332. package/server/ioBroker/connection.ts +0 -1655
  333. package/server/ioBroker/ioBroker.main.ts +0 -99
  334. package/server/ioBroker/socketIOAuthInfo.ts +0 -5
  335. package/server/ioBroker/socketIOConnectOptions.ts +0 -6
  336. package/server/ioBroker/socketIOLogging.ts +0 -29
  337. package/server/ioBroker/socketIOVisCommand.ts +0 -11
  338. package/server/services/HTTPSOptions.ts +0 -14
  339. package/server/services/Sonos/OwnSonosDevices.ts +0 -9
  340. package/server/services/Sonos/mp3-server.ts +0 -75
  341. package/server/services/Sonos/polly-service.ts +0 -100
  342. package/server/services/Sonos/sonos-service.ts +0 -194
  343. package/server/services/Telegram/telegram-Commands.ts +0 -237
  344. package/server/services/Telegram/telegram-service.ts +0 -177
  345. package/server/services/Telegram/telegramMessageCalback.ts +0 -11
  346. package/server/services/calendar/muell-tonne.ts +0 -82
  347. package/server/services/calendar/m/303/274ll-service.ts +0 -147
  348. package/server/services/dbo/persist.ts +0 -142
  349. package/server/services/https-service.ts +0 -71
  350. package/server/services/log-service.ts +0 -69
  351. package/server/services/news-service.ts +0 -81
  352. package/server/services/settings-service.ts +0 -15
  353. package/server/services/time-callback-service.ts +0 -223
  354. package/server/services/utils/ringstorage.ts +0 -24
  355. package/server/services/utils/utils.ts +0 -52
  356. package/server/services/weather/weather-alert.ts +0 -7
  357. package/server/services/weather/weather-current.ts +0 -26
  358. package/server/services/weather/weather-daily.ts +0 -22
  359. package/server/services/weather/weather-feelsLike.ts +0 -6
  360. package/server/services/weather/weather-hourly.ts +0 -17
  361. package/server/services/weather/weather-item.ts +0 -6
  362. package/server/services/weather/weather-minutes.ts +0 -4
  363. package/server/services/weather/weather-service.ts +0 -277
  364. package/server/services/weather/weather-temp.ts +0 -8
  365. package/tsconfig.json +0 -58
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TimeCallbackService = exports.SunTimeOffsets = exports.TimeOfDay = void 0;
4
+ const timeCallback_1 = require("../../models/timeCallback");
5
+ const sunrise_sunset_js_1 = require("sunrise-sunset-js");
6
+ const log_service_1 = require("./log-service");
7
+ const logLevel_1 = require("../../models/logLevel");
8
+ const devices_1 = require("../devices/devices");
9
+ const utils_1 = require("./utils/utils");
10
+ const settings_service_1 = require("./settings-service");
11
+ var TimeOfDay;
12
+ (function (TimeOfDay) {
13
+ TimeOfDay[TimeOfDay["BeforeSunrise"] = 1] = "BeforeSunrise";
14
+ TimeOfDay[TimeOfDay["Daylight"] = 2] = "Daylight";
15
+ TimeOfDay[TimeOfDay["AfterSunset"] = 3] = "AfterSunset";
16
+ TimeOfDay[TimeOfDay["Night"] = 4] = "Night";
17
+ })(TimeOfDay = exports.TimeOfDay || (exports.TimeOfDay = {}));
18
+ class SunTimeOffsets {
19
+ constructor(sunrise = 0, sunset = 0, minimumHours = 6, minimumMinutes = 24, maximumHours = 22, maximumMinutes = 30) {
20
+ this.sunrise = sunrise;
21
+ this.sunset = sunset;
22
+ this.minimumHours = minimumHours;
23
+ this.minimumMinutes = minimumMinutes;
24
+ this.maximumHours = maximumHours;
25
+ this.maximumMinutes = maximumMinutes;
26
+ }
27
+ getNextMinimumSunrise() {
28
+ const today = new Date(new Date().setHours(this.minimumHours, this.minimumMinutes));
29
+ if (today > new Date()) {
30
+ return today;
31
+ }
32
+ return new Date(today.getTime() + 24 * 60 * 60 * 1000);
33
+ }
34
+ getNextMaximumSunset() {
35
+ const today = new Date(new Date().setHours(this.maximumHours, this.maximumMinutes));
36
+ if (today > new Date()) {
37
+ return today;
38
+ }
39
+ return new Date(today.getTime() + 24 * 60 * 60 * 1000);
40
+ }
41
+ }
42
+ exports.SunTimeOffsets = SunTimeOffsets;
43
+ class TimeCallbackService {
44
+ static dayType(pOffset) {
45
+ const now = new Date();
46
+ const hours = now.getHours();
47
+ const minutes = now.getMinutes();
48
+ const nightEnd = settings_service_1.SettingsService.settings.timeSettings.nightEnd;
49
+ const nightStart = settings_service_1.SettingsService.settings.timeSettings.nightStart;
50
+ if (nightStart.hours < nightEnd.hours) {
51
+ if ((hours < nightEnd.hours && hours > nightStart.hours) ||
52
+ (hours === nightEnd.hours && minutes < nightEnd.minutes) ||
53
+ (hours === nightStart.hours && minutes > nightStart.minutes)) {
54
+ return TimeOfDay.Night;
55
+ }
56
+ }
57
+ else {
58
+ if (hours > nightStart.hours ||
59
+ hours < nightEnd.hours ||
60
+ (hours === nightStart.hours && minutes >= nightStart.minutes) ||
61
+ (hours === nightEnd.hours && minutes <= nightEnd.minutes)) {
62
+ return TimeOfDay.Night;
63
+ }
64
+ }
65
+ let sunset = new Date(TimeCallbackService._todaySunSet.getTime() + pOffset.sunset * 60 * 1000);
66
+ const maximumSunset = pOffset.getNextMaximumSunset();
67
+ if (maximumSunset.getDate() !== sunset.getDate()) {
68
+ maximumSunset.setDate(maximumSunset.getDate() - 1);
69
+ }
70
+ if (maximumSunset < sunset && maximumSunset.getDate() === sunset.getDate()) {
71
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Maximum Sunset vor nächstem Sunset: Sunset ${sunset.toLocaleString()}\t\t${maximumSunset.toLocaleString()}`);
72
+ sunset = maximumSunset;
73
+ }
74
+ if (now > sunset) {
75
+ return TimeOfDay.AfterSunset;
76
+ }
77
+ const minimumSunrise = pOffset.getNextMinimumSunrise();
78
+ let sunrise = new Date(TimeCallbackService._todaySunRise.getTime() + pOffset.sunset * 60 * 1000);
79
+ if (minimumSunrise.getDate() !== sunrise.getDate()) {
80
+ minimumSunrise.setDate(minimumSunrise.getDate() - 1);
81
+ }
82
+ if (minimumSunrise > sunrise && minimumSunrise.getDate() === sunrise.getDate()) {
83
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Minimum Sunset nach aktuellem Sunrise: Sunset ${sunrise.toLocaleString()}\t\t${minimumSunrise.toLocaleString()}`);
84
+ sunrise = minimumSunrise;
85
+ }
86
+ if (now < sunrise && now.getDate() == sunrise.getDate()) {
87
+ return TimeOfDay.BeforeSunrise;
88
+ }
89
+ return TimeOfDay.Daylight;
90
+ }
91
+ static darkOutsideOrNight(dayType) {
92
+ switch (dayType) {
93
+ case TimeOfDay.Night:
94
+ case TimeOfDay.BeforeSunrise:
95
+ case TimeOfDay.AfterSunset:
96
+ return true;
97
+ default:
98
+ return false;
99
+ }
100
+ }
101
+ static stopInterval() {
102
+ if (this._iCheck !== undefined) {
103
+ clearInterval(this._iCheck);
104
+ this._iCheck = undefined;
105
+ }
106
+ }
107
+ static get nextSunRise() {
108
+ return TimeCallbackService._nextSunRise;
109
+ }
110
+ static get nextSunSet() {
111
+ return TimeCallbackService._nextSunSet;
112
+ }
113
+ static init() {
114
+ const dailyRecalc = new timeCallback_1.TimeCallback('Midnight Recalc', timeCallback_1.TimeCallbackType.TimeOfDay, () => {
115
+ TimeCallbackService.recalcSunTimes();
116
+ devices_1.Devices.midnightReset();
117
+ }, 0, 0, 0);
118
+ const daily3oClockRecalc = new timeCallback_1.TimeCallback('Daily3oClockRecalc', timeCallback_1.TimeCallbackType.TimeOfDay, () => {
119
+ devices_1.Devices.resetPraesenzCount();
120
+ }, 0, 3, 0);
121
+ TimeCallbackService.recalcSunTimes();
122
+ TimeCallbackService.addCallback(dailyRecalc);
123
+ TimeCallbackService.addCallback(daily3oClockRecalc);
124
+ this._iCheck = utils_1.Utils.guardedInterval(TimeCallbackService.performCheck, 60000);
125
+ }
126
+ static addCallback(pCallback) {
127
+ TimeCallbackService._callbacks.push(pCallback);
128
+ }
129
+ static performCheck() {
130
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Trace, `Perform TimeCallBackCheck`);
131
+ const now = new Date();
132
+ for (const tc of TimeCallbackService._callbacks) {
133
+ if (tc.nextToDo === undefined || tc.nextToDo < tc.lastDone) {
134
+ tc.recalcNextToDo(now);
135
+ }
136
+ if (tc.nextToDo === undefined) {
137
+ continue;
138
+ }
139
+ if (tc.nextToDo < now && tc.nextToDo > TimeCallbackService._lastCheck) {
140
+ tc.cFunction();
141
+ tc.lastDone = now;
142
+ tc.nextToDo = undefined;
143
+ }
144
+ }
145
+ if (TimeCallbackService._nextSunRise < now) {
146
+ const tomorow = new Date(new Date().setHours(2, 0, 0, 0) + 24 * 60 * 60 * 1000);
147
+ TimeCallbackService.updateSunRise(tomorow);
148
+ }
149
+ if (TimeCallbackService._nextSunSet < now) {
150
+ const tomorow = new Date(new Date().setHours(2, 0, 0, 0) + 24 * 60 * 60 * 1000);
151
+ TimeCallbackService.updateSunSet(tomorow);
152
+ }
153
+ TimeCallbackService._lastCheck = now;
154
+ }
155
+ static recalcSunTimes() {
156
+ TimeCallbackService._todaySunRise = (0, sunrise_sunset_js_1.getSunrise)(51.529556852253826, 7.097266042276687, new Date());
157
+ TimeCallbackService._todaySunSet = (0, sunrise_sunset_js_1.getSunset)(51.529556852253826, 7.097266042276687, new Date());
158
+ TimeCallbackService.updateSunSet();
159
+ TimeCallbackService.updateSunRise();
160
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `Nächster Sonnenaufgang um ${TimeCallbackService.nextSunRise.toLocaleTimeString('de-DE')}
161
+ Nächster Sonnenuntergang um ${TimeCallbackService._nextSunSet.toLocaleTimeString('de-DE')}`);
162
+ }
163
+ static removeCallback(pCallback) {
164
+ for (let i = 0; i < TimeCallbackService._callbacks.length; i++) {
165
+ const cb = TimeCallbackService._callbacks[i];
166
+ if (cb.name !== pCallback.name) {
167
+ continue;
168
+ }
169
+ TimeCallbackService._callbacks.splice(i, 1);
170
+ return;
171
+ }
172
+ }
173
+ static updateSunRise(pDay = new Date()) {
174
+ TimeCallbackService._nextSunRise = (0, sunrise_sunset_js_1.getSunrise)(51.529556852253826, 7.097266042276687, pDay);
175
+ }
176
+ static updateSunSet(pDay = new Date()) {
177
+ TimeCallbackService._nextSunSet = (0, sunrise_sunset_js_1.getSunset)(51.529556852253826, 7.097266042276687, pDay);
178
+ }
179
+ }
180
+ exports.TimeCallbackService = TimeCallbackService;
181
+ TimeCallbackService._callbacks = [];
182
+ TimeCallbackService._lastCheck = new Date(0);
@@ -0,0 +1,2 @@
1
+ export * from './utils';
2
+ export * from './ringstorage';
@@ -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("./utils"), exports);
14
+ __exportStar(require("./ringstorage"), exports);
@@ -0,0 +1,8 @@
1
+ export declare class ringStorage {
2
+ private maxSize;
3
+ private storage;
4
+ private pointer;
5
+ constructor(maxSize?: number);
6
+ add(text: string): void;
7
+ readAmount(amount: number): string[];
8
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ringStorage = void 0;
4
+ class ringStorage {
5
+ constructor(maxSize = 10) {
6
+ this.maxSize = maxSize;
7
+ this.storage = [];
8
+ this.pointer = 0;
9
+ }
10
+ add(text) {
11
+ this.pointer = (this.pointer + 1) % this.maxSize;
12
+ this.storage[this.pointer] = text;
13
+ }
14
+ readAmount(amount) {
15
+ const result = [];
16
+ amount = Math.max(amount, this.maxSize);
17
+ let pos = this.pointer;
18
+ while (amount > 0) {
19
+ result.push(this.storage[pos]);
20
+ // Um negative Modulo zu umgehen.
21
+ pos = (((pos - 1) % this.maxSize) + this.maxSize) % this.maxSize;
22
+ amount--;
23
+ }
24
+ return result;
25
+ }
26
+ }
27
+ exports.ringStorage = ringStorage;
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" />
2
+ export declare class Utils {
3
+ static guardedFunction(func: (...args: unknown[]) => void, thisContext: unknown | undefined): void;
4
+ static nowMS(): number;
5
+ static guardedNewThread(func: (...args: unknown[]) => void, thisContext?: unknown | undefined): void;
6
+ static guardedTimeout(func: (...args: unknown[]) => void, time: number, thisContext?: unknown | undefined): NodeJS.Timeout;
7
+ static guardedInterval(func: (...args: unknown[]) => void, time: number, thisContext?: unknown | undefined, fireImmediate?: boolean): NodeJS.Timeout;
8
+ static nowString(): string;
9
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Utils = void 0;
4
+ const log_service_1 = require("../log-service");
5
+ const logLevel_1 = require("../../../models/logLevel");
6
+ class Utils {
7
+ static guardedFunction(func, thisContext) {
8
+ try {
9
+ if (thisContext) {
10
+ func.bind(thisContext)();
11
+ }
12
+ else {
13
+ func();
14
+ }
15
+ }
16
+ catch (e) {
17
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Error, `Guarded Function failed: ${e.message}\n Stack: ${e.stack}`);
18
+ }
19
+ }
20
+ static nowMS() {
21
+ return new Date().getTime();
22
+ }
23
+ static guardedNewThread(func, thisContext) {
24
+ Utils.guardedTimeout(func, 1, thisContext);
25
+ }
26
+ static guardedTimeout(func, time, thisContext) {
27
+ return setTimeout(() => {
28
+ Utils.guardedFunction(func, thisContext);
29
+ }, time);
30
+ }
31
+ static guardedInterval(func, time, thisContext, fireImmediate = false) {
32
+ if (fireImmediate) {
33
+ Utils.guardedFunction(func, thisContext);
34
+ }
35
+ return setInterval(() => {
36
+ Utils.guardedFunction(func, thisContext);
37
+ }, time);
38
+ }
39
+ static nowString() {
40
+ const d = new Date();
41
+ return `${d.toLocaleTimeString('de-DE')}.${d.getMilliseconds()}`;
42
+ }
43
+ }
44
+ exports.Utils = Utils;
@@ -0,0 +1,9 @@
1
+ export * from './weather-item';
2
+ export * from './weather-temp';
3
+ export * from './weather-alert';
4
+ export * from './weather-daily';
5
+ export * from './weather-hourly';
6
+ export * from './weather-current';
7
+ export * from './weather-minutes';
8
+ export * from './weather-service';
9
+ export * from './weather-feelsLike';
@@ -0,0 +1,21 @@
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("./weather-item"), exports);
14
+ __exportStar(require("./weather-temp"), exports);
15
+ __exportStar(require("./weather-alert"), exports);
16
+ __exportStar(require("./weather-daily"), exports);
17
+ __exportStar(require("./weather-hourly"), exports);
18
+ __exportStar(require("./weather-current"), exports);
19
+ __exportStar(require("./weather-minutes"), exports);
20
+ __exportStar(require("./weather-service"), exports);
21
+ __exportStar(require("./weather-feelsLike"), exports);
@@ -0,0 +1,7 @@
1
+ export interface WeatherAlert {
2
+ sender_name: string;
3
+ event: string;
4
+ start: number;
5
+ end: number;
6
+ description: string;
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,25 @@
1
+ import { WeatherItem } from './weather-item';
2
+ export interface WeatherCurrent {
3
+ /**
4
+ * Zeit der Anfrage
5
+ * @type {number}
6
+ * @memberof WeatherCurrent
7
+ */
8
+ dt: number;
9
+ sunrise: number;
10
+ sunset: number;
11
+ temp: number;
12
+ feels_like: number;
13
+ pressure: number;
14
+ humidity: number;
15
+ dew_point: number;
16
+ uvi: number;
17
+ clouds: number;
18
+ rain?: number;
19
+ snow?: number;
20
+ visibility: number;
21
+ wind_speed: number;
22
+ wind_deg: number;
23
+ wind_gust: number;
24
+ weather: WeatherItem[];
25
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,21 @@
1
+ import { WeatherFeelsLike } from './weather-feelsLike';
2
+ import { WeatherItem } from './weather-item';
3
+ import { WeatherTemp } from './weather-temp';
4
+ export interface WeatherDaily {
5
+ dt: number;
6
+ sunrise: number;
7
+ sunset: number;
8
+ pressure: number;
9
+ humidity: number;
10
+ dew_point: number;
11
+ wind_speed: number;
12
+ wind_deg: number;
13
+ clouds: number;
14
+ pop: number;
15
+ rain?: number;
16
+ snow?: number;
17
+ uvi: number;
18
+ temp: WeatherTemp;
19
+ feels_like: WeatherFeelsLike;
20
+ weather: WeatherItem[];
21
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ export interface WeatherFeelsLike {
2
+ day: number;
3
+ night: number;
4
+ eve: number;
5
+ morn: number;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,16 @@
1
+ import { WeatherItem } from './weather-item';
2
+ export interface WeatherHourly {
3
+ dt: number;
4
+ temp: number;
5
+ feels_like: number;
6
+ pressure: number;
7
+ humidity: number;
8
+ dew_point: number;
9
+ uvi: number;
10
+ clouds: number;
11
+ visibility: number;
12
+ wind_speed: number;
13
+ wind_deg: number;
14
+ weather: WeatherItem[];
15
+ pop: number;
16
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ export interface WeatherItem {
2
+ id: number;
3
+ main: string;
4
+ description: string;
5
+ icon: string;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export interface WeatherMinutes {
2
+ dt: number;
3
+ precipitation: number;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,37 @@
1
+ import { OwnSonosDevice } from '../Sonos/sonos-service';
2
+ import { WeatherAlert } from './weather-alert';
3
+ import { WeatherCurrent } from './weather-current';
4
+ import { WeatherDaily } from './weather-daily';
5
+ import { WeatherHourly } from './weather-hourly';
6
+ import { WeatherMinutes } from './weather-minutes';
7
+ import { iWeatherSettings } from '../../config/iConfig';
8
+ export interface WeatherResponse {
9
+ lat: number;
10
+ lon: number;
11
+ timezone: string;
12
+ timezone_offset: number;
13
+ current: WeatherCurrent;
14
+ minutely: WeatherMinutes[];
15
+ hourly: WeatherHourly[];
16
+ daily: WeatherDaily[];
17
+ alerts?: WeatherAlert[];
18
+ }
19
+ export declare class WeatherService {
20
+ static active: boolean;
21
+ static oneDay: number;
22
+ static lastResponse: WeatherResponse;
23
+ private static _refreshInterval;
24
+ private static latitude;
25
+ private static longitude;
26
+ private static appID;
27
+ static initialize(config: iWeatherSettings): void;
28
+ static stopInterval(): void;
29
+ static playWeatherInfo(sonosDevice: OwnSonosDevice, volume?: number, short?: boolean, retries?: number): void;
30
+ private static getRainNextMinutes;
31
+ private static getActiveAlerts;
32
+ private static getWeatherData;
33
+ static processHourlyWeather(): void;
34
+ static getCurrentTemp(): number;
35
+ static isOutsideWarmer(currentTemperatur: number): boolean;
36
+ static weatherRolloPosition(normalPos: number, desiredTemperatur: number, currentTemperatur: number): number;
37
+ }
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WeatherService = void 0;
4
+ const logLevel_1 = require("../../../models/logLevel");
5
+ const https_service_1 = require("../https-service");
6
+ const HTTPSOptions_1 = require("../HTTPSOptions");
7
+ const log_service_1 = require("../log-service");
8
+ const sonos_service_1 = require("../Sonos/sonos-service");
9
+ const utils_1 = require("../utils/utils");
10
+ class WeatherService {
11
+ static initialize(config) {
12
+ this.active = true;
13
+ this.longitude = config.longitude;
14
+ this.latitude = config.lattitude;
15
+ this.appID = config.appid;
16
+ this._refreshInterval = utils_1.Utils.guardedInterval(WeatherService.getWeatherData, 10 * 60 * 1000, WeatherService, true);
17
+ }
18
+ static stopInterval() {
19
+ if (this._refreshInterval !== undefined) {
20
+ clearInterval(this._refreshInterval);
21
+ this._refreshInterval = undefined;
22
+ }
23
+ }
24
+ static playWeatherInfo(sonosDevice, volume = 30, short = false, retries = 5) {
25
+ const wData = WeatherService.lastResponse;
26
+ if (wData === undefined) {
27
+ if (retries > 0) {
28
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Warn, `WeatherService.playWeatherInfo(): Der Wetterbericht ist noch nicht bereit --> warten`);
29
+ setTimeout(() => {
30
+ WeatherService.playWeatherInfo(sonosDevice, volume, short, retries - 1);
31
+ }, 1000);
32
+ }
33
+ else {
34
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Error, `WeatherService.playWeatherInfo(): Der Wetterbericht ist vorhanden --> Abbruch`);
35
+ }
36
+ return;
37
+ }
38
+ sonos_service_1.SonosService.speakOnDevice(short ? `Kurze Wetterinfo:` : `HoffMation Wetter-Bericht:`, sonosDevice, volume, false);
39
+ sonos_service_1.SonosService.speakOnDevice(`Wetterbeschreibung für heute: ${wData.daily[0].weather[0].description}`, sonosDevice, volume, false);
40
+ sonos_service_1.SonosService.speakOnDevice(`Aktuell sind es ${Math.round(wData.current.temp)} Grad.`, sonosDevice, volume, false);
41
+ if (!short) {
42
+ sonos_service_1.SonosService.speakOnDevice(`Heute sollen es im Durchschnitt ${Math.round(wData.daily[0].temp.day)} Grad sein.`, sonosDevice, volume, false);
43
+ sonos_service_1.SonosService.speakOnDevice(`Die Höchsttemperatur liegt heute bei ${Math.round(wData.daily[0].temp.max)} Grad.`, sonosDevice, volume, false);
44
+ sonos_service_1.SonosService.speakOnDevice(`Die Tiefsttemperatur soll heute ${Math.round(wData.daily[0].temp.min)} Grad betragen.`, sonosDevice, volume, false);
45
+ if (wData.daily[0].rain !== undefined) {
46
+ sonos_service_1.SonosService.speakOnDevice(`Es sollen heute etwa ${Math.round(wData.daily[0].rain)} Millimeter Regen fallen.`, sonosDevice, volume, false);
47
+ }
48
+ }
49
+ if (wData.daily[0].snow !== undefined && wData.daily[0].snow > 0) {
50
+ sonos_service_1.SonosService.speakOnDevice(`Heute wird es Schneien! Es werden etwa ${Math.round(wData.daily[0].snow)} Millimeter Schnee erwartet.`, sonosDevice, volume, false);
51
+ }
52
+ const { minutes, precipitation } = WeatherService.getRainNextMinutes();
53
+ const ratio = minutes <= 0 ? 0 : (precipitation / minutes) * 60;
54
+ let message = `In der nächsten Zeit `;
55
+ switch (true) {
56
+ case ratio > 12:
57
+ message += `wird es kräftig regnen`;
58
+ break;
59
+ case ratio > 4:
60
+ message += `wird es ordentlich regnen`;
61
+ break;
62
+ case ratio > 1:
63
+ message += `wird es regnen`;
64
+ break;
65
+ case ratio > 0.5:
66
+ message += `wird es mäßig regnen`;
67
+ break;
68
+ case ratio > 0.1:
69
+ message += `wird es nieseln regnen`;
70
+ break;
71
+ default:
72
+ message += `bleibt es trocken.`;
73
+ break;
74
+ }
75
+ sonos_service_1.SonosService.speakOnDevice(message, sonosDevice, volume, false);
76
+ !short &&
77
+ precipitation > 0 &&
78
+ sonos_service_1.SonosService.speakOnDevice(`Es werden etwa ${precipitation} Millimeter Niederschlag in den nächsten ${minutes} Minuten fallen`, sonosDevice, volume, false);
79
+ const alerts = WeatherService.getActiveAlerts();
80
+ if (alerts.length > 0) {
81
+ const alertMessage = [`Achtung, vorliegende Wetterwarnungen:`];
82
+ alerts.forEach((element) => {
83
+ alertMessage.push(`${element.event} von ${new Date(element.start * 1000).toLocaleString('de-DE')} bis ${new Date(element.end * 1000).toLocaleString('de-DE')}`);
84
+ // } bis ${new Date(element.end * 1000).toLocaleString("de-DE")}; Beschreibung: ${element.description} Herausgeber: ${element.sender_name}`)
85
+ });
86
+ sonos_service_1.SonosService.speakOnDevice(alertMessage.join('\n'), sonosDevice, volume, false);
87
+ }
88
+ else if (!short) {
89
+ sonos_service_1.SonosService.speakOnDevice(`Für heute liegt keine Unwetterwarnungen vor`, sonosDevice, volume, false);
90
+ }
91
+ }
92
+ static getRainNextMinutes() {
93
+ const minutes = WeatherService.lastResponse.minutely;
94
+ let minutesUsed = 0;
95
+ let precipitation = 0;
96
+ if (minutes !== undefined) {
97
+ const now = new Date().getTime();
98
+ minutes.forEach((element) => {
99
+ if (element.dt * 1000 > now) {
100
+ minutesUsed++;
101
+ precipitation += element.precipitation;
102
+ }
103
+ });
104
+ }
105
+ return { minutes: minutesUsed, precipitation: precipitation };
106
+ }
107
+ static getActiveAlerts() {
108
+ const result = [];
109
+ if (WeatherService.lastResponse.alerts === undefined || WeatherService.lastResponse.alerts.length === 0) {
110
+ return result;
111
+ }
112
+ const now = new Date().getTime();
113
+ const todayMidnight = new Date().setHours(0, 0, 0, 0);
114
+ const tomorowMidnight = todayMidnight + WeatherService.oneDay;
115
+ WeatherService.lastResponse.alerts.forEach((element) => {
116
+ const timestampStart = element.start * 1000;
117
+ if ((timestampStart > todayMidnight && timestampStart < tomorowMidnight) ||
118
+ (timestampStart < now && element.end * 1000 > now)) {
119
+ result.push(element);
120
+ }
121
+ });
122
+ return result;
123
+ }
124
+ static getWeatherData() {
125
+ https_service_1.HTTPSService.request(new HTTPSOptions_1.HTTPSOptions('api.openweathermap.org', `/data/2.5/onecall?lat=${WeatherService.latitude}&lon=${WeatherService.longitude}&appid=${WeatherService.appID}&units=metric&lang=de`, {}, 'GET', 443), '', 5, (response) => {
126
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Debug, `WeatherAPi Response erhalten`);
127
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.DeepTrace, `WeatherAPi Response: ${response}`);
128
+ utils_1.Utils.guardedFunction(() => {
129
+ WeatherService.lastResponse = JSON.parse(response);
130
+ WeatherService.processHourlyWeather();
131
+ }, this);
132
+ });
133
+ }
134
+ static processHourlyWeather() {
135
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `Es sind gerade ${this.lastResponse.current.temp} Grad (gefühlt ${this.lastResponse.current.feels_like}).`);
136
+ if (this.lastResponse.alerts !== undefined && this.lastResponse.alerts.length > 0) {
137
+ const message = [`Es gibt folgende Wetterwarnungen:`];
138
+ this.lastResponse.alerts.forEach((element) => {
139
+ message.push(`${element.event} von ${new Date(element.start * 1000)} bis ${new Date(element.end * 1000)}; Beschreibung: ${element.description} Herausgeber: ${element.sender_name}`);
140
+ });
141
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, message.join('\n'));
142
+ }
143
+ }
144
+ static getCurrentTemp() {
145
+ const wData = WeatherService.lastResponse;
146
+ if (wData === undefined || wData.current === undefined) {
147
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `WeatherService.isOutsideWarmer(): There are no data yet`);
148
+ return -99;
149
+ }
150
+ return wData.current.temp;
151
+ }
152
+ static isOutsideWarmer(currentTemperatur) {
153
+ const wData = WeatherService.lastResponse;
154
+ if (wData === undefined || wData.current === undefined) {
155
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `WeatherService.isOutsideWarmer(): There are no data yet`);
156
+ return false;
157
+ }
158
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `isOutsideWarmer(${currentTemperatur}) --> Aktuelle Temperatur: ${wData.current.temp}`);
159
+ return currentTemperatur < wData.current.temp;
160
+ }
161
+ static weatherRolloPosition(normalPos, desiredTemperatur, currentTemperatur) {
162
+ let result = normalPos;
163
+ if (currentTemperatur > desiredTemperatur && this.isOutsideWarmer(currentTemperatur) && normalPos > 30) {
164
+ // Draußen ist wärmer also runter
165
+ result = 30;
166
+ }
167
+ log_service_1.ServerLogService.writeLog(logLevel_1.LogLevel.Info, `weatherRolloPosition(${normalPos}, ${desiredTemperatur}, ${currentTemperatur}) --> Target: ${result}`);
168
+ return result;
169
+ }
170
+ }
171
+ exports.WeatherService = WeatherService;
172
+ WeatherService.active = false;
173
+ WeatherService.oneDay = 1000 * 60 * 60 * 24;