diff service/environment/environment.py @ 876:351292938d7c

twilight computation for rules to use Ignore-this: c40016acb3c3f957cb17d2b918698c77 darcs-hash:20130411043221-312f9-7af02fd32d1df6a01f151753150d2e4ff87a59c0
author drewp <drewp@bigasterisk.com>
date Wed, 10 Apr 2013 21:32:21 -0700
parents 9e99114dde57
children 86345d1d8514
line wrap: on
line diff
--- a/service/environment/environment.py	Wed Apr 10 21:31:51 2013 -0700
+++ b/service/environment/environment.py	Wed Apr 10 21:32:21 2013 -0700
@@ -7,11 +7,13 @@
 import sys, datetime, cyclone.web
 from twisted.internet import reactor
 from dateutil.tz import tzlocal
+from dateutil.relativedelta import relativedelta, FR
 from rdflib import Namespace, Literal
 sys.path.append("/my/site/magma")
 from stategraph import StateGraph
 sys.path.append("/my/proj/homeauto/lib")
 from cycloneerr import PrettyErrorHandler
+from twilight import isWithinTwilight
 
 ROOM = Namespace("http://projects.bigasterisk.com/room/")
 DEV = Namespace("http://projects.bigasterisk.com/device/")
@@ -26,6 +28,15 @@
         now = datetime.datetime.now(tzlocal())
 
         g.add((DEV.environment, ROOM.localHour, Literal(now.hour)))
+
+        for offset in range(-12, 7):
+            d = now.date() + datetime.timedelta(days=offset)
+            if d == d + relativedelta(day=31, weekday=FR(-1)):
+                g.add((DEV.calendar, ROOM.daysToLastFridayOfMonth,
+                       Literal(offset)))
+
+        g.add((DEV.calendar, ROOM.twilight,
+               ROOM['withinTwilight'] if isWithinTwilight(now) else ROOM['daytime']))
         
         self.set_header('Content-type', 'application/x-trig')
         self.write(g.asTrig())