first commit
This commit is contained in:
		
						commit
						1b5b613175
					
				
							
								
								
									
										31
									
								
								README.md
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										31
									
								
								README.md
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
  Telecommande Domotique
 | 
			
		||||
===========================
 | 
			
		||||
<img src="http://xavier.debert.free.fr/telecom/relais.jpg" width="50%"><img src="http://xavier.debert.free.fr/telecom/schema_funduino_keyes.jpg" width="50%"><img src="http://xavier.debert.free.fr/telecom/funduino_keyes_8_prises.jpg" width="50%">
 | 
			
		||||
## Pre-requis 
 | 
			
		||||
 | 
			
		||||
sudo apt-get install rpi.gpio
 | 
			
		||||
 | 
			
		||||
ou en manuel
 | 
			
		||||
 | 
			
		||||
wget https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.5.11.tar.gz
 | 
			
		||||
tar -xvf RPi.GPIO-0.5.11.tar.gz
 | 
			
		||||
cd RPi.GPIO-0.5.11
 | 
			
		||||
sudo python setup.py install
 | 
			
		||||
 | 
			
		||||
## 1) Installation 
 | 
			
		||||
 | 
			
		||||
dans /home/pi
 | 
			
		||||
des fichiers index.html gohttp.py et relay.py et favicon.ico
 | 
			
		||||
 | 
			
		||||
## 2) demarrage auto 
 | 
			
		||||
 | 
			
		||||
editer dans /etc
 | 
			
		||||
le rc.local
 | 
			
		||||
ajouter en fin avant exit
 | 
			
		||||
 | 
			
		||||
#gestion Relay a 0
 | 
			
		||||
./home/pi/relay.py power 1
 | 
			
		||||
gohttp.sh
 | 
			
		||||
 | 
			
		||||
faire un reboot
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								favicon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								favicon.ico
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 2.2 KiB  | 
							
								
								
									
										203
									
								
								gohttp.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										203
									
								
								gohttp.py
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,203 @@
 | 
			
		|||
#!/usr/bin/env python3
 | 
			
		||||
"""
 | 
			
		||||
Very simple HTTP server in python for logging requests
 | 
			
		||||
Usage::
 | 
			
		||||
    ./server.py [<port>]
 | 
			
		||||
"""
 | 
			
		||||
import RPi.GPIO as GPIO
 | 
			
		||||
import http.server
 | 
			
		||||
import socketserver
 | 
			
		||||
import logging
 | 
			
		||||
import sys
 | 
			
		||||
import os
 | 
			
		||||
import subprocess
 | 
			
		||||
import cgi
 | 
			
		||||
import time
 | 
			
		||||
GPIO.setwarnings(False)
 | 
			
		||||
os.system('pkill -9 httpd')
 | 
			
		||||
GPIO.setmode(GPIO.BCM)
 | 
			
		||||
pinList = [2, 3, 4, 17]
 | 
			
		||||
SleepTimeL=10
 | 
			
		||||
 | 
			
		||||
class S(http.server.SimpleHTTPRequestHandler):
 | 
			
		||||
    
 | 
			
		||||
    def do_GET(self):
 | 
			
		||||
        
 | 
			
		||||
        GPIO.setup(pinList[0], GPIO.OUT)
 | 
			
		||||
        status0=int(GPIO.input(pinList[0]))
 | 
			
		||||
        GPIO.setup(pinList[1], GPIO.OUT)
 | 
			
		||||
        status1=int(GPIO.input(pinList[1]))
 | 
			
		||||
        GPIO.setup(pinList[2], GPIO.OUT)
 | 
			
		||||
        status2=int(GPIO.input(pinList[2]))
 | 
			
		||||
        GPIO.setup(pinList[3], GPIO.OUT)
 | 
			
		||||
        status3=int(GPIO.input(pinList[3]))
 | 
			
		||||
        #logging.info("GET request,\nPath: %s\nHeaders:\n%s\n", str(self.path), str(self.headers))
 | 
			
		||||
 | 
			
		||||
        self._set_response()
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    def do_POST(self):
 | 
			
		||||
        content_length = int(self.headers['Content-Length']) # <--- Gets the size of data
 | 
			
		||||
        post_data = self.rfile.read(content_length) # <--- Gets the data itself
 | 
			
		||||
        logging.info("POST request,\nPath: %s\nHeaders:\n%s\n\nBody:\n%s\n",
 | 
			
		||||
                str(self.path), str(self.headers), post_data.decode('utf-8'))
 | 
			
		||||
 | 
			
		||||
        self._set_response()
 | 
			
		||||
        self.wfile.write("POST request for {}".format(self.path).encode('utf-8'))
 | 
			
		||||
 | 
			
		||||
    def _set_response(self):
 | 
			
		||||
        #time.sleep(5)
 | 
			
		||||
        GPIO.setup(pinList[0], GPIO.OUT)
 | 
			
		||||
        status0=int(GPIO.input(pinList[0]))
 | 
			
		||||
        GPIO.setup(pinList[1], GPIO.OUT)
 | 
			
		||||
        status1=int(GPIO.input(pinList[1]))
 | 
			
		||||
        GPIO.setup(pinList[2], GPIO.OUT)
 | 
			
		||||
        status2=int(GPIO.input(pinList[2]))
 | 
			
		||||
        GPIO.setup(pinList[3], GPIO.OUT)
 | 
			
		||||
        status3=int(GPIO.input(pinList[3]))
 | 
			
		||||
 | 
			
		||||
        objParsedPath = str(format(self.path).encode('utf-8'))
 | 
			
		||||
        print ('objParsedPath="'+objParsedPath+'"')
 | 
			
		||||
 | 
			
		||||
        if objParsedPath == "b'/R0'":
 | 
			
		||||
          print ('R0 run')
 | 
			
		||||
          if status0 == 1:
 | 
			
		||||
             os.system('./relay.py open 0')
 | 
			
		||||
          else:
 | 
			
		||||
             os.system('./relay.py close 0')
 | 
			
		||||
             time.sleep(int(SleepTimeL));
 | 
			
		||||
             os.system('./relay.py open 0')
 | 
			
		||||
 | 
			
		||||
        if objParsedPath == "b'/R0O'":
 | 
			
		||||
          print ('R0 run0')
 | 
			
		||||
          if status0 == 1:
 | 
			
		||||
             os.system('./relay.py open 0')
 | 
			
		||||
          else:
 | 
			
		||||
             os.system('./relay.py close 0')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        if objParsedPath == "b'/R1'":
 | 
			
		||||
          print ('R1 run')
 | 
			
		||||
          if status1 == 1:
 | 
			
		||||
             os.system('./relay.py open 1')
 | 
			
		||||
          else:
 | 
			
		||||
             os.system('./relay.py close 1')
 | 
			
		||||
             time.sleep(int(SleepTimeL));
 | 
			
		||||
             os.system('./relay.py open 1')
 | 
			
		||||
 | 
			
		||||
        if objParsedPath == "b'/R1O'":
 | 
			
		||||
          print ('R1 run0')
 | 
			
		||||
          if status1 == 1:
 | 
			
		||||
             os.system('./relay.py open 1')
 | 
			
		||||
          else:
 | 
			
		||||
             os.system('./relay.py close 1')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        if objParsedPath == "b'/R2'":
 | 
			
		||||
          print ('R2 run')
 | 
			
		||||
          if status2 == 1:
 | 
			
		||||
             os.system('./relay.py open 2')
 | 
			
		||||
          else:
 | 
			
		||||
             os.system('./relay.py close 2')
 | 
			
		||||
             time.sleep(int(SleepTimeL));
 | 
			
		||||
             os.system('./relay.py open 2')
 | 
			
		||||
 | 
			
		||||
        if objParsedPath == "b'/R2O'":
 | 
			
		||||
          print ('R2 run0')
 | 
			
		||||
          if status2 == 1:
 | 
			
		||||
             os.system('./relay.py open 2')
 | 
			
		||||
          else:
 | 
			
		||||
             os.system('./relay.py close 2')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        if objParsedPath == "b'/R3'":
 | 
			
		||||
          print ('R3 run')
 | 
			
		||||
          if status3 == 1:
 | 
			
		||||
             os.system('./relay.py open 3')
 | 
			
		||||
          else:
 | 
			
		||||
             os.system('./relay.py close 3')
 | 
			
		||||
             time.sleep(int(SleepTimeL));
 | 
			
		||||
             os.system('./relay.py open 3')
 | 
			
		||||
 | 
			
		||||
        if objParsedPath == "b'/R3O'":
 | 
			
		||||
          print ('R3 run0')
 | 
			
		||||
          if status3 == 1:
 | 
			
		||||
             os.system('./relay.py open 3')
 | 
			
		||||
          else:
 | 
			
		||||
             os.system('./relay.py close 3')
 | 
			
		||||
 | 
			
		||||
        GPIO.setup(pinList[0], GPIO.OUT)
 | 
			
		||||
        status0=int(GPIO.input(pinList[0]))
 | 
			
		||||
        GPIO.setup(pinList[1], GPIO.OUT)
 | 
			
		||||
        status1=int(GPIO.input(pinList[1]))
 | 
			
		||||
        GPIO.setup(pinList[2], GPIO.OUT)
 | 
			
		||||
        status2=int(GPIO.input(pinList[2]))
 | 
			
		||||
        GPIO.setup(pinList[3], GPIO.OUT)
 | 
			
		||||
        status3=int(GPIO.input(pinList[3]))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        file = read_html_template("index.html")
 | 
			
		||||
        self.send_response(200, "OK")
 | 
			
		||||
        self.end_headers()
 | 
			
		||||
        print ('Relay0 = '+str(status0))
 | 
			
		||||
        if status0 == 0:
 | 
			
		||||
          file = file.replace("CHECKED1", "checked")
 | 
			
		||||
        else:
 | 
			
		||||
          file = file.replace("CHECKED1", "")
 | 
			
		||||
 | 
			
		||||
        print ('Relay1 = '+str(status1))
 | 
			
		||||
        if status1 == 0:
 | 
			
		||||
          file = file.replace("CHECKED2", "checked")
 | 
			
		||||
        else:
 | 
			
		||||
          file = file.replace("CHECKED2", "")
 | 
			
		||||
 | 
			
		||||
        print ('Relay2 = '+str(status2))
 | 
			
		||||
        if status2 == 0:
 | 
			
		||||
          file = file.replace("CHECKED3", "checked")
 | 
			
		||||
        else:
 | 
			
		||||
          file = file.replace("CHECKED3", "")
 | 
			
		||||
 | 
			
		||||
        print ('Relay3 = '+str(status3))
 | 
			
		||||
        if status3 == 0:
 | 
			
		||||
          file = file.replace("CHECKED4", "checked")
 | 
			
		||||
        else:
 | 
			
		||||
          file = file.replace("CHECKED4", "")
 | 
			
		||||
 | 
			
		||||
        self.wfile.write(bytes(file.encode("utf-8")))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def read_html_template(path):
 | 
			
		||||
    """function to read HTML file"""
 | 
			
		||||
    try:
 | 
			
		||||
        with open(path) as f:
 | 
			
		||||
            file = f.read()
 | 
			
		||||
    except Exception as e:
 | 
			
		||||
        file = e
 | 
			
		||||
    return file
 | 
			
		||||
 | 
			
		||||
def run(handler_class=S, port=8000):
 | 
			
		||||
 | 
			
		||||
    logging.basicConfig(level=logging.INFO)
 | 
			
		||||
    server_address = ('', port)
 | 
			
		||||
    #httpd = server_class(server_address, handler_class)
 | 
			
		||||
    logging.info('Starting httpd '+str(port)+' ...\n')
 | 
			
		||||
    try:
 | 
			
		||||
        Handler = http.server.SimpleHTTPRequestHandler
 | 
			
		||||
        with socketserver.TCPServer(server_address, handler_class) as httpd:
 | 
			
		||||
            httpd.serve_forever()
 | 
			
		||||
    except KeyboardInterrupt:
 | 
			
		||||
        pass
 | 
			
		||||
    httpd.server_close()
 | 
			
		||||
    logging.info('Stopping httpd...\n')
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    from sys import argv
 | 
			
		||||
 | 
			
		||||
    if len(argv) == 2:
 | 
			
		||||
        run(port=int(argv[1]))
 | 
			
		||||
    else:
 | 
			
		||||
        run()
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								img/funduino_keyes_8_prises.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								img/funduino_keyes_8_prises.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 20 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								img/relais.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								img/relais.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 28 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								img/schema_funduino_keyes.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								img/schema_funduino_keyes.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 23 KiB  | 
							
								
								
									
										180
									
								
								index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										180
									
								
								index.html
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,180 @@
 | 
			
		|||
<!DOCTYPE html>
 | 
			
		||||
<html lang="fr">
 | 
			
		||||
<head>
 | 
			
		||||
    <meta charset="UTF-8">
 | 
			
		||||
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
			
		||||
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
 | 
			
		||||
    <style>
 | 
			
		||||
 | 
			
		||||
    .onoffswitch {
 | 
			
		||||
        position: relative; width: 90px;
 | 
			
		||||
        -webkit-user-select:none; -moz-user-select:none; -ms-user-select: none;
 | 
			
		||||
    }
 | 
			
		||||
    .onoffswitch-checkbox {
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        opacity: 0;
 | 
			
		||||
        pointer-events: none;
 | 
			
		||||
    }
 | 
			
		||||
    .onoffswitch-label {
 | 
			
		||||
        display: block; overflow: hidden; cursor: pointer;
 | 
			
		||||
        border: 2px solid #999999; border-radius: 20px;
 | 
			
		||||
    }
 | 
			
		||||
    .onoffswitch-inner {
 | 
			
		||||
        display: block; width: 200%; margin-left: -100%;
 | 
			
		||||
        transition: margin 0.3s ease-in 0s;
 | 
			
		||||
    }
 | 
			
		||||
    .onoffswitch-inner:before, .onoffswitch-inner:after {
 | 
			
		||||
        display: block; float: left; width: 50%; height: 30px; padding: 0; line-height: 30px;
 | 
			
		||||
        font-size: 14px; color: white; font-family: Trebuchet, Arial, sans-serif; font-weight: bold;
 | 
			
		||||
        box-sizing: border-box;
 | 
			
		||||
    }
 | 
			
		||||
    .onoffswitch-inner:before {
 | 
			
		||||
        content: "ON";
 | 
			
		||||
        padding-left: 10px;
 | 
			
		||||
        background-color: #58f164; color: #FFFFFF;
 | 
			
		||||
    }
 | 
			
		||||
    .onoffswitch-inner:after {
 | 
			
		||||
        content: "OFF";
 | 
			
		||||
        padding-right: 10px;
 | 
			
		||||
        background-color: #d3250d; color: #999999;
 | 
			
		||||
        text-align: right;
 | 
			
		||||
    }
 | 
			
		||||
    .onoffswitch-switch {
 | 
			
		||||
        display: block; width: 18px; margin: 6px;
 | 
			
		||||
        background: #FFFFFF;
 | 
			
		||||
        position: absolute; top: 0; bottom: 0;
 | 
			
		||||
        right: 56px;
 | 
			
		||||
        border: 2px solid #999999; border-radius: 20px;
 | 
			
		||||
        transition: all 0.3s ease-in 0s; 
 | 
			
		||||
    }
 | 
			
		||||
    .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
 | 
			
		||||
        margin-left: 0;
 | 
			
		||||
    }
 | 
			
		||||
    .onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
 | 
			
		||||
        right: 0px; 
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
    table{
 | 
			
		||||
      caption-side: top;
 | 
			
		||||
    }
 | 
			
		||||
    th, td{
 | 
			
		||||
      boder: 1px solid black;
 | 
			
		||||
      padding: 10px;
 | 
			
		||||
    }
 | 
			
		||||
    caption{
 | 
			
		||||
      background-color: #0AD;
 | 
			
		||||
      font-weight: bold;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    </style>
 | 
			
		||||
    <title>RelayCMD</title>
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
<table border="1">
 | 
			
		||||
<caption>RELAY COMMAND</caption>
 | 
			
		||||
<tr>
 | 
			
		||||
<td><h3>Nom RELAY</h3></td>
 | 
			
		||||
<td><h3>RESET Tempo10s</h3></td>
 | 
			
		||||
<td><h3>ON/OFF</h3></td>
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td>Relay 1 [HamNet]</td>
 | 
			
		||||
<td>
 | 
			
		||||
    <div class="onoffswitch">
 | 
			
		||||
        <input type="checkbox" name="onoffswitch1" class="onoffswitch-checkbox" id="myonoffswitch" tabindex="0" CHECKED1 onclick="javascript:window.open('http://fra1od.freeboxos.fr:8000/R0','_self');">
 | 
			
		||||
        <label class="onoffswitch-label" for="myonoffswitch">
 | 
			
		||||
            <span class="onoffswitch-inner"></span>
 | 
			
		||||
            <span class="onoffswitch-switch"></span>
 | 
			
		||||
        </label>
 | 
			
		||||
    </div>
 | 
			
		||||
</td>
 | 
			
		||||
 | 
			
		||||
<td>
 | 
			
		||||
    <div class="onoffswitch">
 | 
			
		||||
        <input type="checkbox" name="onoffswitch11" class="onoffswitch-checkbox" id="myonoffswitch11" tabindex="0" CHECKED1 onclick="javascript:window.open('http://fra1od.freeboxos.fr:8000/R0O','_self');">
 | 
			
		||||
        <label class="onoffswitch-label" for="myonoffswitch11">
 | 
			
		||||
            <span class="onoffswitch-inner"></span>
 | 
			
		||||
            <span class="onoffswitch-switch"></span>
 | 
			
		||||
        </label>
 | 
			
		||||
    </div>
 | 
			
		||||
</td>
 | 
			
		||||
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td>Relay 2 [Srv/RadioSonde/ADSB]</td>
 | 
			
		||||
<td>
 | 
			
		||||
    <div class="onoffswitch">
 | 
			
		||||
        <input type="checkbox" name="onoffswitch2" class="onoffswitch-checkbox" id="myonoffswitch2" tabindex="0" CHECKED2 onclick="javascript:window.open('http://fra1od.freeboxos.fr:8000/R1','_self');">
 | 
			
		||||
        <label class="onoffswitch-label" for="myonoffswitch2">
 | 
			
		||||
            <span class="onoffswitch-inner"></span>
 | 
			
		||||
            <span class="onoffswitch-switch"></span>
 | 
			
		||||
        </label>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
</td>
 | 
			
		||||
 | 
			
		||||
<td>
 | 
			
		||||
    <div class="onoffswitch">
 | 
			
		||||
        <input type="checkbox" name="onoffswitch22" class="onoffswitch-checkbox" id="myonoffswitch22" tabindex="0" CHECKED2 onclick="javascript:window.open('http://fra1od.freeboxos.fr:8000/R1O','_self');">
 | 
			
		||||
        <label class="onoffswitch-label" for="myonoffswitch22">
 | 
			
		||||
            <span class="onoffswitch-inner"></span>
 | 
			
		||||
            <span class="onoffswitch-switch"></span>
 | 
			
		||||
        </label>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
</td>
 | 
			
		||||
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td>Relay 3 [HotSpot]</td>
 | 
			
		||||
<td>
 | 
			
		||||
    <div class="onoffswitch">
 | 
			
		||||
        <input type="checkbox" name="onoffswitch3" class="onoffswitch-checkbox" id="myonoffswitch3" tabindex="0" CHECKED3 onclick="javascript:window.open('http://fra1od.freeboxos.fr:8000/R2','_self');">
 | 
			
		||||
        <label class="onoffswitch-label" for="myonoffswitch3">
 | 
			
		||||
            <span class="onoffswitch-inner"></span>
 | 
			
		||||
            <span class="onoffswitch-switch"></span>
 | 
			
		||||
        </label>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
</td>
 | 
			
		||||
 | 
			
		||||
<td>
 | 
			
		||||
    <div class="onoffswitch">
 | 
			
		||||
        <input type="checkbox" name="onoffswitch33" class="onoffswitch-checkbox" id="myonoffswitch33" tabindex="0" CHECKED3 onclick="javascript:window.open('http://fra1od.freeboxos.fr:8000/R2O','_self');">
 | 
			
		||||
        <label class="onoffswitch-label" for="myonoffswitch33">
 | 
			
		||||
            <span class="onoffswitch-inner"></span>
 | 
			
		||||
            <span class="onoffswitch-switch"></span>
 | 
			
		||||
        </label>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
</td>
 | 
			
		||||
 | 
			
		||||
</tr>
 | 
			
		||||
<tr>
 | 
			
		||||
<td>Relay 4 [Alim]</td>
 | 
			
		||||
<td>
 | 
			
		||||
    <div class="onoffswitch">
 | 
			
		||||
        <input type="checkbox" name="onoffswitch4" class="onoffswitch-checkbox" id="myonoffswitch4" tabindex="0" CHECKED4 onclick="javascript:window.open('http://fra1od.freeboxos.fr:8000/R3','_self');">
 | 
			
		||||
        <label class="onoffswitch-label" for="myonoffswitch4">
 | 
			
		||||
            <span class="onoffswitch-inner"></span>
 | 
			
		||||
            <span class="onoffswitch-switch"></span>
 | 
			
		||||
        </label>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
</td>
 | 
			
		||||
 | 
			
		||||
<td>
 | 
			
		||||
    <div class="onoffswitch">
 | 
			
		||||
        <input type="checkbox" name="onoffswitch44" class="onoffswitch-checkbox" id="myonoffswitch44" tabindex="0" CHECKED4 onclick="javascript:window.open('http://fra1od.freeboxos.fr:8000/R3O','_self');">
 | 
			
		||||
        <label class="onoffswitch-label" for="myonoffswitch44">
 | 
			
		||||
            <span class="onoffswitch-inner"></span>
 | 
			
		||||
            <span class="onoffswitch-switch"></span>
 | 
			
		||||
        </label>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
</td>
 | 
			
		||||
 | 
			
		||||
</tr>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										135
									
								
								relay.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										135
									
								
								relay.py
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,135 @@
 | 
			
		|||
#!/usr/bin/python
 | 
			
		||||
import RPi.GPIO as GPIO
 | 
			
		||||
import time
 | 
			
		||||
import sys
 | 
			
		||||
import re
 | 
			
		||||
GPIO.setwarnings(False)
 | 
			
		||||
# loop through pins and set mode and state to 'high'
 | 
			
		||||
def reset_relay(pinrelayList):
 | 
			
		||||
   for i in pinrelayList: 
 | 
			
		||||
       GPIO.setup(i, GPIO.OUT) 
 | 
			
		||||
       GPIO.output(i, GPIO.LOW)
 | 
			
		||||
 | 
			
		||||
#Power is 0 OFF or 1 ON
 | 
			
		||||
def power(pinListpower,ONOFF):
 | 
			
		||||
   j=1
 | 
			
		||||
   for i in pinListpower: 
 | 
			
		||||
       GPIO.setup(i, GPIO.OUT)
 | 
			
		||||
       if int(ONOFF) == 0:
 | 
			
		||||
         print ('Relay='+str(j)+' '+str(ONOFF))
 | 
			
		||||
         GPIO.output(i, GPIO.HIGH)
 | 
			
		||||
       if int(ONOFF) == 1:
 | 
			
		||||
         print ('Relay='+str(j)+' '+str(ONOFF))
 | 
			
		||||
         GPIO.output(i, GPIO.LOW)
 | 
			
		||||
       j+=1
 | 
			
		||||
 | 
			
		||||
#Status RELAY
 | 
			
		||||
def status(pinListcheck,pincheck):
 | 
			
		||||
   j=1
 | 
			
		||||
   if pincheck==10:
 | 
			
		||||
     for i in pinListcheck:
 | 
			
		||||
         GPIO.setup(i, GPIO.OUT)
 | 
			
		||||
         
 | 
			
		||||
         if int(GPIO.input(i)) == 1:
 | 
			
		||||
            print ('Relay '+str(j)+' = OFF')
 | 
			
		||||
         else:
 | 
			
		||||
            print ('Relay '+str(j)+' = ON')
 | 
			
		||||
         j+=1
 | 
			
		||||
   else:
 | 
			
		||||
     GPIO.setup(pinListcheck[int(pincheck)], GPIO.OUT)
 | 
			
		||||
     if int(GPIO.input(pinListcheck[int(pincheck)])) == 1:
 | 
			
		||||
       print ('Relay '+str(pincheck)+' = OFF')
 | 
			
		||||
     else:
 | 
			
		||||
       print ('Relay '+str(pincheck)+' = ON')
 | 
			
		||||
 | 
			
		||||
# init funct
 | 
			
		||||
def main(argv=sys.argv):
 | 
			
		||||
   # init var
 | 
			
		||||
   GPIO.setmode(GPIO.BCM)
 | 
			
		||||
   pinList = [2, 3, 4, 17]
 | 
			
		||||
   SleepTimeL = 5
 | 
			
		||||
   #GPIO.cleanup()
 | 
			
		||||
   x = 1
 | 
			
		||||
   #Cmd HELP
 | 
			
		||||
   if (len(argv) > x and  argv[x] == 'help') or len(argv) == 1:
 | 
			
		||||
     print ('usage: ./relay.py ....')
 | 
			
		||||
     print ('options:')
 | 
			
		||||
     print ('  help', 'This aide')
 | 
			
		||||
     print ('commands:')
 | 
			
		||||
     print ('  close R', 'Close relay number R of 0 to 3')
 | 
			
		||||
     print ('  open R', 'Open relay R of number 0 to 3')
 | 
			
		||||
     print ('  reset R T', 'Reset device, changes ON OFF ON by tempo T.')
 | 
			
		||||
     print ('  status', 'Print the states of all relays.')
 | 
			
		||||
     print ('example: ./relay.py reset 0 10')
 | 
			
		||||
     print ('         relay0 is ON but make a reset by OFF STEP 10s and ON')
 | 
			
		||||
     print ('example: ./relay.py open 0')
 | 
			
		||||
     print ('example: ./relay.py close 1')
 | 
			
		||||
     print ('example: ./relay.py status')
 | 
			
		||||
     print ('(c) F4IYT Xavier 2022 v1.00')
 | 
			
		||||
     GPIO.cleanup()
 | 
			
		||||
     sys.exit(1)
 | 
			
		||||
 | 
			
		||||
   #Cmd STATUS
 | 
			
		||||
   if len(argv) > x and  argv[x] == 'status':
 | 
			
		||||
     pinstatus=10
 | 
			
		||||
     if len(argv) > 2:
 | 
			
		||||
        x +=1
 | 
			
		||||
        pinstatus=argv[x]
 | 
			
		||||
 | 
			
		||||
     status(pinList,pinstatus)
 | 
			
		||||
 | 
			
		||||
   #Cmd Close Relay
 | 
			
		||||
   if len(argv) > x and  argv[x] == 'close':
 | 
			
		||||
     x +=1
 | 
			
		||||
     relay=argv[x] 
 | 
			
		||||
     if int(relay) < 4:
 | 
			
		||||
       relayclose=pinList[int(relay)]
 | 
			
		||||
       print ("Close Relay:"+relay)
 | 
			
		||||
       GPIO.setup(int(relayclose), GPIO.OUT)
 | 
			
		||||
       GPIO.output(int(relayclose), GPIO.HIGH)
 | 
			
		||||
     else:
 | 
			
		||||
       print ('Error number of Relay check input only 0 at 3!')
 | 
			
		||||
 | 
			
		||||
   #Cmd Open Relay
 | 
			
		||||
   if len(argv) > x and  argv[x] == 'open':
 | 
			
		||||
     x +=1
 | 
			
		||||
     relay=argv[x]
 | 
			
		||||
     if int(relay) < 4:
 | 
			
		||||
       relayopen=pinList[int(relay)]
 | 
			
		||||
       print ("Open Relay:"+relay)
 | 
			
		||||
       GPIO.setup(int(relayopen), GPIO.OUT)
 | 
			
		||||
       GPIO.output(int(relayopen), GPIO.LOW)
 | 
			
		||||
     else:
 | 
			
		||||
       print ('Error number of Relay check input only 0 at 3!')
 | 
			
		||||
 | 
			
		||||
   #Cmd Reset Relay
 | 
			
		||||
   if len(argv) > x and  argv[x] == 'reset':
 | 
			
		||||
     x +=1
 | 
			
		||||
     relay=argv[x]
 | 
			
		||||
     if int(relay) < 4:
 | 
			
		||||
       relayreset=pinList[int(relay)]
 | 
			
		||||
       if len(argv) > 3:
 | 
			
		||||
         x +=1
 | 
			
		||||
         SleepTimeL=argv[x]
 | 
			
		||||
       print ("Reset Relay:"+relay+" tempo="+str(SleepTimeL))
 | 
			
		||||
       time.sleep(int(SleepTimeL));
 | 
			
		||||
       GPIO.setup(int(relayreset), GPIO.OUT)
 | 
			
		||||
       GPIO.output(int(relayreset), GPIO.HIGH)
 | 
			
		||||
       time.sleep(int(SleepTimeL));
 | 
			
		||||
       GPIO.setup(int(relayreset), GPIO.OUT)
 | 
			
		||||
       GPIO.output(int(relayreset), GPIO.LOW)
 | 
			
		||||
     else:
 | 
			
		||||
       print ('Error number of Relay check input only 0 at 3!')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   #Cmd Power Relay
 | 
			
		||||
   if len(argv) > x and  argv[x] == 'power':
 | 
			
		||||
     x +=1
 | 
			
		||||
     ponoff=argv[x]
 | 
			
		||||
     print ("Power = :"+ponoff)
 | 
			
		||||
     power(pinList,ponoff)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Main part
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    main()
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user