#!/usr/bin/env python3

"""
__author__ = "METZ CONNECT GmbH, EES"
__copyright__ = "Copyright (C) 2025 METZ CONNECT GmbH"
__version__ = "1.0"
__dependencies__ = "Python version: > 3.8; library: requests (python -m pip install requests).
__note__ = "This script only contains a demo how to use the REST API of EWIO2. 
            No warranty on software - you use this software on your own risk. 
            METZ CONNECT GmbH provides the Software to you "AS IS" without warranty. 
            All data is public content - make sure to adapt this script towards your needs before executing."
"""

import requests
import hashlib

# constants
ewio_ip_address = "192.168.0.111" # @TODO: please replace IP address of EWIO2
url = "http://" + ewio_ip_address + "/cgi-bin/getParamFromServer.cgi?username="
username = "Administrator"
password = "ewio2_admin_password" # @TODO: please replace with password of EWIO2

# calc. password hash
hash_pw = hashlib.md5()
hash_pw.update(password.encode('UTF-8'))
#print(hash_pw.hexdigest())

# extend URL with username and password keyword
url_extended = url + username + "&password="

# get session ID
api_url_get_session_id = url_extended + hash_pw.hexdigest() + "&type=session_id&module=login"
print("send: " + api_url_get_session_id)
session_id = requests.get(api_url_get_session_id, verify=False)
print(session_id.text)

# calc. TAN and hash of TAN
tan = password + session_id.text
hash_tan = hashlib.md5()
hash_tan.update(tan.encode('utf-8'))

# login
api_url_login = url_extended + hash_tan.hexdigest() + "&type=login&module=login"
print("send: " + api_url_login)
login_status = requests.get(api_url_login, verify=False)
print(login_status.text)

# get Modbus meter
api_url_modbus_meter = url_extended + hash_tan.hexdigest() + "&type=counter_list&module=modbus_output"
print("send: " + api_url_modbus_meter)
modbus_meters = requests.get(api_url_modbus_meter, verify=False)
print(modbus_meters.text)

# @TODO: request other REST API endpoints

# logout
api_url_logout = url_extended + hash_tan.hexdigest() + "&type=logout&module=login"
print("send: " + api_url_logout)
logout_status = requests.get(api_url_logout, verify=False)
print(logout_status.text)
