RFM69 problems
-
I managed to get my RFM69 radios working on both sensors and gateway before but the I started fiddeling around and now nothing works.
Has there been some change to the sketches, as I recall there where a "transport" line before. Now there is none.
I added the line "MyTransportRFM69 transport (RFM69_FREQUENCY, RFM69_NETWORKID, RF69_SPI_CS, RF69_IRQ_PIN, true, RF69_IRQ_NUM) ;"
to my gateway and added #include "MyTransportRFM69.h" and MySensor(MyTransport &radio =*new MyTransportRFM69(), MyHw &hw=*new MyHwDriver() in mysensors.h
But where and how in the sensor sketches do I specify if there is a RFM69W or RFM69HW connected?
-
Hello,
Don't have the answer but happy to see the question as I need it !
It seems that it's include in development branch ...David.
-
@Cliff-Karlsson said:
MyTransportRFM69 transport (RFM69_FREQUENCY, RFM69_NETWORKID, RF69_SPI_CS, RF69_IRQ_PIN, true, RF69_IRQ_NUM) ;
MyTransportRFM69 transport (RFM69_FREQUENCY, RFM69_NETWORKID, RF69_SPI_CS, RF69_IRQ_PIN, true, RF69_IRQ_NUM, true) ;
https://github.com/mysensors/Arduino/blob/master/libraries/MySensors/MyTransportRFM69.cpp#L23
-
Thanks but I can't say that I understand, do I have to add a second "true" at the end?
-
And should I just add "MyTransportRFM69 transport (RFM69_FREQUENCY, RFM69_NETWORKID, RF69_SPI_CS, RF69_IRQ_PIN, true, RF69_IRQ_NUM, true) ;"
To the beginning of the sensor sketches to?
-
Sorry, missed the "true" argument you already had in your argument list.
-
Ok, but do I still need to add some RFM info to the sensor sketches?
I really think that there should be some tutorial of everything that needs to be modified in the gateway and sensor sketches to be able to use the RFM69 radio
-
@Cliff-Karlsson said:
Ok, but do I still need to add some RFM info to the sensor sketches?
Yes, default is that NRF radio gets initialized.
-
@Cliff-Karlsson
Here is what I did to get my RFM69HW's working (the high power variant):from MyConfig.h:
/********************************** * RFM69 Driver Defaults ***********************************/ // Default network id. Use the same for all nodes that will talk to each other #define RFM69_NETWORKID 100 // Default frequency to use. This must match the hardware version of the RFM69 radio (uncomment one): #define RFM69_FREQUENCY RF69_915MHZ // Enable this for encryption of packets #define RFM69_ENABLE_ENCRYPTION #define RFM69_ENCRYPTKEY "sampleEncryptKey" //exactly the same 16 characters/bytes on all nodes! #endif
I had trouble with the #isRFM69HW define not working in the sketch for whatever reason, so I just went into MyTransportRFM69.h and modified the default of "false" to "true" like so:
class MyTransportRFM69 : public MyTransport { public: MyTransportRFM69(uint8_t freqBand=RFM69_FREQUENCY, uint8_t networkId=RFM69_NETWORKID, uint8_t slaveSelectPin=RF69_SPI_CS, uint8_t interruptPin=RF69_IRQ_PIN, bool isRFM69HW=true, uint8_t interruptNum=RF69_IRQ_NUM);
Then in my sketch, something like this:
// Enable and select radio type attached #define MY_RADIO_RFM69 #include <SPI.h> #include <MySensor.h> MySensor gw; void setup() { gw.begin(incomingMessage, AUTO, true); // Send the sketch version information to the gateway and Controller gw.sendSketchInfo(SN, SV); // Register all sensors to gw (they will be created as child devices) gw.present(BUTTON1, S_LIGHT); // Top Button } void loop() { gw.process(); // tickle the MySensors framework check_buttons(); // update logical state from button changes update_mote(); // Apply any gathered state changes to the actual hardware } ... and bunch of other code not shown...
There's likely a better way, but my brute force worked. I'd recommend that you start testing without the code signing turned on. It's easier to debug things not talking to the gateway with less features enabled as a start. Then add back in the message signing and you should be up and running. Once you've got your MyConfig.h all happy then it's really easy to use and replicate in your node sketches.
-
Thank, will try asap. Just a question, in your gateway did you only add "MyTransportRFM69 transport;" or did you also add the stuff from your sketch example like: #define MY_RADIO_RFM69 ?
-
@Cliff-Karlsson The only things I really had to edit, was in MyConfig.h for the network ID, Frequency and encryption settings. In the sketch you just add the first line "#define MY_RADIO_RFM69" and the rest gets sorted out by the libraries. If you don't add the #define MY_RADIO_RFM69 it will default as @hek indicated to the NRF radio.
-
Note that @BenCranston is using the development branch.
-
@Cliff-Karlsson I just posted to Git my Serial gateway and a node. The code is still in flux, but it might help your endeavors. Find it here: https://github.com/TheCranston/MY-Sensors.git Caveat emptor... (first time posting anything via Github, so please excuse any conventions that I might have ignored - I'm learning)
@hek, good point. I just checked my Version.h and it says "1.5" which i thought was the latest master... humm... gotta check it over closely now.
-
I will do a couple of adjustments of the RF69 stuff tonight here on dev-branch.
Add a mis-wired check like we do for the RF24 driver. I also currently you have to do a
#define MY_IS_RFM69HW true
to activate the HW-version... this will be changed to
#define MY_IS_RFM69HW
-
Ok, one more stupid question. If I want to try the developer branch do I just install the regular 1.5 zip amd then just overwrite them with the files from the developer branch on git?
-
Ok, I think I have figured it out. But I am trying this sketch:
/** * The MySensors Arduino library handles the wireless radio link and protocol * between your home built sensors/actuators and HA controller of choice. * The sensors forms a self healing radio network with optional repeaters. Each * repeater and gateway builds a routing tables in EEPROM which keeps track of the * network topology allowing messages to be routed to nodes. * * Created by Henrik Ekblad <henrik.ekblad@mysensors.org> * Copyright (C) 2013-2015 Sensnology AB * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors * * Documentation: http://www.mysensors.org * Support Forum: http://forum.mysensors.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * ******************************* * * DESCRIPTION * The ArduinoGateway prints data received from sensors on the serial link. * The gateway accepts input on seral which will be sent out on radio network. * * The GW code is designed for Arduino Nano 328p / 16MHz * * Wire connections (OPTIONAL): * - Inclusion button should be connected between digital pin 3 and GND * - RX/TX/ERR leds need to be connected between +5V (anode) and digital pin 6/5/4 with resistor 270-330R in a series * * LEDs (OPTIONAL): * - To use the feature, uncomment MY_LEDS_BLINKING_FEATURE in MyConfig.h * - RX (green) - blink fast on radio message recieved. In inclusion mode will blink fast only on presentation recieved * - TX (yellow) - blink fast on radio message transmitted. In inclusion mode will blink slowly * - ERR (red) - fast blink on error during transmission error or recieve crc error * */ // Enable debug prints to serial monitor #define MY_DEBUG // Enable and select radio type attached //#define MY_RADIO_NRF24 #define MY_RADIO_RFM69 #define MY_IS_RFM69HW // Set LOW transmit power level as default, if you have an amplified NRF-module and // power your radio separately with a good regulator you can turn up PA level. #define MY_RF24_PA_LEVEL RF24_PA_LOW // Enable serial gateway #define MY_GATEWAY_SERIAL // Flash leds on rx/tx/err #define MY_LEDS_BLINKING_FEATURE // Set blinking period #define MY_DEFAULT_LED_BLINK_PERIOD 300 // Inverses the behavior of leds //#define MY_WITH_LEDS_BLINKING_INVERSE // Enable inclusion mode #define MY_INCLUSION_MODE_FEATURE // Enable Inclusion mode button on gateway #define MY_INCLUSION_BUTTON_FEATURE // Inverses behavior of inclusion button (if using external pullup) //#define MY_INCLUSION_BUTTON_EXTERNAL_PULLUP // Set inclusion mode duration (in seconds) #define MY_INCLUSION_MODE_DURATION 60 // Digital pin used for inclusion mode button #define MY_INCLUSION_MODE_BUTTON_PIN 3 #define MY_DEFAULT_ERR_LED_PIN 4 // Error led pin #define MY_DEFAULT_RX_LED_PIN 6 // Receive led pin #define MY_DEFAULT_TX_LED_PIN 5 // the PCB, on board LED #include <SPI.h> #include <MySensor.h> void setup() { // Setup locally attached sensors } void presentation() { // Present locally attached sensors } void loop() { // Send locally attached sensor data here }
But I am getting this error when trying to complie:
Arduino: 1.6.6 (Windows 7), Board: "Arduino Nano, ATmega328" Warning: platform.txt from core 'MySensors AVR based boards' contains deprecated recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{build.path}/{archive_file}" "{object_file}", automatically converted to recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}". Consider upgrading this core. Warning: platform.txt from core 'Mysensors SAMD (32-bits ARM Cortex-M0+) Boards' contains deprecated recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{build.path}/{archive_file}" "{object_file}", automatically converted to recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}". Consider upgrading this core. Library can't use both 'src' and 'utility' folders. Error compiling. This report would have more information with "Show verbose output during compilation" enabled in File > Preferences.
-
Do like it says, turn on verbose output.
(you have to replace the old MySensors-folder under libraries with the new)
-
Ok, I turned on the verbose output and this is what I got:
Arduino: 1.6.6 (Windows 7), Board: "Arduino Nano, ATmega328" C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware "C:\Program Files (x86)\Arduino\hardware" -tools "C:\Program Files (x86)\Arduino\tools-builder" -tools "C:\Program Files (x86)\Arduino\hardware\tools\avr" -built-in-libraries "C:\Program Files (x86)\Arduino\libraries" -libraries "C:\Users\Cliff\Documents\Arduino\libraries" -fqbn=arduino:avr:nano:cpu=atmega328 -ide-version=10606 -build-path "C:\Users\Cliff\AppData\Local\Temp\build8a702dc9de8b52c506f71d8c8aabed09.tmp" -warnings=none -prefs=build.warn_data_percentage=75 -verbose "C:\Users\Cliff\AppData\Local\Temp\arduino_8a702dc9de8b52c506f71d8c8aabed09\GatewaySerial.ino" Warning: platform.txt from core 'MySensors AVR based boards' contains deprecated recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{build.path}/{archive_file}" "{object_file}", automatically converted to recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}". Consider upgrading this core. Warning: platform.txt from core 'Mysensors SAMD (32-bits ARM Cortex-M0+) Boards' contains deprecated recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{build.path}/{archive_file}" "{object_file}", automatically converted to recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}". Consider upgrading this core. Library can't use both 'src' and 'utility' folders. Error compiling.
I have removed arduino IDE and all mysensor libraries, I reinstalled the arduino IDE added/replaced the librarys with the Arduino-master, then replaced again with Arduino-development.
-
You must have done something wrong setting it up (I'm also running 1.6.6).
You should get the following error using the sketch you posted above:
Users/hek/Documents/ArduinoGithub/libraries/MySensors/MySensor.h:195:3: error: #error No forward link or gateway feature activated. This means nowhere to send messages! Pretty pointless. #error No forward link or gateway feature activated. This means nowhere to send messages! Pretty pointless. ^
-
Ok, after trying again I extracted Arduino-development to a separate folder in my sketchbook location witout replacing anything. I then got an error saying it could not find Mysensors.h so I copied it to the Gatewayserial folder and now it complies but gives me the error you specified hek. So how do I solve this? is not the gatewayserial sketch ready to complie as is?
-
Oh, sorry I just copied part of the sketch above when I got the compile error.
When compiling the whole file it works fine here.
-
Ok so I should use the serialgateway sketch from the arduino master? I did not find any other serialgateway sketch in arduino development than the one I posten.
-
@Cliff-Karlsson said:
Ok so I should use the serialgateway sketch from the arduino master?
No, you're using the right one.
I extracted Arduino-development to a separate folder in my sketchbook location witout replacing anything. I then got an error saying it could not find Mysensors.h so I copied it to the Gatewayserial folder
You must replace the WHOLE MySensors library folder. Not just copying the MySensors.h.
-
Ok, tried again and I think I got it right this time as I got three tabs in the arduino IDE when opening the serialgateway-sketch, before I only got one tab.
But now I have the same error as you shown hek, what does this mean:
#if !defined(MY_GATEWAY_FEATURE) && !defined(MY_RADIO_FEATURE) #error No forward link or gateway feature activated. This means nowhere to send messages! Pretty pointless. #endif
I already have this in the gateway sketch:
#define MY_RADIO_RFM69
#define MY_GATEWAY_SERIAL
-
Ahh, finally. I used the sketchbook location for everything like it says in the info for 1.5. When I copied all the development libraries into the Arduino libraries folder it worked.
-
I tried changing computers and it seems to work better now, But I just realized something where or how do I set the frequency of the rfm radio?
-
Put one of these in your sketch
#define MY_RFM69_FREQUENCY RF69_433MHZ #define MY_RFM69_FREQUENCY RF69_868MHZ #define MY_RFM69_FREQUENCY RF69_915MHZ
I should probably try to find some time starting to document the 1.6 features. But most of them is already easy to find by reading MyConfig.h.
-
@hek said:
#define MY_RFM69_FREQUENCY RF69_868MHZ
ok, if I dont specify this in my sketch will it default to either frequency?
-
It'll default to RF69_868MHZ
-
Ok, all my radios is 868Mhz so the problem is something else. I always get similar errors from the serial monitor after complying sensor-sketches.
Starting sensor (1.6.0-beta) Radio init successful. send: 7-7-0-0 s=255,c=0,t=17,pt=0,l=10,sg=0,st=fail:1.6.0-beta send: 7-7-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,st=fail:0 send: 7-7-0-0 s=255,c=3,t=11,pt=0,l=5,sg=0,st=fail:Relay send: 7-7-0-0 s=255,c=3,t=12,pt=0,l=3,sg=0,st=fail:1.0 send: 7-7-0-0 s=1,c=0,t=3,pt=0,l=0,sg=0,st=fail: Init complete, id=7, parent=0, distance=1
What does this mean? It says radio init successful, but can it still be radio problems?
-
Well, do you receive any messages on the gateway side?
-
Well I changed the CHILD_ID_LIGHT to 7 in the lightlux sensor sketch, I don't know if that was right. But nothing shows up in domoticz.
I get this from serial monitor:
Starting sensor (1.6.0-beta) Radio init successful. send: 7-7-0-0 s=255,c=0,t=17,pt=0,l=10,sg=0,st=fail:1.6.0-beta send: 7-7-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,st=fail:0 send: 7-7-0-0 s=255,c=3,t=11,pt=0,l=16,sg=0,st=fail:Light Lux Sensor send: 7-7-0-0 s=255,c=3,t=12,pt=0,l=3,sg=0,st=fail:1.0 send: 7-7-0-0 s=7,c=0,t=16,pt=0,l=0,sg=0,st=fail: Init complete, id=7, parent=0, distance=1 54612 send: 7-7-0-0 s=7,c=1,t=23,pt=3,l=2,sg=0,st=fail:54612 find parent send: 7-7-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,st=bc:
-
I dont't know how many times I have tried to fix my rfm69 issues but no success.
I have got a new raspberry pi 2 controller, formatted/reinstalled my pc, bought a powered usb hub, changed my serialgateway and resoldering sensor-nodes and gateways several times.
The gateway seems too start up fine, but when I power any sensor I get this in domoticz log:
015-11-16 21:07:18.763 Domoticz V2.3603 (c)2012-2015 GizMoCuz 2015-11-16 21:07:18.763 Build Hash: 95def9c, Date: 2015-11-16 18:45:30 2015-11-16 21:07:18.764 System: Raspberry Pi 2015-11-16 21:07:18.765 Startup Path: /home/pi/domoticz/ 2015-11-16 21:07:19.058 Sunrise: 07:55:00 SunSet:15:15:00 2015-11-16 21:07:19.058 EventSystem: reset all events... 2015-11-16 21:07:19.104 Active notification subsystems: (0/10) 2015-11-16 21:07:19.244 Webserver started on port: 8181 2015-11-16 21:07:19.303 Webserver started on port: 443 2015-11-16 21:07:19.321 Started shared server on: 0.0.0.0 2015-11-16 21:07:21.323 Hardware Monitor: Started 2015-11-16 21:07:21.325 EventSystem: reset all events... 2015-11-16 21:07:21.326 EventSystem: reset all device statuses... 2015-11-16 21:07:21.328 EventSystem: Started 2015-11-16 21:07:22.325 MySensors: Using serial port: /dev/ttyUSB0 2015-11-16 21:07:23.797 MySensors: Gateway Ready... 2015-11-16 21:07:23.872 MySensors: Gateway Version: 1.6.0-beta 2015-11-16 21:07:24.323 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:07:41.272 Incoming connection from: 192.168.0.24 2015-11-16 21:07:45.202 1-Wire support available (By Kernel)... 2015-11-16 21:08:04.752 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:08:34.800 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:09:04.837 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:09:34.886 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:10:04.923 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:10:34.971 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:11:05.008 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:11:35.056 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:12:05.095 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:12:35.146 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:13:05.198 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:13:35.249 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:14:05.301 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:14:35.352 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:15:05.404 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:15:35.455 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:16:05.507 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:16:35.545 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:17:05.598 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:17:35.644 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:18:05.694 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:18:35.732 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:19:05.784 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:19:35.822 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:20:05.871 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:20:35.909 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:21:05.958 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:21:35.996 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:22:06.047 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:22:36.086 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:23:06.138 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:23:36.177 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:24:06.229 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:24:23.700 Error: Serial Port closed!... Error: End of file 2015-11-16 21:24:23.818 MySensors: retrying in 30 seconds... 2015-11-16 21:24:36.269 Hardware Monitor: Fetching data (System sensors) 2015-11-16 21:24:52.821 MySensors: Using serial port: /dev/ttyUSB0 2015-11-16 21:24:52.822 Error: MySensors: Error opening serial port! 2015-11-16 21:24:53.822 MySensors: retrying in 30 seconds... 2015-11-16 21:25:06.318 Hardware Monitor: Fetching data (System sensors)
And when I look at the serial gateway options the usb port (/dev/ttyUSB0) is blank. I have to remove the usb cable and insert it again or reboot to get the usb port back.
-
why not connect the NRF24 directly to your Raspi2 and run PiSerialGateway on Raspi itself ?