USB gateway for 433MHz



  • Hello
    i have ordered the 2.4 GHz RF transmitters and waiting for them but for the time being i only have those 433 MHz
    http://www.ebay.com/itm/380717845396?rmvSB=true
    and would like to try them with the USBgateway sketch on my nano arduino (mini pro sensor side) and domoticZ . How should i modify the sketch for those simple 433 MHz RF ?
    Thanks in advance


  • Mod

    @fhenryco sorry, but 433mhz senders & receivers are not supported by the mysensors network.
    For these to work you would need low-level drivers etc and these are not part of mysensors.
    Once you get the 2.4ghz modules, you can build a bridge using 433mhz to mysensors.



  • Take a look at this, works pretty good for me

    // Enable debug prints to serial monitor
    #define MY_DEBUG 
    
    // Enable and select radio type attached
    #define MY_RADIO_NRF24
    
    
    // Enable repeater functionality for this node
    //#define MY_REPEATER_FEATURE
    
    #include <SPI.h>
    #include <MySensors.h>
    #include <RCSwitch.h>
    
    RCSwitch mySwitch = RCSwitch();
    
    #define RELAY_1  1  // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
    #define NUMBER_OF_RELAYS 18 // Total number of attached relays
    
    
    #define SLEEP_BETWEEN_ALL_ON 100
    #define SLEEP_BETWEEN_ALL_OFF 100
    
    
    void before()
    { 
      for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
        // Then set relay pins in output mode
        //-----------pinMode(pin, OUTPUT);   
        // Set relay to last known state (using eeprom storage) 
        //-----------digitalWrite(pin, loadState(sensor)?RELAY_ON:RELAY_OFF);
      }  
    }
    
    void setup()
    {
      // Transmitter is connected to Arduino Pin #10  
      mySwitch.enableTransmit(8);
      
      // Optional set pulse length.
      // mySwitch.setPulseLength(320);
    }
    
    void presentation()  
    {   
      // Send the sketch version information to the gateway and Controller
      sendSketchInfo("RF 433Mhz", "1.0");
    
      for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
        // Register all sensors to gw (they will be created as child devices)
        present(sensor, S_BINARY);
      }
    }
    
    
    void loop() 
    {
      
    }
    
    void receive(const MyMessage &message)
    {
      // We only expect one type of message from controller. But we better check anyway.
      if (message.type==V_STATUS)
      {
           
        // Switch on:
        // The first parameter represents the setting of the first rotary switch. 
        // In this example it's switched to "1" or "A" or "I". 
    
    
        
        // 
        // The second parameter represents the setting of the second rotary switch. 
        // In this example it's switched to "4" or "D" or "IV".
    
    
        // 1 = channel A
        // 2 = channel B
        // 3 = channel C
        // 4 = channel D
           
        switch (message.sensor-1+RELAY_1)
        {
            case 1:
              if(message.getBool() == 1){mySwitch.switchOn(1, 1);}else{mySwitch.switchOff(1, 1);}
              break;
            case 2:
              if(message.getBool() == 1){mySwitch.switchOn(1, 2);}else{mySwitch.switchOff(1, 2);}
              break;
            case 3:
              if(message.getBool() == 1){mySwitch.switchOn(1, 3);}else{mySwitch.switchOff(1, 3);}
              break;
            case 4:
              if(message.getBool() == 1){mySwitch.switchOn(1, 4);}else{mySwitch.switchOff(1, 4);}
              break;
            case 5:
              if(message.getBool() == 1){mySwitch.switchOn(2, 1);}else{mySwitch.switchOff(2, 1);}
              break;
            case 6:
              if(message.getBool() == 1){mySwitch.switchOn(2, 2);}else{mySwitch.switchOff(2, 2);}
              break;
            case 7:
              if(message.getBool() == 1){mySwitch.switchOn(2, 3);}else{mySwitch.switchOff(2, 3);}
              break;
            case 8:
              if(message.getBool() == 1){mySwitch.switchOn(2, 4);}else{mySwitch.switchOff(2, 4);}
              break;
            case 9:
              if(message.getBool() == 1){mySwitch.switchOn(3, 1);}else{mySwitch.switchOff(3, 1);}
              break;
            case 10:
              if(message.getBool() == 1){mySwitch.switchOn(3, 2);}else{mySwitch.switchOff(3, 2);}
              break;
            case 11:
              if(message.getBool() == 1){mySwitch.switchOn(3, 3);}else{mySwitch.switchOff(3, 3);}
              break;
            case 12:
              if(message.getBool() == 1){mySwitch.switchOn(3, 4);}else{mySwitch.switchOff(3, 4);}
              break;
            case 13:
              if(message.getBool() == 1){mySwitch.switchOn(4, 1);}else{mySwitch.switchOff(4, 1);}
              break;
            case 14:
              if(message.getBool() == 1){mySwitch.switchOn(4, 2);}else{mySwitch.switchOff(4, 2);}
              break;
            case 15:
              if(message.getBool() == 1){mySwitch.switchOn(4, 3);}else{mySwitch.switchOff(4, 3);}
              break;
            case 16:
              if(message.getBool() == 1){mySwitch.switchOn(4, 4);}else{mySwitch.switchOff(4, 4);}
              break;
    
    
            // ALL ON
            case 17:
                mySwitch.switchOff(1, 1);
                delay(SLEEP_BETWEEN_ALL_OFF);
                mySwitch.switchOff(1, 2);
                delay(SLEEP_BETWEEN_ALL_OFF);
                mySwitch.switchOff(1, 3);
                delay(SLEEP_BETWEEN_ALL_OFF);
                mySwitch.switchOff(1, 4);
                delay(SLEEP_BETWEEN_ALL_OFF);
                mySwitch.switchOff(2, 1);
                delay(SLEEP_BETWEEN_ALL_OFF);
                mySwitch.switchOff(2, 2);
                delay(SLEEP_BETWEEN_ALL_OFF);
                mySwitch.switchOff(2, 3);
                delay(SLEEP_BETWEEN_ALL_OFF);
                mySwitch.switchOff(2, 4);
                delay(SLEEP_BETWEEN_ALL_OFF);
                mySwitch.switchOff(3, 1);
                delay(SLEEP_BETWEEN_ALL_OFF);
                mySwitch.switchOff(3, 2);
                delay(SLEEP_BETWEEN_ALL_OFF);
                mySwitch.switchOff(3, 3);
                delay(SLEEP_BETWEEN_ALL_OFF);
                mySwitch.switchOff(3, 4);
                delay(SLEEP_BETWEEN_ALL_OFF);
                mySwitch.switchOff(4, 1);
                delay(SLEEP_BETWEEN_ALL_OFF);
                mySwitch.switchOff(4, 2);
                delay(SLEEP_BETWEEN_ALL_OFF);
                mySwitch.switchOff(4, 3);
                delay(SLEEP_BETWEEN_ALL_OFF);
                mySwitch.switchOff(4, 4); 
              break;
    
            // ALL OFF
            case 18:
                mySwitch.switchOn(1, 1);
                delay(SLEEP_BETWEEN_ALL_ON);
                mySwitch.switchOn(1, 2);
                delay(SLEEP_BETWEEN_ALL_ON);
                mySwitch.switchOn(1, 3);
                delay(SLEEP_BETWEEN_ALL_ON);
                mySwitch.switchOn(1, 4);
                delay(SLEEP_BETWEEN_ALL_ON);
                mySwitch.switchOn(2, 1);
                delay(SLEEP_BETWEEN_ALL_ON);
                mySwitch.switchOn(2, 2);
                delay(SLEEP_BETWEEN_ALL_ON);
                mySwitch.switchOn(2, 3);
                delay(SLEEP_BETWEEN_ALL_ON);
                mySwitch.switchOn(2, 4);
                delay(SLEEP_BETWEEN_ALL_ON);
                mySwitch.switchOn(3, 1);
                delay(SLEEP_BETWEEN_ALL_ON);
                mySwitch.switchOn(3, 2);
                delay(SLEEP_BETWEEN_ALL_ON);
                mySwitch.switchOn(3, 3);
                delay(SLEEP_BETWEEN_ALL_ON);
                mySwitch.switchOn(3, 4);
                delay(SLEEP_BETWEEN_ALL_ON);
                mySwitch.switchOn(4, 1);
                delay(SLEEP_BETWEEN_ALL_ON);
                mySwitch.switchOn(4, 2);
                delay(SLEEP_BETWEEN_ALL_ON);
                mySwitch.switchOn(4, 3);
                delay(SLEEP_BETWEEN_ALL_ON);
                mySwitch.switchOn(4, 4);
              break;
            default:
              Serial.println("Unknown Status");
            break;
         }
        
         saveState(message.sensor, message.getBool());
         // Write some debug info
    
         
         Serial.print("Incoming change for binary switch: ");
         Serial.print(message.sensor);
         Serial.print(", New status: ");
         Serial.println(message.getBool());
       } 
    }
    
    

Log in to reply
 

Suggested Topics

  • 4
  • 933
  • 274
  • 5
  • 3
  • 9

0
Online

11.2k
Users

11.1k
Topics

112.5k
Posts