Dateien nach "/" hochladen
check in
This commit is contained in:
128
zazalab.py
Normal file
128
zazalab.py
Normal file
@@ -0,0 +1,128 @@
|
||||
#!/home/ralf/python/zazalab/venv/bin/python
|
||||
# -*- coding:utf-8 -*-
|
||||
|
||||
#import morse
|
||||
import relays
|
||||
import sensors
|
||||
import time
|
||||
#import RPi.GPIO as GPIO
|
||||
import argparse
|
||||
|
||||
class ArgumentParser(argparse.ArgumentParser):
|
||||
def _check_value(self, action, value):
|
||||
if value is action.default:
|
||||
return
|
||||
return super()._check_value(action, value)
|
||||
|
||||
|
||||
'''
|
||||
env0 = sensors.environment(0)
|
||||
env1 = sensors.environment(1)
|
||||
lux = sensors.illuminance()
|
||||
|
||||
# Ausgabe der Messwerte
|
||||
print("Sensor Umwelt 0:")
|
||||
print(f"Temperatur: {env0.temperature:.2f} °C")
|
||||
print(f"Luftfeuchtigkeit: {env0.humidity:.0f} %")
|
||||
print(f"Luftdruck: {env0.pressure:.0f} hPa")
|
||||
print()
|
||||
|
||||
print("Sensor Umwelt 1:")
|
||||
print(f"Temperatur: {env1.temperature:.2f} °C")
|
||||
print(f"Luftfeuchtigkeit: {env1.humidity:.0f} %")
|
||||
print(f"Luftdruck: {env1.pressure:.0f} hPa")
|
||||
|
||||
print()
|
||||
print("Sensor Beleuchtung:")
|
||||
print(f"Beleuchtungsstärke: {lux:.2f} lux")
|
||||
'''
|
||||
|
||||
def initFunc(args):
|
||||
relays.init()
|
||||
|
||||
def setFunc(args):
|
||||
for relay in args.relay:
|
||||
if args.state == 'on':
|
||||
relays.on(relay)
|
||||
else:
|
||||
relays.off(relay)
|
||||
|
||||
def getFunc(args):
|
||||
if args.subparser == 'relay':
|
||||
for i in args.relay:
|
||||
if args.header == True:
|
||||
print(f'Relay {i}:')
|
||||
print(relays.onoffstatus(i))
|
||||
return
|
||||
if ['temperature', 'pressure', 'humidity', 'sensor'].count(args.subparser) != 0:
|
||||
if args.unit == True:
|
||||
units = ['°C', '%', 'mbar', 'lux']
|
||||
else:
|
||||
units = ['', '', '', '']
|
||||
for i in args.sensortype:
|
||||
if args.header == True:
|
||||
print(f'Sensor {i}:')
|
||||
if i < 2:
|
||||
env = sensors.environment(i)
|
||||
if args.subparser == 'temperature' or args.subparser == 'sensor':
|
||||
print(f'{env.temperature:.2f} {units[0]}')
|
||||
if args.subparser == 'humidity' or args.subparser == 'sensor':
|
||||
print(f'{env.humidity:.2f} {units[1]}')
|
||||
if args.subparser == 'pressure' or args.subparser == 'sensor':
|
||||
print(f'{env.pressure:.2f} {units[2]}')
|
||||
elif i == 2:
|
||||
light = sensors.illuminance()
|
||||
print(f'{light:0.0f} {units[3]}')
|
||||
else:
|
||||
raise ValueError
|
||||
|
||||
|
||||
#relays.init()
|
||||
|
||||
# local ArgumentParser
|
||||
parser = ArgumentParser(
|
||||
prog = 'zazactl',
|
||||
description = 'Auslesen der am Raspberry Pi angeschlossenen Sensoren und Steuerung der Relais.',
|
||||
epilog = ''
|
||||
)
|
||||
|
||||
subparsers = parser.add_subparsers(required = True)
|
||||
subparserGet = subparsers.add_parser('get', help = 'type ''get -h'' for more help')
|
||||
subparserGet.add_argument('-u', dest='unit', default=False, action='store_true', help='show values with units')
|
||||
subparserGet.add_argument('-s', dest='header', default=False, action='store_true', help='show sensor number')
|
||||
subparserGetSubs = subparserGet.add_subparsers(required = True, dest='subparser')
|
||||
subparserGetTemperature = subparserGetSubs.add_parser('temperature')
|
||||
subparserGetTemperature.add_argument('sensortype', metavar='sensornumber', type=int, choices=[0, 1], default=[0, 1], nargs='*', help='sensor number(s): 0, 1')
|
||||
subparserGetTemperature.set_defaults(func = getFunc)
|
||||
subparserGetHumidity = subparserGetSubs.add_parser('humidity')
|
||||
subparserGetHumidity.add_argument('sensortype', metavar='sensornumber', type=int, choices=[0, 1], default=[0, 1], nargs='*', help='sensor number(s): 0, 1')
|
||||
subparserGetHumidity.set_defaults(func = getFunc)
|
||||
subparserGetPressure = subparserGetSubs.add_parser('pressure')
|
||||
subparserGetPressure.add_argument('sensortype', metavar='sensornumber', type=int, choices=[0, 1], default=[0, 1], nargs='*', help='sensor number(s): 0, 1')
|
||||
subparserGetPressure.set_defaults(func = getFunc)
|
||||
subparserGetSensor = subparserGetSubs.add_parser('sensor')
|
||||
subparserGetSensor.add_argument('sensortype', metavar='sensornumber', type=int, choices=[0, 1, 2], default=[0, 1, 2], nargs='*', help='sensor number(s): 0, 1, 2')
|
||||
subparserGetSensor.set_defaults(func = getFunc)
|
||||
subparserGetRelay = subparserGetSubs.add_parser('relay')
|
||||
subparserGetRelay.add_argument('relay', metavar='relaynumber', type=int, choices=range(0,6), default=range(0,6), nargs='*', help='relay number(s): 0-7 (6 and 7 not connected to plugs)')
|
||||
subparserGetRelay.set_defaults(func = getFunc)
|
||||
|
||||
subparserSet = subparsers.add_parser('set', help = 'set help')
|
||||
subparserSetSubs = subparserSet.add_subparsers(required = True)
|
||||
subparserSetRelay = subparserSetSubs.add_parser('relay')
|
||||
subparserSetRelay.add_argument('relay', metavar = 'relaynumber', type=int, choices=range(0,6), nargs='*', default=range(0,6), help = 'relay number(s) in the range 0..7')
|
||||
subparserSetRelay.add_argument('state', choices=('on', 'off'))
|
||||
subparserSetRelay.set_defaults(func = setFunc)
|
||||
|
||||
subparserInit = subparsers.add_parser('init', help = 'init help')
|
||||
subparserInit.set_defaults(func = initFunc)
|
||||
args = parser.parse_args()
|
||||
args.func(args)
|
||||
|
||||
'''
|
||||
#relays.init()
|
||||
#morse.morse("eis eis", 1)
|
||||
for i in range(0, 8):
|
||||
status = relays.onoffstatus(i)
|
||||
print(f"no:{i}, status:{status}")
|
||||
'''
|
||||
Reference in New Issue
Block a user