|
- # -*- coding: utf-8 -*-
- import time
-
- from modules import cbpi
- from modules.core.hardware import ActorBase, SensorPassive, SensorActive
- from modules.core.props import Property
-
- try:
- import RPi.GPIO as GPIO
-
- GPIO.setmode(GPIO.BCM)
- except Exception as e:
- print e
- pass
-
-
-
- @cbpi.actor
- class GPIOSimple(ActorBase):
-
- gpio = Property.Select("GPIO", options=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27], description="GPIO to which the actor is connected")
-
- def init(self):
- GPIO.setup(int(self.gpio), GPIO.OUT)
- GPIO.output(int(self.gpio), 0)
-
- def on(self, power=0):
- print "GPIO ON %s" % str(self.gpio)
- GPIO.output(int(self.gpio), 1)
-
- def off(self):
- print "GPIO OFF"
- GPIO.output(int(self.gpio), 0)
-
- @cbpi.actor
- class GPIOPWM(ActorBase):
-
- gpio = Property.Select("GPIO", options=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27], description="GPIO to which the actor is connected")
- frequency = Property.Number("Frequency (Hz)", configurable=True)
-
- p = None
- power = 100 # duty cycle
-
- def init(self):
- GPIO.setup(int(self.gpio), GPIO.OUT)
- GPIO.output(int(self.gpio), 0)
- if self.frequency is None:
- self.frequency = 0.5 # 2 sec
-
- self.p = GPIO.PWM(int(self.gpio), float(self.frequency))
-
-
- def on(self, power=None):
- if power is not None:
- self.power = int(power)
- print "GPIO ON"
- self.p.start(int(self.power))
-
- def set_power(self, power):
- '''
- Optional: Set the power of your actor
- :param power: int value between 0 - 100
- :return:
- '''
- if power is not None:
- self.power = int(power)
- self.p.ChangeDutyCycle(self.power)
-
- def off(self):
- print "GPIO OFF"
- self.p.stop()
-
-
- @cbpi.actor
- class RelayBoard(ActorBase):
-
- gpio = Property.Select("GPIO", options=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27], description="GPIO to which the actor is connected")
-
- def init(self):
- GPIO.setup(int(self.gpio), GPIO.OUT)
- GPIO.output(int(self.gpio), 1)
-
- def on(self, power=0):
-
- GPIO.output(int(self.gpio), 0)
-
- def off(self):
-
- GPIO.output(int(self.gpio), 1)
-
- @cbpi.actor
- class Dummy(ActorBase):
-
-
- def on(self, power=100):
- '''
- Code to switch on the actor
- :param power: int value between 0 - 100
- :return:
- '''
- print "ON"
-
- def off(self):
- print "OFF"
-
-
|