Guest User

Untitled

a guest
Dec 8th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. #! /usr/bin/env python3
  2.  
  3. import argparse
  4. import datetime
  5. import influxdb
  6. import sqlite3
  7.  
  8.  
  9. if __name__ == "__main__":
  10. parser = argparse.ArgumentParser()
  11. parser.add_argument(
  12. "-d", "--database",
  13. help="Gadgetbridge exported database file",
  14. required=True,
  15. )
  16. parser.add_argument(
  17. "-t", "--host",
  18. help="Your influxdb host",
  19. type=str,
  20. required=True,
  21. )
  22. parser.add_argument(
  23. "-p", "--port",
  24. help="Your influxdb port",
  25. type=int,
  26. default=8086
  27. )
  28. parser.add_argument(
  29. "-i", "--influxdb",
  30. help="Your influxdb database",
  31. type=str,
  32. required=True
  33. )
  34. # TODO: Fetch this automatically
  35. parser.add_argument(
  36. "--last",
  37. help="Last uploaded timestamp",
  38. type=int,
  39. default=0
  40. )
  41. parser.add_argument(
  42. "--username",
  43. default="root"
  44. )
  45. parser.add_argument(
  46. "--password",
  47. default="root"
  48. )
  49. args = parser.parse_args()
  50.  
  51. client = influxdb.InfluxDBClient(
  52. host=args.host,
  53. port=args.port,
  54. # Passing these as command line arguments is dangerous, don't do that
  55. # unless you are sure you know what you are doing
  56. username=args.username,
  57. password=args.password,
  58. )
  59. client.switch_database(args.influxdb)
  60.  
  61. sql = sqlite3.connect(args.database)
  62.  
  63. # TODO: This is really limited
  64. json_body = []
  65. for timestamp, steps, heart_rate in sql.execute("SELECT TIMESTAMP, STEPS, HEART_RATE FROM MI_BAND_ACTIVITY_SAMPLE WHERE timestamp > ? ORDER BY timestamp ASC", [args.last]):
  66. isodate = datetime.datetime.fromtimestamp(timestamp).isoformat()
  67. json_body.append({
  68. "measurement": "steps",
  69. "time": isodate,
  70. "fields": {
  71. "value": steps
  72. }
  73. })
  74. if heart_rate not in {-1, 0, 255}: # Undefined data?
  75. json_body.append({
  76. "measurement": "heart_rate",
  77. "time": isodate,
  78. "fields": {
  79. "value": heart_rate
  80. }
  81. })
  82. if json_body:
  83. client.write_points(json_body)
  84. print("Inserted {} points".format(len(json_body)))
  85. print("Last valid timestamp {}".format(timestamp))
  86. else:
  87. print("No new data found")
Add Comment
Please, Sign In to add comment