DOIF Zeitschaltuhr triggert falsch

Begonnen von Spartacus, 06 März 2015, 10:00:01

Vorheriges Thema - Nächstes Thema

Damian

Zitat von: Brockmann am 14 März 2015, 09:18:42
Alle die Leute, die wissen, was waitdel 0:2 bedeutet! *duckundweg*  ;)

Immerhin gibt es Beispiele zu waitdel ;)

Was ist denn nun alignTime 01:01 mit +*00:10?

Ich habe es noch nicht verstanden.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

flurin

Ergänzung: Es ist einfacher eine Bedingung positiv zu definieren:

[09:00-21:00]

ist besser als:

attr Zeitschaltuhr disabledForIntervals 21:01-08:59

Gruss
flurin

Puschel74

#32
Nur mit dem Unterschied das diese Zeitangabe bei diesem Attribut nicht klappen wird.
Und der Rest ist Geschmackssache  ;D
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

flurin

Zitat von: Puschel74 am 14 März 2015, 09:37:03
Nur mit dem Unterschied das diese Zeitangabe bei diesem Attribut nicht klappen wird.

Ja klar!, dafür ist ein Attribut gar nicht nötig. Die Bedingung wird im DOIF(...) am richtigen Ort definiert.

Damian

#34
Zitat von: Puschel74 am 14 März 2015, 09:37:03
Nur mit dem Unterschied das diese Zeitangabe bei diesem Attribut nicht klappen wird.
Und der Rest ist Geschmackssache  ;D

Es ist natürlich jedem selbst überlassen, was er am besten versteht und was nicht. Ich gebe nur zu bedenken, dass at gerade einen Zeitpunkt definiert.

Bei DOIF kannst du in einem Modul auf diese Weise beliebig viele Zeiten angeben mit beliebigen Alignements für jede Zeit separat.

Unabhängig davon finde ich alignTime persönlich nicht unbedingt intuitiver, spätestens nach dem ich ausprobiert habe, dass 00:01 01:01 02:01 .... das Gleiche bewirkt!?

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

flurin

@Damian

Ih bin nicht sicher, ob so was nötig ist:

([{sprintf("%02d:00",($hour+1)%24)}] (...)

falls $hour = 24 bei Mitternacht wird.

Damian

Zitat von: flurin am 14 März 2015, 10:26:37
@Damian

Ih bin nicht sicher, ob so was nötig ist:

([{sprintf("%02d:00",($hour+1)%24)}] (...)

falls $hour = 24 bei Mitternacht wird.

dürfte egal sein: 00:00 ist das Gleiche wie 24:00

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

flurin

Zitat von: Damian am 14 März 2015, 10:30:08
dürfte egal sein: 00:00 ist das Gleiche wie 24:00

Gruß

Damian

bei $min gibt es ein error, wenn $min+x > 60 ist.

Damian

Zitat von: flurin am 14 März 2015, 10:33:00
bei $min gibt es ein error, wenn $min+x > 60 ist.
ja, da macht das sind modulo zu rechnen, wir sprachen hier von $hour.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Toto1973

Was das Ganze jetzt mit dem Viertelstunden Gong angeht, so habe ich das jetzt so gelöst:
define Wanduhr DOIF ([Wanduhr_dummy:state] eq "on" and [{sprintf("%02d:00",$hour+1)}]) ({WandUhr()})
DOELSEIF ([{sprintf("%02d:15",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({system ("mplayer /opt/fhem/Sound/BigBen_15.mp3 -volume 90")})
DOELSEIF ([{sprintf("%02d:30",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({system ("mplayer /opt/fhem/Sound/BigBen_30.mp3 -volume 90")})
DOELSEIF ([{sprintf("%02d:45",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({system ("mplayer /opt/fhem/Sound/BigBen_45.mp3 -volume 90")})
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000

flurin

#40
Zitat von: Toto1973 am 14 März 2015, 12:15:17
Was das Ganze jetzt mit dem Viertelstunden Gong angeht, so habe ich das jetzt so gelöst:
define Wanduhr DOIF ([Wanduhr_dummy:state] eq "on" and [{sprintf("%02d:00",$hour+1)}]) ({WandUhr()})
DOELSEIF ([{sprintf("%02d:15",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({system ("mplayer /opt/fhem/Sound/BigBen_15.mp3 -volume 90")})
DOELSEIF ([{sprintf("%02d:30",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({system ("mplayer /opt/fhem/Sound/BigBen_30.mp3 -volume 90")})
DOELSEIF ([{sprintf("%02d:45",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({system ("mplayer /opt/fhem/Sound/BigBen_45.mp3 -volume 90")})


Eine kleine Optimierung:

define Wanduhr DOIF ([Wanduhr_dummy:state] eq "on" and [{sprintf("%02d:00",$hour+1)}]) ({wall_clock("hour")})
DOELSEIF ([{sprintf("%02d:15",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({wall_clock("quarter")})
DOELSEIF ([{sprintf("%02d:30",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({wall_clock("quarter")})
DOELSEIF ([{sprintf("%02d:45",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({wall_clock("quarter")})


in 99_myUtils.pm einfügen:

sub wall_clock($)
{
  my ($gong) = @_;
  if ($gong eq "hour") {
    WandUhr(); # oder den Code von WandUhr hier einfügen
  } else {
    system ("mplayer /opt/fhem/Sound/BigBen_45.mp3 -volume 90");
  }
}


Der Gong lässt sich somit an einem Ort ändern.

Gruss
flurin

Toto1973

#41
Bei meine BigBen Simulation ist es ja so, das alle Viertel Stunde ein anderer Gong (Melodiefolge), so wie beim Original, erfolgt. Daher musste ich die 3 Dateien angeben.
Dann müsste man auch die Minuten in der Sub noch mit abfragen!
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000

flurin

Zitat von: Toto1973 am 15 März 2015, 16:02:19
Bei meine BigBen Simulation ist es ja so, das alle Viertel Stunde ein anderer Gong (Melodiefolge), so wie beim Original, erfolgt. Daher musste ich die 3 Dateien angeben.
Dann müsste man auch die Minuten in der Sub noch mit abfragen!

das habe ich glatt übersehen!

evtl. so aber es bringt nicht viel:


define Wanduhr DOIF ([Wanduhr_dummy:state] eq "on" and [{sprintf("%02d:00",$hour+1)}]) ({wall_clock("hour")})
DOELSEIF ([{sprintf("%02d:15",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({wall_clock("BigBen_15.mp3")})
DOELSEIF ([{sprintf("%02d:30",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({wall_clock("BigBen_30.mp3")})
DOELSEIF ([{sprintf("%02d:45",$hour+1)}] and [Wanduhr_dummy:state] eq "on") ({wall_clock("BigBen_45.mp3")})



sub wall_clock($)
{
  my ($gong) = @_;
  if ($gong eq "hour") {
    WandUhr(); # oder den Code von WandUhr hier einfügen
  } else {
    my $bigben = "mplayer /opt/fhem/Sound/".$gong." -volume 90";
    system ($bigben);
  }
}


Toto1973

Da man ja eh die 3 DOELSEIF mit angeben muss, kann man den mplayer-Aufruf auch direkt eintragen.
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000

Spartacus

Hallo,
folgendes Problem:
getriggert werden soll samstags und an Geburtstagen von 14:30-21:30.
So wird das m.E. nicht funktionieren, oder?

DOIF  ( [14:30-21:30|5] or  [?hl.01.Geburtstag] ne "none")
         (set blabla on)


müsste man wahrscheinlich so machen:
DOIF  ( [14:30-21:30] and (({$wday =~ m/[5]/}) or [?hl.01.Geburtstag] ne "none"))
         (set blabla on)

oder geht das doch einfacher?
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R