Hallo Damian,
dieses DOIF liefert mir leider folgendes :
define Test_DOIF DOIF ([TelegramBot:msgText] eq "Muellabruf") (set TelegramBot message Heute: [iCloud_Kalender_Muell_Calview:today_001_summary])
attr Test_DOIF notexist none
attr Test_DOIF do always
Da jetzt das Reading "iCloud_Kalender_Muell_Calview:today_001_summary" nur vorhanden ist, wenn auch heute etwas im Kalender steht, bekomme ich leider diese Nachricht wenn für heute nichts drin steht:
Heute: [iCloud_Kalender_Muell_Calview:today_001_summary]
Ich weiß, dass es mal funktioniert hat.
Kannst du das wieder einbauen oder kann man das anders umgehen?
Versucht habe ich folgendes schon:
define Test_DOIF DOIF ([TelegramBot:msgText] eq "Muellabruf") (set TelegramBot message Heute: [iCloud_Kalender_Muell_Calview:today_001_summary,none])
attr Test_DOIF notexist none
attr Test_DOIF do always
oder
define Test_DOIF DOIF ([TelegramBot:msgText] eq "Muellabruf") (set TelegramBot message Heute: [iCloud_Kalender_Muell_Calview:today_001_summary,"none"])
attr Test_DOIF notexist none
attr Test_DOIF do always
aber das brachte keinen Erfolg. Dann steht im Text:
Heute: [iCloud_Kalender_Muell_Calview:today_001_summary,none]
oder
Heute: [iCloud_Kalender_Muell_Calview:today_001_summary,"none"]
ZitatErsatzwert für nicht existierende Readings oder Stati back
Es kommt immer wieder vor, dass in der Definition des DOIF-Moduls angegebene Readings oder Stati zur Laufzeit nicht existieren. Der Wert ist dann leer. Bei der Definition von Stati oder Readings kann für diesen Fall ein Vorgabewert oder sogar eine Perlberechnung am Ende des Ausdrucks kommagetrennt angegeben werden.
Syntax:
[<device>,<default value>]
oder
[<device>:<reading>,<default value>]
Beispiele:
[lamp,"off"]
[room:temperatur,20]
[brightness,3*[myvalue]+2]
[heating,AttrVal("mydevice","myattr","")]
[[mytime,"10:00"]]
Möchte man stattdessen einen bestimmten Wert global für das gesamte Modul definieren, so lässt sich das über das Attribut notexist bewerkstelligen. Ein angegebener Default-Wert beim Status oder beim Reading übersteuert das "notexist"-Attribut.
Syntax: attr <DOIF-module> notexist "<default value>"
Das scheint nicht für nicht existierende Readings oder Stati im Ausführungsteil zu gelten.
Grüße Marcel
Zitat von: Ma_Bo am 14 Februar 2017, 01:45:08
Hallo Damian,
dieses DOIF liefert mir leider folgendes :
define Test_DOIF DOIF ([TelegramBot:msgText] eq "Muellabruf") (set TelegramBot message Heute: [iCloud_Kalender_Muell_Calview:today_001_summary])
attr Test_DOIF notexist none
attr Test_DOIF do always
Da jetzt das Reading "iCloud_Kalender_Muell_Calview:today_001_summary" nur vorhanden ist, wenn auch heute etwas im Kalender steht, bekomme ich leider diese Nachricht wenn für heute nichts drin steht:
Heute: [iCloud_Kalender_Muell_Calview:today_001_summary]
Ich weiß, dass es mal funktioniert hat.
Kannst du das wieder einbauen oder kann man das anders umgehen?
Versucht habe ich folgendes schon:
define Test_DOIF DOIF ([TelegramBot:msgText] eq "Muellabruf") (set TelegramBot message Heute: [iCloud_Kalender_Muell_Calview:today_001_summary,none])
attr Test_DOIF notexist none
attr Test_DOIF do always
oder
define Test_DOIF DOIF ([TelegramBot:msgText] eq "Muellabruf") (set TelegramBot message Heute: [iCloud_Kalender_Muell_Calview:today_001_summary,"none"])
attr Test_DOIF notexist none
attr Test_DOIF do always
aber das brachte keinen Erfolg. Dann steht im Text:
Heute: [iCloud_Kalender_Muell_Calview:today_001_summary,none]
oder
Heute: [iCloud_Kalender_Muell_Calview:today_001_summary,"none"]
Das scheint nicht für nicht existierende Readings oder Stati im Ausführungsteil zu gelten.
Grüße Marcel
ja, das hängt damit zusammen:
Zitat-es werden Angaben in eckigen Klammern im Ausführungsteil nur ersetzt, wenn sie auch wirklich ersetzbar sind (also existierende Readings und Devices beinhalten), sonst bleibt der Ausdruck wie er ist, siehe https://forum.fhem.de/index.php/topic,65916.msg571719.html#msg571719
Da muss ich mir noch etwas überlegen, das beide Fälle abdeckt.
Das wäre super.
Gesendet von iPhone mit Tapatalk
Neue Version ist eingecheckt. Nun sollten alle zufrieden sein. D. h. alles, was bei der Syntaxprüfung für gültige Angaben zu keiner Fehlermeldung führt, wird im Ausführungsteil wie gewohnt ersetzt, inklusive defaultwert und notexist-Attribut bei Nicht-Existenz. Alles andere bleibt, wie es ist.
z. B. [bla] ist eine erlaubte Definition, wird also ersetzt
['%sdf45&] kann kein Reading oder Device sein, würde also zum Syntaxfehler führen, bleibt also wie es ist.
Super danke, werd ich nachher direkt mal testen.
Funktioniert !
DANKE !