Hauptmenü

neues Modul DOIF

Begonnen von Damian, 21 Mai 2014, 15:53:18

Vorheriges Thema - Nächstes Thema

Damian

Zitat von: Spartacus am 04 Dezember 2014, 18:05:49
Hallo,
bin immer noch am basteln und finde den Fehler nicht!
Schaltzeiten sollen sein:
im Zeitraum vom: 27.12. bis 12.01.
mo-fr 07:00 bis 08:30 und 16:30 bis 22:30
sa,so, feiertags, 08:30 bis 23:00

am:
24.12 16:00 bis 23:00
31.12 08:30 bis 01:00


(([07:00-08:30|12345] and [hl.01.Feiertag:today] eq "none" or
[16:30-22:30|12345] and [hl.01.Feiertag:today] eq "none" or
[08:30-23:00] and [hl.01.Feiertag:today] ne "none" or
[08:30-23:00|60]) and (($mday>=27 and $month==12) or ($mday<=12 and $month==1))) or
([16:00-23:00] and [hl.01.Feiertag:state] eq "Heiligabend") or
([08:30-02:00] and [hl.01.Feiertag:state] eq "Silverster") (set rp.01.EG.ku.SD.Kochinsel on)
DOELSE (set rp.01.EG.ku.SD.Kochinsel off)


Danke,
Spartacus
wo sind die Klammern der Bedingung?

((([07:00-08:30|12345] and [hl.01.Feiertag:today] eq "none" or
[16:30-22:30|12345] and [hl.01.Feiertag:today] eq "none" or
[08:30-23:00] and [hl.01.Feiertag:today] ne "none" or
[08:30-23:00|60]) and (($mday>=27 and $month==12) or ($mday<=12 and $month==1))) or
([16:00-23:00] and [hl.01.Feiertag:state] eq "Heiligabend") or
([08:30-02:00] and [hl.01.Feiertag:state] eq "Silverster"))

Gruß

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

Spartacus

Damian,
ich habe das nicht gesehen! Sorry, aber ich habe hier mehr als ne Stunde gesucht! Ich brauch doch ne Brille! Meine Frau hat recht, auch wenn ich das ungern zugebe!

Jetzt muss nur noch die Reihenfolge der Bedingungen stimmen! Könnte das so klappen wie gewünscht? Gibt ja nicht so viele Möglichkeiten es zu testen....jedes Jahr genau eine, um genau zu sein!  :)

Danke, Danke,
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

Damian

Zitat von: Spartacus am 04 Dezember 2014, 19:51:53
Damian,
ich habe das nicht gesehen! Sorry, aber ich habe hier mehr als ne Stunde gesucht! Ich brauch doch ne Brille! Meine Frau hat recht, auch wenn ich das ungern zugebe!

Jetzt muss nur noch die Reihenfolge der Bedingungen stimmen! Könnte das so klappen wie gewünscht? Gibt ja nicht so viele Möglichkeiten es zu testen....jedes Jahr genau eine, um genau zu sein!  :)

Danke, Danke,
Christian.

sollte funktionieren, auch wenn man ein paar Klammern hätte auslassen können.

Gruß

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

Spartacus

Hallo Damian,
Besten Dank.
Ich habe ein Dummy namens "Ferientag" dessen Wert über ein notify auf "0" oder "1" gesetzt wird.
Frage ich das im DOIF so ab?
... [08:30-23:00] and [hl.01.Feiertag:today] ne "none" and [Ferientag:state]=1...

Danke,
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

Brockmann

Zitat von: Damian am 04 Dezember 2014, 18:18:37
Der Urknall der Computerzeit ist:
{time_str2num("1970-01-01 01:00:00")}

Da hätte ich sogar selbst draufkommen können.  :-[

Hier also nochmal ein komplettes Beispiel, wenn man möchte, dass eine DOIF-Aktion maximal alle <SEKUNDEN> ausgeführt wird:

define DI_test DOIF ([Dummy] and (time() - time_str2num(ReadingsTimestamp("DI_test", "last_exec", "1970-01-01 01:00:00"))) >= <SEKUNDEN>)
   (
   <...beliebige Anweisungen>,
   setReading DI_test last_exec wasauchimmer
   )
attr DI_test do always


Vielleicht hat noch jemand Verwendung dafür. Sollte sich problemlos auf andere Aktionen erweitern lassen, die entweder dasselben oder ein eigenes Reading dafür verwenden.

Spartacus

#830
Zitat von: Spartacus am 04 Dezember 2014, 21:51:10
Hallo Damian,
Besten Dank.
Ich habe ein Dummy namens "Ferientag" dessen Wert über ein notify auf "0" oder "1" gesetzt wird.
Frage ich das im DOIF so ab?
... [08:30-23:00] and [hl.01.Feiertag:today] ne "none" and [Ferientag:state]=1...

Danke,
Christian.

Hallo,
Hm! Irgendwie bekomme ich die Meldung: "reading does not exist: [Ferientag:state]" Ich bin jetzt verwirrt! Da es state im Dummy Ferientag gibt!

Christian

NACHTRAG: Ich war einfach nur zu doof! Man sollte auch den Devicenamen nehmen, nicht den Aliasnamen, dann klappt´s auch mit dem DOIF!
und es muss natürlich auch so lauten:
[11:39-22:30|12345] and ([hl.01.Feiertag:state] eq "none" and [cal.01.Ferien.dum:state]==1)
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

Damian

Zitat von: Spartacus am 05 Dezember 2014, 11:35:32
Hallo,
Hm! Irgendwie bekomme ich die Meldung: "reading does not exist: [Ferientag:state]" Ich bin jetzt verwirrt! Da es state im Dummy Ferientag gibt!

Christian

NACHTRAG: Ich war einfach nur zu doof! Man sollte auch den Devicenamen nehmen, nicht den Aliasnamen, dann klappt´s auch mit dem DOIF!
und es muss natürlich auch so lauten:
[11:39-22:30|12345] and ([hl.01.Feiertag:state] eq "none" and [cal.01.Ferien.dum:state]==1)

Status wird, nur durch die Angabe des Devices benutzt, hier also: [cal.01.Ferien.dum], [cal.01.Ferien.dum:state] ist das Reading state, was in den meisten Fällen mit dem Status übereinstimmt.

Gruß

Damian

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

Spartacus

#832
Hallo Damian,
cool, danke!
Wenn ich es richtig verstehe, bedeutet dies, das dieser Ausdruck ausreicht!
[11:39-22:30|12345] and ([hl.01.Feiertag:state] eq "none" and [cal.01.Ferien.dum])
Gruß,
Christian

NACHTRAG:
so scheint es doch nichtzu gehen: Im Log taucht dieser Fehler auf:
2014.12.05 13:50:28 1: Error: Ferientag has no TYPE
2014.12.05 13:51:00 2: di.01.rp.01.EG.ku.SD.Kochinsel: internal does not exist: [cal.01.Ferien.dum:STATE]
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

Damian

Zitat von: Spartacus am 05 Dezember 2014, 13:44:33
Hallo Damian,
cool, danke!
Wenn ich es richtig verstehe, bedeutet dies, das dieser Ausdruck ausreicht!
[11:39-22:30|12345] and ([hl.01.Feiertag:state] eq "none" and [cal.01.Ferien.dum])
Gruß,
Christian

NACHTRAG:
so scheint es doch nichtzu gehen: Im Log taucht dieser Fehler auf:
2014.12.05 13:50:28 1: Error: Ferientag has no TYPE
2014.12.05 13:51:00 2: di.01.rp.01.EG.ku.SD.Kochinsel: internal does not exist: [cal.01.Ferien.dum:STATE]


Das bedeutet einfach, dass zu diesem Zeitpunkt kein Zustand von cal.01.Ferien.dum gesetzt war.
Gruß

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

IPPhoner2b

Guten Abend zusammen,

ich muss zugeben, ich habe mich nicht durch die ganzen Seiten durchgewälzt, habe aber nur eine kurze Frage bzgl des Moduls.

Ich möchte über eine Homematic Fernbedienung nach Tastendruck alle Rollos runterfahren lassen, da ich aber kein DOELSE oder DOELSEIF benötige, bekomme ich eine Fehlermeldung, dass diese Angaben fehlen. Ich finde das Modul deswegen interessant, weil ich die einzelnen Rollos in einem Abstand von jeweils 5 Sekunden fahren möchte, und es ja eigenltich sehr einfach damit möglich wäre, anders als beim "Notify"

Was könnte ich machen, damit es auch so für mich funktioniert?

Das hier wäre mein Code, ob er jetzt dann auch so wie gewünscht funktioniert weiß ich natürlich nicht.
define taste_8_kurz DOIF ([fb8_Btn_08:Short.*]) (set Rollogwc runter) (set Rollofl runter) (set Rollokre runter) (set Rollokli runter)
attr taste_8_kurz do always
attr taste_8_kurz wait 5:5:5:5

satprofi

#835
wait funktioniert bei deinem code nicht, max. die ersten 5 sec.
ich habe für zeitabstände at verwendet, sollte bei dir dann so funktionieren


define taste_8_kurz DOIF ([fb8_Btn_08:Short.*]) (set Rollogwc runter,define next at +00:00:05 set Rollofl runter,define next2 at +00:00:05 set Rollokre runter,define next3 at +00:00:05 set Rollokli runter)
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

GiJoe73

Die ganzen Set kannst du so schreiben: (set rollo1 runter , set rollo2 runter , set rollo3 .....)
Dann sollte es klappen
FHEM 5.5 auf Cubietruck mit 60GB SSD
HMLAN - CFG - Adapter
11 x HM-LC-Bl1PBU-FM
8 x HM-CC-RT-DN
2 x 1-Wire Bus mit 8 stk. DS2406, 3 x 1-Wire Dougie Counter, 2 x DS2408, 8 x DS18B20, 1 x DS2450, 2x DS2438

IPPhoner2b

#837
Hallo ihr beiden,

Danke für eure Antworten, die Version von GiJoe73 gibt schonmal keine Fehlermeldung raus, muss nur noch mal weiterschauen, wie ich den Tastendruck Short oder LongPress genau definieren muss. Aber vielen Dank, so würde es wohl schonmal funktionieren, nur die Wait Daten scheint er zu ignorieren, denn es gehen alle LEDs sofort hintereinander an, die "5" sind doch in Sekunden angegeben, oder?

Zitat von: GiJoe73 am 05 Dezember 2014, 19:52:38
Die ganzen Set kannst du so schreiben: (set rollo1 runter , set rollo2 runter , set rollo3 .....)
Dann sollte es klappen

@Satprofi,
deine Version klappt fast gut, denn komischerweise geht die erste LED (noch hängen LEDs an den Ausgängen) nach ca. 6 sekunden an, dann dauert es die gewünschten 5 sekunden, und dann gehen aber die restlichen 3 direkt hintereinander an

satprofi

Ja klar. Die ersten 6sec. sind durch wait erzeugt.

Gesendet von meinem GT-I9300

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

IPPhoner2b

#839
Das Wait habe ich eigentlich deaktiviert, und zwischen der ersten und zweiten LED liegen auch die 5 Sekunden, allerdings gehen dann die restlichen 3 LEDs zusammen an, und nicht in den 5 sek Intervallen.

:AUTSCH *g*:

Na gut, eigene Dummheit, dass der Fehler so lange gedauert hat, die Zeiten für die nachfolgenden LEDs müssen logischerweise dazuaddiert werden.

define taste_8_kurz DOIF ([fb8_Btn_08]) (set Rollogwc runter , define next at +00:00:05 set Rollofl runter , define next2 at +00:00:10 set Rollokre runter , define next3 at +00:00:15 set Rollokli runter)