Skip to content

Library for the ESP8266 to work with a DS3231 RTC. Support time update from NTP server and automatic daylight saving time.

License

Notifications You must be signed in to change notification settings

karandinsa/ESP8266-i2c-DS3231

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 

Repository files navigation

RTS DS3231 работа с NTP и времеными зонами

micropython

Функционал который имеет библиотека:

  1. Обновление времени с NTP сервера (для этого используется библиотека timezone)
  2. Поддержка временных зон и перехода с летнего времени на зимнее

Схема включения DS3231

schematic_esp8266-ds3231-rtc


Работа с библиотекой:

from machine import I2C, Pin
from i2c_ds3231 import DS3231
i2c = I2C(scl=Pin(14), sda=Pin(12), freq=400000)
rtc = DS3231(i2c, 0x68, zone=3)

Вывод времени с ds3231:

rtc.datetime()

Запись нового значения времени

rtc.datetime((2019, 1, 13, 19, 0, 48, 6, 0))

Сбрас времени до (2000, 1, 1, 0, 0, 0, 0, 0) это удобно использовать при отладке кода

rtc.datetime('reset')

Обновление времени с NTP сервера

rtc.settime('ntp')

Обновление времени с часов микроконтроллера

rtc.settime('esp')

Обновление времени с летнего на зимнее и обратно

rtc.settime('dht')
или
rtc.settime()

В процессе работы возможно изменение временной зоны, для этого в библиотеке используется setter

new_time_zone = 2
rtc.set_zone = new_time_zone

Пример использования:

from machine import I2C, Pin
from i2c_ds3231 import DS3231
i2c = I2C(scl=Pin(14), sda=Pin(12), freq=400000)
rtc = DS3231(i2c, 0x68, zone=3)
rtc.datetime()
(2000, 1, 1, 0, 9, 30, 5, 0)
rtc.settime('ntp')
#Get UTC time from NTP server...
#TIME ZONE Winter: 2
#RTC: Old Time: 2000-01-01 00:09:59
#RTC: New Time: 2019-01-24 12:47:19
async def _dataupdate(self):
        while True:
            self.config['RTC_TIME'] = self.rtc.datetime()
            rtc = self.config['RTC_TIME']
            #Проверка летнего или зименего времени каждую минуту в 30с
            if rtc[5] == 30: 
                self.rtc.settime('dht')
            #Если у нас режим подключения к точке доступа и если есть соединение, подводим часы по NTP
            if self.config['MODE_WiFi'] == 'ST' and not self.config['no_wifi']:
                #Подводка часов по NTP каждые сутки в 22:00:00
                if rtc[3] == 22 and rtc[4] == 0 and rtc[5] < 3 and self.config['NTP_UPDATE']:
                        self.config['NTP_UPDATE'] = False
                        self.rtc.settime('ntp')
                        await asyncio.sleep(1)
                        self.config['NTP_UPDATE'] = True
            await asyncio.sleep(1)

About

Library for the ESP8266 to work with a DS3231 RTC. Support time update from NTP server and automatic daylight saving time.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%