HA + Google Assistant/Home "erkennt" keine negativen Werte, bzw. gibt diese nicht wieder?

Zur Abwechslung mal eine Frage von mir: :slightly_smiling_face: Auch wenn ich schon lange HA mit Google Home zur Sprachsteuerung nutze ist mir erst heute aufgefallen das Google Assistant/Home scheinbar keine negativen Werte erkennt und somit diese dann auch nicht mit einem Minus in der Sprachausgabe wiedergibt.

Aktuell ist die Außentemperatur hier - 5,8 Grad. Dieser Wert stammt von dem Außentemperaturfühler meiner Wolf Heizungsanlage.


Der Wert wird dann über ein einfaches HA Script abgerufen

data:
  entity_id:
    - media_player.nest_hub_wohnzimmer
    - media_player.nest_hub_kuche
    - media_player.nest_hub_arbeitszimmer
  message: >-
    Die Außentemperatur beträgt aktuell {{
    states('sensor.wolf_bm2_0x30_220103_aussentemperatur') }} Grad
action: tts.cloud_say

und als Sprachnachricht auf meinen Nest Hubs wiedergegeben. Leider ignoriert Google dabei das es sich um einen negativen Wert handelt und statt
Die Außentemperatur beträgt aktuell minus 5 Punkt 8 Grad
lautet die Google Sprachausgabe dann
Die Außentemperatur beträgt aktuell 5 Punkt 8 Grad
D.h. Google erkennt/interpretiert den - nicht als Minus.

A) Kann das hier jemand so bestätigen?
B) Gibt es ggf. einen einfachen Weg so das Google auch negative Werte richtig ausgibt, ohne das ich dafür extra irgendeine “If/Then Abfrage” basteln muss?

VG Jim

Ha, morgens beim Aufstehen lasse ich mir u.a. die Temperatur durchsagen und dachte heute “oh 6 Grad, was für ein Wechsel” aber dann beim Blick nach draußen, das kann nicht sein, weil es waren -6 Grad.

Ich benutze allerdings Sonos aber denke, daß hat nichts mit dem Hersteller sondern TTS Interpretation zu tun. Habe etwas probiert.

-1.5 “{{states(‘sensor.temperature’) | int()}}” → Ansage: minus 1
-1.5 “{{states(‘sensor.temperature’) | float()}}” → Ansage: strich 1.5

{% set temp = states('sensor.temperature') | float() %}
{{ "Minus " + (temp | abs) | string if temp < 0 else temp | string }}

sagt wieder minus 1.5

EDIT:

Gebe ich als Message = ‘-1.4’ and die Sonos Lautsprecher, sagt er auch schön “minus 1.4”, hm.

1 „Gefällt mir“

Ich habe keine Automatisierung, lediglich den Sensor an Google Home weitergeben (HA Matter Bridge). Wenn ich Google dann frage “wie warm ist der Balkon” bekomme ich auch ein minus.

1 „Gefällt mir“

Ja danke für die Info und Dein probieren. :+1: Das wäre dann die angesprochene If/Then Lösung. Ich hoffe eigentlich darauf das Google Home das eigentlich auch selber erkennen und interpretieren sollte. Schließlich sollte Google Home von HA das Minus, sprich den - Strich vor dem Wert ja auch übermittelt werden. Nur das Google Home den - warum auch immer - einfach unterschlägt/ignoriert. D.h. für mich sieht es eher so aus als wenn HA den - Strich unterschlägt, oder - falls die Formatierung eines negativen Temp.-Wertes für Google Home ggf. anders erfolgen muss - den Wert nicht “korrekt” an Google Home übergibt. Denn wenn Google Home mit dem - Strich nichts anfangen kann sollte es eigentlich zu einem Fehler kommen und nicht die Ausgabe 5 Punkt 8 Grad erfolgen.

@maxe Danke für die Info. Hm - zumindest weiß ich jetzt das Google Home auch Minus-Werte die von HA kommen auch richtig intepretieren kann. :laughing: Ich muss jetzt selber erst noch ein wenig darüber nachgrübeln wie die Unterschiede zustande kommen bzw. kommen könnten. :slightly_smiling_face:

Edit: OK ein Test damit

brachte auch das Ergebnis das minus 5 Punkt 8 korrekt ausgegeben wird, sprich der - als Minus ausgegeben wird. Wenn ich allerdings den sensor.wolf_bm2_0x30_220103_aussentemperatur auswähle, der ja ebenfalls einen Minuswert als Zustand hat und liefert, funktioniert es nicht. Hm …

VG Jim

probiere mal {{states(‘sensor.wolf_bm2_0x30_220103’) | string()}}

Das mag HA leider nicht:

Ungültige Aktion
template value should be a string for dictionary value @ data[0][‘data’]

VG Jim

sorry, nochmal:

{{ states('sensor.wolf_bm2_0x30_220103') | string }}

1 „Gefällt mir“

Ne die Leerzeichen hatte ich schon selber eingefügt :slightly_smiling_face: aber trotzdem mag HA den Befehl/Code nicht.

VG Jim

die Hochkommas waren im ersten Post von mir falsch und auch die Klammern nach dem String…

Ich befürchte, man muß dies separat handeln beim Sensor auslesen. Es geht auch ohne if/then :wink:

{{ states(‘sensor.wolf_bm2_0x30_220103’) | string | replace(“-”, “minus”) }}

PS: Danke auch für diesen Post. Ich habe diese Tempansagen jetzt glatt gezogen.

Stimmt sorry. Das

data:
  entity_id:
    - media_player.nest_hub_wohnzimmer
    - media_player.nest_hub_kuche
    - media_player.nest_hub_arbeitszimmer
  message: >-
    Die Außentemperatur beträgt aktuell {{ states('sensor.wolf_bm2_0x30_220103') | string }} Grad
action: tts.cloud_say

führt jetzt zwar zu einer Sprachausgabe, allerdings ohne den Temp.-Wert. D.h. die Sprachausgabe lautet jetzt:

Die Außentemperatur beträgt aktuell unknown Grad.

VG Jim

Führt wieder zu

Ungültige Aktion
template value should be a string for dictionary value @ data[0][‘data’]

Grrrrr… Scripting/Code ist echt nicht mein Ding. :rofl:

Edit:

action: tts.cloud_say
metadata: {}
data:
  cache: false
  entity_id: media_player.nest_hub_arbeitszimmer
  message: "{{ states(‘sensor.wolf_bm2_0x30_220103’) | string | replace(“-”, “minus”) }}"

= Ungültige Aktion und keine Sprachausgabe

Dann das:

action: tts.cloud_say
metadata: {}
data:
  cache: false
  entity_id: media_player.nest_hub_arbeitszimmer
  message: "{{ states('sensor.wolf_bm2_0x30_220103') | string }}"

Sprachausgabe: unknown

VG Jim

Falsche Hochkomma und falsche Anführungszeichen.

Edit:
Das kann man gut in den Entwicklerwerkzeugen - Template testen.

1 „Gefällt mir“

Ich habe den Fehler gefunden. Mein bisherige Code war ja

data:
  entity_id:
    - media_player.nest_hub_wohnzimmer
    - media_player.nest_hub_kuche
    - media_player.nest_hub_arbeitszimmer
  message: >-
    Die Außentemperatur beträgt aktuell {{
    states('sensor.wolf_bm2_0x30_220103_aussentemperatur') }} Grad
action: tts.cloud_say

Dann hatte @metallmanu gepostet

und diese Zeile habe ich dann direkt auch so übernommen und getestet.

Fällt Euch was auf: :laughing:
sensor.wolf_bm2_0x30_220103_aussentemperatur
sensor.wolf_bm2_0x30_220103

Sorry das hätte mir natürlich auch selber und sofort auffallen sollen. :roll_eyes:

OK danke Euch - jetzt funktioniert es und ich kann mir die momentane Sprachausgabe bei der noch das Wort Strich gesagt wird gegen das Wort Minus ersetzen.

Ich markiere das Posting von @metallmanu mal als Lösung, auch wenn @Bacardi natürlich auch mit dazu beigetragen hat. :+1:

Edit: Damit es vollständig ist hier mein Code mit dem dann auch das Wort Minus statt Strich bei der Sprachausgabge gesagt wird.

action: tts.cloud_say
metadata: {}
data:
  cache: false
  entity_id: media_player.nest_hub_arbeitszimmer
  message: Die Außentemperatur beträgt aktuell "{{ states('sensor.wolf_bm2_0x30_220103_aussentemperatur') | string | replace('-','minus') }}" Grad

Edit 2: Ich markiere dann doch lieber dieses Posting hier als Lösung damit man nicht durcheinander kommt und bei der Zeile von @metallmanu passt die Sensor-Bezeichnung ja nicht. @metallmanu Ich hoffe das ist ok für Dich? :slightly_smiling_face:

VG Jim

2 „Gefällt mir“

ja logisch :slight_smile:
war ja eh gute Zusammenarbeit auch mit @Bacardi

1 „Gefällt mir“

Ne, alles gut. Ich bin eher dankbar über den Post weil ansonsten hätte ich meine heutige Morgenansage als “schläfrig verhört” oder “HA Ausrutscher” abgetan aber so ging ich dem wirklich nach und zog alles glatt. Es ist immer ein Geben und Nehmen.

Ja schon irgendwie lustig. Wie gesagt nutze ich Google Home bestimmt schon 2 - 3 Jahre für die Sprachsteuerung mit und über HA und erst heute fiel mir auf das Minustemperaturen dann nicht als Minustemperaturen ausgegeben/angesagt werden. :rofl: Ok das lag bestimmt an den milden Wintern der letzten Jahre und das ist dann eine passende Ausrede für mich warum mir das nicht schon früher aufgefallen ist. :laughing:

VG JIm