Ankündigung

Einklappen
Keine Ankündigung bisher.

Netzwerkplugin SNMP

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

    #46
    Hallo Waldemar,
    Zitat von mumpf Beitrag anzeigen
    jetzt brauch ich mal Nachhilfe: Ich hatte in meinem Beispiel
    Code:
    if item:
    das wird auch funktionieren. Ich dachte nur ein == True ist klarer für Neulinge.

    Wir können ja gerne bei dem Stammtisch über das Thema sprechen.

    Bis bald

    Marcus

    Kommentar


      #47
      Hallo Andreas,

      funktioniert es nun?

      Bis bald

      Marcus

      Kommentar


        #48
        Zitat von callidomus Beitrag anzeigen
        Wir können ja gerne bei dem Stammtisch über das Thema sprechen.
        Hi Marcus,

        gerne, Danke!

        Gruß, Waldemar

        OpenKNX www.openknx.de

        Kommentar


          #49
          ja funktioniert bestens, Danke Marcus

          Kommentar


            #50
            Hi,

            dafür gibt es ein Python lib für SNMP allerdings erscheint mir das alles recht komplex... http://pysnmp.sourceforge.net/ da hätte ich jetzt noch kein Motivation mir das anzugucken.

            VG
            Jürgen

            Kommentar


              #51
              Hi Andreas,

              falls es wirklich bei jedem Port so ist, dass das letzte Byte 01 für an und 02 für aus ist, dann kannst Du das Coding noch etwas vereinfachen (die Port-Commands sind dann immer ohne das letzte Byte, aber mit einem Leerzeichen am Ende):

              Code:
              ... der def udp-Teil bleibt unverändert ...
              
              commands = {
                   'Port5': '30 34 02 01 00 04 07 70 72 69 76 61 74 65 a3 26 02 04 23 3c e9 d9 02 01 00 02 01 00 30 18 30 16 06 11 2b 06 01 04 01 81 2b 0a 4c 12 01 16 01 01 03 01 05 02 01 '
              }
              
              item = cd.return_item(trigger.source)
              attributevalue = item.attr['poe_switch']
              command = commands.get(attributevalue)
              onoff = '01' if item == True else '02'
              value = bytearray.fromhex (command + onoff)
              udp('10.10.10.3', 161, value)
              Jetzt musst Du jeden Port nur einmal angeben (das Leerzeichen am Ende nicht vergessen).

              Gruß, Waldemar

              OpenKNX www.openknx.de

              Kommentar


                #52
                Hallo Waldemar,

                den Gedanken das kürzer zu gestalten hatte ich auch schon beim eintippen der ersten Logik. Konnte das ganze sogar noch etwas für die Portauswahl verkürzen:
                Code:
                command_start = '30 34 02 01 00 04 07 70 72 69 76 61 74 65 a3 26 02 04 23 3c e9 d9 02 01 00 02 01 00 30 18 30 16 06 11 2b 06 01 04 01 81 2b 0a 4c 12 01 16 01 01 03 01'
                command_end = '02 01'
                port = {
                    'Port1': '01',
                    'Port2': '02',
                    'Port3': '03',
                    'Port4': '04',
                    'Port5': '05',
                    'Port6': '06',
                    'Port7': '07',
                    'Port8': '08'
                }
                
                
                item = cd.return_item(trigger.source)
                attributevalue = item.attr['poe_switch']
                command_port = port.get(attributevalue)
                onoff = '01' if item == True else '02'
                
                value = bytearray.fromhex (command_start + command_port + command_end + onoff)
                
                udp('10.10.10.3', 161, value)
                lässt hier auch noch was ändern?
                Code:
                port = {
                    'Port1': '01',
                    'Port2': '02',
                    'Port3': '03',
                    'Port4': '04',
                    'Port5': '05',
                    'Port6': '06',
                    'Port7': '07',
                    'Port8': '08'
                }
                z.B. aus dem Attributwert Port(1) die entsprechende Variable(1=0&1=01) ableiten?

                PS: die Leerzeichen im bytearray sind nicht erforderlich, werden ignoriert.

                Gruß
                Andreas

                Kommentar


                  #53
                  Hi,

                  Ich würde gleich den Port angeben 01... statt Port1 ausser du planst noch mehr das das Notwendig ist?

                  Wenn du fertig bist probier ich das auch mal aus. Ist die 10.10.10.3 IP was fixes oder muss ich meine irgentwie herausbekommen?

                  Viele Grüsse
                  Jürgen

                  Kommentar


                    #54
                    Hallo Jürgen,

                    die Logik läuft und das ohne Probleme. 01 statt Port1 wäre ja jetzt zu einfach nach all dem Aufwand
                    Die 10.10.10.3 muss geändert werden in die IP deines Switches und die command Sequenz müsste auch an dein Gerät angepasst werden.

                    Gruß
                    Andreas

                    Kommentar


                      #55
                      Zitat von ragepw Beitrag anzeigen
                      lässt hier auch noch was ändern?
                      Code:
                      port = {
                      'Port1': '01',
                      'Port2': '02',
                      'Port3': '03',
                      'Port4': '04',
                      'Port5': '05',
                      'Port6': '06',
                      'Port7': '07',
                      'Port8': '08'
                      }
                      z.B. aus dem Attributwert Port(1) die entsprechende Variable(1=0&1=01) ableiten?
                      Hi Andreas,

                      ja:
                      Code:
                      command_port = '0' + attributevalue[4]
                      Noch eleganter geht es wahrscheinlich so:
                      Code:
                      command = '30 34 02 01 00 04 07 70 72 69 76 61 74 65 a3 26 02 04 23 3c e9 d9 02 01 00 02 01 00 30 18 30 16 06 11 2b 06 01 04 01 81 2b 0a 4c 12 01 16 01 01 03 01 0{0} 02 01 0{1}'
                      
                      item = cd.return_item(trigger.source)
                      attributevalue = item.attr['poe_switch']
                      value = bytearray.fromhex (command.format(attributevalue[4], int(item) + 1))
                      
                      udp('10.10.10.3', 161, value)
                      Ich habe es aber nicht ausprobiert, sollte aber klappen. Ob das übersichtlicher ist, ist aber fraglich..

                      Gruß, Waldemar
                      OpenKNX www.openknx.de

                      Kommentar


                        #56
                        Code:
                        command_port = '0' + attributevalue[4]
                        müsste doch so lauten:
                        Code:
                        command_port = '0' + attributevalue[[COLOR=#FF0000]5[/COLOR]]
                        4 bzw. 5 steht doch die 4/5 Stelle im Attribut?

                        Kommentar


                          #57
                          Hi,

                          die Zählung ist aber 0-basiert.

                          Gruß, Waldemar
                          OpenKNX www.openknx.de

                          Kommentar


                            #58
                            ah, ok wieder was gelernt ;-)

                            Kommentar

                            Lädt...
                            X