RELAY 433MHZ + KEYPAD 4x4 COMANDER (vera-domoticz)



  • Hello everyone , I'm trying to create a gateway with the following modules ;
    433 sender
    4x4 keypad
    Arduino mini / nano
    NRF24L01
    10uf Capacitor

    he project is in development I'm stuck in the insertion of the keypad would use 4 -pin analog and 4 digital pins . I welcome suggestions on code.

    link where it started my idea: http://forum.mysensors.org/topic/1557/combined-mysensor-gateway-with-433mhz-transmitter-homeeasy-klik-aan-klik-uit
    link original code which I then edited: https://github.com/meijeren/MySensors-RF433-Node

    IMG_2996.JPG
    https://codebender.cc/sketch:209936

    Cattura.PNG


  • Contest Winner

    @Michel-It There is an Adruino module for scanning 4x4 key matrixs. You can find it here: http://playground.arduino.cc/Main/KeypadTutorial



  • I have one better, but how to implement it in code mysensor?Schematic-Keypad.png

    .

    New Code > sketch + Library > https://codebender.cc/sketch:183503

    Original Code

    #include <MyTransportNRF24.h>
    #include <MyHwATMega328.h>
    #include <MySensor.h>
    #include <SPI.h>
    #include <Wire.h>
    #include <RCSwitch.h>
    RCSwitch mySwitch = RCSwitch();
    
    #define NODE_ID          165
    #define NODE_VERSION     "1.1"
    #define NODE_DESCRIPTION "MikRelay"
    
    
    #define NUMFLAKES 10
    #define XPOS 0
    #define YPOS 1
    #define DELTAY 2
    
    #define RADIO_TX_PIN 2
    #define NUMBER_OF_RELAYS 11 // Total number of attached relays
    typedef struct 
    {
      unsigned long address;
      unsigned char unit;
      bool dimmer;
    } MikParams;
    MikParams Mik_PARAMS[NUMBER_OF_RELAYS] =
    {
      {87311, 24, false},
      {87500, 24, false},
      {87491, 24, false},
      {87359, 24, false},
      {87539, 24, false},
      {87548, 24, false},
      {87536, 24, false},
      {87356, 24, false},
      {87503, 24, false},
      {4011779, 24, false},
      {4011968, 24, false}
      
    };
    
    
    // NRFRF24L01 radio driver (set low transmit power by default)
    MyTransportNRF24 radio(RF24_CE_PIN, RF24_CS_PIN, RF24_PA_LEVEL_GW);
    //MyTransportRFM69 radio;
    // Message signing driver (none default)
    //MySigningNone signer;
    // Select AtMega328 hardware profile
    MyHwATMega328 hw;
    // Construct MySensors library
    MySensor gw(radio, hw);
    
    void setup()
    {
      mySwitch.enableTransmit(RADIO_TX_PIN);
      // init done
      // Show image buffer on the display hardware.
      // Since the buffer is intialized with an Adafruit splashscreen
      // internally, this will display the splashscreen.
      // Initialize library and add callback for incoming messages
      gw.begin(incomingMessage, NODE_ID, false);
    
      delay(2000);
    
      // Send the sketch version information to the gateway and Controller
      gw.sendSketchInfo(NODE_DESCRIPTION, NODE_VERSION);
    
      // Fetch relay status
      for (int sensor = 1; sensor <= NUMBER_OF_RELAYS; sensor++) {
        // Register all sensors to gw (they will be created as child devices)
        gw.present(sensor, S_LIGHT);
      }
    }
    
    void loop()
    {
      // Alway process incoming messages whenever possible
      gw.process();
    }
    
    void incomingMessage(const MyMessage &message)
    {
      if ((message.sensor < 1) && (message.sensor >= NUMBER_OF_RELAYS))
      {
        return;
      }
      if (message.type == V_LIGHT)
      {
        mySwitch.send(Mik_PARAMS[message.sensor - 1].address, Mik_PARAMS[message.sensor - 1].unit);
        // Store state in eeprom
        gw.saveState(message.sensor, message.getBool());
        // Write some debug info
        Serial.print("Incoming change for sensor:");
        Serial.print(message.sensor);
        Serial.print(", Miks: ");
        Serial.print(Mik_PARAMS[message.sensor - 1].address);
        Serial.print(", Miks: ");
        Serial.print(Mik_PARAMS[message.sensor - 1].unit);
        Serial.print(", New status: ");
        Serial.println(message.getBool());
    
      }
      else if (message.type == V_DIMMER)
      {
        mySwitch.send(Mik_PARAMS[message.sensor - 1].address, Mik_PARAMS[message.sensor - 1].unit);
      }
    }```
    
    

    I know that not everyone. but there is some kind soul can help me?

    I see you do not laugh!


Log in to reply
 

Suggested Topics

  • 8
  • 1
  • 1
  • 1
  • 2
  • 3

0
Online

11.2k
Users

11.1k
Topics

112.5k
Posts