Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. widgets mit einem Word belegen / Bit Aufschlüsselung

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.5k

widgets mit einem Word belegen / Bit Aufschlüsselung

Geplant Angeheftet Gesperrt Verschoben JavaScript
10 Beiträge 3 Kommentatoren 762 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • T.SpoonerT Offline
    T.SpoonerT Offline
    T.Spooner
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,
    ich war schon im Visualisierungs-Kategorie unterwegs und bräuchte ien paar Tipps.
    Ich möchte Widgets mit eine Word belegen und entsprechen Werte schreiben und lesen.
    Das ganze hat den Hintergrund, dass ich unser Haus an eine SPS hängen hab und diese nur eine bestimmte Anzahl an Variablen schreiben/lesen kann. Deswegen habe ich sehr viele boolsche Variablen als Word zusammen gefasst.
    Das muss jetzt wieder im IO-Broker zerlegt werden.
    Als Beispiel beim Licht:
    Bit 0: Software Schalter
    Bit 1: Licht ist an
    Dafür möchte ich einen bool.button aus dem hqwidget nehmen.
    allerdings bin ich (noch) keine Erfahrung mit Javascript und dem entsprechenden ansprechen der Funktionen (z.B. button betätigt)
    ich hoffe hier kann mir jemand helfen

    Gruß T.Spooner

    Haussteuerung mit Beckhoff C6015 (TC3)
    IoBroker auf SynologyNas (DS220+)
    2x Kostal Plenticore 4,2
    1x Kostal Plenticore 10
    BYD 10kW
    2x Daheimladen Wallbox
    1x Hyundai Kona-e
    AIT Sole/Wasser WP SWC 80 H mit Solarthermie und dank diesem Forum PV-Unterstützung

    paul53P 1 Antwort Letzte Antwort
    0
    • T.SpoonerT T.Spooner

      Hallo zusammen,
      ich war schon im Visualisierungs-Kategorie unterwegs und bräuchte ien paar Tipps.
      Ich möchte Widgets mit eine Word belegen und entsprechen Werte schreiben und lesen.
      Das ganze hat den Hintergrund, dass ich unser Haus an eine SPS hängen hab und diese nur eine bestimmte Anzahl an Variablen schreiben/lesen kann. Deswegen habe ich sehr viele boolsche Variablen als Word zusammen gefasst.
      Das muss jetzt wieder im IO-Broker zerlegt werden.
      Als Beispiel beim Licht:
      Bit 0: Software Schalter
      Bit 1: Licht ist an
      Dafür möchte ich einen bool.button aus dem hqwidget nehmen.
      allerdings bin ich (noch) keine Erfahrung mit Javascript und dem entsprechenden ansprechen der Funktionen (z.B. button betätigt)
      ich hoffe hier kann mir jemand helfen

      Gruß T.Spooner

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @t-spooner
      Prinzip mit Beispiel Kommando = Bit 3 und Rückmeldung = Bit 2:

      // IDs anpassen!
      const idVis = '0_userdata.0.xyz'; // boolean
      const idWord = 's7.0.abc'; 
      
      var word = getState(idWord).val;
      
      on({id: idWord, ack: true}, function(dp) {
          word = dp.state.val;
          setState(idVis, !!(word & 4), true); // bit 2
      });
      
      on({id: idVis, change: 'ne', fromNe: 'system.adapter.javascript.0'}, function(dp) {
          const bitval = 8; // bit 3
          if(dp.state.val) word |= bitval;
          else word &= ~bitval;
          setState(idWord, word);
      });
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      T.SpoonerT 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @t-spooner
        Prinzip mit Beispiel Kommando = Bit 3 und Rückmeldung = Bit 2:

        // IDs anpassen!
        const idVis = '0_userdata.0.xyz'; // boolean
        const idWord = 's7.0.abc'; 
        
        var word = getState(idWord).val;
        
        on({id: idWord, ack: true}, function(dp) {
            word = dp.state.val;
            setState(idVis, !!(word & 4), true); // bit 2
        });
        
        on({id: idVis, change: 'ne', fromNe: 'system.adapter.javascript.0'}, function(dp) {
            const bitval = 8; // bit 3
            if(dp.state.val) word |= bitval;
            else word &= ~bitval;
            setState(idWord, word);
        });
        
        T.SpoonerT Offline
        T.SpoonerT Offline
        T.Spooner
        schrieb am zuletzt editiert von
        #3

        @paul53
        danke für den Tipp, aber mir stellt sich schon die nächste Frage:
        Die Variable idWord ist klar, aber was ist die idVis?
        das ist doch die zum Button gehörige Variable, oder sehe ich das falsch?
        Wo deklariere ich die bzw wo sehe ich die?

        Haussteuerung mit Beckhoff C6015 (TC3)
        IoBroker auf SynologyNas (DS220+)
        2x Kostal Plenticore 4,2
        1x Kostal Plenticore 10
        BYD 10kW
        2x Daheimladen Wallbox
        1x Hyundai Kona-e
        AIT Sole/Wasser WP SWC 80 H mit Solarthermie und dank diesem Forum PV-Unterstützung

        paul53P 1 Antwort Letzte Antwort
        0
        • T.SpoonerT T.Spooner

          @paul53
          danke für den Tipp, aber mir stellt sich schon die nächste Frage:
          Die Variable idWord ist klar, aber was ist die idVis?
          das ist doch die zum Button gehörige Variable, oder sehe ich das falsch?
          Wo deklariere ich die bzw wo sehe ich die?

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @t-spooner sagte: idVis? das ist doch die zum Button gehörige Variable

          Ja.

          @t-spooner sagte in widgets mit einem Word belegen / Bit Aufschlüsselung:

          Wo deklariere ich die bzw wo sehe ich die?

          Dafür muss ein eigener Datenpunkt vom Typ "boolean" unter "0_userdata.0" erstellt werden.

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          T.SpoonerT 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @t-spooner sagte: idVis? das ist doch die zum Button gehörige Variable

            Ja.

            @t-spooner sagte in widgets mit einem Word belegen / Bit Aufschlüsselung:

            Wo deklariere ich die bzw wo sehe ich die?

            Dafür muss ein eigener Datenpunkt vom Typ "boolean" unter "0_userdata.0" erstellt werden.

            T.SpoonerT Offline
            T.SpoonerT Offline
            T.Spooner
            schrieb am zuletzt editiert von
            #5

            @paul53
            Ok habe es hinbekommen, und wieder ne Frage (wirst mich jetzt nicht mehr los ;-) ).
            Wie sage ich dem Button jetzt, dass die Leuchte an ist?
            246bedeb-9086-48bd-a282-77479c053048-grafik.png
            Übrigens musste ich ne kleine Änderungen machen und zwar hier:
            49a117c0-1a7d-4e44-91b4-eec59e7f0a5b-grafik.png .
            Es dreht sich nämlich um das erste Bit, dass die Rückmeldung gibt.
            Kannst mir mir da nochmals auf die Sprünge helfen?

            Haussteuerung mit Beckhoff C6015 (TC3)
            IoBroker auf SynologyNas (DS220+)
            2x Kostal Plenticore 4,2
            1x Kostal Plenticore 10
            BYD 10kW
            2x Daheimladen Wallbox
            1x Hyundai Kona-e
            AIT Sole/Wasser WP SWC 80 H mit Solarthermie und dank diesem Forum PV-Unterstützung

            paul53P 1 Antwort Letzte Antwort
            0
            • T.SpoonerT T.Spooner

              @paul53
              Ok habe es hinbekommen, und wieder ne Frage (wirst mich jetzt nicht mehr los ;-) ).
              Wie sage ich dem Button jetzt, dass die Leuchte an ist?
              246bedeb-9086-48bd-a282-77479c053048-grafik.png
              Übrigens musste ich ne kleine Änderungen machen und zwar hier:
              49a117c0-1a7d-4e44-91b4-eec59e7f0a5b-grafik.png .
              Es dreht sich nämlich um das erste Bit, dass die Rückmeldung gibt.
              Kannst mir mir da nochmals auf die Sprünge helfen?

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #6

              @t-spooner sagte: Wie sage ich dem Button jetzt, dass die Leuchte an ist?

              Bei mir funktioniert es so (es ist kein Taster):

              Bild_2021-12-19_174535.png

              Mit Vis kenne ich mich aber nicht wirklich aus.

              @t-spooner sagte in widgets mit einem Word belegen / Bit Aufschlüsselung:

              Übrigens musste ich ne kleine Änderungen machen und zwar hier:

              Das war auch nur ein Beispiel. Die Kommentare sind falsch: Wert 1 ist Bit 0, Wert 2 ist Bit 1.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              T.SpoonerT 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @t-spooner sagte: Wie sage ich dem Button jetzt, dass die Leuchte an ist?

                Bei mir funktioniert es so (es ist kein Taster):

                Bild_2021-12-19_174535.png

                Mit Vis kenne ich mich aber nicht wirklich aus.

                @t-spooner sagte in widgets mit einem Word belegen / Bit Aufschlüsselung:

                Übrigens musste ich ne kleine Änderungen machen und zwar hier:

                Das war auch nur ein Beispiel. Die Kommentare sind falsch: Wert 1 ist Bit 0, Wert 2 ist Bit 1.

                T.SpoonerT Offline
                T.SpoonerT Offline
                T.Spooner
                schrieb am zuletzt editiert von
                #7

                @paul53 ok.
                Danke mal vorab

                Haussteuerung mit Beckhoff C6015 (TC3)
                IoBroker auf SynologyNas (DS220+)
                2x Kostal Plenticore 4,2
                1x Kostal Plenticore 10
                BYD 10kW
                2x Daheimladen Wallbox
                1x Hyundai Kona-e
                AIT Sole/Wasser WP SWC 80 H mit Solarthermie und dank diesem Forum PV-Unterstützung

                paul53P 1 Antwort Letzte Antwort
                0
                • T.SpoonerT T.Spooner

                  @paul53 ok.
                  Danke mal vorab

                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #8

                  @t-spooner
                  Beispiel für ein 4-Bit-Wort, beliebig erweiterbar:

                  // IDs anpassen!
                  const idWord = 'beckhoff.0.plc.PLCIOB.Buro_Light.wReply'; 
                  const idVis1 = '0_userdata.0.Buero.Licht'; // boolean
                  const idVis2 = '0_userdata.0.xyz';
                  
                  var word = getState(idWord).val;
                  
                  on({id: idWord, ack: true}, function(dp) {
                      word = dp.state.val;
                      setState(idVis1, !!(word & 2), true); // bit 1
                      setState(idVis2, !!(word & 8), true); // bit 3
                  });
                  
                  on({id: idVis1, change: 'ne', fromNe: 'system.adapter.javascript.0'}, function(dp) {
                      const bitval = 1; // bit 0
                      if(dp.state.val) word |= bitval; // set bit
                      else word &= ~bitval; // reset bit
                      setState(idWord, word);
                  });
                  on({id: idVis2, change: 'ne', fromNe: 'system.adapter.javascript.0'}, function(dp) {
                      const bitval = 4; // bit 2
                      if(dp.state.val) word |= bitval; // set bit
                      else word &= ~bitval; // reset bit
                      setState(idWord, word);
                  });
                  

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  C 1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @t-spooner
                    Beispiel für ein 4-Bit-Wort, beliebig erweiterbar:

                    // IDs anpassen!
                    const idWord = 'beckhoff.0.plc.PLCIOB.Buro_Light.wReply'; 
                    const idVis1 = '0_userdata.0.Buero.Licht'; // boolean
                    const idVis2 = '0_userdata.0.xyz';
                    
                    var word = getState(idWord).val;
                    
                    on({id: idWord, ack: true}, function(dp) {
                        word = dp.state.val;
                        setState(idVis1, !!(word & 2), true); // bit 1
                        setState(idVis2, !!(word & 8), true); // bit 3
                    });
                    
                    on({id: idVis1, change: 'ne', fromNe: 'system.adapter.javascript.0'}, function(dp) {
                        const bitval = 1; // bit 0
                        if(dp.state.val) word |= bitval; // set bit
                        else word &= ~bitval; // reset bit
                        setState(idWord, word);
                    });
                    on({id: idVis2, change: 'ne', fromNe: 'system.adapter.javascript.0'}, function(dp) {
                        const bitval = 4; // bit 2
                        if(dp.state.val) word |= bitval; // set bit
                        else word &= ~bitval; // reset bit
                        setState(idWord, word);
                    });
                    
                    C Offline
                    C Offline
                    captainchaos666
                    schrieb am zuletzt editiert von
                    #9

                    @paul53 habe dein Script hier gefunden und sollte ebenfalls deine Unterstüzung haben da ich es nicht wirklich verstehe, kannst du mir weiter helfen

                    on({id: idWord, ack: true}, function(dp) {
                        word = dp.state.val;
                        setState(idVis1, !!(word & 2), true); // bit 1
                        setState(idVis2, !!(word & 8), true); // bit 3
                    });
                    

                    Meine Fragen zu dem Code:

                    • Wieso hast du hier "ack:true" verwendet
                    • Wann werden bzw. wie werden die Bits wieder auf false gesetzt
                    • Was machen die zwei !!, habe was gelesen das du hier zweimal negierst und indirekt eine Typenwandlung von Word auf Bool machst, stimmt das oder liege ich hier komplett falsch
                    on({id: idVis1, change: 'ne', fromNe: 'system.adapter.javascript.0'}, function(dp) {
                       const bitval = 1; // bit 0
                       if(dp.state.val) word |= bitval; // set bit
                       else word &= ~bitval; // reset bit
                       setState(idWord, word);
                    });
                    
                    • Wieso gibt es hier ({id: idVis1, change: 'ne', fromNe: 'system.adapter.javascript.0'}, zwei Aufzählungen change 'ne' und fromNe: 'sys..'
                    • Was macht fromNe

                    Grund: Habe einen WR der ebenfalls ein Statuswort hat, das würde ich gerne in einzelne Bits zerlegen damit ich die Stati in meiner VIS anzeigen kann

                    Aufbau Statuswort, Beispiel:

                    Batterie Laden => Bit 1 = 0 => Nicht Laden
                    Batterie Laden => Bit 1 = 1 => Laden

                    Batterie Entladen => Bit 2 = 0 => Nicht Entladen
                    Batterie Entladen => Bit 2 = 1 => Entladen

                    Leistungsbezug => Bit 5 = 0 => Keine Leistung aus dem Netz
                    Leistungsbezug => Bit 5 = 1 => Netz Bezug

                    vielen Dank für deine Unterstüzung

                    Alex

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • C captainchaos666

                      @paul53 habe dein Script hier gefunden und sollte ebenfalls deine Unterstüzung haben da ich es nicht wirklich verstehe, kannst du mir weiter helfen

                      on({id: idWord, ack: true}, function(dp) {
                          word = dp.state.val;
                          setState(idVis1, !!(word & 2), true); // bit 1
                          setState(idVis2, !!(word & 8), true); // bit 3
                      });
                      

                      Meine Fragen zu dem Code:

                      • Wieso hast du hier "ack:true" verwendet
                      • Wann werden bzw. wie werden die Bits wieder auf false gesetzt
                      • Was machen die zwei !!, habe was gelesen das du hier zweimal negierst und indirekt eine Typenwandlung von Word auf Bool machst, stimmt das oder liege ich hier komplett falsch
                      on({id: idVis1, change: 'ne', fromNe: 'system.adapter.javascript.0'}, function(dp) {
                         const bitval = 1; // bit 0
                         if(dp.state.val) word |= bitval; // set bit
                         else word &= ~bitval; // reset bit
                         setState(idWord, word);
                      });
                      
                      • Wieso gibt es hier ({id: idVis1, change: 'ne', fromNe: 'system.adapter.javascript.0'}, zwei Aufzählungen change 'ne' und fromNe: 'sys..'
                      • Was macht fromNe

                      Grund: Habe einen WR der ebenfalls ein Statuswort hat, das würde ich gerne in einzelne Bits zerlegen damit ich die Stati in meiner VIS anzeigen kann

                      Aufbau Statuswort, Beispiel:

                      Batterie Laden => Bit 1 = 0 => Nicht Laden
                      Batterie Laden => Bit 1 = 1 => Laden

                      Batterie Entladen => Bit 2 = 0 => Nicht Entladen
                      Batterie Entladen => Bit 2 = 1 => Entladen

                      Leistungsbezug => Bit 5 = 0 => Keine Leistung aus dem Netz
                      Leistungsbezug => Bit 5 = 1 => Netz Bezug

                      vielen Dank für deine Unterstüzung

                      Alex

                      paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von paul53
                      #10

                      @captainchaos666 sagte: Meine Fragen zu dem Code:

                      • Wieso hast du hier "ack:true" verwendet
                        Weil in einen eigenen Datenpunkt unter "0_userdata.0" geschrieben wird

                      • Wann werden bzw. wie werden die Bits wieder auf false gesetzt
                        Wenn das Wort an der Bitposition eine 0 enthält

                      • Was machen die zwei !!
                        Wandeln die Zahlen 0 und 1 in false und true.

                      • Was macht fromNe
                        Verhindert ein Triggern, wenn die Quelle der Wertänderung ein Skript ist: Dient zur Vermeidung von Endlos-Trigger-Schleifen.

                      Bit 1: Maske 2; Bit 2: Maske 4; bit 5: Maske 32

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      765

                      Online

                      32.4k

                      Benutzer

                      81.6k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe