Can't get RFM69 working
-
Hello,
The code as promise.
For the gateway I don't change a lot of thing from the example provided in the lib:/** * 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. * */ /**************************************************************************************/ /* Serial gateway (RFM69 with encryption, soft signing and LEDs). */ /* */ /* Version : 0.1.1 */ /* Date : 29/11/2015 */ /* Modified by : David Carlier */ /**************************************************************************************/ #define NO_PORTB_PINCHANGES #include <MyTransportRFM69.h> #include <MyHwATMega328.h> #include <MySigningAtsha204Soft.h> #include <SPI.h> #include <MyParserSerial.h> #include <MySensor.h> #include <stdarg.h> #include <PinChangeInt.h> #include "GatewayUtil.h" #define INCLUSION_MODE_TIME 1 // Number of minutes inclusion mode is enabled #define INCLUSION_MODE_PIN 3 // Digital pin used for inclusion mode button #define RADIO_ERROR_LED_PIN 4 // Error led pin #define RADIO_RX_LED_PIN 6 // Receive led pin #define RADIO_TX_LED_PIN 5 // the PCB, on board LED //Construct MySensors library MySigningAtsha204Soft signer; MyHwATMega328 hw; MyTransportRFM69 transport; MySensor gw(transport, hw, signer, RADIO_RX_LED_PIN, RADIO_TX_LED_PIN, RADIO_ERROR_LED_PIN); //Variables char inputString[MAX_RECEIVE_LENGTH] = ""; int inputPos = 0; boolean commandComplete = false; void parseAndSend(char *commandBuffer); void output(const char *fmt, ... ) { va_list args; va_start (args, fmt ); vsnprintf_P(serialBuffer, MAX_SEND_LENGTH, fmt, args); va_end (args); Serial.print(serialBuffer); } /**************************************************************************************/ /* Initialization */ /**************************************************************************************/ void setup() { //Start MySensors gw.begin(incomingMessage, 0, true, 0); setupGateway(INCLUSION_MODE_PIN, INCLUSION_MODE_TIME, output); //Add interrupt for inclusion button to pin PCintPort::attachInterrupt(pinInclusion, startInclusionInterrupt, RISING); //Send startup log message on serial serial(PSTR("0;0;%d;0;%d;Gateway startup complete.\n"), C_INTERNAL, I_GATEWAY_READY); } /**************************************************************************************/ /* Main loop */ /**************************************************************************************/ void loop() { gw.process(); checkButtonTriggeredInclusion(); checkInclusionFinished(); if (commandComplete) { //A command wass issued from serial interface //We will now try to send it to the actuator parseAndSend(gw, inputString); commandComplete = false; inputPos = 0; } } /* SerialEvent occurs whenever a new data comes in the hardware serial RX. This routine is run between each time loop() runs, so using delay inside loop can delay response. Multiple bytes of data may be available. */ void serialEvent() { while (Serial.available()) { // get the new byte: char inChar = (char)Serial.read(); // if the incoming character is a newline, set a flag // so the main loop can do something about it: if (inputPos<MAX_RECEIVE_LENGTH-1 && !commandComplete) { if (inChar == '\n') { inputString[inputPos] = 0; commandComplete = true; } else { // add it to the inputString: inputString[inputPos] = inChar; inputPos++; } } else { // Incoming message too long. Throw away inputPos = 0; } } }For the sensor, there is more difference from the humidity example:
/** * 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. * */ /**************************************************************************************/ /* Temperature, humidity and luminosity measurements. */ /* */ /* Version : 1.1.5 */ /* Date : 04/01/2016 */ /* Modified by : David Carlier */ /**************************************************************************************/ /* --------------- */ /* RST | | A5 */ /* RX | | A4 */ /* TX | ARDUINO | A3 */ /* RFM69 (DIO0) --------- D2 | UNO | A2 */ /* DHT22 --------- D3 | | A1 */ /* Power --------- D4 | ATMEGA 328p | A0 --------- Light dep. resistor */ /* +3v --------- VCC | | GND --------- GND */ /* GND --------- GND | 8MHz int. | REF */ /* OSC | | VCC --------- +3v */ /* OSC | | D13 --------- RFM69 (SCK) */ /* D5 | | D12 --------- RFM69 (MISO) */ /* D6 | | D11 --------- RFM69 (MOSI) */ /* D7 | | D10 --------- RFM69 (NSS) */ /* D8 | | D9 */ /* --------------- */ /* */ /* Power = Vcc for LDR and DHT22 et SWITCH. */ /* +3v = 2*AA */ /* */ /**************************************************************************************/ #include <SPI.h> #include <MySensor.h> #include <dht.h> #include <MyTransportRFM69.h> #include <MySigningAtsha204Soft.h> #define CHILD_ID_HUM 0 #define CHILD_ID_TEMP 1 #define CHILD_ID_LIGHT 2 #define CHILD_ID_VOLTAGE 3 #define LIGHT_SENSOR_ANALOG_PIN 0 #define HUMIDITY_SENSOR_DIGITAL_PIN 3 #define POWER_PIN 4 unsigned long SLEEP_TIME = 275000; // Sleep time between reads (in milliseconds) //Construct MySensors library MySigningAtsha204Soft signer; MyHwATMega328 hw; MyTransportRFM69 transport; MySensor gw(transport, hw, signer); dht DHT; MyMessage msgHum(CHILD_ID_HUM, V_HUM); MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP); MyMessage msgLum(CHILD_ID_LIGHT, V_LEVEL); MyMessage msgVolt(CHILD_ID_VOLTAGE, V_VOLTAGE); /**************************************************************************************/ /* Initialization */ /**************************************************************************************/ void setup() { //Get time (for setup duration) #ifdef DEBUG unsigned long startTime = millis(); #endif //Start MySensors gw.begin(); //Send the Sketch Version Information to the Gateway gw.sendSketchInfo("GHAS sensor", "1.1.5"); //Register all sensors to gw (they will be created as child devices) gw.present(CHILD_ID_HUM, S_HUM); gw.present(CHILD_ID_TEMP, S_TEMP); gw.present(CHILD_ID_LIGHT, S_LIGHT_LEVEL); gw.present(CHILD_ID_VOLTAGE, S_MULTIMETER); //Delay for DHT22 delay(1500); //Print setup debug #ifdef DEBUG int duration = millis() - startTime; Serial.print("[Setup duration: "); Serial.print(duration, DEC); Serial.println(" ms]"); #endif } /**************************************************************************************/ /* Main loop */ /**************************************************************************************/ void loop() { //Get time (for a complete loop) #ifdef DEBUG unsigned long startTime = millis(); #endif //Power on powerOnPeripherals(); delay(2000); //Get DHT22 data int dht22Result = DHT.read22(HUMIDITY_SENSOR_DIGITAL_PIN); switch (dht22Result) { case DHTLIB_OK: //Serial.println("OK,\t"); break; case DHTLIB_ERROR_CHECKSUM: #ifdef DEBUG Serial.println("Checksum error,\t"); #endif break; case DHTLIB_ERROR_TIMEOUT: #ifdef DEBUG Serial.println("Time out error,\t"); #endif break; case DHTLIB_ERROR_CONNECT: #ifdef DEBUG Serial.println("Connect error,\t"); #endif break; case DHTLIB_ERROR_ACK_L: #ifdef DEBUG Serial.println("Ack Low error,\t"); #endif break; case DHTLIB_ERROR_ACK_H: #ifdef DEBUG Serial.println("Ack High error,\t"); #endif break; default: #ifdef DEBUG Serial.println("Unknown error,\t"); #endif break; } //Get temperature and humidity float temperature = 0; float humidity = 0; if (dht22Result == DHTLIB_OK) { temperature = DHT.temperature; humidity = DHT.humidity; } //Get power before luminosity to use real voltage float realVoltage = getVoltage() / 100.0; int batteryPcnt = realVoltage * 100 / 3.0; if (batteryPcnt > 100) {batteryPcnt = 100;} int lux = computeIlluminance(realVoltage); //Power off powerOffPeripherals(); //Send data to gateway gw.send(msgHum.set(humidity, 1)); gw.send(msgTemp.set(temperature, 1)); gw.send(msgLum.set(lux)); gw.send(msgVolt.set(realVoltage, 2)); gw.sendBatteryLevel(batteryPcnt); //Print debug #ifdef DEBUG Serial.print(temperature, 1); Serial.print(" degC"); Serial.print(" "); Serial.print(humidity, 1); Serial.print(" %"); Serial.print(" "); Serial.print(lux); Serial.print(" lx"); Serial.print(" "); Serial.print(realVoltage); Serial.print(" v"); int duration = millis() - startTime; Serial.print(" "); Serial.print("["); Serial.print(duration, DEC); Serial.println(" ms]"); Serial.flush(); #endif //Sleep gw.sleep(SLEEP_TIME); } /**************************************************************************************/ /* Allows to compute illuminance (in LUX) from LIGHT_SENSOR_ANALOG_PIN. */ /**************************************************************************************/ int computeIlluminance(float realVoltage) { //Get luminosity int luminosity = analogRead(LIGHT_SENSOR_ANALOG_PIN); //Calculating the voltage in the input of the ADC double voltage = realVoltage * ((double)luminosity / 1024.0); //Calculating the resistance of the photoresistor in the voltage divider double resistance = (10.0 * realVoltage) / voltage - 10.0; //Calculating the intensity of light in lux and return it int illuminance = 255.84 * pow(resistance, -10/9); return illuminance; } /**************************************************************************************/ /* Allows to get the real Vcc (return value * 100). */ /**************************************************************************************/ int getVoltage() { const long InternalReferenceVoltage = 1056L; ADMUX = (0<<REFS1) | (1<<REFS0) | (0<<ADLAR) | (1<<MUX3) | (1<<MUX2) | (1<<MUX1) | (0<<MUX0); delay(50); // Let mux settle a little to get a more stable A/D conversion //Start a conversion ADCSRA |= _BV( ADSC ); //Wait for it to complete while (((ADCSRA & (1<<ADSC)) != 0)); //Scale the value int result = (((InternalReferenceVoltage * 1023L) / ADC) + 5L) / 10L; return result; } /**************************************************************************************/ /* Allows to power ON peripherals. */ /**************************************************************************************/ void powerOnPeripherals() { //Power-up pinMode (POWER_PIN, OUTPUT); digitalWrite (POWER_PIN, HIGH); delay(1); } /**************************************************************************************/ /* Allows to power OFF peripherals. */ /**************************************************************************************/ void powerOffPeripherals() { //Power off digitalWrite (HUMIDITY_SENSOR_DIGITAL_PIN, LOW); digitalWrite (POWER_PIN, LOW); pinMode (HUMIDITY_SENSOR_DIGITAL_PIN, INPUT); pinMode (POWER_PIN, INPUT); }David
-
Hello,
The code as promise.
For the gateway I don't change a lot of thing from the example provided in the lib:/** * 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. * */ /**************************************************************************************/ /* Serial gateway (RFM69 with encryption, soft signing and LEDs). */ /* */ /* Version : 0.1.1 */ /* Date : 29/11/2015 */ /* Modified by : David Carlier */ /**************************************************************************************/ #define NO_PORTB_PINCHANGES #include <MyTransportRFM69.h> #include <MyHwATMega328.h> #include <MySigningAtsha204Soft.h> #include <SPI.h> #include <MyParserSerial.h> #include <MySensor.h> #include <stdarg.h> #include <PinChangeInt.h> #include "GatewayUtil.h" #define INCLUSION_MODE_TIME 1 // Number of minutes inclusion mode is enabled #define INCLUSION_MODE_PIN 3 // Digital pin used for inclusion mode button #define RADIO_ERROR_LED_PIN 4 // Error led pin #define RADIO_RX_LED_PIN 6 // Receive led pin #define RADIO_TX_LED_PIN 5 // the PCB, on board LED //Construct MySensors library MySigningAtsha204Soft signer; MyHwATMega328 hw; MyTransportRFM69 transport; MySensor gw(transport, hw, signer, RADIO_RX_LED_PIN, RADIO_TX_LED_PIN, RADIO_ERROR_LED_PIN); //Variables char inputString[MAX_RECEIVE_LENGTH] = ""; int inputPos = 0; boolean commandComplete = false; void parseAndSend(char *commandBuffer); void output(const char *fmt, ... ) { va_list args; va_start (args, fmt ); vsnprintf_P(serialBuffer, MAX_SEND_LENGTH, fmt, args); va_end (args); Serial.print(serialBuffer); } /**************************************************************************************/ /* Initialization */ /**************************************************************************************/ void setup() { //Start MySensors gw.begin(incomingMessage, 0, true, 0); setupGateway(INCLUSION_MODE_PIN, INCLUSION_MODE_TIME, output); //Add interrupt for inclusion button to pin PCintPort::attachInterrupt(pinInclusion, startInclusionInterrupt, RISING); //Send startup log message on serial serial(PSTR("0;0;%d;0;%d;Gateway startup complete.\n"), C_INTERNAL, I_GATEWAY_READY); } /**************************************************************************************/ /* Main loop */ /**************************************************************************************/ void loop() { gw.process(); checkButtonTriggeredInclusion(); checkInclusionFinished(); if (commandComplete) { //A command wass issued from serial interface //We will now try to send it to the actuator parseAndSend(gw, inputString); commandComplete = false; inputPos = 0; } } /* SerialEvent occurs whenever a new data comes in the hardware serial RX. This routine is run between each time loop() runs, so using delay inside loop can delay response. Multiple bytes of data may be available. */ void serialEvent() { while (Serial.available()) { // get the new byte: char inChar = (char)Serial.read(); // if the incoming character is a newline, set a flag // so the main loop can do something about it: if (inputPos<MAX_RECEIVE_LENGTH-1 && !commandComplete) { if (inChar == '\n') { inputString[inputPos] = 0; commandComplete = true; } else { // add it to the inputString: inputString[inputPos] = inChar; inputPos++; } } else { // Incoming message too long. Throw away inputPos = 0; } } }For the sensor, there is more difference from the humidity example:
/** * 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. * */ /**************************************************************************************/ /* Temperature, humidity and luminosity measurements. */ /* */ /* Version : 1.1.5 */ /* Date : 04/01/2016 */ /* Modified by : David Carlier */ /**************************************************************************************/ /* --------------- */ /* RST | | A5 */ /* RX | | A4 */ /* TX | ARDUINO | A3 */ /* RFM69 (DIO0) --------- D2 | UNO | A2 */ /* DHT22 --------- D3 | | A1 */ /* Power --------- D4 | ATMEGA 328p | A0 --------- Light dep. resistor */ /* +3v --------- VCC | | GND --------- GND */ /* GND --------- GND | 8MHz int. | REF */ /* OSC | | VCC --------- +3v */ /* OSC | | D13 --------- RFM69 (SCK) */ /* D5 | | D12 --------- RFM69 (MISO) */ /* D6 | | D11 --------- RFM69 (MOSI) */ /* D7 | | D10 --------- RFM69 (NSS) */ /* D8 | | D9 */ /* --------------- */ /* */ /* Power = Vcc for LDR and DHT22 et SWITCH. */ /* +3v = 2*AA */ /* */ /**************************************************************************************/ #include <SPI.h> #include <MySensor.h> #include <dht.h> #include <MyTransportRFM69.h> #include <MySigningAtsha204Soft.h> #define CHILD_ID_HUM 0 #define CHILD_ID_TEMP 1 #define CHILD_ID_LIGHT 2 #define CHILD_ID_VOLTAGE 3 #define LIGHT_SENSOR_ANALOG_PIN 0 #define HUMIDITY_SENSOR_DIGITAL_PIN 3 #define POWER_PIN 4 unsigned long SLEEP_TIME = 275000; // Sleep time between reads (in milliseconds) //Construct MySensors library MySigningAtsha204Soft signer; MyHwATMega328 hw; MyTransportRFM69 transport; MySensor gw(transport, hw, signer); dht DHT; MyMessage msgHum(CHILD_ID_HUM, V_HUM); MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP); MyMessage msgLum(CHILD_ID_LIGHT, V_LEVEL); MyMessage msgVolt(CHILD_ID_VOLTAGE, V_VOLTAGE); /**************************************************************************************/ /* Initialization */ /**************************************************************************************/ void setup() { //Get time (for setup duration) #ifdef DEBUG unsigned long startTime = millis(); #endif //Start MySensors gw.begin(); //Send the Sketch Version Information to the Gateway gw.sendSketchInfo("GHAS sensor", "1.1.5"); //Register all sensors to gw (they will be created as child devices) gw.present(CHILD_ID_HUM, S_HUM); gw.present(CHILD_ID_TEMP, S_TEMP); gw.present(CHILD_ID_LIGHT, S_LIGHT_LEVEL); gw.present(CHILD_ID_VOLTAGE, S_MULTIMETER); //Delay for DHT22 delay(1500); //Print setup debug #ifdef DEBUG int duration = millis() - startTime; Serial.print("[Setup duration: "); Serial.print(duration, DEC); Serial.println(" ms]"); #endif } /**************************************************************************************/ /* Main loop */ /**************************************************************************************/ void loop() { //Get time (for a complete loop) #ifdef DEBUG unsigned long startTime = millis(); #endif //Power on powerOnPeripherals(); delay(2000); //Get DHT22 data int dht22Result = DHT.read22(HUMIDITY_SENSOR_DIGITAL_PIN); switch (dht22Result) { case DHTLIB_OK: //Serial.println("OK,\t"); break; case DHTLIB_ERROR_CHECKSUM: #ifdef DEBUG Serial.println("Checksum error,\t"); #endif break; case DHTLIB_ERROR_TIMEOUT: #ifdef DEBUG Serial.println("Time out error,\t"); #endif break; case DHTLIB_ERROR_CONNECT: #ifdef DEBUG Serial.println("Connect error,\t"); #endif break; case DHTLIB_ERROR_ACK_L: #ifdef DEBUG Serial.println("Ack Low error,\t"); #endif break; case DHTLIB_ERROR_ACK_H: #ifdef DEBUG Serial.println("Ack High error,\t"); #endif break; default: #ifdef DEBUG Serial.println("Unknown error,\t"); #endif break; } //Get temperature and humidity float temperature = 0; float humidity = 0; if (dht22Result == DHTLIB_OK) { temperature = DHT.temperature; humidity = DHT.humidity; } //Get power before luminosity to use real voltage float realVoltage = getVoltage() / 100.0; int batteryPcnt = realVoltage * 100 / 3.0; if (batteryPcnt > 100) {batteryPcnt = 100;} int lux = computeIlluminance(realVoltage); //Power off powerOffPeripherals(); //Send data to gateway gw.send(msgHum.set(humidity, 1)); gw.send(msgTemp.set(temperature, 1)); gw.send(msgLum.set(lux)); gw.send(msgVolt.set(realVoltage, 2)); gw.sendBatteryLevel(batteryPcnt); //Print debug #ifdef DEBUG Serial.print(temperature, 1); Serial.print(" degC"); Serial.print(" "); Serial.print(humidity, 1); Serial.print(" %"); Serial.print(" "); Serial.print(lux); Serial.print(" lx"); Serial.print(" "); Serial.print(realVoltage); Serial.print(" v"); int duration = millis() - startTime; Serial.print(" "); Serial.print("["); Serial.print(duration, DEC); Serial.println(" ms]"); Serial.flush(); #endif //Sleep gw.sleep(SLEEP_TIME); } /**************************************************************************************/ /* Allows to compute illuminance (in LUX) from LIGHT_SENSOR_ANALOG_PIN. */ /**************************************************************************************/ int computeIlluminance(float realVoltage) { //Get luminosity int luminosity = analogRead(LIGHT_SENSOR_ANALOG_PIN); //Calculating the voltage in the input of the ADC double voltage = realVoltage * ((double)luminosity / 1024.0); //Calculating the resistance of the photoresistor in the voltage divider double resistance = (10.0 * realVoltage) / voltage - 10.0; //Calculating the intensity of light in lux and return it int illuminance = 255.84 * pow(resistance, -10/9); return illuminance; } /**************************************************************************************/ /* Allows to get the real Vcc (return value * 100). */ /**************************************************************************************/ int getVoltage() { const long InternalReferenceVoltage = 1056L; ADMUX = (0<<REFS1) | (1<<REFS0) | (0<<ADLAR) | (1<<MUX3) | (1<<MUX2) | (1<<MUX1) | (0<<MUX0); delay(50); // Let mux settle a little to get a more stable A/D conversion //Start a conversion ADCSRA |= _BV( ADSC ); //Wait for it to complete while (((ADCSRA & (1<<ADSC)) != 0)); //Scale the value int result = (((InternalReferenceVoltage * 1023L) / ADC) + 5L) / 10L; return result; } /**************************************************************************************/ /* Allows to power ON peripherals. */ /**************************************************************************************/ void powerOnPeripherals() { //Power-up pinMode (POWER_PIN, OUTPUT); digitalWrite (POWER_PIN, HIGH); delay(1); } /**************************************************************************************/ /* Allows to power OFF peripherals. */ /**************************************************************************************/ void powerOffPeripherals() { //Power off digitalWrite (HUMIDITY_SENSOR_DIGITAL_PIN, LOW); digitalWrite (POWER_PIN, LOW); pinMode (HUMIDITY_SENSOR_DIGITAL_PIN, INPUT); pinMode (POWER_PIN, INPUT); }David
@carlierd I tried to compile your gateway but i get this error:
Arduino: 1.6.5 (Mac OS X), Board:"Arduino Uno" SerialGateway:52: error: no matching function for call to 'MySensor::MySensor(MyTransportRFM69&, MyHwATMega328&, MySigningAtsha204Soft&, int, int, int)' SerialGateway.ino:52:91: note: candidates are: In file included from SerialGateway.ino:37:0: /Users/Wiebe/Documents/Arduino/libraries/MySensors/MySensor.h:158:2: note: MySensor::MySensor(MyTransport&, MyHw&) MySensor(MyTransport &radio =*new MyTransportNRF24(), MyHw &hw=*new MyHwDriver() ^ /Users/Wiebe/Documents/Arduino/libraries/MySensors/MySensor.h:158:2: note: candidate expects 2 arguments, 6 provided /Users/Wiebe/Documents/Arduino/libraries/MySensors/MySensor.h:149:7: note: MySensor::MySensor(const MySensor&) class MySensor ^ /Users/Wiebe/Documents/Arduino/libraries/MySensors/MySensor.h:149:7: note: candidate expects 1 argument, 6 provided no matching function for call to 'MySensor::MySensor(MyTransportRFM69&, MyHwATMega328&, MySigningAtsha204Soft&, int, int, int)' -
Hello,
I am using stable version of MySensors not the dev branch. What version are you using ?
David
-
-
Did you connect the gateway to a controller ? or to MYSController ? You get the gateway ready message ?
For the sensor, you are using the sketch I upload ?
Debug mode is enable in MyConfig.h ?You should have some debug messages in the console when connecting to the node.
David.
-
The problem is on the uno everything seems to work fine.
for the sensor i attached the RFM to a arduino pro mini 3.3v
double checked the wiring, tried 2 different RFM's, tried 2 arduino pro mini's.
uploaden the gateway to it and i get:
0;0;3;0;9;gateway started, id=0, parent=0, distance=0but when i try to send something with the pro mini i get nothing back, while on the UNO I get:
0;0;3;0;9;send: 0-0-10-10 s=1,c=1,t=2,pt=0,l=1,sg=0,st=fail:1So on the pro mini i get the init message, but no message when i try to send something.
-
Yes i have the HW versions, so i replaced
bool isRFM69HW=falsebybool isRFM69HW=trueadded a capacitor.
refreshed and still no feedback after sending.
I get a serial output from the pro mini on start. but no more serial messages when i try to send a message.
-
Its working now!
Gateway doesn't work on the pro mini, but your sensor sketch is working :D
now the next thing, i get a lot of fails:
send: 10-10-0-0 s=255,c=3,t=11,pt=0,l=11,sg=0,st=fail:GHAS sensor send: 10-10-0-0 s=255,c=3,t=12,pt=0,l=5,sg=0,st=fail:1.1.5 send: 10-10-0-0 s=0,c=0,t=7,pt=0,l=0,sg=0,st=fail: find parent send: 10-10-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,st=bc: send: 10-10-0-0 s=1,c=0,t=6,pt=0,l=0,sg=0,st=fail: send: 10-10-0-0 s=2,c=0,t=16,pt=0,l=0,sg=0,st=fail: send: 10-10-0-0 s=3,c=0,t=30,pt=0,l=0,sg=0,st=fail: [Setup duration: 7385 ms] send: 10-10-0-0 s=0,c=1,t=1,pt=7,l=5,sg=0,st=fail:0.0 send: 10-10-0-0 s=1,c=1,t=0,pt=7,l=5,sg=0,st=fail:0.0 send: 10-10-0-0 s=2,c=1,t=37,pt=2,l=2,sg=0,st=fail:9 find parent send: 10-10-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,st=bc: send: 10-10-0-0 s=3,c=1,t=38,pt=7,l=5,sg=0,st=fail:3.30 send: 10-10-0-0 s=255,c=3,t=0,pt=1,l=1,sg=0,st=fail:100 0.0 degC 0.0 % 9 lx 3.30 v [4851 ms]but the gateway receives everything fine?
22:13:05.403 [pimatic-mysensors] debug: <- Presented Node [ '10', '0', '0', '0', '7', '' ] 22:13:05.451 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-255 s=255,c=3,t=7,pt=0,l=0,sg=0: 22:13:05.497 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-255 s=255,c=3,t=7,pt=0,l=0,sg=0: 22:13:05.538 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-255 s=255,c=3,t=7,pt=0,l=0,sg=0: 22:13:05.980 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;send: 0-0-10-10 s=255,c=3,t=8,pt=1,l=1,sg=0,st=fail:0 22:13:06.115 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;send: 0-0-10-10 s=255,c=3,t=8,pt=1,l=1,sg=0,st=fail:0 22:13:06.246 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;send: 0-0-10-10 s=255,c=3,t=8,pt=1,l=1,sg=0,st=fail:0 22:13:07.594 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=1,c=0,t=6,pt=0,l=0,sg=0: 22:13:07.594 [pimatic-mysensors] debug: <- Presented Node [ '10', '1', '0', '0', '6', '' ] 22:13:07.635 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=1,c=0,t=6,pt=0,l=0,sg=0: 22:13:07.639 [pimatic-mysensors] debug: <- Presented Node [ '10', '1', '0', '0', '6', '' ] 22:13:07.680 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=1,c=0,t=6,pt=0,l=0,sg=0: 22:13:07.680 [pimatic-mysensors] debug: <- Presented Node [ '10', '1', '0', '0', '6', '' ] 22:13:07.729 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=2,c=0,t=16,pt=0,l=0,sg=0: 22:13:07.729 [pimatic-mysensors] debug: <- Presented Node [ '10', '2', '0', '0', '16', '' ] 22:13:07.774 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=2,c=0,t=16,pt=0,l=0,sg=0: 22:13:07.775 [pimatic-mysensors] debug: <- Presented Node [ '10', '2', '0', '0', '16', '' ] 22:13:07.815 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=2,c=0,t=16,pt=0,l=0,sg=0: 22:13:07.816 [pimatic-mysensors] debug: <- Presented Node [ '10', '2', '0', '0', '16', '' ] 22:13:07.864 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=3,c=0,t=30,pt=0,l=0,sg=0: 22:13:07.865 [pimatic-mysensors] debug: <- Presented Node [ '10', '3', '0', '0', '30', '' ] 22:13:07.909 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=3,c=0,t=30,pt=0,l=0,sg=0: 22:13:07.909 [pimatic-mysensors] debug: <- Presented Node [ '10', '3', '0', '0', '30', '' ] 22:13:07.950 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=3,c=0,t=30,pt=0,l=0,sg=0: 22:13:07.954 [pimatic-mysensors] debug: <- Presented Node [ '10', '3', '0', '0', '30', '' ] 22:13:10.060 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=0,c=1,t=1,pt=7,l=5,sg=0:0.0 22:13:10.105 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=0,c=1,t=1,pt=7,l=5,sg=0:0.0 22:13:10.150 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=0,c=1,t=1,pt=7,l=5,sg=0:0.0 22:13:10.244 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=1,c=1,t=0,pt=7,l=5,sg=0:0.0 22:13:10.289 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=1,c=1,t=0,pt=7,l=5,sg=0:0.0 22:13:10.342 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=2,c=1,t=37,pt=2,l=2,sg=0:9 22:13:10.383 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=2,c=1,t=37,pt=2,l=2,sg=0:9 22:13:10.428 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=2,c=1,t=37,pt=2,l=2,sg=0:9 22:13:10.477 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-255 s=255,c=3,t=7,pt=0,l=0,sg=0: 22:13:10.522 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-255 s=255,c=3,t=7,pt=0,l=0,sg=0: 22:13:10.563 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-255 s=255,c=3,t=7,pt=0,l=0,sg=0: 22:13:10.903 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;send: 0-0-10-10 s=255,c=3,t=8,pt=1,l=1,sg=0,st=fail:0 22:13:11.038 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;send: 0-0-10-10 s=255,c=3,t=8,pt=1,l=1,sg=0,st=fail:0 22:13:11.174 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;send: 0-0-10-10 s=255,c=3,t=8,pt=1,l=1,sg=0,st=fail:0 22:13:12.583 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=3,c=1,t=38,pt=7,l=5,sg=0:3.30 22:13:12.628 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=3,c=1,t=38,pt=7,l=5,sg=0:3.30 22:13:12.673 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=3,c=1,t=38,pt=7,l=5,sg=0:3.30 22:13:12.722 [pimatic-mysensors] debug: <- I_LOG_MESSAGE 0;0;3;0;9;read: 10-10-0 s=255,c=3,t=0,pt=1,l=1,sg=0:100 -
It's perhaps due to the signing feature ...
May be you should disable it for the moment.
Disable the feature in MyConfig.h and replace the gateway constructor by:
MySensor gw(transport, hw /*, signer*/, RADIO_RX_LED_PIN, RADIO_TX_LED_PIN, RADIO_ERROR_LED_PIN); -
I'm trying to create my gateway with a arduino nano. Attached everything and on the serial output I get:
0;0;3;0;9;gateway started, id=0, parent=0, distance=0 0;0;3;0;14;Gateway startup complete.But nothing happens when i try to send something.
When I try to send something with a sensor it gets fail:
send: 1-1-0-0 s=255,c=0,t=17,pt=0,l=5,sg=0,st=fail:1.5.1 send: 1-1-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,st=fail:0 sensor started, id=1, parent=0, distance=0 send: 1-1-0-0 s=1,c=1,t=16,pt=2,l=2,sg=0,st=fail:1On a arduino uno it works fine. But the gateway won't work on a pro mini or a nano?