neuer FHEM-Befehl IF

Begonnen von Damian, 25 Dezember 2013, 23:50:06

Vorheriges Thema - Nächstes Thema

Michi240281

#180
2014-03-13 21:20:08.190 ENIGMA2 DM500HD power: aus
2014-03-13 21:20:18.671 ENIGMA2 DM500HD power: an

Habs!!!!!! :)


define Ambientelicht_TV notify DM500HD.power:.an IF ($hms gt sunset_abs("HORIZON=-2",0,"17:00","22:30")) (set Alle_Steckdosen_EG:FILTER=STATE!=an an)


Die Punkte kann ich also auch weglassen? Also dann Leerzeichen?

Und du meinst das at lasse ich auch drin für den anderen Fall, dass die DM500HD bereits läuft, wenn es dunkel WIRD???
FHEM auf QNAP per VM / HM LAN Adapter / diverse HM-Devices
QNAP TVS 463
VU+ Duo4kSE
Sony 75ZD9

Damian

Zitat von: Michi240281 am 13 März 2014, 21:20:38
2014-03-13 21:20:08.190 ENIGMA2 DM500HD power: aus
2014-03-13 21:20:18.671 ENIGMA2 DM500HD power: an

Dann ist doch klar, dass es nicht funktionieren kann.

müsste dann heißen:

ENIGMA2.DM500HD.power..an

Gruß

Damian




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

satprofi

Hallo.
Bin am verzweifeln

klappt einfach nicht


Bewohner IF ([Bewohner:state] eq "present" and ($hms ge "08:00" and $hms le "23:59:54")) (set Steckdose2 on)
         ELSE IF ([Status:state] eq "on" and ($hms ge "19:00" and $hms le "07:59:59")) (set Steckdose2:FILTER=STATE!=on on)
         ELSE (set Steckdose2 off)


liegts an den 2 verschiedenen state od. doch nicht?
lt. Notepad++ stimmt die Klammersetzung.

das funktioniert aber



Bewohner IF ([Bewohner:state] eq "present" and ($hms ge "08:00" and $hms le "23:59:54")) (set Steckdose2 on)
         ELSE (set Steckdose2 off)


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

der-Lolo

versuch mal
notify Bewohner|Status IF....

Und ELSE IF gibt es immer noch nicht, Du kannst aber schachteln - siehe erstes Post hier...

Damian

Hinter einem IF oder ELSE muss zuerst immer eine Klammer auf und die fehlte bei dir hier:

ELSE (IF ([Status:state] eq "on" and

dann also:

Bewohner IF ([Bewohner:state] eq "present" and ($hms ge "08:00" and $hms le "23:59:54")) (set Steckdose2 on)
         ELSE (IF ([Status:state] eq "on" and ($hms ge "19:00" and $hms le "07:59:59")) (set Steckdose2:FILTER=STATE!=on on)
         ELSE (set Steckdose2 off))


Gruß

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

Damian

und da fällt mir noch auf:

$hms ge "19:00" and $hms le "07:59:59"

kann nicht funktionierten: Es gibt keine Zeit, die Größer als 19:00 und gleichzeitig kleiner als 07:59:59 ist, dann schon besser mit or:


Bewohner IF ([Bewohner:state] eq "present" and ($hms ge "08:00" and $hms le "23:59:54")) (set Steckdose2 on)
         ELSE (IF ([Status:state] eq "on" and ($hms ge "19:00" or $hms le "07:59:59")) (set Steckdose2:FILTER=STATE!=on on)
         ELSE (set Steckdose2 off))


Gruß

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

satprofi

danke. ich glaub jetzt hab ichs kapiert.
ich wollte beim abschalten des Satreceivers auch die Steckdose abknipsen wenn es noch vor 24h ist.
deshalb habe ich jetzt folgendes, nach deinem vorschlag nach, definiert

Bewohner IF ([Bewohner:state] eq "present" and ($hms ge "08:00" and $hms le "20:59:54")) (set Steckdose2 on)
         ELSE (IF ([Status:state] eq "on" and ($hms ge "19:00" or $hms le "07:59:59")) (set Steckdose2:FILTER=STATE!=on on)
         ELSE (set Steckdose2 off)
)


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

Bartimaus

#187

Hallo zusammen,


ich möchte in meinem KellerKino die Heizung wie folgt automatisch einschalten/ausschalten:


Am Tag vorm Wochenende (-86400 Sekunden = 1Tag) oder vorm Feier/Urlaubstag, soll sich die Heizung automatisch um 06:00 Uhr einschalten.
Hierfür habe ich mir folgenden Timer überlegt:



define HeizungKinoAn at *06:00 IF (($we(-86400)) (set KinoHeizung on)



Ausgeschaltet wird dann 6h vor dem nächsten Werktag.



define HeizungKinoAus at *18:00 IF (!($we(-86400)) (set KinoHeizung off)





Ist die Syntax so korrekt ? Meine *.holiday ist korrekt eingebunden.
Meine Heizung ist hydraulisch abgeglichen, und die Raumtemperatur ist durch die Vorlauftemp begrenzt, so das ich nur den Stellantrieb für die FbHz ein oder ausschalten muss.
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Damian

Zitat von: Bartimaus am 15 März 2014, 19:05:45

Hierfür habe ich mir folgenden Timer überlegt:



define HeizungKinoAn at *06:00 IF (($we(-86400)) (set KinoHeizung on)



Ausgeschaltet wird dann 6h vor dem nächsten Werktag.



define HeizungKinoAus at *18:00 IF (!($we(-86400)) (set KinoHeizung off)


Wie kommst du auf diese Syntax?

Meines Wissens ist $we eine Variable und keine Funktion, daher wird deine Überlegung nicht fruchten.

Dann schon eher:


define HeizungKinoAn at *06:00 IF (($wday==5 or fhem("get nrw tomorrow") ne "none") (set KinoHeizung on)


nrw musst du ersetzen durch den tatsächlichen Namen des Holiday-Moduls.

Den Ausschalt-Befehl kannst du dir jetzt selbst zur Übung überlegen  ;)

Gruß

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

Bartimaus

Hi Damian,


danke für den Hinweis, Groschen gefallen. Das mit Variable/Funktion wusste ich noch nicht.
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Michi240281

Hi Damian,

ich nutze folgenden Code als Ambientelicht:

define Ambientelicht at *{sunset_abs("HORIZON=-2",0,"17:00","19:30")} IF ([DM500HD:power] eq "on") (set Alle_Steckdosen_EG:FILTER=STATE!=an an)

Nun habe ich einen WeekdayTimer und wollte da den Filter mit einbauen, der oben drin steht, allerdings scheint das nicht zu funzen. Ist der Filter nur mit der IF-Funktion verwendbar?

define test WeekdayTimer Vase 67|14:34|an { fhem("set Vase:FILTER=state!=an %)}

Habe den Author des WeekdayTimer befragt und er kennt diese Syntax garnicht.

Also das hier geht:


define test WeekdayTimer Vase 67|14:34|an { fhem("set Vase %)}


aber mit diesem Code:


define test WeekdayTimer Vase 67|14:34|an { fhem("set Vase:FILTER=state!=an %)}


wird die Vase dennoch eingeschaltet, obwohl sie bereits an ist.

Kannst du mir nen Tipp geben?
FHEM auf QNAP per VM / HM LAN Adapter / diverse HM-Devices
QNAP TVS 463
VU+ Duo4kSE
Sony 75ZD9

Olaf A

Hallo Damian,

danke für das Modul so was habe ich schon lange gesucht.

Ich werde mir das mal ordentlich zu gemüte führen, aber beim ersten Problem hat es schon geholfen.

Gruß Olaf
FHEM auf CubieTruck:
Max mit Cube, HMLAN; MAX-Thermostaten; Homematic-Komponenten, SIS PM Schalter, JeeLink.

Damian

#192
Zitat von: Michi240281 am 16 März 2014, 21:20:43

define test WeekdayTimer Vase 67|14:34|an { fhem("set Vase:FILTER=state!=an %)}


wird die Vase dennoch eingeschaltet, obwohl sie bereits an ist.

Kannst du mir nen Tipp geben?

Versuch mal mit:

define test WeekdayTimer Vase 67|14:34|an {fhem("set Vase:FILTER=STATE!=an %)}

Warum machst du es so umständlich über Perl? Einfacher wäre:

define test WeekdayTimer Vase 67|14:34|an set Vase:FILTER=STATE!=an %

Gruß

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

Damian

Ich habe bei mir gerade Folgendes probiert:

define test WeekdayTimer Drucker 67|14:34|on set Drucker:FILTER=STATE!=on %

Es funktioniert!

Gruß

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

Michi240281

Stimmt!

Hatte es so

define Steckdosen_EG_aus_nachts WeekdayTimer Alle_Steckdosen_EG 12347|23:30|:FILTER=STATE!=aus aus 67|01:00|:FILTER=STATE!=aus aus

probiert, was jedoch nicht funktionierte!

Besten Dank (mal wieder)!!! :)
FHEM auf QNAP per VM / HM LAN Adapter / diverse HM-Devices
QNAP TVS 463
VU+ Duo4kSE
Sony 75ZD9