Hauptmenü

Was ist hier falsch??

Begonnen von musicnrw, 27 Juli 2023, 07:48:16

Vorheriges Thema - Nächstes Thema

musicnrw

Hallo zusammen,
ich zweifle langsam an meinen (zugegebenermaßen beschränkten) FHEM-Kenntnissen.
Ich möchte ein Gerät ausschalten, an den Werktagen zu einer anderen Zeit als am Wochenende. Dazu habe ich folgende Definitionen gemacht:
define RegalWohnzimmer_Werktags_OFF at *22:30:00 {if($wday == 1 || $wday == 2 || $wday == 3 || $wday == 4 || $wday == 5 ) {fhem("set ESPEasy_28 off")} }

define RegalWohnzimmer_Wochenende_OFF at *23:30:00 {if($wday == 6 || $wday == 7 ) {fhem("set ESPEasy_28 off")} }

Nur - es funktioniert nict, es wird nicht ausgeschaltet. Ich finde den Fehler einfach nicht...

Danke für Eure Hilfe!
Thomas

rabehd

#1
Steht was im Log?
Schaltet der Befehl set ESPEasy_28 off wenn Du ihn über die Befehlzeile eingibst?
Funktioniert das at wenn Du nur einen Wochentag prüfst?

Wie wäre es mit einem List?
Auch funktionierende Lösungen kann man hinterfragen.

Beta-User

Falsch sind mind. (Doppelt genäht):

- Der Thread-Titel
- "define" gepostet statt list/raw-list/"copy for forum"
- das Verständnis für den korrekten Wertebereich für $wday
- es ist unklar, ob der Ausführungsteil nie klappt (Syntaxproblem?) oder ob es (im log?) weitere Hinweise gibt?

Sonstiges:
- "Werktag" und "Wochenende" wäre ggf. besser mit !$we bzw. $we abzugrenzen (holiday2we)
- WeekdayTimer wäre eine weitere Option, das "in einem" zu notieren.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

rabehd

#3
Wenn wir bei Alternativen sind, ich finde das komplett im einem DOIF am Besten.
Auch funktionierende Lösungen kann man hinterfragen.

musicnrw

Hallo,
danke an die, die konstruktive Vorschläge machen.
set ESPEasy_28 off in der Eingabezeile funktioniert.

Das verrückte ist, dass ich die Zeile quasi kopiert habe aus der Definition für ein anderes Gerät und nur die Zeit-, Wochentags- und Gerätedefinitionen angepasst habe.

Und wie würde das "komplett in einen DOIF" aussehen?

Beta-User

Danke für die freundliche Rückmeldung...

Nochmal zum debuggen: copy for forum wirft bei mir das hier aus:
define RegalWohnzimmer_Werktags_OFF at *22:30:00 {if($wday == 1 || $wday == 2 || $wday == 3 || $wday == 4 || $wday == 5 ) {fhem("set ESPEasy_28 off")} }
#  COMMAND    {if($wday == 1 || $wday == 2 || $wday == 3 || $wday == 4 || $wday == 5 ) {fhem("set ESPEasy_28 off")} }
#  DEF        *22:30:00 {if($wday == 1 || $wday == 2 || $wday == 3 || $wday == 4 || $wday == 5 ) {fhem("set ESPEasy_28 off")} }
#  FUUID      64c24452-f33f-d171-974e-2e8e05d08c10ef59
#  NAME      RegalWohnzimmer_Werktags_OFF
#  NR        22679
#  PERIODIC  yes
#  RELATIVE  no
#  REP        -1
#  STATE      Next: 22:30:00
#  TIMESPEC  22:30:00
#  TRIGGERTIME 1690489800
#  TRIGGERTIME_FMT 2023-07-27 22:30:00
#  TYPE      at
#  eventCount 1
#  .attraggr:
#  .attrminint:
#  READINGS:
#    2023-07-27 12:17:54  state          Next: 22:30:00
#
setstate RegalWohnzimmer_Werktags_OFF Next: 22:30:00
setstate RegalWohnzimmer_Werktags_OFF 2023-07-27 12:17:54 state Next: 22:30:00
Ergo ist die Syntax an sich wohl ok.

Wenn man nur den Teil unter COMMAND in die Eingabezeile wirft, kommt "Please define ... first" raus, was auch keine Überraschung ist, weil es dieses Device bei mir ja in der Tat nicht gibt.

Also nochmal die "unkonstruktive" Frage: Welchen Wertebereich kann $wday annehmen?
(Tipp: es ist keine Überraschung, falls es sonntags nicht funktioniert!)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

rabehd

Zitat von: musicnrw am 27 Juli 2023, 09:58:14Und wie würde das "komplett in einen DOIF" aussehen?

nur als Auszug.defmod Regel_Arbeit DOIF ([00:38|Mo]) (set ....
DOELSE ()
attr Regel_Arbeit do always
attr Regel_Arbeit weekdays So,Mo,Di,Mi,Do,Fr,Sa,WE,AT
Bei Dir AT und WE
Auch funktionierende Lösungen kann man hinterfragen.

betateilchen

Zitat von: rabehd am 27 Juli 2023, 08:58:40Wenn wir bei Alternativen sind, ich finde das komplett im einem DOIF am Besten.

Mir wird schlecht... *kotz*
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Die Aufgabe ist mal wieder nicht auf das einfachste heruntergebrochen.
"Schalte die Regalbeleuchtung um 23:30 Uhr aus, ausser an Werktagen, da eine Stunde früher"

define at1 at *22:30 {fhem("set ESPEasy_28 off") if !$we}
define at2 at *23:30 {fhem("set ESPEasy_28 off")}

Fertig.

Zitat von: Beta-User am 27 Juli 2023, 08:21:55- "Werktag" und "Wochenende" wäre ggf. besser mit !$we bzw. $we abzugrenzen (holiday2we)


Was holiday2we hier für eine Rolle spielen soll, habe ich nicht verstanden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

musicnrw

Hallo Beta-User,
Du hast recht, wenn ich jetzt sehe, dass ich den Sonntag nicht mit "wday == 0" beschreibe, was definitiv mein Fehler war. Nichtsdestotrotz: Jedoch funktioniert es gestern nicht und vorgestern nicht, und da war Dienstag und Mittwoch, und für diese Tage hätte die Definition (eigentlich) passen sollen.

An Betateilchen: Danke für Deine konstruktive Hilfe. Ich werde es später ausprobieren!

Gruß, Thomas

 

rabehd

Zitat von: betateilchen am 27 Juli 2023, 14:38:58Die Aufgabe ist mal wieder nicht auf das einfachste heruntergebrochen.
"Schalte die Regalbeleuchtung um 23:30 Uhr aus, ausser an Werktagen, da eine Stunde früher"

define at1 at *22:30 {fhem("set ESPEasy_28 off") if !$we}
define at2 at *23:30 {fhem("set ESPEasy_28 off")}

Fertig.



und jetzt wird mir schlecht  ;D
Auch funktionierende Lösungen kann man hinterfragen.

betateilchen

Zitat von: musicnrw am 27 Juli 2023, 14:57:25Jedoch funktioniert es gestern nicht und vorgestern nicht, und da war Dienstag und Mittwoch, und für diese Tage hätte die Definition (eigentlich) passen sollen.

Dein Werktags-at aus dem ersten Beitrag hier funktioniert bei mir einwandfrei, habe das gerade mit 15:05 als Ausführungszeit gestestet.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: rabehd am 27 Juli 2023, 15:02:39und jetzt wird mir schlecht

Ich brauche nur zwei Zeilen in der Konfiguration, um die gestellte Aufgabe zu lösen. Theoretisch könnte ich das auch in einer einzigen Zeile machen, aber ich wollte es nachvollziehbar machen.

Wieviele Zeilen brauchst Du mit DOIF?
Du hast ja in Deinem Auszug schon 3 Zeilen FHEM (1 * define + 2 * attr)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#13
Zitat von: betateilchen am 27 Juli 2023, 15:14:12Theoretisch könnte ich das auch in einer einzigen Zeile machen

Irgendwer wird kommen und den Beweis einfordern, deshalb...

define at3 at *22:30:00 {my $cmd ="set ESPEasy_28 off";; if (!$we) { fhem $cmd } else { fhem "define at3a at +01:00:00 $cmd" }}

Aus dem fahrenden Zug und nur mit Tablet ist sowas echt anstrengend 😀
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Nobbynews

#14
Dann würde ich aber für das temporäre at at3a die Definition mit defmod machen.
Sonst kommt wieder die Frage nach dem roten ? auf.