Ankündigung

Einklappen
Keine Ankündigung bisher.

knxd neu starten, wenn er alleine auf dem Bus ist

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

    knxd neu starten, wenn er alleine auf dem Bus ist

    Hallo,

    ich hatte es jetzt bereits mehrfach, dass der KNXD zwar gestartet ist, aber keine Bus-Kommunikation stattfand.
    Zweimal lag es schlicht daran, dass das IP-Interface keinen freien Tunnel hatte.
    Zweimal weiß ich aber auch nicht, woran is lag.
    In beiden Fällen haben (mehrere) Neustarts geholfen.

    Ich würde mir wünschen, dass der KNXD sich - optional - selbst beendet, wenn über den Bus in einer gewissen Zeit nix kommt. Dann kann der SystemD einen Neustart einleiten.

    Wobei - im Falle des fehlenden freien Tunnels sollte der KNXD auch selbst das Problem erkennen und einen Re-Connect versuchen...

    Gruß,
    Hendrik

    #2
    > Ich würde mir wünschen, dass der KNXD sich - optional - selbst beendet, wenn über den Bus in einer gewissen Zeit nix kommt.

    Das kann eigentlich nur bei Routing passieren. Bei Tunnelling müsste es immer mindestens den Heartbeat geben.

    Und wie du schon gesagt hast - bei keinem freien Tunnel müsste der Server einen Error zurückgeben.

    Kommentar


      #3
      Hm... Da hast du Recht.
      Ich habe gerade den Server neu gestartet. Gleiches Problem:
      Code:
      -- Journal begins at Wed 2022-07-20 19:15:20 CEST, ends at Wed 2022-07-20 19:23:00 CEST. --
      Jul 20 19:15:22 homeserver systemd[1]: Starting KNX Daemon...
      Jul 20 19:15:22 homeserver knxd[759]: E00000064: [31:router] router: setup router: failed
      Jul 20 19:15:22 homeserver knxd[759]: F00000105: [25:C.ipt] Link down, terminating
      Jul 20 19:15:22 homeserver knxd[759]: F00000105: [14:server] Link down, terminating
      Jul 20 19:15:22 homeserver systemd[1]: Started KNX Daemon.
      Jul 20 19:15:22 homeserver systemd[1]: knxd.service: Main process exited, code=exited, status=1/FAILURE
      Jul 20 19:15:22 homeserver systemd[1]: knxd.service: Failed with result 'exit-code'.
      Jul 20 19:15:32 homeserver systemd[1]: knxd.service: Scheduled restart job, restart counter is at 1.
      Jul 20 19:15:32 homeserver systemd[1]: Stopped KNX Daemon.
      Jul 20 19:15:32 homeserver systemd[1]: Starting KNX Daemon...
      Jul 20 19:15:32 homeserver systemd[1]: Started KNX Daemon.
      Jul 20 19:15:42 homeserver knxd[6900]: F00000105: [25:C.ipt] Link down, terminating
      Jul 20 19:15:42 homeserver systemd[1]: knxd.service: Main process exited, code=exited, status=1/FAILURE
      Jul 20 19:15:42 homeserver systemd[1]: knxd.service: Failed with result 'exit-code'.
      Jul 20 19:15:52 homeserver systemd[1]: knxd.service: Scheduled restart job, restart counter is at 2.
      Jul 20 19:15:52 homeserver systemd[1]: Stopped KNX Daemon.
      Jul 20 19:15:52 homeserver systemd[1]: Starting KNX Daemon...
      Jul 20 19:15:52 homeserver systemd[1]: Started KNX Daemon.
      Jul 20 19:16:02 homeserver knxd[8464]: F00000105: [25:C.ipt] Link down, terminating
      Jul 20 19:16:02 homeserver systemd[1]: knxd.service: Main process exited, code=exited, status=1/FAILURE
      Jul 20 19:16:02 homeserver systemd[1]: knxd.service: Failed with result 'exit-code'.
      Jul 20 19:16:12 homeserver systemd[1]: knxd.service: Scheduled restart job, restart counter is at 3.
      Jul 20 19:16:12 homeserver systemd[1]: Stopped KNX Daemon.
      Jul 20 19:16:12 homeserver systemd[1]: Starting KNX Daemon...
      Jul 20 19:16:12 homeserver systemd[1]: Started KNX Daemon.
      Jul 20 19:16:22 homeserver knxd[9763]: F00000105: [25:C.ipt] Link down, terminating
      Jul 20 19:16:22 homeserver systemd[1]: knxd.service: Main process exited, code=exited, status=1/FAILURE
      Jul 20 19:16:22 homeserver systemd[1]: knxd.service: Failed with result 'exit-code'.
      Jul 20 19:16:33 homeserver systemd[1]: knxd.service: Scheduled restart job, restart counter is at 4.
      Jul 20 19:16:33 homeserver systemd[1]: Stopped KNX Daemon.
      Jul 20 19:16:33 homeserver systemd[1]: Starting KNX Daemon...
      Jul 20 19:16:33 homeserver systemd[1]: Started KNX Daemon.
      root@homeserver:~# service knxd status
      ● knxd.service - KNX Daemon
           Loaded: loaded (/lib/systemd/system/knxd.service; enabled; vendor preset: enabled)
           Active: active (running) since Wed 2022-07-20 19:16:33 CEST; 6min ago
      TriggeredBy: ● knxd.socket
         Main PID: 10535 (knxd)
            Tasks: 1 (limit: 9225)
           Memory: 576.0K
              CPU: 381ms
           CGroup: /system.slice/knxd.service
                   └─10535 /usr/bin/knxd /etc/knxd.ini
      
      Jul 20 19:16:33 homeserver systemd[1]: Starting KNX Daemon...
      Jul 20 19:16:33 homeserver systemd[1]: Started KNX Daemon.
      Er startet also schon mehrmals neu. Beim letzten Mal aber nicht mehr. Aber er bekommt auch nix vom Bus mit und ich kann auch nix schalten...

      Die selbe Installation lief vorher auf anderer Hardware (habe die SSD rüber kopiert, also wirklich die selbe installation).

      Meine knxd.ini
      Code:
      cat /etc/knxd.ini
      [B.tcp]
      server = knxd_tcp
      systemd-ignore = true
      [C.ipt]
      driver = ipt
      filters = single,D.pace
      ip-address = 192.168.177.8
      [D.pace]
      delay = 120
      filter = pace
      [debug-server]
      name = mcast:knxd
      [main]
      addr = 1.0.200
      cache = A.cache
      client-addrs = 1.0.201:8
      connections = server,B.tcp,C.ipt
      systemd = systemd
      [server]
      debug = debug-server
      discover = true
      router = router
      server = ets_router
      tunnel = tunnel
      Workan kann das liegen?

      Gruß,
      Hendrik

      Kommentar


        #4
        Smurf kannst du mir hier weiterhelfen?

        Ich hab diese Installation so wie sie ist von einem Rechner auf den anderen übertragen.
        Beim neuen Rechner habe ich das Problem dass ich den knxd nach dem Reboot mehrmals neu starten muss, bevor er funktioniert (also wirklich etwas auf den Bus sendet).
        systemctl status knxd sieht aber normal aus.

        Wo kann ich weiter nach dem Problem suchen?

        Gruß,
        Hendrik

        Kommentar


          #5
          Hallo,

          zusammen mit bmx habe ich das Problem jetzt weiter analysiert.
          Das Problem ist folgendes:
          Smarthome-ng bekommt unvollständige Daten vom KNXd:
          Code:
          2022-10-23  12:17:14 DEBUG    plugins.knx         KNXD message CACHE_READ received  with data 00000701
          2022-10-23  12:17:14 DEBUG    plugins.knx         KNXD message CACHE_READ received  with data 00000a02
          ​2022-10-23  12:17:14 DEBUG    plugins.knx         KNXD message CACHE_READ received  with data 00000ab2​
          Laut Bernd sollten da mehr als 4 bytes kommen.

          Warum das so ist, können wir nicht sagen. Aber soweit haben wir das verstanden:
          1) ich mache einen neustart vom System. Früher war das kein Problem. Jetzt ist der Reboot schneller so dass
          2) der (einzige) Tunnel der IP-Schnittstelle noch nicht wieder frei ist.
          3) der knxd startet
          4) smarthomeng hat als dependency den knxd und started richtigerweise erst nach dem knxd
          5) der knxd startet neu -dreimal- bis der Tunnel wieder frei ist
          6) smarthome und knxd kommen damit nicht klar, dass der knxd letztlich nach smarthomeng gestartet wurde

          Mein Wunsch von oben:
          Ich würde mir wünschen, dass der KNXD sich - optional - selbst beendet, wenn über den Bus in einer gewissen Zeit nix kommt. Dann kann der SystemD einen Neustart einleiten.
          Ist also schon implementiert.

          Allerdings scheint mir dieses Verhalten doch nicht gut zu sein, da so der systemd nicht mehr sicherstellen kann, dass der knxd vollständig und korrekt (mit Busverbindung) gestartet ist.

          Ist es möglich, dies mit systemd bordmitteln - der müsste ja darauf warten dass der KNXd eine Verbindung aufgebaut hat- zu lösen?

          Interessanter wäre allerdings, warum knxd&smarthome-ng hiermit nicht klarkommen. Es gibt von smarthome-ng eine neuere Version (1.9.2), in der das Verhalten besser sein könnte. Das werde ich ausprobieren und Rückmeldung geben.

          Ich werde aber die Schnittstelle austauschen. Mir geht es hier nur darum das Verhalten zu dokumentieren.

          Gruß,
          Hendrik

          Kommentar


            #6
            Der einfachste Workaround wäre, im systemd service File mittels ExecStartPre ein paar Sekunden zu warten, bevor knxd über ExecStart gestartet wird. Dazu einfach folgende Zeile ins service File im Abschnitt [service] ergänzen

            Code:
            ExecStartPre=/bin/sleep 5​
            Schöner wäre natürlich, wenn man irgendwie über die KNX Tools testen könnte, ob der Tunnel schon wieder frei ist. Da hab ich mich jetzt aber auf die Schnelle nicht eingelesen.
            Wie ExecStartPre funktioniert, kann man hier nachlesen: https://www.freedesktop.org/software...d.service.html

            Kommentar


              #7
              Wobei ich gerade in der vorangegangenen Antwort sehe, dass das service File unter /lib und nicht /etc liegt.
              Zitat von henfri Beitrag anzeigen
              knxd.service - KNX Daemon Loaded: loaded (/lib/systemd/system/knxd.service; enabled; vendor preset: enabled)
              Von daher würde ich das service File erst kopieren und dann das File im /etc/systemd/system Verzeichnis editieren.

              Code:
               cp /lib/systemd/system/knxd.service /etc/systemd/system/knxd.service
              Damit umgeht man, dass der Paket-Manager das service File wieder überschreibt, wenn man ein Update macht.

              Kommentar


                #8
                Hallo,

                danke für den Tipp. Das hatte ich schon probiert (mit 15s) aber selbst 15s reichen nicht. Ich könnte das jetzt auf 45s hochschrauben. Aber vielleicht reichen die auch (mal) nicht.

                Es ist halt ein Workaround. Besser wäre wenn die Tools damit klarkommen. Ich würde mir wünschen, dem Fehler weiter auf den Grund zu gehen.

                Gruß,
                Hendrik

                Kommentar

                Lädt...
                X