Ankündigung

Einklappen
Keine Ankündigung bisher.

KNXD Bash

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

    KNXD Bash

    Hallo Freunde

    Ich möchte mit Bash über KNXD Gruppenadressen auslesen Werte umwandeln und per UDP versenden.

    Also Mich Interessiert jetzt der Teil wie am besten Vom KNX auslesen und weiterverarbeiten?

    Hab es jetzt mal so probiert:

    input=$(knxtool read ip:localhost $line) $line sind die GA`s aus einer Datei
    echo $input

    Das ganze bleibt aber leider nach 1-2 Minuten hängen

    gibt es da eine bessere Lösung?

    Danke LG Peter

    #2
    Schwer zu sagen aber vermutlich ja Erste Frage wäre ob die Werte ausm Cache vom knxd kommen (kannst nicht mit ner "schleife" so übern Bus "rutschen".. Pausen (sleep) einbauen wäre ein erster Tipp..)
    Dann kommt es stark auf das KNX-Interface an, USB fällt da gleich tot um, IP-Router geht, TP-UART auch.

    Ansonsten müsste man besser wissen, worum es geht - Wege gibts viele, auch viele Codebeispiele (meine ganze Ansteuerung von X10 Fernbedienungen läuft zu 90% mit LIRC und Bash seit über 10J)
    Aber ne wirkliche "Doku" ? Eher nicht, dazu wollte mich noch keiner beauftragen

    Edit: was mir grad noch durch den Kopf ging: denke immer daran, KNX ist "Eventgetrieben", also in einer Schleife auslesen eher nicht die beste Idee. Der vbusmonitor ist da eher dein "Freund" (und erheblich schneller mit weniger Buslast, weil du musst keine Lesetelegramm versenden und auf die AW warten sondern bekommst es sofort und das ohne zus. Buslast)

    Makki
    Zuletzt geändert von makki; 04.03.2022, 15:44.
    EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
    -> Bitte KEINE PNs!

    Kommentar


      #3
      Das wär mir eh das Liebste wenn Ich alles vom Monitor rein bekommen würde.....aber wie wie bekomme Ich die Werte vom Monitor nach Bash zum weiterverarbeiten?


      also Ich möchte die Werte einlesen, umrechnen und an MQTT oder per UDP weitersenden

      LG

      Kommentar


        #4
        Peter, warum muss es ausgerechnet bash sein?

        Kommentar


          #5
          Weil Ich mich da am besseren "auskenne" ;-) aber was würdest Du vorschlagen?

          Ich meinte besser als Python/Perl/js/Jawa oder so was aber nicht heißt das Ich mich gut auskenne ;-)

          Kommentar


            #6
            so das einlesen hab Ich geschafft

            wie setzen sich die Daten beim Vbusmonitor2 zusammen? z.B.: BC 11 FA 17 03 E3 00 80 00 90 4F gibt es da eine einfache schnelle Möglichkeit diese zu dekodieren?

            oder ist es leichter mit einem anderen Monitor?

            Ich benötige die Ga und den Wert in dez oder text (wenn Text kommt)

            Kommentar


              #7
              Zitat von Fireworker Beitrag anzeigen
              oder ist es leichter mit einem anderen Monitor?
              Ich benötige die Ga und den Wert in dez oder text (wenn Text kommt)
              Ja, das ginge sehr einfach mit linknx. Lies dich hier mal ein: https://github.com/linknx/linknx/wiki
              Wenn du für linknx das Logging einschaltest, dann siehst du den Busverkehr quasi in Text und Dezimal. Hier ein Beispiel von meinem aktuellen Log. Die GA Bezeichnungen sind hier gleich in Beschreibungen übersetzt.

              Code:
              2022-03-04 19:02:52 [ INFO] Object: New value off for object licht_f (type: 1.001)
              2022-03-04 19:02:52 [ INFO] FilePersistentStorage: Writing 'off' for object 'licht_f'
              2022-03-04 19:02:52 [ INFO] FilePersistentStorage: Writing log'off' for object 'licht_f'
              2022-03-04 19:02:52 [ INFO] Object: New value 0 for object dimmzustand_licht_f (type: 5.xxx)
              2022-03-04 19:02:59 [ INFO] Object: New value off for object rtr_2 (type: 1.001)
              2022-03-04 19:02:59 [ INFO] FilePersistentStorage: Writing log'off' for object 'rtr_2'
              2022-03-04 19:02:59 [ INFO] Object: New value off for object rtr_4 (type: 1.001)
              2022-03-04 19:02:59 [ INFO] FilePersistentStorage: Writing log'off' for object 'rtr_4'
              2022-03-04 19:02:59 [ INFO] Object: New value off for object rtr_3 (type: 1.001)
              2022-03-04 19:02:59 [ INFO] FilePersistentStorage: Writing log'off' for object 'rtr_3'
              2022-03-04 19:03:00 [ INFO] Object: New value 19:03:00 for object time (type: 10.001)
              2022-03-04 19:03:00 [ INFO] Object: New value 2022-3-4 for object date (type: 11.001)
              2022-03-04 19:03:01 [ INFO] Object: New value 21.3 for object ist_hzv6 (type: 9.xxx)
              2022-03-04 19:03:01 [ INFO] FilePersistentStorage: Writing log'21.3' for object 'ist_hzv6'
              Du könntest nun einen Job an das Log anhängen, welcher den Output parsed und wie gewünscht die Meldungen weiterschickt.
              EIB/KNX, VISU mit knxd + linknx + knxweb, Steuerbefehle via SMS und Email mit postfix + procmail

              Kommentar


                #8
                Man könnte stattdessen auch mit einer "richtigen" Programmiersprache arbeiten … Python und xknx zB. Langfristig lohnt sich das mehr als auf ewig mit der Shell rumzubasteln. "Wenn man nur nen Hammer hat, sieht jedes Problem wie ein Nagel aus …"
                DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

                Kommentar


                  #9
                  Tru hat schon linknx vorgeschlagen. Ich arbeite mit SmartHomeNG und einem Plugin das mit knxd zusammenarbeitet. Es gibt da aber noch zig Lösungen zu einem Problem was wir hier noch nicht kennen.

                  Was willst Du denn anschliessend mit den Daten anfangen? Vielleicht kann man Dir dann was besseres als Bash vorschlagen?

                  Kommentar


                    #10
                    Hallo BMX Ich möchte die Daten vom Busmonitor einlesen, aufbereiten (also in die richtigen Dezimal zahlen, DPT1 und DPT:16 Text funktionieren schon) und die dann in dieser Form
                    knx/x/x/x <Wert> an Mqtt senden oder an einen Loxone Miniserver. Das senden knx/x/x/x <Raw Daten> funktioniert schon (das sind in Bash ein paar Zeilen) .......Ich würde jetzt nur eine Möglichkeit benötigen die Daten schnell ohne Zeitverlust zu Wandeln.

                    zum Umwandeln hab Ich folgende Fragen:

                    1.) kann Ich anhand der ausgelesenen Daten feststellen um welchen Wert es sich handelt (DPT:xx) oder muss Ich immer eine Datei angeben wo das Deklaliert ist
                    2.) gibt es vielleicht einen knxtool monitor der schon die richtigen Daten ausgibt? (hab irgendwie keine Beschreibungen dafür gefunden)
                    3.) es gibt da im Forum des öfteren Links zu einem Dokument der Eiba wo beschrieben wird wie man die Daten umrechnet, der Links ist aber scheinbar Tod....gibt es da einen neuen?
                    4.) es gibt auch hier öfter einen Link wo man online die Daten zum Testen Umwandlen kann gibt es da auch einen Ersatz?

                    LG Peter

                    Kommentar


                      #11
                      Moin Peter,

                      1. Bei KNX kann ein Datenpaket mehrere Bedeutungen haben. 2 Byte könnten z.B. ein Integer oder ein Bitfeld sein. Du musst also wissen, was Du da dekodieren möchtest.
                      2. Nein, aus den oben genannten Gründen geht das nicht.
                      3. die Spezifikation des KNX ist verfügbar. Eine Google Suche liefert z.B. die Datentypen frei Haus
                      4. Sorry, weiß ich nicht.

                      Allerding habe ich immer noch nicht den Sinn erkannt warum Du das brauchst. Willst Du einfach eine Brücke von KNX an LoxOne haben? Oder planst Du eine Datenerfassung für Dein Vogelhaus? Oder willst Du einfach alle knx Datenpakete in eine Datenbank schaufeln?

                      Gruß,
                      Bernd

                      Kommentar


                        #12
                        Servus Bernd

                        Danke für den Link

                        Ja genau eine Bridge KNX<-> Loxone sollte es werden oder besser gesagt knx<->HTTP und das so schlank wie möglich

                        LG Peter

                        Kommentar


                          #13
                          Hallo,

                          Allerding habe ich immer noch nicht den Sinn erkannt warum Du das brauchst. Willst Du einfach eine Brücke von KNX an LoxOne haben? Oder planst Du eine Datenerfassung für Dein Vogelhaus? Oder willst Du einfach alle knx Datenpakete in eine Datenbank schaufeln?
                          All das ginge mit smarthome-ng einfacher.
                          Schau dir doch mal SmartHome-ng an.
                          Da musst du dann nur konfigurieren und nicht das Rad neu erfinden.

                          Gruß,

                          Hendrik

                          Kommentar


                            #14
                            OK. Klartext.

                            Ein Programm, dem du eine Liste "Gruppenadresse A dekodiert zu DPT B und soll an MQTT-Adresse C im Format D gesendet werden" geben kannst, ist zB in Python mit geeigneten knx- und mqtt-Modulen keinerlei Hexenwerk. Wenn du sowas selber bauen magst, statt auf smarthome-ng oder homeassistant ode FHEM oder oder oder zurückzugreifen, und du irgendwelche nichttrivialen Fragen dazu hast, helfe ich gerne.

                            Dasselbe in Bash zu schreiben ist ehrlich gesagt nichts, in das irgendjemand, der was von der Materie versteht, auch nur den geringsten Hirnschmalz reinstecken will. Es ist einfach unsinnig. Das Ding kann keine brauchbaren Datentypen, du brichst dir schon mit der sauberen Kodierung von Strings einen Finger ab, für jedes KNX-Telegramm drei Befehle laufen zu lassen ist … äh … maximal unproduktiv, und wenn was schiefläuft sitzt das Skript im Zweifelsfall dumm herum und tut gar nichts mehr, statt sich zu resetten und/oder eine Fehlermeldung auszuspucken.

                            Bash ist keine Programmiersprache. Man kann damit wunderbar mal schnell was skripten und ein paar "richtige" Programme starten, aber die Idee, mit der bash direkt irgendwelche Daten zu verarbeiten, ist um Einiges unproduktiver als mit einem Hammer eine Schraube festzudrehen. ("If all you have is a hammer, every problem looks like a nail.")

                            Meine Meinung. Aber auch der Grund, wieso du hier keine Antworten bekommst, die dir mit der bash-Idee weiterhelfen.
                            DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

                            Kommentar


                              #15
                              Zitat von henfri Beitrag anzeigen
                              Hallo,


                              All das ginge mit smarthome-ng einfacher.
                              Schau dir doch mal SmartHome-ng an.
                              Da musst du dann nur konfigurieren und nicht das Rad neu erfinden.

                              Gruß,

                              Hendrik
                              hab Ich grad probiert lt. Anleitung zum installieren
                              da kommt folgende Fehlermeldung :-(

                              Code:
                              root@Docker:/opt# unzip docker_smarthome.zip
                              Archive: docker_smarthome.zip
                              End-of-central-directory signature not found. Either this file is not
                              a zipfile, or it constitutes one disk of a multi-part archive. In the
                              latter case the central directory and zipfile comment will be found on
                              the last disk(s) of this archive.
                              unzip: cannot find zipfile directory in one of docker_smarthome.zip or
                              docker_smarthome.zip.zip, and cannot find docker_smarthome.zip.ZIP, period.
                              root@Docker:/opt#

                              Kommentar

                              Lädt...
                              X