changeset 210:75717a0be824

ledoutput support for piNode Ignore-this: 3c803f823e2db77285885395db892835
author drewp@bigasterisk.com
date Sat, 07 Nov 2015 12:24:59 -0800
parents 6a1462822c56
children 7d3645c2157e
files service/piNode/devices.py
diffstat 1 files changed, 30 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/service/piNode/devices.py	Sat Nov 07 10:40:28 2015 -0800
+++ b/service/piNode/devices.py	Sat Nov 07 12:24:59 2015 -0800
@@ -177,6 +177,36 @@
             'pred': ROOM['color'],
         }]
 
+
+@register
+class LedOutput(DeviceType):
+    deviceType = ROOM['LedOutput']
+                
+    def setup(self):
+        self.pi.set_mode(self.pinNumber, pigpio.OUTPUT)
+        self.pi.set_PWM_frequency(self.pinNumber, 200)
+        self.pi.set_PWM_dutycycle(self.pinNumber, 0)
+
+    def outputPatterns(self):
+        return [(self.uri, ROOM['brightness'], None)]
+    
+    def sendOutput(self, statements):
+        assert len(statements) == 1
+        assert statements[0][:2] == (self.uri, ROOM['brightness'])
+        v = int(float(statements[0][2]) * 255)
+        self.pi.set_PWM_dutycycle(self.pinNumber, v)
+        
+    def outputWidgets(self):
+        return [{
+            'element': 'output-slider',
+            'min': 0,
+            'max': 1,
+            'step': 1 / 255,
+            'subj': self.uri,
+            'pred': ROOM['brightness'],
+        }]
+
+        
 @register
 class OnboardTemperature(DeviceType):
     deviceType = ROOM['OnboardTemperature']