Ultrasonic Sensor+1 Relay node does not work



  • Hi,

    I am trying to build a node with Ultrasonic sensor and 1 relay. I used the sample code and tried to build one. I am facing issues. The Domoticz will detect the ultrasonic sensor using the provided example code but when I merge them it gives error and does not detect. My sketch is as below:

    #include <SPI.h>
    #include <MySensor.h>  
    #include <NewPing.h>
    
    #define CHILD_ID_DISTANCE 1
    #define CHILD_ID_RELAY 10
    #define TRIGGER_PIN  6  // Arduino pin tied to trigger pin on the ultrasonic sensor.
    #define ECHO_PIN     5  // Arduino pin tied to echo pin on the ultrasonic sensor.
    #define MAX_DISTANCE 300 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
    #define RELAY_1  3  // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
    #define RELAY_ON 1  // GPIO value to write to turn on attached relay
    #define RELAY_OFF 0 // GPIO value to write to turn off attached relay
    
    MySensor gw;
    NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
    MyMessage msg(CHILD_ID_DISTANCE, V_DISTANCE);
    int lastDist;
    boolean metric = true; 
    
    void setup()  
    { 
      gw.begin(incomingMessage, AUTO,false);
    
      // Send the sketch version information to the gateway and Controller
      gw.sendSketchInfo("Distance Sensor", "1.0");
    
      // Register all sensors to gw (they will be created as child devices)
        gw.present(CHILD_ID_DISTANCE, S_DISTANCE);
        boolean metric = gw.getConfig().isMetric;
      
        gw.sendSketchInfo("Relay", "1.0");
        // Register all sensors to gw (they will be created as child devices)
        gw.present(CHILD_ID_RELAY, S_LIGHT);
        // Then set relay pins in output mode
        pinMode(RELAY_1, OUTPUT);   
        // Set relay to last known state (using eeprom storage) 
        digitalWrite(RELAY_1, gw.loadState(CHILD_ID_RELAY)?RELAY_ON:RELAY_OFF);
      
    }
    
    void loop()      
    {     
    	gw.process();
    
    	int dist = metric?sonar.ping_cm():sonar.ping_in();
    	Serial.print("Ping: ");
    	Serial.print(dist); // Convert ping time to distance in cm and print result (0 = outside set distance range)
    	Serial.println(metric?" cm":" in");
    
    	  if (dist != lastDist) {
    		  gw.send(msg.set(dist));
    		  lastDist = dist;
    	  }
    
      //gw.sleep(SLEEP_TIME);
    	
    }
    
    void incomingMessage(const MyMessage &message) {
      // We only expect one type of message from controller. But we better check anyway.
      if (message.type==V_LIGHT) {
         // Change relay state
         digitalWrite(RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF);
         // 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(", New status: ");
         Serial.println(message.getBool());
       } 
    }
    

    I am unable to figure out why it is not working.

    The log file from Domoticz shows the below:

    2015-05-26 07:05:52.585 MySensors: Using serial port: /dev/ttyUSB0
    2015-05-26 07:05:57.410 Error: MySensors: Unhandled sensor (sub-type=13), please report with log!
    2015-05-26 07:05:57.429 Error: MySensors: Unhandled sensor (sub-type=13), please report with log!
    2015-05-26 07:05:57.440 Error: MySensors: Unhandled sensor (sub-type=13), please report with log!
    

    and it keeps on going.
    Below is the output when Node is connected to serial port.

    Ping: 11 cm
    send: 5-5-0-0 s=1,c=1,t=13,pt=2,l=2,st=ok:11
    read: 5-1-0 s=10,c=0,t=3,pt=0,l=5:1.4.1
    Ping: 9 cm
    send: 5-5-0-0 s=1,c=1,t=13,pt=2,l=2,st=ok:9
    read: 5-1-0 s=10,c=0,t=3,pt=0,l=5:1.4.1
    Ping: 9 cm
    Ping: 11 cm
    send: 5-5-0-0 s=1,c=1,t=13,pt=2,l=2,st=ok:11
    read: 5-1-0 s=10,c=0,t=3,pt=0,l=5:1.4.1
    

    I am using Raspberry pi as gateway with Arduino Uno. Arduino Mini Pro as node.
    Please help me figure out what could be the issue. Any help is really appreciated. Thanks.!😃



  • The distance sensor is supported in the beta version of Domoticz



Suggested Topics

25
Online

11.2k
Users

11.1k
Topics

112.5k
Posts