Neues Modul - THRESHOLD

Begonnen von Damian, 25 Januar 2013, 22:51:43

Vorheriges Thema - Nächstes Thema

Stefan Scholz

#315
Hallo,

nun will ich euch auch mal wieder um Hilfe bitten.

Mein HM-TC-IT-WM-W-EU ist mit zwei HM-CC-RT-DN gepeert. Nun möchte ich aber gleichzeitig mit dem Wandthermostat einen Aktor (Verdichter Wärmepumpe) schalten.
Da die Heizungsregelung bereits Tages- und Uhrzeitabhängig läuft, soll gleichzeitig zu dieser Regelung auch der Verdichter geschaltet werden (also soll ist-Regelung).

Dafür versuche ich das THRESHOLD Modul zu nutzen, was mir aber irgendwie nicht gelingt.

Definiert in der fhem.cfg ist es so
define EG_Wohn_WGT_Heiz THRESHOLD Wandthermostat_EG_Wohnzimmer_Weather:\
measured-temp:1:Wandthermostat_EG_Wohnzimmer_Climate:desired-temp WGT_heiz
attr EG_Wohn_WGT_Heiz number_format %.1f
attr EG_Wohn_WGT_Heiz room Heizungen
attr EG_Wohn_WGT_Heiz state_cmd1_gt off
attr EG_Wohn_WGT_Heiz state_cmd2_lt on
attr EG_Wohn_WGT_Heiz state_format _m _dv _sc


so erscheint THRESHOLD in der Weboberfläche
DEF
Wandthermostat_EG_Wohnzimmer_Weather:
measured-temp:1:Wandthermostat_EG_Wohnzimmer_Climate:desired-temp WGT_heiz
NAME
EG_Wohn_WGT_Heiz
NR
623
NTFY_ORDER
50-EG_Wohn_WGT_Heiz
STATE
initialized
TYPE
THRESHOLD
cmd1_gt
set WGT_heiz off
cmd2_lt
set WGT_heiz on
cmd_default
2
hysteresis
1
offset
0
sensor
Wandthermostat_EG_Wohnzimmer_Weather
sensor_reading
measured-temp
target_reading
desired-temp
target_sensor
Wandthermostat_EG_Wohnzimmer_Climate
Readings
cmd
wait for next cmd
2015-01-22 07:54:02
mode
external
2015-01-22 07:54:02


nun erhalte ich im Log folgende Meldung, und das alle par Minuten
2015.01.22 10:24:05 2: EG_Wohn_WGT_Heiz: no reading yet for Wandthermostat_EG_Wohnzimmer_Weather
measured-temp
2015.01.22 10:24:15 2: EG_Wohn_WGT_Heiz: no reading yet for Wandthermostat_EG_Wohnzimmer_Weather
measured-temp
2015.01.22 10:27:06 2: EG_Wohn_WGT_Heiz: no reading yet for Wandthermostat_EG_Wohnzimmer_Weather
measured-temp


Ich glaube, dass ich sicher einen totalen Denkfehler hier habe. Daher würde ich euch bitten mir da mal "Licht ins Dunkel" zu bringen.

Danke vorab.

Gruß Stefan

Edit: Erklärung vergessen.  WGT_heiz ist der zu schaltende Kanal eines HM-LC-SW4-BA-PCB

Damian

Zitat von: Stefan 69 am 22 Januar 2015, 10:31:38

2015-01-22 07:54:02[/code]

nun erhalte ich im Log folgende Meldung, und das alle par Minuten
2015.01.22 10:24:05 2: EG_Wohn_WGT_Heiz: no reading yet for Wandthermostat_EG_Wohnzimmer_Weather
measured-temp
2015.01.22 10:24:15 2: EG_Wohn_WGT_Heiz: no reading yet for Wandthermostat_EG_Wohnzimmer_Weather
measured-temp
2015.01.22 10:27:06 2: EG_Wohn_WGT_Heiz: no reading yet for Wandthermostat_EG_Wohnzimmer_Weather
measured-temp



Die Meldung ist eindeutig und besagt, dass es kein Reading namens "measured-temp" vom Device "Wandthermostat_EG_Wohnzimmer_Weather" gibt.

Gruß

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

Stefan Scholz

Zitat
Die Meldung ist eindeutig und besagt, dass es kein Reading namens "measured-temp" vom Device "Wandthermostat_EG_Wohnzimmer_Weather" gibt.

Danke für den Hinweis. Leider hab ich momentan nicht den Plan wie ich es ändern könnte, daher auch mein Hilfegesuch hier im Forum.
Habe leider keine Beispiele für meine Konstellation gefunden. Muss ich jetzt noch zusätzlich den Channel mit angeben?

Gruß
Stefan



Damian

Zitat von: Stefan 69 am 22 Januar 2015, 18:32:26
Danke für den Hinweis. Leider hab ich momentan nicht den Plan wie ich es ändern könnte, daher auch mein Hilfegesuch hier im Forum.
Habe leider keine Beispiele für meine Konstellation gefunden. Muss ich jetzt noch zusätzlich den Channel mit angeben?

Gruß
Stefan
Dann poste hier die Ausgabe von list <dein_Wandthermostat>

Gruß

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

Stefan Scholz

Hallo Damian,

jetzt weis ich auch endlich wie Ihr immer zu diesem List kommt. Es ist einfach alles immer zu viel für "normale" Anwender. ;)

Internals:
   DEF        270FF1
   HMLAN1_MSGCNT 4
   HMLAN1_RAWMSG E270FF1,0000,028678FB,FF,FFC2,838410270FF10000000BB8E40E60
   HMLAN1_RSSI -62
   HMLAN1_TIME 2015-01-22 20:16:31
   IODev      HMLAN1
   LASTInputDev HMLAN1
   MSGCNT     4
   NAME       Wandthermostat_EG_Wohnzimmer
   NR         523
   STATE      CMDs_done
   TYPE       CUL_HM
   channel_01 Wandthermostat_EG_Wohnzimmer_Weather
   channel_02 Wandthermostat_EG_Wohnzimmer_Climate
   channel_03 Wandthermostat_EG_Wohnzimmer_WindowRec
   channel_06 Wandthermostat_EG_Wohnzimmer_remote
   channel_07 Wandthermostat_EG_Wohnzimmer_SwitchTr
   lastMsg    No:F5 - t:70 s:270FF1 d:000000 00E432
   protLastRcv 2015-01-22 20:18:55
   rssi_at_HMLAN1 avg:-59.28 min:-63 max:-56 lst:-61 cnt:25
   Readings:
     2015-01-22 19:52:26   Activity        alive
     2015-01-20 21:00:58   CommandAccepted yes
     2015-01-07 18:16:31   D-firmware      1.0
     2015-01-07 18:16:31   D-serialNr      LEQ0080401
     2014-11-16 18:13:05   PairedTo        0xCC682C
     2014-11-16 18:13:05   R-btnLock       off
     2014-11-16 18:13:05   R-burstRx       on
     2014-11-16 18:13:05   R-cyclicInfoMsg on
     2014-11-16 18:13:05   R-cyclicInfoMsgDis 0
     2014-11-16 18:13:05   R-globalBtnLock off
     2014-11-16 18:13:05   R-localResDis   off
     2014-11-16 15:41:45   R-lowBatLimitRT 2.2 V
     2014-11-16 18:13:05   R-modusBtnLock  off
     2014-11-16 18:13:05   R-pairCentral   0xCC682C
     2014-11-16 18:13:05   RegL_00:        01:01 02:01 09:01 0A:CC 0B:68 0C:2C 0F:00 11:00  12:16 16:00 18:00 19:00 1A:00 00:00
     2014-11-17 07:26:26   RegL_07:        0
     2015-01-22 20:16:31   batteryLevel    2.9
     2015-01-22 20:16:31   desired-temp    23.0
     2015-01-22 20:16:31   measured-temp   22.8
     2015-01-22 18:50:00   state           CMDs_done
     2015-01-22 00:36:58   time-request    -
   Helper:
     mId        00AD
     rxType     6
     Io:
       newChn     +270FF1,00,01,00
       nextSend   1421954335.84706
       prefIO
       rxt        0
       vccu
       p:
         270FF1
         00
         01
         00
     Mrssi:
       mNo        F5
       Io:
         HMLAN1     -59
     Prt:
       bErr       0
       sProc      0
     Q:
       qReqConf
       qReqStat
     Role:
       dev        1
     Rssi:
       At_hmlan1:
         avg        -59.28
         cnt        25
         lst        -61
         max        -56
         min        -63
     Shregw:
       07         02
Attributes:
   IODev      HMLAN1
   actCycle   000:10
   actStatus  alive
   autoReadReg 4_reqStatus
   expert     2_full
   firmware   1.0
   model      HM-TC-IT-WM-W-EU
   msgRepeat  1
   room       Heizungen
   serialNr   LEQ0080401
   subType    thermostat
   webCmd     getConfig


Gruß
Stefan

Damian

Zitat von: Stefan 69 am 22 Januar 2015, 20:23:40
Hallo Damian,

jetzt weis ich auch endlich wie Ihr immer zu diesem List kommt. Es ist einfach alles immer zu viel für "normale" Anwender. ;)

Internals:
   DEF        270FF1
   HMLAN1_MSGCNT 4
   HMLAN1_RAWMSG E270FF1,0000,028678FB,FF,FFC2,838410270FF10000000BB8E40E60
   HMLAN1_RSSI -62
   HMLAN1_TIME 2015-01-22 20:16:31
   IODev      HMLAN1
   LASTInputDev HMLAN1
   MSGCNT     4
   NAME       Wandthermostat_EG_Wohnzimmer
   NR         523
   STATE      CMDs_done
   TYPE       CUL_HM
   channel_01 Wandthermostat_EG_Wohnzimmer_Weather
   channel_02 Wandthermostat_EG_Wohnzimmer_Climate
   channel_03 Wandthermostat_EG_Wohnzimmer_WindowRec
   channel_06 Wandthermostat_EG_Wohnzimmer_remote
   channel_07 Wandthermostat_EG_Wohnzimmer_SwitchTr
   lastMsg    No:F5 - t:70 s:270FF1 d:000000 00E432
   protLastRcv 2015-01-22 20:18:55
   rssi_at_HMLAN1 avg:-59.28 min:-63 max:-56 lst:-61 cnt:25
   Readings:
     2015-01-22 19:52:26   Activity        alive
     2015-01-20 21:00:58   CommandAccepted yes
     2015-01-07 18:16:31   D-firmware      1.0
     2015-01-07 18:16:31   D-serialNr      LEQ0080401
     2014-11-16 18:13:05   PairedTo        0xCC682C
     2014-11-16 18:13:05   R-btnLock       off
     2014-11-16 18:13:05   R-burstRx       on
     2014-11-16 18:13:05   R-cyclicInfoMsg on
     2014-11-16 18:13:05   R-cyclicInfoMsgDis 0
     2014-11-16 18:13:05   R-globalBtnLock off
     2014-11-16 18:13:05   R-localResDis   off
     2014-11-16 15:41:45   R-lowBatLimitRT 2.2 V
     2014-11-16 18:13:05   R-modusBtnLock  off
     2014-11-16 18:13:05   R-pairCentral   0xCC682C
     2014-11-16 18:13:05   RegL_00:        01:01 02:01 09:01 0A:CC 0B:68 0C:2C 0F:00 11:00  12:16 16:00 18:00 19:00 1A:00 00:00
     2014-11-17 07:26:26   RegL_07:        0
     2015-01-22 20:16:31   batteryLevel    2.9
     2015-01-22 20:16:31   desired-temp    23.0
     2015-01-22 20:16:31   measured-temp   22.8
     2015-01-22 18:50:00   state           CMDs_done
     2015-01-22 00:36:58   time-request    -
   Helper:
     mId        00AD
     rxType     6
     Io:
       newChn     +270FF1,00,01,00
       nextSend   1421954335.84706
       prefIO
       rxt        0
       vccu
       p:
         270FF1
         00
         01
         00
     Mrssi:
       mNo        F5
       Io:
         HMLAN1     -59
     Prt:
       bErr       0
       sProc      0
     Q:
       qReqConf
       qReqStat
     Role:
       dev        1
     Rssi:
       At_hmlan1:
         avg        -59.28
         cnt        25
         lst        -61
         max        -56
         min        -63
     Shregw:
       07         02
Attributes:
   IODev      HMLAN1
   actCycle   000:10
   actStatus  alive
   autoReadReg 4_reqStatus
   expert     2_full
   firmware   1.0
   model      HM-TC-IT-WM-W-EU
   msgRepeat  1
   room       Heizungen
   serialNr   LEQ0080401
   subType    thermostat
   webCmd     getConfig


Gruß
Stefan

Dein Device heißt :

NAME       Wandthermostat_EG_Wohnzimmer

und dein Reading:

     2015-01-22 20:16:31   measured-temp   22.8

also einfach angeben:

define EG_Wohn_WGT_Heiz THRESHOLD Wandthermostat_EG_Wohnzimmer:measured-temp:1:Wandthermostat_EG_Wohnzimmer:desired-temp WGT_heiz


Gruß

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

Stefan Scholz

Hallo Damian,

so hatte ich es auch erst, aber es ging nicht.

Habe jetzt deinen Code kopiert und schwupps geht es.  Scheinbar hatte ich doch irgendwo eine Kleinigkeit übersehen.

Jedenfalls VIELEN DANK!

Werde mich morgen mal noch an einer Erweiterung versuchen, da nur geschaltet werden darf, wenn die Wärmepumpe  überhaupt an ist. Anderenfalls würde das Relais ständig unnütz schalten.

Wenn ich nicht klar komme, würde ich nochmal nerven.

Gruß
Stefan

Damian

Zitat von: Stefan 69 am 22 Januar 2015, 21:04:48
Hallo Damian,

so hatte ich es auch erst, aber es ging nicht.


Das wird dir immer passieren nach dem Neustart, wenn du in der cfg-Datei THRESHOLD vor deinem Wandthermostat definiert hast.

Gruß

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

Stefan Scholz

Zitat von: Damian am 22 Januar 2015, 21:30:37
Das wird dir immer passieren nach dem Neustart, wenn du in der cfg-Datei THRESHOLD vor deinem Wandthermostat definiert hast.

Gruß

Damian

Hallo Damian,

sowas hatte ich hier ja auch schon gelesen, war mir aber nicht richtig klar geworden. Nun kann ich damit auch was anfangen ;)

Hab aber doch noch eine frage:
Habe heute mehrmals den Hysterese Wert geändert (die 1 Grad sind mir zu viel). Trotz Save config wird der Wert nach einem shutdown restart nicht gespeichert, dann steht er wieder auf 1.
Solange kein Neustart gemacht wird, bleibt der Wert jedoch erhalten. hatte 0.2 Grad eingestellt.

Gruß
Stefan

Damian

Zitat von: Stefan 69 am 23 Januar 2015, 18:56:09
Hallo Damian,

sowas hatte ich hier ja auch schon gelesen, war mir aber nicht richtig klar geworden. Nun kann ich damit auch was anfangen ;)

Hab aber doch noch eine frage:
Habe heute mehrmals den Hysterese Wert geändert (die 1 Grad sind mir zu viel). Trotz Save config wird der Wert nach einem shutdown restart nicht gespeichert, dann steht er wieder auf 1.
Solange kein Neustart gemacht wird, bleibt der Wert jedoch erhalten. hatte 0.2 Grad eingestellt.

Gruß
Stefan

Wenn du THRESHOLD per Weboberfläche definierst und nicht in der cfg-Datei manuell einträgst, dann kannst du nicht viel falsch machen, da dann das Modul hinten angehängt wird.

Hysterese gibst du doch in der Definition an, hier für 0,5 Grad:

define EG_Wohn_WGT_Heiz THRESHOLD Wandthermostat_EG_Wohnzimmer:measured-temp:0.5:Wandthermostat_EG_Wohnzimmer:desired-temp WGT_heiz

Gruß

Damian

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

Stefan Scholz

Hallo Damian,

das ist es was ich meine. Irgendwie übersehe ich immer irgend was.
Nun ist mir auch klar, wofür die 1 in dem Code steht. Sorry wegen dieser blöden Frage.

Es ist halt manchmal alles zu viel, aber dafür gibt es ja zum Glück meist netten Support  :D

DANKE Gruß Stefan

Stefan Scholz

Ich schon wieder, Hallo!

Also bis her hat das ja super funktioniert. Wie aber schon mal angekündigt, möchte ich jedoch nur schalten, wenn diese Wärmepumpe überhaupt an ist.
Die gefundenen Beispiele sind soweit mit der OR Verknüpfung, das steht doch vor "oder"? Da ich jedoch UND brauche, also AND, hab ich den Code mal wie folgt abgeändert:

Dieses WGT_Luft ist die eigentliche Wärmepumpe. Also nur wenn WGT_Luft on ist soll THERSHOLD dieses WGT_heiz überhaupt regeln.
define EG_Wohn_WGT_Heiz THRESHOLD Wandthermostat_EG_Wohnzimmer:measured-temp:0.2:Wandthermostat_EG_Wohnzimmer:desired-temp AND WGT_Luft:state:on WGT_heiz


Irgendwie scheint THRESHOLD ja auch den State zu erkennen, aber schalten will er nicht mehr.

DEF 
Wandthermostat_EG_Wohnzimmer:measured-temp:0.2:Wandthermostat_EG_Wohnzimmer:desired-temp AND WGT_Luft:state:on WGT_heiz

NAME                    EG_Wohn_WGT_Heiz

NR                        619

NTFY_ORDER         50-EG_Wohn_WGT_Heiz


STATE                   external 22.0 on


TYPE                     THRESHOLD

cmd1_gt               set WGT_heiz off

cmd2_lt                set WGT_heiz on

cmd_default          2

hysteresis             0.2

offset                   0

Operator              AND

sensor                 Wandthermostat_EG_Wohnzimmer

sensor2               WGT_Luft

sensor2_reading  state

sensor2_state      on

sensor_reading    measured-temp

target_reading     desired-temp

target_sensor      Wandthermostat_EG_Wohnzimmer



Hatte es auch mal mit einer if-Bedingung versucht, aber das ging total schief.

Würde mich da bitte nochmal jemand mit dem Zaunpfahl auf den richtigen Weg bringen?

Gruß Stefan

Damian

Zitat von: Stefan 69 am 25 Januar 2015, 13:01:23
Ich schon wieder, Hallo!

Also bis her hat das ja super funktioniert. Wie aber schon mal angekündigt, möchte ich jedoch nur schalten, wenn diese Wärmepumpe überhaupt an ist.
Die gefundenen Beispiele sind soweit mit der OR Verknüpfung, das steht doch vor "oder"? Da ich jedoch UND brauche, also AND, hab ich den Code mal wie folgt abgeändert:

Dieses WGT_Luft ist die eigentliche Wärmepumpe. Also nur wenn WGT_Luft on ist soll THERSHOLD dieses WGT_heiz überhaupt regeln.
define EG_Wohn_WGT_Heiz THRESHOLD Wandthermostat_EG_Wohnzimmer:measured-temp:0.2:Wandthermostat_EG_Wohnzimmer:desired-temp AND WGT_Luft:state:on WGT_heiz


Irgendwie scheint THRESHOLD ja auch den State zu erkennen, aber schalten will er nicht mehr.

Hatte es auch mal mit einer if-Bedingung versucht, aber das ging total schief.

Die Möglichkeiten Bedingungen bei THRESHOLD anzugeben sind recht beschränkt. Gemeint ist dabei immer, dass wenn die verknüpfte Bedingung wahr ist, das Kommando cmd_gt ausgelöst wird.

Konkret bei dir bedeutet das: wenn measured-temp>desired-temp und wgt_luft:state=on dann cmd1_gt also Heizung off.

Umgekehrt bedeutet das für das Einschalten der Heizung:

measured-temp<(desired-temp - hysterese) or wgt_luft:state!=on dann cmd2_lt also Heizung on

Gruß

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

Stefan Scholz

#328
Hallo Damian,

danke für den Support.

habe den Code jetzt so geändert:
Wandthermostat_EG_Wohnzimmer:measured-temp:0.1:Wandthermostat_EG_Wohnzimmer:desired-temp OR WGT_Luft:state!=on WGT_heiz

Es schaltet jedoch nix. weder mit diesem WGT_Luft noch ohne. Das Ausrufezeichen negiert doch den Wert, muss das evtl. weg?

gruß
Stefan

Damian

#329
Zitat von: Stefan 69 am 25 Januar 2015, 18:56:39
Hallo Damian,

danke für den Support.

habe den Code jetzt so geändert:
Wandthermostat_EG_Wohnzimmer:measured-temp:0.1:Wandthermostat_EG_Wohnzimmer:desired-temp OR WGT_Luft:state!=on WGT_heiz

Es schaltet jedoch nix. weder mit diesem WGT_Luft noch ohne. Das Ausrufezeichen negiert doch den Wert, muss das evtl. weg?

gruß
Stefan

!= war nur als Ungleichheit symbolisch gemeint.

Bei THRESHOLD kannst du nur auf "gleich" abfragen, dann eher so:

Wandthermostat_EG_Wohnzimmer:measured-temp:0.1:Wandthermostat_EG_Wohnzimmer:desired-temp OR WGT_Luft:state:off WGT_heiz

Gruß

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