1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
import json
import logging
import os, sys
from boschshcpy import SHCSession, SHCDeviceHelper, SHCAuthenticationError
logger = logging.getLogger("boschshcpy")
#### Main Program ####
def main():
import argparse, sys
parser = argparse.ArgumentParser()
parser.add_argument(
"--certificate",
"-cert",
help="Certificate of a registered client.",
)
parser.add_argument(
"--key",
"-key",
help="Key of a registered client.",
)
parser.add_argument("--ip_address", "-ip", help="IP of the smart home controller.")
subparsers = parser.add_subparsers(dest="subcommand")
subparsers.required = True
parser_device = subparsers.add_parser("devices")
parser_device = subparsers.add_parser("services")
parser_device = subparsers.add_parser("userdefinedstates")
parser_device = subparsers.add_parser("scenarios")
parser_device = subparsers.add_parser("rooms")
parser_device = subparsers.add_parser("info")
parser_device = subparsers.add_parser("information")
parser_device = subparsers.add_parser("public_information")
parser_device = subparsers.add_parser("intrusion_detection")
parser_service = subparsers.add_parser("device")
parser_service.add_argument("device_id", help="Specify the device id.")
parser_device = subparsers.add_parser("device_services")
parser_device.add_argument("device_id", help="Specify the device id.")
parser_service = subparsers.add_parser("device_service")
parser_service.add_argument("device_id", help="Specify the device id.")
parser_service.add_argument("service_id", help="Specify the service id.")
args = parser.parse_args()
if len(sys.argv) == 1:
parser.print_help()
sys.exit()
# Create a BoschSHC client with the specified ACCESS_CERT and ACCESS_KEY.
try:
session = SHCSession(
controller_ip=args.ip_address,
certificate=args.certificate,
key=args.key,
)
except SHCAuthenticationError as e:
print(e)
sys.exit()
match (args.subcommand):
case "devices":
print(json.dumps(session.api.get_devices(), indent=4))
case "services":
print(json.dumps(session.api.get_services(), indent=4))
case "userdefinedstates":
print(json.dumps(session.api.get_userdefinedstates(), indent=4))
case "rooms":
print(json.dumps(session.api.get_rooms(), indent=4))
case "scenarios":
print(json.dumps(session.api.get_scenarios(), indent=4))
case "device":
print(json.dumps(session.api.get_device(args.device_id), indent=4))
case "device_services":
print(json.dumps(session.api.get_device_services(args.device_id), indent=4))
case "device_service":
print(
json.dumps(
session.api.get_device_service(args.device_id, args.service_id),
indent=4,
)
)
case "info" | "information":
print(json.dumps(session.api.get_information(), indent=4))
case "public_information":
print(json.dumps(session.api.get_public_information(), indent=4))
case "intrusion_detection":
print(json.dumps(session.api.get_domain_intrusion_detection(), indent=4))
case _:
print("Please select a valid mode.")
sys.exit()
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
try:
sys.exit(0)
except SystemExit:
os._exit(0)
|