From a5a95a45d0620c2acb931b4186ea226ea4f82b57 Mon Sep 17 00:00:00 2001 From: Kendrick Chan Date: Mon, 27 Jan 2020 04:03:53 +0800 Subject: [PATCH] Create new mqtt_rider utility script for rider location caching #299 --- utils/mqtt_rider/rider_location_cache.py | 49 ++++++++++++++++++++++ utils/mqtt_rider/rider_location_cache.pyc | Bin 0 -> 2234 bytes utils/mqtt_rider/riderloc.py | 23 ++++++++++ utils/mqtt_rider/riderloc.service | 12 ++++++ utils/rider_location_cache/riderloc.py | 6 +-- 5 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 utils/mqtt_rider/rider_location_cache.py create mode 100644 utils/mqtt_rider/rider_location_cache.pyc create mode 100644 utils/mqtt_rider/riderloc.py create mode 100644 utils/mqtt_rider/riderloc.service diff --git a/utils/mqtt_rider/rider_location_cache.py b/utils/mqtt_rider/rider_location_cache.py new file mode 100644 index 00000000..b7f59977 --- /dev/null +++ b/utils/mqtt_rider/rider_location_cache.py @@ -0,0 +1,49 @@ +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]) + diff --git a/utils/mqtt_rider/rider_location_cache.pyc b/utils/mqtt_rider/rider_location_cache.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a0fd917a82bed349888ad782c4f6f6dfb8c8d0fe GIT binary patch literal 2234 zcmb_d&u`;Y5FW?**==`2ffdVPS&&u=T5Te6;D8W9^Z*BxgL6RmfaTb)=_`(%^?PYm zDSKi0clgUV@&~~8jqP^DwN3h_GtZOx_05dKe@>2G{_^^_OxjO~|KH=dzd&;Q1yYDy z26EYxIOuLdiNlWXOWg1Hfy9H3A4)vz_>sh;jvq@r?)Zts6UlpGj^rH1L-|wWoyf28 zBgy*|;$z7N%A80(ROYedBW0dQK2~PRC|9!yBDVkHv-GE6Bb%H0=PFCRt;(}ByD+y& z26+4fj{5+_z>6kEcRh(#Gd|9GAUqV#aNLI=@blwO2NXlY3{aodj7m%Q1hn3lr7brv zimKYp=X15=kMV#P$$3?qD^sh!@8i~);@l6xWQ8@QpMeu4?rU(1tF&HRUtce3iQWR+lXrnM|v51I#rouRau(Me+)^nl0dPdrxA`~ z^#vG&juimJfE1=Q$G~IGhnUsyZ6Fwk)r|T}?dyxmc~1z4RG|`c+f}u=vHe;b#Il zr@cW9lIT<^U`>G3-`f0P;%o8Q?bn5M7tdk3!-sCzFI*gFy#E7)trf7f-iC7Mwd)#i z@un{az}1sy0Pgot>aR2rYK2_tz>-=6Rv66&T%S=McJi>1M{2f=yH3YITTh)NjRUqw z>!7_MC{36}RcEhewjr1MycO1#n;Q0M-@9AjLpA2xq{{UJb-`M~F literal 0 HcmV?d00001 diff --git a/utils/mqtt_rider/riderloc.py b/utils/mqtt_rider/riderloc.py new file mode 100644 index 00000000..e2503f8c --- /dev/null +++ b/utils/mqtt_rider/riderloc.py @@ -0,0 +1,23 @@ +import paho.mqtt.client as mqtt +import rider_location_cache as rlc +import ssl +import logging + + +client = mqtt.Client() +client.on_connect = rlc.on_connect +# client.on_publish = on_publish +client.on_message = rlc.on_message + +#client.tls_set( +# "/etc/letsencrypt/live/resqaws.jankstudio.com/fullchain.pem", cert_reqs=ssl.CERT_NONE, +# tls_version=ssl.PROTOCOL_TLSv1) +#client.tls_set( +# "/root/aws_ssl_keys/fullchain.pem", cert_reqs=ssl.CERT_NONE, +# tls_version=ssl.PROTOCOL_TLSv1) +#client.connect("resqaws.jankstudio.com", 8883, 60) +client.connect("localhost", 1883, 60) + + +rider_location = rlc.RiderLocationCache() +rider_location.run(client) diff --git a/utils/mqtt_rider/riderloc.service b/utils/mqtt_rider/riderloc.service new file mode 100644 index 00000000..f3d43264 --- /dev/null +++ b/utils/mqtt_rider/riderloc.service @@ -0,0 +1,12 @@ +[Unit] +Description=Rider Location Cache Service +After=mosquitto.service redis.service + +[Service] +Type=simple +ExecStart=/usr/bin/python /root/www/resq/utils/rider_location_cache/riderloc.py +StandardInput=tty-force +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/utils/rider_location_cache/riderloc.py b/utils/rider_location_cache/riderloc.py index 26a1a92f..ca7776b1 100644 --- a/utils/rider_location_cache/riderloc.py +++ b/utils/rider_location_cache/riderloc.py @@ -12,9 +12,9 @@ client.on_message = rlc.on_message #client.tls_set( # "/etc/letsencrypt/live/resqaws.jankstudio.com/fullchain.pem", cert_reqs=ssl.CERT_NONE, # tls_version=ssl.PROTOCOL_TLSv1) -client.tls_set( - "/root/aws_ssl_keys/fullchain.pem", cert_reqs=ssl.CERT_NONE, - tls_version=ssl.PROTOCOL_TLSv1) +#client.tls_set( +# "/root/aws_ssl_keys/fullchain.pem", cert_reqs=ssl.CERT_NONE, +# tls_version=ssl.PROTOCOL_TLSv1) #client.connect("resqaws.jankstudio.com", 8883, 60) client.connect("localhost", 8883, 60)