/** * @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