DOIF setreading funktioniert nicht unknown expression format

Begonnen von micha0815, 28 September 2018, 21:30:10

Vorheriges Thema - Nächstes Thema

micha0815

Hallo,

ich versuche gerade mir morgends das aktuelle Wetter vorlesen zu lassen.
Leider scheitere ich schon am Zusammenbau des Textes.
Ich möchte den Text im Reading tts abspeichern und Ihn dann anscließend vorlesen lassen.

Mein DOIF sieht wie folgt aus

([05:30-09:00] and ["^0_ku_li_:on"])
(
  setreading $SELF tts Guten Morgen. Die Außentemperatur beträgt [wetterstation1:temperature:r0] Grad
  set MyTTS tts [$SELF:tts]
)


Ich kann es so aber nicht abspeichern, es kommt die Fehlermeldung "di_morgentts DOIF: unknown expression format: r0".
Führe ich den setrading Befehl ganz normal aus, wird das Reading auch richtig gesetzt.

Hat hier jemand eine Idee was da falsch läuft?

Damian

Zitat von: micha0815 am 28 September 2018, 21:30:10
Hallo,

ich versuche gerade mir morgends das aktuelle Wetter vorlesen zu lassen.
Leider scheitere ich schon am Zusammenbau des Textes.
Ich möchte den Text im Reading tts abspeichern und Ihn dann anscließend vorlesen lassen.

Mein DOIF sieht wie folgt aus

([05:30-09:00] and ["^0_ku_li_:on"])
(
  setreading $SELF tts Guten Morgen. Die Außentemperatur beträgt [wetterstation1:temperature:r0] Grad
  set MyTTS tts [$SELF:tts]
)


Ich kann es so aber nicht abspeichern, es kommt die Fehlermeldung "di_morgentts DOIF: unknown expression format: r0".
Führe ich den setrading Befehl ganz normal aus, wird das Reading auch richtig gesetzt.

Hat hier jemand eine Idee was da falsch läuft?

r0 kennt DOIF nicht. Du musst in der Commandref zu DOIF schauen:

ZitatFiltern nach Ausdrücken mit Ausgabeformatierung   back

Syntax: [<device>:<reading>|<internal>:d<number>|"<regex>":<output>]

d - Der Buchstabe "d" ist ein Synonym für das Filtern nach Dezimalzahlen, es entspricht intern dem regulären Ausdruck "(-?\d+(\.\d+)?)". Ebenfalls lässt sich eine Dezimalzahl auf eine bestimmte Anzahl von Nachkommastellen runden. Dazu wird an das "d" eine Ziffer angehängt. Mit der Angabe d0 wird die Zahl auf ganze Zahlen gerundet.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

micha0815

Super, danke für den Hinweis. Damit funktioniert es.

Ich bin nur etwas iritiert, weil bei der Hilfe von setreading steht es eben mit dem r0 für das Runden auf null Stellen. Da hab ich bei DOIF gar nicht gesucht.

Ich dachte immer das im Ausführungsteil ganz normale FHEM Befehle stehen.