From f311ec677c8eaceccff033170fe339959d06142e Mon Sep 17 00:00:00 2001 From: Markus Martini Date: Fri, 13 Jan 2017 22:39:02 +0100 Subject: [PATCH] * set new application properties * door switch controller added --- deb/src/deb/etc/application.properties | 20 ++++++++++++- .../GpioControllerConfiguration.java | 11 ++++++- .../configuration/RootConfiguration.java | 19 ++++++++++-- .../chameleon/rest/DoorSwitchController.java | 30 +++++++++++++++++++ .../happy/chameleon/rest/RelayController.java | 3 -- 5 files changed, 75 insertions(+), 8 deletions(-) create mode 100644 jar/src/main/java/de/ck35/raspberry/happy/chameleon/rest/DoorSwitchController.java diff --git a/deb/src/deb/etc/application.properties b/deb/src/deb/etc/application.properties index bb8abd0..a9e539b 100644 --- a/deb/src/deb/etc/application.properties +++ b/deb/src/deb/etc/application.properties @@ -5,4 +5,22 @@ logging.level.org.apache.catalina=INFO logging.path=/var/log/${application.name} -my_first_switch.pin=GPIO 1 \ No newline at end of file +my_first_switch.pin=GPIO 1 + +# DHT +gpio.dht_22.above=GPIO 7 +gpio.dht_22.below=GPIO 0 + +# door switch +gpio.switch.left=GPIO 10 +gpio.switch.right=GPIO 11 + +# Relay board +gpio.relay_board.relay1=GPIO 1 +gpio.relay_board.relay2=GPIO 2 +gpio.relay_board.relay3=GPIO 3 +gpio.relay_board.relay4=GPIO 4 +gpio.relay_board.relay5=GPIO 5 +gpio.relay_board.relay6=GPIO 6 +gpio.relay_board.relay7=GPIO 25 +gpio.relay_board.relay8=GPIO 27 diff --git a/jar/src/main/java/de/ck35/raspberry/happy/chameleon/configuration/GpioControllerConfiguration.java b/jar/src/main/java/de/ck35/raspberry/happy/chameleon/configuration/GpioControllerConfiguration.java index d7fb06f..df8edac 100644 --- a/jar/src/main/java/de/ck35/raspberry/happy/chameleon/configuration/GpioControllerConfiguration.java +++ b/jar/src/main/java/de/ck35/raspberry/happy/chameleon/configuration/GpioControllerConfiguration.java @@ -7,7 +7,9 @@ import com.pi4j.io.gpio.GpioController; import com.pi4j.io.gpio.GpioFactory; +import com.pi4j.io.gpio.GpioPinDigitalInput; import com.pi4j.io.gpio.GpioPinDigitalOutput; +import com.pi4j.io.gpio.PinPullResistance; import com.pi4j.io.gpio.PinState; import com.pi4j.io.gpio.RaspiPin; @@ -32,7 +34,14 @@ public DHTSensor dhtSensor() { @Bean public GpioPinDigitalOutput myFirstSwitch() { return gpioController().provisionDigitalOutputPin( - RaspiPin.getPinByName(env.getRequiredProperty("my_first_switch.pin")), "RelayTest", PinState.HIGH); + RaspiPin.getPinByName(env.getRequiredProperty("gpio.relay_board.relay1")), "Relay One", PinState.LOW); } + @Bean + public GpioPinDigitalInput myDoorSwitch() { + return gpioController() + .provisionDigitalInputPin(RaspiPin.getPinByName(env.getRequiredProperty("gpio.switch.left")), + "Button Left", PinPullResistance.PULL_UP); + } + } \ No newline at end of file diff --git a/jar/src/main/java/de/ck35/raspberry/happy/chameleon/configuration/RootConfiguration.java b/jar/src/main/java/de/ck35/raspberry/happy/chameleon/configuration/RootConfiguration.java index 6d3b325..ec638f7 100644 --- a/jar/src/main/java/de/ck35/raspberry/happy/chameleon/configuration/RootConfiguration.java +++ b/jar/src/main/java/de/ck35/raspberry/happy/chameleon/configuration/RootConfiguration.java @@ -6,9 +6,11 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; +import com.pi4j.io.gpio.GpioPinDigitalInput; import com.pi4j.io.gpio.GpioPinDigitalOutput; import de.ck35.raspberry.happy.chameleon.rest.DHTSensorController; +import de.ck35.raspberry.happy.chameleon.rest.DoorSwitchController; import de.ck35.raspberry.happy.chameleon.rest.RelayController; import de.ck35.raspberry.sensors.temperature.DHTSensor; @@ -17,8 +19,14 @@ @Import({ GpioControllerConfiguration.class }) public class RootConfiguration { - @Autowired DHTSensor dhtSensor; - @Autowired GpioPinDigitalOutput myFirstSwitch; + @Autowired + DHTSensor dhtSensor; + + @Autowired + GpioPinDigitalOutput myFirstRelay; + + @Autowired + GpioPinDigitalInput myDoorSwitch; @Bean public DHTSensorController helloWorldController() { @@ -27,7 +35,12 @@ public DHTSensorController helloWorldController() { @Bean public RelayController helloRelay() { - return new RelayController(myFirstSwitch); + return new RelayController(myFirstRelay); + } + + @Bean + public DoorSwitchController helloDoor() { + return new DoorSwitchController(myDoorSwitch); } } \ No newline at end of file diff --git a/jar/src/main/java/de/ck35/raspberry/happy/chameleon/rest/DoorSwitchController.java b/jar/src/main/java/de/ck35/raspberry/happy/chameleon/rest/DoorSwitchController.java new file mode 100644 index 0000000..6387f0a --- /dev/null +++ b/jar/src/main/java/de/ck35/raspberry/happy/chameleon/rest/DoorSwitchController.java @@ -0,0 +1,30 @@ +package de.ck35.raspberry.happy.chameleon.rest; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.pi4j.io.gpio.GpioPinDigitalInput; +import com.pi4j.io.gpio.PinState; + +@RestController +@RequestMapping("/door") +public class DoorSwitchController { + + private final GpioPinDigitalInput myDoorSwitch; + + public DoorSwitchController(GpioPinDigitalInput myDoorSwitch) { + this.myDoorSwitch = myDoorSwitch; + } + + @RequestMapping("/status") + public String status() { + PinState ps = myDoorSwitch.getState(); + + if (myDoorSwitch.isHigh()) { + // Door is open + } + + return "Door status is: " + ps.getName(); + } + +} diff --git a/jar/src/main/java/de/ck35/raspberry/happy/chameleon/rest/RelayController.java b/jar/src/main/java/de/ck35/raspberry/happy/chameleon/rest/RelayController.java index b9f07dc..8867c68 100644 --- a/jar/src/main/java/de/ck35/raspberry/happy/chameleon/rest/RelayController.java +++ b/jar/src/main/java/de/ck35/raspberry/happy/chameleon/rest/RelayController.java @@ -14,9 +14,6 @@ public class RelayController { public RelayController(GpioPinDigitalOutput myFirstSwitch) { this.myFirstSwitch = myFirstSwitch; - - // When starting, disable the relay for security - this.myFirstSwitch.low(); } @RequestMapping("/on")