Ankündigung

Einklappen
Keine Ankündigung bisher.

Diverse Aussetzer im KNXD mit Neustart des Service

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Diverse Aussetzer im KNXD mit Neustart des Service

    Hallo zusammen,

    so ungefähr drei Mal am Tag macht der KNXD einen Neustart und generiert folgende Einträge im Syslog:

    Jun 30 10:39:11 raspberrypi systemd[1]: Starting Clean php session files...
    Jun 30 10:39:11 raspberrypi systemd[1]: Started Clean php session files.

    Jun 30 11:08:04 raspberrypi knxd[12063]: E00000000: [13:B.ipt] Heartbeat messages unanswered
    Jun 30 11:08:04 raspberrypi knxd[12063]: F00000000: [12:B.ipt] Link down, terminating
    Jun 30 11:08:04 raspberrypi systemd[1]: knxd.service: Main process exited, code=exited, status=1/FAILURE
    Jun 30 11:08:04 raspberrypi systemd[1]: knxd.service: Unit entered failed state.
    Jun 30 11:08:04 raspberrypi systemd[1]: knxd.service: Failed with result 'exit-code'.
    Jun 30 11:08:14 raspberrypi systemd[1]: knxd.service: Service hold-off time over, scheduling restart.
    Jun 30 11:08:14 raspberrypi systemd[1]: Stopped KNX Daemon.
    Jun 30 11:08:14 raspberrypi systemd[1]: Starting KNX Daemon...
    Jun 30 11:08:14 raspberrypi systemd[1]: Started KNX Daemon.

    Woher kommt das? Worauf bezieht sich der Eintrag "Link down, terminating"?
    Irgendjemand einen Anfangsverdacht zur Fehlersuche?

    Danke und Gruß

    #2
    Äh, "Heartbeat messages unanswered". Die Kiste hinter dem ipt: antwortet nicht (mehr). Was ist daran unverständlich? Und wieso fragst du, auf was sich das bezieht - steht da doch: auf den ipt:-Treiber. (Ich bitte um Ergänzungsvorschläge zur Doku.)

    Angenommen, dein Netz ist stabil: Gib dem Hersteller von dem Ding einen Tritt, er möge eine Version herstellen, die ihre Verbindungen nicht abnibbelt.

    Alternativ: schreibe einen Filter, der eine Verbindung wieder aufbaut, wenn sie die Grätsche macht, und/oder der prophylaktisch alle paar Stunden selbige schließt und wieder öffnet. Ist mit ein bisschen C-Programmierkenntnissen nicht schwer. Ich hätte mir eh erhofft, dass der eine oder andere sowas in Angriff nimmt …
    DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

    Kommentar


      #3
      Lieber Smurf,
      meine Programmierkenntnis im Bereich von Programmiersprachen von PCs enden in etwa im Jahr 1995, als ich meinen Commodore C128 in Ruhestand geschickt habe. Basic war kein Problem; mit steigendem Alter ergibt sich aber auch eine leichte Schwierigkeit, sich in vollständig neue Gebiete einzuarbeiten: zudem wenn man keinen an die Hand bekommt, den man etwas fragen kann. Daher ist mir die Programmiersprache C (obwohl ich mal C# ausprobiert habe und damit auch an diversen Hürden gescheitert bin) in etwa so fern wie der Planet Jupiter der Erde. Daher sehe ich mich wissenlich nicht in der Lage, einen Filter zu schreiben. Vielmehr versuche ich mich bisher ein bischen in Python; in der Hoffnung, dort ein wenig Verständnis für diese Sprache zu erlangen. Sonst hab ich mich seit Jahrzehnten dem Elektrohandwerk verschrieben. Das nur am Rande...

      Offensichtlich habe ich meine Frage aber auch nicht genau und präzise formuliert: Ich würde gerne wissen, was sich hinter der "Heartbeat Message" versteckt. Ein Ping an die Netzwerkschnittstelle des IP-Interface? Oder was sonst? Und wie oft? Wie lange wartet der auf eine Antwort? Kann es daher auch gegebenenfalls daran liegen, dass der Raspberry mit dem KNXD nur im WLAN funkt und keine Drahtverbindung zum LAN hat und nicht an der IP-Schnittstelle liegt?
      Das war meine Intension hinter meiner Fragestellung...

      Vielen Dank vorab für die (hoffentlich für mich verständliche) Antwort!

      Gruß

      Kommentar


        #4
        Hallo Smurf!

        Ich habe auch ein ähnliches Problem.
        Bei mir kommt auch die "Heartbeat message unanswered" Meldung.
        Habe schon einiges getestet, komme aber nicht weiter.

        meine Konfig:

        Version: knxd 0.14.25

        KNXD_OPTS="-e 1.1.253 -E 1.1.155:2 -A heartbeat-timer=240 -A heartbeat-retries=240 -b ipt:10.0.30.25"
        START_KNXD=YES

        habe Heartbeat Timer und retries einfach sehr hoch gesetzt, da mir sonst alle 90 Sekunden KNXD für 10 Sekunden nicht aktiv ist. Wenn der Heartbeat nicht beantwortet wird, beendet KNXD ja den Dienst für 10 Sekunden und startet dann wieder. So habe ich immer wieder falsche Anzeigen im FHEM, da über KNX die Messages nicht ankommen - wenn KNXD gerade nicht da ist.

        Dass die Heartbeats nicht beantwortet werden - das Problem habe ich immer. Tritt also nicht nur ab und zu auf.
        Hier wäre wirklich interessant, wie genau diese Abfrage funktioniert? Ein einfacher netzwerk PING wird es nicht sein. Habe ein stabiles Netzwerk und von daher keine Probleme.

        Habe eine Logdatei angefügt, wo man gut die Heartbeat Anfragen sieht.

        Hier ein Auszug:
        Sep 04 08:32:04 raspberrypi knxd[30422]: Layer 0 [11:A.ipt/ipt 596.548] Send(010): 06 10 04 21 00 0A 04 40 D5 00
        Sep 04 08:32:08 raspberrypi knxd[30422]: Layer 1 [11:A.ipt/ipt 600.025] Heartbeat
        Sep 04 08:32:08 raspberrypi knxd[30422]: Layer 1 [11:A.ipt/ipt 600.025] Send(010): 40 00 08 01 0A 00 1E 18 D4 EF
        Sep 04 08:32:08 raspberrypi knxd[30422]: Layer 0 [11:A.ipt/ipt 600.025] Send(016): 06 10 02 07 00 10 40 00 08 01 0A 00 1E 18 D4 EF
        Sep 04 08:32:08 raspberrypi knxd[30422]: Layer 0 [11:A.ipt/ipt 600.028] Recv(016): 06 10 02 08 00 10 40 00 08 01 0A 00 1E 19 0E 57
        Sep 04 08:32:08 raspberrypi knxd[30422]: Layer 1 [11:A.ipt/ipt 600.028] Invalid response

        Nach dem Heartbeat kommt immer ein "Invalid response" zurück.

        Ich muss hier noch dazusagen: Ich habe kein IP Gateway sondern ich habe den Touch Controll Baustein bei mir verbaut. Ich kann damit genau so zugreifen wie auf das IP Gateway - aber ev. muss hier noch etwas eingestellt werden, damit die Antworten für KNXD passen? Oder muss ich in der Konfig bei KNXD noch etwas anderes eintragen?

        Mit den Timern kann ich mich schon ein wenig behelfen. Statt alle 90 Sekunden bricht es mir jetzt bei 240 Sekunden Hartbeat Timer und 240 Wiederholungen alle 16 Stunden einmal ab. Läuft soweit... sollte aber tatsächlich irgend etwas ausfallen würde KNXD dann trotzdem die vollen 16 Stunden abwarten, bevor der Neustart passiert.

        Vielleicht hättest du eine Idee.
        Würde mich freuen.
        Angehängte Dateien

        Kommentar


          #5
          Äh, ja. Die Antwort deines Touch Control-Tiers ist einfach falsch. Du kannst in der Funktion "parseEIBnet_ConnectionStateResponse" (src/libserver/eibnetip.cpp) den Test auf "p.data.size() != 2" entfernen.
          DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

          Kommentar


            #6
            Hallo Smurf!
            hab das probiert und meine Heardbeats wieder runter gestellt. Startet trotzdem immer neu.
            vielleicht hab ich das auch nicht ganz richtig gemacht.

            hier der Auszug von meinen Änderungen - (habe die beiden Zeilen einfach auskommentiert) - in /home/pi/knxd/src/libserver/eibnetip.cpp

            parseEIBnet_ConnectionStateResponse (const EIBNetIPPacket & p,
            EIBnet_ConnectionStateResponse & r)
            {
            if (p.service != CONNECTIONSTATE_RESPONSE)
            return 1;

            /* Edit 8.9.2018
            https://knx-user-forum.de/forum/proj...57#post1264057

            if (p.data.size() != 2)
            return 1;

            */
            r.channel = p.data[0];
            r.status = p.data[1];
            return 0;

            hast du das anders gemeint?

            Kommentar

            Lädt...
            X