RTC hwclock in python

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
egon11
User
Beiträge: 354
Registriert: Mittwoch 14. Dezember 2016, 20:59

Jetzt hab ich noch eine Frage zur hwclock.
Nachdem ich das andere fast erledigt hab, bin ich dabei die hwclock zu installieren.
Angeschlossen und alle Module installiert funktioniert die hwclock (rtc3231).
Aber in mein so geliebten Python Programm will es nicht laufen.
Gibt es ein hwclock Modul was ich importieren kann, oder muss ich alles selbst configurieren?
BlackJack

@egon11: Was heisst „angeschlossen und alle Module installiert funktioniert die hwclock“? Heisst das es gibt Kernelmodule für den Chip die tatsächlich die Systemzeit darüber bestimmen? Oder zumindest einen Dienst der ab und zu die Systemzeit mit den Werten aus dem Chip abgleicht?

Und was heisst es funktioniert im Python-Programm *nicht*? Was genau machst Du denn dort?
egon11
User
Beiträge: 354
Registriert: Mittwoch 14. Dezember 2016, 20:59

Sorry, ich hab mich falsch ausgedrückt. Mit angeschlossen meine ich die Hardware, und hab die dazugehörigen python module geladen (smbus,setup.py)
Im Terminal unter der ausgabe "sudo hwclock -r" zeigt es mir die richtige Uhrzeit an.
Jetzt möchte ich diese direkt hier einbringen, also anstatt ' time.strftime('%d.%m.%Y %H:%M:%S'' möchte ich die Zeit von der RTC haben.
Da muss man mit smbus arbeiten, oder gibt es eine andere Möglichkeit?

Code: Alles auswählen

import sys
import time
import RPi.GPIO as GPIO
import datetime
import picamera
import smbus

GPIO.setmode (GPIO.BOARD)
GPIO.setup (11, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup (32, GPIO.OUT)
cam = picamera.PiCamera()
cam.resolution = (1920,1080)

def motion (pin):
          
           t = time.strftime('%d.%m.%Y %H:%M:%S')
           cam.capture ('/home/pi/%s.jpg'  %t)

           GPIO.output(32, GPIO.HIGH)
           time.sleep(1)
           GPIO.output (32, GPIO.LOW) 
           return

GPIO.add_event_detect (11, GPIO.RISING)
GPIO.add_event_callback (11, motion)

try:
  while True:
     time.sleep (0.5)
except KeyboardInterrupt:
      GPIO.cleanup ()   
Es geht um die zeit, die Bilder sollen nach Zeit gespeichert werden.
Frage ist, wie ich das am unkomplizierten hin bekomme.
Zuletzt geändert von Anonymous am Mittwoch 18. Januar 2017, 18:55, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@egon11: Das `hwclock`-Programm hat nichts mit dem angeschlossenen rtc3231 zu tun. Beziehungsweise wenn *das* die richtige Uhrzeit anzeigt und zum setzen der Systemzeit verwendet wird, dann kannst Du in Python einfach mit dem `datetime`- oder `time`-Modul arbeiten.

Das würde ich letztendlich so oder so machen, also auch wenn der Chip die einzige Zeitquelle ist, würde ich den nicht in einzelnen Programmen abfragen, sondern schauen das der verwendet wird um die Systemzeit zu setzen. So haben dann *alle* Programme etwas davon.
egon11
User
Beiträge: 354
Registriert: Mittwoch 14. Dezember 2016, 20:59

Ja genau so hatte ich das vor, nur sobald das Lan-Kabel ab ist, fürhrt er wegen der Uhrzeit dieses Script nicht mehr aus.
BlackJack

@egon11: Du musst halt irgendwie dafür sorgen, dass bei Systemstart die Zeit der Hardware-Uhr auf die Systemzeit übertragen wird. Also das was Linuxdistributionen üblicherweise bei Desktoprechnern und Servern machen. Wird wahrscheinlich irgendein Startskript sein welches beim Raspi nicht installiert oder aktiviert ist, weil der keine Hardware-Uhr an Bord hat.

Das sind letztendlich aber keine Python-Fragen sondern Linux-Fragen. Wahrscheinlich bist Du damit in einem Linux-Forum oder gar einem Raspi-Forum besser aufgehoben. Denn ich schätze Du bist dort nicht der einzige der eine RTC ins System integrieren möchte, und das haben sicher auch schon Leute erfolgreich getan.
egon11
User
Beiträge: 354
Registriert: Mittwoch 14. Dezember 2016, 20:59

Ok danke @ BlackJack für die ganzen hilfreichen Kommentare.
Antworten