#!/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}") '''