Modo appropriato per gestire il fuso orario per dispositivi embedded / IoT

2

Sto scrivendo alcuni software di raccolta dati (in python) che trasmetteranno i dati al cloud. Sto includendo un timestamp (utilizzando il modulo datetime standard incluso in python) nel record di dati in modo che l'orario sia documentato nel cloud datastore. Verrà eseguito su un dispositivo Linux incorporato.

Sono tra alcune idee architettoniche su come gestire il fuso orario dei dispositivi e la precisione dei timestamp.

I miei pensieri sono che userò un server NTP per ottenere l'ora UTC per la distribuzione linux che fornirà un tempo preciso per tutte le applicazioni in esecuzione sul dispositivo. Tuttavia non sono sicuro di cosa dovrei impostare il fuso orario sul dispositivo stesso.

La mia preoccupazione è che se imposto il fuso orario sull'ora locale e capita di essere sbagliato, allora non solo l'ora locale sarà errata, ma quando la mia applicazione otterrà l'ora UTC dall'ora del sistema sarà anche errata, anche se è stato precedentemente negoziato dal server NTP. Il fuso orario può essere impostato in modo errato da chiunque installi il dispositivo. Potrei mitigarlo includendo un modulo GPS nel dispositivo che può negoziare il tempo GPS per configurare l'ora del sistema, ma questo sembra un hardware aggiuntivo che non sarebbe necessario.

L'altra idea sarebbe quella di impostare il fuso orario di tutti i dispositivi su UTC e non cambiare in base alla posizione del dispositivo. Quindi posso essere sicuro che i timestamp UTC che invio al cloud siano precisi, ma perdo informazioni sull'ora locale a meno che non invii anche informazioni sulla posizione al database cloud.

Non sono sicuro che esista un metodo preferito per impostare l'ora del sistema su dispositivi IoT come questo, ma vorrei qualche consiglio.

    
posta Alex Eshoo 31.07.2018 - 17:20
fonte

2 risposte

2

Descrivi due problemi distinti

  1. Scopri (sul dispositivo) l'ora corretta

    Se si stanno registrando i dati con un timestamp, si vorrà utilizzare il datetime UTC corretto. Come puoi notare, questo può essere scoperto tramite un server NTP.

  2. Trova il fuso orario locale per il dispositivo

    È meno chiaro il motivo per cui hai bisogno di queste informazioni. Ma è quasi impossibile da recuperare in quanto è in qualche modo una preferenza dell'utente.

    In teoria con un dispositivo non mobile, se riesci a localizzare il dispositivo con una precisione sufficiente, puoi cercare il fuso orario che si applica a quel luogo in quel momento.

    Poiché l'unica vera necessità per il tempo locale è quella di presentarlo a un utente, vorrei semplicemente chiedere loro di scegliere un fuso orario.

risposta data 31.07.2018 - 18:01
fonte
4

IGNORA IL FUSO ORARIO DEL DISPOSITIVO

Segnala le tue risposte in UTC.

In quasi QUALSIASI situazione in cui si visualizzano o riportano dati basati sul tempo, il fuso orario di interesse NON sarà il fuso orario in cui sono stati raccolti i dati, ma piuttosto il fuso orario del VIEWER della GUI o del REPORT.

Questo è particolarmente ovvio e fondamentale se si raccolgono dati da dispositivi che si trovano in diversi fusi orari.

È difficile garantire che il fuso orario del dispositivo sia impostato correttamente, perché in genere è NOT (perché a nessuno importa). Solo se genera dati umani visibili sulle date, è necessario conoscere un fuso orario.

    
risposta data 31.07.2018 - 18:26
fonte

Leggi altre domande sui tag