Guest User

Untitled

a guest
Aug 30th, 2020
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.50 KB | None | 0 0
  1. from sense_energy import Senseable
  2. from time import sleep, time
  3. import pprint
  4. import sys
  5.  
  6. if sys.version_info >= (3, 6):
  7.     import asyncio
  8.     from sense_energy import ASyncSenseable
  9.  
  10. username = '<email>@site.com'
  11. password = '<password>'
  12. ##last_call = 0
  13. ##while True:
  14. ##    if time() - last_call > 5:
  15. ##        last_call = time()
  16. ##        sense.get_realtime()
  17. ##        print ("Active Devices:",", ".join(sense.active_devices))
  18. ##    sleep(1)
  19. ##devices = sense.get_discovered_device_data()
  20. ##print "get_discovered_device_names:"
  21. ##pprint.pprint(sense.get_discovered_device_names())
  22. ##print "get_discovered_device_data:"
  23. ##pprint.pprint(sense.get_discovered_device_data())
  24. ##print "always_on_info:"
  25. ##pprint.pprint(sense.always_on_info())
  26. ##print "get_monitor_info:"
  27. ##pprint.pprint(sense.get_monitor_info())
  28. ##print "get_notification_preferences:"
  29. ##pprint.pprint(sense.get_notification_preferences())
  30. ##print "get_daily_kWh:"
  31. ##pprint.pprint(sense.get_daily_kWh())
  32.  
  33. #device probabilities
  34. #pprint.pprint(sense.get_realtime())
  35. def sync_test():
  36.     print ("Initialize")
  37.     sense = Senseable(wss_timeout=10)
  38.     sense.rate_limit = 2
  39.     print ("Authenticate")
  40.     sense.authenticate(username, password)
  41.     print ("\nInitial update realtime and trend:")
  42.     sense.update_realtime()
  43.     sense.update_trend_data()
  44.     print ("Active:",sense.active_power,"W")
  45.     print ("Active Solar:",sense.active_solar_power,"W")
  46.     print ("Daily:",sense.daily_usage,"KW")
  47.     print ("Daily Solar:",sense.daily_production,"KW")
  48.     print ("Active Devices:",", ".join(sense.active_devices))
  49.  
  50.     print ("\nRate Limit Test:")
  51.     for i in range(3):
  52.         sense.update_realtime()
  53.         print ("Active:",sense.active_power,"W")
  54.         sleep(1)
  55.  
  56.     print ("\nStream Test:")
  57.     start = 0
  58.     i = 0
  59.     for rt in sense.get_realtime_stream():
  60.         print ("Active:",sense.active_power,"W")
  61.         if i > 3: break
  62.         i +=1
  63. #sync_test()
  64. if sys.version_info >= (3, 6):
  65.     async def async_test():
  66.         global sense
  67.         print ("\n\nASYNC Initialize:")
  68.         sense = ASyncSenseable(wss_timeout=2)
  69.         sense.rate_limit = 2
  70.         print ("Authenticate")
  71.         await sense.authenticate(username, password)
  72.  
  73.         loop = asyncio.get_event_loop()  
  74.         print ("\nInitial update realtime and trend:")
  75.         await sense.update_realtime()
  76.         await sense.update_trend_data()
  77.         print ("Active:",sense.active_power,"W")
  78.         print ("Active Solar:",sense.active_solar_power,"W")
  79.         print ("Daily:",sense.daily_usage,"KW")
  80.         print ("Daily Solar:",sense.daily_production,"KW")
  81.         print ("Active Devices:",", ".join(sense.active_devices))
  82.  
  83.         print ("\nRate Limit Test:")
  84.         for i in range(3):
  85.             await sense.update_realtime()
  86.             print ("Active:",sense.active_power,"W")
  87.             await asyncio.sleep(1)
  88.  
  89.         print ("\nStream Test:")
  90.        
  91.     obj = [0]
  92.     async def monitor_it(task):
  93.         while obj[0] < 3:
  94.             await asyncio.sleep(1)
  95.             print ("Tick",obj[0])
  96.         print ("Done")
  97.         task.cancel()
  98.  
  99.  
  100.     sense = 0
  101.     asyncio.get_event_loop().run_until_complete(async_test())
  102.  
  103.     def cb(x):
  104.         print ("Active:",sense.active_power,"W")
  105.         obj[0] += 1
  106.  
  107.     fut = sense.get_realtime_future(cb)
  108.     tasks = [  
  109.         asyncio.ensure_future(fut),
  110.         asyncio.ensure_future(monitor_it(fut)),
  111.     ]
  112.     asyncio.get_event_loop().run_until_complete(asyncio.wait(tasks))
  113.  
  114.  
Advertisement
Add Comment
Please, Sign In to add comment