Echodevice "set speak ...." nicht mehr korrekte Ansage -> Einheiten Problem

Begonnen von duu75, 27 Juli 2025, 13:59:24

Vorheriges Thema - Nächstes Thema

duu75

Hallo,

ich weiß nicht, ob das ein Problem vom genutzten echodevice Modul oder vom FHEM Hauptmodul etc. ist.
Folgendes Problem habe ich seit Kurzen und es hat aber mal sauber seit Ewigkeiten funktioniert und weiß nicht mehr weiter, wie ich das Problem lösen kann.

Ich lasse mir einige Stati und Werte von Alexa auf Anforderung ansagen.

Beim Kühlschrank habe ich nun das plötzlich Problem, das "set ECHO..... speak -17 Grad" aus einem NOTIFY oder MyUtils heraus nicht mehr die negativen Temperaturwerte ansagt, sondern das Minus einfach ignoriert.
Das ging aber mal alles ohne Probleme.

Auszug von dem Code in der MyUtils bzw. vom Test Notify mit einem Dummy.
{my $freezer = ReadingsVal('Samsung',"freezer_temperature","0") ; fhem("set ECHO_.......... speak Freezer Temperatur $freezer Grad.")}
Der ReadingsVal und auch die Variable $freezer beinhaltet den Wert -17.
Das habe ich mehrfach gecheckt in FHEM Kommandozeile usw.

Der Echo sagt aber immer nur 17 Grad. Gefühlt macht er aber auch eine kleine Pause vor der 17. Klingt ein wenig komisch, als ob er kurz stocken würde.

Gehe ich in FHEM direkt auf das Echodevice und sage: "set ECHO_.......... speak -17"
Dann sagt er aber -17.
Nur aus der Variable heraus nicht.

Was ist da los mit meinem FHEM und warum?
Wo kommt das her?

Hoffe auf eure Hinweise und Tips.

Otto123

Hi,

klingt nach Problem mit der Zeichenkodierung.

Nimm doch mal eine "echte" Zahl, also ReadingsNum() anstatt einem String mit ReadingsVal()

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

ZitatGehe ich in FHEM direkt auf das Echodevice und sage: "set ECHO_.......... speak -17"
Dann sagt er aber -17.
Nur aus der Variable heraus nicht.

Hallo,

es liegt nicht an der Variablen. Mit "set ECHO_.......... speak -17 Grad" wird auch das Minus geschluckt.
Es hat irgendwie damit zu tun das man das Grad mit angibt. Egal ob man es ausschreibt oder ° angibt.
Warum auch immer!?

duu75

Zitat von: Otto123 am 27 Juli 2025, 14:27:37Hi,

klingt nach Problem mit der Zeichenkodierung.

Nimm doch mal eine "echte" Zahl, also ReadingsNum() anstatt einem String mit ReadingsVal()

Gruß Otto

Beides schon probiert, mit ReadingsVal und ReadingsNum gleiches Ergebnis.
Alle Minus Werte werden als positive angesagt.

Habe es mit einem Dummy und NOTIFY zum Testen konfiguriert.
Er stockt immer ganz kurz bei den negativen Werten, bei positiven redet er flüssig weiter.
Setze dann im Dummy mal positive und negative Werte und lass auf Echo ausgeben.
In meinem speziellen NOTIFY sagt der Echo dann "Temperatur MINUS 17" und die Zahl vom Dummy Grad. Aber nicht mit Minus.
Kann das jemand so nachstellen und bestätigen?


define act_on_TestAlexaDummy notify TestAlexaDummy:.* {my $freezer = ReadingsNum('TestAlexaDummy',"state","0") ;; {fhem("set ECHO_************ speak Temperatur -17 und $freezer Grad")}}
#  CFGFN     
#  DEF        TestAlexaDummy:.* {my $freezer = ReadingsNum('TestAlexaDummy',"state","0") ; {fhem("set ECHO_************ speak Temperatur -17 und $freezer Grad")}}
#  FUUID      68860d6b-f33f-d0ce-33b8-507c0c04ddc59380
#  NAME      act_on_TestAlexaDummy
#  NOTIFYDEV  TestAlexaDummy
#  NR        18580
#  NTFY_ORDER 50-act_on_TestAlexaDummy
#  REGEXP    TestAlexaDummy:.*
#  STATE      2025-07-27 14:30:53
#  TRIGGERTIME 1753619453.76948
#  TYPE      notify
#  eventCount 14
#  READINGS:
#    2025-07-27 14:30:22  state          active
#    2025-07-27 14:30:53  triggeredByDev  TestAlexaDummy
#    2025-07-27 14:30:53  triggeredByEvent -20


duu75

Zitat von: TomLee am 27 Juli 2025, 14:28:26
ZitatGehe ich in FHEM direkt auf das Echodevice und sage: "set ECHO_.......... speak -17"
Dann sagt er aber -17.
Nur aus der Variable heraus nicht.

Hallo,

es liegt nicht an der Variablen. Mit "set ECHO_.......... speak -17 Grad" wird auch das Minus geschluckt.
Es hat irgendwie damit zu tun das man das Grad mit angibt. Egal ob man es ausschreibt oder ° angibt.
Warum auch immer!?

Bei mir nicht.
Direkt aus dem Echjo Device heraus, sagt er bei mir negative Werte mit Minus an.
Egal ob nur -17 oder -17 Grad oder -17 irgendwas dahinter

TomLee

ZitatKann das jemand so nachstellen und bestätigen?

So stell ich das in der Kommandozeile nach:
{my $freezer = -17;; fhem("set OG_Echo_Wohnzimmer speak Temperatur -17 und $freezer Grad")}
ergibt:
ZitatTemperatur -17 und 17 Grad

{my $freezer = -17;; fhem("set OG_Echo_Wohnzimmer speak Temperatur -17 und $freezer")}
ergibt:
ZitatTemperatur -17 und -17

{my $freezer = -17;; fhem("set OG_Echo_Wohnzimmer speak Temperatur -17 und $freezer ohm")}
ergibt:
ZitatTemperatur -17 und -17 ohm

Bei mir klappts mit allem dahinter, nur nicht mit Grad oder °.

edit:

Doch nicht. Mit bspw. Megawatt ;D klappts bei mir auch nicht, seltsam:

{my $freezer = -17;; fhem("set OG_Echo_Wohnzimmer speak Temperatur -17 und $freezer MW")}
ergibt:
ZitatTemperatur -17 und 17 Megawatt

duu75

Stimmt eben auch nochmal mit verschiedenen Einheiten getestet.

Das ist ein Problem mit Einheiten hinter dem negativen Temperaturwert.

Ohm und Euro geht z.B.

Watt, Sekunden, Stunden, km, Meter geht NICHT mehr.

Dann ist das kein Problem von FHEM oder einem Modul, da im Log mit Verbose 5 zu sehen ist, dass die -17 Grad im HTTPS Speak-Aufruf an Amazon geschickt wird.
Da fummelt Amazon Echo dran rum und interpretiert den negativen Wert als unplausibel oder so etwas.

Da ja total dämlich.

Eine Idee für einen Workaround?

EDIT:
Habe jetzt erst einmal im Speak Befehl das Wort "Grad" in "-Grad" geändert, so geht es erstmal wieder und ohne kurze Gedenkpause vor Grad oder so.

Schon echt komisch.

TomLee

ZitatEine Idee für einen Workaround?

{my $freezer = -17;; fhem("set OG_Echo_Wohnzimmer speak Temperatur -17 und $freezer kraad")}

duu75

Zitat von: TomLee am 27 Juli 2025, 19:27:14
ZitatEine Idee für einen Workaround?

{my $freezer = -17;; fhem("set OG_Echo_Wohnzimmer speak Temperatur -17 und $freezer kraad")}

Grahd geht auch   :))