Autor Thema: neue Features: Wochentage mit Namen, Überarbeitung für indirekte Timer  (Gelesen 618 mal)

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 4028
1) Wochentage

Mit folgender Version kann man jetzt eigene Wochentag-Benennungen vornehmen.

Es gibt jetzt das Attribut weekdays, mit diesem können statt Zahlenangaben beliebige Wochentag-Benennungen definiert werden.

Die Angaben werden mit Komma getrennt definiert und müssen mit Sonntag ( 0 ) beginnen und mit Arbeitstagen ( 8 ) enden.

Beispiel:

di_test attr weekdays So,Mo,Di,Mi,Do,Fr,Sa,WE,AT
Angabe in der Definition:

DOIF ([10:00|SoMo])...
oder z. B.

di_mydoif attr weekdays Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Wochenende,Arbeitstage
DOIF ([10:00|Arbeitstage])
Es wird wie bisher nach dem Vorkommen der Wochentagnamen gesucht, egal was sonst drin steht. Mit der obigen Definition funktioniert also auch:

DOIF ([10:00|Montag,Dienstag,blabla, Donnerstag    sonstwas §$%Arbeitstageasdlfkj])...
Selbstverständlich funktioniert die Ersetzung auch bei indirekten Wochentagangaben aus Readings oder Dummys.

set wochentag Montag,Wochenende

DOIF ([10:00|[wochentag]])...

2) Timer-Management für indirekte Timer wurde überarbeitet. Eine fehlerhafte Definition führte bisher zum Fehler bei der Definition eines DOIF-Moduls - das Modul wurde beim Hochfahren nicht angelegt. Nun wird das DOIF-Modul angelegt, im jeweiligen Timer wird eine entsprechende Meldung abgelegt. Sobald der fehlerhafte Timer zur Laufzeit korrigiert wird, wird der entsprechende Timer gesetzt.

Das Modul ist wie immer voll abwärtskompatibel.

Edit: Version wurde eingecheckt.
« Letzte Änderung: 15 April 2017, 19:15:52 von Damian »
FHEM-Module: DOIF, THRESHOLD; FHEM-Befehl: IF
Hilfreich Hilfreich x 1 Liste anzeigen

Offline ToKa

  • Full Member
  • ***
  • Beiträge: 158
Hallo,

das ist eine super Erweiterung mit den Wochentagen, da z.B. die FritzBox beim Wecker im reading alarm1_wday die Wochentage als Text liefert. Allerdings mit einem Leerzeichen getrennt z.B.: "Mo Tu We Th Fr". Wenn ich Deine Beschreibung richtig verstehe, müsste ich also die Leerzeichen eliminieren?

Beste Grüße
Torsten
RaspberryPi3 mit RaZberry2 für ZWAVE
Fibaro: FGWPE/F-101 Switch,  FGSD002 Smoke Sensor
Popp / Duwi: ZW ZS 3500 Plugin Switch, 009105 Wall Plug Switch Schuko (IP44)
EUROtronic COMET Z Wall Radiator Thermostat Valve Control

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 4028
Hallo,

das ist eine super Erweiterung mit den Wochentagen, da z.B. die FritzBox beim Wecker im reading alarm1_wday die Wochentage als Text liefert. Allerdings mit einem Leerzeichen getrennt z.B.: "Mo Tu We Th Fr". Wenn ich Deine Beschreibung richtig verstehe, müsste ich also die Leerzeichen eliminieren?

Beste Grüße
Torsten

nein. Wie schon beschrieben: es ist egal was sonst noch drinsteht, Leerzeichen oder sonstwas. Es reicht die Definition attr weekdays Su,Mo,Tu,We,Th,Fr,Sa
und dann die Angabe in der Definition des DOIF: DOIF ([<zeit>|[alarm1_wday]])...
« Letzte Änderung: 20 März 2017, 23:29:53 von Damian »
FHEM-Module: DOIF, THRESHOLD; FHEM-Befehl: IF

Offline ToKa

  • Full Member
  • ***
  • Beiträge: 158
Zitat
Das liefert im Timer timer_01_c01  21.03.2017 06:15:00|[StarGateAP1:alarm2_wdays]Müssten dort nicht jetzt die Wochentage auftauchen?

nein, es entspricht der bisherigen Vorgehensweise: die indirekte Wochentagangabe erscheint beim Timer, sie wird erst zum Triggerzeitpunkt ausgewertet.
« Letzte Änderung: 21 März 2017, 08:08:53 von Damian »
RaspberryPi3 mit RaZberry2 für ZWAVE
Fibaro: FGWPE/F-101 Switch,  FGSD002 Smoke Sensor
Popp / Duwi: ZW ZS 3500 Plugin Switch, 009105 Wall Plug Switch Schuko (IP44)
EUROtronic COMET Z Wall Radiator Thermostat Valve Control

Offline the ratman

  • Sr. Member
  • ****
  • Beiträge: 677
  • Cosmoprolet & Intelligenzdiabetiker
    • the ratmans inn
hehe,
ich finds echt genial!

auf diesem wege nochmal vielen, vielen dank, dass du dich der idee angenommen hast und dann auch noch so derartig rasant reagiert hast!
gelöst hast is ja - wie immer - genial.

kanns kaum erwarten, dass du das offiziell machst. wann denkst den, wirds soweit sein und als offizielles update kommen?
→do↑p!dnʇs↓shit←

Offline devo

  • New Member
  • *
  • Beiträge: 21
Hallo Damian,
habe dein Modul aus dem ersten Beitrag heruntergeladen und Fhem neu gestartet. Bekomme aber folgende Fehlemeldungen:

2017.03.21 10:56:41 1: reload: Error:Modul 98_DOIF deactivated:
 Global symbol "$lastWarningMsg" requires explicit package name at ./FHEM/98_DOIF.pm line 1088.
Global symbol "$lastWarningMsg" requires explicit package name at ./FHEM/98_DOIF.pm line 1095.
Global symbol "$lastWarningMsg" requires explicit package name at ./FHEM/98_DOIF.pm line 1096.
Global symbol "$lastWarningMsg" requires explicit package name at ./FHEM/98_DOIF.pm line 1097.
Global symbol "$lastWarningMsg" requires explicit package name at ./FHEM/98_DOIF.pm line 1101.

Fehlt da noch etwas, mache ich was falsch. Würde das neue Feature gerne nutzen.

Viele Grüße

devo

SW:FHEM 5.6; Raspbian-Wheezy 09.09.14
HW:Banana pro; Raspi B+; FritzBox 7240; 3x BC-RT-TRX-CyG; 2x BC-SC-Rd-WM; BC-TS-Sw-PI; HM-ES-PMSw1-PI; HM-Sys-SRP-PI; HM-LC-SW1-FM; 2x HM-Sys-SRP-PI;

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 4028
Hallo Damian,
habe dein Modul aus dem ersten Beitrag heruntergeladen und Fhem neu gestartet. Bekomme aber folgende Fehlemeldungen:

2017.03.21 10:56:41 1: reload: Error:Modul 98_DOIF deactivated:
 Global symbol "$lastWarningMsg" requires explicit package name at ./FHEM/98_DOIF.pm line 1088.
Global symbol "$lastWarningMsg" requires explicit package name at ./FHEM/98_DOIF.pm line 1095.
Global symbol "$lastWarningMsg" requires explicit package name at ./FHEM/98_DOIF.pm line 1096.
Global symbol "$lastWarningMsg" requires explicit package name at ./FHEM/98_DOIF.pm line 1097.
Global symbol "$lastWarningMsg" requires explicit package name at ./FHEM/98_DOIF.pm line 1101.

Fehlt da noch etwas, mache ich was falsch. Würde das neue Feature gerne nutzen.

Viele Grüße

devo

Du brauchst die aktuelle Version von fhem.pl
FHEM-Module: DOIF, THRESHOLD; FHEM-Befehl: IF

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 4028
hehe,
ich finds echt genial!

auf diesem wege nochmal vielen, vielen dank, dass du dich der idee angenommen hast und dann auch noch so derartig rasant reagiert hast!
gelöst hast is ja - wie immer - genial.

kanns kaum erwarten, dass du das offiziell machst. wann denkst den, wirds soweit sein und als offizielles update kommen?

Ich kann es im Grunde genommen jederzeit einchecken - meine Tests sind abgeschlossen. Allerdings können ein paar Tester im Vorfeld nicht schaden, zu mal sich größere Änderungen in dieser Version zusätzlich wegen indirekter Timer ergeben haben.
FHEM-Module: DOIF, THRESHOLD; FHEM-Befehl: IF

Offline devo

  • New Member
  • *
  • Beiträge: 21
Hallo,

vielen Dank, nachdem fhem.pm durch ein update aktualisiert wurde, läuft es. Erste Test verliefen erfolgreich.
Vielen Dank für diese praktische Erweiterung!

Gruß

devo
SW:FHEM 5.6; Raspbian-Wheezy 09.09.14
HW:Banana pro; Raspi B+; FritzBox 7240; 3x BC-RT-TRX-CyG; 2x BC-SC-Rd-WM; BC-TS-Sw-PI; HM-ES-PMSw1-PI; HM-Sys-SRP-PI; HM-LC-SW1-FM; 2x HM-Sys-SRP-PI;

Offline the ratman

  • Sr. Member
  • ****
  • Beiträge: 677
  • Cosmoprolet & Intelligenzdiabetiker
    • the ratmans inn
kann auch nicht klagen ... alle doif's rennen bis jetzt normal weiter.
wochentagsdeffinition lässt sich einfügen und es gibt auch keine blöden meldungen im log.
das "neue" doif reagiert brav auf wochentagsänderungen.

war nun sicher kein ausgiebiger test, aber so siehts aus bei mir *g* <-- der onkel ist glücklich und zufrieden

ne frage: wenn ich sowieso nur 0 bis 6 brauch, muß ich dann 7 und 8 auch immer im weekdays mit deffinieren, oder is das dem guten doif egel, wenn ich faul bin?
→do↑p!dnʇs↓shit←

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 4028
kann auch nicht klagen ... alle doif's rennen bis jetzt normal weiter.
wochentagsdeffinition lässt sich einfügen und es gibt auch keine blöden meldungen im log.
das "neue" doif reagiert brav auf wochentagsänderungen.

war nun sicher kein ausgiebiger test, aber so siehts aus bei mir *g* <-- der onkel ist glücklich und zufrieden

ne frage: wenn ich sowieso nur 0 bis 6 brauch, muß ich dann 7 und 8 auch immer im weekdays mit deffinieren, oder is das dem guten doif egel, wenn ich faul bin?

Es ist ganz einfach. Die Definitionen fangen bei 0 also Sonntag an, was du nicht angibst wird auch nicht in Zahlen übersetzt. Wenn du also 7 und 8 nicht benötigst, dann kannst du die letzten Definitionen weglassen.

Und noch eins: Zahlenangaben funktionieren weiterhin, auch wenn man Umbenennung vorgenommen hat.

FHEM-Module: DOIF, THRESHOLD; FHEM-Befehl: IF
Hilfreich Hilfreich x 1 Liste anzeigen

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 4028
Ich habe die Sache noch etwas user-freundlicher gestaltet. Man kann jetzt neben den Ziffern auch Kürzel angeben, dh. das Attribut weekdays braucht nur noch definiert werden, wenn man andere Kürzel nehmen möchte. Die interne Default-Definition sieht so aus.

attr weekdays So,Mo,Di,Mi,Do,Fr,Sa,WE,AT
Die Doku wurde auch entsprechend angepasst.

@Ellert: Das Einsteigerbeispiel in der commandref habe ich auf die neue Syntax angepasst, weil es aussagekräftiger ist; müsste  man dann noch im Wiki anpassen:

define di_clock_radio DOIF ([06:30|Mo Di Mi] or [08:30|Do Fr Sa So]) (set radio on) DOELSEIF ([08:00|Mo Di Mi] or [09:30|Do Fr Sa So]) (set radio off)

Neue Version im ersten Post. Wenn keine Einwände kommen, werde ich die neue Version morgen Abend einchecken.
FHEM-Module: DOIF, THRESHOLD; FHEM-Befehl: IF

Online Ellert

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2232
Ich habe die Sache noch etwas user-freundlicher gestaltet. Man kann jetzt neben den Ziffern auch Kürzel angeben, dh. das Attribut weekdays braucht nur noch definiert werden, wenn man andere Kürzel nehmen möchte. Die interne Default-Definition sieht so aus.

attr weekdays So,Mo,Di,Mi,Do,Fr,Sa,WE,AT
Die Doku wurde auch entsprechend angepasst.

@Ellert: Das Einsteigerbeispiel in der commandref habe ich auf die neue Syntax angepasst, weil es aussagekräftiger ist; müsste  man dann noch im Wiki anpassen:

define di_clock_radio DOIF ([06:30|Mo Di Mi] or [08:30|Do Fr Sa So]) (set radio on) DOELSEIF ([08:00|Mo Di Mi] or [09:30|Do Fr Sa So]) (set radio off)

Neue Version im ersten Post. Wenn keine Einwände kommen, werde ich die neue Version morgen Abend einchecken.
Habe ich angepasst.

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 4028
Neue Version wurde eingecheckt.
FHEM-Module: DOIF, THRESHOLD; FHEM-Befehl: IF
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline ToKa

  • Full Member
  • ***
  • Beiträge: 158
Hallo Damian,

habe gerade noch mal mit der neusten Version getestet. Entweder ich steh auf dem Schlauch und meine doif-Definition ist falsch oder es geht nicht ein reading für die Wochentage zu verwenden :(

List vom DOIF
Internals:
   DEF        ( [[StarGateAP1:alarm2_time]|[StarGateAP1:alarm2_wdays]] and
  [StarGateAP1:alarm2_state] eq "on" )
     ## Nachtlicht für 10 Minuten zur Weckzeit einschalten, wenn Wecker aktiv und Wochentag stimmt
     ( {Log 3, 'Test Weekdays'} )

   NAME       di.02.ST.fl.SD.wakeUpLight.Torsten
   NR         224
   NTFY_ORDER 50-di.02.ST.fl.SD.wakeUpLight.Torsten
   STATE      23.03.2017 18:10:00|[StarGateAP1:alarm2_wdays] (on)
   TYPE       DOIF
   Readings:
     2017-03-22 18:16:54   Device          StarGateAP1
     2017-03-22 07:00:17   cmd             2
     2017-03-22 07:00:17   cmd_event       StarGateAP1
     2017-03-22 07:00:17   cmd_nr          2
     2017-03-22 18:16:54   e_StarGateAP1_alarm2_state on
     2017-03-22 07:00:17   state           cmd_2
     2017-03-22 18:10:00   timer_01_c01    23.03.2017 18:10:00|[StarGateAP1:alarm2_wdays]
   Condition:
     0           DOIF_time_once($hash,0,$wday,"[StarGateAP1:alarm2_wdays]") and    ReadingValDoIf($hash,'StarGateAP1','alarm2_state') eq "on"
   Days:
     0          [StarGateAP1:alarm2_wdays]
   Devices:
     0           StarGateAP1
     all         StarGateAP1
   Do:
     0:
       0           {Log 3, 'Test Weekdays'}
     1:
   Helper:
     event      box_wlanCount: 3,mac_34_D2_70_AB_1A_5D: linux (WLAN, 148 / 98 Mbit/s, -41),mac_20_64_32_D4_47_1D: Android (WLAN, 53 / 65 Mbit/s, -74),mac_4C_66_41_10_66_12: UPnP-Monkey-on-SM-N910F-10a698085f2eb7e9 (WLAN, 129 / 51 Mbit/s, -52),lastReadout: 304 values captured in 2.00 s
     globalinit 1
     last_timer 1
     sleeptimer -1
     timerdev   StarGateAP1
     timerevent box_wlanCount: 3,mac_34_D2_70_AB_1A_5D: linux (WLAN, 148 / 98 Mbit/s, -41),mac_20_64_32_D4_47_1D: Android (WLAN, 53 / 65 Mbit/s, -74),mac_4C_66_41_10_66_12: UPnP-Monkey-on-SM-N910F-10a698085f2eb7e9 (WLAN, 129 / 51 Mbit/s, -52),lastReadout: 304 values captured in 2.00 s
     triggerDev StarGateAP1
     timerevents:
       box_wlanCount: 3
       mac_34_D2_70_AB_1A_5D: linux (WLAN, 148 / 98 Mbit/s, -41)
       mac_20_64_32_D4_47_1D: Android (WLAN, 53 / 65 Mbit/s, -74)
       mac_4C_66_41_10_66_12: UPnP-Monkey-on-SM-N910F-10a698085f2eb7e9 (WLAN, 129 / 51 Mbit/s, -52)
       lastReadout: 304 values captured in 2.00 s
     timereventsState:
       box_wlanCount: 3
       mac_34_D2_70_AB_1A_5D: linux (WLAN, 148 / 98 Mbit/s, -41)
       mac_20_64_32_D4_47_1D: Android (WLAN, 53 / 65 Mbit/s, -74)
       mac_4C_66_41_10_66_12: UPnP-Monkey-on-SM-N910F-10a698085f2eb7e9 (WLAN, 129 / 51 Mbit/s, -52)
       lastReadout: 304 values captured in 2.00 s
     triggerEvents:
       box_wlanCount: 3
       mac_34_D2_70_AB_1A_5D: linux (WLAN, 148 / 98 Mbit/s, -41)
       mac_20_64_32_D4_47_1D: Android (WLAN, 53 / 65 Mbit/s, -74)
       mac_4C_66_41_10_66_12: UPnP-Monkey-on-SM-N910F-10a698085f2eb7e9 (WLAN, 129 / 51 Mbit/s, -52)
       lastReadout: 304 values captured in 2.00 s
     triggerEventsState:
       box_wlanCount: 3
       mac_34_D2_70_AB_1A_5D: linux (WLAN, 148 / 98 Mbit/s, -41)
       mac_20_64_32_D4_47_1D: Android (WLAN, 53 / 65 Mbit/s, -74)
       mac_4C_66_41_10_66_12: UPnP-Monkey-on-SM-N910F-10a698085f2eb7e9 (WLAN, 129 / 51 Mbit/s, -52)
       lastReadout: 304 values captured in 2.00 s
   Internals:
   Interval:
   Itimer:
     all         StarGateAP1
   Localtime:
     0          1490289000
   Readings:
     0           StarGateAP1:alarm2_state
     all         StarGateAP1:alarm2_state
   Realtime:
     0          18:10:00
   Regexp:
     0:
     All:
   State:
   Time:
     0          [StarGateAP1:alarm2_time]
   Timecond:
     0          0
   Timer:
     0          0
   Timers:
     0           0
   Trigger:
   Triggertime:
     1490289000:
       localtime  1490289000
       Hash:
Attributes:
   alias      wakeUpLight Torsten2
   group      Zeitsteuerung Beleuchtung
   icon       socket_timer
   room       Zentrale Steuerung
   sortby     2
   stateFormat timer_01_c01 (e_StarGateAP1_alarm2_state)
   verbose    5
   weekdays   So,Mo,Di,Mi,Do,Fr,Sa,WE,AT

Um 18:10 hätte es einen Logeintrag geben müssen, aber das Kommando wird nicht ausgeführt. Im StarGateAP1:alarm2_wdays steht aktuell: Mo Tu We Th Fr

Kannst Du mir weiterhelfen?

Beste Grüße
Torsten
RaspberryPi3 mit RaZberry2 für ZWAVE
Fibaro: FGWPE/F-101 Switch,  FGSD002 Smoke Sensor
Popp / Duwi: ZW ZS 3500 Plugin Switch, 009105 Wall Plug Switch Schuko (IP44)
EUROtronic COMET Z Wall Radiator Thermostat Valve Control