Navigation

    • Register
    • Login
    • Search
    • OpenHardware.io
    • Categories
    • Recent
    • Tags
    • Popular
    1. Home
    2. The-Holgi
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Best
    • Groups

    The-Holgi

    @The-Holgi

    5
    Reputation
    14
    Posts
    234
    Profile views
    0
    Followers
    0
    Following
    Joined Last Online
    Location Germany, Gelsenkirchen

    The-Holgi Follow

    Best posts made by The-Holgi

    • RE: EasyPcb BH1750 Batterie sketch

      Hello,
      the extended code works with right value . Every second the node sends the Batterie value and voltage to Controller.
      Thanks vor the code.

      posted in Troubleshooting
      The-Holgi
      The-Holgi
    • RE: Rfid sketch

      Thank you it works perfect.
      Here the complete sketch:

      /**
       * The MySensors Arduino library handles the wireless radio link and protocol
       * between your home built sensors/actuators and HA controller of choice.
       * The sensors forms a self healing radio network with optional repeaters. Each
       * repeater and gateway builds a routing tables in EEPROM which keeps track of the
       * network topology allowing messages to be routed to nodes.
       *
       * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
       * Copyright (C) 2013-2015 Sensnology AB
       * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
       *
       * Documentation: http://www.mysensors.org
       * Support Forum: http://forum.mysensors.org
       *
       * This program is free software; you can redistribute it and/or
       * modify it under the terms of the GNU General Public License
       * version 2 as published by the Free Software Foundation.
       *
       *******************************
       *
       * REVISION HISTORY
       * Version 1.0 - Henrik Ekblad
       * 
       * DESCRIPTION
       * RFID Lock sensor/actuator
       * 
       * Use RFID tag to lock/unlock a door or trigger a scene on your controller.
       * This example sketch allows you to add an optional relay or solenoid 
       * which can be activated/opened by RFID or controller.  
       *
       * Use the I2C wiring option for your RFID module and connect to the following Arduino pins.
       * 
       * RFID       Arduino
       * -----      -------
       * GND   ->   GND
       * VCC   ->   +5V
       * SCL   ->   A5
       * SDA   ->   A4
       * 
       * Use normal wiring for NRF24L01 radio
       * 
       * Attach a optional relay or solonoid lock to pin 4
       * http://www.mysensors.org/build/rfid 
       */
      
      // Enable debug prints to serial monitor
      #define MY_DEBUG 
      
      // Enable and select radio type attached
      #define MY_RADIO_NRF24
      //#define MY_RADIO_RFM69
      
      #include <SPI.h>
      #include <MySensors.h>  
      #include <Wire.h>
      #include <PN532_I2C.h>
      #include <PN532.h>
      
      
      // Add your valid rfid keys here. To find you your key just run sketch; hold your new RFID tag in fron ot the reader; 
      // and copy the key from serial output of this sketch.
      const uint8_t maxKeyLength = 7;
      uint8_t validKeys[][maxKeyLength] = {
                          { 0xB3, 0xC6, 0xD9, 0x80, 0x00, 0x00, 0x00 },
                          { 0x5B, 0xFC, 0x7A, 0xD, 0x00, 0x00, 0x00 },    // ADD YOUR KEYS HERE!
                          { 0xF1, 0x13, 0x54, 0x63, 0x00, 0x00, 0x00 },
                          { 0xCB, 0x6F, 0x2D, 0xD, 0x00, 0x00, 0x00 },
                          { 0x9B, 0x33, 0x2C, 0xD, 0x00, 0x00, 0x00 },
                          { 0x73, 0xFA, 0xF6, 0x1A, 0x00, 0x00, 0x00 },
                          { 0x83, 0x59, 0x36, 0x1A, 0x00, 0x00, 0x00 },
                          { 0x83, 0x1A, 0x3C, 0x1A, 0x00, 0x00, 0x00 },
                          { 0xB6, 0xB2, 0x52, 0xF8, 0x00, 0x00, 0x00 },
                          { 0x17, 0xE5, 0xD2, 0x2B, 0x00, 0x00, 0x00 },
                          { 0x79 ,0xF7, 0x88, 0x5A, 0x00, 0x00, 0x00 },
                          
                          { 0x2B, 0xDC, 0x49, 0xB, 0x00, 0x00, 0x00 }};
      int keyCount = sizeof validKeys / maxKeyLength; 
      
      #define CHILD_ID 99   // Id of the sensor child
      
      
      // Pin definition
      const int lockPin = 4;         // (Digital 4) The pin that activates the relay/solenoid lock.
      bool lockStatus;
      MyMessage lockMsg(CHILD_ID, V_LOCK_STATUS);
      PN532_I2C pn532i2c(Wire);
      PN532 nfc(pn532i2c);
      
      void setup() {
      
        pinMode(lockPin, OUTPUT);
      
        nfc.begin();
        uint32_t versiondata = nfc.getFirmwareVersion();
        if (! versiondata) {
          Serial.print("Couldn't find PN53x board");
          while (1); // halt
        }
        Serial.print("Found NFC chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); 
        Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); 
        Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
        // Set the max number of retry attempts to read from a card
        // This prevents us from waiting forever for a card, which is
        // the default behaviour of the PN532.
        nfc.setPassiveActivationRetries(0x3);
      
        // configure board to read RFID tags
        nfc.SAMConfig();
      
        lockStatus = loadState(0);    // Read last lock status from eeprom
        setLockState(lockStatus, true); // Now set the last known state and send it to controller 
      }
      
      void presentation()  {
        sendSketchInfo("RFID Lock", "1.0");
        present(CHILD_ID, S_LOCK);
      }
      
      void loop() {
        bool success;
        uint8_t key[] = { 0, 0, 0, 0, 0, 0, 0 };  // Buffer to store the returned UID
        uint8_t currentKeyLength;                        // Length of the UID (4 or 7 bytes depending on ISO14443A card type)
      
      
        // Wait for an ISO14443A type cards (Mifare, etc.).  When one is found
        // 'uid' will be populated with the UID, and uidLength will indicate
        // if the uid is 4 bytes (Mifare Classic) or 7 bytes (Mifare Ultralight)
        success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &key[0], &currentKeyLength);
      
        if (success) {
          Serial.print("Found tag id: ");
          for (uint8_t i=0; i < currentKeyLength; i++) 
          {
            if (i>0) Serial.print(",");
            Serial.print("0x");Serial.print(key[i], HEX); 
          }
          for (uint8_t i=currentKeyLength; i < maxKeyLength; i++) 
          {
            Serial.print(",0x00"); 
          }
      
      
          Serial.println("");
      
          bool valid = false;
          // Compare this key to the valid once registered here in sketch 
          for (int i=0;i<keyCount && !valid;i++) {
            for (int j=0;j<currentKeyLength && !valid;j++) {
              if (key[j] != validKeys[i][j]) {
                break;
              }
              if (j==currentKeyLength-1) {
                valid = true;
              }
            }
          }
          if (valid) {
            // Switch lock status
            setLockState(!lockStatus, true);       
          }
      
          // Wait for card/tag to leave reader    
          while(nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &key[0], &currentKeyLength));
        } 
      } 
      
      
      
      // Unlocks the door.
      void setLockState(bool state, bool doSend) {
        if (state)
        {
          Serial.println("open lock");
        if (doSend)
          send(lockMsg.set(true));
          digitalWrite(lockPin, true);
          wait(5000);
          Serial.println("close lock");
        if (doSend)
          send(lockMsg.set(false));
          digitalWrite(lockPin, false);
        } else {
        if (doSend)
          send(lockMsg.set(state));
      }
      }
      
      void receive(const MyMessage &message) {
        // We only expect one type of message from controller. But we better check anyway.
        if (message.type==V_LOCK_STATUS) {
           // Change relay state
           setLockState(message.getBool(), false); 
      
           // Write some debug info
           Serial.print("Incoming lock status:");
           Serial.println(message.getBool());
         } 
      }
      posted in Troubleshooting
      The-Holgi
      The-Holgi
    • RE: EasyPcb BH1750 Batterie sketch

      Hello,
      on A0 are 0,8V. Batterie voltage is 2,6V.

      posted in Troubleshooting
      The-Holgi
      The-Holgi

    Latest posts made by The-Holgi

    • RE: Rfid sketch

      Hello,
      now i´m write the sketch to another arduino with rfid and relay.
      It doesn´t work .
      From fhem i can trigger the relay and in serial monitor the card´s where shown with serial.
      In fhem the lockstatus is set to off, when the card is in near of the reader, the lockstatus on doesn´t send to fhem.
      But the relay doesn´t trigger by card.
      Where is the mistake?
      The problem is the lockstate doesnt set to on.

      /**
       * The MySensors Arduino library handles the wireless radio link and protocol
       * between your home built sensors/actuators and HA controller of choice.
       * The sensors forms a self healing radio network with optional repeaters. Each
       * repeater and gateway builds a routing tables in EEPROM which keeps track of the
       * network topology allowing messages to be routed to nodes.
       *
       * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
       * Copyright (C) 2013-2015 Sensnology AB
       * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
       *
       * Documentation: http://www.mysensors.org
       * Support Forum: http://forum.mysensors.org
       *
       * This program is free software; you can redistribute it and/or
       * modify it under the terms of the GNU General Public License
       * version 2 as published by the Free Software Foundation.
       *
       *******************************
       *
       * REVISION HISTORY
       * Version 1.0 - Henrik Ekblad
       * 
       * DESCRIPTION
       * RFID Lock sensor/actuator
       * 
       * Use RFID tag to lock/unlock a door or trigger a scene on your controller.
       * This example sketch allows you to add an optional relay or solenoid 
       * which can be activated/opened by RFID or controller.  
       *
       * Use the I2C wiring option for your RFID module and connect to the following Arduino pins.
       * 
       * RFID       Arduino
       * -----      -------
       * GND   ->   GND
       * VCC   ->   +5V
       * SCL   ->   A5
       * SDA   ->   A4
       * 
       * Use normal wiring for NRF24L01 radio
       * 
       * Attach a optional relay or solonoid lock to pin 4
       * http://www.mysensors.org/build/rfid 
       */
      
      // Enable debug prints to serial monitor
      #define MY_DEBUG 
      
      // Enable and select radio type attached
      #define MY_RADIO_NRF24
      //#define MY_RADIO_RFM69
      
      #include <SPI.h>
      #include <MySensors.h>  
      #include <Wire.h>
      #include <PN532_I2C.h>
      #include <PN532.h>
      
      
      // Add your valid rfid keys here. To find you your key just run sketch; hold your new RFID tag in fron ot the reader; 
      // and copy the key from serial output of this sketch.
      const uint8_t maxKeyLength = 7;
      uint8_t validKeys[][maxKeyLength] = {
                          { 0xB3, 0xC6, 0xD9, 0x80, 0x00, 0x00, 0x00 },
                          { 0x5B, 0xFC, 0x7A, 0xD, 0x00, 0x00, 0x00 },    // ADD YOUR KEYS HERE!
                          { 0xF1, 0x13, 0x54, 0x63, 0x00, 0x00, 0x00 },
                          { 0xCB, 0x6F, 0x2D, 0xD, 0x00, 0x00, 0x00 },
                          { 0x9B, 0x33, 0x2C, 0xD, 0x00, 0x00, 0x00 },
                          { 0x73, 0xFA, 0xF6, 0x1A, 0x00, 0x00, 0x00 },
                          { 0x83, 0x59, 0x36, 0x1A, 0x00, 0x00, 0x00 },
                          { 0x83, 0x1A, 0x3C, 0x1A, 0x00, 0x00, 0x00 },
                          { 0xB6, 0xB2, 0x52, 0xF8, 0x00, 0x00, 0x00 },
                          { 0x17, 0xE5, 0xD2, 0x2B, 0x00, 0x00, 0x00 },
                          { 0x79 ,0xF7, 0x88, 0x5A, 0x00, 0x00, 0x00 },
                          { 0x2B, 0xDC, 0x49, 0xB, 0x00, 0x00, 0x00 }};
      int keyCount = sizeof validKeys / maxKeyLength; 
      
      #define CHILD_ID 99   // Id of the sensor child
      
      
      // Pin definition
      const int lockPin = 4;         // (Digital 4) The pin that activates the relay/solenoid lock.
      bool lockStatus;
      MyMessage lockMsg(CHILD_ID, V_LOCK_STATUS);
      PN532_I2C pn532i2c(Wire);
      PN532 nfc(pn532i2c);
      
      void setup() {
      
        pinMode(lockPin, OUTPUT);
      
        nfc.begin();
        uint32_t versiondata = nfc.getFirmwareVersion();
        if (! versiondata) {
          Serial.print("Couldn't find PN53x board");
          while (1); // halt
        }
        Serial.print("Found NFC chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); 
        Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); 
        Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
        // Set the max number of retry attempts to read from a card
        // This prevents us from waiting forever for a card, which is
        // the default behaviour of the PN532.
        nfc.setPassiveActivationRetries(0x3);
      
        // configure board to read RFID tags
        nfc.SAMConfig();
      
        lockStatus = loadState(0);    // Read last lock status from eeprom
        setLockState(lockStatus, true); // Now set the last known state and send it to controller 
      }
      
      void presentation()  {
        sendSketchInfo("RFID Lock", "1.0");
        present(CHILD_ID, S_LOCK);
      }
      
      void loop() {
        bool success;
        uint8_t key[] = { 0, 0, 0, 0, 0, 0, 0 };  // Buffer to store the returned UID
        uint8_t currentKeyLength;                        // Length of the UID (4 or 7 bytes depending on ISO14443A card type)
      
      
        // Wait for an ISO14443A type cards (Mifare, etc.).  When one is found
        // 'uid' will be populated with the UID, and uidLength will indicate
        // if the uid is 4 bytes (Mifare Classic) or 7 bytes (Mifare Ultralight)
        success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &key[0], &currentKeyLength);
      
        if (success) {
          Serial.print("Found tag id: ");
          for (uint8_t i=0; i < currentKeyLength; i++) 
          {
            if (i>0) Serial.print(",");
            Serial.print("0x");Serial.print(key[i], HEX); 
          }
          for (uint8_t i=currentKeyLength; i < maxKeyLength; i++) 
          {
            Serial.print(",0x00"); 
          }
      
      
          Serial.println("");
      
          bool valid = false;
          // Compare this key to the valid once registered here in sketch 
          for (int i=0;i<keyCount && !valid;i++) {
            for (int j=0;j<currentKeyLength && !valid;j++) {
              if (key[j] != validKeys[i][j]) {
                break;
              }
              if (j==currentKeyLength-1) {
                valid = true;
              }
            }
          }
          if (valid) {
            // Switch lock status
            setLockState(!lockStatus, true);       
          }
      
          // Wait for card/tag to leave reader    
          while(nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &key[0], &currentKeyLength));
        } 
      } 
      
      
      
      // Unlocks the door.
      void setLockState(bool state, bool doSend) {
        if (state)
        {
          Serial.println("open lock");
        if (doSend)
          send(lockMsg.set(true));
          digitalWrite(lockPin, true);
          wait(5000);
          Serial.println("close lock");
        if (doSend)
          send(lockMsg.set(false));
          digitalWrite(lockPin, false);
        } else {
        if (doSend)
          send(lockMsg.set(state));
      }
      }
      
      void receive(const MyMessage &message) {
        // We only expect one type of message from controller. But we better check anyway.
        if (message.type==V_LOCK_STATUS) {
           // Change relay state
           setLockState(message.getBool(), false); 
      
           // Write some debug info
           Serial.print("Incoming lock status:");
           Serial.println(message.getBool());
         } 
      }```
      
      Hm, with other arduino now it works.
      posted in Troubleshooting
      The-Holgi
      The-Holgi
    • RE: Rfid sketch

      Thank you it works perfect.
      Here the complete sketch:

      /**
       * The MySensors Arduino library handles the wireless radio link and protocol
       * between your home built sensors/actuators and HA controller of choice.
       * The sensors forms a self healing radio network with optional repeaters. Each
       * repeater and gateway builds a routing tables in EEPROM which keeps track of the
       * network topology allowing messages to be routed to nodes.
       *
       * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
       * Copyright (C) 2013-2015 Sensnology AB
       * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
       *
       * Documentation: http://www.mysensors.org
       * Support Forum: http://forum.mysensors.org
       *
       * This program is free software; you can redistribute it and/or
       * modify it under the terms of the GNU General Public License
       * version 2 as published by the Free Software Foundation.
       *
       *******************************
       *
       * REVISION HISTORY
       * Version 1.0 - Henrik Ekblad
       * 
       * DESCRIPTION
       * RFID Lock sensor/actuator
       * 
       * Use RFID tag to lock/unlock a door or trigger a scene on your controller.
       * This example sketch allows you to add an optional relay or solenoid 
       * which can be activated/opened by RFID or controller.  
       *
       * Use the I2C wiring option for your RFID module and connect to the following Arduino pins.
       * 
       * RFID       Arduino
       * -----      -------
       * GND   ->   GND
       * VCC   ->   +5V
       * SCL   ->   A5
       * SDA   ->   A4
       * 
       * Use normal wiring for NRF24L01 radio
       * 
       * Attach a optional relay or solonoid lock to pin 4
       * http://www.mysensors.org/build/rfid 
       */
      
      // Enable debug prints to serial monitor
      #define MY_DEBUG 
      
      // Enable and select radio type attached
      #define MY_RADIO_NRF24
      //#define MY_RADIO_RFM69
      
      #include <SPI.h>
      #include <MySensors.h>  
      #include <Wire.h>
      #include <PN532_I2C.h>
      #include <PN532.h>
      
      
      // Add your valid rfid keys here. To find you your key just run sketch; hold your new RFID tag in fron ot the reader; 
      // and copy the key from serial output of this sketch.
      const uint8_t maxKeyLength = 7;
      uint8_t validKeys[][maxKeyLength] = {
                          { 0xB3, 0xC6, 0xD9, 0x80, 0x00, 0x00, 0x00 },
                          { 0x5B, 0xFC, 0x7A, 0xD, 0x00, 0x00, 0x00 },    // ADD YOUR KEYS HERE!
                          { 0xF1, 0x13, 0x54, 0x63, 0x00, 0x00, 0x00 },
                          { 0xCB, 0x6F, 0x2D, 0xD, 0x00, 0x00, 0x00 },
                          { 0x9B, 0x33, 0x2C, 0xD, 0x00, 0x00, 0x00 },
                          { 0x73, 0xFA, 0xF6, 0x1A, 0x00, 0x00, 0x00 },
                          { 0x83, 0x59, 0x36, 0x1A, 0x00, 0x00, 0x00 },
                          { 0x83, 0x1A, 0x3C, 0x1A, 0x00, 0x00, 0x00 },
                          { 0xB6, 0xB2, 0x52, 0xF8, 0x00, 0x00, 0x00 },
                          { 0x17, 0xE5, 0xD2, 0x2B, 0x00, 0x00, 0x00 },
                          { 0x79 ,0xF7, 0x88, 0x5A, 0x00, 0x00, 0x00 },
                          
                          { 0x2B, 0xDC, 0x49, 0xB, 0x00, 0x00, 0x00 }};
      int keyCount = sizeof validKeys / maxKeyLength; 
      
      #define CHILD_ID 99   // Id of the sensor child
      
      
      // Pin definition
      const int lockPin = 4;         // (Digital 4) The pin that activates the relay/solenoid lock.
      bool lockStatus;
      MyMessage lockMsg(CHILD_ID, V_LOCK_STATUS);
      PN532_I2C pn532i2c(Wire);
      PN532 nfc(pn532i2c);
      
      void setup() {
      
        pinMode(lockPin, OUTPUT);
      
        nfc.begin();
        uint32_t versiondata = nfc.getFirmwareVersion();
        if (! versiondata) {
          Serial.print("Couldn't find PN53x board");
          while (1); // halt
        }
        Serial.print("Found NFC chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); 
        Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); 
        Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
        // Set the max number of retry attempts to read from a card
        // This prevents us from waiting forever for a card, which is
        // the default behaviour of the PN532.
        nfc.setPassiveActivationRetries(0x3);
      
        // configure board to read RFID tags
        nfc.SAMConfig();
      
        lockStatus = loadState(0);    // Read last lock status from eeprom
        setLockState(lockStatus, true); // Now set the last known state and send it to controller 
      }
      
      void presentation()  {
        sendSketchInfo("RFID Lock", "1.0");
        present(CHILD_ID, S_LOCK);
      }
      
      void loop() {
        bool success;
        uint8_t key[] = { 0, 0, 0, 0, 0, 0, 0 };  // Buffer to store the returned UID
        uint8_t currentKeyLength;                        // Length of the UID (4 or 7 bytes depending on ISO14443A card type)
      
      
        // Wait for an ISO14443A type cards (Mifare, etc.).  When one is found
        // 'uid' will be populated with the UID, and uidLength will indicate
        // if the uid is 4 bytes (Mifare Classic) or 7 bytes (Mifare Ultralight)
        success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &key[0], &currentKeyLength);
      
        if (success) {
          Serial.print("Found tag id: ");
          for (uint8_t i=0; i < currentKeyLength; i++) 
          {
            if (i>0) Serial.print(",");
            Serial.print("0x");Serial.print(key[i], HEX); 
          }
          for (uint8_t i=currentKeyLength; i < maxKeyLength; i++) 
          {
            Serial.print(",0x00"); 
          }
      
      
          Serial.println("");
      
          bool valid = false;
          // Compare this key to the valid once registered here in sketch 
          for (int i=0;i<keyCount && !valid;i++) {
            for (int j=0;j<currentKeyLength && !valid;j++) {
              if (key[j] != validKeys[i][j]) {
                break;
              }
              if (j==currentKeyLength-1) {
                valid = true;
              }
            }
          }
          if (valid) {
            // Switch lock status
            setLockState(!lockStatus, true);       
          }
      
          // Wait for card/tag to leave reader    
          while(nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &key[0], &currentKeyLength));
        } 
      } 
      
      
      
      // Unlocks the door.
      void setLockState(bool state, bool doSend) {
        if (state)
        {
          Serial.println("open lock");
        if (doSend)
          send(lockMsg.set(true));
          digitalWrite(lockPin, true);
          wait(5000);
          Serial.println("close lock");
        if (doSend)
          send(lockMsg.set(false));
          digitalWrite(lockPin, false);
        } else {
        if (doSend)
          send(lockMsg.set(state));
      }
      }
      
      void receive(const MyMessage &message) {
        // We only expect one type of message from controller. But we better check anyway.
        if (message.type==V_LOCK_STATUS) {
           // Change relay state
           setLockState(message.getBool(), false); 
      
           // Write some debug info
           Serial.print("Incoming lock status:");
           Serial.println(message.getBool());
         } 
      }
      posted in Troubleshooting
      The-Holgi
      The-Holgi
    • RE: Rfid sketch

      I´ve change the code, now the state on transmitted to fhem, but state off not.

      void setLockState(bool state, bool doSend) {
        if (state)
        {
          Serial.println("open lock");
          digitalWrite(lockPin, true);
          wait(5000);
          Serial.println("close lock");
        if (doSend)
          send(lockMsg.set(state));
          digitalWrite(lockPin, false);
        }
      }```
      posted in Troubleshooting
      The-Holgi
      The-Holgi
    • RE: Rfid sketch

      Hm,
      now in fhem the state is not transmitted.

      posted in Troubleshooting
      The-Holgi
      The-Holgi
    • RE: Rfid sketch

      Thank you, it work´s perfect.
      greetings Holger

      posted in Troubleshooting
      The-Holgi
      The-Holgi
    • Rfid sketch

      Hello,
      can anyone help me to change the

      The relay should only put on for 3 seconds.

      /**
       * The MySensors Arduino library handles the wireless radio link and protocol
       * between your home built sensors/actuators and HA controller of choice.
       * The sensors forms a self healing radio network with optional repeaters. Each
       * repeater and gateway builds a routing tables in EEPROM which keeps track of the
       * network topology allowing messages to be routed to nodes.
       *
       * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
       * Copyright (C) 2013-2015 Sensnology AB
       * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
       *
       * Documentation: http://www.mysensors.org
       * Support Forum: http://forum.mysensors.org
       *
       * This program is free software; you can redistribute it and/or
       * modify it under the terms of the GNU General Public License
       * version 2 as published by the Free Software Foundation.
       *
       *******************************
       *
       * REVISION HISTORY
       * Version 1.0 - Henrik Ekblad
       * 
       * DESCRIPTION
       * RFID Lock sensor/actuator
       * 
       * Use RFID tag to lock/unlock a door or trigger a scene on your controller.
       * This example sketch allows you to add an optional relay or solenoid 
       * which can be activated/opened by RFID or controller.  
       *
       * Use the I2C wiring option for your RFID module and connect to the following Arduino pins.
       * 
       * RFID       Arduino
       * -----      -------
       * GND   ->   GND
       * VCC   ->   +5V
       * SCL   ->   A5
       * SDA   ->   A4
       * 
       * Use normal wiring for NRF24L01 radio
       * 
       * Attach a optional relay or solonoid lock to pin 4
       * http://www.mysensors.org/build/rfid 
       */
      
      // Enable debug prints to serial monitor
      #define MY_DEBUG 
      
      // Enable and select radio type attached
      #define MY_RADIO_NRF24
      //#define MY_RADIO_RFM69
      
      #include <SPI.h>
      #include <MySensors.h>  
      #include <Wire.h>
      #include <PN532_I2C.h>
      #include <PN532.h>
      
      
      // Add your valid rfid keys here. To find you your key just run sketch; hold your new RFID tag in fron ot the reader; 
      // and copy the key from serial output of this sketch.
      const uint8_t maxKeyLength = 7;
      uint8_t validKeys[][maxKeyLength] = {
                          { 0xB3, 0xC6, 0xD9, 0x80, 0x00, 0x00, 0x00 },
                          { 0, 0, 0, 0, 0, 0, 0 },    // ADD YOUR KEYS HERE!
                          { 0, 0, 0, 0, 0, 0, 0 }};
      int keyCount = sizeof validKeys / maxKeyLength; 
      
      
      #define CHILD_ID 99   // Id of the sensor child
      
      // Pin definition
      const int lockPin = 4;         // (Digital 4) The pin that activates the relay/solenoid lock.
      bool lockStatus;
      MyMessage lockMsg(CHILD_ID, V_LOCK_STATUS);
      PN532_I2C pn532i2c(Wire);
      PN532 nfc(pn532i2c);
      
      void setup() {
      
        pinMode(lockPin, OUTPUT);
      
        nfc.begin();
        uint32_t versiondata = nfc.getFirmwareVersion();
        if (! versiondata) {
          Serial.print("Couldn't find PN53x board");
          while (1); // halt
        }
        Serial.print("Found NFC chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); 
        Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); 
        Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
        // Set the max number of retry attempts to read from a card
        // This prevents us from waiting forever for a card, which is
        // the default behaviour of the PN532.
        nfc.setPassiveActivationRetries(0x3);
      
        // configure board to read RFID tags
        nfc.SAMConfig();
      
        lockStatus = loadState(0);    // Read last lock status from eeprom
        setLockState(lockStatus, true); // Now set the last known state and send it to controller 
      }
      
      void presentation()  {
        sendSketchInfo("RFID Lock", "1.0");
        present(CHILD_ID, S_LOCK);
      }
      
      void loop() {
        bool success;
        uint8_t key[] = { 0, 0, 0, 0, 0, 0, 0 };  // Buffer to store the returned UID
        uint8_t currentKeyLength;                        // Length of the UID (4 or 7 bytes depending on ISO14443A card type)
      
      
        // Wait for an ISO14443A type cards (Mifare, etc.).  When one is found
        // 'uid' will be populated with the UID, and uidLength will indicate
        // if the uid is 4 bytes (Mifare Classic) or 7 bytes (Mifare Ultralight)
        success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &key[0], &currentKeyLength);
      
        if (success) {
          Serial.print("Found tag id: ");
          for (uint8_t i=0; i < currentKeyLength; i++) 
          {
            if (i>0) Serial.print(",");
            Serial.print("0x");Serial.print(key[i], HEX); 
          }
          for (uint8_t i=currentKeyLength; i < maxKeyLength; i++) 
          {
            Serial.print(",0x00"); 
          }
      
      
          Serial.println("");
      
          bool valid = false;
          // Compare this key to the valid once registered here in sketch 
          for (int i=0;i<keyCount && !valid;i++) {
            for (int j=0;j<currentKeyLength && !valid;j++) {
              if (key[j] != validKeys[i][j]) {
                break;
              }
              if (j==currentKeyLength-1) {
                valid = true;
              }
            }
          }
          if (valid) {
            // Switch lock status
            setLockState(!lockStatus, true);       
          }
      
          // Wait for card/tag to leave reader    
          while(nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &key[0], &currentKeyLength));
        } 
      } 
      
      
      
      // Unlocks the door.
      void setLockState(bool state, bool doSend){
        if (state) 
           Serial.println("open lock");
        else
           Serial.println("close lock");
        if (doSend)
          send(lockMsg.set(state));
        digitalWrite(lockPin, state);
        saveState(0,state);
        lockStatus = state;
      }
      
      void receive(const MyMessage &message) {
        // We only expect one type of message from controller. But we better check anyway.
        if (message.type==V_LOCK_STATUS) {
           // Change relay state
           setLockState(message.getBool(), false); 
      
           // Write some debug info
           Serial.print("Incoming lock status:");
           Serial.println(message.getBool());
         } 
      }l```
      posted in Troubleshooting
      The-Holgi
      The-Holgi
    • RE: 💬 RFID Lock Sensor

      @jopebe said in 💬 RFID Lock Sensor:

      1. Every change to "Sensor open" should be for only let`s say 3 seconds or another adjustable time and than fall back to Default = "Sensor Locked" . Time enough e.g. to open the door or s.e.
        Is there anybody who can give me some hints how to ad this features into the given sketch?
        Thank You in advance
        Jopebe

      Hello,
      i have the same problem.
      Does anyone have a solution? The relay should only put on for 3 seconds.
      Greeting Holger

      posted in Announcements
      The-Holgi
      The-Holgi
    • RE: 💬 In Wall AC/DC Pcb for MySensors

      Hello,
      i´have purchased the in wall pcb rev.3.1.
      0_1548178091789_IMG_2001.JPG
      Now i´m want to cut up the right part of the pcb and powering the pcb with 5V power adapter.
      Why is the VCC pin (lower arrow) with the arduino GND pin (upper arrow) connectet?
      The GND pin lower side is connectet to arduino VCC pin, is that a mistake?
      I´m think the print vcc and ground are reversed.

      posted in OpenHardware.io
      The-Holgi
      The-Holgi
    • RE: EasyPcb BH1750 Batterie sketch

      Hello,
      the extended code works with right value . Every second the node sends the Batterie value and voltage to Controller.
      Thanks vor the code.

      posted in Troubleshooting
      The-Holgi
      The-Holgi
    • RE: EasyPcb BH1750 Batterie sketch

      Hello,
      on A0 are 0,8V. Batterie voltage is 2,6V.

      posted in Troubleshooting
      The-Holgi
      The-Holgi