mirror of
https://github.com/espressif/esp-rainmaker.git
synced 2026-01-14 15:35:45 +00:00
158 lines
7.1 KiB
Python
Executable File
158 lines
7.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
#
|
|
# Copyright 2020 Espressif Systems (Shanghai) PTE LTD
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
import argparse
|
|
from rmaker_cmd.node import get_nodes, get_node_config, get_node_status,\
|
|
set_params, get_params, remove_node,\
|
|
get_mqtt_host, claim_node
|
|
from rmaker_cmd.user import signup, login, forgot_password
|
|
from rmaker_cmd.provision import provision
|
|
from rmaker_cmd.test import test
|
|
from rmaker_lib.logger import log
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.set_defaults(func=None)
|
|
subparsers = parser.add_subparsers(help='Functions')
|
|
|
|
signup_parser = subparsers.add_parser("signup",
|
|
help="Sign up for ESP Rainmaker")
|
|
signup_parser.add_argument('email',
|
|
type=str,
|
|
metavar='<email>',
|
|
help='Email address of the user')
|
|
signup_parser.set_defaults(func=signup)
|
|
|
|
login_parser = subparsers.add_parser("login",
|
|
help="Login to ESP Rainmaker")
|
|
login_parser.add_argument('--email',
|
|
type=str,
|
|
help='Email address of the user')
|
|
login_parser.set_defaults(func=login)
|
|
|
|
forgot_password_parser = subparsers.add_parser("forgotpassword",
|
|
help="Reset the password")
|
|
forgot_password_parser.add_argument('email',
|
|
type=str,
|
|
metavar='<email>',
|
|
help='Email address of the user')
|
|
forgot_password_parser.set_defaults(func=forgot_password)
|
|
|
|
getnodes_parser = subparsers.add_parser('getnodes',
|
|
help='List all nodes associated\
|
|
with the user')
|
|
getnodes_parser.set_defaults(func=get_nodes)
|
|
|
|
getnodeconfig_parser = subparsers.add_parser('getnodeconfig',
|
|
help='Get node configuration')
|
|
getnodeconfig_parser.add_argument('nodeid',
|
|
type=str,
|
|
metavar='<nodeid>',
|
|
help='Node ID for the node')
|
|
getnodeconfig_parser.set_defaults(func=get_node_config)
|
|
|
|
getnodestatus_parser = subparsers.add_parser('getnodestatus',
|
|
help='Get online/offline\
|
|
status of the node')
|
|
getnodestatus_parser.add_argument('nodeid',
|
|
type=str,
|
|
metavar='<nodeid>',
|
|
help='Node ID for the node')
|
|
getnodestatus_parser.set_defaults(func=get_node_status)
|
|
|
|
setparams_parser = subparsers.add_parser('setparams',
|
|
help='Set node parameters.\
|
|
Note: Enter JSON data in\
|
|
single quotes')
|
|
setparams_parser.add_argument('nodeid',
|
|
metavar='<nodeid>',
|
|
help='Node ID for the node')
|
|
setparams_parser = setparams_parser.add_mutually_exclusive_group(
|
|
required=True)
|
|
|
|
setparams_parser.add_argument('--filepath',
|
|
help='Path of the JSON file\
|
|
containing parameters to be set')
|
|
setparams_parser.add_argument('--data',
|
|
help='JSON data containing parameters\
|
|
to be set. Note: Enter JSON data\
|
|
in single quotes')
|
|
setparams_parser.set_defaults(func=set_params)
|
|
|
|
getparams_parser = subparsers.add_parser('getparams',
|
|
help='Get node parameters')
|
|
getparams_parser.add_argument('nodeid',
|
|
type=str,
|
|
metavar='<nodeid>',
|
|
help='Node ID for the node')
|
|
getparams_parser.set_defaults(func=get_params)
|
|
|
|
remove_node_parser = subparsers.add_parser('removenode',
|
|
help='Remove user node mapping')
|
|
remove_node_parser.add_argument('nodeid',
|
|
type=str,
|
|
metavar='<nodeid>',
|
|
help='Node ID for the node')
|
|
remove_node_parser.set_defaults(func=remove_node)
|
|
|
|
provision_parser = subparsers.add_parser('provision',
|
|
help='Provision the node\
|
|
to join Wi-Fi network')
|
|
provision_parser.add_argument('pop',
|
|
type=str,
|
|
metavar='<pop>',
|
|
help='Proof of possesion for the node')
|
|
provision_parser.set_defaults(func=provision)
|
|
|
|
getmqtthost_parser = subparsers.add_parser('getmqtthost',
|
|
help='Get the MQTT Host URL\
|
|
to be used in the\
|
|
firmware')
|
|
getmqtthost_parser.set_defaults(func=get_mqtt_host)
|
|
|
|
claim_parser = subparsers.add_parser('claim',
|
|
help='Claim the node connected to the given serial port\
|
|
(Get cloud credentials)')
|
|
claim_parser.add_argument("port", metavar='<port>',
|
|
help='Serial Port connected to the device.')
|
|
claim_parser.set_defaults(func=claim_node)
|
|
|
|
test_parser = subparsers.add_parser('test',
|
|
help='Test commands to check\
|
|
user node mapping')
|
|
test_parser.add_argument('--addnode',
|
|
metavar='<nodeid>',
|
|
help='Add user node mapping')
|
|
test_parser.set_defaults(func=test)
|
|
|
|
args = parser.parse_args()
|
|
|
|
if args.func is not None:
|
|
try:
|
|
args.func(vars=vars(args))
|
|
except KeyboardInterrupt:
|
|
log.debug('KeyboardInterrupt occurred. Login session is aborted.')
|
|
print("\nExiting...")
|
|
except Exception as err:
|
|
log.error(err)
|
|
else:
|
|
parser.print_help()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|