# HG changeset patch # User drewp # Date 1542009293 28800 # Node ID d9abb93515c2f41fde17fddc21487e0e696dd224 # Parent 6ff6e4df4f1e21647d9eacabe446f90ae90f4d7e kitchen button, device code fixes Ignore-this: 3e0477db8cfa11207b7db9eadf1c7f12 darcs-hash:2263ac93c1ba6c5ff898ad1c3ae393fbbb6787ba diff -r 6ff6e4df4f1e -r d9abb93515c2 service/piNode/config/frontbed.n3 --- a/service/piNode/config/frontbed.n3 Sun Nov 11 23:54:17 2018 -0800 +++ b/service/piNode/config/frontbed.n3 Sun Nov 11 23:54:53 2018 -0800 @@ -37,7 +37,7 @@ ha:frontbedPiTemp a :OnboardTemperature; :influxMeasurement "temperatureF"; - :influxTag [:key "location"; :value "downBathPi"] . + :influxTag [:key "location"; :value "frontbedPi"] . # pin number ignored; see /boot/config.txt pin:GPIO17 :gpioNumber 17; :connectedTo ow: . diff -r 6ff6e4df4f1e -r d9abb93515c2 service/piNode/config/kitchen.n3 --- a/service/piNode/config/kitchen.n3 Sun Nov 11 23:54:17 2018 -0800 +++ b/service/piNode/config/kitchen.n3 Sun Nov 11 23:54:53 2018 -0800 @@ -13,8 +13,11 @@ :onboardDevice ha:kitchenPiTemp; :hasPin pin:GPIO4, - pin:GPIO17 + pin:GPIO17, + pin:GPIO14 . + +# pin 18 IR in ha:kitchenPiTemp a :OnboardTemperature; :influxMeasurement [ @@ -42,3 +45,6 @@ :measurement "temperatureF"; :predicate :temperatureF; :tag [:key "host"; :value "kitchen"], [:key "location"; :value "kitchenCounter_ds_test"]] . + +pin:GPIO14 :gpioNumber 14; :connectedTo sensor:kitchenCounterButton1 . +sensor:kitchenCounterButton1 a :Pushbutton . diff -r 6ff6e4df4f1e -r d9abb93515c2 service/piNode/devices.py --- a/service/piNode/devices.py Sun Nov 11 23:54:17 2018 -0800 +++ b/service/piNode/devices.py Sun Nov 11 23:54:53 2018 -0800 @@ -18,10 +18,7 @@ import pigpio except ImportError: pigpio = None -try: - import w1thermsensor -except Exception: - w1thermsensor = None +import w1thermsensor try: import rpi_ws281x except ImportError: @@ -269,10 +266,16 @@ DeviceType.__init__(self, *a, **kw) import DHT22 self.sens = DHT22.sensor(self.pi, self.pinNumber) + self.recentLowTemp = (0, None) # time, temp + self.recentPeriodSec = 30 def poll(self): stmts = set() + now = time.time() + if self.recentLowTemp[0] < now - self.recentPeriodSec: + self.recentLowTemp = (0, None) + if self.sens.staleness() < self.pollPeriod * 2: humid, tempC = self.sens.humidity(), self.sens.temperature() if humid > -999: @@ -280,14 +283,19 @@ else: stmts.add((self.uri, RDFS['comment'], Literal('No recent humidity measurement'))) if tempC > -999: - stmts.add((self.uri, ROOM['temperatureF'], - # see round() note in arduinoNode/devices.py - Literal(round(tempC * 9 / 5 + 32, 2)))) + # see round() note in arduinoNode/devices.py + tempF = round(tempC * 9 / 5 + 32, 2) + stmts.add((self.uri, ROOM['temperatureF'], Literal(tempF))) + if self.recentLowTemp[1] is None or tempF < self.recentLowTemp[1]: + self.recentLowTemp = (now, tempF) else: stmts.add((self.uri, RDFS['comment'], Literal('No recent temperature measurement'))) else: stmts.add((self.uri, RDFS['comment'], Literal('No recent DHT response (%.02f sec old)' % self.sens.staleness()))) + + if self.recentLowTemp[1] is not None: + stmts.add((self.uri, ROOM['recentLowTemperatureF'], Literal(self.recentLowTemp[1]))) self.sens.trigger() diff -r 6ff6e4df4f1e -r d9abb93515c2 service/piNode/requirements.txt --- a/service/piNode/requirements.txt Sun Nov 11 23:54:17 2018 -0800 +++ b/service/piNode/requirements.txt Sun Nov 11 23:54:53 2018 -0800 @@ -6,14 +6,13 @@ python-dateutil w1thermsensor service_identity -git+git://github.com/adafruit/Adafruit_Python_DHT http://abyz.co.uk/rpi/pigpio/pigpio.zip git+git://github.com/adafruit/Adafruit_Nokia_LCD RPi.GPIO==0.6.2 influxdb==3.0.0 rpi_ws281x==3.0.4 pyOpenSSL -numpy==1.13.3 +numpy pillow imageio==2.2.0 https://projects.bigasterisk.com/rdfdb/rdfdb-0.3.0.tar.gz