Ankündigung

Einklappen
Keine Ankündigung bisher.

linknx und Über-GAs

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

    KNX/EIB linknx und Über-GAs

    Hallo lieber EIB-Experten!
    Gegebene Konstellation: es gibt z.B. Gruppenadressen für jede einzelne Lampe, Gruppenadressen für "alle Lampen im Zimmer", Gruppenadressen für jeden einzelnen Rollo und Gruppenadressen für alle Rollos auf einer Fassadenseite. Alle GA's wirken ja direkt auf den oder die entsprechenden Ausgänge der Aktoren. Jetzt ist es natürlich so, dass linknx (und natürlich auch die Status-LEDs von Tastsensoren) nichts davon mitbekommen wenn man eine der Über-Gruppenadressen auslöst. In knxweb sind dann folglich die einzelnen Glühbirnen alle noch dunkel, wenn man am das ganze Stockwerk mit der Über-Gruppenadresse hell geschaltet hat. Wie macht man das richtig?
    Lieben Dank für Eure Antwort!
    Andy

    #2
    Hallo,

    dies kannst du über den listener Tag erhalten. Dadurch reagiert das Objekt auch noch auf die anderen Gruppenadressen.

    Bsp:
    Code:
    <object id="ecl_escalier" gad="1/1/6">Eclairage Escalier
                <listener gad="1/1/206"/>
            </object>
    Gruß
    Dirk

    Kommentar


      #3
      ahaaaa coole sache, vielen dank für den tipp!
      dann muss ich das nur noch einbauen in mein pythonscript einabauen.
      mit dem erstelle ich automatisch den objects-teil von der linknx-xml aus der esf-datei die man mit ets über die funktion "export zum opc-server" erzeugen kann. eins was ich noch nicht verstehe ist, warum ets dort immer uncertain datentypen ausgibt, auch wenn man ganz explizit z.b. 9.001 (°C) für das kommunikationsobjekt ausgewähnt halt über den Objekt bearbeiten-Dialog...

      Kommentar


        #4
        Zitat von Fraxinas Beitrag anzeigen
        eins was ich noch nicht verstehe ist, warum ets dort immer uncertain datentypen ausgibt, auch wenn man ganz explizit z.b. 9.001 (°C) für das kommunikationsobjekt ausgewähnt halt über den Objekt bearbeiten-Dialog...
        Hoi Andy

        Das mit den GA's von der ETS ist ein Bug, der hoffentlich mit der ETS4 behoben ist.
        Wie wäre es, wenn Du Dein Script im Forum bei den Codeschnipseln der Allgemeinheit zur Verfügung stellen würdest?
        Ich fänd's toll.

        Und das mit den hörenden GA's kannst Du in der ETS natürlich auch machen, damit die Led's an den Tastern auch den Zustand mitbekommen. Stichwort hörende Gruppenadressen.
        https://knx-user-forum.de/mediawiki/..._bet.C3.A4tige
        Grüsse Bodo
        Fragen gehören ins Forum, und nicht in mein Postfach;
        EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

        Kommentar


          #5
          hey bodo! also praktischerweise musste ich da in ets gar nichts sonderlich weiter groß einstellen... in der esf sind in der hintersten spalte alle "listener" GAs von vorneherein mit dabei

          und selbstverständlich könnt ihr gern das script benutzen! voilà
          ich benutze es außerdem um die gruppenadressen in eine mysql-db zu speichern weil ich angefangen hatte eine eigene visu zu bauen bevor ich knxweb entdeckt habe aber es funktioniert auch ohne

          Code:
          import MySQLdb
          import codecs
          import sys
          
          if len(sys.argv) != 2:
              print "Usage:", sys.argv[0], "LIST.ESF"
              sys.exit(1)
          
          f = open(sys.argv[1], 'r')
          print "Parsing", f.readline()
          
          try:
              conn = MySQLdb.connect (host = "kelvin", user = "", passwd = "", db = "klapauzius")
              cursor = conn.cursor ()
              conn.set_character_set('utf8')
              cursor.execute('SET NAMES utf8;')
              cursor.execute('SET CHARACTER SET utf8;')
              cursor.execute('SET character_set_connection=utf8;')
              cursor.execute('TRUNCATE `Hauptgruppen`;')
              cursor.execute('TRUNCATE `Mittelgruppen`;')
              cursor.execute('TRUNCATE `Untergruppen`;')
          
          except:
                  conn = None
          
          hauptgruppen = {}
          mittelgruppen = {}
          
          datentypen = {
          "EIS 1 'Switching' (1 Bit)": (1, "1.001", "switching (on/off)"),
          "EIS 2 'Dimming - control' (4 Bit)": (2, "3.007", "dimming"),
          #"Uncertain (1 Byte)": (14, "6.xxx", "8bit signed integer"),
          "Uncertain (1 Byte)": (14, "5.001", "8 bit signed / scaling 0 to 100%"),
          #"Uncertain (2 Byte)": (10, "7.xxx", "16bit unsigned integer"),
          "Uncertain (2 Byte)": (10, "9.xxx", "16 bit float"),
          "Uncertain (3 Byte)": (3, "10.001", "time"),
          "EIS 15 'Character String' (14 Byte)": (15, "16.000", "string (max 14 ASCII char)")
          }
          
          objectsfile = codecs.open('objects.xml','w',"utf-8")
          objectsfile.write("<objects>\n")
          for line in f.readlines():
              esfline = line[:-2]
              cols = esfline.decode("iso-8859-15").split('\t')
              (hauptgruppe_name, mittelgruppe_name, adresse) = cols[0].split('.',3)
              adresse = adresse.split('/',3)
              hauptgruppe_nummer = int(adresse[0])
              mittelgruppe_nummer = int(adresse[1])
              untergruppe_nummer = int(adresse[2])
              untergruppe_name = cols[1]
              if datentypen.has_key(cols[2]):
                  datentyp_nummer = datentypen[cols[2]][0]
                  datentyp_knx = datentypen[cols[2]][1]
              else:
                  datentyp_nummer = 0
                  datentyp_knx = ""
              if conn:
                  if not hauptgruppen.has_key(hauptgruppe_nummer):
                      hauptgruppen[hauptgruppe_nummer] = hauptgruppe_name
                      query = "INSERT INTO `Hauptgruppen` (Hauptgruppe, Name) VALUES (%i, \"%s\")" % (hauptgruppe_nummer, hauptgruppe_name)
                      print query
                      cursor.execute(query)
                  if not mittelgruppen.has_key(hauptgruppe_nummer):
                      mittelgruppen[hauptgruppe_nummer] = {}
                  if not mittelgruppen[hauptgruppe_nummer].has_key(mittelgruppe_nummer):
                      mittelgruppen[hauptgruppe_nummer][mittelgruppe_nummer] = mittelgruppe_name
                      query = "INSERT INTO `Mittelgruppen` (id, Hauptgruppe, Mittelgruppe, Name) VALUES (NULL, %i, %i, \"%s\")" % (hauptgruppe_nummer, mittelgruppe_nummer, mittelgruppe_name)
                      print query
                      cursor.execute(query)
                  query = "INSERT INTO `Untergruppen` (id, Hauptgruppe, Mittelgruppe, Untergruppe, Name, Datentyp) VALUES (NULL, %i, %i, %i, \"%s\", %i)" % (hauptgruppe_nummer, mittelgruppe_nummer, untergruppe_nummer, untergruppe_name, datentyp_nummer)
                  print query
                  cursor.execute(query)
              if cols[4]:
                  listeners = cols[4].split(' ')
              else:
                  listeners = []
              listener_tags = ""
              for gad in listeners:
                  listener_tags += """<listener gad="%s"/>""" % gad
              id = (hauptgruppe_name + '.' + mittelgruppe_name + '.' + untergruppe_name).lower().replace(' ', '_')
              xmlline = """<object type="%s" id="%s" gad="%i/%i/%i" init="persist" log="true">%s%s</object>""" % (datentyp_knx, id, hauptgruppe_nummer, mittelgruppe_nummer, untergruppe_nummer, untergruppe_name, listener_tags)
              print xmlline
              objectsfile.write('\t'+xmlline+'\n')
          
          if conn:
              conn.commit()
              cursor.close ()
              conn.close ()
          
          objectsfile.write("</objects>")
          objectsfile.close()
          f.close()
          edit... oh vermutlich hätte ich es irgendwo speziell hinsortieren sollen zu codeschnippseln? ich geh mal auf die suche und crossposte das dort falls ich es finde bitte um verzeihung

          Kommentar


            #6
            Zum Ursprungsproblem: Man kann bei den meisten Aktoren auch sep. Rückmeldeobjekte verwenden, die zur Statusanzeige auf Visu&Co geeigneter sind.

            Zum ETS-Export: ich hab da mal ein Tool geschrieben, das auch die DPT's so ausgibt wie sie eingestellt sind.. Allerdings nur als zusätzliches CSV, sollte aber kein Hexenwerk sein das entweder für linknx umzumodeln oder das zu importieren.

            Makki
            EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
            -> Bitte KEINE PNs!

            Kommentar


              #7
              Zitat von Fraxinas Beitrag anzeigen
              Code:
              import MySQLdb
              import codecs
              import sys
              Hoi Andy

              Hab' Dein Tool ( nebst dem von makki natürlich ) gleich mal ausprobiert.
              Es meckert wenn ich's einfach mal so ausführe:
              Code:
              /home/gun/eib-ga.py: line 1: import: command not found
              /home/gun/eib-ga.py: line 2: import: command not found
              /home/gun/eib-ga.py: line 3: import: command not found
              Muss ich Pfade korrigieren oder etwas nachinstallieren.
              Sorry hab' gerade nicht den Nerv mir das selber zusammen zu suchen, hab zuviele andere Baustellen.
              Danke
              Grüsse Bodo
              Fragen gehören ins Forum, und nicht in mein Postfach;
              EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

              Kommentar


                #8
                ich glaub, da fehlt ganz oben im skript die shebang-zeile

                Code:
                #!/usr/bin/python
                ABB SA/Sx.16.5S, BJ RCP 6136/100C-101, 1wire
                SOMFY Animeo KNX, eibd und misterhouse auf IBM netvista 8364
                , SB Radio, Archos 7 HomeTablet

                Kommentar


                  #9
                  Hoi

                  Genau die fehlt schonmal. Danke
                  Also es hat prima geklappt. Danke.
                  Alle GA's in der xml angekommen.
                  Grüsse Bodo
                  Fragen gehören ins Forum, und nicht in mein Postfach;
                  EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

                  Kommentar


                    #10
                    Wenn wir daraus mal ne runde Lösung machen wollen fürn linknx/mh-Export: gerne! (VBS: weil ich da halt historisch bedingt auswendig weiss, was ich mit ADODB wie mache, nicht weils "Doll" ist)

                    Makki
                    EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                    -> Bitte KEINE PNs!

                    Kommentar

                    Lädt...
                    X