Raspberry PI SQLite Zaman diliminin değiştirilmesi ve saat ayarı hakkında

Başlatan wtrk, 09 Şubat 2022, 17:29:03

wtrk

Arkadaşlar merhaba.
Raspberry pi ile ilgili bazı konularda desteğe ihtiyacım var.
Birincisi : Raspberry Pi'nin kapanıp açtığında yada bir müddet kapalı kaldığında kaldığında saati şaşırıyor, daha doğrusu geçmişte kalıyor. Bu sorunu nasıl çözebilirim acaba ? DST modül taktığım cihazda da tam verimli olmadı onda da tarih duruyor ancak saat şaşırıyor.

ikinci sorum ise : sqlite kurdum ancak sqlite zaman dilimi CET yani +00 olarak aldığı için hep 3 saat geriden geliyor. Yani aktif olarak Pi'nin saati 17:00 olmaına rağmen db'ye yaptığı kayıtlar 14:00 oluyor.
Daha önce bu şekilde sqlite'te problem yaşayan oldu mu ?

Teşekkürler.
NoBody Can Stop Me!!!!!

mehmet

İnternet bağlı ise "ntp" servisini
çalıştırısanız, zamanı otomatik
günceller.

Kurulumda ya da sonrasında ülke/şehir
ayarını "Europe/Istanbul" olarak
değiştiriseniz sıkıntınız artık
olmayabilir.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

wtrk

Alıntı yapılan: mehmet - 09 Şubat 2022, 17:57:47İnternet bağlı ise "ntp" servisini
çalıştırısanız, zamanı otomatik
günceller.

Kurulumda ya da sonrasında ülke/şehir
ayarını "Europe/Istanbul" olarak
değiştiriseniz sıkıntınız artık
olmayabilir.

Hocam internet yok, lokal çalışacak
NoBody Can Stop Me!!!!!

muhendisbey

RTC kullanmalısınız

https://www.robotistan.com/raspberry-pi-rtc-modulu-super-capacitor

gibi. Yalnız belirteyim bunda süperkapasitör yazmasına rağmen süperkapasitör değil batarya var. Umarım şarj edilebilir koymuşlardır.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

wtrk

Alıntı yapılan: muhendisbey - 09 Şubat 2022, 19:19:21RTC kullanmalısınız

https://www.robotistan.com/raspberry-pi-rtc-modulu-super-capacitor

gibi. Yalnız belirteyim bunda süperkapasitör yazmasına rağmen süperkapasitör değil batarya var. Umarım şarj edilebilir koymuşlardır.

Belli zamanlarda değiştiririz hocam hiç önemli değil önemli olan işimizi görsün.

Teşekkürler
NoBody Can Stop Me!!!!!

fide

Rtc modüllerde belirli zaman aralıklarında saati güncelleme iz gerekiyor. Ayda 20-30 sn civarında ileri geri kayabilir. 2 farklı çözüm yolu önerebilir. Eğer açık hava gören bir yerdeyseniz GPS ile en güncel saat-tarih verisi alabilirsiniz. Şimdi ismi aklımda değil ama datetime benzeri bir kütüphane var. Saat ve tarih ile ilgili toplama çıkarma işlemleri yapılabiliyor. En stabil çözüm bu.
İkinci olarak GSM modül bağlayın. Veri kullanmasamıx bile şebeke saat senkronizasyonu açarsanız size lokal saati hatasız sağlar ama hattı açık tutmak için ara ara kontör yüklemesi yapmalısınız.

Kendinden pilli rtc modüller (486 anakartlarda çok kullanılırdı.) stabil olsa da pahalı olur diye düşünüyorum.


300tl civarında
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

wtrk

Alıntı yapılan: fide - 09 Şubat 2022, 20:18:33Rtc modüllerde belirli zaman aralıklarında saati güncelleme iz gerekiyor. Ayda 20-30 sn civarında ileri geri kayabilir. 2 farklı çözüm yolu önerebilir. Eğer açık hava gören bir yerdeyseniz GPS ile en güncel saat-tarih verisi alabilirsiniz. Şimdi ismi aklımda değil ama datetime benzeri bir kütüphane var. Saat ve tarih ile ilgili toplama çıkarma işlemleri yapılabiliyor. En stabil çözüm bu.
İkinci olarak GSM modül bağlayın. Veri kullanmasamıx bile şebeke saat senkronizasyonu açarsanız size lokal saati hatasız sağlar ama hattı açık tutmak için ara ara kontör yüklemesi yapmalısınız.

Kendinden pilli rtc modüller (486 anakartlarda çok kullanılırdı.) stabil olsa da pahalı olur diye düşünüyorum.

(Resim gizlendi görmek için tıklayın.)
300tl civarında

Hocam kapı açık-kapalı bilgisini alıyorum , ancak hangi tarih ve saatler arasında kaç saat açık kaldı bunların da bilgisini toplamam gerekiyor.
Bu yüzden saat bilgisi önemli.
Burada takıldığım konulardan birisi de sqlite'in zamanının İngiltere saatiyle çalışması
NoBody Can Stop Me!!!!!

fide

İnternet bağlantısı yok ise Greenwich'e göre almaması gerekir.
Raspberry pi üzerinde gui masaüstünde sağ tıklayınca çıkan menüde en sağda localisation ( lokasyon ayarı) var. Oradan ülke seçip düzeltebilirsiniz.

Diğer bir yöntem terminalde sudo raspi-config ile yine localisation ayarında saat dilimi değiştirilebilir.
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

wtrk

Alıntı yapılan: fide - 09 Şubat 2022, 21:13:43İnternet bağlantısı yok ise Greenwich'e göre almaması gerekir.
Raspberry pi üzerinde gui masaüstünde sağ tıklayınca çıkan menüde en sağda localisation ( lokasyon ayarı) var. Oradan ülke seçip düzeltebilirsiniz.

Diğer bir yöntem terminalde sudo raspi-config ile yine localisation ayarında saat dilimi değiştirilebilir.


Oraları Turkey yaptım hocam maalesef aynı
NoBody Can Stop Me!!!!!

fide

SQLite kendi başına saat bilgisi eklenmez datanıza. Kullandığınız C yada Python fonksiyonu da saati sistemden alır. Sistem saati ne ise ona göre çıktı verir. Kod yada gmt olan SQLite datası örneği paylaşır mısınız?
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

MC_Skywalker

1-) DS 1307'li gereçek zaman saati modülü temin edilir, Aşağıdaki işlemleri yapabilmek için Rpi mutlaka imternete bağlı olmalıdır.

2-) Aşağıdaki şekilde bağlanır.
DS 1307 Modül 5V pini  ---> RPi pin 2
DS 1307 Modül SDA pini ---> RPi pin 3
DS 1307 Modül SCL pini ---> RPi pin 5
DS 1307 Modül GND pini ---> RPi pin 6

3-) RPi çalıştırılıp config programı ile I2C portu aktif edilir ve PRi reboot edilir
sudo raspi-config

4-) SMBUS ve I2C ile ilgili programlar kurulur
sudo apt-get install python-smbus i2c-tools

5-) I2C adresi bulunur (yanılmıyorsam 68 gibi bir değer döndürecek)
sudo i2cdetect -y 1

6-) config.txt içine RTC cip bilgileri yazılır
sudo nano /boot/config.txt
yazılacak kod
dtoverlay=i2c-rtc,ds1307
kaydedilir ve önce;
sudo reboot
Rpi açılıca yeniden
sudo i2cdetect -y 1
ile adrese kalırı daha önce 68 yazan yerde UU yazdığı görülür.

7-)çakma donanım sati aşağıdaki kodlar sırayla yürütülüp devre dışı bırakılır
sudo apt-get -y remove fake-hwclock
sudo update-rc.d -f fake-hwclock remove
sudo systemctl disable fake-hwclock

8-) hwclock-set dosyası içindeki aşağıdaki satırların başına yorum işaret # eklenir.
#if [ -e /run/systemd/system ] ; then
# exit 0
#fi
bu halde olacak.
Ardından aşağıdaki satırlarada yorum işareti eklenir ve kaydedilir
/sbin/hwclock --rtc=$dev --systz --badyear
ve
/sbin/hwclock --rtc=$dev --systz

9-) İnternet bağlı olduğunda otomatikman Saat sekronize edilir.
date
ile kontrol edilir
sudo hwclock -w
ile RTC ye yazılur
sudo hwclock -r
ile RTC den okunur.

%99,9 SQL zaman sorunu çözülmüş olur.
Ek:
Rpi I2C pinlerinin 5V toleransı var mı, yok mu aklımda değil. RTC ile arasına lojik seviye uydurucu gereke bilir.

wtrk

Alıntı yapılan: MC_Skywalker - 09 Şubat 2022, 22:10:361-) DS 1307'li gereçek zaman saati modülü temin edilir, Aşağıdaki işlemleri yapabilmek için Rpi mutlaka imternete bağlı olmalıdır.

2-) Aşağıdaki şekilde bağlanır.
DS 1307 Modül 5V pini  ---> RPi pin 2
DS 1307 Modül SDA pini ---> RPi pin 3
DS 1307 Modül SCL pini ---> RPi pin 5
DS 1307 Modül GND pini ---> RPi pin 6

3-) RPi çalıştırılıp config programı ile I2C portu aktif edilir ve PRi reboot edilir
sudo raspi-config

4-) SMBUS ve I2C ile ilgili programlar kurulur
sudo apt-get install python-smbus i2c-tools

5-) I2C adresi bulunur (yanılmıyorsam 68 gibi bir değer döndürecek)
sudo i2cdetect -y 1

6-) config.txt içine RTC cip bilgileri yazılır
sudo nano /boot/config.txt
yazılacak kod
dtoverlay=i2c-rtc,ds1307
kaydedilir ve önce;
sudo reboot
Rpi açılıca yeniden
sudo i2cdetect -y 1
ile adrese kalırı daha önce 68 yazan yerde UU yazdığı görülür.

7-)çakma donanım sati aşağıdaki kodlar sırayla yürütülüp devre dışı bırakılır
sudo apt-get -y remove fake-hwclock
sudo update-rc.d -f fake-hwclock remove
sudo systemctl disable fake-hwclock

8-) hwclock-set dosyası içindeki aşağıdaki satırların başına yorum işaret # eklenir.
#if [ -e /run/systemd/system ] ; then
# exit 0
#fi
bu halde olacak.
Ardından aşağıdaki satırlarada yorum işareti eklenir ve kaydedilir
/sbin/hwclock --rtc=$dev --systz --badyear
ve
/sbin/hwclock --rtc=$dev --systz

9-) İnternet bağlı olduğunda otomatikman Saat sekronize edilir.
date
ile kontrol edilir
sudo hwclock -w
ile RTC ye yazılur
sudo hwclock -r
ile RTC den okunur.

%99,9 SQL zaman sorunu çözülmüş olur.
Ek:
Rpi I2C pinlerinin 5V toleransı var mı, yok mu aklımda değil. RTC ile arasına lojik seviye uydurucu gereke bilir.

Hocam zamanında DS3231 almışım onunlada aynı işlemleri denesem olur mu acaba ?
NoBody Can Stop Me!!!!!

fahri-

Eğer uzun süreli durumlarda zaman kayması az olsun isteniyorsa DS3232 öneririm. Ayda max 3-5 sn kayıyor. 2-3 TL lik bir backup pili ile (CR3032), yıllarca çalışıyor.

muhendisbey

Alıntı yapılan: fahri- - 10 Şubat 2022, 11:09:13Ayda max 3-5 sn kayıyor.
Gecikmenin, ya da ileri gitmenin durumuna göre haftada ya da ayda bir kez düzenleme yapılırsa kusursuz bir saat elde edilir.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.

wtrk

Alıntı yapılan: fahri- - 10 Şubat 2022, 11:09:13Eğer uzun süreli durumlarda zaman kayması az olsun isteniyorsa DS3232 öneririm. Ayda max 3-5 sn kayıyor. 2-3 TL lik bir backup pili ile (CR3032), yıllarca çalışıyor.

Yaklaşık 15 kadar almışım 3231 ancak sorun değil 3232'de alabilirim teşekkürler hocam.
NoBody Can Stop Me!!!!!