KNX Geräte über FHEM mit SmartVisu steuern und anzeigen

Begonnen von wilkens, 03 Januar 2021, 18:55:48

Vorheriges Thema - Nächstes Thema

wilkens

Hallo,

ich habe meine FHEM Installation, die seit langem mit SmartVisu läuft um ein KNX Relais von MDT erweitert.
Um dieses KNX Relais über FHEM zu steuern, habe ich das "TPUART USB Modul" von Busware direkt an den FHEM RPi angeschlossen.

Ich kann nun über ein FHEM Device das KNX Relais steuern und über ein anderes FHEM Device den KNX Relais-Status sehen.
Das ist nicht wirklich schön und in sofern ein Problem, dass ich mit SmartVisu für die Anzeige und die Steuerung keine unterschiedlichen Geräte angeben kann.
Zumindest nicht dass ich wüsste.
Ein einzelnes Device in FHEM, was den Status anzeigt und das Relais steuern kann wäre toll.

Hat hier jemand einen Tipp, der besser ist als mit nem userreading den Status von einem Device auf das andere zu übertragen? Das würde auf ein einschalten immer ein zeites einschalten senden, was zwar untergeht, aber nicht schön ist.

In Loxone ist das mit einem EIB-Schlter schön gelöst. Gibt es sowasd in FHEM?

Vielen Dank.

wilkens

Hallo,

ich habe nun ein notify gebaut, welches auf das Status-Device guckt und dies bei Änderung an das Device zum schalten übergibt.
Der Zustand des Devices, welches schaltet wird vorher überprüft. So passiert zumindest nichts doppelt, wenn über FHEM oder SmartVisu geschaltet wird, denn dann passt der Zustand ja schon.
Schalte ich über KNX, bekommt das Status-Device in FHEM das mit und passt über das notify das Device zum schalten an, welches allerdings ein erneutes schalten verursacht.
Auf ein Einschalten folgt also ein erneutes Einschalten usw.
Hierfür habe ich noch keine Lösung gefunden.
Falls jemand eine Idee hat, dann gerne her damit.

Ansonsten hier mein Notify, falls es mal wem anders hilft.

KNX_0102011 = Device zum schalten des KNX Relais
KNX_0102012 = Device für den Status des KNX Relais


KNX_0102012:(on|off) {
my $fhemstate = ReadingsVal("KNX_0102011", "state", "");
if (($EVENT eq 'on') and ($fhemstate eq 'off')) {
  fhem ("sleep 0.1; set KNX_0102011 on");
}
elsif (($EVENT eq 'off') and ($fhemstate eq 'on')) {
  fhem ("sleep 0.1; set KNX_0102011 off");
}
}


Achso, das sleep war notwendig, da sich FHEM (der Dienst) immer komplett aufgehängt hat, wenn das erneute schalten durch das notify sofort passiert ist.



wilkens

OK, noch ein Hinweis. Das Aufhängen mit 100% CPU-Last ist mit dem "sleep" nicht in allen Konstellationen behoben.
Dies passiert bei mir immer, wenn mehrere KNX Meldungen gleichzeitig gesendet werden.
Also wenn ein notify zwei Aktoren schaltet o.ä.

Scheinbar lässt sich der TUL-Stick in 3 verschiedenen Varianten einbinden. Da ich ihn nicht als EIB-IP-Gateway oder KNX-IP-Gateway benötige habe ich ihn direkt an FHEM eingebunden.

Wie hier beschrieben:
https://wiki.fhem.de/wiki/EIB_/_KNX

So:
define EIB TUL tul:/dev/ttyACM0@57600 1.1.255

In der FHEM Referenz steht allerdings eine niedrigere Baudrate:
https://fhem.de/commandref.html#TUL

ZitatNote: For TUL usb stick the baudrate 19200 is needed and this is the default when no baudrate is given.

Example:
define tul TUL tul:/dev/ttyACM0 1.1.249

Mit 19200 statt 57600 stürzt bei mir FHEM nicht mehr ab.

Ob das nun die hier beschriebene nicht mehr unterstützte EIB-Variante ist, ist mir allerdings auch nicht klar.
https://forum.fhem.de/index.php?topic=51758.0

Also auch nicht, ob nun das 10_EIB oder 10_KNX Modul genommen wird oder keins davon..?

Vielleicht hat dazu ja noch jemand einen Hinweis.