Skip to content

Instantly share code, notes, and snippets.

@kalon33
Created November 19, 2019 09:04
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kalon33/884caf2e2a610ed755753d72cc85042f to your computer and use it in GitHub Desktop.
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
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