Hallo ihr lieben,
wie kann ich ein Reading per TTS ausgeben lassen ?
Gibts da irgendwie eine Variable die ich einfügen kann ?
Z.B.: "Draußen sind $temperatur grad"
Danke schonmal
Klar, die Readings des Device auslesen und per TTS vorlesen lassen.
Oder versteh ich deine Frage nicht ???
Soorrry, die Frage ist wie ich an den Wert komme.
Also was ich reinschreiben muss $variabel
Wie Du das genau zu formulieren hast, kommt auf den Kontext an in dem Du den TTS-Befehl absetzt.
In einem DOIF geht das z.B. so:
define di DOIF ([07:00]) (set <TTSname> tts Draußen sind [<Sensorname>:temperature] Grad Celsius)
Zitat von: Ellert am 21 Dezember 2015, 19:09:06
In einem DOIF geht das z.B. so:
Wo sich ja die deutsche commandref mit ihren unzähligen Beispielen direkt anbietet ;)
In einem notify kannst du mit
ReadingsVal("<Device>","<Reading>",Ersatzwert)
an den gewünschten Wert kommen und diesen dann per TTS vorlesen lassen.
Danke schonmal:
Zitat
fhem "set Gruppe.Access send OK, es sind draußen "ReadingsVal("Temperatur_Aussen","temperature",Ersatzwert)""
geht schonmal nicht
Zitat von: nocomment am 21 Dezember 2015, 19:46:55
Danke schonmal:
geht schonmal nicht
Ist auch etwas wenig was du uns lieferst.
Ganzer Code und Fehlermeldung wäre nicht schlecht sonst wird das nur eine Ratespiel und da bin ich raus.
Zitatdefine notifyGruppeAccess notify Gruppe.Access:message.* {\
if( $EVENT eq 'message: tür' ) {\
fhem "set Gruppe.Access send OK, Tür wird geöffnet!";;\
fhem "set Whatsapp.do tuer";;\
\
\
} elsif( $EVENT eq 'message: away' ) {\
fhem "set Gruppe.Access send OK, Wohnung wird in 10 Sekunden verriegelt";;\
fhem "set Whatsapp.do away";;\
\
} elsif( $EVENT eq 'message: licht an' ) {\
fhem "set Gruppe.Access send OK, Alle Lichter an";;\
fhem "set Whatsapp.do lichtan";;\
\
} elsif( $EVENT eq 'message: licht aus' ) {\
fhem "set Gruppe.Access send OK, Alle Lichter aus";;\
fhem "set Whatsapp.do lichtaus";;\
\
} elsif( $EVENT eq 'message: status' ) {\
fhem "set Gruppe.Access send OK, es sind draußen "ReadingsVal("Temperatur_Aussen","temperature",Ersatzwert)" ";;\
fhem "set Whatsapp.do pause";;\
\
} else {\
fhem "set Gruppe.Access send Wie bitte? Kommando nicht gefunden."\
\
}\
}
Zitat2015.12.21 19:44:43 3: eval: my $EVTPART0='message:';my $TYPE='yowsup';my $SELF='notifyGruppeAccess';my $EVTPART1='status';my $EVENT='message: status';my $NAME='Gruppe.Access';{
if( $EVENT eq 'message: tür' ) {
fhem "set Gruppe.Access send OK, Tür wird geöffnet!";
fhem "set Whatsapp.do tuer";
} elsif( $EVENT eq 'message: away' ) {
fhem "set Gruppe.Access send OK, Wohnung wird in 10 Sekunden verriegelt";
fhem "set Whatsapp.do away";
} elsif( $EVENT eq 'message: licht an' ) {
fhem "set Gruppe.Access send OK, Alle Lichter an";
fhem "set Whatsapp.do lichtan";
} elsif( $EVENT eq 'message: licht aus' ) {
fhem "set Gruppe.Access send OK, Alle Lichter aus";
fhem "set Whatsapp.do lichtaus";
} elsif( $EVENT eq 'message: status' ) {
fhem "set Gruppe.Access send OK, es sind druaßen "ReadingsVal("Temperatur_Aussen","temperature",Ersatzwert)" ";
fhem "set Whatsapp.do pause";
} else {
fhem "set Gruppe.Access send Wie bitte? Kommando nicht gefunden."
}
}
2015.12.21 19:44:43 1: PERL WARNING: (Missing operator before " "?)
2015.12.21 19:44:43 3: notifyGruppeAccess return value: syntax error at (eval 406) line 20, near ""set Gruppe.Access send OK, es sind druaßen "ReadingsVal"
Und nun noch in den EventMonitor schauen wie die Events aussehen und die zugehörigen Defines dazu liefern - bitte in Code-Tags.
siehe meinen angepinnten Beitrag hier im Anfängerbereich.
Was ist Gruppe.Access
Äh und Codes direkt für die fhem.cfg gibt es von mir sowieso nicht da ich nur das DEF bearbeite und den Rest soll FHEM machen.
Edith: Vermutlich zu langsam mit meinem Edith aber
Gruppe.Access:message.* {
if( $EVENT eq "message: tür") {
fhem ("set Gruppe.Access send OK, Tür wird geöffnet!");
fhem ("set Whatsapp.do tuer");
} elsif($EVENT eq "message: away") {
fhem("set Gruppe.Access send OK, Wohnung wird in 10 Sekunden verriegelt");
fhem("set Whatsapp.do away");
} elsif( $EVENT eq "message: licht an") {
fhem("set Gruppe.Access send OK, Alle Lichter an");
fhem("set Whatsapp.do lichtan");
} elsif( $EVENT eq "message: licht aus") {
fhem("set Gruppe.Access send OK, Alle Lichter aus");
fhem("set Whatsapp.do lichtaus");
} elsif( $EVENT eq "message: status") {
fhem("set Gruppe.Access send OK, es sind draußen ".ReadingsVal("Temperatur_Aussen","temperature",99);
fhem("set Whatsapp.do pause");
} else {
fhem("set Gruppe.Access send Wie bitte? Kommando nicht gefunden.");
}
}
versuch das mal.
Edith1: Als Ersatzwert solltest du auch einen numerischen Wert verwenden ;)
Ich hab mal 99 eingefügt und der . sollte nicht unterschätzt werden.
Edith2: Du kannst dir auch Debugeinträge mit
Log(1,"$EVENT - $EVTPART0")
etc. einfügen und dich so langsam an einen funktionierenden Code rantasten - ganz ohne Hilfe.
Danke bis hier her für die Mühe.
} elsif($EVENT eq "message: away") {
fhem("set Gruppe.Access send OK, Wohnung wird in 10 Sekunden verriegelt");
fhem("set Whatsapp.do away");
} elsif( $EVENT eq "message: licht an") {
fhem("set Gruppe.Access send OK, Alle Lichter an");
fhem("set Whatsapp.do lichtan");
} elsif( $EVENT eq "message: licht aus") {
fhem("set Gruppe.Access send OK, Alle Lichter aus");
fhem("set Whatsapp.do lichtaus");
} elsif( $EVENT eq "message: status") {
fhem("set Gruppe.Access send OK, es sind draußen ".ReadingsVal("Temperatur_Aussen","temperature",99);
fhem("set Whatsapp.do pause");
} else {
fhem("set Gruppe.Access send Wie bitte? Kommando nicht gefunden.");
}
}
Funktioniert leider nicht.
Wenn ich die Zeile
fhem("set Gruppe.Access send OK, es sind draußen ".ReadingsVal("Temperatur_Aussen","temperature",99);
drin lasse geht die ganze abfrage nicht.
:(
Ausm Log
2015.12.21 20:25:56 3: notifyGruppeAccess return value: syntax error at (eval 122) line 15, at EOF
Zähl mal deine Klammern und dann schaue in die commandref zu set. ReadingsVal ist nicht mehr zwingend notwendig.
Es wurde ja wieder nur das halbe DEF gepostet >:(
Willst du es nur absichtlich schwer machen oder liest du dir auch mal die angepinnten Beiträge hier im Anfängerbereich durch.
Edith: Aber wie schon geschrieben - bau dir ein paar Logeinträge ein und du kommst von selbst auf den funktionierenden Code.
Zitat von: Puschel74 am 21 Dezember 2015, 20:39:36
Edith: Aber wie schon geschrieben - bau dir ein paar Logeinträge ein und du kommst von selbst auf den funktionierenden Code.
In dem Fall nicht. Der Logeintrag würde gar nicht erreicht. Er hat schlicht Klammern falsch gesetzt (zu wenig schließende).
marvin
Zitat[device:reading] mit dem Wert des Readings für device, falls sowohl device, als auch Reading existiert, und nicht leer ist.
also:?
[Temperatur_Aussen:temperature]
geht nicht
Geht nicht ist eine sehr präzise Fehlermeldung.
Bleibe bei deiner ersten Version und verwende die richtige Anzahl Klammern (die Anzahl der schließenden Klammern muss gleich der Anzahl der öffnenden Klammern sein).
Dass das nicht funktioniert glaube ich im Übrigen nicht (gesetzt dem Fall, dass du es richtig gemacht hast, was wir nicht wissen, da du ja offenbar ungern Informationen teilst).
@marvin
Mein Notepad++ hat die richtige Anzahl Klemmern ausgeworfen - er hat nur das halbe DEF gepostet.
Zitat von: Puschel74 am 21 Dezember 2015, 21:12:55
@marvin
Mein Notepad++ hat die richtige Anzahl Klemmern ausgeworfen - er hat nur das halbe DEF gepostet.
Runde Klammern. Hier ist der Fehler:
fhem("set Gruppe.Access send OK, es sind draußen ".ReadingsVal("Temperatur_Aussen","temperature",99);
Mist - ertappt :-[
Genau DAS hab ich nicht angeschaut sondern einfach so eingedrösselt.
fhem("set Gruppe.Access send OK, es sind draußen ".ReadingsVal("Temperatur_Aussen","temperature",99));
sollte passen ;D
Geht, vielen Dank!
Auch für eure Geduld!