Hallo zusammen,
ich möchte gerne meinen Abfallkalendar per Sprachausgabe umsetzen. Habe das bislang mit Mailbenachrichtigung gemacht bzw. mit Nachrichten über das ENIGMA2-Modul.
Ich möchte nun jedoch, dass bei Müll x die entsprechende MP3 abgespielt wird. Irgendwo habe ich wohl noch einen Fehler drin, den ich aber nicht sehen kann.
Mit einer if-Abfrage funktioniert es:
define events holiday
attr events group Events
attr events room Haus
define CheckEventHeute at *17:22:00 {\
my $Eventname;;\
my $EventHeute;;\
$EventHeute = fhem("get events today");;\
print $EventHeute;;\
if ($EventHeute == "Gelber Sack") {fhem("set Funk_Gong_Ton playTone 001");;\
}\
}
doch mit folgenden if-Abfragen will es nicht hinhauen.
define events holiday
attr events group Events
attr events room Haus
define CheckEventHeute at *17:22:00 {\
my $Eventname;;\
my $EventHeute;;\
$EventHeute = fhem("get events today");;\
print $EventHeute;;\
if ($EventHeute == "Gelber Sack") {fhem("set Funk_Gong_Ton playTone 001");;\
if ($EventHeute == "Restmüll") {fhem("set Funk_Gong_Ton playTone 002");;\
if ($EventHeute == "Altpapier") {fhem("set Funk_Gong_Ton playTone 003");;\
f ($EventHeute == "Biomüll") {fhem("set Funk_Gong_Ton playTone 004");;\
}\
}
Könnte hier vllt mal jmd schauen, wo ich den Fehler habe?
Besten Dank und schönen Restsonntag allen!
Hallo,
ein einfaches copy&paste nach Notepad++ zeigt mir schon mindestens 3 fehlende }
Das sollte aber eigentlich auch eine Fehlermeldung im Logfile erzeugen.
Grüße
Ok danke!
Jetzt habe ich es so:
define events holiday
attr events group Events
attr events room Haus
define CheckEventHeute at *17:52:00 {\
my $Eventname;;\
my $EventHeute;;\
$EventHeute = fhem("get events today");;\
print $EventHeute;;\
if ($EventHeute == "Gelber Sack") {fhem("set Funk_Gong_Ton playTone 001")};;\
if ($EventHeute == "Restmuell") {fhem("set Funk_Gong_Ton playTone 002")};;\
if ($EventHeute == "Altpapier") {fhem("set Funk_Gong_Ton playTone 003")};;\
if ($EventHeute == "Biomuell") {fhem("set Funk_Gong_Ton playTone 004")}}
Jetzt geht es, allerdings werden alle Töne abgespielt, also alle 4 "set" werden ausgeführt, obwohl die Prüfung nur bei "Gelber Sack" zutreffen müsste.
??
Hallo,
== wird mMn bei Zahlen verwendet
eq sollte das sein was du suchst.
Grüße
So:
define events holiday
attr events group Events
attr events room Haus
define CheckEventHeute at *18:59:00 {\
my $Eventname;;\
my $EventHeute;;\
$EventHeute = fhem("get events today");;\
print $EventHeute;;\
if ($EventHeute eq "Gelber Sack") {fhem("set Funk_Gong_Ton playTone 001")};;\
if ($EventHeute eq "Restmuell") {fhem("set Funk_Gong_Ton playTone 002")};;\
if ($EventHeute eq "Altpapier") {fhem("set Funk_Gong_Ton playTone 003")};;\
if ($EventHeute eq "Biomuell") {fhem("set Funk_Gong_Ton playTone 004")}}
tut sich garnix! :(
Hallo,
dann lass dir mal einen Logfileeintrag erzeugen mit dem Inhalt von $EventHeute und schau mal was tatsächlich in der Variable steht.
Grüße
Hi,
bau doch mal ein
Debug "$EventHeute";
ein und schau, was drin steht. Offenbar passt Dein eq nicht zu dem entahltenen Text.
Mglw musst Du umstellen von "equals" auf "contains":
if ($EventHeute =~ m/Gelber Sack/)
=8-)
2014.02.23 19:56:00 1: DEBUG>Gelber Sack
Blöde Frage:
set Funk_Gong_Ton playTone 001
direkt in der fhem Befehlszeile funktioniert?
Zitat von: Rince am 23 Februar 2014, 21:07:15
Blöde Frage:
set Funk_Gong_Ton playTone 001
direkt in der fhem Befehlszeile funktioniert?
KLar, das geht natürlich!
Sorry, war nur ne Frage.
Dann wäre jetzt imho der Code schlau, der deine Mülltüten feststellt ;)
Moin,
mit folgendem Code hat es gestern, als $Eventheute "Gelber Sack" war, funktioniert:
define CheckEventHeute at *08:18:00 {\
my $Eventname;;\
my $EventHeute;;\
$EventHeute = fhem("get events today");;\
print $EventHeute;;\
if ($EventHeute =~ m/Gelber Sack/) {fhem("set Funk_Gong_Ton playTone 001")};;\
if ($EventHeute =~ m/Restmuell/) {fhem("set Funk_Gong_Ton playTone 002")};;\
if ($EventHeute =~ m/Altpapier/) {fhem("set Funk_Gong_Ton playTone 003")};;\
if ($EventHeute =~ m/Biomuell/) {fhem("set Funk_Gong_Ton playTone 004")}}
Heute zeigt $Eventheute "Biomuell", doch nun bleibt der Gong stumm.
Also irgendwas scheint an der Syntax noch nicht zu stimmen.
Was macht eigentlich immer das "\" am Ende der Zeilen? Ist das dafür da, um einen Zeilenumbruch einzuleiten?
Habe den Code jetzt nämlich folgendermaßen umgestellt, und jetzt klappt alles!
define CheckEventHeute at *08:52:00 {\
my $Eventname;;\
my $EventHeute;;\
$EventHeute = fhem("get events today");;\
print $EventHeute;;\
if ($EventHeute =~ m/Gelber Sack/) {fhem("set Funk_Gong_Ton playTone 001")};; if ($EventHeute =~ m/Restmuell/) {fhem("set Funk_Gong_Ton playTone 002")};; if ($EventHeute =~ m/Altpapier/) {fhem("set Funk_Gong_Ton playTone 003")};; if ($EventHeute =~ m/Biomuell/) {fhem("set Funk_Gong_Ton playTone 004")}}
EDIT: Nachdem nun die Ansteuerung des Gongs funktioniert wollte ich mal versuchen, 2 Befehle ausführen zu lassen, und zwar einmal den Gong und dann noch eine Anzeige auf der Dreambox. Folgenden Code habe ich dazu erstellt:
define CheckEventHeute at *08:52:00 {\
my $Eventname;;\
my $EventHeute;;\
$EventHeute = fhem("get events today");;\
print $EventHeute;;\
if ($EventHeute =~ m/Gelber Sack/) {fhem("set Funk_Gong_Ton playTone 001")};; if ($EventHeute =~ m/Restmuell/) {fhem("set Funk_Gong_Ton playTone 002")};; if ($EventHeute =~ m/Altpapier/) {fhem("set Funk_Gong_Ton playTone 003")};; if ($EventHeute =~ m/Biomuell/) {fhem("set Funk_Gong_Ton playTone 004 [b];; set DM500HD msg message 60 $EventHeute[/b]")}}
Seltsamerweise wird nun NUR noch die Nachricht auf der DM500HD angezeigt und der Gong bleibt stumm. Jmd ne Idee? Gibts da irgendeine Art Priorisierung? Normalerweise müsste doch beides ausgeführt werden oder nicht? Ist da vllt die FB überfordert?
Das \ am Zeilenende ist genau dann nötig, wenn du den Code direkt in der fhem.cfg bastelst. So wie auch die ;;
Um das etwas übersichtlicher zu machen, würde ich dringend empfehlen das at NICHT über die cfg zu bearbeiten, sondern über das DEF.
Da sieht man dann auch vernünftig, welche if jetzt welche Befehle ausführen. Und man muss nicht dauernd umdenken mit den Klammern etc.
Wenn ich sehe, wie du dich hier quälst - probier mal:
define CheckEventHeute at *08:18:00
IF (fhem("get events today") =~ m/Gelber Sack/) (set Funk_Gong_Ton playTone 001);
IF (fhem("get events today") =~ m/Restmmuell/) (set Funk_Gong_Ton playTone 002);
IF (fhem("get events today") =~ m/Altpapier/) (set Funk_Gong_Ton playTone 003);
IF (fhem("get events today") =~ m/Biomuell/) (set Funk_Gong_Ton playTone 004)
Wenn man weniger tippen muss, kann man auch weniger falsch machen. :)
siehe: http://forum.fhem.de/index.php/topic,17895.msg118503.html#msg118503
Gruß
Damian