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.
-
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_14Do 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.
-
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 ?
-
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 ?
-
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-L487Not 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);
-
@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.