Guest User

Untitled

a guest
Aug 16th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.21 KB | None | 0 0
  1. import sys
  2. sys.path.insert(0, "..")
  3. import time
  4. import datetime
  5. import subprocess
  6. import logging
  7.  
  8. from opcua import Server
  9. import BMP085
  10. import mysql.connector as mysql
  11.  
  12. ##### Sensor Data of BMP180 ######################
  13. bmp = BMP085.BMP085()
  14. temperature =bmp.read_temperature()
  15. altitude = bmp.read_altitude()
  16. pressure = bmp.read_pressure()
  17. ################################################
  18.  
  19. if __name__ == "__main__":
  20. logging.basicConfig(level = logging.WARNING)
  21.  
  22. # get Objects node, this is where we should put our nodes
  23. # setup our server
  24. server = Server()
  25. server.set_endpoint("opc.tcp://192.168.1.10:4840/freeopcua/server/")
  26.  
  27. # setup our own namespace, not really necessary but should as spec
  28. uri = "http://192.168.1.10:4840/freeopcua/server/"
  29. idx = server.register_namespace(uri)
  30.  
  31. # get Objects node, this is where we should put our nodes
  32. objects = server.get_objects_node()
  33.  
  34. # populating our address space
  35. ################################### Object ####################################################
  36. sensordata = objects.add_object(idx, "Sensor One BMP180")
  37. ############################# Variables of Object #############################################
  38. temp_var_node= sensordata.add_variable(idx, "Temperature Sensor One", temperature)
  39. print("the temp_var_node is:", temp_var_node)
  40. altit_var_node = sensordata.add_variable(idx, "Altitude Sensor One", altitude)
  41. print("the altit_var_node is:", altit_var_node)
  42. press_var_node = sensordata.add_variable(idx, "Pressure Sensor One", pressure)
  43. print("the pressure_var_node is:", press_var_node)
  44. #################### Set MyVariable to be writable by clients #################################
  45.  
  46. temp_var_node.set_writable()# Set MyVariable to be writable by clients
  47. altit_var_node.set_writable()
  48. press_var_node.set_writable()
  49.  
  50. ######################### Sending data values of variables to the database ####################################
  51.  
  52. db = mysql.connect(host = '192.168.1.15',port = 3306,user = 'root',password = 'admin',database = 'OPCUA')
  53. cursor = db.cursor()
  54. delete = "DROP TABLE sensorBMP180_raspberrypi2"
  55. cursor.execute(delete)
  56.  
  57. sql = """CREATE TABLE sensorBMP180_raspberrypi2 (
  58. temperature DOUBLE,
  59. altitude INT,
  60. pressure INT)"""
  61. cursor.execute(sql)
  62.  
  63. # starting de server OPCUA!
  64. server.start()
  65. try:
  66.  
  67. while True:
  68. ############## Values on UaExpert ###########################################
  69. temp_var_node.set_value(bmp.read_temperature())
  70. time.sleep(2)
  71. altit_var_node.set_value(bmp.read_altitude())
  72. time.sleep(2)
  73. press_var_node.set_value(bmp.read_pressure())
  74. time.sleep(2)
  75. ################## Values to DataBase #########################################
  76. temperature = bmp.read_temperature()
  77. pressure = bmp.read_pressure()
  78. altitude = bmp.read_altitude()
  79. time.sleep(2)
  80. cursor.execute("""INSERT INTO sensorBMP180_raspberrypi2 VALUES (%s, %s, %s)""",(temperature,pressure,altitude))
  81. db.commit()
  82.  
  83. finally:
  84.  
  85. #close connection, remove subcsriptions, etc
  86. server.stop()
  87. db.close()
  88. #################################################################################
  89.  
  90. cursor.execute("""INSERT INTO sensorBMP180_raspberrypi2 VALUES (%s, %s, %s)""",(temperature,pressure,altitude))
Add Comment
Please, Sign In to add comment