129 lines
5.0 KiB
Python
129 lines
5.0 KiB
Python
#!/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}")
|
|
'''
|