diff --git a/packages/modules/web_themes/koala/source/src/components/ConsumerCard.vue b/packages/modules/web_themes/koala/source/src/components/ConsumerCard.vue index 33f01554fd..e4222a63cf 100644 --- a/packages/modules/web_themes/koala/source/src/components/ConsumerCard.vue +++ b/packages/modules/web_themes/koala/source/src/components/ConsumerCard.vue @@ -38,6 +38,23 @@ + + + {{ + temperatures.sensorCount > 1 + ? `Temperatur ${sensor.index + 1}:` + : 'Temperatur:' + }} + + + {{ sensor.textValue }} + + + @@ -87,6 +104,10 @@ const powerValue = computed( ); const isRunning = computed(() => powerValue.value > 0); +const temperatures = computed(() => + mqttStore.consumerTemperatures(props.consumerId), +); + const runTime = computed(() => { const seconds = mqttStore.consumerOnTime(props.consumerId); if (seconds === undefined) { diff --git a/packages/modules/web_themes/koala/source/src/stores/mqtt-store.ts b/packages/modules/web_themes/koala/source/src/stores/mqtt-store.ts index 4c79ea3885..18049692eb 100644 --- a/packages/modules/web_themes/koala/source/src/stores/mqtt-store.ts +++ b/packages/modules/web_themes/koala/source/src/stores/mqtt-store.ts @@ -3828,6 +3828,43 @@ export const useMqttStore = defineStore('mqtt', () => { }; }); + /** + * Get the temperature readings of a consumer identified by the consumer id. + * @param consumerId + * @returns { sensorCount, sensors } + */ + const consumerTemperatures = computed(() => { + return ( + consumerId: number, + ): { + sensorCount: number; + sensors: { index: number; textValue: string }[]; + } => { + const temperatures = getValue.value( + `openWB/consumer/${consumerId}/get/temperatures`, + ); + if (!Array.isArray(temperatures)) { + return { sensorCount: 0, sensors: [] }; + } + if (!temperatures.some((value: unknown) => typeof value === 'number')) { + return { sensorCount: 0, sensors: [] }; + } + const sensors = temperatures.map((value: unknown, index: number) => ({ + index, + textValue: getValueObject.value( + typeof value === 'number' ? value : undefined, + '°C', + '', + false, + false, + '---', + 1, + ).textValue, + })); + return { sensorCount: temperatures.length, sensors }; + }; + }); + /** * Get the status text of a consumer identified by the consumer id * @param consumerId consumer id @@ -4584,6 +4621,7 @@ export const useMqttStore = defineStore('mqtt', () => { consumerSumPower, consumerDailyImported, consumerOnTime, + consumerTemperatures, consumerStateStr, consumerFaultState, consumerFaultStr,