File: rawscan.py

package info (click to toggle)
python-boschshcpy 0.2.92-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 268 kB
  • sloc: python: 3,343; makefile: 4; sh: 4
file content (120 lines) | stat: -rw-r--r-- 3,654 bytes parent folder | download
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)