import smbus2
import bme280
import json
import paho.mqtt.client as paho

mqttbroker="rpi-bram"
mqttport=1883

def on_publish(client,userdata,result):             #create function for callback
    print("data published \n")
    pass

i2cport = 1
i2caddress = 0x76
i2cbus = smbus2.SMBus(i2cport)

calibration_params = bme280.load_calibration_params(i2cbus, i2caddress)

# the sample method will take a single reading and return a
# compensated_reading object
data = bme280.sample(i2cbus, i2caddress, calibration_params)

# the compensated_reading class has the following attributes
payload = { 'currenttime': str(data.timestamp),
 'id': str(data.id),
 'temperature': data.temperature,
 'pressure': data.pressure,
 'humidity': data.humidity
}

payload_json = json.dumps(payload)

print (payload_json)

mqttcli = paho.Client("rpi-bram01")                      #create client object
mqttcli.on_publish = on_publish                          #assign function to callback
mqttcli.connect(mqttbroker,mqttport)                     #establish connection
ret= mqttcli.publish("/cam1/bme280/",payload_json)  #publish
mqttcli.disconnect()