Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] NFC mqtt in iobroker anwenden

NEWS

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

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

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

[gelöst] NFC mqtt in iobroker anwenden

Scheduled Pinned Locked Moved Skripten / Logik
4 Posts 2 Posters 734 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    Ati
    wrote on last edited by
    #1

    Ich habe ein NFC–Modul im Einsatz, welches über mqtt in iobroker eingebunden ist. Im „in“–Kanal wird unter „Wert“ die Nummer des RFID–Chips angezeigt. Das Format ist hier JSON.

    Ich suche nach einer Möglichkeit, hiermit eine Tastfunktion auszulösen.

    Mit Blockly bin ich da noch nicht zum Ziel gekommen. Allein schon die „wenn…mache“ Funktion ist nicht schlüssig. Entweder wird aktualisiert oder geändert als Bedingung. Das verursacht aber das Problem, dass wenn Änderung aktiv ist, chip1 sich einmal anmeldet, dann nur noch über Änderung der Nummer, also z.B. Chip2 wieder aktiv werden kann.

    Andersrum wenn Aktualisierung drin steht, dann kann nur der letzte drin stehende Wert auslösen.

    Außerdem muss wohl JSON erst dekodiert werden, damit iobroker damit etwas anfangen kann. Ich hatte zuerst testweise den gesamten Inhalt von „Wert“ in ein Textblockly eingefügt, was aber keinerlei Funktion hervorrief. Verwende ich ein JSON konvert, dann funktioniert das ebenfalls nicht. Wenn ich mir den Code dazu anschaue, sieht der aber recht sonderbar aus.

    Wie bekomme ich eine Auswertung des Inhaltes von mqtt hin bzw. was ist falsch?

    1 Reply Last reply
    0
    • Jey CeeJ Online
      Jey CeeJ Online
      Jey Cee
      Developer
      wrote on last edited by
      #2

      @Ati:

      Das Format ist hier JSON. ` Poste doch mal das JSON.

      Ich mag Blockly nicht, deswegen kann ich dir eher mit JS Helfen.

      In JS gibt es die möglichkeit auf jede Änderung zu reagieren, das sieht dann so aus:

      on({id: "in-kanal", change: any}
      	,function(obj){
      		log(obj.state.val)
      	}
      });
      

      Persönlicher Support
      Spenden -> paypal.me/J3YC33

      1 Reply Last reply
      0
      • A Offline
        A Offline
        Ati
        wrote on last edited by
        #3
        	{"idx":1,"nvalue":0,"svalue":"305247091"}	
        

        mich interessiert dabei svalue.

        Wenn JS soll mir recht sein. Ich versuche je eh mich da reinzufummeln - auch wenn vieles schwer fällt. 😉

        Hier noch der Blockly Code

         on[({id: 'mqtt.0.domoticz.in', change: "any"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          console.log('value');
          if (getState("mqtt.0.domoticz.in").val == '    {"idx":1,"nvalue":0,"svalue":"30524xxxx"}    ') {
            setState("hm-rpc.2.000218A9916FDA.3"/*Schaltsteckdose test:3*/, true);
            setStateDelayed("hm-rpc.2.000218A9916FDA.3"/*Schaltsteckdose test:3*/, false, 1000, true);
            // RFID 
        

        Auffällig sind für mich zumindest die Leerstellen im GetState

        1 Reply Last reply
        0
        • A Offline
          A Offline
          Ati
          wrote on last edited by
          #4

          So. Das Problem ist nun gelöst.

          on({id: 'mqtt.0.domoticz.in', change: "any"}, function (obj) {
          
                  var NFC;
          
             //der try ist wichtig, dass der adapter nicht abschmiert bei einem Fehler. Hiermit parsen wir die json in ein object
             try {obj = JSON.parse(getState('mqtt.0.domoticz.in').val);
             } catch (e) {
                     console.error('Cannot parse: ' + getState('mqtt.0.domoticz.in').val);
                     return;
              }
          
             log(obj.svalue);
             NFC = obj.svalue;
          
            if ( NFC === "xxxx47091" || NFC === "xxxx076275" || NFC === "xxxx880515" || NFC === "xxxx213571" || NFC === "xxxx486467" || NFC === "xxxx713987" || NFC === "xxxx057774" ) {
              setState("hm-rpc.2.000218A9916FDA.3.STATE", true);//schaltet Aktor ein
              log("Einschalten ausgeführt");
              setStateDelayed("hm-rpc.2.000218A9916FDA.3.STATE", false, 2000, true);//schaltet Aktor in 1 Sekunde aus und aktiviert Planung für nächste Aktivierung
              log("Ausschalten ausgeführt");
            }
          });
          
          1 Reply Last reply
          0
          Reply
          • Reply as topic
          Log in to reply
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes


          Support us

          ioBroker
          Community Adapters
          Donate

          651

          Online

          32.4k

          Users

          81.4k

          Topics

          1.3m

          Posts
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          ioBroker Community 2014-2025
          logo
          • Login

          • Don't have an account? Register

          • Login or register to search.
          • First post
            Last post
          0
          • Recent
          • Tags
          • Unread 0
          • Categories
          • Unreplied
          • Popular
          • GitHub
          • Docu
          • Hilfe