resq/utils/mqtt_rider/rider_location_cache.py

49 lines
1.2 KiB
Python

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])