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. Projekt "Playbox" MQTT, RFID, Login mit Username und PW

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.1k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.6k

Projekt "Playbox" MQTT, RFID, Login mit Username und PW

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
6 Beiträge 2 Kommentatoren 243 Aufrufe 2 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.
  • H Offline
    H Offline
    Hoody B
    schrieb am zuletzt editiert von
    #1

    Hallo, ich versuche gerade das Youtube-Projekt "Playbox" von Hausautomatisierung/M. Kleine nachzubauen: Spotify-Songs per RFID-Tags abspielen.
    Statt fhem und mosquitto möchte ich allerdings den iobroker (und den mqtt-Adapter) auf dem Raspberry nutzen, da ich diese schon aufgesetzt habe.

    Das Script von M. Kleine sieht wie folgt aus:

    #include <Arduino.h>
    #include <SPI.h>
    #include <MFRC522.h>
    #include <ESP8266WiFi.h>
    #include <WiFiClient.h>
    #include <PubSubClient.h>
    
    #define SS_PIN D8
    #define RST_PIN D1
    
    MFRC522 mfrc522(SS_PIN, RST_PIN);
    unsigned long cardId = 0;
    
    WiFiClient net;
    PubSubClient client(net);
    
    const char* mqtt_server = "192.168.44.11";
    // WLAN name and pw
    const char* ssid = "myWLAN";
    const char* password = "myPW";
    
    void setup() {
      Serial.begin(9600);
      SPI.begin();
      mfrc522.PCD_Init();
    
      WiFi.mode(WIFI_AP_STA);
      WiFi.begin(ssid, password);
    
      client.setServer(mqtt_server, 1883);
    }
    
    void reconnect() {
      while (WiFi.waitForConnectResult() != WL_CONNECTED) {
        WiFi.begin(ssid, password);
      }
    
      while (!client.connected()) {
        String clientId = "NodeMCUClient-";
        clientId += String(random(0xffff), HEX);
    
        if (!client.connect(clientId.c_str(), "mymqttUsername", "mymqttPW")) {
          Serial.print("failed, rc=");
          Serial.print(client.state());
          Serial.println(" try again in 5 seconds");
          delay(5000);
        }
      }
    }
    void loop() {
      reconnect();
    
      if (!mfrc522.PICC_IsNewCardPresent()) {
        return;
      }
    
      if (!mfrc522.PICC_ReadCardSerial()) {
        return;
      }
    
      cardId = getCardId();
    
      Serial.print("New ");
      Serial.println(cardId);
    
      char buffer[10];
      sprintf(buffer, "%lu", cardId);
      client.publish("/SmartHome/Interface/PlayBox/Play", buffer);
    
      uint8_t control = 0x00;
    
      do {
        control = 0;
        for (int i = 0; i < 3; i++) {
          if (!mfrc522.PICC_IsNewCardPresent()) {
            if (mfrc522.PICC_ReadCardSerial()) {
              control |= 0x16;
            }
    
            if (mfrc522.PICC_ReadCardSerial()) {
              control |= 0x16;
            }
    
            control += 0x1;
          }
    
          control += 0x4;
        }
    
        delay(0);
      } while (control == 13 || control == 14);
    
      reconnect();
    
      Serial.println("Removed");
      client.publish("/SmartHome/Interface/PlayBox/Stop", "1");
      delay(500);
    
      mfrc522.PICC_HaltA();
      mfrc522.PCD_StopCrypto1();
    }
    
    unsigned long getCardId() {
      byte readCard[4];
      for (int i = 0; i < 4; i++) {
        readCard[i] = mfrc522.uid.uidByte[i];
      }
    
      return (unsigned long)readCard[0] << 24
        | (unsigned long)readCard[1] << 16
        | (unsigned long)readCard[2] << 8
        | (unsigned long)readCard[3];
    

    Über VSC/PlattformIO kann ich den Code kompilieren und übertragen.
    Die Nodemcu meldet sich dann auch korrekt im WLAN an - sehe ich in der Fritzbox.

    Allerdings sehe ich keine topics unter Objekte/mqtt.

    Statt dessen bekomme ich im Terminal von VSC/PlattformIO:
    --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
    �HQȸ>dI��@>l�␒�failed, rc=-2 try again in 5 seconds
    failed, rc=-2 try again in 5 seconds
    failed, rc=-2 try again in 5 seconds
    failed, rc=-2 try again in 5 seconds
    ...

    Im Log des iobrokers kommen Meldungen im Millisec.-Takt (auch wenn ich mit Arduino 1.8.13 die Nodemcu bespiele):

    mqtt.0 2020-11-06 19:27:33.268 info (1360) send2Server system.adapter.mqtt.0.cputime[system/adapter/mqtt/0/cputime]
    mqtt.0 2020-11-06 19:27:33.259 info (1360) send2Server system.adapter.mqtt.0.cpu[system/adapter/mqtt/0/cpu]
    mqtt.0 2020-11-06 19:27:33.241 info (1360) send2Server mqtt.0.info.connection[info/connection]
    mqtt.0 2020-11-06 19:27:33.238 info (1360) send2Server system.adapter.mqtt.0.cputime[system/adapter/mqtt/0/cputime]
    mqtt.0 2020-11-06 19:27:33.228 info (1360) send2Server system.adapter.mqtt.0.cpu[system/adapter/mqtt/0/cpu]
    mqtt.0 2020-11-06 19:27:33.209 info (1360) send2Server mqtt.0.info.connection[info/connection]

    Über mqtt.fx als client kann ich den mqtt-Server ohne Probleme mit den selben Zugangsdaten ansprechen und sehe die topics.
    Habe keine Idee mehr wo ich den Fehler mache, aber irgendwas beim Login auf den mqtt scheint ja nicht zu passen :-(
    Hat vielleicht jemand eine Idee???

    M 1 Antwort Letzte Antwort
    0
    • H Hoody B

      Hallo, ich versuche gerade das Youtube-Projekt "Playbox" von Hausautomatisierung/M. Kleine nachzubauen: Spotify-Songs per RFID-Tags abspielen.
      Statt fhem und mosquitto möchte ich allerdings den iobroker (und den mqtt-Adapter) auf dem Raspberry nutzen, da ich diese schon aufgesetzt habe.

      Das Script von M. Kleine sieht wie folgt aus:

      #include <Arduino.h>
      #include <SPI.h>
      #include <MFRC522.h>
      #include <ESP8266WiFi.h>
      #include <WiFiClient.h>
      #include <PubSubClient.h>
      
      #define SS_PIN D8
      #define RST_PIN D1
      
      MFRC522 mfrc522(SS_PIN, RST_PIN);
      unsigned long cardId = 0;
      
      WiFiClient net;
      PubSubClient client(net);
      
      const char* mqtt_server = "192.168.44.11";
      // WLAN name and pw
      const char* ssid = "myWLAN";
      const char* password = "myPW";
      
      void setup() {
        Serial.begin(9600);
        SPI.begin();
        mfrc522.PCD_Init();
      
        WiFi.mode(WIFI_AP_STA);
        WiFi.begin(ssid, password);
      
        client.setServer(mqtt_server, 1883);
      }
      
      void reconnect() {
        while (WiFi.waitForConnectResult() != WL_CONNECTED) {
          WiFi.begin(ssid, password);
        }
      
        while (!client.connected()) {
          String clientId = "NodeMCUClient-";
          clientId += String(random(0xffff), HEX);
      
          if (!client.connect(clientId.c_str(), "mymqttUsername", "mymqttPW")) {
            Serial.print("failed, rc=");
            Serial.print(client.state());
            Serial.println(" try again in 5 seconds");
            delay(5000);
          }
        }
      }
      void loop() {
        reconnect();
      
        if (!mfrc522.PICC_IsNewCardPresent()) {
          return;
        }
      
        if (!mfrc522.PICC_ReadCardSerial()) {
          return;
        }
      
        cardId = getCardId();
      
        Serial.print("New ");
        Serial.println(cardId);
      
        char buffer[10];
        sprintf(buffer, "%lu", cardId);
        client.publish("/SmartHome/Interface/PlayBox/Play", buffer);
      
        uint8_t control = 0x00;
      
        do {
          control = 0;
          for (int i = 0; i < 3; i++) {
            if (!mfrc522.PICC_IsNewCardPresent()) {
              if (mfrc522.PICC_ReadCardSerial()) {
                control |= 0x16;
              }
      
              if (mfrc522.PICC_ReadCardSerial()) {
                control |= 0x16;
              }
      
              control += 0x1;
            }
      
            control += 0x4;
          }
      
          delay(0);
        } while (control == 13 || control == 14);
      
        reconnect();
      
        Serial.println("Removed");
        client.publish("/SmartHome/Interface/PlayBox/Stop", "1");
        delay(500);
      
        mfrc522.PICC_HaltA();
        mfrc522.PCD_StopCrypto1();
      }
      
      unsigned long getCardId() {
        byte readCard[4];
        for (int i = 0; i < 4; i++) {
          readCard[i] = mfrc522.uid.uidByte[i];
        }
      
        return (unsigned long)readCard[0] << 24
          | (unsigned long)readCard[1] << 16
          | (unsigned long)readCard[2] << 8
          | (unsigned long)readCard[3];
      

      Über VSC/PlattformIO kann ich den Code kompilieren und übertragen.
      Die Nodemcu meldet sich dann auch korrekt im WLAN an - sehe ich in der Fritzbox.

      Allerdings sehe ich keine topics unter Objekte/mqtt.

      Statt dessen bekomme ich im Terminal von VSC/PlattformIO:
      --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
      �HQȸ>dI��@>l�␒�failed, rc=-2 try again in 5 seconds
      failed, rc=-2 try again in 5 seconds
      failed, rc=-2 try again in 5 seconds
      failed, rc=-2 try again in 5 seconds
      ...

      Im Log des iobrokers kommen Meldungen im Millisec.-Takt (auch wenn ich mit Arduino 1.8.13 die Nodemcu bespiele):

      mqtt.0 2020-11-06 19:27:33.268 info (1360) send2Server system.adapter.mqtt.0.cputime[system/adapter/mqtt/0/cputime]
      mqtt.0 2020-11-06 19:27:33.259 info (1360) send2Server system.adapter.mqtt.0.cpu[system/adapter/mqtt/0/cpu]
      mqtt.0 2020-11-06 19:27:33.241 info (1360) send2Server mqtt.0.info.connection[info/connection]
      mqtt.0 2020-11-06 19:27:33.238 info (1360) send2Server system.adapter.mqtt.0.cputime[system/adapter/mqtt/0/cputime]
      mqtt.0 2020-11-06 19:27:33.228 info (1360) send2Server system.adapter.mqtt.0.cpu[system/adapter/mqtt/0/cpu]
      mqtt.0 2020-11-06 19:27:33.209 info (1360) send2Server mqtt.0.info.connection[info/connection]

      Über mqtt.fx als client kann ich den mqtt-Server ohne Probleme mit den selben Zugangsdaten ansprechen und sehe die topics.
      Habe keine Idee mehr wo ich den Fehler mache, aber irgendwas beim Login auf den mqtt scheint ja nicht zu passen :-(
      Hat vielleicht jemand eine Idee???

      M Online
      M Online
      MCU
      schrieb am zuletzt editiert von MCU
      #2

      @Hoody-B Fehlt in dem Programm nicht ein client.begin()? Ich sehe es gerade nicht! Nein!
      Ich hab das bei mir in der loog()

      if (!client.connected()) {
          reconnect();
        }
        client.loop();
      

      Und dieses zwischen

      WiFi.begin(ssid, password);
      --->
      client.setServer(mqtt_server, 1883);

      while (WiFi.status() != WL_CONNECTED) {
          delay(500);
          Serial.print(".");
        }
      
      

      NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
      Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

      H 1 Antwort Letzte Antwort
      0
      • M MCU

        @Hoody-B Fehlt in dem Programm nicht ein client.begin()? Ich sehe es gerade nicht! Nein!
        Ich hab das bei mir in der loog()

        if (!client.connected()) {
            reconnect();
          }
          client.loop();
        

        Und dieses zwischen

        WiFi.begin(ssid, password);
        --->
        client.setServer(mqtt_server, 1883);

        while (WiFi.status() != WL_CONNECTED) {
            delay(500);
            Serial.print(".");
          }
        
        
        H Offline
        H Offline
        Hoody B
        schrieb am zuletzt editiert von
        #3

        @MCU Danke für deine Antwort. Bin leider kein Code-Crack, sondern wollte eigentlich nur das fertige Script nutzen. Wo soll ich denn das Erste einfügen? Wie gesagt der Wifi-Connect funktioniert nur der Login auf den MQTT-Server Adapter nicht.
        Ist es denn ein Unterschied, ob ich einen mosquitto auf dem Raspi "direkt" installiere oder auf mich über Adapter im iobroker auf den MQTT einlogen möchte?

        M 1 Antwort Letzte Antwort
        0
        • H Hoody B

          @MCU Danke für deine Antwort. Bin leider kein Code-Crack, sondern wollte eigentlich nur das fertige Script nutzen. Wo soll ich denn das Erste einfügen? Wie gesagt der Wifi-Connect funktioniert nur der Login auf den MQTT-Server Adapter nicht.
          Ist es denn ein Unterschied, ob ich einen mosquitto auf dem Raspi "direkt" installiere oder auf mich über Adapter im iobroker auf den MQTT einlogen möchte?

          M Online
          M Online
          MCU
          schrieb am zuletzt editiert von
          #4

          @Hoody-B Das muss in die loop()-Funktion. Und einige bevorzugen den mosquitto als Server. Persönlich habe ich keinen.

          void loop() {
            if (!client.connected()) {
              reconnect();
            }
            client.loop();
          

          NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
          Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

          M 1 Antwort Letzte Antwort
          0
          • M MCU

            @Hoody-B Das muss in die loop()-Funktion. Und einige bevorzugen den mosquitto als Server. Persönlich habe ich keinen.

            void loop() {
              if (!client.connected()) {
                reconnect();
              }
              client.loop();
            
            M Online
            M Online
            MCU
            schrieb am zuletzt editiert von
            #5

            @MCU Stimmt denn der Port überein, oder noch den Sonoff installiert? Musste den Port bei mir auch umstellen, wegen Sonoff-Adapter:

            e40efb47-e7a0-41ba-80d7-778cff69335c-image.png

            NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
            Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

            H 1 Antwort Letzte Antwort
            0
            • M MCU

              @MCU Stimmt denn der Port überein, oder noch den Sonoff installiert? Musste den Port bei mir auch umstellen, wegen Sonoff-Adapter:

              e40efb47-e7a0-41ba-80d7-778cff69335c-image.png

              H Offline
              H Offline
              Hoody B
              schrieb am zuletzt editiert von
              #6

              @MCU ...leider ist das nicht das Problem - habe auch keinen sonoff installiert, trotzdem mal auf 1886 geändert, hatte aber nichts gebracht. Dachte diese Meldungen im ms-Takt wären vielleicht ein Hinweis :-(

              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

              443

              Online

              32.7k

              Benutzer

              82.4k

              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