From 4ee2501ff864b8e15202ee814e8bafcc0c2adf6c Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Tue, 24 Feb 2015 02:32:10 +0000 Subject: [PATCH] moved raspberry and router gpio to pi_as_powerwitch on github --- raspberrypi_gpio_relay_licht/index.html | 218 -------------- raspberrypi_gpio_relay_licht/indexz.html | 218 -------------- raspberrypi_gpio_relay_licht/move_lights.sh | 2 - raspberrypi_gpio_relay_licht/rc.local | 41 --- raspberrypi_gpio_relay_licht/realraumsimpel.png | Bin 10572 -> 0 bytes raspberrypi_gpio_relay_licht/realraumsimpelz.png | Bin 17426 -> 0 bytes raspberrypi_gpio_relay_licht/stuff.py | 348 ---------------------- raspberrypi_gpio_relay_licht/style.css | 70 ----- raspberrypi_gpio_relay_licht/stylez.css | 70 ----- raspberrypi_gpio_relay_licht/switch.html | 5 - router_gpio_relay_licht/mswitch.cgi | 60 ---- router_gpio_relay_licht/rc.local | 14 - router_gpio_relay_licht/switch.cgi | 248 --------------- 13 files changed, 1294 deletions(-) delete mode 100644 raspberrypi_gpio_relay_licht/index.html delete mode 100755 raspberrypi_gpio_relay_licht/indexz.html delete mode 100644 raspberrypi_gpio_relay_licht/move_lights.sh delete mode 100644 raspberrypi_gpio_relay_licht/rc.local delete mode 100755 raspberrypi_gpio_relay_licht/realraumsimpel.png delete mode 100755 raspberrypi_gpio_relay_licht/realraumsimpelz.png delete mode 100755 raspberrypi_gpio_relay_licht/stuff.py delete mode 100755 raspberrypi_gpio_relay_licht/style.css delete mode 100755 raspberrypi_gpio_relay_licht/stylez.css delete mode 100644 raspberrypi_gpio_relay_licht/switch.html delete mode 100755 router_gpio_relay_licht/mswitch.cgi delete mode 100644 router_gpio_relay_licht/rc.local delete mode 100755 router_gpio_relay_licht/switch.cgi diff --git a/raspberrypi_gpio_relay_licht/index.html b/raspberrypi_gpio_relay_licht/index.html deleted file mode 100644 index 55f7c1b..0000000 --- a/raspberrypi_gpio_relay_licht/index.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - - - - -
Link to ALL switches
-
-
-
-
-
-
- - diff --git a/raspberrypi_gpio_relay_licht/indexz.html b/raspberrypi_gpio_relay_licht/indexz.html deleted file mode 100755 index fa03ef3..0000000 --- a/raspberrypi_gpio_relay_licht/indexz.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - - - - -
-
-
-
-
-
- - - diff --git a/raspberrypi_gpio_relay_licht/move_lights.sh b/raspberrypi_gpio_relay_licht/move_lights.sh deleted file mode 100644 index cf7b075..0000000 --- a/raspberrypi_gpio_relay_licht/move_lights.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -curl 'http://licht.realraum.at/cgi-bin/mswitch.cgi?ceiling1=1&ceiling2=0&ceiling3=0&ceiling4=0&ceiling5=0&ceiling6=0'; sleep 3; curl 'http://licht.realraum.at/cgi-bin/mswitch.cgi?ceiling1=1&ceiling2=1&ceiling3=0&ceiling4=0&ceiling5=0&ceiling6=0'; sleep 3; curl 'http://licht.realraum.at/cgi-bin/mswitch.cgi?ceiling1=0&ceiling2=1&ceiling3=0&ceiling4=1&ceiling5=0&ceiling6=0'; sleep 3; curl 'http://licht.realraum.at/cgi-bin/mswitch.cgi?ceiling1=0&ceiling2=0&ceiling3=1&ceiling4=1&ceiling5=0&ceiling6=0'; sleep 3; curl 'http://licht.realraum.at/cgi-bin/mswitch.cgi?ceiling1=0&ceiling2=0&ceiling3=1&ceiling4=0&ceiling5=1&ceiling6=0'; sleep 3; curl 'http://licht.realraum.at/cgi-bin/mswitch.cgi?ceiling1=0&ceiling2=0&ceiling3=0&ceiling4=0&ceiling5=1&ceiling6=1'; sleep 3; curl 'http://licht.realraum.at/cgi-bin/mswitch.cgi?ceiling1=0&ceiling2=0&ceiling3=0&ceiling4=0&ceiling5=0&ceiling6=1'; sleep 3; curl 'http://licht.realraum.at/cgi-bin/mswitch.cgi?ceiling1=0&ceiling2=0&ceiling3=0&ceiling4=0&ceiling5=0&ceiling6=0'; diff --git a/raspberrypi_gpio_relay_licht/rc.local b/raspberrypi_gpio_relay_licht/rc.local deleted file mode 100644 index 33672c7..0000000 --- a/raspberrypi_gpio_relay_licht/rc.local +++ /dev/null @@ -1,41 +0,0 @@ -#! /bin/sh -### BEGIN INIT INFO -# Provides: rc.local -# Required-Start: $all -# Required-Stop: -# Default-Start: 2 3 4 5 -# Default-Stop: -# Short-Description: Run /etc/rc.local if it exist -### END INIT INFO - - -PATH=/sbin:/usr/sbin:/bin:/usr/bin - -. /lib/init/vars.sh -. /lib/lsb/init-functions - -do_start() { - if [ -x /etc/rc.local ]; then - [ "$VERBOSE" != no ] && log_begin_msg "Running local boot scripts (/etc/rc.local)" - /etc/rc.local - ES=$? - [ "$VERBOSE" != no ] && log_end_msg $ES - return $ES - fi -} - -case "$1" in - start) - do_start - ;; - restart|reload|force-reload) - echo "Error: argument '$1' not supported" >&2 - exit 3 - ;; - stop) - ;; - *) - echo "Usage: $0 start|stop" >&2 - exit 3 - ;; -esac diff --git a/raspberrypi_gpio_relay_licht/realraumsimpel.png b/raspberrypi_gpio_relay_licht/realraumsimpel.png deleted file mode 100755 index 0b9cbb1507d619a1a7806177fb2994ac3bfa5135..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10572 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 V3MXsqK@39_WmRwI{`T;X{{lCj?Z^NC diff --git a/raspberrypi_gpio_relay_licht/realraumsimpelz.png b/raspberrypi_gpio_relay_licht/realraumsimpelz.png deleted file mode 100755 index 38e29040c48ede1d3f3e0f5ce579f332d0d21561..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17426 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 ephemobs.previous_setting(ephemsun) and ephemobs.date < ephemobs.next_rising(ephemsun) - - -class UWSConfig: - def __init__(self,configfile=None): - self.configfile=configfile - self.config_parser=ConfigParser.ConfigParser() - #make option variable names case sensitive - self.config_parser.optionxform = str - self.config_parser.add_section('debug') - self.config_parser.set('debug','enabled',"False") - self.config_parser.add_section('broker') - self.config_parser.set('broker','uri',"tcp://torwaechter.realraum.at:4244") - self.config_parser.add_section('tracker') - self.config_parser.set('tracker','secs_movement_before_presence_to_launch_event','1') - self.config_parser.set('tracker','secs_presence_before_movement_to_launch_event','120') - self.config_mtime=0 - if not self.configfile is None: - try: - cf_handle = open(self.configfile,"r") - cf_handle.close() - except IOError: - self.writeConfigFile() - else: - self.checkConfigUpdates() - - def checkConfigUpdates(self): - global logger - if self.configfile is None: - return - logging.debug("Checking Configfile mtime: "+self.configfile) - try: - mtime = os.path.getmtime(self.configfile) - except (IOError,OSError): - return - if self.config_mtime < mtime: - logging.debug("Reading Configfile") - try: - self.config_parser.read(self.configfile) - self.config_mtime=os.path.getmtime(self.configfile) - except (ConfigParser.ParsingError, IOError), pe_ex: - logging.error("Error parsing Configfile: "+str(pe_ex)) - if self.config_parser.get('debug','enabled') == "True": - logger.setLevel(logging.DEBUG) - else: - logger.setLevel(logging.INFO) - - def writeConfigFile(self): - if self.configfile is None: - return - logging.debug("Writing Configfile "+self.configfile) - try: - cf_handle = open(self.configfile,"w") - self.config_parser.write(cf_handle) - cf_handle.close() - self.config_mtime=os.path.getmtime(self.configfile) - except IOError, io_ex: - logging.error("Error writing Configfile: "+str(io_ex)) - self.configfile=None - - def getValue(self, name): - underscore_pos=name.find('_') - if underscore_pos < 0: - raise AttributeError - return self.getSectionValue(name[0:underscore_pos], name[underscore_pos+1:]) - - def getSectionValue(self, section, name): - try: - return self.config_parser.get(section,name) - except (ConfigParser.NoOptionError, ConfigParser.NoSectionError): - return None - - def __getattr__(self, name): - underscore_pos=name.find('_') - if underscore_pos < 0: - raise AttributeError - try: - return self.config_parser.get(name[0:underscore_pos], name[underscore_pos+1:]) - except (ConfigParser.NoOptionError, ConfigParser.NoSectionError): - raise AttributeError - - -def runRandomAction(action_list,user,args=[]): - if not type(action_list) == types.ListType: - raise ValueError("runRandomAction: action_list must be a list") - return executeAction(random.choice(action_list),user,args) - -def runRemoteCommand(remote_host,remote_shell,user,args=[]): - global sshp,uwscfg - sshp = None - try: - cmd = "ssh -i /flash/tuer/id_rsa -o PasswordAuthentication=no -o StrictHostKeyChecking=no %RHOST% %RSHELL%" - cmd = cmd.replace("%RHOST%",remote_host).replace("%RSHELL%",remote_shell).replace("%ARG%", " ".join(args)).replace("%USER%", user) - logging.debug("runRemoteCommand: Executing: "+cmd) - sshp = subprocess.Popen(cmd.split(" "), bufsize=1024, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=False) - logging.debug("runRemoteCommand: pid %d: running=%d" % (sshp.pid,sshp.poll() is None)) - if not sshp.poll() is None: - logging.error("runRemoteCommand: subprocess %d not started ?, returncode: %d" % (sshp.pid,sshp.returncode)) - return False - return True - except Exception, ex: - logging.error("runRemoteCommand: "+str(ex)) - traceback.print_exc(file=sys.stdout) - if not sshp is None and sshp.poll() is None: - if sys.hexversion >= 0x020600F0: - sshp.terminate() - else: - subprocess.call(["kill",str(sshp.pid)]) - time.sleep(1.5) - if sshp.poll() is None: - logging.error("runRemoteCommand: subprocess still alive, sending SIGKILL to pid %d" % (sshp.pid)) - if sys.hexversion >= 0x020600F0: - sshp.kill() - else: - subprocess.call(["kill","-9",str(sshp.pid)]) - time.sleep(5) - return False - -def runShellCommand(cmd,ptimeout,stdinput,user,args=[]): - global uwscfg - cmd = cmd.replace("%ARG%"," ".join(args)).replace("%USER%", user) - if ptimeout is None or float(ptimeout) > 45: - ptimeout = 45 - else: - ptimeout = int(float(ptimeout)) - popenTimeout2(cmd,stdinput,ptimeout=ptimeout) - -def executeAction(action_name, user, args=[]): - if action_name is None: - logging.error("executeAction: action_name is None") - return False - action_type = uwscfg.getValue(action_name+"_type") - if action_type is None: - logging.error("executeAction: action %s not found or has no type" % action_name) - return False - action_delay=uwscfg.getValue(action_name+"_delay") - logging.info("executeAction %s of type %s for user %s with delay %s" % (action_name,action_type,user,action_delay)) - if not action_delay is None: - time.sleep(float(action_delay)) - - action_arg = uwscfg.getValue(action_name+"_arg") - if not action_arg is None: - args += [action_arg] - - #"registered" actions - if action_type == "remotecmd": - return runRemoteCommand(uwscfg.getSectionValue(action_name,"remote_host"), uwscfg.getSectionValue(action_name,"remote_shell"), user=user, args=args) - elif action_type == "shellcmd": - return runShellCommand(cmd=uwscfg.getSectionValue(action_name,"cmd"), ptimeout=uwscfg.getSectionValue(action_name,"timeout"), stdinput=uwscfg.getSectionValue(action_name,"stdinput"), user=user, args=args) - elif action_type == "nothing": - return True - elif action_type == "random": - return runRandomAction(action_list=uwscfg.getSectionValue(action_name,"one_of").split(" "),user=user,args=args) - else: - return executeAction(action_type,user=user,args=args) - -def playThemeOf(user,fallback_default): - global uwscfg - uwscfg.checkConfigUpdates() - if user is None: - user = "" - config=uwscfg.getValue("mapping_"+str(user)) - if config is None: - config=uwscfg.getValue("mapping_"+str(fallback_default)) - logging.debug("playThemeOf: action for user %s: %s" % (user,config)) - executeAction(config,user,[]) - -def popenTimeout1(cmd, pinput, returncode_ok=[0], ptimeout = 20.0, pcheckint = 0.25): - logging.debug("popenTimeout1: starting: " + cmd) - try: - sppoo = subprocess.Popen(cmd, stdin=subprocess.PIPE, shell=True) - sppoo.communicate(input=pinput) - timeout_counter=ptimeout - while timeout_counter > 0: - time.sleep(pcheckint) - timeout_counter -= pcheckint - if not sppoo.poll() is None: - logging.debug("popenTimeout1: subprocess %d finished, returncode: %d" % (sppoo.pid,sppoo.returncode)) - return (sppoo.returncode in returncode_ok) - #timeout reached - logging.error("popenTimeout1: subprocess took too long (>%fs), sending SIGTERM to pid %d" % (ptimeout,sppoo.pid)) - if sys.hexversion >= 0x020600F0: - sppoo.terminate() - else: - subprocess.call(["kill",str(sppoo.pid)]) - time.sleep(1.0) - if sppoo.poll() is None: - logging.error("popenTimeout1: subprocess still alive, sending SIGKILL to pid %d" % (sppoo.pid)) - if sys.hexversion >= 0x020600F0: - sppoo.kill() - else: - subprocess.call(["kill","-9",str(sppoo.pid)]) - return False - except Exception, e: - logging.error("popenTimeout1: "+str(e)) - return False - -def popenTimeout2(cmd, pinput, returncode_ok=[0], ptimeout=21): - logging.debug("popenTimeout2: starting: " + cmd) - try: - sppoo = subprocess.Popen(cmd, stdin=subprocess.PIPE, shell=True) - if sys.hexversion >= 0x020600F0: - old_shandler = signal.signal(signal.SIGALRM,lambda sn,sf: sppoo.kill()) - else: - old_shandler = signal.signal(signal.SIGALRM,lambda sn,sf: os.system("kill -9 %d" % sppoo.pid)) - signal.alarm(ptimeout) #schedule alarm - if not pinput is None: - sppoo.communicate(input=pinput) - sppoo.wait() - signal.alarm(0) #disable pending alarms - signal.signal(signal.SIGALRM, old_shandler) - logging.debug("popenTimeout2: subprocess %d finished, returncode: %d" % (sppoo.pid,sppoo.returncode)) - if sppoo.returncode < 0: - logging.error("popenTimeout2: subprocess took too long (>%ds) and pid %d was killed" % (ptimeout,sppoo.pid)) - return (sppoo.returncode in returncode_ok) - except Exception, e: - logging.error("popenTimeout2: "+str(e)) - try: - signal.signal(signal.SIGALRM, old_shandler) - except: - pass - return False - -def decodeR3Message(multipart_msg): - try: - return (multipart_msg[0], json.loads(multipart_msg[1])) - except Exception, e: - logging.debug("decodeR3Message:"+str(e)) - return ("",{}) - - -def touchURL(url): - try: - f = urllib.urlopen(url) - rq_response = f.read() - logging.debug("touchURL: url: "+url) - #logging.debug("touchURL: Response "+rq_response) - f.close() - return rq_response - except Exception, e: - logging.error("touchURL: "+str(e)) - - -def exitHandler(signum, frame): - logging.info("stopping") - try: - zmqsub.close() - zmqctx.destroy() - except: - pass - sys.exit(0) - -#signals proapbly don't work because of readline -#signal.signal(signal.SIGTERM, exitHandler) -signal.signal(signal.SIGINT, exitHandler) -signal.signal(signal.SIGQUIT, exitHandler) - -logging.info("Door Status Listener 'PlaySound' started") - -if len(sys.argv) > 1: - uwscfg = UWSConfig(sys.argv[1]) -else: - uwscfg = UWSConfig() - -while True: - try: - #Start zmq connection to publish / forward sensor data - zmqctx = zmq.Context() - zmqctx.linger = 0 - zmqsub = zmqctx.socket(zmq.SUB) - zmqsub.setsockopt(zmq.SUBSCRIBE, "DoorCommandEvent") - zmqsub.setsockopt(zmq.SUBSCRIBE, "PresenceUpdate") - zmqsub.setsockopt(zmq.SUBSCRIBE, "BoreDoomButtonPressEvent") -# zmqsub.setsockopt(zmq.SUBSCRIBE, "MovementSensorUpdate") - zmqsub.setsockopt(zmq.SUBSCRIBE, "DoorAjarUpdate") - zmqsub.setsockopt(zmq.SUBSCRIBE, "DoorProblemEvent") - zmqsub.connect(uwscfg.broker_uri) - - last_status=None - last_user=None - unixts_panic_button=None - unixts_last_movement=0 - unixts_last_presence=0 - while True: - data = zmqsub.recv_multipart() - (structname, dictdata) = decodeR3Message(data) - logging.debug("Got data: " + structname + ":"+ str(dictdata)) - - #uwscfg.checkConfigUpdates() - - if structname == "PresenceUpdate" and "Present" in dictdata: - if dictdata["Present"] and last_status != dictdata["Present"]: - #someone just arrived - if isTheSunDown(): - touchURL("http://slug.realraum.at/cgi-bin/switch.cgi?id=mashadecke&power=on") - touchURL("http://localhost/cgi-bin/mswitch.cgi?ceiling3=1&ceiling4=1") - touchURL("http://slug.realraum.at/cgi-bin/switch.cgi?id=couchred&power=on") - touchURL("http://slug.realraum.at/cgi-bin/switch.cgi?id=bluebar&power=on") - last_status=dictdata["Present"] - if not last_status: - #everybody left - touchURL("http://localhost/cgi-bin/mswitch.cgi?ceiling1=0&ceiling2=0&ceiling3=0&ceiling4=0&ceiling5=0&ceiling6=0") - touchURL("http://slug.realraum.at/cgi-bin/switch.cgi?id=all&power=off") - continue - - except Exception, ex: - logging.error("main: "+str(ex)) - traceback.print_exc(file=sys.stdout) - try: - zmqsub.close() - zmqctx.destroy() - except: - pass - time.sleep(5) diff --git a/raspberrypi_gpio_relay_licht/style.css b/raspberrypi_gpio_relay_licht/style.css deleted file mode 100755 index 2560904..0000000 --- a/raspberrypi_gpio_relay_licht/style.css +++ /dev/null @@ -1,70 +0,0 @@ -body -{ - background-image:url("./realraumsimpel.png"); - background-repeat:no-repeat; -} - -#pc1 -{ - background-color:#f00; -} -.pc1 -{ - position:absolute; - height:122px; - width:122px; - top:370px; - left:697px; - background-color:#f00; - z-index:20; -} -.pc2 -{ - position:absolute; - height:122px; - width:122px; - top:142px; - left:697px; - background-color:#f00; - z-index:20; -} -.pc3 -{ - position:absolute; - height:122px; - width:122px; - top:370px; - left:402px; - background-color:#f00; - z-index:20; -} -.pc4 -{ - position:absolute; - height:122px; - width:122px; - top:142px; - left:402px; - background-color:#f00; - z-index:20; -} -.pc5 -{ - position:absolute; - height:122px; - width:122px; - top:370px; - left:127px; - background-color:#f00; - z-index:20; -} -.pc6 -{ - position:absolute; - height:122px; - width:122px; - top:142px; - left:127px; - background-color:#f00; - z-index:20; -} diff --git a/raspberrypi_gpio_relay_licht/stylez.css b/raspberrypi_gpio_relay_licht/stylez.css deleted file mode 100755 index 96a87fb..0000000 --- a/raspberrypi_gpio_relay_licht/stylez.css +++ /dev/null @@ -1,70 +0,0 @@ -body -{ - background-image:url("./realraumsimpelz.png"); - background-repeat:no-repeat; -} - -#pc1 -{ - background-color:#f00; -} -.pc1 -{ - position:absolute; - height:122px; - width:122px; - top:370px; - left:697px; - background-color:#f00; - z-index:20; -} -.pc2 -{ - position:absolute; - height:122px; - width:122px; - top:142px; - left:697px; - background-color:#f00; - z-index:20; -} -.pc3 -{ - position:absolute; - height:122px; - width:122px; - top:370px; - left:402px; - background-color:#f00; - z-index:20; -} -.pc4 -{ - position:absolute; - height:122px; - width:122px; - top:142px; - left:402px; - background-color:#f00; - z-index:20; -} -.pc5 -{ - position:absolute; - height:122px; - width:122px; - top:370px; - left:127px; - background-color:#f00; - z-index:20; -} -.pc6 -{ - position:absolute; - height:122px; - width:122px; - top:142px; - left:127px; - background-color:#f00; - z-index:20; -} diff --git a/raspberrypi_gpio_relay_licht/switch.html b/raspberrypi_gpio_relay_licht/switch.html deleted file mode 100644 index 5bf1fba..0000000 --- a/raspberrypi_gpio_relay_licht/switch.html +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/router_gpio_relay_licht/mswitch.cgi b/router_gpio_relay_licht/mswitch.cgi deleted file mode 100755 index c389c38..0000000 --- a/router_gpio_relay_licht/mswitch.cgi +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/sh - -VALID_ONOFF_IDS="7 18 20" -GPIOPATH=/sys/class/gpio/gpio - -for QUERY in `echo $QUERY_STRING | tr '&' ' '`; do - for VALIDID in $VALID_ONOFF_IDS; do - if [ "$QUERY" == "$VALIDID=1" ]; then - eval "GPIO_$VALIDID"=1 - elif [ "$QUERY" == "$VALIDID=0" ]; then - eval "GPIO_$VALIDID=0" - elif [ "$QUERY" == "$VALIDID=q" ]; then - eval "GPIO_$VALIDID=q" - fi - done - if [ "$QUERY" == "mobile=1" ]; then - MOBILE='1' - NOFLOAT='1' - elif [ "$QUERY" == "nofloat=1" ]; then - NOFLOAT='1' - fi -done - - -print_gpio_state() { - GPIOVALUE=$(cat "${GPIOPATH}${1}/value") - if [ "$GPIOVALUE" = "1" ]; then - echo -n "true" - else - echo -n "false" - fi -} - -gpio_is_on() { - GPIOVALUE=$(cat "${GPIOPATH}${1}/value") - [ "$GPIOVALUE" = "1" ] -} - -echo "Content-type: text/html" -echo "" - -echo "{" -for CHECKID in $VALID_ONOFF_IDS; do - VAL="" - VAL="$(eval echo \$GPIO_$CHECKID)" - if [ $VAL == 1 -o $VAL == 0 ]; then - echo "$VAL" > "${GPIOPATH}${CHECKID}/value" - fi - echo -n "\"$CHECKID\":" - print_gpio_state $CHECKID - echo "," -done -echo "\"-1\":false}" -# echo "" -# echo "" -# echo "Realraum Relay Switch" -# echo '' -# echo "" -# exit 0 - diff --git a/router_gpio_relay_licht/rc.local b/router_gpio_relay_licht/rc.local deleted file mode 100644 index 4978362..0000000 --- a/router_gpio_relay_licht/rc.local +++ /dev/null @@ -1,14 +0,0 @@ -# Put your custom commands here that should be executed once -# the system init finished. By default this file does nothing. - -rmmod gpio_button_hotplug -echo 7 > /sys/class/gpio/export -echo 18 > /sys/class/gpio/export -echo 20 > /sys/class/gpio/export -echo 29 > /sys/class/gpio/export -echo out > /sys/class/gpio/gpio7/direction -echo out > /sys/class/gpio/gpio18/direction -echo out > /sys/class/gpio/gpio20/direction -echo out > /sys/class/gpio/gpio29/direction - -exit 0 diff --git a/router_gpio_relay_licht/switch.cgi b/router_gpio_relay_licht/switch.cgi deleted file mode 100755 index 01dce98..0000000 --- a/router_gpio_relay_licht/switch.cgi +++ /dev/null @@ -1,248 +0,0 @@ -#!/bin/sh - -for QUERY in `echo $QUERY_STRING | tr '&' ' '`; do - for VALUE in `echo $QUERY | tr '=' ' '`; do - if [ "$VALUE" == "id" ]; then - ID='?' - elif [ "$ID" == "?" ]; then - ID=$VALUE - elif [ "$VALUE" == "power" ]; then - POWER='?' - elif [ "$POWER" == "?" ]; then - POWER=$VALUE - elif [ "$VALUE" == "mobile" ]; then - MOBILE='1' - NOFLOAT='1' - elif [ "$VALUE" == "nofloat" ]; then - NOFLOAT='1' - fi - i=$i+1 - done -done - - -GPIOPATH=/sys/class/gpio/gpio -#VALID_ONOFF_IDS="7 18 20 29" -VALID_ONOFF_IDS="7 18 20" -VALID_SEND_IDS="" - -print_gpio_state() { - GPIOVALUE=$(cat "${GPIOPATH}${1}/value") - if [ "$GPIOVALUE" = "1" ]; then - echo "ON" - else - echo "Off" - fi -} - -gpio_is_on() { - GPIOVALUE=$(cat "${GPIOPATH}${1}/value") - [ "$GPIOVALUE" = "1" ] -} - -if [ "$POWER" == "1" -o "$POWER" == "0" ]; then - for CHECKID in $VALID_ONOFF_IDS ; do - if [ "$CHECKID" == "$ID" ]; then - echo "$POWER" > "${GPIOPATH}${ID}/value" - echo "Content-type: text/html" - echo "" - echo "" - echo "" - echo "Realraum Relay Switch" - echo '' - echo "" - exit 0 - fi - done -fi - -DESC_7="Decke Links Vorne" -DESC_20="Decke Rechts Vorne" -DESC_18="Decke Rechts Mitte" -#DESC_29="GPIO Nicht Belegt" - -echo "Content-type: text/html" -echo "" -echo "" -echo "" -echo "Realraum Relay Power" -echo '' -echo '' -echo "" -echo "" -#echo "

Realraum rf433ctl

" -#echo "
" -echo "
" -echo "
" -for DISPID in $VALID_ONOFF_IDS; do - NAME="$(eval echo -n \$DESC_$DISPID)" - [ -z "$NAME" ] && NAME=$DISPID - - echo "
" - echo "" - if gpio_is_on $DISPID; then - echo " " - echo " " - else - echo " " - echo " " - fi - echo "" - echo -n "
$NAME
" -# echo -n "
$NAME (" -# print_gpio_state $DISPID -# echo ")
" - echo "
" - - if [ "$NOFLOAT" == "1" ]; then - echo "
" - fi -done - -echo "
" -echo "" -echo -n " " -echo -n " " -echo "" -echo -n "
Alle
" -echo "
" -if [ "$NOFLOAT" == "1" ]; then - echo "
" -fi -echo "
" - -if [ "$MOBILE" != "1" -a -n "$VALID_SEND_IDS" ]; then - -echo "
" - -ITEMCOUNT=0 - -for DISPID in $VALID_SEND_IDS; do - ITEMCOUNT=$((ITEMCOUNT+1)) - NAME="$(eval echo \$DESC_$DISPID)" - [ -z "$NAME" ] && NAME=$DISPID - - echo "
" - echo "" - echo " " - echo "" - echo "
$NAME
" - echo "
" - if [ "$NOFLOAT" == "1" -a $((ITEMCOUNT % 2 )) -ne 1 ]; then - echo "
" - fi - -done -echo "
" -fi -echo "
" -echo "" -echo "" -- 1.7.10.4