Hallo zusammen,
ich habe seit gut 6 Monaten ohne Probleme das ical plugin und eine
Logik in Betrieb welche diverse Aktionen in Abhängigkeit von Kalendereinträgen steuert. (Rollo, "Müllampe", ...)
/Plauder an
Heute morgen hätten wir fast verschlafen weil sh.py fälschlicherweise
davon ausging dass die erste Schulstunde unseres Sohnes ausfällt.
/Plauder aus
Wegen Fritzbox bin ich (allerdings schon länger) auf Develop, ansonsten habe ich in der letzten Zeit nichts an sh.py geschraubt. (Nein, gar nichts)
ein Blick ins Log bringt das Folgende zu Tage:
die zugehörige Logik (vielleicht nicht schön / optimal, aber funktioniert seit Monaten):
und die logic.conf
Kann mir jemand helfen?
Danke vorab & Grüße
Sven
ich habe seit gut 6 Monaten ohne Probleme das ical plugin und eine
Logik in Betrieb welche diverse Aktionen in Abhängigkeit von Kalendereinträgen steuert. (Rollo, "Müllampe", ...)
/Plauder an
Heute morgen hätten wir fast verschlafen weil sh.py fälschlicherweise
davon ausging dass die erste Schulstunde unseres Sohnes ausfällt.
/Plauder aus
Wegen Fritzbox bin ich (allerdings schon länger) auf Develop, ansonsten habe ich in der letzten Zeit nichts an sh.py geschraubt. (Nein, gar nichts)
ein Blick ins Log bringt das Folgende zu Tage:
Code:
2014-04-09 04:00:02 ERROR 00_kalender Logic: 00_kalender, File: /usr/lib/python3.2/ssl.py, Line: 293, Method: read, Exception: The read operation timed out
Traceback (most recent call last):
File "/usr/smarthome/lib/scheduler.py", line 339, in _task
exec(obj.bytecode)
File "/usr/smarthome/logics/00_kalender.py", line 10, in <module>
events = sh.ical('https://www.google.com/calendar/ical/hier-meine-mail/private-hier mein key/basic',delta=2)
File "/usr/smarthome/plugins/ical/__init__.py", line 57, in __call__
ical = self._sh.tools.fetch_url(ics, username=username, password=password)
File "/usr/smarthome/lib/tools.py", line 78, in fetch_url
resp = conn.getresponse()
File "/usr/lib/python3.2/http/client.py", line 1052, in getresponse
response.begin()
File "/usr/lib/python3.2/http/client.py", line 346, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.2/http/client.py", line 308, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.2/socket.py", line 287, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3.2/ssl.py", line 399, in recv_into
return self.read(nbytes, buffer)
File "/usr/lib/python3.2/ssl.py", line 293, in read
v = self._sslobj.read(len, buffer)
socket.timeout: The read operation timed ou
Code:
#!/usr/bin/env python
#
#siehe https://knx-user-forum.de/smartvisu/30789-zeitschaltuhr-mit-google-kalender-steuern.html
now = sh.now()
today = sh.now().date()
tomorrow = today + datetime.timedelta(days=1)
events = sh.ical('https://www.google.com/calendar/ical/hier-meine-mail/private-hier mein key/basic',delta=2)
#Schalter zurücksetzen
sh.mjm.status.muell(0)
sh.mjm.status.feiertag(0)
sh.mjm.status.ferien(0)
sh.mjm.status.erstestundefrei(0)
for day in events:
logger.info("Date: {0}".format(day))
for event in events[day]:
estart = event['Start'] + datetime.timedelta(hours=+1)
eend = event['End'] + datetime.timedelta(hours=+1)
logger.info(event['Summary'])
logger.info(event['Start'])
logger.info(event['End'])
#Müllbenachrichtigung
if 'Rest' in event['Summary'] or 'Bio' in event['Summary'] or 'Flach' in event['Summary'] or 'Rund' in event['Summary']:
if now + datetime.timedelta(days=1) >= estart:
if now + datetime.timedelta(days=1) <= eend:
logger.info("Müllswitch EIN")
logger.info(event['Summary'])
logger.info(event['Description'])
logger.info(event['Location'])
logger.info(event['Start'])
logger.info(event['End'])
sh.mjm.status.muell(1)
#Feriensteuerung
if 'ferien' in event['Summary']:
if now >= estart:
if now <= eend:
logger.info("Ferienswitch EIN")
logger.info(event['Summary'])
logger.info(event['Description'])
logger.info(event['Location'])
logger.info(event['Start'])
logger.info(event['End'])
logger.info(event['Summary'])
sh.mjm.status.ferien(1)
#Feiertagssteuerung
if 'Feiertag' in event['Description']:
if now >= estart:
if now <= eend:
logger.info("Feiertagsswitch EIN")
logger.info(event['Summary'])
logger.info(event['Description'])
logger.info(event['Location'])
logger.info(event['Start'])
logger.info(event['End'])
sh.mjm.status.feiertag(1)
#Stundenplansteuerung
if event['Summary'] == 'erste Stunde fällt aus':
if now >= estart:
if now <= eend:
logger.info("erste Stunde fällt aus: EIN")
logger.info(event['Summary'])
logger.info(event['Description'])
logger.info(event['Location'])
logger.info(event['Start'])
logger.info(event['End'])
sh.mjm.status.erstestundefrei(1)
Code:
[00_kalender]
filename = 00_kalender.py
crontab = init | 00 04 * *
Danke vorab & Grüße
Sven


Kommentar