Hauptmenü

neues Modul DOIF

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

Vorheriges Thema - Nächstes Thema

Rohan

Hi,

desired_temp

Schreibfehler oder steht das wirklich so in deinem DOIF (ich meine den Unterstrich "_")?

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

flurin

Hallo Brockmann

Zitat von: Brockmann am 11 Februar 2015, 07:23:40
Und was Wartbarkeit angeht: Zwei DOIFs, die parallel auf dieselbe Bedingung triggern, finde ich auch nicht übersichtlicher, aber das ist sicher eine Geschmacksfrage.

Wenn selbst Damian zwei DOIF's vorschlägt, dann gehe ich davon aus, dass er einen solchen Fall nicht vorgesehen hat.
Es gibt aber oft mehrere Lösungen für ein Problem; z.B. mit einem DOIF und einem Script.

Man könnte auch die Aufgabe anders formulieren, nämlich:

Wenn Bedingung erfüllt und Timer1 abgelaufen, dann Befehl1 ausführen.
und
Wenn Bedingung erfüllt und Timer2 abgelaufen, dann Befehl2 ausführen.

Gruss
flurin


leuchte1

Zitat von: Rohan am 11 Februar 2015, 09:39:45
Hi,

desired_temp

Schreibfehler oder steht das wirklich so in deinem DOIF (ich meine den Unterstrich "_")?

Gruß
Thomas


Hallo Thomas,

Schreibfehler, steht schon desired-temp drin, hab´s zu spät bemerkt und schon ausgebessert.

Gruß
Stefan

Brockmann

Zitat von: leuchte1 am 11 Februar 2015, 09:19:27
Der HM-CC-RT-DN läuft nicht im Burstmode, d.h. er frägt nur alle 2-3 min. ab und da ist Bedingung Uhrzeit u.U. längst passé. Den Burstmode will ich zu Gunsten der Batterielebensdauer vermeiden.
Mit dem DOIF setzt Du das FHEM-Device auf die gewünschte Temperatur. Dass diese Information an das Gerät selbst übermittelt wird, darum kümmert sich FHEM bzw. das entsprechende HM...-Modul. Das hat mit dem DOIF nichts zu tun.
Wenn Du die Temperatur von Hand im Web-Frontend verstellst, musst Du ja schließlich auch nicht den Moment abpassen, wo der Thermostat gerade empfangsbereit ist, sondern Du klickst einfach und FHEM kümmert sich um den Rest.

flurin

Zitat von: RoBra81 am 10 Februar 2015, 14:55:45
Wenn Bedingung erfüllt, dann schalte nach 5 Minuten das Licht aus und setzt Wert eines Dummys nach 15 Minuten auf x.
Wenn Bedingung innerhalb der ersten 5 Minuten nicht mehr erfüllt, dann mache nix.
Wenn Bedingung zwischen Minute 5 und 15 nicht mehr erfüllt, dann wurde das Licht ausgeschaltet aber Aktion nicht ausgeführt.


Gibt es hierfür eine Lösung mit einem DOIF oder muss ich mit mehreren DOIFs und Dummys arbeiten?

Just for fun -> eine Lösung mit einem DOIF:

define di_flex_lamp DOIF ([test_switch] eq "on") \
(define timer1 at +00:05 \
{ if (Value("test_switch") eq "on") { fhem("set flex_lamp on") } },\
define timer2 at +00:15 \
{ if (Value("test_switch") eq "on") { fhem("set flex_lamp off") } } )


"set flex_lamp on/off" mit beliebigem Befehl ersetzen.

Aber ich bleibe dabei, die Lösung mit zwei DOIF's gefällt mir besser.

Gruss
flurin

leuchte1

Zitat von: Brockmann am 11 Februar 2015, 13:47:39
Mit dem DOIF setzt Du das FHEM-Device auf die gewünschte Temperatur. Dass diese Information an das Gerät selbst übermittelt wird, darum kümmert sich FHEM bzw. das entsprechende HM...-Modul. Das hat mit dem DOIF nichts zu tun.
Wenn Du die Temperatur von Hand im Web-Frontend verstellst, musst Du ja schließlich auch nicht den Moment abpassen, wo der Thermostat gerade empfangsbereit ist, sondern Du klickst einfach und FHEM kümmert sich um den Rest.
War ich eigentlich auch der Meinung, hat ja beim bisherigen at-Befehl auch funktioniert. Aber nach einer Woche testen (lediglich einmal hat er geschalten) blieb mir nur die Vermutung, dass es mit dem Burstmode zusammenhängt.
Wenn ich nämlich mit dem gleichen DOIF eine Lampe anschalte, klappt das ohne Probleme.
Ich bin momentan ziemlich ratlos und der WAF tendiert gegen Null. :-\
Gruss Stefan

automatisierer

Zitat von: leuchte1 am 11 Februar 2015, 09:19:27
Hallo zusammen,
ich steh gerade auf dem Schlauch. Bin am umstellen auf DOIF und will meine Heizkörper (HM-CC-RT-DN) zu einer bestimmten Uhrzeit zzgl. div. Bedingungen zu schalten.

define Heizung_Bad_an DOIF ([06:25] and !$we and ...........) (set Heizkoerper_Bad desired-temp 22)

Der HM-CC-RT-DN läuft nicht im Burstmode, d.h. er frägt nur alle 2-3 min. ab und da ist Bedingung Uhrzeit u.U. längst passé. Den Burstmode will ich zu Gunsten der Batterielebensdauer vermeiden.

Bin für jede Hilfe dankbar.

Gruß
Stefan

dann schick doch mal ein list dev.

Rohan

Hi,

hmmm ... der Befehl muss doch auf den Clima-Channel losgejagt werden ...

set Heizkoerper_Bad_Clima desired-temp 22

Funktioniert denn dein "set ..." Befehl in der Fhem-Eingabezeile?

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

leuchte1

Hallo,
set-Befehl in der FHEM-Eingabezeile wird problemlos angenommen???

Gruss
Stefan

Rohan

Hmmm....

warum 3 Fragezeichen?

Imho müsste das auf den Channel "_Clima" gehen, habe aber noch so etwas in Erinnerung, dass der Wert auch eine Nachkommastelle haben muss/sollte (.0 oder .5), also

set Heizkoerper_Bad_Clima desired-temp 22.0

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

leuchte1

HALT,

bei der Eingabe über die FHEM-Eingabezeile hab ich anfänglich den State: set desired-temp 10

ABER nach ca. 2 min. stand er wieder auf State: desired off

Erst nach einer erneuten Eingabe über FHEM-Eingabezeile wurde nach ca. 2 min. auf desired-temp 10 umgeschalten ??? ???

Gruss
Stefan

leuchte1

hier noch das listing:

Internals:
   CHANGED
   DEF        2403D904
   NAME       Bad_Heizkoerper_Thermostat
   NR         358
   STATE      T: 12.0 desired: off valve: 0
   TYPE       CUL_HM
   chanNo     04
   device     Bad_Heizkoerper
   Readings:
     2015-02-11 16:10:05   CommandAccepted yes
     2014-12-13 16:14:48   H               0
     2014-12-13 16:07:42   R-boostPeriod   5 min
     2014-12-13 16:07:42   R-boostPos      80 %
     2014-12-13 16:07:42   R-btnNoBckLight off
     2014-12-13 16:07:42   R-dayTemp       21 C
     2014-12-13 16:07:42   R-daylightSaveTime on
     2014-12-13 16:07:42   R-decalcTime    11:00
     2014-12-13 16:07:42   R-decalcWeekday Sat
     2014-12-13 16:07:42   R-modePrioManu  all
     2014-12-13 16:07:42   R-modePrioParty all
     2014-12-13 16:07:42   R-nightTemp     17 C
     2014-12-13 16:07:42   R-noMinMax4Manu off
     2014-12-13 16:07:42   R-regAdaptive   on
     2014-12-13 16:07:42   R-reguExtI      15
     2014-12-13 16:07:42   R-reguExtP      30
     2014-12-13 16:07:42   R-reguExtPstart 30
     2015-01-10 18:32:19   R-reguIntI      15
     2015-01-10 18:32:19   R-reguIntP      30
     2015-01-10 18:32:19   R-reguIntPstart 30
     2014-12-13 16:07:42   R-showInfo      time
     2014-12-13 16:07:42   R-showWeekday   off
     2014-12-13 16:07:37   R-sign          off
     2014-12-13 16:07:42   R-tempMax       30.5 C
     2014-12-13 16:07:42   R-tempMin       4.5 C
     2014-12-13 16:07:42   R-tempOffset    0.0K
     2014-12-13 16:07:42   R-valveErrPos   15 %
     2014-12-13 16:07:42   R-valveMaxPos   100 %
     2014-12-13 16:07:42   R-valveOffsetRt 0 %
     2014-12-13 16:07:42   R-winOpnBoost   off
     2014-12-13 16:07:42   R-winOpnDetFall 1.4 K
     2014-12-13 16:07:42   R-winOpnMode    on
     2014-12-13 16:07:42   R-winOpnPeriod  15 min
     2014-12-13 16:07:42   R-winOpnTemp    12 C
     2015-01-10 18:32:19   R_0_tempListSat 06:00 17.0 22:00 21.0 24:00 17.0
     2015-01-10 18:32:19   R_1_tempListSun 06:00 17.0 22:00 21.0 24:00 17.0
     2015-01-10 18:32:19   R_2_tempListMon 06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0
     2015-01-10 18:32:19   R_3_tempListTue 06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0
     2015-01-10 18:32:19   R_4_tempListWed 06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0
     2015-01-10 18:32:19   R_5_tempListThu 06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0
     2015-01-10 18:32:19   R_6_tempListFri 06:00 17.0 09:00 21.0 17:00 17.0 22:00 21.0 24:00 17.0
     2015-01-10 18:32:19   R_tempList_State verified
     2015-01-10 18:32:15   RegL_01:        08:00 00:00
     2015-01-10 18:32:19   RegL_07:        01:2A 02:22 03:09 04:3D 05:18 06:03 07:00 08:16 09:07 0A:30 0B:00 0C:64 0D:0F 0E:05 0F:00 10:00 11:00 12:09 13:8E 14:44 15:48 16:55 17:08 18:45 19:20 1A:45 1B:20 1C:45 1D:20 1E:45 1F:20 20:45 21:20 22:45 23:20 24:45 25:20 26:45 27:20 28:45 29:20 2A:45 2B:20 2C:45 2D:20 2E:44 2F:48 30:55 31:08 32:45 33:20 34:45 35:20 36:45 37:20 38:45 39:20 3A:45 3B:20 3C:45 3D:20 3E:45 3F:20 40:45 41:20 42:45 43:20 44:45 45:20 46:45 47:20 48:44 49:48 4A:54 4B:6C 4C:44 4D:CC 4E:55 4F:08 50:45 51:20 52:45 53:20 54:45 55:20 56:45 57:20 58:45 59:20 5A:45 5B:20 5C:45 5D:20 5E:45 5F:20 60:45 61:20 62:44 63:48 64:54 65:6C 66:44 67:CC 68:55 69:08 6A:45 6B:20 6C:45 6D:20 6E:45 6F:20 70:45 71:20 72:45 73:20 74:45 75:20 76:45 77:20 78:45 79:20 7A:45 7B:20 7C:44 7D:48 7E:54 7F:6C 80:44 81:CC 82:55 83:08 84:45 85:20 86:45 87:20 88:45 89:20 8A:45 8B:20 8C:45 8D:20 8E:45 8F:20 90:45 91:20 92:45 93:20 94:45 95:20 96:44 97:48 98:54 99:6C 9A:44 9B:CC 9C:55 9D:08 9E:45 9F:20 A0:45 A1:20 A2:45 A3:20 A4:45 A5:20 A6:45 A7:20 A8:45 A9:20 AA:45 AB:20 AC:45 AD:20 AE:45 AF:20 B0:44 B1:48 B2:54 B3:6C B4:44 B5:CC B6:55 B7:08 B8:45 B9:20 BA:45 BB:20 BC:45 BD:20 BE:45 BF:20 C0:45 C1:20 C2:45 C3:20 C4:45 C5:20 C6:45 C7:20 C8:45 C9:20 CA:0F CB:1E CC:1E CD:0F CE:1E CF:1E 00:00
     2014-12-13 18:22:26   T               0
     2015-02-11 18:01:39   ValvePosition   0
     2015-02-11 18:01:39   boostTime       -
     2015-02-11 18:01:39   controlMode     manual
     2015-02-11 18:01:39   desired-temp    off
     2015-02-11 18:01:39   measured-temp   12.0
     2015-02-11 18:01:39   motorErr        ok
     2015-02-11 18:01:39   partyEnd        -
     2015-02-11 18:01:39   partyStart      -
     2015-02-11 18:01:39   partyTemp       -
     2015-02-11 16:10:05   recentStateType ack
     2015-02-11 18:01:39   state           T: 12.0 desired: off valve: 0
   Helper:
     Role:
       chn        1
     Shregr:
       07         00
Attributes:
   event-on-change-reading state
   fm_type    desiredtemp,temp,actuators,tempbutton
   group      Sensoren
   icon       temperature_humidity
   model      HM-CC-RT-DN
   peerIDs    00000000,
   room       Bad

automatisierer

ok, das listing des doif wäre wichtiger...

leuchte1

hier das listing des doif, dzt. auf cmd_2:

Internals:
   DEF        ([05:30:00] and !$we and [Bad_Heizkoerper_morgens_aufheizen] eq "aktiviert" or [Bad_Heizkoerper_morgens_aufheizen] eq "state aktiviert") (set Bad_Heizkoerper_Thermostat desired-temp 23)

   NAME       Test
   NR         789
   NTFY_ORDER 50-Test
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2015-02-11 14:14:50   cmd_event       Bad_Heizkoerper_morgens_aufheizen
     2015-02-11 14:14:50   cmd_nr          2
     2015-02-11 14:14:50   e_Bad_Heizkoerper_morgens_aufheizen_STATE state deaktiviert
     2015-02-11 14:14:50   state           cmd_2
     2015-02-11 05:30:00   timer_1_c1      12.02.2015 05:30:00
   Condition:
     0          DOIF_time_once($hash->{timer}{0},$wday,"") and !$we and InternalDoIf('Bad_Heizkoerper_morgens_aufheizen','STATE','') eq "aktiviert" or InternalDoIf('Bad_Heizkoerper_morgens_aufheizen','STATE','') eq "state aktiviert"
   Days:
   Devices:
     0           Bad_Heizkoerper_morgens_aufheizen
     all         Bad_Heizkoerper_morgens_aufheizen
   Do:
     0          set Bad_Heizkoerper_Thermostat desired-temp 23
   Helper:
     last_timer 1
     sleeptimer -1
   Internals:
     0           Bad_Heizkoerper_morgens_aufheizen:STATE
     all         Bad_Heizkoerper_morgens_aufheizen:STATE
   Readings:
   Realtime:
     0          05:30:00
   State:
   Time:
     0          05:30:00
   Timecond:
     0          0
   Timer:
     0          0
   Timerfunc:
   Timers:
     0           0
   Trigger:
Attributes:
   room       Timer

Rohan

#1364
Nabend,

ich sitze hier so neben meinen RTs und VDs und muss mich wiederholen. In der Web-GUI von Fhem bekomme ich nur im Channel _Climate die Option angeboten, die desired-temp zu ändern und zwar mit Werten mit jeweils einer Nachkommastelle, ergo z.B.

set Heizkoerper_Bad_Clima desired-temp 22.0

Setze ich den Befehl

set Heizkoerper_Bad desired-temp 22.0

ab (also auf das Device und nicht auf den Channel _Clima) erhalte ich:

ZitatUnknown argument desired-temp, choose one of burstXmit clear:readings,trigger,register,rssi,msgEvents,all fwUpdate getConfig getRegRaw inhibit:on,off raw regBulk regSet reset sysTime unpair

Gerade nochmal getestet: Es gehen auch Temperaturwerte ohne Nachkommastelle, aber der Rest bleibt.

Hast du deinen Channel _Clima nach _Thermostat umbenannt? Jo, hast du. Daher also (meine) Verwirrung.

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor