Modul 00_KNXIO.pm support

Begonnen von erwin, 25 Mai 2022, 14:00:35

Vorheriges Thema - Nächstes Thema

erwin

#60
Hi KNX community!
neue Version ist am SVN, change-history (wie immer...) im 1.Beitrag in diesem Thread!
ad. Log msg vereinfacht  - die Log-msg sehen jetzt immer so aus:
<timestamp> <logLevel>: <devicename> [<subroutine zeilennummer>]: <log-text>
    also z.B. so:
2023.03.27 20:19:01.295 4: myKNXIO_R [KNXIO_ReadH 395]: TunnelRequest received - send Ack and decode. seqcntrRx= 232
das ermöglich ein gezieltes suchen/parsen nach messages. Ich hab mir das vom FRITZBOX Modul abgeschaut.... ;D
eine regex (zugegeben etwas "sperrig") könnte so aussehen:
my ($date,$time,$loglvl,$dev,$sub,$subline,$logtxt) = $str =~ /^([^\s]+)\s([^\s]+)\s([0-5]):\s([\w]+)\s\[([\w]+)\s([\d]+)\]:\s(.*)$/gms;Sollte sich das bewähren, werde ich das auch fürs KNX-Modul übernehmen...
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,...

erwin

Hi KNX community!
neue Version ist am SVN, change-history (wie immer...) im 1.Beitrag in diesem Thread!
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,...

erwin

Hi KNX community!
neue Version ist am SVN, change-history (wie immer...) im 1.Beitrag in diesem Thread!
Neuer EVENT:
<device>:INITALIZED kommt bei fhem-start 30 Sekunden nach global:INITIALZED falls das device connected ist.
damit wirds möglich, mittels notify darauf zu reagieren und im notify z.b. "get <KNX-device> <Gadname>" abzufragen und FHEM mit der "Realität" zu synchronisieren. Beispiele hierzu in der cmd-ref vom KNX-Modul.
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,...

erwin

Hi KNX community!
neue Version ist am SVN, change-history (wie immer...) im 1.Beitrag in diesem Thread!
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,...

erwin

Hi KNX community!
neue Version ist am SVN, change-history (wie immer...) im 1.Beitrag in diesem Thread!
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,...

erwin

Hi KNX_Community!
Neue Version ist am SVN, change-history (wie immer...) im 1.Beitrag in diesem Thread!
Neu: FIFO und Rate-limit fürs senden FHEM->KNX
"Zu schnell hintereinander" FHEM set/get cmds werden jeweils verzögert, sodass auch langsamere knx-GW's keine Meldungen "verschlucken".
Hilft speziell bei set/get cmds mit DeviceNamen mit wildcards und beim KNX_scan cmd.
Im Log wird jeweils eine Zeile
<timestamp> 3: <device> [KNXIO_Write2 590]: frequent IO-write cmd - delayedgeschrieben. Das ist kein Fehler, sondern eine Info. Evtl. setzte ich in der nächsten Version den LogLevel auf 4, damit die Meldung im Normalfall nicht kommt...
Meinungen dazu?
 
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,...

erwin

Hi KNX_Community!
Neue Version ist am SVN, change-history (wie immer...) im 1.Beitrag in diesem Thread!
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,...

MarkusN

Hallo Erwin!

Seit einiger Zeit habe ich in meiner Logfile hunderte Meldungen dieser Art pro Tag:

2023.12.13 09:00:37 3: KNX [KNXIO_Write2 612]: frequent IO-write cmd - delayed

So wie ich das verstehe ist das ein neues Feature dieses Moduls. Ich wüsste gerne was die Ursache dafür ist, das meldende Gerät (KNX) ist jedoch mein KNXIO Device selber, also das Interface.
Wenn ich mir meinen Busmonitor anschaue sehe ich keine Auffälligkeiten, die Anzahl der Telegramme pro Minute beläuft sich auf 10-20, 2 bis 3 davon sind von FHEM gesendete Telegramme.

Im täglichen Betrieb merke ich nicht dass irgendwas verzögert ist oder gar nicht umgesetzt wird. Wie finde ich am besten raus was die Ursache für diese Logmeldungen sind?

Der Vollständigkeit halber hier noch die def von meinem KNXIO Device:

define KNX KNXIO T 127.0.0.1:6720 1.1.243
attr KNX comment T 127.0.0.1:6720 1.1.243\
H 10.0.2.142:3671 1.1.241
attr KNX icon knx
attr KNX room 25_KNX->99_Interface
attr KNX verbose 3
#   DEF        T 127.0.0.1:6720 1.1.243
#   DeviceName 127.0.0.1:6720
#   FD         27
#   FUUID      629a2275-f33f-b36e-3cb5-b5253492dfe1a509
#   NAME       KNX
#   NR         319
#   PARTIAL   
#   PhyAddr    1.1.243
#   STATE      connected
#   SVN        28206 2023-11-25
#   TYPE       KNXIO
#   devioLoglevel 4
#   devioNoSTATE 1
#   eventCount 2
#   model      T
#   msg_count  258410
#   msg_time   2023-12-13 09:10:27
#   nextOpenDelay 10
#   KNXIOhelper:
#     FIFOMSG    C01112w0340401b8
#     FIFOTIMER  0
#     lastWrite  1702455027.96518
#     startdone  1
#     FIFO:
#     FIFOW:
#   READINGS:
#     2023-11-26 12:51:42   state           connected
#
setstate KNX connected
setstate KNX 2023-11-26 12:51:42 state connected


Grüße
Markus

erwin

Hi Markus,
ja das ist ein neues Feature. Es begrenzt die Anzahl der unmittelbar hintereinander gesendeten messages von FHEM an den KNX_Bus auf 10/Sekunde!.
Es hat einige Probleme gegeben da manche KNX-Interface's nicht alle Messages in der Geschwindigkeit verarbeiten konnte und damit etliche verloren gegangen sind.

Die Log msg's sind kein Fehler, sollen nur darauf hinweisen, dass etwas verzögert wird.
Ursache ist meist ein set cmd mit wildcard device spezifikaton, oder ein notify/doif das mehrere set-cmd unmittelbar hintereinander auslöst.
Nachdem dieses Feature "neu" ist, hab ich das timing eher konservativ ausgelegt, ich werde das limit in der nächsten version verringern und den Loglevel auf 4 setzten, dann kommen diese Log-msg nicht mehr.
Es gibt eine Design-Empfehlung (vom KNX-Standard) nicht mehr als 40 msg/Sekunde auf dem Bus zu haben. Nach dem ein "set cmd" ja üblicherweise eine Reaktion von Bus auslöst und evtl. auch noch für jede gesendete/empfangene msg aucch noch "ACK" msg geschickt werden... kommt man schnell auf diese 40/Sekunde.

Danke jedenfalls für den post, sehr hilfreich!
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,...

StefanG

Hi Erwin,

ich hatte mit einem MDT SCN-IP000.03 IP-Interface und MDT BE-GT2TW.02 Glastastern eine einfache Laufschrift mit einem Update-Intervall von 2 Sekunden programmiert, die mit der 00_KNXIO.pm vom 04/04/2023 problemlos funktioniert hat. Natürlich wird der KNX-Bus damit belastet, aber ich hatte keine merkbaren Probleme.

Mit der aktuellen 00_KNXIO.pm wird die Ausgabe der Laufschrift merklich verzögert, wenngleich sie vorerst weiter funktioniert. Nach rd. 1-2 Tagen laufen dann aber anscheinend irgendwelche FHEM-internen Puffer über und es werden Nachrichten am Taster ausgegeben, die schon Stunden vorher generiert wurden, d.h. die gesamte FHEM<->KNX-Kommunikation ist massiv verzögert und damit lahmgelegt. Nach einem FHEM-Neustart funktioniert es wieder für 1-2 Tage.

Mit der alten 00_KNXIO.pm funktioniert es auch in einer up-to-date FHEM-Umgebung weiterhin problemlos.

Nachdem ich in meinem Setup keinen Nutzen in dem neuen Feature sehe, daher die Frage, ob es sich vielleicht per Schalter auch wieder deaktivieren lässt? :-)

Danke jedenfalls für Euren tollen Support hier!

LG
Stefan

erwin

Hi Stefan,
ich habe einen Verdacht... kanns aber (noch) nicht nachstellen.
kannst du bitte ein list vom KNXIO dev posten, sobald eine "merkliche" Verzögerung auftritt?
Gibts evtl. msgs im Log ?
Um es nachzuvollziehen wäre auch die def mit der du die Laufschrift erzeugst hilfreich.
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,...

StefanG

Hi Erwin,

danke! Habe jetzt wieder auf die neue KNXIO-Version gewechselt und melde mich mit "list KNXIO" in den nächsten Tagen, sobald die Kommunikation wieder "einschläft".

Unmittelbar wird die Anzeige etwas langsamer und es gibt folgende Logeinträge (alle 2 Sekunden wird die Schrift aktualisiert, zur vollen Minute etwas umfangreicher, d.h. das ist plausibel):

2023.12.19 20:51:57.081 3: KNXD [KNXIO_Write2 612]: frequent IO-write cmd - delayed
2023.12.19 20:51:59.105 3: KNXD [KNXIO_Write2 612]: frequent IO-write cmd - delayed
2023.12.19 20:52:00.022 3: KNXD [KNXIO_Write2 612]: frequent IO-write cmd - delayed
2023.12.19 20:52:00.023 3: KNXD [KNXIO_Write2 612]: frequent IO-write cmd - delayed
2023.12.19 20:52:00.024 3: KNXD [KNXIO_Write2 612]: frequent IO-write cmd - delayed
2023.12.19 20:52:00.024 3: KNXD [KNXIO_Write2 612]: frequent IO-write cmd - delayed
2023.12.19 20:52:00.408 3: KNXD [KNXIO_Write2 612]: frequent IO-write cmd - delayed
2023.12.19 20:52:00.809 3: KNXD [KNXIO_Write2 612]: frequent IO-write cmd - delayed
2023.12.19 20:52:02.033 3: KNXD [KNXIO_Write2 612]: frequent IO-write cmd - delayed
2023.12.19 20:52:04.042 3: KNXD [KNXIO_Write2 612]: frequent IO-write cmd - delayed
2023.12.19 20:52:06.262 3: KNXD [KNXIO_Write2 612]: frequent IO-write cmd - delayed

Habe auch testweise Freezemon probiert, fallweise mit folgenden Einträgen im Log:

2023.12.19 20:49:51.220 1: [Freezemon] Freezemon: possible freeze starting at 20:49:49, delay is 2.22 possibly caused by: tmr-KNXIO::KNXIO_dispatch2(KNXD) tmr-BOSEST_checkWebSocketConnection(BoseRec) tmr-KNXIO::KNXIO_processFIFO(KNXD) tmr-harmony_connect(HarmonyBuero) tmr-ENIGMA2_GetStatus(DMTwo) tmr-ENIGMA2_GetStatus(DM7020HD) tmr-at_Exec(at_updateKNXPerSecond) tmr-PRESENCE_StartLocalScan(AlexaKuechePresenceWLAN) tmr-PRESENCE_StartLocalScan(AlexaSZPresenceWLAN)

Sonst keine für mich auffälligen Log-Einträge.

Ich habe für die 6 Zeilen des Tasters 6 Geräte wie folgt definiert (Statustext1 bis Statustext6):

Internals:
  DEF        9/0/5:dpt16:status
  FUUID      6469ec09-f33f-d238-8fbc-fac81e843050deaa
  IODev      KNXD
  NAME      Statustext1
  NR        201
  STATE      19.12.23 21:05
  TYPE      KNX
  eventCount 18
  model      dpt16
  GADDETAILS:
    status:
      CODE      09005
      MODEL      dpt16
      NO        1
      OPTION   
      RDNAMEGET  status-get
      RDNAMESET  status-set
      SETLIST    :multiple,>CLR<
  GADTABLE:
    09005      status
  READINGS:
    2023-12-19 20:48:20  IODev          KNXD
    2023-12-19 21:05:00  last-sender    fhem
    2023-12-19 21:05:00  state          19.12.23 21:05
    2023-12-19 21:05:00  status-set      19.12.23 21:05
Attributes:
  group      KNX
  room      KNX

... und noch der Auszug aus dem Code für die Laufschrift, der aber m.E. unkritisch sein sollte. Es werden nur regelmäßig die Statustexte neu geschrieben:

#-----------------------------------------------------------------------------------------------------------------#
sub updateKNXPerMinute() {
 
  (my $sec, my $min, my $hour, my $mday, my $month, my $year) = localtime(); 
  my $total = (($hour * 60) + $min) * 60 + $sec + 5;
  # Zeitangaben ermitteln
 
  updateKNXHeaderText();
  updateWakeupTimers(); # ruft auch updateKNXWakeupText()
  updateTVTimers();
  updateRadioTimers();
  updateKNXPerSecond(); # sicherheitshalber auch das aufrufen, damit synchronisiert wird
  # regelmäßiger Hilfsaufruf für KNX-Anzeige, TV-Zeit und Wecker in FHEMApp 
 
  $total = $total + 60;
  my $text = sprintf("%02d:%02d:00", ($total / 60 / 60) % 24, ($total / 60) % 60);
  setTimer("at_updateKNXPerMinute1", $text, "updateKNXPerMinute()", "Allgemein", "");
  # jeweils zur nächsten vollen Minute at auslösen
  # teilweise erfolgt Aufruf vor voller Minute, daher 5 Zusatzsekunden addieren

  $total = $total + 60;
  $text = sprintf("%02d:%02d:00", ($total / 60 / 60) % 24, ($total / 60) % 60);
  setTimer("at_updateKNXPerMinute2", $text, "updateKNXPerMinute()", "Allgemein", "");
  # sicherheitshalber zweiten Timer setzen (in zwei Minuten)

  $total = $total + 8 * 60;
  $text = sprintf("%02d:%02d:00", ($total / 60 / 60) % 24, ($total / 60) % 60);
  setTimer("at_updateKNXPerMinute3", $text, "updateKNXPerMinute()", "Allgemein", "");
  # sicherheitshalber dritten Timer setzen (in 10 Minuten)
}

#-----------------------------------------------------------------------------------------------------------------#
sub updateKNXHeaderText() {

  (my $sec, my $min, my $hour, my $mday, my $month, my $year) = localtime();
 
  my $total = (($hour * 60) + $min) * 60 + $sec + 5;
  my $text = sprintf('%02d.%02d.%02d %02d:%02d', $mday, $month + 1, $year % 100,
                                                ($total / 60 / 60) % 24, ($total / 60) % 60);
  # teilweise erfolgt Aufruf vor voller Minute, daher 5 Zusatzsekunden addieren
 
  setKNXText(1, $text, 0);
  # Datum/Uhrzeit in KNX-Feld schreiben
 
  $text = sprintf("A: %s/%s/%s km/h", ReadingsNum("Wetter", "temperature", "", 1), ReadingsVal("Wetter", "weather", ""), ReadingsVal("Wetter", "wind", ""));
  $text = (length($text) > 28 ? substr(sprintf("%-42s", $text), 0, 42) : # auf Vielfaches von 14 Stellen formatieren
            (length($text) > 14 ? substr(sprintf("%-28s", $text), 0, 28) : substr(sprintf("%-14s", $text), 0, 14))) .
          sprintf("I1: %4s/%-5s", ReadingsNum("TemperaturKinderzimmer", "state", "", 1), getModusText()) .
          sprintf("I2: %4s/%-5s", ReadingsNum("TemperaturBewegungsmelder", "state", "", 1), getModusText());
  setKNXText(2, $text, 14);
  # Temperatur und Modus in KNX-Feld schreiben (Einzelzimmertemperatur nicht skalierbar)
}

#-----------------------------------------------------------------------------------------------------------------#
# Routinen für Weckersteuerung auf MDT-Taster (Zeile 3 + 4)
sub updateKNXWakeupText() {
  my $wakeup = getCurrentWakeupSwitch();
  setKNXText(3, isWakeupOn($wakeup) ? Value("WakeupTime". $wakeup) : "--:--", 0);
 
  my $timer = ReadingsVal("WakeupTime" . $wakeup, "timer", "default");
  if ($timer ne "-") { $timer = " (" . $timer . ")"; } else { $timer = ""; } 
  setKNXText(4, ReadingsVal("WakeupTime" . $wakeup, "text", "default") . $timer, 7);
 
  if ($timer ne "") {
    fhem("set WakeupLED 3"); # Grüne LED, wenn Wecker ein und nächster Wecker gewählt
  } else {
    fhem("set WakeupLED 2"); # Rote LED, wenn Wecker aus und nächster Wecker gewählt
  }
  # abhängig von Wecker-Status LEDs setzen
}

#-----------------------------------------------------------------------------------------------------------------#
# Spaltenweise Laufschrift auf KNX-Taster implementieren
my @knxText = ("leer", "init", "init", "init", "init", "init");
my @knxPos = (0, 0, 0, 0, 0, 0);
my @knxStep = (0, 0, 0, 0, 0, 0);
my $knxStatusText = "init";
my $knxStatusPos = 0;

sub setKNXText($$$) {
  my ($nr, $text, $step) = @_;
 
  $knxText[$nr] = $text;
  $knxPos[$nr] = 0;
  $knxStep[$nr] = $step;
  # Text merken und vorne beginnen
}

sub updateKNXPerSecond() {

  if ($knxText[1] ne "") { doKNXText(1); }
  if ($knxText[2] ne "") { doKNXText(2); }
  if ($knxText[3] ne "") { doKNXText(3); }
  if ($knxText[4] ne "") { doKNXText(4); }
  if ($knxText[5] ne "") { doKNXText(5); }
  if ($knxStatusText ne "") { doKNXStatusText(); }
  # belegte Zeilen aktualisieren
 
  setTimer("at_updateKNXPerSecond", "+00:00:02", "updateKNXPerSecond", "Allgemein", "");
  # Timer neu setzen
}

sub doKNXText($) {
  my ($nr) = @_;
 
  my $text = $knxText[$nr];
  my $pos = $knxPos[$nr];
  my $step = $knxStep[$nr];

  if ($pos + 14 - $step >= length($text)) {
    $pos = 0;
  }
  # wenn kein Resttext mehr vorhanden, dann wieder vorne beginnen

  if ($pos > 0 && (substr($text, $pos - 1, 2) eq "°" || substr($text, $pos - 1, 2) eq "ß")) { $pos = $pos + 1; }
  # nur "halbes" Unicode-Zeichen °/ß am Anfang, dann gleich ein Zeichen weiter springen
 
  if (substr($text, $pos, 1) eq " ") { $pos = $pos + 1; }
  # Leerzeichen am Anfang, dann gleich ein Zeichen weiter springen

  my $subtext = ($pos <= length($text)) ? substr($text, $pos, 14) : "";
  if (($pos + 13 <= length($text)) &&
      ((substr($text, $pos + 13, 2) eq "°") || (substr($text, $pos + 13, 2) eq "ß"))) {
    $subtext = substr($subtext, 0, 13);
  }
  # nur "halbes" Unicode-Zeichen °/ß am Ende, dann abschneiden 
 
  fhem("set Statustext$nr status " . (($subtext eq "") ? ">CLR<" : $subtext));
  $knxPos[$nr] = $pos + $step;
  # Nächsten Teil der Zeile anzeigen und neue Position merken 

  if ($step == 0 || length($text) <= 14) {
    $knxText[$nr] = "";
  }
  # wenn keine Laufschrift gewünscht oder zu kurz, Text löschen, womit er nicht mehr angezeigt wird
}

#-----------------------------------------------------------------------------------------------------------------#
# Zeilenweise Laufschrift auf KNX-Taster implementieren

sub setKNXStatusText($)
{
  my ($text) = @_;

  $text =~ s/ä/ae/g;
  $text =~ s/ö/oe/g;
  $text =~ s/ü/ue/g;
  $text =~ s/ß/ss/g;
  # Umlaute entfernen
 
  $knxStatusText = $text;
  $knxStatusPos = 0;
  # Text merken und vorne beginnen 
}

sub doKNXStatusText() {

  my $text = $knxStatusText;
  my $pos = $knxStatusPos;

  if (length($text) > 28) {
  } else {
    $knxStatusText = "";
  }
  # sofern mehr als zwei Zeilen benötigt werden, Timer für Laufschrift aktivieren
 
  if ($pos * 28 >= length($text)) {
    $pos = 0;
  }
  # wenn kein Resttext mehr vorhanden, dann wieder vorne beginnen

  $text = substr($text, $pos * 28, 28);
  fhem("set Statustext5 status " . substr($text, 0, 14));
  $text = length($text) > 14 ? substr($text, 14) : "";
  fhem("set Statustext6 status " . (($text eq "") ? ">CLR<" : $text));
  $knxStatusPos = $pos + 1;
  # Zwei Zeilen anzeigen und neue Startzeile merken, auch für PanelGruppe verwenden
}

Soweit mal als Erstinfo, danke nochmals!

LG
Stefan


StefanG

Hi Erwin,

die Nacht hat schon gereicht. Der Taster ist "eingeschlafen" und ja, man sieht einen großen Backlog. Es sind ca. 10.000 Zeilen im Puffer.

Ich hoffe, das hilft. Danke nochmals!

LG
Stefan


Internals:
  DEF        T 127.0.0.1:6720 1.1.200
  DeviceName 127.0.0.1:6720
  FD        52
  FUUID      64836d77-f33f-d238-6ac8-05813af6fc26a2e3
  NAME      KNXD
  NR        215
  PARTIAL   
  PhyAddr    1.1.200
  STATE      connected
  SVN        28206 2023-11-25
  TYPE      KNXIO
  devioLoglevel 4
  devioNoSTATE 1
  eventCount 2
  model      T
  msg_count  33351
  msg_time  2023-12-20 07:26:58
  nextOpenDelay 10
  KNXIOhelper:
    FIFOMSG    C01104w0130641bccccd
    FIFOTIMER  0
    lastWrite  1703053618.77262
    startdone  1
    FIFO:
    FIFOW:
      T
      ␔'H␆�I1: 20.8/Nacht
      T
      ␔'H␄�Heute Mi (+00:
      T
      ␔'H␆�I2: 22.2/Nacht
      T
      ␔'H␄�i (+00:03)
      T
      ␔'H␆�A: 2.7/Regen/3
      T
      ␔'H␄�Heute Mi (+00:
      T
      ␔'H␆�.6 km/h
      T
      ␔'H␄�i (+00:03)
      T
      ␔'H␆�I1: 20.8/Nacht

... (ca. 10.000 Zeilen)

      ␔'H␄�Do (+22:49)
      T
      ␔'H␆�I1: 21.0/Nacht
      T
      ␔'H␄�Morgen Do (+22
  READINGS:
    2023-12-19 20:48:20  state          connected
Attributes:
  devStateIcon connected:control_on_off@green
  group      Allgemein
  room      Allgemein

erwin

OK danke und noch eine Bitte:
kannst du im Log suchen, ob in der Zeit von FHEM-start bis zum "einschlafen" irgendwelche disconnect od. connect messages vom KNXIO dev auftauchen?
ich hab versucht, das Problem nachzustellen bisher ohne Erfolg, aber ich vermute wo das Problem ist.
Ich muss noch etwas länger testen...
klar ist mittlerweile, warum dein FHEM irgendwann "stehen bleibt" oder evtl. automatisch restarted wird: mit jeder zusätzlichen msg im buffer, steigt der Speicherbedarf und irgendwann zieht das Linux die Notbremse und killed / restarted FHEM!
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,...

StefanG

#74
Hi Erwin,

nach knapp 48 Stunden sind jetzt ca. 18000 Zeilen im Puffer, d.h. sie steigen weiter an.

Im Log finden sich unzählige delayed-Meldungen und Freezemon-Einträge, aber keine connect/disconnect vom KNXIO.

2023.12.20 00:32:28.190 3: KNXD [KNXIO_Write2 612]: frequent IO-write cmd - delayed
2023.12.20 00:32:28.314 3: KNXD [KNXIO_Write2 612]: frequent IO-write cmd - delayed

2023.12.21 00:00:02.963 1: [Freezemon] Freezemon: possible freeze starting at 00:00:00, delay is 2.963 possibly caused by: tmr-CODE(0x555f06fbd478)(KNXIO_Write2) tmr-SYSSTAT_GetUpdate(NGSwitch26) tmr-SYSSTAT_GetUpdate(NGSwitch8) tmr-SYSMON_Update(sysmon) tmr-BOSEST_checkWebSocketConnection(BoseRec) tmr-BOSEST_checkWebSocketConnection(BoseRec) tmr-FRITZBOX_Readout_Start(N/A) tmr-FRITZBOX_Readout_Start(N/A) tmr-PRESENCE_StartLocalScan(GristPresenceWLANGuest) tmr-PRESENCE_StartLocalScan(HarmonyWZPresenceWLAN) tmr-FRITZBOX_Readout_Start(N/A) tmr-harmony_connect(HarmonyWZ) tmr-PRESENCE_StartLocalScan(AlexaKuechePresenceWLAN) tmr-PRESENCE_StartLocalScan(SeimaPresenceWLANMAC) tmr-PRESENCE_StartLocalScan(GristPresenceWLANMAC) tmr-PRESENCE_StartLocalScan(AlexaSZPresenceWLAN)

Beim FHEM-Start habe ich noch das gefunden:

2023.12.19 20:47:49.135 3: KNXD [KNXIO_closeDev 928]: closed
2023.12.19 20:47:50.796 3: KNXD [KNXIO_Write 502]: called while not connected! Msg: w090060049323a2032332e312f5461670000 lost
2023.12.19 20:47:50.798 3: KNXD [KNXIO_Write 502]: called while not connected! Msg: w09004004d6920282b30393a323829000000 lost
2023.12.19 20:47:50.800 3: KNXD [KNXIO_Write 502]: called while not connected! Msg: w09007004648454d2d53797374656d206765 lost
2023.12.19 20:47:50.801 3: KNXD [KNXIO_Write 502]: called while not connected! Msg: w090080073746f707074202e2e2e00000000 lost

2023.12.19 20:48:20.381 3: KNXD [KNXIO_handleConn 878]: initial-connect

Kann ich noch was helfen? Danke jedenfalls!

LG
Stefan