Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.06 KB | None | 0 0
  1. import requests
  2. import urllib, urllib2
  3. import json
  4. import time
  5.  
  6. # #config
  7. username = '4017132300@hewalex.net' #your username
  8. password = '123456' #your password
  9. domain = 'm.ginlong.com' #domain
  10. plantId = '503516' #plant id
  11. lan = '2' #lanuage (2 = English)
  12.  
  13. # #Aome Assistant settings
  14. home_assistant_host = 'http://192.168.100.150'
  15. home_assistant_port = '8123'
  16.  
  17. # Create session for requests
  18.  
  19. #building url
  20. url = 'http://'+domain+'/cpro/login/validateLogin.json'
  21.  
  22. params = {
  23. "userName": username,
  24. "password": password,
  25. "lan": lan,
  26. "domain": domain,
  27. "userType": "C"
  28. }
  29. while True:
  30. try:
  31. session = requests.session()
  32.  
  33. #login call
  34. resultData = session.post(url, params=params)
  35. resultJson = resultData.json()
  36.  
  37. print(resultJson)
  38.  
  39. if resultJson['result'].get('isAccept') == 1:
  40. print("Login Succesfull!")
  41. else:
  42. print("Login Failed!!")
  43. Exit()
  44.  
  45. # Get plant details
  46. url = 'http://'+domain+'/cpro/epc/plantDetail/showPlantDetailAjax.json'
  47. params = {
  48. 'plantId': int(plantId)
  49. }
  50.  
  51. cookies = {'language': lan}
  52. resultData = session.get(url, params=params, cookies=cookies)
  53. session.close()
  54. resultJson = resultData.json()
  55.  
  56. print(json.dumps(resultJson, indent=4, sort_keys=True))
  57.  
  58.  
  59. actual_power = resultJson['result']['plantAllWapper']['plantData'].get('power')
  60. energy_today = resultJson['result']['plantAllWapper']['plantData'].get('energyToday')
  61. energy_total = resultJson['result']['plantAllWapper']['plantData'].get('energyTotal')
  62.  
  63.  
  64. #logging values
  65. #print('TodayIncome: ' + str(TodayIncome))
  66. #print('ActualPower: ' + str(ActualPower))
  67. #print('etoday: ' + str(etoday))
  68. #print('etotal: ' + str(etotal))
  69. #print('etotal 1000: ' + str(etotalstr))
  70.  
  71. #uploading values to Home Assitant
  72. def requestBody(actual_power, energy_today, energy_total):
  73. return {
  74. "state": 'OK',
  75. "attributes": {
  76. "friendly_name": "Panele Fotowoltaiczne",
  77. "actual_power": str(actual_power),
  78. "energy_today": str(energy_today),
  79. "energy_total": str(energy_total)
  80. }
  81. }
  82.  
  83. headers = {
  84. "Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI3ZDhkY2RlZWM5OWY0MmE5YTE2ZmM5MWUyY2UwODg2MCIsImlhdCI6MTU4NTQ4NzMzNiwiZXhwIjoxOTAwODQ3MzM2fQ.IdwIn9iAUYNLfGVbdpRfoodGHtg82Ld5I9vcvjHjCVI",
  85. "Content-Type": "application/json"
  86. }
  87.  
  88. actual_power_url = home_assistant_host + ":" + home_assistant_port + "/api/states/sensor.solar_power_plant"
  89.  
  90.  
  91. requests.post(actual_power_url, json=requestBody(actual_power, energy_today, energy_total), headers=headers)
  92.  
  93. session.close()
  94. time.sleep(60)
  95. except:
  96. print("Something went wrong")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement