Newer
Older
timeRequest / timeRequest.ino
/**
 * @file timeRequest.ino
 * @author Pascal Gollor 
 * @date 2017-12-03
 * 
 * use libraries:
 * - MySensors (https://github.com/mysensors/MySensors)
 * - Time (https://github.com/PaulStoffregen/Time)
 */


// ----- definitions -----
#define NANOIO

#define MY_RADIO_NRF24
#define MY_NODE_ID 23
#ifdef NANOIO
  #define MY_RF24_CE_PIN 9
  #define MY_RF24_CS_PIN 10
#endif
#define MY_RF24_CHANNEL 83
#define MY_BAUD_RATE 57600
#define MY_DEBUG

#define SKETCH_NAME "timeRequest"
#define SKETCH_VERSION "20171203_01"


// ----- includes -----
#include <SPI.h>
#include <MySensors.h>
#include <Time.h>



// ----- functions -----

void presentation()  
{
  sendSketchInfo(SKETCH_NAME, SKETCH_VERSION);
} // presentation


void printDigits(int digits){
  // utility function for digital clock display: prints preceding colon and leading 0
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
} // printDigits


void receiveTime(unsigned long ts)
{
  const unsigned long DEFAULT_TIME = 1357041600; // Jan 1 2017
  
  Serial.print('[');
  Serial.print(millis() / 1000);
  Serial.print(F("]: ts: "));
  Serial.println(ts);

  if (ts > DEFAULT_TIME)
  {
    setTime(ts);

    printDigits(hour());
    Serial.write(':');
    printDigits(minute());
    Serial.write(':');
    printDigits(second());
    Serial.write(' ');
    printDigits(day());
    Serial.write('.');
    printDigits(month());
    Serial.write('.');
    Serial.println(year()); 
  }
} // receiveTime


#ifdef MY_DEBUG
void receive(const MyMessage &message)
{
  static const char buff[64];
   
  Serial.print('[');
  Serial.print(millis() / 1000);
  Serial.print(F("]: message.type: "));
  Serial.print(message.type);
  Serial.print(F(" - sensor: "));
  Serial.print(message.sensor);
  Serial.print(F(" - sender: "));
  Serial.print(message.sender);
  Serial.print(F(" - destination: "));
  Serial.print(message.destination);
  Serial.print(F(" - msg: "));
  Serial.println(message.getString(buff));
} // receive
#endif


void setup()
{
  Serial.begin(MY_BAUD_RATE);
  Serial.println("");
  Serial.println(F(SKETCH_NAME));
  Serial.print(F("Version: "));
  Serial.println(F(SKETCH_VERSION));
  Serial.flush();
} // setup


void loop()
{
  static unsigned long lastRequest = 0;
  unsigned long currentTime = millis();
  if (currentTime - lastRequest >= 10000UL)
  {
    lastRequest = currentTime;
    requestTime();
  }
} // loop