RandomTimer - neues Modul

Begonnen von Dietmar63, 28 Juli 2013, 15:52:40

Vorheriges Thema - Nächstes Thema

svenson6

'n Abend!

Aus der Referenz, Beispiel für disableCond:

attr   ZufallsTimerZ         disableCond      (Value("presenceDummy") ne "present"))

Ist da nicht eine schließende Klammer zu viel?

Viel Gruß!

Dietmar63

Zitat
Heisst es er schaut wie der Zustand des angesprochenen Aktors ist? und schaltet nur off, wenn der auch auf on steht?
Ja
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

vic

Hallo zusammen

Entschuldigt meine banale Frage aber ich bin seit 1 1/2 Tagen am versuchen, komme nicht weiter und bin langsam am verzweifeln.

Ich würde gerne mittels RandomTimer einen Aktor (UP_Schalter_18) steuern. Zuvor jedoch sollte abgefragt werden ob eine Lampe an ist oder aus. Dies erhalte ich mittels Sensor (Schalterinterface_11).
Der Grund ist dass ich eine Kreuzschaltung ansteuere bei der nicht unbedingt on Licht an bedeutet.

Funktionieren tut das ganze allerdings nur wenn Aktor und Sensor gleich geschaltet sind (Aktor --> on, Sensor --> on). Ich vermute dass ich irgendwie bei den if-Abfragen ein durcheinander habe.

Anbei die Definitionen (Versuchsschaltung daher die 30 Sekunden Wechsel):


define ZufallsTimer_06 RandomTimer *09:00:00 UP_Schalter_18 01:37 30

attr ZufallsTimer_06 disableCond (Value("var_Verreist") ne "on")
attr ZufallsTimer_06 switchmode 999/999

attr ZufallsTimer_06 offCmd  {if (Value("Schalterinterface_11") eq "on"  ) {if(Value("UP_Schalter_18") eq "off" ) {fhem("set UP_Schalter_18 on" )} else {fhem("set UP_Schalter_18 off" )} } }

attr ZufallsTimer_06 onCmd   {if (Value("Schalterinterface_11") eq "off" ) {if(Value("UP_Schalter_18") eq "off" ) {fhem("set UP_Schalter_18 on" )} else {fhem("set UP_Schalter_18 off" )} } }



Vielen Dank für eure Unterstützung

Raspberry Pi 4
RFXTRX 868MHz und 433MHz
FS20, Intertechno, Homematic, Shelly
MAX!-Cube, Philips HUE-Bridge

vic

Guten Tag zusammen

Der Leitsatz "Zuwarten ... es wird schon irgendwann klappen" hat funktioniert.
Habe den Fehler gefunden:

In der Definition ist anstatt UP_Schalter_18 der Sensor Schalterinterface_11 zu setzen.
Nun klappt es einwandfrei.
Anbei der funktionierende Code für die interessierte:


define ZufallsTimer_06 RandomTimer *01:00:00 Schalterinterface_11 01:37:00 30
  attr ZufallsTimer_06 disableCond (Value("var_Verreist") ne "on")
  attr ZufallsTimer_06 switchmode 999/999

  attr ZufallsTimer_06 offCmd  {if (Value("Schalterinterface_11") eq "on"  ) {if(Value("UP_Schalter_18") eq "off" ) {fhem("set UP_Schalter_18 on" )} else {fhem("set UP_Schalter_18 off" )} } }
  attr ZufallsTimer_06 onCmd   {if (Value("Schalterinterface_11") eq "off" ) {if(Value("UP_Schalter_18") eq "off" ) {fhem("set UP_Schalter_18 on" )} else {fhem("set UP_Schalter_18 off" )} } }


Grüsse
Raspberry Pi 4
RFXTRX 868MHz und 433MHz
FS20, Intertechno, Homematic, Shelly
MAX!-Cube, Philips HUE-Bridge

LeoSum

Wenn ich dieses Modul richtig verstehe, kann ich hiermit nur Geräte schalten, die auf on/off reagieren, oder?
Ist es wohl auch möglich hiermit eine Lightscene zu schalten?

Ich müsste  zu einer zufälligen Zeit abends einmal
set Beleuchtung scene TVsimulation
und ein paar stunden später dann
set Beleuchtung scene Standby
ausführen.

hat jemand eine Idee wie ich das hiermit umsetzen könnte?

vic

#365
Hallo LeoSum

Versuche mal diese Testschaltung.


# ****************** Testschaltungen ******************
define var_Alarmlampe_01 dummy
  attr var_Alarmlampe_01 room AlarmStatus
  attr var_Alarmlampe_01 webCmd on:off
  attr var_Alarmlampe_01 group Testschaltung


define var_Alarmlampe_02 dummy
  attr var_Alarmlampe_02 room AlarmStatus
  attr var_Alarmlampe_02 webCmd on:off
  attr var_Alarmlampe_02 group Testschaltung

# ------------------ Szene Treppenaufgang ------------------
define ZufallsTimer_xx RandomTimer *05:00:00 var_Alarmlampe_01 01:00:00 10
  attr ZufallsTimer_xx switchmode 800/900
#  onCmd --> Befehl, der als Einschaltbefehl verwendet werden soll
  attr ZufallsTimer_xx onCmd  {fhem("set var_Alarmlampe_01 on;; \
  define delay_xx.1 at +00:00:03 set var_Alarmlampe_02 on")}
#  offCmd --> Befehl, der als Ausschaltbefehl verwendet werden soll
  attr ZufallsTimer_xx offCmd  {fhem("set var_Alarmlampe_02 off;; \
  define delay_xx.2 at +00:00:03 set var_Alarmlampe_01 off")}



In den Attributen onCmd und OffCmd solltest du deine Codierung einpacken können.
Raspberry Pi 4
RFXTRX 868MHz und 433MHz
FS20, Intertechno, Homematic, Shelly
MAX!-Cube, Philips HUE-Bridge

Dietmar63

Zitat von: LeoSum am 06 März 2016, 20:15:11
Wenn ich dieses Modul richtig verstehe, kann ich hiermit nur Geräte schalten, die auf on/off reagieren, oder?
Ist es wohl auch möglich hiermit eine Lightscene zu schalten?

Ich müsste  zu einer zufälligen Zeit abends einmal
set Beleuchtung scene TVsimulation
und ein paar stunden später dann
set Beleuchtung scene Standby
ausführen.

hat jemand eine Idee wie ich das hiermit umsetzen könnte?

Dafür ist das Modul nicht konstruiert. Es versucht je nach Einstellung ein- auszuschalten. Dazu muss der state des Geräts zu on/off evaluieren, weil der echte Zustand abgefragt wird.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

LeoSum

Danke für eure Vorschläge, aber ich habe es nun anders gelöst. Mit der Funktion von hier http://carsten.familie-schumann.info/blog/2015/01/fhem-zufaellige-zeit-offsets/ habe ich folgendes in FHEM definiert:

define AbwesenheitssimTV at *{time_random_offset(sunset(0,"18:00","21:00"),600)} { if (Value("Bewohner") eq "gone"||Value("Bewohner") eq "absent") { fhem("set Beleuchtung scene TVsimulation") }}
define AbwesenheitssimTVoff at *{time_random_offset("22:45:00",600)} { if (Value("Bewohner") eq "gone"||Value("Bewohner") eq "absent") { fhem("set Beleuchtung scene Standby") }}

klausw

Hallo Dietmar,

bekomme bei mir im Log:
Smartmatch is experimental at ./FHEM/98_RandomTimer.pm line 262, <$fh> line 1205.

das würde dafür Abhilfe schaffen:
no if $] >= 5.017011, warnings => 'experimental::smartmatch';

Grüße
Klaus
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Dietmar63

Ich verstehe nicht was du mir damit sagen willst.
Bin eh im Moment im Urlaub und kann nichts machen.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

klausw

ist ja auch nicht dringend, die Funktion ist nicht beeinträchtigt
Die Smartmatch Funktion, die im Modul verwendet wird, verursacht bei neueren Perl Versionen eine Warnung im Log.
Ich bin da sicher nicht der Einzige. Bei mit kommt die Meldung auf dem Pi seit der Aktualisierung auf Debian Jessie.
Die Zeile, die ich dir geschickt habe würde die Warnung unterdrücken.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Dietmar63

Ok, kümmere mich nach meinem Urlaub
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

habe ich eingebaut, gebe ich in bald frei.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

klausw

RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Dietmar63

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm