timesync fixes
This commit is contained in:
parent
a88ea16e3a
commit
d597f50d53
@ -126,22 +126,6 @@
|
|||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": "f4c5b6de.f95148",
|
|
||||||
"type": "function",
|
|
||||||
"z": "449c1517.e25f4c",
|
|
||||||
"name": "Time_Sync_Ans",
|
|
||||||
"func": "/* LoRaWAN Timeserver\n\nconstruct 6 byte timesync_answer from gateway timestamp and node's time_sync_req\n\nbyte meaning\n0 sequence number (taken from node's time_sync_req)\n1..4 current second (from epoch time 1970)\n5 1/250ths fractions of current second\n\n*/\n\n let buf = new ArrayBuffer(6);\n let timestamp = (+new Date(msg.payload.metadata.gateways[0].time));\n \n var seconds = Math.floor(timestamp/1000);\n var fractions = (timestamp % 1000) / 4;\n var seqno = msg.payload.payload_raw[0];\n\n new DataView(buf).setUint8(0, seqno);\n new DataView(buf).setUint32(1, seconds);\n new DataView(buf).setUint8(5, fractions);\n\n msg.payload = new Buffer(new Uint8Array(buf));\n \n return msg;",
|
|
||||||
"outputs": 1,
|
|
||||||
"noerr": 0,
|
|
||||||
"x": 400,
|
|
||||||
"y": 280,
|
|
||||||
"wires": [
|
|
||||||
[
|
|
||||||
"49e3c067.e782e"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": "dac8aafa.389298",
|
"id": "dac8aafa.389298",
|
||||||
"type": "json",
|
"type": "json",
|
||||||
@ -219,7 +203,23 @@
|
|||||||
"y": 200,
|
"y": 200,
|
||||||
"wires": [
|
"wires": [
|
||||||
[
|
[
|
||||||
"f4c5b6de.f95148"
|
"595229b0.5df3d8"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "595229b0.5df3d8",
|
||||||
|
"type": "function",
|
||||||
|
"z": "449c1517.e25f4c",
|
||||||
|
"name": "Time_Sync_Ans",
|
||||||
|
"func": "/* LoRaWAN Timeserver\n\nconstruct 6 byte timesync_answer from gateway timestamp and node's time_sync_req\n\nbyte meaning\n0 sequence number (taken from node's time_sync_req)\n1..4 current second (from epoch time 1970)\n5 1/250ths fractions of current second\n\n*/\n\n let timestamp = (+new Date(msg.payload.metadata.gateways[0].time));\n let timestamp_server = (+new Date(msg.payload.metadata.time));\n \n if ((timestamp < timestamp_server) && (timestamp > 0)) {\n \n var seconds = Math.floor(timestamp/1000);\n var fractions = (timestamp % 1000) / 4;\n var seqno = msg.payload.payload_raw[0];\n\n let buf = new ArrayBuffer(6);\n new DataView(buf).setUint8(0, seqno);\n new DataView(buf).setUint32(1, seconds);\n new DataView(buf).setUint8(5, fractions);\n\n msg.payload = new Buffer(new Uint8Array(buf));\n \n return msg;\n}\n\nelse\n\nreturn null;",
|
||||||
|
"outputs": 1,
|
||||||
|
"noerr": 0,
|
||||||
|
"x": 380,
|
||||||
|
"y": 280,
|
||||||
|
"wires": [
|
||||||
|
[
|
||||||
|
"49e3c067.e782e"
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -187,7 +187,7 @@ void setup() {
|
|||||||
// set low power mode to off
|
// set low power mode to off
|
||||||
#ifdef HAS_LOWPOWER_SWITCH
|
#ifdef HAS_LOWPOWER_SWITCH
|
||||||
pinMode(HAS_LOWPOWER_SWITCH, OUTPUT);
|
pinMode(HAS_LOWPOWER_SWITCH, OUTPUT);
|
||||||
digitalWrite(HAS_LOWPOWER_SWITCH, HIGH);
|
digitalWrite(HAS_LOWPOWER_SWITCH, LOW);
|
||||||
strcat_P(features, " LPWR");
|
strcat_P(features, " LPWR");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -155,15 +155,18 @@ void process_timesync_req(void *taskparameter) {
|
|||||||
ESP_LOGD(TAG, "waiting %dms", 1000 - time_offset_msec);
|
ESP_LOGD(TAG, "waiting %dms", 1000 - time_offset_msec);
|
||||||
vTaskDelay(pdMS_TO_TICKS(1000 - time_offset_msec));
|
vTaskDelay(pdMS_TO_TICKS(1000 - time_offset_msec));
|
||||||
|
|
||||||
setTime(time_to_set);
|
|
||||||
// sync timer pps to top of second
|
// sync timer pps to top of second
|
||||||
if (ppsIRQ)
|
if (ppsIRQ) {
|
||||||
timerWrite(ppsIRQ, 10000); // fire interrupt
|
timerRestart(ppsIRQ); // reset pps timer
|
||||||
|
CLOCKIRQ(); // fire clock pps interrupt
|
||||||
|
}
|
||||||
|
|
||||||
|
setTime(time_to_set);
|
||||||
timeSource = _lora;
|
timeSource = _lora;
|
||||||
timesyncer.attach(TIME_SYNC_INTERVAL * 60,
|
timesyncer.attach(TIME_SYNC_INTERVAL * 60,
|
||||||
timeSync); // set to regular repeat
|
timeSync); // set to regular repeat
|
||||||
ESP_LOGI(TAG, "Timesync finished, time adjusted by %lld ms", time_offset.count());
|
ESP_LOGI(TAG, "Timesync finished, time adjusted by %lld ms",
|
||||||
|
time_offset.count());
|
||||||
} else
|
} else
|
||||||
ESP_LOGI(TAG, "Timesync finished, time not adjusted, is up to date");
|
ESP_LOGI(TAG, "Timesync finished, time not adjusted, is up to date");
|
||||||
} else
|
} else
|
||||||
|
Loading…
Reference in New Issue
Block a user