Notify funktioniert nicht

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

Vorheriges Thema - Nächstes Thema

dan1180

Hallo  zusammen,

ich habe mein erstes Notify geschrieben und bekomm es absolut nicht zum Laufen. Es geht um folgende Komponenten:

Wandthermostat HM-TC-IT-WM-W-EU namens WTS_BD
Heizkörper Stellmotor HM-CC-VD namens HKS_BD

Da man einen CC-VD nicht direkt steuern kann habe ich mir einen virtuellen Schalter gemacht. Name: V_HKS_BD_1

Mein Ziel: Über ein Notify regeln, dass, abhängig von der Soll/Ist Temperaturdifferenz, die Ventilposition des CC-VD festgelegt wird.

Da ich klein beginnen will habe ich zum testen folgendes Notify geschrieben (Name: NotifyHKS_BD)

DEF

V_HKS_BD_1 at +*00:01:00 {if ReadingsVal("WTS_BD_Climate","desired-temp",20) > 22) { fhem ("set V_HKS_BD_1 valvePos 65") } else { fhem ("set V_HKS_BD_1 valvePos 32") } }


Nach meinem Verständniss (Vorlage stammt aus dem  "Handbuch" Hausautomatisierung mit fhem) müsste nun jede Minute geprüft werden, ob desired-temp > 22 ist. Wenn ja muss das Ventil auf 65%, wenn nein auf 32%, gestellt werden. Oder? Wenn nein, warum nicht? Was hab ich falsch verstanden? Danke an alle!
FHEM 6.2 auf RPi4B
Raspberrymatic 3.X auf RPI3B

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

UliM

Hi,
lies mal im Einsteiger-pdf den Abschnitt zu Heizungsregelung.
Eigtl sollte der Thermostat die Ventilstellung selbst berechnen und an den VD geben.
Es sollte also gar nicht nötog sein, die Soll-Ventilstellung selbst zu berechnen.
Wenn das noch nicht tut, fehlt vll das Pairing zwischen TC und VD?  Ich hab nur nen TC, weiss daher nicht, wie der die VD ansteuert. Evtl solltest Du diese Frage im Homematic-Unterforum stellen bzw müsste im Wiki was dzau stehen.
=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

dan1180

Hallo Uli,

ein HM-CC-IT ist mit einem VD kompatibel und eine Steuerung über das peeren möglich. Mit dem TC-IT-WM geht das anscheinend nicht (ich war schon im HM Forum  :) ). Verstehen tu ich das auch nicht, da der TC-IT als Nachfolger des CC-IT vorgestellt wird...
Naja, auf jeden Fall Bin ich deshalb auf die Idee mit dem "Umweg" über Notifys zu gehen da aus optischen Gründen eine CC-IT für mich nicht im Frage kommt.

Gruß Dan

PS: Ich hatte die beiden schon gepeered aber leider ohne Erfolg, da keines der beiden Geräte anscheinend die Ventilposition bei entsprechender Heizvorgabe kennt...
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 30 April 2014, 23:04:16
Da ich klein beginnen will habe ich zum testen folgendes Notify geschrieben (Name: NotifyHKS_BD)

DEF

V_HKS_BD_1 at +*00:01:00 {if ReadingsVal("WTS_BD_Climate","desired-temp",20) > 22) { fhem ("set V_HKS_BD_1 valvePos 65") } else { fhem ("set V_HKS_BD_1 valvePos 32") } }

Hi,
Das ist kein Notify, sondern ein At. Außerdem scheint es V_HKS_BD_1 zu heissen und Du setzt das valvePos direkt ins At. Kopiere vielleicht mal das komplette define hier rein, oder den entprechenden Auszug aus der fhem.conf.
Gruß,
Thorsten
FUIP

Bennemannc

Hallo,

das ist dann aber keine "vernünftige" Regelung - was machst Du denn wenn es im Raum zu warm wird?

Ich würde es mit THRESHOLD versuchen, der die gemessene Temperatur mit der vorgegebenen Temperatur vergleicht. Zwei Stück - einen für aufregen und einen für runter. Wenn gemessene Temperatur um x kleiner ist als die Soll Temperatur -> VentilPos = VentilPos +5. Das sollte bei jedem 0,1 Grad Änderung aufgerufen werden. Der andere THRESHOLD macht dann genau das Gegenteil - eben VentilPos -5 wenn die gemessene Temperatur über der eingestellten liegt.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

dan1180

@Thorsten:
Ist es nicht? So habe ich das aber aus der Beschreibung "Hausautomation mit fhem". Was ist der Unterschied zwischen eineM Notify un einem At? Hier mal das komplette define aus meine fhem.cfg:
define NotifyHKS_BD notify V_HKS_BD_1 at +*00:01:00 {if ReadingsVal("WTS_BD_Climate","desired",20) > 22) ("set V_HKS_BD_1 valvePos 65") else ("set V_HKS_BD_1 valvePos 32")

@Christoph
Mir ist absolut klat, dass das so nicht regeln kann. Da es aber mein erstes Notify ist wollte ich einfach mal sehen, ob sich überhaupt was tut wenn ich den TC-IT über und unter 22 Grad stelle. Deinen Vorschlag werde ich mir auf jeden Fall genauer anschauen denn ich hatte folgendes vor:

Solltemperatur - Isttemperatur = Differenz
Wenn Differenz < 0 dann Differenz = 0 sonst Differenz
Wenn Differenz > 10 dann Ventil 100% sonst
  wenn Differenz > 5 dann Ventil 60% sonst
    wenn Differenz > 0 dann Ventil 30% sonst Ventil 0%

Schlechte Idee?
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: Bennemannc am 01 Mai 2014, 09:15:26
das ist dann aber keine "vernünftige" Regelung - was machst Du denn wenn es im Raum zu warm wird?

Ich würde es mit THRESHOLD versuchen, der die gemessene Temperatur mit der vorgegebenen Temperatur vergleicht.
Einr vernünftige Regelung macht man mit PID20. Ich glaube aber, dass es  erst einmal um ein paar Grundlagen rund im notify und at geht...
Gruß,
Thorsten
FUIP

Thorsten Pferdekaemper

Zitat von: dan1180 am 01 Mai 2014, 09:46:25
@Thorsten:
Ist es nicht? So habe ich das aber aus der Beschreibung "Hausautomation mit fhem". Was ist der Unterschied zwischen eineM Notify un einem At? Hier mal das komplette define aus meine fhem.cfg:
define NotifyHKS_BD notify V_HKS_BD_1 at +*00:01:00 {if ReadingsVal("WTS_BD_Climate","desired",20) > 22) ("set V_HKS_BD_1 valvePos 65") else ("set V_HKS_BD_1 valvePos 32")
Da hast Du notify und at zusammengepanscht. Ein at macht irgendwas zu einer bestimmten Zeit oder in bestimmten Zeitintervallen. Ein notify reagiert auf Ereignisse. Du musst Dich entscheiden, was Du willst.
Als at würde das so aussehen:
define AtHKS_BD  at +*00:01:00 {if ReadingsVal("WTS_BD_Climate","desired",20) > 22) ("set V_HKS_BD_1 valvePos 65") else ("set V_HKS_BD_1 valvePos 32")}
Das dürfte aber auch wieder ein Problem machen, da der VD wahrscheinlich nicht jede Minute ein Kommando verarbeiten mag. Wenn Du es aber auf 10 Minuten setzt, dann ist's zumindest zum Ausprobieren ok.
Zitatdenn ich hatte folgendes vor:

Solltemperatur - Isttemperatur = Differenz
Wenn Differenz < 0 dann Differenz = 0 sonst Differenz
Wenn Differenz > 10 dann Ventil 100% sonst
  wenn Differenz > 5 dann Ventil 60% sonst
    wenn Differenz > 0 dann Ventil 30% sonst Ventil 0%

Schlechte Idee?
Schlechte Idee, das wird wahrscheinlich nie gescheit regeln. Befasse Dich mit dem PID20 Modul. Du wirst vielleicht ein bisschen brauchen, um das zu verstehen, aber alles andere ist ein Krampf und wird Dich auf Dauer mehr Zeit kosten und Frust verursachen.
Gruß,
Thorsten
FUIP

Bennemannc

Hallo,

zum PID20 ist dann aber vermutlich möchte ein Virtueller TC nötig. Das VD ist nicht ständig empfangsbereit, vielmehr meldet es sich bei seinem Peer in regelmäßigen Abständen um zu sehen, ob etwas zu tun ist. Was passiert bei dem PID20 Modul, wenn der Actor nicht sofort antwortet?

Gruß Christoph

PS. bei der Komplexität des Sache würde ich mir überlegen, ob es nicht einfacher wäre ein HM-CC-RT-DN anzuschaffen.
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

dan1180

#9
Hallo,

ZitatIch glaube aber, dass es  erst einmal um ein paar Grundlagen rund im notify und at geht...
Ganz genau. Dass ich eine komplexe Regelung ohne Grundkenntnisse hinbekomme glaube ich nicht. Daher wollte ich erst ein paar "Experimente" mit einfachen Befehlen machen und die dann ausbauen

ZitatDa hast Du notify und at zusammengepanscht
Ups! Habe es aber auch ohne at... versucht. Leider auch ohne Erfolg.

ZitatSchlechte Idee, das wird wahrscheinlich nie gescheit regeln. Befasse Dich mit dem PID20 Modul
Warum? Das sind doch ganz klare Kriterien nach denen sich das ventil stellen muss? Klar, eine richtige Regelung sieht eher wie von Christoph mit dem THRESHOLD beschrieben aus. Schau mir aber auf jeden Fall das PID20 an. Danke.

ZitatDas dürfte aber auch wieder ein Problem machen, da der VD wahrscheinlich nicht jede Minute ein Kommando verarbeiten mag
Zitatzum PID20 ist dann aber vermutlich möchte ein Virtueller TC nötig.
Das ist mir durchaus bewusst. Deshalb ja der Weg über den virtuellen Schalter, der den Befehl "aufbewahrt" bis ihn der VD abholt. Der Interval steht deshalb auf der 1 Minute um beim Test nicht so lange auf eine erste Reaktion warten zu müssen. Aber auch ohne das at +*00:01:00 wurde der Befehl nicht ausgeführt.

ZitatPS. bei der Komplexität des Sache würde ich mir überlegen, ob es nicht einfacher wäre ein HM-CC-RT-DN anzuschaffen.
Das habe ich einen. Da meine Tehrmostate aber in den Raum stehen und ich einen sehr technikinteressierten, 1 1/2 jährigen Sohn habe, würde mir ein tastenloser Stellmotor, an dem man beim vorbeirennen nicht hängen bleibt, sehr gefallen  ;) Außerdem wäre das ja viel zu einfach. ;)

Wenn ich jetzt das at weglasse. Welchen fehler habe ich dann im Notify
define NotifyHKS_BD notify V_HKS_BD_1 {if ReadingsVal("WTS_BD_Climate","desired-temp",20) > 22) ("set V_HKS_BD_1 valvePos 65") else ("set V_HKS_BD_1 valvePos 32") }
Muss ich meinen virtuellen Schalter mit dem climate-Kanal des TC gepeert haben, dass er die Änderung mitbekommt oder macht das normalerweise das notify?

Was mir noch aufgefallen ist, mein Virtueller TC geht bei der Überschreitung der desired-temp auf CMDs processing. Nur der channel_01, der mit dem VD gepeered ist scheint davon nichts mitzubekommen. Hier noch meine Definition des virtuellen TC:
define V_HKS_BD_1 CUL_HM 10000101
attr V_HKS_BD_1 model virtual_1
attr V_HKS_BD_1 peerIDs 1F914E01,
attr V_HKS_BD_1 room Bad
attr V_HKS_BD_1 webCmd press short:press long

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: Bennemannc am 01 Mai 2014, 10:16:11
zum PID20 ist dann aber vermutlich möchte ein Virtueller TC nötig. Das VD ist nicht ständig empfangsbereit, vielmehr meldet es sich bei seinem Peer in regelmäßigen Abständen um zu sehen, ob etwas zu tun ist. Was passiert bei dem PID20 Modul, wenn der Actor nicht sofort antwortet?
Der PID20 ist genau für diesen Anwendungsfall entwickelt. Ob der Aktor antwortet oder nicht ist dem Ding egal. Er setzt einfach den set-Befehl ab. Man muss nur darauf achten, dass man nicht öfter sendet, als der VD empfangen kann. Das kann man aber alles einstellen. Z.B. minimales Sendeintervall auf 10 Minuten, nur senden wenn Änderung um mindestens 10%, alle Stunde immer ein set senden.
Zitat
PS. bei der Komplexität des Sache würde ich mir überlegen, ob es nicht einfacher wäre ein HM-CC-RT-DN anzuschaffen.
So komplex ist das ja gar nicht. Die neuen RTs sorgen ja auch nicht nur für die reine Freude. Zumindest kann man bei den VDs wenigstens selbst was steuern.
Gruß,
Thorsten
FUIP

Thorsten Pferdekaemper

Zitat von: dan1180 am 01 Mai 2014, 11:00:43
Ups! Habe es aber auch ohne at... versucht. Leider auch ohne Erfolg.
Das bedeutet aber nicht, dass es mit dem at besser ist.
Zitat
Warum? Das sind doch ganz klare Kriterien nach denen sich das ventil stellen muss?
Es wird wahrscheinlich heftig übersteuern und schwingen.
Zitat
Das ist mir durchaus bewusst. Deshalb ja der Weg über den virtuellen Schalter, der den Befehl "aufbewahrt" bis ihn der VD abholt. Der Interval steht deshalb auf der 1 Minute um beim Test nicht so lange auf eine erste Reaktion warten zu müssen.
Jetzt hast Du mich komplett verloren. Ich habe keine Ahnung, was Du meinst. Notifys kennen keine Intervalle und was Du mit dem virtuellen Schalter erreichen willst,  ist mir komplett unklar. Ich glaube, Du denkst viel zu kompliziert.
Zitat
Wenn ich jetzt das at weglasse. Welchen fehler habe ich dann im Notify
define NotifyHKS_BD notify V_HKS_BD_1 {if ReadingsVal("WTS_BD_Climate","desired-temp",20) > 22) ("set V_HKS_BD_1 valvePos 65") else ("set V_HKS_BD_1 valvePos 32") }
Versuchs mal so:
define NotifyHKS_BD notify WTS_BD_Climate {if ReadingsVal("WTS_BD_Climate","desired-temp",20) > 22){fhem("set V_HKS_BD_1 valvePos 65") }else {fhem("set V_HKS_BD_1 valvePos 32")} }
Zitat
Muss ich meinen virtuellen Schalter mit dem climate-Kanal des TC gepeert haben, dass er die Änderung mitbekommt oder macht das normalerweise das notify?
Genau dafür nimmt man ein notify.
FUIP

dan1180

#12
ZitatJetzt hast Du mich komplett verloren. Ich habe keine Ahnung, was Du meinst. Notifys kennen keine Intervalle und was Du mit dem virtuellen Schalter erreichen willst,  ist mir komplett unklar. Ich glaube, Du denkst viel zu kompliziert.
Laut den Aussagen im HomeMatic Forum brauche ich einen virtuellen TC um den VD zu steuern. Wenn ich am VD direkt die valvePos änder tut sich nichts, mache ich das über den vTC funktioniert es. Nachdem ich das vermeintliche Notify nicht zum Laufen bekommen habe wollte ich ausschließen, dass der Trigger fehlt weshalb ich dann (fälschlicherweise) das at eingebaut habe. Dieses habe ich dann auf eine Minute gestellt um nicht so lange auf eine Reaktion warten zu müssen. Wie ich jetzt aber weiß (dank dir) hätte ich noch Stunden warten können ;D
Ob ich den nun brauch oder nicht...den Befehl erhalten (und verarbeiten als würde er manuell eingegeben) müsste er doch trotzdem?

Leider funktioniert es auch mit deiner Korrektur nicht. Würdest du mal direkt den VD ansprechen? => Direktes Ansprechen funktiniert nicht. Selbst der Befehl "set HKS_BD valvePos 30.0" im Stellantrieb selber funktioniert nicht :-(

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

Ah, es war mir nicht bewusst, dass der VD das nicht direkt kann. Schau mal in den Thread,  vielleicht hilft das:
http://forum.fhem.de/index.php/topic,22419.msg158219.html#msg158219
Bau das erstmal so zusammen, dass Du über den virtuellen TC den VD manuell steuern kannst. Danach können wir das mit dem at oder notify betrachten.
FUIP

dan1180

ZitatBau das erstmal so zusammen, dass Du über den virtuellen TC den VD manuell steuern kannst. Danach können wir das mit dem at oder notify betrachten.
Danke, aber das habe ich schon. Ich kann über meinen virtuellen TC den VD z.B. über den Befehl "set V_HKS_BD_1 valvePos 25.0" steuern. Das funktioniert super. Ich steuer auch über den SwichTr kanal des TC-IT einen Schaltaktor für die Fußbodenheizung. Nun bastel ich seit ner Woche an den ersten Schritten zur Steuerung des VD.
FHEM 6.2 auf RPi4B
Raspberrymatic 3.X auf RPI3B

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