hoffmation-base 1.0.41 → 1.0.43
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 -2
- package/lib/models/rooms/RoomBase.d.ts +2 -2
- package/lib/server/devices/DeviceCapabilities.d.ts +15 -0
- package/lib/server/devices/DeviceCapabilities.js +19 -0
- package/lib/server/devices/IoBrokerBaseDevice.d.ts +2 -0
- package/lib/server/devices/IoBrokerBaseDevice.js +1 -0
- package/lib/server/devices/baseDeviceInterfaces/iAcDevice.d.ts +14 -0
- package/lib/server/devices/baseDeviceInterfaces/iAcDevice.js +2 -0
- package/lib/server/devices/baseDeviceInterfaces/iBaseDevice.d.ts +2 -0
- package/lib/server/devices/baseDeviceInterfaces/iSpeaker.d.ts +8 -0
- package/lib/server/devices/baseDeviceInterfaces/iSpeaker.js +2 -0
- package/lib/server/devices/baseDeviceInterfaces/index.d.ts +2 -0
- package/lib/server/devices/baseDeviceInterfaces/index.js +2 -0
- package/lib/server/devices/device-cluster.d.ts +1 -2
- package/lib/server/devices/device-cluster.js +6 -0
- package/lib/server/devices/device-list.d.ts +2 -4
- package/lib/server/devices/device-list.js +4 -13
- package/lib/server/devices/groups/heatGroup.js +1 -1
- package/lib/server/devices/groups/index.d.ts +1 -1
- package/lib/server/devices/groups/index.js +1 -1
- package/lib/server/devices/groups/{sonosGroup.d.ts → speakerGroup.d.ts} +3 -3
- package/lib/server/devices/groups/{sonosGroup.js → speakerGroup.js} +6 -8
- package/lib/server/devices/hmIPDevices/hmIpBewegung.js +3 -0
- package/lib/server/devices/hmIPDevices/hmIpHeizgruppe.js +4 -0
- package/lib/server/devices/hmIPDevices/hmIpLampe.js +2 -0
- package/lib/server/devices/hmIPDevices/hmIpPraezenz.js +3 -0
- package/lib/server/devices/hmIPDevices/hmIpRoll.js +2 -0
- package/lib/server/devices/hmIPDevices/hmIpTaster.js +2 -0
- package/lib/server/devices/hmIPDevices/hmIpWippe.js +2 -0
- package/lib/server/devices/jsObject/jsObjectEnergyManager.js +2 -0
- package/lib/server/devices/zigbee/BaseDevices/index.d.ts +1 -0
- package/lib/server/devices/zigbee/BaseDevices/index.js +1 -0
- package/lib/server/devices/zigbee/BaseDevices/zigbeeHeater.js +2 -0
- package/lib/server/devices/zigbee/{zigbeeMotionSensor.d.ts → BaseDevices/zigbeeMotionSensor.d.ts} +5 -5
- package/lib/server/devices/zigbee/{zigbeeMotionSensor.js → BaseDevices/zigbeeMotionSensor.js} +6 -4
- package/lib/server/devices/zigbee/BaseDevices/zigbeeShutter.js +2 -0
- package/lib/server/devices/zigbee/index.d.ts +0 -1
- package/lib/server/devices/zigbee/index.js +0 -1
- package/lib/server/devices/zigbee/zigbeeAquaraMotion.d.ts +1 -1
- package/lib/server/devices/zigbee/zigbeeAquaraMotion.js +4 -2
- package/lib/server/devices/zigbee/zigbeeAquaraVibra.js +2 -0
- package/lib/server/devices/zigbee/zigbeeBlitzShp.js +2 -0
- package/lib/server/devices/zigbee/zigbeeIlluDimmer.js +2 -0
- package/lib/server/devices/zigbee/zigbeeIlluLampe.js +2 -0
- package/lib/server/devices/zigbee/zigbeeSonoffMotion.d.ts +1 -1
- package/lib/server/devices/zigbee/zigbeeSonoffMotion.js +2 -2
- package/lib/server/devices/zigbee/zigbeeSonoffTemp.js +3 -0
- package/lib/server/devices/zigbee/zigbeeUbisysShutter.d.ts +1 -1
- package/lib/server/services/Sonos/OwnSonosDevices.d.ts +1 -1
- package/lib/server/services/Sonos/OwnSonosDevices.js +1 -1
- package/lib/server/services/Sonos/index.d.ts +1 -0
- package/lib/server/services/Sonos/index.js +3 -0
- package/lib/server/services/Sonos/own-sonos-device.d.ts +26 -0
- package/lib/server/services/Sonos/own-sonos-device.js +108 -0
- package/lib/server/services/Sonos/sonos-service.d.ts +1 -20
- package/lib/server/services/Sonos/sonos-service.js +5 -94
- package/lib/server/services/ac/ac-device.d.ts +4 -2
- package/lib/server/services/ac/ac-device.js +2 -0
- package/lib/server/services/api/api-service.d.ts +1 -1
- package/lib/server/services/api/api-service.js +2 -2
- package/lib/server/services/calendar/muell-tonne.d.ts +3 -3
- package/lib/server/services/calendar/muell-tonne.js +6 -12
- package/lib/server/services/calendar/m/303/274ll-service.d.ts +3 -3
- package/lib/server/services/calendar/m/303/274ll-service.js +7 -7
- package/lib/server/services/news-service.d.ts +3 -3
- package/lib/server/services/news-service.js +4 -4
- package/lib/server/services/weather/weather-service.d.ts +2 -2
- package/lib/server/services/weather/weather-service.js +14 -15
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { OwnSonosDevice } from './Sonos';
|
|
2
1
|
import { iNewsSettings } from '../config';
|
|
2
|
+
import { ISpeaker } from '../devices';
|
|
3
3
|
export declare class NewsService {
|
|
4
4
|
static lastNewsAudioFile: string;
|
|
5
5
|
private static readonly newsFilePrefix;
|
|
@@ -25,11 +25,11 @@ export declare class NewsService {
|
|
|
25
25
|
static getLatestNews(): void;
|
|
26
26
|
/**
|
|
27
27
|
* Plays the latest news on a sonos device
|
|
28
|
-
* @param
|
|
28
|
+
* @param speaker Sonos device to play from
|
|
29
29
|
* @param volume volume to play at
|
|
30
30
|
* @param retries Number of times playing should be tried if there is currently no audio file available
|
|
31
31
|
*/
|
|
32
|
-
static playLastNews(
|
|
32
|
+
static playLastNews(speaker: ISpeaker, volume?: number, retries?: number): void;
|
|
33
33
|
private static downloadLatestFileFromFeed;
|
|
34
34
|
/**
|
|
35
35
|
* Deletes all files in the given directory that are older than the given age.
|
|
@@ -96,18 +96,18 @@ class NewsService {
|
|
|
96
96
|
}
|
|
97
97
|
/**
|
|
98
98
|
* Plays the latest news on a sonos device
|
|
99
|
-
* @param
|
|
99
|
+
* @param speaker Sonos device to play from
|
|
100
100
|
* @param volume volume to play at
|
|
101
101
|
* @param retries Number of times playing should be tried if there is currently no audio file available
|
|
102
102
|
*/
|
|
103
|
-
static playLastNews(
|
|
103
|
+
static playLastNews(speaker, volume = 30, retries = 5) {
|
|
104
104
|
if (!NewsService.lastNewsAudioFile) {
|
|
105
105
|
if (retries > 0) {
|
|
106
106
|
log_service_1.ServerLogService.writeLog(models_1.LogLevel.Warn, `Service not ready yet --> waiting, remaining tries: ${retries - 1}`, {
|
|
107
107
|
source: logSource_1.LogSource.News,
|
|
108
108
|
});
|
|
109
109
|
utils_1.Utils.guardedTimeout(() => {
|
|
110
|
-
NewsService.playLastNews(
|
|
110
|
+
NewsService.playLastNews(speaker, volume, retries - 1);
|
|
111
111
|
}, 1000);
|
|
112
112
|
}
|
|
113
113
|
else {
|
|
@@ -117,7 +117,7 @@ class NewsService {
|
|
|
117
117
|
}
|
|
118
118
|
return;
|
|
119
119
|
}
|
|
120
|
-
|
|
120
|
+
speaker.playOnDevice(path_1.default.basename(NewsService.lastNewsAudioFile, path_1.default.extname(NewsService.lastNewsAudioFile)), Sonos_1.PollyService.getDuration(NewsService.lastNewsAudioFile), volume);
|
|
121
121
|
}
|
|
122
122
|
static downloadLatestFileFromFeed(rssUrl, targetDir) {
|
|
123
123
|
const parser = new rss_parser_1.default();
|
|
@@ -4,9 +4,9 @@ import { WeatherMinutes } from './weather-minutes';
|
|
|
4
4
|
import { WeatherAlert } from './weather-alert';
|
|
5
5
|
import { iWeatherSettings } from '../../config';
|
|
6
6
|
import { LogLevel } from '../../../models';
|
|
7
|
-
import { OwnSonosDevice } from '../Sonos';
|
|
8
7
|
import { LogDebugType } from '../log-service';
|
|
9
8
|
import { WeatherDaily } from './weather-daily';
|
|
9
|
+
import { ISpeaker } from '../../devices';
|
|
10
10
|
export interface WeatherResponse {
|
|
11
11
|
lat: number;
|
|
12
12
|
lon: number;
|
|
@@ -36,7 +36,7 @@ export declare class WeatherService {
|
|
|
36
36
|
static initialize(config: iWeatherSettings): void;
|
|
37
37
|
static update(): void;
|
|
38
38
|
static stopInterval(): void;
|
|
39
|
-
static playWeatherInfo(
|
|
39
|
+
static playWeatherInfo(speaker: ISpeaker, volume?: number, short?: boolean, retries?: number): void;
|
|
40
40
|
static processHourlyWeather(): void;
|
|
41
41
|
static getCurrentTemp(): number;
|
|
42
42
|
static willOutsideBeWarmer(referenceTemperature: number, logger: (level: LogLevel, message: string, debugType?: LogDebugType) => void): boolean;
|
|
@@ -8,7 +8,6 @@ const models_1 = require("../../../models");
|
|
|
8
8
|
const HTTPSOptions_1 = require("../HTTPSOptions");
|
|
9
9
|
const https_service_1 = require("../https-service");
|
|
10
10
|
const utils_1 = require("../utils");
|
|
11
|
-
const Sonos_1 = require("../Sonos");
|
|
12
11
|
const log_service_1 = require("../log-service");
|
|
13
12
|
const suncalc_1 = __importDefault(require("suncalc"));
|
|
14
13
|
const time_callback_service_1 = require("../time-callback-service");
|
|
@@ -33,13 +32,13 @@ class WeatherService {
|
|
|
33
32
|
this._refreshInterval = undefined;
|
|
34
33
|
}
|
|
35
34
|
}
|
|
36
|
-
static playWeatherInfo(
|
|
35
|
+
static playWeatherInfo(speaker, volume = 30, short = false, retries = 5) {
|
|
37
36
|
const wData = WeatherService.lastResponse;
|
|
38
37
|
if (wData === undefined) {
|
|
39
38
|
if (retries > 0) {
|
|
40
39
|
log_service_1.ServerLogService.writeLog(models_1.LogLevel.Warn, `WeatherService.playWeatherInfo(): Der Wetterbericht ist noch nicht bereit --> warten`);
|
|
41
40
|
setTimeout(() => {
|
|
42
|
-
WeatherService.playWeatherInfo(
|
|
41
|
+
WeatherService.playWeatherInfo(speaker, volume, short, retries - 1);
|
|
43
42
|
}, 1000);
|
|
44
43
|
}
|
|
45
44
|
else {
|
|
@@ -47,19 +46,19 @@ class WeatherService {
|
|
|
47
46
|
}
|
|
48
47
|
return;
|
|
49
48
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
speaker.speakOnDevice(short ? `Kurze Wetterinfo:` : `HoffMation Wetter-Bericht:`, volume, false);
|
|
50
|
+
speaker.speakOnDevice(`Wetterbeschreibung für heute: ${wData.daily[0].weather[0].description}`, volume, false);
|
|
51
|
+
speaker.speakOnDevice(`Aktuell sind es ${Math.round(wData.current.temp)} Grad.`, volume, false);
|
|
53
52
|
if (!short) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
speaker.speakOnDevice(`Heute sollen es im Durchschnitt ${Math.round(wData.daily[0].temp.day)} Grad sein.`, volume, false);
|
|
54
|
+
speaker.speakOnDevice(`Die Höchsttemperatur liegt heute bei ${Math.round(wData.daily[0].temp.max)} Grad.`, volume, false);
|
|
55
|
+
speaker.speakOnDevice(`Die Tiefsttemperatur soll heute ${Math.round(wData.daily[0].temp.min)} Grad betragen.`, volume, false);
|
|
57
56
|
if (wData.daily[0].rain !== undefined) {
|
|
58
|
-
|
|
57
|
+
speaker.speakOnDevice(`Es sollen heute etwa ${Math.round(wData.daily[0].rain)} Millimeter Regen fallen.`, volume, false);
|
|
59
58
|
}
|
|
60
59
|
}
|
|
61
60
|
if (wData.daily[0].snow !== undefined && wData.daily[0].snow > 0) {
|
|
62
|
-
|
|
61
|
+
speaker.speakOnDevice(`Heute wird es Schneien! Es werden etwa ${Math.round(wData.daily[0].snow)} Millimeter Schnee erwartet.`, volume, false);
|
|
63
62
|
}
|
|
64
63
|
const { minutes, precipitation } = WeatherService.getRainNextMinutes();
|
|
65
64
|
const ratio = minutes <= 0 ? 0 : (precipitation / minutes) * 60;
|
|
@@ -84,10 +83,10 @@ class WeatherService {
|
|
|
84
83
|
message += `bleibt es trocken.`;
|
|
85
84
|
break;
|
|
86
85
|
}
|
|
87
|
-
|
|
86
|
+
speaker.speakOnDevice(message, volume, false);
|
|
88
87
|
!short &&
|
|
89
88
|
precipitation > 0 &&
|
|
90
|
-
|
|
89
|
+
speaker.speakOnDevice(`Es werden etwa ${precipitation} Millimeter Niederschlag in den nächsten ${minutes} Minuten fallen`, volume, false);
|
|
91
90
|
const alerts = WeatherService.getActiveAlerts();
|
|
92
91
|
if (alerts.length > 0) {
|
|
93
92
|
const alertMessage = [`Achtung, vorliegende Wetterwarnungen:`];
|
|
@@ -95,10 +94,10 @@ class WeatherService {
|
|
|
95
94
|
alertMessage.push(`${element.event} von ${new Date(element.start * 1000).toLocaleString('de-DE')} bis ${new Date(element.end * 1000).toLocaleString('de-DE')}`);
|
|
96
95
|
// } bis ${new Date(element.end * 1000).toLocaleString("de-DE")}; Beschreibung: ${element.description} Herausgeber: ${element.sender_name}`)
|
|
97
96
|
});
|
|
98
|
-
|
|
97
|
+
speaker.speakOnDevice(alertMessage.join('\n'), volume, false);
|
|
99
98
|
}
|
|
100
99
|
else if (!short) {
|
|
101
|
-
|
|
100
|
+
speaker.speakOnDevice(`Für heute liegt keine Unwetterwarnungen vor`, volume, false);
|
|
102
101
|
}
|
|
103
102
|
}
|
|
104
103
|
static processHourlyWeather() {
|