import paho.mqtt.client as mqtt import ssl import redis import time import signal import sys import os import json class RiderLocationCache(object): def run(self, client): print "running loop..." client.loop_forever() # TODO: fix this and put these guys back under the class def init_subscriptions(client): print "subscribing to rider/+/location" client.subscribe('rider/+/location') def on_connect(client, userdata, flags, rc): init_subscriptions(client) #print("Connected with result code "+str(rc)) # client.subscribe("$SYS/#") def user_data_set(userdata): conn = redis.StrictRedis(host='localhost', port=6379, db=0) return conn def on_publish(client, userdata, mid): pass def on_message(client, userdata, message): # TODO: persist redis connection redis_conn = user_data_set(userdata) #print("message topic=", message.topic[0:10]) topic_split = message.topic.split('/') if topic_split[0] != 'rider': return; payload_split = message.payload.split(':') #print repr(message) rider_long = str(res['longitude']) rider_lat = str(res['latitude']) # set the location redis_conn.geoadd('rider_active', rider_long, rider_lat, topic_split[1])