Advertisement
malden

Untitled

Nov 15th, 2017
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. # ------------------------------------------
  2. # --- Author: Mladen Simeunovic
  3. # --- Company: Telos d.o.o.
  4. # --- Date: October 2017
  5. # --- Version: 1.0
  6. # --- Python Ver: 2.7
  7. #
  8. # --- Name: mosquitto_sub2MySQL
  9. #
  10. # ------------------------------------------
  11.  
  12. import paho.mqtt.client as mqtt
  13. import json
  14. import mysql.connector
  15. from datetime import datetime
  16.  
  17. # Ura in datum
  18. timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
  19.  
  20.  
  21. # Prijava na Topic
  22. MQTT_Topic = "+/+/+/+/+"
  23.  
  24. # DB podatki
  25. db = mysql.connector.connect(user='<user>', password='<password>', host='<ip-address>', database='<database>', use_pure=False)
  26. cursor = db.cursor()
  27.  
  28. # Izpis ob prijavi na brokerja
  29. def on_connect(client, userdata, flags, rc):
  30. print("Connected to Telos Lora Network server with result code " + str(rc) + ", subscribed on topic " + str(
  31. MQTT_Topic))
  32. print("*" * 200)
  33. # Prijava na tpic
  34. client.subscribe(MQTT_Topic)
  35.  
  36. # Live izpis prijeve na novice (Topic)
  37. def on_message(client, userdata, msg):
  38. podatki = json.loads(msg.payload)
  39. rxinfo = podatki["rxInfo"]
  40. dumprxinfo = json.dumps(rxinfo[0])
  41. endnode = json.loads(dumprxinfo)
  42.  
  43.  
  44. # Shrani v variable GW podatke
  45. gNAME = str(endnode["name"])
  46. gDEVEUI = str(endnode["mac"])
  47. gRSSI = str(endnode["rssi"])
  48. gSNR = str(endnode["loRaSNR"])
  49. gLAT = str(endnode["latitude"])
  50. gLON = str(endnode["longitude"])
  51. gALT = str(endnode["altitude"])
  52. gCDR = str(podatki["txInfo"]["codeRate"])
  53. gFRE = str(podatki["txInfo"]["frequency"])
  54. gMOD = str(podatki["txInfo"]["dataRate"]["modulation"])
  55. gBW = str(podatki["txInfo"]["dataRate"]["bandwidth"])
  56. gSF = str(podatki["txInfo"]["dataRate"]["spreadFactor"])
  57. gADR = str(podatki["txInfo"]["codeRate"])
  58.  
  59. # Shrani v variable Node podatke
  60. nNAME = str(podatki["nodeName"])
  61. nAPPNAME = str(podatki["applicationName"])
  62. nDEVEUI = str(podatki["devEUI"])
  63. nFCNT = str(podatki["fCnt"])
  64. nFPORT = str(podatki["fPort"])
  65. nDATA = str(podatki["data"])
  66.  
  67. timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
  68. print(timestamp)
  69.  
  70. # Vpis v DB
  71. try:
  72. cursor.execute(
  73. "INSERT INTO gwdata (Name, ura, DevEUI, RSSI, SNR, Lat, Lon, Alt, CodeRate, Freq, Modulation, Bandwidth, SpreadFactor, Adr ) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",
  74. (gNAME, timestamp, gDEVEUI, gRSSI, gSNR, gLAT, gLON, gALT, gCDR, gFRE, gMOD, gBW, gSF, gADR,))
  75. cursor.execute(
  76. "INSERT INTO nodedata (Time, Name, AppName, DevEUI, fCnt, fPort, Data) VALUES (%s,%s,%s,%s,%s,%s,%s)",
  77. (timestamp, nNAME, nAPPNAME, nDEVEUI, nFCNT, nFPORT, nDATA))
  78.  
  79. db.commit()
  80. except:
  81. db.rollback()
  82.  
  83.  
  84. client = mqtt.Client()
  85. client.on_connect = on_connect
  86. client.on_message = on_message
  87.  
  88. # Podatki mosquitto brokerja
  89. client.connect("<broker ip-address>", <broker port>, 60)
  90.  
  91. client.loop_forever()
  92. db.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement