네트워크가 없고 RTC가 없습니다. 시스템은 잠시 정전된 후 시계를 복구합니다.

네트워크가 없고 RTC가 없습니다. 시스템은 잠시 정전된 후 시계를 복구합니다.

Raspberry Pi를 사용하여 프로그래밍 가능한 전원 스위치를 만들었습니다. (이 문제는 RPi에만 국한된 것은 아니지만 하드웨어 결함으로 인해 문제가 발생하는 "일반적인 Linux" 문제에 가깝습니다.) Raspberry에는 배터리 지원 장치가 없습니다. RTC는 온라인으로 작동하도록 설계되었으며 네트워크를 통해 부팅한 후 즉시 시계를 동기화합니다.

내 문제는 네트워크를 통해 스위치를 프로그래밍할 때 주어진 시간에 주어진 콘센트를 이런 식으로 켜거나 끌 수 있지만 장치 자체는 네트워크에 연결되지 않은 위치를 포함하여 다른 위치에서 사용된다는 것입니다. 프로그래밍된 위치에서 연결된 위치로 가져가면 전원이 꺼지고 시계의 상태가 손실됩니다. 전원을 껐다 켜도 날짜를 복원할 연결이 없습니다.

몇 분 동안 전원이 공급되지 않는 것은 나에게 문제가 되지 않습니다. 시계가 1~2분 정도 느려지는 것도 개의치 않습니다. 네트워크에 연결되지 않은 상태에서 전원을 켠 후에도 43년 동안 그랬던 것처럼 꺼져 있으면 괜찮습니다.

정전으로 인해 시스템이 다운되기 전의 시간으로 시작 시 시계를 복원할 수 있는 영리한 방법이 있습니까? (매초마다 SD 카드(RPi의 저장 매체)에 기록하면 카드가 빨리 종료되므로 이는 옵션이 아닙니다.)

답변1

이 문제를 해결하는 방법이 여러 가지 있습니다.

  1. 파일 시스템에서 가장 최근 수정 또는 액세스 시간이 있는 파일을 검색합니다. 이 시간을 사용하여 시계를 설정하십시오. 속도가 느리고 정확도가 낮을 ​​수 있지만 작동할 것입니다. 특정 디렉터리/파일이 상당히 자주 수정된다는 것을 알고 있다면 이를 소스로 사용할 수 있습니다.

  2. 당신이 언급한 아이디어에 따라 "몇 초마다 파일을 터치합니다". 많은 SD 카드에는 웨어 레벨링 기능이 있습니다. 따라서 항상 똑같은 위치에 글을 쓰는 것이 아니므로 전혀 문제가 되지 않습니다.

  3. NVRAM을 사용하세요. 필요할 때마다 현재 날짜를 NVRAM에 쓴 다음 부팅 시 날짜를 복원합니다. NVRAM은 작지만 문제 없이 몇 바이트를 저장할 수 있습니다.

  4. 시간 동기화를 위해 GPS를 사용하세요. 이는 시간이 필요하지만 네트워크에 액세스할 수 없는 장치에서 수행하는 작업입니다. USB GPS 장치는 저렴하며 매우 정확한 시간 소스를 제공합니다.

답변2

가장 쉬운 방법은 실제로 다음과 같은 실시간 시계를 추가하는 것입니다. http://learn.adafruit.com/adding-a-real-time-clock-to-raspberry-pi/

관련 정보