eedomus as controller



  • Hello,
    I just discover MySensors. It seems eedomus is not currently supported. Is there a chance I could integrate my eedomus controller with MySensors ?
    Any hint/advice on how to proceed would be warmly welcomed.


  • Admin

    Most documentation on eedomus seems to be in french so I'm having a hard time understanding what integration possibilities there are.
    Sorry.. Looked at the wrong site...

    But basically if eedomus have some sort of plugin architecture allowing you to open a ethernet socket connection or have access to serial USB you should be able to write a plugin for the controller.

    MySensors serial protocol is described here:
    http://www.mysensors.org/download/serial_api_14

    Do you plan to write the plugin yourself?



  • Hello,

    I asked for support eedomus team and in eedomus forum but got no reply at all.

    eedomus box has an USB port. I wonder, if I build a serial gateway (http://www.mysensors.org/build/serial_gateway) and connect the USB port to my eedomus box, is there any chance my box will recognize it ?

    I think I have no possibility to build a plug-in for eedomus as Connected Objects does not provide any kind of API to extend the features of their box.



  • Hello,

    Here is the status on my project to connect my eedomus controller to MySensors:
    I am limited to make HTTP request to update some virtual state on my eedomus box.
    I build an Arduino (mega) with an Ethernet shield to validate I can update a virtual state on eedomus.
    I built a MySensor serial gateway with a temp/humidity sensor. Using hard-coded sensor's ID, I managed to get temp/humidity on the gateway.
    I am now stuck to make both working together.
    I have my sketch gateway: MySensorsGateway (http://www.mysensors.org/build/serial_gateway) using the library MyGateway and I have the library Ethernet.
    In MySensorsGateway, I can use Ethernet library but I cannot access the message received.
    In MyGateway library, I can view/display the message received but I cannot use Ethernet library.
    I would like to access received message in MySensorsGateway in order to forward them by HTTP requests to my eedomus controller.
    Can you point me in the right direction ? Some sample code would be great.


  • Admin

    You'll have to define a callback-function when calling gw.begin(). This function will receive all incoming messages. You can have a look at RelayActuator as an example of defining a callback.

    The SerialGateway already uses this callback and should be possible to update.



  • Thank you, that seems to perfectly answer my need.
    However I have one question: I will use the MyGateway::begin which takes void (*inDataCallback)(char ) parameter which seems less convenient to use than the void (_msgCallback)(const MyMessage &) parameter of the MySensor::begin.
    Why is it like this ? Would it be not more convenient to have a callback with a MyMessage ?


  • Admin

    You don't need the gateway class. Just initialise the MySensors with static id 0.

    (A suggestion is to have a look at the development branch instead.)



  • Hello,
    Thanx to your help, it is now a few months I have a temp/humidity MySensor with the data updated in my eedomus domotic box.
    Now the next challenge is to make a relay actuator. I did not buy the hardware yet, thus I wish to validate the transfer of the message from the box->gateway->sensor.

    • I have made the first step getting the command (O=Off, 1=On) from my eedomux box to my gateway node.
    • Now I am trying to send the message from gateway (ID=0) to my existing temp/humidity sensor node (ID=10). I have written the following code:
    void loop() 
    {
      // Alway process incoming messages whenever possible
      gw.process(); //Read radio message, and display in serial window
    
     //Create a test messge to send to node
      MyMessage msg;
      boolean ok = false;
      msg.sender = 0; //0=gateway ID
      msg.destination = 10; //node ID
      msg.sensor = 2; //To be set later: CHILD_ID_HUM 0/CHILD_ID_TEMP 1
      msg.type = 1; //set=This message is sent from or to a sensor when a sensor value should be updated
      mSetRequestAck(msg,0); //What is the difference with the one after ?
      mSetAck(msg,false); //For now no ack, later it would be better to get one
      mSetCommand(msg,S_LIGHT);
      msg.set(1);
      ok = gw.send(msg);
        if (!ok) {
    //      //errBlink(1);
          Serial.println("Error sending message");
    

    For now the gw.send returns not OK.
    Am I doing right by creating the message manually or is there a better way to do ?
    What is wrong that the message is not sent ?


  • Admin

    Shouldn't msg.type be S_LIGHT and command be 1?

    gw.send() actually sets command to C_SET for you
    https://github.com/mysensors/Arduino/blob/master/libraries/MySensors/MySensor.cpp#L483-L487

    Not sure why send returns false.. indicates that no ack was received from the other radio.



  • I am still trying to make it work. I uploaded on my temp/humidity sensor the code of the relay actuator (sketch:47534). I just updated this line to set the ID=10:

    gw.begin(incomingMessage, 10, true); //Set ID=10 instead of AUTO
    

    On the serial window of the temp/humidity everything looks fine:

    read: 0-0-10 s=0,c=1,t=3,pt=2,l=2:18
    send: 10-10-0-0 s=0,c=1,t=3,pt=2,l=2,st=ok:18
    

    But on my node (gateway) I still have error

    send: 0-0-255-10 s=0,c=1,t=3,pt=2,l=2,st=fail:18
    Error sending message
    

    The code is now as below:

      // Alway process incoming messages whenever possible
      gw.process(); //Read radio message, and display in serial window
      
      //Create a test messge to send to node
      MyMessage msg;
      boolean ok = false;
      msg.sender = 0;
      msg.destination = 10;
      msg.sensor = 0; //To be set later
      msg.type = S_LIGHT;
      //mSetRequestAck(msg,0); //No ack
      //mSetAck(msg,false);
      //mSetCommand(msg,S_LIGHT);
      msg.set(18);
      ok = gw.send(msg, true);
        if (!ok) {
          //errBlink(1);
          Serial.println("Error sending message");
        }
        else  
          Serial.println("Success !!!!");
      delay(5000);
    

  • Admin

    @godestalbin said:

    read: 0-0-10 s=0,c=1,t=3,pt=2,l=2:18

    Message seem to reach node... Did you add a capacitor to the node? It seems to have some problem sending ack back to gateway. Usually indicates a powering issue.



  • Yes, I have capacitor on both radio.


Log in to reply
 

Suggested Topics

  • 2
  • 6
  • 5
  • 10
  • 4
  • 75

0
Online

11.4k
Users

11.1k
Topics

112.7k
Posts