Do some debug on the node and on gateway and check if data is actually sent from the node and received by gateway. Also use wait instead of sleep if you are using it as a repeater and relay actuator.
Here is the sketch if anyone can help out.
#include <SPI.h>
#include <MySensor.h>
#define CHILD_ID_LIGHT 0
#define LIGHT_SENSOR_ANALOG_PIN 1
#define NODE_ID 9
int BATTERY_SENSE_PIN = A2; // select the input pin for the battery sense point
unsigned long SLEEP_TIME = 30000; // Sleep time between reads (in milliseconds)
MySensor gw;
MyMessage msg(CHILD_ID_LIGHT, V_LIGHT_LEVEL);
int lastLightLevel;
int oldBatteryPcnt = 0;
void setup()
{
// use the 1.1 V internal reference
//analogReference(INTERNAL);
gw.begin(NULL, NODE_ID, false);
// Send the sketch version information to the gateway and Controller
gw.sendSketchInfo("Soil_Moist_Sensor_grb", "1.15");
// Register all sensors to gateway (they will be created as child devices)
gw.present(CHILD_ID_LIGHT, S_LIGHT_LEVEL);
}
void loop()
{
int lightLevel = (1023-analogRead(LIGHT_SENSOR_ANALOG_PIN))/10.23;
Serial.println(lightLevel);
if (lightLevel != lastLightLevel) {
gw.send(msg.set(lightLevel));
lastLightLevel = lightLevel;
}
// get the battery Voltage
int sensorValue = analogRead(BATTERY_SENSE_PIN);
Serial.println(sensorValue);
// 1M, 470K divider across battery and using internal ADC ref of 1.1V
// Sense point is bypassed with 0.1 uF cap to reduce noise at that point
// ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts
// 3.44/1023 = Volts per bit = 0.003363075 - changed without ref volt
float batteryV = sensorValue * 0.00305734;
int batteryPcnt = sensorValue / 10;
Serial.print("Battery Voltage: ");
Serial.print(batteryV);
Serial.println(" V");
Serial.print("Battery percent: ");
Serial.print(batteryPcnt);
Serial.println(" %");
if (oldBatteryPcnt != batteryPcnt) {
// Power up radio after sleep
gw.sendBatteryLevel(batteryPcnt);
oldBatteryPcnt = batteryPcnt;
}
gw.sleep(SLEEP_TIME);
}
@berkseo Good question. The code seemed good at the time I wrote it, but I can't say that it was extensively tested. I may circle back to it at a future date, and if so, I'll take a closer look. Even with more than 500 downloads of the code, no one has posted any feedback on how well (or not) it has run. Also, I not sure how compatible the posted code is with newer releases of the mysensors library.
Hi @raulp, welcome to the MySensors community.
I don't understand what you are trying to do, but the MySensors getting started guide is available from the rocket icon at the top of the forum (https://www.mysensors.org/about )
Developer contribution guidelines are available at https://www.mysensors.org/download/contributing
Library documentation is available at https://www.mysensors.org/apidocs/index.html
@nca78 I don't use ATAES132A. I put it in just in case I wanted to invest some more time using it.
I now just use SimpleEncryption, it's secure enough for my purpose atm.
(since the area I live in uses KAKU a lot, an insecure 433MHz lightswitch, I don't think anyone would be bothered to hack my temperature sensors. I found 163 433Mhz devices when I left domoticz logging for a couple of days.)