KNX Notify Heizungssteuerung

Begonnen von netpirat, 07 September 2021, 17:19:44

Vorheriges Thema - Nächstes Thema

netpirat

Hallo,

ich möchte mit einer simplen Hizungssteuerung starten. Dazu habe ich ein KNX Device angelegt,



002_Ku_Heizung_Fussboden
7/0/0:dpt1.001:Heizungsschalter 7/1/0:dpt1.001:Heizungsstatus 7/2/0:dpt1.003:Heizungssperre 7/3/0:dpt16:Heizungsdiagnose 7/4/0:dpt9.001:Heizungssollwert 6/0/0:dpt9.001:Heizungsistwert KNXTUL

Jetzt möchte ich das Notify prüfen lassen auf Ist und Sollwert. Jenachdem wie der Wert sich verhält soll es die Heizung an oder ausschalten.
HeizungKuecheSchalten

{ if (002_Ku_Heizung_Fussboden:getG6 > 002_Ku_Heizung_Fussboden:get5) "set 002_Ku_Heizung_Fussboden:getG1: on" else ("set 002_Ku_Heizung_Fussboden:getG1: off"))
 



Irgenwie kommt dabei aber kein Wert zustande. Ich habe mir zwar in der Anleitung einiges angesehen, kann den Fahler aber bislang nicht finden.


Gruß


Amenophis86

Puh, wo soll ich anfangen? Da passt sehr viel nicht. Du hast zB vorne ne { und machst die nie zu. Dann arbeitest du in if mit det setmagic Syntax was nicht geht und nutzt diese auch nicht richtig. Dazu kommt, dass der FHEM Befehl auch nicht die richtige Syntax hat. Du wirfst da sehr viel durcheinander.

Als erstes solltest du entweder die Perl Syntax lernen oder du schaust dir zB DOIF mal an. Aber so weiß ich gerade nicht mal, wie ich dir am besten helfen soll. Und es einfach nur schreiben für dich bringt dich auch nicht weiter. Sorry.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

netpirat

Hallo,

danke für die Info. Die Programmierung kann ich mir über Pearl und Beispiel sicher näherbringen.  Mir würde im ersten Schritt schon mal helfen ob die Objekte unter KNX so angeleget und in der weiteren Programmierung genauso verwendet werden können.

Ich muss mich da reinfuchsen bin mir aber gerade beim Anlegen der Devices, alle einzeln oder ein Divice mit allen readings,etc. nicht ganz sicher. Zudem ist es für mich wichtig das diese Opjekte dann auch im weiteren Programm FHEM verwertet (berechnet,etc.) werden können.

Ich habe mir im Urlaub einiges angelesen bin aber gerade da noch nicht auf die richtigen Lösung gestoßen. Gerade KNX und FHEM ist mein Gebiet was ich lernen und dann weitergeben möchte.

Gruß

Amenophis86

#3
Du kannst mehrere GAs in ein Device stecken, das kommt immer auf den Usecase an. In deinem Fall würde ich ganz klein anfangen. Nimm dir eine GA, die schaltet. Definiere sie so, dass du manuell aus FHEM raus schalten kannst.

Als nächstes, wenn du zB mit DOIF arbeiten willst, schaust du dir die Doku von DOIF an und baust dir ein DOIF,  was zB um 15 Uhr dein Gerät ein und um 15:01 es aus schaltet. Uhrzeit natürlich anpassen, wann du halt dran sitzt. Wenn das klappt, dann erweiterst du dein doif. Leg dir ein zweites device mit einer GA an. Mach dein DOIF abhängig vom Status der zweiten GA und der Uhrzeit.

So kannst du zB Schritt für Schritt lernen, was du machen kannst. Alternativ lies dir auf jeden Fall den Guide im Anfänger Forum durch. Ist zwar viel auf Homeatic bezogen aber gibt gute Beispiele.

Die Youtube Kurse von Matthias Kleine (Haus automatisierung oder so) sind zwar alt in Bezug auf Fhem aber auch hier kann man trotzdem viel lernen.

Ansonsten fragen, fragen, fragen. Aber sich vorher Gedanken machen und dies in der Frage auch zeigen ;) Das wird schon.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

erwin

Hi Netpirat!
versuchs mal so (ungetestet):
define HeizungKuecheSchalten notify 002_Ku_Heizung_Fussboden:Heizungs.*wert:.* {
  my $onoff = 'off';
  if (readingsNum($NAME,'Heizungsistwert-get',0) > readingsNum($NAME,'Heizungssollwert-get',0)) {
     $onoff = 'on';
  }
  fhem "set $NAME Heizungsschalter $onoff";
}

Damit kannst du üben.. (es geht noch einfacher, aber zu Lasten der Lesbarkeit...) Die cmd-ref zu den FHEM-modulen ist auch eine nette Lektüre!
KNXTUL - am ende deiner definition kannst du weglassen!
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

netpirat

Hallo Erwin,

leider hat dein Code nicht gepasst.

Ich habe mir mal Amenophis86 Rat zu Herzen genommen und die letzten Tage versucht das irgendwie zum laufen zu bekommen. Keien Chance ich bin zu doof. Man lernt zwar viel zum Beispiel über IF und if im Forum aber ich bekomme es einfach nicht zum laufen.

Ich habe nun die wohl einfachste Variante gewählt:

3 Devices angelegt;
Probably associated with
Heizung_Kueche_Ist
21.20 °C KNX

Heizung_Kueche_Soll
21.50 °C KNX

Heizungsschalter_Kueche
off KNX



Diese dann versucht im Notify zu bearbeiten:
(Heizung_Kueche_Soll|Heizung_Kueche_Ist|Heizungsschalter_Kueche) {
if (Heizung_Kueche_Ist $EVTPART0 > Heizung_Kueche_Soll $EVTPART0) {fhem("set 
Heizungsschalter_Kueche on")}}


Das $EVTPART0 habe ich gesetzt weil ich nicht weiß ob die operatoren <> das °C verarbeiten können.

Leider klappt, egal wie ich das notify umstelle, das nicht.

Kann mir jemand helfen in dem er den Fehler vielleicht sieht?

Danke

erwin

Also mal langsam....
Du willst auf Veränderung des Ist UND des Soll Werts reagieren...Daher:
define meinnotify notify (Heizung_Kueche_Ist:getG1|Heizung_Kueche_Soll:setG1):.* { Log3 undef,1, "der event kommt von: $NAME, EVENT=  $EVENT";;}
}

das :setG1/:getG1 und das :.* (nach der Klammer) ist ganz wichtig, sonst löst das notify NIE aus, oder zu oft, je nachdem was du weglässt!
Dann mach ich immer ein Log statement, um zu sehen was denn da als event kommt... Dazu mach ich in einem 2ten Tab den Eventmonitor auf.
jetzt brauchst du nur mehr die Wörter zählen, die nach "EVENT=" kommen, und du hat den Inhalt von $EVTPART0, $EVTPART1, ....
Sobald das klappt, kann man sich um die Logik kümmern.
l.g.erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...