Files
zlab/zazalab.py
2026-04-06 15:59:35 +00:00

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