Notify funktioniert nicht

Begonnen von dan1180, 30 April 2014, 23:04:16

Vorheriges Thema - Nächstes Thema

Thorsten Pferdekaemper

Zitat von: dan1180 am 02 Mai 2014, 12:22:08
Außer der Änderung des Aktors habe ich das Attribut pidUpdateInterval auf 150 Sek. gestellt damit es nicht so lange dauert bis er sich seine Werte wieder holt und vergleicht.
Das ist IMHO nur für die Logs. Das was Du meinst ist pidCalcInterval, aber das steht eh auf 60 und da solltest Du es auch lassen, sonst stimmt der I-Faktor auch nicht mehr.
Zitat
Den selben Wert habe ich bei pidActorInterval gesetzt
Das halte ich nicht für so sinnvoll. Das bedeutet nämlich, dass das Teil u.U. alle 2,5 Minuten versucht, an den VD zu senden. Das kann zu Problemen führen. Außerdem ist eine Heizungssteuerung sowieso ziemlich träge. Stell das mal auf 300.
Zitat
Nun stehe ich nur noch vor der Aufgabe mir die desired-temp von meinem Wandthermostat zu holen.
Das machst Du mit einem notify auf den Thermostat, also etwa

define blabla notify WTS_BD_Climate:desired_temp.* {fhem("set PID_HKS_BD desired $EVTPART1")}

Gruß,
Thorsten
FUIP

dan1180

#31
Zu früh gefreut...aber nicht alles ist schlecht:


  • Das Notify zum übergeben der Solltemperatur an das PID funktioniert
  • Das PID holt sich die richtige Isttemperatur, gleicht diese mit der Solltemperatur ab und legt eine actuation fest
  • Spricht das PID direkt den Stellmotor an, geht dieser zwar in den STATE set_valvePos 58.1, bleibt dort aber stehen und tut nix
  • Spricht das PID über einen vTC mit dem Stellmotor passiert gar nichts*
  • In beiden Fällen funktioniert aber ein zurückstellen auf 0, wenn die Ventilposition manuel auf z.B. 50 gestellt wurde und dann die desired-temp unter die measured-temp gestellt wird

*Nachtrag 14:46Uhr
Es ist mittlerweile 3x gelungen, den Stellantrieb über den vTC anzusprechen. Nachdem die Solltemp knapp über die Isttemp (0,3Grad) gestellt wurde, ist der VD auf 22% gefahren. Ein späteres (ca. 15 Min) Erhöhen auf 4Grad Unterschied (Sollposition 100%) wurde wieder ignoriert. Ein darauf folgendes Einstellen auf 0,8Grad Unterschied bewirkte wieder ein Verstellen des Ventils auf 49%. Solltemp unter Isttemp: VD fährt auf 0%, macht also zu. Hat der VD oder der vTC ein Problem mit den 100% ??? Werd mal versuchen mit dem PID-Attribut pidActorLimitUpper auf 99% begrenzen.


Kann es Probleme machen wenn ich den vTC deaktiviere, das peering mit dem VD vorher aber nicht gelöscht habe?

Hier noch ein paar Informationen:

List PID20


Internals:
   DEF        WTS_BD_Climate:measured-temp V_HKS_BD_1:valvePos
   NAME       PID_HKS_BD
   NR         205
   NTFY_ORDER 50-PID_HKS_BD
   STATE      processing
   TYPE       PID20
   Readings:
     2014-05-02 13:43:08   actuation       100.0
     2014-05-02 13:46:08   actuationCalc   172.94
     2014-05-02 13:46:08   delta           3.3
     2014-05-02 13:45:14   desired         24.0
     2014-05-02 13:43:08   measured        20.7
     2014-05-02 13:46:08   p_d             0
     2014-05-02 13:46:08   p_i             7.94
     2014-05-02 13:46:08   p_p             165
     2014-05-02 13:46:08   state           processing
   Helper:
     actor      V_HKS_BD_1
     actorCommand valvePos
     actorErrorAction freeze
     actorErrorPos 0
     actorInterval 300
     actorKeepAlive 1800
     actorLimitLower 0
     actorLimitUpper 100
     actorThreshold 5
     actorTimestamp 2014-05-02 13:33:08
     actorValueDecPlaces 1
     adjust     
     calcInterval 60
     deltaGradient 0
     deltaOld   3.3
     deltaOldTS 2014-05-02 13:45:14
     deltaTreshold 0
     desiredName desired
     disable    0
     factor_D   0
     factor_I   0.2
     factor_P   50
     isWindUP   1
     measuredName measured
     reading    measured-temp
     regexp     ^([\+,\-]?\d+\.?\d*$)
     reverseAction 0
     sensor     WTS_BD_Climate
     sensorTimeout 3600
     stopped    0
     updateInterval 600
Attributes:
   pidActorInterval 300
   pidActorTreshold 5
   pidActorValueDecPlaces 1
   pidFactor_I 0.2
   pidFactor_P 50
   room       Bad


List vTC


Internals:
   DEF        100001
   IODev      HMLAN1
   NAME       V_HKS_BD
   NR         202
   STATE      CMDs_processing...
   TYPE       CUL_HM
   channel_01 V_HKS_BD_1
   protSnd    8 last_at:2014-05-02 13:44:18
   protState  CMDs_processing...
   Readings:
     2014-05-02 13:44:18   state           CMDs_processing...
   cmdStack:
   Helper:
     rxType     1
     Io:
       newChn     +100001,00,01,1E
     Prt:
       bErr       0
       sProc      1
     Q:
       qReqConf   
       qReqStat   
     Role:
       dev        1
       vrt        1
Attributes:
   IODev      HMLAN1
   model      virtual_1
   msgRepeat  0
   peerIDs   
   room       Bad
   subType    virtual
   webCmd     virtual


List vTC-Button


Internals:
   DEF        10000101
   NAME       V_HKS_BD_1
   NR         203
   STATE      ValveAdjust:0 %
   TYPE       CUL_HM
   chanNo     01
   device     V_HKS_BD
   peerList   HKS_BD,
   Readings:
     2014-05-02 13:28:04   peerList        HKS_BD,
     2014-05-02 13:28:08   state           ValveAdjust:0 %
     2014-05-02 13:28:18   valveCtrl       ok
     2014-05-02 13:28:08   valvePosTC      0 %
   Helper:
     fkt        vdCtrl
     virtTC     00
     Role:
       chn        1
       vrt        1
     Vd:
       ackT       2014-05-02 13:46:51
       cmd        A2581000011F914E
       id         1F914E
       idh        0
       idl        256
       miss       0
       msgCnt     9
       msgRed     0
       msgSent    0
       next       1399031348.16309
       nextM      1399031348.16309
       typ        1
       val        00
       vin        0
Attributes:
   model      virtual_1
   peerIDs    1F914E01,
   room       Bad
   webCmd     press short:press long


List Stellantrieb


Internals:
   DEF        1F914E
   HMLAN1_MSGCNT 11
   HMLAN1_RAWMSG E1F914E,0000,1D099F96,FF,FFA5,0982021F914E100001010100005D
   HMLAN1_RSSI -91
   HMLAN1_TIME 2014-05-02 13:46:51
   IODev      HMLAN1
   LASTInputDev HMLAN1
   MSGCNT     11
   NAME       HKS_BD
   NR         200
   STATE      0
   TYPE       CUL_HM
   lastMsg    No:09 - t:02 s:1F914E d:100001 010100005D
   peerList   V_HKS_BD_1,
   protCmdDel 4
   protLastRcv 2014-05-02 13:46:51
   protResnd  3 last_at:2014-05-02 13:41:37
   protResndFail 1 last_at:2014-05-02 13:44:22
   protSnd    4 last_at:2014-05-02 13:44:18
   protState  CMDs_done_Errors:1
   rssi_HMLAN1 avg:-93.55 min:-94 max:-93 lst:-93 cnt:9
   rssi_at_HMLAN1 avg:-91.9 min:-92 max:-91 lst:-91 cnt:11
   Readings:
     2014-05-02 13:28:03   Activity        alive
     2014-05-02 13:46:51   CommandAccepted yes
     2014-05-02 13:19:45   D-firmware      2.0
     2014-05-02 13:19:45   D-serialNr      KEQ0360571
     2014-05-02 13:19:45   PairedTo        0xDD0111
     2014-05-02 13:19:45   R-pairCentral   0xDD0111
     2014-05-02 13:19:46   R-valveErrorPos 15 %
     2014-05-02 13:19:46   R-valveOffset   0 %
     2014-05-02 13:28:08   ValveDesired    0 %
     2014-05-02 13:46:51   ValvePosition   0
     2014-05-02 13:46:51   battery         ok
     2014-05-02 13:46:51   motor           stop
     2014-05-02 13:46:51   motorErr        ok
     2014-05-02 13:46:51   operState       onTarget
     2014-05-02 13:28:03   peerList        V_HKS_BD_1,
     2014-05-02 13:46:51   recentStateType ack
     2014-05-02 13:46:51   state           0
   Helper:
     getCfgListNo
     mId        003A
     oldDes     0
     rxType     12
     Io:
       newChn     +1F914E,00,01,1E
       nextSend   1399031058.83318
     Prt:
       bErr       0
       sProc      0
       Rspwait:
     Q:
       qReqConf   
       qReqStat   
     Role:
       chn        1
       dev        1
     Rssi:
       Hmlan1:
         avg        -93.5555555555556
         cnt        9
         lst        -93
         max        -93
         min        -94
       At_hmlan1:
         avg        -91.9090909090909
         cnt        11
         lst        -91
         max        -91
         min        -92
Attributes:
   IODev      HMLAN1
   actCycle   028:00
   actStatus  alive
   autoReadReg 4_reqStatus
   expert     2_full
   firmware   2.0
   group      Heizung
   model      HM-CC-VD
   peerIDs    00000000,10000101,
   room       Bad
   serialNr   KEQ0360571
   subType    thermostat
   webCmd     getConfig:clear msgEvents
FHEM 6.2 auf RPi4B
Raspberrymatic 3.X auf RPI3B

1xDS2408 und 6xDS18B20 an GPIO über Modul RPI_1Wire
>50 Homematic-Geräte

Thorsten Pferdekaemper

Hi,
kann es sein, dass der VD keine Nachkommastellen vertraegt? Stelle mal das Attribut pidActorValueDecPlaces im VD auf 0.
Gruss,
   Thorsten
FUIP

dan1180

#33
ein pidActorValueDecPlaces 0 hat leider nichts gebracht. Danach habe ich pidActorLimitUpper auf 99 gestellt und siehe da, er geht bei DeltaT 5Grad auf das neue Maximum von 99%. Aus irgend einem Grund mag er die 100% nicht?!
Genauso scheint im das Ausschalten des TC nicht zu schmecken. Geht man bei desired auf off passiert nix (on mag er ebensowenig). Stellt man aber das Minimum (5°) oder das Maximum (30°) ein funktioniert alles wunderbar.
Ein weiterer Versuch den vTC wegzulassen scheiterte. Der VD kommt dann nicht über ein STATE set_valvePos hinaus. Wird der vTC dann wieder aktiviert und der PID auf den vTC zurückgestellt tut wieder alles.

Noch eine Frage zu pidActorInterval. Ich dürfte doch mit 60Sek keine Probleme bekommen, da ich meine Ventilposition ja an den vTC sende und sich der VD dann eben das holt, was bei seiner Anfrage im vTC steht. Ich hätte jedoch den Vorteil nicht bis zu 5 Minuten warten zu müssen bis sich was tut? Denkfehler?
FHEM 6.2 auf RPi4B
Raspberrymatic 3.X auf RPI3B

1xDS2408 und 6xDS18B20 an GPIO über Modul RPI_1Wire
>50 Homematic-Geräte

Thorsten Pferdekaemper

Zitat von: dan1180 am 02 Mai 2014, 15:00:40ein pidActorValueDecPlaces 0 hat leider nichts gebracht. Danach habe ich pidActorLimitUpper auf 99 gestellt und siehe da, er geht bei DeltaT 5Grad auf das neue Maximum von 99%. Aus irgend einem Grund mag er die 100% nicht?!
Seltsam. Ist das auch so, wenn Du das manuell machst (set vTC valvePos 100) ?

ZitatGenauso scheint im das Ausschalten des TC nicht zu schmecken. Geht man bei desired auf off passiert nix (on mag er ebensowenig).
Wie soll das auch gehen im  PID20? Der vergleicht die Ist- mit der Solltemperatur und regelt damit dann was. Angenommen Du hast 21,5Grad, was soll dann z.B. "on - 21,5" ergeben?

ZitatNoch eine Frage zu pidActorInterval. Ich dürfte doch mit 60Sek keine Probleme bekommen, da ich meine Ventilposition ja an den vTC sende und sich der VD dann eben das holt, was bei seiner Anfrage im vTC steht. Ich hätte jedoch den Vorteil nicht bis zu 5 Minuten warten zu müssen bis sich was tut? Denkfehler?
Ich weiss nicht wirklich, wie der vTC implementiert ist. Daher kann ich nicht sagen, ob das ein Problem darstellt. Es kann aber durchaus sein, dass sich dann ein paar Befehle stapeln, bis der VD aufwacht. Dann wird schon ueberfluessiger Kram gesendet. Ausserdem kann es auch mal vorkommen, dass ein Sendevorgang daneben geht. Dann versucht das System unter Umstaenden das ganze zu wiederholen. Ich gehe mal davon aus, dass der VD ungefaehr alle 2,5 Minuten aufwacht. Dann hast Du bei 5 Minuten schon jedes zweite Mal einen Sendevorgang. Das kann dann schonmal knapp werden, denke ich.
Ich wuerde das auf mindestens 5 Minuten lassen.
FUIP

dan1180

Hallo Thorsten,

wenn ich manuell versuche das Ventil auf 100% zu stellen bekomme ich die Meldung

level between 0 and 99 or 'off' allowed


Was on/off betrifft macht was du sagts durchaus Sinn. Es wäre nur gut wenn PID20 das umwandeln würde und aus off 0%, aus on 100, bzw 99% machen würde. Da am TC-IT bei manueller Bedienung auch on und off eingestellt werden kann sind doch Probleme vorprogrammiert. Oder kann ich das über mein Notify zur Übernahme der desired-temp regeln? Wenn off dann 5° (minimum) wenn on dann 30° (maximum)?

Dein Hinweis zum Intervall werde ich im Hinterkopf behalten, lass es aber mal ein paar Tage auf 60 stehen und schau mit dann die Logs an. Werde berichten.
FHEM 6.2 auf RPi4B
Raspberrymatic 3.X auf RPI3B

1xDS2408 und 6xDS18B20 an GPIO über Modul RPI_1Wire
>50 Homematic-Geräte

Thorsten Pferdekaemper

Zitat von: dan1180 am 02 Mai 2014, 22:02:40Was on/off betrifft macht was du sagts durchaus Sinn. Es wäre nur gut wenn PID20 das umwandeln würde und aus off 0%, aus on 100, bzw 99% machen würde.
Naja, der PID20 ist ja ein allgemeiner PID-Regler. Der kann ja nicht die Besonderheiten von allen moeglichen Szenarien kennen. Das musst Du dann schon selbst regeln. Wie man die 100 vermeidet hast Du ja schon rausgefunden.

ZitatDa am TC-IT bei manueller Bedienung auch on und off eingestellt werden kann sind doch Probleme vorprogrammiert. Oder kann ich das über mein Notify zur Übernahme der desired-temp regeln? Wenn off dann 5° (minimum) wenn on dann 30° (maximum)?
Zum Beispiel so. ...oder sinnvoller: Du deaktiverst bei on/off den PID20 (set PID_HKS_BD stop) und reaktivierst ihn wieder, wenn wieder was anders als on/off kommt (set PID_HKS_BD start). Zusaetzlich (bei on/off) direkt den vTC ansteuern mit on bzw. off (oder 99 bzw 0, je nachdem was er versteht). Das kannst Du mit einem neuen notify machen oder ins bereits bestehende reinbauen. Das koennte allerdings schwieriger sein.
FUIP