Created
November 19, 2019 09:04
-
-
Save kalon33/884caf2e2a610ed755753d72cc85042f to your computer and use it in GitHub Desktop.
Script pour récupérer les infos de Gazpar sur le site GRDF puis les envoyer à un broker MQTT
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import paho.mqtt.client as mqtt | |
import json | |
import ast | |
# Define Variables | |
MQTT_HOST = "localhost" | |
MQTT_PORT = 1883 | |
MQTT_KEEPALIVE_INTERVAL = 3600 | |
MQTT_TOPIC = "Gazpar_payload" | |
import pygazpar | |
client = pygazpar.Client('identifiant_grdf', | |
'mdp_grdf', | |
'/path/to/geckodriver', | |
30, | |
'/tmp') | |
client.update() | |
data = str(client.data()) | |
#print data | |
#MQTT_MSG = json.dumps(data); | |
vrai_json = str('{"releves": ' + str(data) + '}').replace("'","\"").replace("u\"","\""); | |
#print vrai_json | |
datalist = json.loads(vrai_json); | |
MQTT_MSG = json.dumps(datalist['releves'][len(datalist['releves'])-1]); | |
#print datalist | |
# Define on_publish event function | |
def on_publish(client, userdata, mid): | |
# print("Message Published..."); | |
sent = 1; | |
def on_connect(client, userdata, flags, rc): | |
client.subscribe(MQTT_TOPIC); | |
client.publish(MQTT_TOPIC, MQTT_MSG); | |
def on_message(client, userdata, msg): | |
# print(msg.topic) | |
# print(msg.payload) # <- do you mean this payload = {...} ? | |
payload = json.loads(msg.payload); # you can use json.loads to convert string to json | |
# print(datalist['releves'][0]); | |
# print("GRDF data timestamp: " + datalist['releves'][0]['timestamp']); # data retrieval timestamp | |
# print("Latest available Gazpar data: " + datalist['releves'][len(datalist['releves'])-1]['date']); # latest data available to GRDF | |
client.disconnect(); # Got message then disconnect | |
# Initiate MQTT Client | |
mqttc = mqtt.Client(); | |
# Register publish callback function | |
mqttc.on_publish = on_publish; | |
mqttc.on_connect = on_connect; | |
mqttc.on_message = on_message; | |
# Connect with MQTT Broker | |
mqttc.connect(MQTT_HOST, MQTT_PORT, MQTT_KEEPALIVE_INTERVAL); | |
# Loop forever | |
mqttc.loop_forever(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment