Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

byte to bits plugin

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

    byte to bits plugin

    Hallo,

    ich möchte eine Byte Variable in einzelne Bit umwandeln.

    aus Input=5 wird also
    00000101

    Output0=1
    Output1=0
    Output2=1
    Output3=0
    Output4=0
    Output5=0
    Output6=0
    Output7=0

    Geht das ohne plugin?

    Ansonsten (falls nur mit Plugin):
    Ich habe noch nicht kapiert, wie man einem Plugin Parameter übergibt?

    Gruß,
    Hendrik

    #2
    Hallo Hendrik,

    woher kommt denn das Byte? Über KNX? Als welcher DPT?

    Das sollte man einfach über eine Logik hinbekommen.

    Angenommen der Wert liegt als Integer (i) vor:

    Code:
    bits = bin(i)[2:].zfill(8)
    Output0=bits[0]
    Output7=bits[7]
    Und Parameter übergibt man Plugins über die Attribute in der plugin.conf.

    Bis bald

    Marcus

    Kommentar


      #3
      Hallo,

      danke für deine Antwort.
      Noch klappt's nicht:
      Code:
      2013-05-26 11:20:09,454 ByteToBit    WARNING  Logic: ByteToBit, File: bytetobit.py, Line: 2, Method: <module>, Exception: object cannot be interpreted as an index -- scheduler.py:_task:273
      2
      Code:
      root@HomeServer:~# cat /usr/local/smarthome/logics/bytetobit.py
      #!/usr/bin/env python
      bits = bin(sh.multimedia.zones)[2:].zfill(8)
      sh.multimedia.zoneAactive=bits[0]
      sh.multimedia.zoneBactive=bits[1]
      sh.multimedia.zoneCactive=bits[2]
      sh.multimedia.zoneDactive=bits[3]root@HomeServer:~#
      root@HomeServer:~# cat /usr/local/smarthome/items/multimedia.conf
      [multimedia]
        [[zones]]
          type=num
          cache=on
          enforce_updates=on
          knx_dpt = 5
          knx_send = 9/1/55
          knx_listen = 9/1/55
          knx_init = 9/1/55
        [[zoneAactive]]
          type=bool
          cache=on
          enforce_updates=on
          knx_dpt = 1
          knx_send = 9/1/56
        [[zoneBactive]]
          type=bool
          cache=on
          enforce_updates=on
          knx_dpt = 1
          knx_send = 9/1/57
        [[zoneCactive]]
          type=num
          cache=on
          enforce_updates=on
          knx_dpt = 1
          knx_send = 9/1/58
        [[zoneDactive]]
          type=num
          cache=on
          enforce_updates=on
          knx_dpt = 1
          knx_send = 9/1/59
      
      
      root@HomeServer:~# cat /usr/local/smarthome/etc/logic.conf
      #[MyLogic]
      #    filename = logic.py
      #    crontab = init
      
      [ByteToBit]
           filename=bytetobit.py
           watch_item=multimedia.zones
      Hab ich etwas falsch verstanden, beim Umsetzen?
      i in deinem Beispiel ist doch der Integer (ist übrigens ein KNX-DPT5).


      Und noch eine Frage: Der Verstärker (TEAC AG980 angeschlossen über das MDT-Multimedia-Interface) sendet leider nicht von sich aus Updates. Ist es möglich, dass beim Lesen eines Objektes vorher ein "Event-Request" (eine 1 auf einer GA) ausgelöst wird?


      Gruß,
      Hendrik

      Kommentar


        #4
        Hallo Hendrik,

        tja, das sieht nach einem klassischen Anfängerfehler aus ;-)

        Code:
        bits = bin(sh.multimedia.zones[COLOR="Red"]()[/COLOR])[2:].zfill(8)

        Zitat von henfri Beitrag anzeigen
        Und noch eine Frage: Der Verstärker (TEAC AG980 angeschlossen über das MDT-Multimedia-Interface) sendet leider nicht von sich aus Updates. Ist es möglich, dass beim Lesen eines Objektes vorher ein "Event-Request" (eine 1 auf einer GA) ausgelöst wird?
        Ich verstehe die Frage leider nicht. Was meinst Du mit lesen eines Objektes? Du kannst mit dem KNX-Plugin groupreads absetzen. Ist es das?

        Bis bald

        Marcus

        Kommentar


          #5
          Hallo,
          Zitat von mknx Beitrag anzeigen
          tja, das sieht nach einem klassischen Anfängerfehler aus ;-)
          Da bin ich ja beruhigt ;-)

          Ich bin jetzt ein Stück weiter. Aber:
          Code:
          2013-05-26 12:14:57,049 SmartHome.py DEBUG    multimedia.zones = 9 via KNX 1.0.35 -- item.py:_update:210
          2013-05-26 12:14:57,050 SmartHome.py DEBUG    Triggering ByteToBit - by: Item source: multimedia.zones destination: None value: 9 -- scheduler.py:trigger:117
          2
          Aber an die Adressen 55 ff werden die Bits nicht gesendet...

          Ich verstehe die Frage leider nicht. Was meinst Du mit lesen eines Objektes? Du kannst mit dem KNX-Plugin groupreads absetzen. Ist es das?
          Na, wenn ein Busteilnehmer eine Adresse liest, soll sh.ph erstmal eine andere Adresse senden. Daraufhin kommt eine Antwort vom Multimedia-Interface, welches einige GAs sendet.

          Beispiel:
          Read von Visu auf 9/1/57
          sh.py sendet 9/1/254 ("Event Request")
          Multimedia-Interface fragt Verstärker ab
          und sendet 9/1/55
          Die Logik wird daraufhin aufgerufen und 9/1/54 wird von bittobyte.py geschrieben.

          Gruß,
          Hendrik

          Kommentar


            #6
            Hallo Hendrik,

            Du musst Dir beim setzen von Itemwerten das '=' verbieten.

            Item('Wert') setzt den Wert.

            Zitat von henfri Beitrag anzeigen
            Na, wenn ein Busteilnehmer eine Adresse liest, soll sh.ph erstmal eine andere Adresse senden. Daraufhin kommt eine Antwort vom Multimedia-Interface, welches einige GAs sendet.

            Beispiel:
            Read von Visu auf 9/1/57
            sh.py sendet 9/1/254 ("Event Request")
            Multimedia-Interface fragt Verstärker ab
            und sendet 9/1/55
            Die Logik wird daraufhin aufgerufen und 9/1/54 wird von bittobyte.py geschrieben.
            das geht momentan nicht einfach. Man könnte es über eine Logik realisieren die auf die GA hört und dann einfach groupreads abruft.

            Bis bald

            Marcus

            Kommentar


              #7
              Läuft. Danke!

              Letzte Frage (OT):
              Gibt es von jemandem schon ein debian/ubuntu startskript?

              Gruß,
              Hendrik

              Kommentar


                #8
                https://knx-user-forum.de/smarthome-...h-starten.html
                Umgezogen? Ja! ... Fertig? Nein!
                Baustelle 2.0 !

                Kommentar


                  #9
                  Danke!

                  Kommentar

                  Lädt...
                  X