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
 

557
Online

6.9k
Users

7.8k
Topics

82.8k
Posts

Looks like your connection to MySensors Forum was lost, please wait while we try to reconnect.