Ankündigung

Einklappen
Keine Ankündigung bisher.

[Showcase] SpectrumKNX – Neues Tool für Langzeit-Analyse & Telegramm-Deep-Dive

Einklappen
Dieser Beitrag wurde beantwortet.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    mein Fork war da ziemlich konsequent konsistent bis - aufgrund der Geschwindigkeit mit den Agents - auch bei mir der Wildwuchs (und die Kosten) zunahm
    Problem ist halt, wenn weiter Funktionalität so rasant dazu kommt, Inkonsistenz zunimmt, User sich daran gewöhnen und damit arbeiten, dann wirds schwer da wieder was wegzunehmen um wieder konsistent zu werden…
    auch das Visualization Panel ist in meinem Fork schwer überarbeitet: es ist zeitlich horizontal einheitlich und übergreifend layoutet, es geht bis zur now() time, zeigt rechts den aktuellen Wert an, es ist vertikal korrekt skaliert, mouseover zeigt immer der maus-position zeitlich vorhergehenden Wert an, nicht nähesten zukünftigen… ich hab so viel überarbeitet… und will das nochmal neu machen weil mir nicht gefällt wie die Agenten da ran gingen…

    Kommentar


      @martinhoefling​
      Echt cooles Projekt. Ich nutze SpectrumKNX echt gerne, um ein paar Ungereimtheiten in der Installation zu finden.
      Für weitere Verbesserungsvorschläge fällt einem kaum noch etwas ein, da das Tool fast alles kann. Man könnte Filter ggf. speichern und einzeln aktivieren/deaktivieren. Mit Farbe pro Filter ggf. oder so. Manchmal sucht man etwas und dann ist etwas anderes wichtiger und man wechselt hin und her. Könnte praktisch sein, ist aber kein Must Have.

      Viele Grüße
      Nils

      Kommentar


        TabSel u d martinhoefling
        Man merkt nun schnell die Probleme die bei Agentic coding entstehen. In rasende4 Geschwindigkeit kommt ein neues Feature nach dem nächsten in die Software und die UI bzw. UX kommt nicht mehr hinterher.

        ich finds nen klasse Projekt und bin gespannt wie ihr das löst. Ggf. Hilft euch Claude Design um die UI erstmal aufzuräumen.

        Kommentar


          Hi Martin,

          super vielen Dank.

          Zitat von martinhoefling Beitrag anzeigen
          In der Info-Leiste der Telegrammliste (i-Symbol im Spaltenkopf) gibt es einen Button CSV. Er exportiert genau die aktuelle Ansicht, also mit allen angewendeten Filtern inkl. Quick-Filter und Δt-Kontext. Unter Import/Export lässt sich die Datenbank zusätzlich zu ETS6-XML auch als CSV exportieren, Trennzeichen ; oder ,.
          ​
          - Bei Temperatur wird mit Punkt exportiert, 22.2°C. Excel erkennt das standardmäßig als Datum
          - Source wird als Datum erkannt
          - Target GA wird ebenfalls als Datum erkannt (1/1/5)
          - timestamp könnte man ggf. in Datum, Uhrzeit und Telegramm Differenz trennen

          Ich weiß ist kein Export Problem und über Daten importieren aus Excel geht das auch, nur unständiger.



          Zitat von martinhoefling Beitrag anzeigen
          Geändert[*]Binary-Timeline: volle GA-Namen (TWART016): Die Namensspalte wird so breit wie der längste Name (bis 280 px) statt nach ca. 17 Zeichen abzuschneiden. Bei Hover stehen der volle Name und die Adresse. On/Off steht im sichtbaren Teil des Balkens.
          ​
          Der untere Balkon wird unten auch noch abgeschnitten.
          image.png




          Zitat von martinhoefling Beitrag anzeigen
          [*]Visualisierung zeigt nur ca. 2,5 h (TWART016): Das ist keine Grenze der Visualisierung. Sie zeigt alles, was im Telegramm-Puffer geladen ist, und der hält standardmäßig die neuesten 100.000 Telegramme. Bei viel Busverkehr sind das eben ca. 2,5 h. Das Limit lässt sich in den Einstellungen erhöhen, ältere Daten kann man mit „Load History“ nachladen.
          ​
          Eigentlich müssen bei mir mehr angezeigt werden. Mit werden nur in den letzten 2,5h angezeigt. Das sollten im Durchschnitt bei weitem keine 100.000 Telegramme sein
          image.png​image.png​

          Kommentar


            martinhoefling: zur CONTRIBUTING.md: ich möchte am frontend arbeiten, aber auch das backend starten um in Echtzeit Telegramme zu erhalten.
            Ich hab also meine .env erzeugt (routing) und starte docker mit „docker-compose up -d backend db”. Im knx_backend log bekomme ich die Meldung: „no Module named ‘knx_telegram_store.mcp’”

            btw. Ich bekomme (auf meinem HAOS @ Pi) immer wieder mal im UI die Meldung „HIstory failed”. Nicht immer. Nach einem Neustart ist alles ok, nach einiger Zeit, wenn ich wieder spectrumKNX öffne sehe ich die Meldung. Wenn ich zu „database maintenance“ springe sehe ich dann ein leeres Panel. Im Log fiel mir eine Exception auf, irgendwas mit SWITCH, JSON… Ich kopier die Meldung hier rein sobald ich sie wieder sehe…

            hier ein Auszug aus dem log:

            …
            payload': None, 'dpt_main': 1, 'dpt_sub': 1, 'value': 0.0, 'value_numeric': None, 'raw_data': '00', 'data_secure': None}, {'timestamp': datetime.datetime(2026, 10, 22, 13, 37, 20, 29287, tzinfo=datetime.timezone.utc), 'source_id': 8, 'destination_id': 7, 'telegramtype_id' ... (44 characters truncated) ... , 'destination_name_id': 51, 'payload': None, 'dpt_main': 1, 'dpt_sub': 1, 'value': 1.0, 'value_numeric': None, 'raw_data': '01', 'data_secure': None}, {'timestamp': datetime.datetime(2026, 10, 22, 13, 37, 25, 786048, tzinfo=datetime.timezone.utc), 'source_id': 80, 'destination_id': 54, 'telegramtype_ ... (50 characters truncated) ... destination_name_id': 59, 'payload': None, 'dpt_main': 9, 'dpt_sub': 1, 'value': 19.9, 'value_numeric': None, 'raw_data': '07c6', 'data_secure': None}, {'timestamp': datetime.datetim
            e(2026, 10, 22, 13, 37, 25, 831528, tzinfo=datetime.timezone.utc), 'source_id': 80, 'destination_id': 187, 'telegramtype ... (52 characters truncated) ... estination_name_id': 186, 'payload': None, 'dpt_main': 9, 'dpt_sub': 7, 'value': 57.6, 'value_numeric': None, 'raw_data': '15a0', 'data_secure': None}, {'timestamp': datetime.datetime(2026, 10, 22, 13, 37, 26, 986511, tzinfo=datetime.timezone.utc), 'source_id': 170, 'destination_id': 1479168, 'telegra ... (62 characters truncated) ... nation_name_id': 1479202, 'payload': None, 'dpt_main': 9, 'dpt_sub': 4, 'value': 46.0, 'value_numeric': None, 'raw_data': '147e', 'data_secure': None}, {'timestamp': datetime.datetime(2026, 10, 22, 13, 37, 26, 992076, tzinfo=datetime.timezone.utc), 'source_id': 62, 'destination_id': 47, 'telegramtype_ ... (50 characters truncated) ... destination_name_id': 40, 'payload': None, 'dpt_main': 9, 'dpt_sub': 4, 'value': 50.6, 'value_numeric': None, 'raw_data': '14f1', 'data_secure': None}]]
            The above exception was the direct cause of the following exception:
            Traceback (most recent call last):
            File "/opt/venv/lib/python3.13/site-packages/starlette/routing.py", line 654, in lifespan
            async with self.lifespan_context(app) as maybe_state:
            ~~~~~~~~~~~~~~~~~~~~~^^^^^
            File "/usr/lib/python3.13/contextlib.py", line 221, in __aexit__
            await anext(self.gen)
            File "/opt/venv/lib/python3.13/site-packages/fastapi/routing.py", line 247, in merged_lifespan
            async with original_context(app) as maybe_original_state:
            ~~~~~~~~~~~~~~~~^^^^^
            File "/usr/lib/python3.13/contextlib.py", line 221, in __aexit__
            await anext(self.gen)
            File "/app/backend/main.py", line 62, in lifespan
            await knx_shutdown()
            File "/app/backend/knx_daemon.py", line 873, in knx_shutdown
            await store.stop()
            File "/opt/venv/lib/python3.13/site-packages/knx_telegram_store/store.py", line 28, in wrapper
            return await func(*args, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
            File "/opt/venv/lib/python3.13/site-packages/knx_telegram_store/buffered.py", line 149, in stop
            await self.close()
            File "/opt/venv/lib/python3.13/site-packages/knx_telegram_store/store.py", line 28, in wrapper
            return await func(*args, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
            File "/opt/venv/lib/python3.13/site-packages/knx_telegram_store/buffered.py", line 137, in close
            await self._flush(raise_on_error=True)
            File "/opt/venv/lib/python3.13/site-packages/knx_telegram_store/buffered.py", line 218, in _flush
            await self.store_many(batch)
            File "/opt/venv/lib/python3.13/site-packages/knx_telegram_store/store.py", line 28, in wrapper
            return await func(*args, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
            File "/opt/venv/lib/python3.13/site-packages/knx_telegram_store/buffered.py", line 199, in store_many
            await super().store_many(telegrams) # type: ignore[misc]
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            File "/opt/venv/lib/python3.13/site-packages/knx_telegram_store/store.py", line 32, in wrapper
            raise KnxTelegramStoreException(f"Database error during {func.__name__}: {err}") from err
            knx_telegram_store.store.KnxTelegramStoreException : Database error during store_many: (builtins.TypeError) Object of type Switch is not JSON serializable
            [SQL: INSERT INTO telegrams (timestamp, source_id, destination_id, telegramtype_id, direction_id, source_name_id, destination_name_id, payload, dpt_main, dpt_sub, value, value_numeric, raw_data, data_secure) VALUES ($1::TIMESTAMP WITH TIME ZONE, $2::INTEGER, $3::INTEGER, $4::INTEGER, $5::INTEGER, $6::INTEGER, $7::INTEGER, $8::JSON, $9::INTEGER, $10::INTEGER, $11::JSON, $12::FLOAT, $13::VARCHAR, $14::BOOLEAN)]
            [parameters: [{'timestamp': datetime.datetime(2026, 10, 22, 12, 18, 33, 441847, tzinfo=datetime.timezone.utc), 'source_id': 99, 'destination_id': 97, 'telegramtype_ ... (53 characters truncated) ... stination_name_id': 98, 'payload': None, 'dpt_main': 9, 'dpt_sub': 4, 'value': 162.08, 'value_numeric': None, 'raw_data': '1fea', 'data_secure': None}, {'timestamp': datetime.datetime(2026, 10, 22, 12, 18, 33, 773463, tzinfo=datetime.timezone.utc), 'source_id': 5, 'destination_id': 4, 'telegramtype_id ... (52 characters truncated) ... tination_name_id': 123, 'payload': None, 'dpt_main': 9, 'dpt_sub': 4, 'value': 304.96, 'value_numeric': None, 'raw_data': '2772', 'data_secure': None}, {'timestamp': datetime.datetime(2026, 10, 22, 12, 18, 33, 838630, tzinfo=datetime.timezone.utc), 'source_id': 18, 'destination_id': 20, 'telegramtype_ ... (50 characters truncated) ... destination_name_id': 22, 'payload': None, 'dpt_main': 9, 'dpt_sub': 4, 'value': 59.8, 'value_numeric': None, 'raw_data': '15d7', 'data_secure': None}, {'timestamp': datetime.datetime(2026, 10, 22, 12, 18, 34, 951559, tzinfo=datetime​
            …

            das log quillt über mit Meldungen über alles was in die db geschrieben wird… trotz log level error….
            Zuletzt geändert von TabSel; Gestern, 14:43.

            Kommentar

            Lädt...
            X