Pārlūkot izejas kodu

replace piface with gpiozero lib

master
Steffen Volkmann pirms 5 gadiem
vecāks
revīzija
7573a32573
13 mainītis faili ar 109 papildinājumiem un 78 dzēšanām
  1. +3
    -0
      .gitignore
  2. +8
    -8
      .pydevproject
  3. +1
    -2
      Doc/wpa_supplicant.conf.txt
  4. +39
    -9
      README.md
  5. +21
    -6
      SimpleWebControl/simple_server.py
  6. +5
    -5
      mc_control.sh
  7. +9
    -12
      mc_control/mc_statemachine.py
  8. +0
    -0
      pyface_simulation/__init__.py
  9. Binārs
      pyface_simulation/__pycache__/__init__.cpython-32.pyc
  10. Binārs
      pyface_simulation/__pycache__/pifacedigitalio.cpython-32.pyc
  11. +0
    -32
      pyface_simulation/pifacedigitalio.py
  12. +19
    -0
      utils/fgpio.py
  13. +4
    -4
      www/mc.html

+ 3
- 0
.gitignore Parādīt failu

@@ -0,0 +1,3 @@
archiv
*.pyc


+ 8
- 8
.pydevproject Parādīt failu

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?eclipse-pydev version="1.0"?><pydev_project>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">python</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 3.0</pydev_property>
<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
<path>/RP_RemoteControl</path>
</pydev_pathproperty>
</pydev_project>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?eclipse-pydev version="1.0"?><pydev_project>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">python</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python interpreter</pydev_property>
<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
<path>/RP_RemoteControl</path>
</pydev_pathproperty>
</pydev_project>

+ 1
- 2
Doc/wpa_supplicant.conf.txt Parādīt failu

@@ -1,4 +1,4 @@
# sudo cat ./etc/wpa_supplicant/wpa_supplicant.conf
# sudo cat ./etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

@@ -10,4 +10,3 @@ network={
pairwise=CCMP
auth_alg=OPEN
}


+ 39
- 9
README.md Parādīt failu

@@ -1,21 +1,51 @@
Raspberry PI Allgemein
# RP_Jalousiecontrol
allows web based remote control of Jalousie

## requirements

### hardware
Rasperry PI

### software
- python 3.x
- raspberrian

## installation:

### debian packages
sudo apt install git python3-pifacedigitalio python-pifacedigitalio

### checkout sources
cd /var/lib
sudo mkdir Jalousiecontrol
sudo chown pi:pi Jalousiecontrol
git clone https://gitea.devpool.net/stevo/RP_Jalousiecontrol.git

### copy startup scripts and enable autostart
sudo cp ./mc_control.sh /etc/init.d/mc_control.sh
sudo /etc/init.d/mc_control.sh start
sudo /etc/init.d/mc_control.sh stop
sudo update-rc.d mc_control.sh defaults

sudo raspi-config -> 5 - interface options -> P4 SPI -> enable kernel modules



# bookmarks

## Raspberry PI Allgemein
- http://www.mikrocontroller.net/articles/Raspberry_Pi

Ajax, Java Script, CCS:
## Ajax, Java Script, CCS:
- http://flask.pocoo.org/docs/patterns/jquery/
- http://xyzzyxyzzy.net/2012/07/01/ajax-fun-with-jquery-python/
- http://getbootstrap.com/components/#panels
- http://openbook.galileocomputing.de/javascript/
- http://www.w3schools.com/js/js_htmldom_document.asp

Python webserver mit SSL
## Python webserver mit SSL
- http://www.piware.de/2011/01/creating-an-https-server-in-python/
- http://code.activestate.com/recipes/442473-simple-http-server-supporting-ssl-secure-communica/

webserver atomatisch starten
## webserver atomatisch starten
- http://raspberrywebserver.com/serveradmin/run-a-script-on-start-up.html

sudo cp ./mc_control.sh /etc/init.d/mc_control.sh
sudo /etc/init.d/mc_control.sh start
sudo /etc/init.d/mc_control.sh stop
sudo update-rc.d mc_control.sh defaults

+ 21
- 6
SimpleWebControl/simple_server.py Parādīt failu

@@ -15,6 +15,9 @@ import time
from urllib.parse import urlparse
from utils.web import handle_file_request, get_my_ip
from mc_control.mc_statemachine import mc_state_machine, mc_event
from gpiozero import LED
from gpiozero.pins.pigpio import PiGPIOFactory


HOST_NAME = '' #'localhost'
PORT_NUMBER = 8000
@@ -117,13 +120,23 @@ class myhandler(BaseHTTPRequestHandler):
class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):
''' '''
def StartStateMachines():
def StartStateMachines(factory):
global sm
sm = list()
sm.append( mc_state_machine(0, 1))
sm.append( mc_state_machine(2, 3))
sm.append( mc_state_machine(4, 5))
sm.append( mc_state_machine(6, 7))
up_1 = LED(16, pin_factory=factory)
down_1 = LED(12, pin_factory=factory)
up_2 = LED(6, pin_factory=factory)
down_2 = LED(20, pin_factory=factory)
up_3 = LED(13, pin_factory=factory)
down_3 = LED(21, pin_factory=factory)
up_4 = LED(19, pin_factory=factory)
down_4 = LED(26, pin_factory=factory)
sm.append( mc_state_machine(up_1, down_1))
sm.append( mc_state_machine(up_2, down_2))
sm.append( mc_state_machine(up_3, down_3))
sm.append( mc_state_machine(up_4, down_4))
def CloseStateMachines():
global sm
@@ -136,7 +149,9 @@ def CloseStateMachines():
if __name__ == '__main__':
global sm
StartStateMachines()

factory = PiGPIOFactory(host='jalousiecontrol')
StartStateMachines(factory)
httpd = ThreadedHTTPServer((HOST_NAME,PORT_NUMBER),myhandler)


+ 5
- 5
mc_control.sh Parādīt failu

@@ -1,8 +1,8 @@
#! /bin/sh
### BEGIN INIT INFO
# Provides: start and stop of the mc_control webservice
# Required-Start:
# Required-Stop:
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop of the mc_control webservice
@@ -12,15 +12,15 @@
# Aktionen
case "$1" in
start)
/usr/bin/python3 /home/pi/10_RP_MotorControl/SimpleWebControl/simple_server.py &
/usr/bin/python3 /var/lib/RP_Jalousiecontrol/SimpleWebControl/simple_server.py &
;;
stop)
killall python3
;;
restart)
killall python3
/usr/bin/python3 /home/pi/10_RP_MotorControl/SimpleWebControl/simple_server.py &
/usr/bin/python3 /var/lib/RP_Jalousiecontrol/SimpleWebControl/simple_server.py &
;;
esac

exit 0
exit 0

+ 9
- 12
mc_control/mc_statemachine.py Parādīt failu

@@ -18,13 +18,9 @@ DOWN - in down position
from queue import Queue
import threading
from mc_control.mc_timer import mc_timer
#from pyface_simulation import pifacedigitalio


try:
import pifacedigitalio #@UnresolvedImport
except:
from pyface_simulation import pifacedigitalio

class Position():
def __init__(self, min_value=0, max_value=100, step=1):
@@ -74,7 +70,8 @@ class mc_state_machine(threading.Thread):
self.__running = True
self.Port_Up = Port_Up
self.Port_Down = Port_Down
self.pfd = pifacedigitalio.PiFaceDigital() # creates a PiFace Digtal object
#self.pfd = pifacedigitalio.PiFaceDigital() # creates a PiFace Digtal object
self.timeout_value = timeout_value # sec.
self.PositionUpdateTimerPeriode = timeout_value/10 # sec.
self.MotorTimeout = mc_timer()
@@ -122,22 +119,22 @@ class mc_state_machine(threading.Thread):
print('MotorUp')
print('Switch Port={} on'.format(self.Port_Up))
print('Switch Port={} off'.format(self.Port_Down))
self.pfd.leds[self.Port_Up].value = 1
self.pfd.leds[self.Port_Down].value = 0
self.Port_Up.on()
self.Port_Down.off()
def MotorDown(self):
print('MotorDown')
print('Switch Port={} off'.format(self.Port_Up))
print('Switch Port={} on'.format(self.Port_Down))
self.pfd.leds[self.Port_Up].value = 0
self.pfd.leds[self.Port_Down].value = 1
self.Port_Up.off()
self.Port_Down.on()
def MotorStop(self):
print('MotorStop')
print('Switch Port={} off'.format(self.Port_Up))
print('Switch Port={} off'.format(self.Port_Down))
self.pfd.leds[self.Port_Up].value = 0
self.pfd.leds[self.Port_Down].value = 0
self.Port_Up.off()
self.Port_Down.off()
def run(self):


+ 0
- 0
pyface_simulation/__init__.py Parādīt failu


Binārs
pyface_simulation/__pycache__/__init__.cpython-32.pyc Parādīt failu


Binārs
pyface_simulation/__pycache__/pifacedigitalio.cpython-32.pyc Parādīt failu


+ 0
- 32
pyface_simulation/pifacedigitalio.py Parādīt failu

@@ -1,32 +0,0 @@
'''
Created on 29.06.2014

@author: stevo
'''



class RelayClass():
value = 0

class LedClass():
value = 0

class PiFaceDigital():
def __init__(self):
self.relays = []
self.relays.append( RelayClass())
self.relays.append( RelayClass())
self.leds = []
self.leds.append( LedClass())
self.leds.append( LedClass())
self.leds.append( LedClass())
self.leds.append( LedClass())
self.leds.append( LedClass())
self.leds.append( LedClass())
self.leds.append( LedClass())
self.leds.append( LedClass())
return None

+ 19
- 0
utils/fgpio.py Parādīt failu

@@ -0,0 +1,19 @@
'''
Created on Jun 3, 2019

@author: stevo
'''

from gpiozero import LED
from gpiozero.pins.pigpio import PiGPIOFactory
from time import sleep

remote_factory = PiGPIOFactory(host='192.168.1.97')
led = LED(21, pin_factory=remote_factory)

while True:
led.on()
sleep(5)
led.off()
sleep(5)

+ 4
- 4
www/mc.html Parādīt failu

@@ -72,7 +72,7 @@
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
Gruppe 1
Alex 1
</a>
</h4>
</div>
@@ -99,7 +99,7 @@
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
Gruppe 2
Alex 2
</a>
</h4>
</div>
@@ -129,7 +129,7 @@
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseThree">
Gruppe 3
Linus 3
</a>
</h4>
</div>
@@ -160,7 +160,7 @@
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseFour">
Gruppe 4
Linus 4
</a>
</h4>
</div>


Notiek ielāde…
Atcelt
Saglabāt