Porting MySensors to work with the RadioHead library
-
I used the Mysensors 1.4.1 library and managed to get a UNO with Ethernet shield and NRF24L01+PA+LNA working as an MQTT gateway.
I then changed the library to the latest development library (downloaded on 01.12.2014) and uploaded the MQTT gateway setch to the same hardware -> Also worked fine.
I then changed MyConfig.h to use the RF69 radio instead of NRF24 and just tried to compile. I got a lot of errors:
MQTT_Gateway_Compile_errors.txtI am using Arduino IDE 1.5.8
I am happy to help with testing, but I am afraid my programming skills are not good enough to assist with that.
@CARSTEN I got the same compile errors. It turns out Arduino IDE 1.5.7 and above have a new compiler which requires PROGMEM data to be const.
See this discussion: http://forum.arduino.cc/index.php?topic=277173.0I was able to resolve the compile errors by adding const where flagged by the compiler:
In MyMQTT.h:
. . . .
const char V_0[] PROGMEM = "TEMP"; //V_TEMP
etc . ..Then:
const char * const vType[] PROGMEM = {
V_0, V_1, . . . .You also need to change the getType function in MQTTGateway.ino to account for the change in type of vType[]
char *getType(char *b, const char * const *index) { . . . .Compiled with no errors for RFM69 on Arduino 1.5.8 after these changes.
I have not had a chance to upload and test on my Motineo's. -
Hi all,
Happy new year
I've just have the same idea, I'm new to arduino since chrismas :)
and I want to test mysensor with nrf905, It seem to be compatible with RH librairies.Could you just say me what i have to do ?
I'll have to include the kolaf librairies ?Just, If you have a link to the repository in order to work on it with you
Thanks for all
-
So, I'm working on it with the developpement branch of mysensor.
I've find some nrf905 librairies arround the web, but the RadioHead seem to be more powerfull and complete.
I'll give you news soon,First of all, i probably need help to diagnose because i've had only one raspberry, one arduino and two atmega328p chipset more
-
Did anyone ever solve the this compile error?
In file included from /home/andrew/sketchbook/libraries/MySensors/MyConfig.h:27,
from /home/andrew/sketchbook/libraries/MySensors/MySensor.h:17,
from SerialGateway.ino:27:
/home/andrew/sketchbook/libraries/MySensors/MyDriverRF69.h:40: error: ISO C++ forbids initialization of member ‘radio’
/home/andrew/sketchbook/libraries/MySensors/MyDriverRF69.h:40: error: making ‘radio’ static
/home/andrew/sketchbook/libraries/MySensors/MyDriverRF69.h:40: error: invalid in-class initialization of static data member of non-integral type ‘RFM69*’I have tried with IDEs 1.04, 1.05 and 1.06
-
Did anyone ever solve the this compile error?
In file included from /home/andrew/sketchbook/libraries/MySensors/MyConfig.h:27,
from /home/andrew/sketchbook/libraries/MySensors/MySensor.h:17,
from SerialGateway.ino:27:
/home/andrew/sketchbook/libraries/MySensors/MyDriverRF69.h:40: error: ISO C++ forbids initialization of member ‘radio’
/home/andrew/sketchbook/libraries/MySensors/MyDriverRF69.h:40: error: making ‘radio’ static
/home/andrew/sketchbook/libraries/MySensors/MyDriverRF69.h:40: error: invalid in-class initialization of static data member of non-integral type ‘RFM69*’I have tried with IDEs 1.04, 1.05 and 1.06
@andrewm844
Hi,
I'm working on 905, so I don't have to check the 69, but I've the same compile error
I just replace
// RFM69 *radio = NULL;
RFM69 *radio;
in the MyDriverRF69.h file -
Hi everyone,
i am new to MySensors. I already made sime Arduino pro mini running with a NRF24L01.
But i also bought some Anarduino with the RF69 installed. Can anybody tell me how i can tell the library to use the RF69 instead of the NRF24L01?
I used the Developement version of the MySensor library. I tried to find the point in MyConfig.h but i could only find the NRF24L01 Driver Defaults part.Maybe someone could help me.
Thanks in advance.
Benjamin -
I'm interested in the progress of getting RadioHead working with MySensor....
what the current status??
where is the current code for this effort?
Thanks
-
@kolaf
I've been busy with other stuff for some time but looking at the driver separation now once again. With nRF24 working (even bootloader adjusted to pick the right header files etc.) and two Moteinos at hand (Moteino RFM69W 868/915), I compiled and flashed a serial gateway and a simple temperature sensor node. Both appear to work fine looking at the debug messages except the fact that they don't listen to eachother. Both are sending but none is receiving anything (2m distance).
I did not touch or even closely look at the RFM69 driver code yet but will try to do so over the weekend. Do you have any hint where to check first? -
You only need to initiate the MySensor class with the rfm69 class like this in the gateway (and sensors):
MyTransportRF69 radio; -
I had done that, getting error...
Some questions:
I notice that the MyTransportNRF24 had definition for the pins in the function, RM69, has none...
I take it, its defaulted to the Moteino standards pinout?The file MyHwATMega328.cpp is for the 328, i assume that I would need to make one for the ATmega1284P chip? if there are any changes needed.
Thanks I will work on these error, if you have any insight on cause, please let me know...
(sure wish the IDE was better.....)
Arduino: 1.6.1 (Mac OS X), Board: "MoteinoMEGA"
SerialGateway.ino:56:26: error: no matching function for call to 'MySensor::MySensor(MyTransportRF69 (&)(), MySigningNone&)'
SerialGateway.ino:56:26: note: candidates are:
In file included from SerialGateway.ino:34:0:
/Users/lafleur/Desktop/MySensor-Arduino-development/libraries/MySensors/MySensor.h:78:2: note: MySensor::MySensor(MyTransport&, MyHw&, MySigning&)
MySensor(MyTransport &radio =*new MyTransportNRF24(), MyHw &hw=*new MyHwDriver()
^
/Users/lafleur/Desktop/MySensor-Arduino-development/libraries/MySensors/MySensor.h:78:2: note: no known conversion for argument 1 from 'MyTransportRF69()' to 'MyTransport&'
/Users/lafleur/Desktop/MySensor-Arduino-development/libraries/MySensors/MySensor.h:69:7: note: MySensor::MySensor(const MySensor&)
class MySensor
^
/Users/lafleur/Desktop/MySensor-Arduino-development/libraries/MySensors/MySensor.h:69:7: note: candidate expects 1 argument, 2 provided
Error compiling. -
I had done that, getting error...
Some questions:
I notice that the MyTransportNRF24 had definition for the pins in the function, RM69, has none...
I take it, its defaulted to the Moteino standards pinout?The file MyHwATMega328.cpp is for the 328, i assume that I would need to make one for the ATmega1284P chip? if there are any changes needed.
Thanks I will work on these error, if you have any insight on cause, please let me know...
(sure wish the IDE was better.....)
Arduino: 1.6.1 (Mac OS X), Board: "MoteinoMEGA"
SerialGateway.ino:56:26: error: no matching function for call to 'MySensor::MySensor(MyTransportRF69 (&)(), MySigningNone&)'
SerialGateway.ino:56:26: note: candidates are:
In file included from SerialGateway.ino:34:0:
/Users/lafleur/Desktop/MySensor-Arduino-development/libraries/MySensors/MySensor.h:78:2: note: MySensor::MySensor(MyTransport&, MyHw&, MySigning&)
MySensor(MyTransport &radio =*new MyTransportNRF24(), MyHw &hw=*new MyHwDriver()
^
/Users/lafleur/Desktop/MySensor-Arduino-development/libraries/MySensors/MySensor.h:78:2: note: no known conversion for argument 1 from 'MyTransportRF69()' to 'MyTransport&'
/Users/lafleur/Desktop/MySensor-Arduino-development/libraries/MySensors/MySensor.h:69:7: note: MySensor::MySensor(const MySensor&)
class MySensor
^
/Users/lafleur/Desktop/MySensor-Arduino-development/libraries/MySensors/MySensor.h:69:7: note: candidate expects 1 argument, 2 provided
Error compiling.Yeah, the work on the TransportRF69 need some polishing. It defaults to monteino pins right now. If you have the time add configuration to the driver, please help out.
I don't have any MonteinoMega so I really don't know how it differs regarding hw. Hopefully not too much.
-
I get the same error's if I select the standard Moteino and the RF24 radio???
so, I must have a version skew or IDE issue...
I'm using the source code form the development branch....
Arduino: 1.6.1 (Mac OS X), Board: "Moteino"
SerialGateway.ino:57:26: error: no matching function for call to 'MySensor::MySensor(MyTransportNRF24&, MySigningNone&)'
SerialGateway.ino:57:26: note: candidates are:
In file included from SerialGateway.ino:34:0:
/Users/lafleur/Desktop/MySensor-Arduino-development/libraries/MySensors/MySensor.h:78:2: note: MySensor::MySensor(MyTransport&, MyHw&, MySigning&)
MySensor(MyTransport &radio =*new MyTransportNRF24(), MyHw &hw=*new MyHwDriver()
^
/Users/lafleur/Desktop/MySensor-Arduino-development/libraries/MySensors/MySensor.h:78:2: note: no known conversion for argument 2 from 'MySigningNone' to 'MyHw&'
/Users/lafleur/Desktop/MySensor-Arduino-development/libraries/MySensors/MySensor.h:69:7: note: MySensor::MySensor(const MySensor&)
class MySensor
^
/Users/lafleur/Desktop/MySensor-Arduino-development/libraries/MySensors/MySensor.h:69:7: note: candidate expects 1 argument, 2 provided
Error compiling.This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences. -
@lafleur:
I got the same error, also 1.6.1 (Mac OSX) board Uno, and Nano. My solution was to remove the signing object in the initialization:// Construct MySensors library MySensor gw(radio);Then it compiles without issues. I have other issues though, but they might be related to the radios.
-
removing the Construct object, will cause other error, as the gw is not defined at this point...
SerialGateway.ino: In function 'void setup()':
SerialGateway.ino:67:3: error: 'gw' was not declared in this scope
SerialGateway.ino: In function 'void loop()':
SerialGateway.ino:85:3: error: 'gw' was not declared in this scopeI'm new to Arduino and this IDE, so it painful trying to work my way into this code...
-
Hi guys,
I lost some of my inspiration when I couldn't get the RF69 implementation to be stable for more than a few days and TOSA said he could before he disappeared without telling me how :-(. However, Easter is upon us and I thought I would give it another try.
I updated to the latest version of the development branch, and things seem to have changed a bit since I was here last time. Is there anything that needs to be updated on the RF69 side? At the very least it seems to be missing a definition for IS_RF69HW, as well as probably some useful defaults.
-
I also note that there now is an include for a specific radio in the serial Gateway example. This is different from the way it was earlier where the radio type was defined in MyConfig. Wasn't this a better solution?
Anyway, is it sufficient simply to change the included radio and then expect the serial Gateway code to work correctly on a moteino?
-
I also note that there now is an include for a specific radio in the serial Gateway example. This is different from the way it was earlier where the radio type was defined in MyConfig. Wasn't this a better solution?
Anyway, is it sufficient simply to change the included radio and then expect the serial Gateway code to work correctly on a moteino?
The defines in MyConfig started to become a big mess. Especially if we would want to have a Moteino variant of the gateways downloadable using codebender.
Ok, just updated gateway classes to include the available options like this:
// NRFRF24L01 radio driver (set low transmit power by default) MyTransportNRF24 transport(RF24_CE_PIN, RF24_CS_PIN, RF24_PA_LEVEL_GW); //MyTransportRF69 transport; // Message signing driver (signer needed if MY_SIGNING_FEATURE is turned on in MyConfig.h) //MySigningNone signer; //MySigningAtsha204Soft signer; //MySigningAtsha204 signer; // Hardware profile MyHwATMega328 hw; // Construct MySensors library (signer needed if MY_SIGNING_FEATURE is turned on in MyConfig.h) MySensor gw(transport, hw /*, signer*/);So you should only have to enable the one you want to use. Do the same in the sensor/actuator sketch (haven't updated all of them yet).