82 lines
3.6 KiB
Python
82 lines
3.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import print_function
|
|
import argparse
|
|
from emp_mos_api import MosAPI, Water, Watercounter
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
# mosru_token: '887033d0649e62a84f80433e823526a1' #new: 887033d0649e62a84f80433e823526a1 #old
|
|
# mosru_session: 'a6727b620c79d9b2d24953de734e641e' #new: a3d3fdb831f1a88138abc5a096a06fce #old 3d88ede29eb74bd49fbaa54050fe8b5b
|
|
|
|
|
|
parser = argparse.ArgumentParser(description='emp.mos.ru API')
|
|
parser.add_argument('--token', default='705408acae4c705e9f66c9837288b3dd')
|
|
parser.add_argument('--user_agent', default='okhttp/3.8.1', help='User-Agent header')
|
|
parser.add_argument('--guid', default='80C3E12-A56F-C7A5-4174-14612ED63CF2')
|
|
parser.add_argument('--dev_user_agent', default='ios', help='application user agent')
|
|
parser.add_argument('--dev_app_version', help='application version', default='4.00.3 (245)')
|
|
|
|
parser.add_argument('--login', help='your login (phone number: 7xxxxxxxxxx)')
|
|
parser.add_argument('--pwd', help='your password')
|
|
|
|
parser.add_argument('--flat_id', help='id квартиры на сервере. если не указывать, отправится в 1ю.', default='16384751')
|
|
|
|
parser.add_argument('--hot', type=float, help='Hot water new value')
|
|
parser.add_argument('--cold', type=float, help='Cold water new value')
|
|
|
|
args = parser.parse_args()
|
|
|
|
#
|
|
api = MosAPI(token=args.token,
|
|
user_agent=args.user_agent,
|
|
guid=args.guid,
|
|
dev_user_agent=args.dev_user_agent,
|
|
dev_app_version=args.dev_app_version,
|
|
verify=True)
|
|
|
|
try:
|
|
api.set_session('a6727b620c79d9b2d24953de734e641e')
|
|
|
|
counters = api.get_watercounters('16384751')['counters']
|
|
print(counters)
|
|
|
|
new_values = []
|
|
|
|
hots_json = list(filter(lambda x: x['type'] == Water.HOT, counters))
|
|
if hots_json:
|
|
hot_value = Watercounter.last_value(hots_json[0])
|
|
if hot_value:
|
|
print('Текущее показание горячей воды: {:.2f} m3'.format(hot_value))
|
|
else:
|
|
print('Показания горячей воды не передавались больше 3-х месяцев')
|
|
|
|
if args.hot:
|
|
new_values.append(Watercounter.serialize_for_send(hots_json[0], args.hot))
|
|
print('Новое показание горячей воды: {:.2f} m3'.format(args.hot))
|
|
else:
|
|
print('Не найден счетчик горячей воды')
|
|
|
|
#
|
|
colds_json = list(filter(lambda x: x['type'] == Water.COLD, counters))
|
|
if colds_json:
|
|
cold_value = Watercounter.last_value(colds_json[0])
|
|
if cold_value:
|
|
print('Текущее показание холодной воды: {:.2f} m3'.format(cold_value))
|
|
else:
|
|
print('Показания холодной воды не передавались больше 3-х месяцев')
|
|
|
|
if args.cold:
|
|
new_values.append(Watercounter.serialize_for_send(colds_json[0], args.cold))
|
|
print('Новое показание холодной воды: {:.2f} m3'.format(args.cold))
|
|
else:
|
|
print('Не найден счетчик холодной воды')
|
|
|
|
if new_values:
|
|
api.send_watercounters(flat_id, new_values)
|
|
print('Показания отправлены на сервер')
|
|
|
|
finally:
|
|
print('done')
|
|
#api.logout() #долго
|