Advertisement
Guest User

Untitled

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