Skip to content
This repository was archived by the owner on Dec 14, 2021. It is now read-only.

Commit 36af044

Browse files
committed
grpc: Add a way to change discovery server address and to use an mqtt address which format is not <domain>:<port> but only <domain>
1 parent 198ea34 commit 36af044

File tree

3 files changed

+28
-16
lines changed

3 files changed

+28
-16
lines changed

.editorconfig

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ root = true
22

33
[*]
44
indent_style = space
5-
indent_size = 2
5+
indent_size = 4
66
end_of_line = lf
77
insert_final_newline = true
88
trim_trailing_whitespace = true

test_ttnmqtt.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def closecallback(res, client):
4343
print(res)
4444
assert res
4545

46-
ttn_client = mqtt(appID, accessKey, mqttAddress)
46+
ttn_client = mqtt(appID, accessKey, mqttAddress=mqttAddress)
4747
ttn_client.set_connect_callback(connectcallback)
4848
ttn_client.set_close_callback(closecallback)
4949
time.sleep(2)
@@ -56,7 +56,7 @@ def uplinkcallback(message, client):
5656
print(message)
5757
assert message.payload_raw == 'AQ=='
5858

59-
ttn_client = mqtt(appID, accessKey, mqttAddress)
59+
ttn_client = mqtt(appID, accessKey, mqttAddress=mqttAddress)
6060
ttn_client.set_uplink_callback(uplinkcallback)
6161
time.sleep(2)
6262
ttn_client._MQTTClient__client.publish(
@@ -68,7 +68,7 @@ def uplinkcallback(message, client):
6868

6969
def test_connect_error():
7070

71-
ttn_client = mqtt(appID, accessKey, 'badAddress:5555')
71+
ttn_client = mqtt(appID, accessKey, mqttAddress='badAddress:5555')
7272
ttn_client.close()
7373
print(ttn_client.ErrorMsg)
7474
assert ttn_client.ErrorMsg == ("Connection failed: wrong appID,"
@@ -81,7 +81,7 @@ def downlinkcallback(mid, client):
8181
print(mid)
8282
assert mid == 2
8383

84-
ttn_client = mqtt(appID, accessKey, mqttAddress)
84+
ttn_client = mqtt(appID, accessKey, mqttAddress=mqttAddress)
8585
ttn_client.set_downlink_callback(downlinkcallback)
8686
time.sleep(2)
8787
ttn_client.send('guest', "AQ==")
@@ -95,7 +95,7 @@ def downlinkcallback(mid, client):
9595
print(mid)
9696
assert mid == 2
9797

98-
ttn_client = mqtt(appID, accessKey, mqttAddress)
98+
ttn_client = mqtt(appID, accessKey, mqttAddress=mqttAddress)
9999
ttn_client.set_downlink_callback(downlinkcallback)
100100
time.sleep(2)
101101
ttn_client.send('guest', {"field1": 1, "field2": 2})
@@ -109,7 +109,7 @@ def downlinkcallback(mid, client):
109109
print(mid)
110110
assert mid == 2
111111

112-
ttn_client = mqtt(appID, accessKey, mqttAddress)
112+
ttn_client = mqtt(appID, accessKey, mqttAddress=mqttAddress)
113113
ttn_client.set_downlink_callback(downlinkcallback)
114114
time.sleep(2)
115115
ttn_client.send('guest', "AQ==", 2, True, "first")

ttnmqtt/ttnmqtt.py

+21-9
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,18 @@ class MyEvents(Events):
5858

5959
class MQTTClient:
6060

61-
def __init__(self, appID, appAccessKey, mqttAddress=""):
61+
def __init__(self, appID, appAccessKey, **kwargs):
6262
self.__client = mqtt.Client()
6363
self.__appID = appID
6464
self.__accessKey = appAccessKey
6565
self.__events = MyEvents()
66-
self.__mqttAddress = mqttAddress
66+
self.__mqttAddress = ""
67+
self.__discoveryAddress = ""
68+
for k, v in kwargs.iteritems():
69+
if k == "mqttAddress":
70+
self.__mqttAddress = v
71+
if k == "discoveryAddress":
72+
self.__discoveryAddress = v
6773
self.ErrorMsg = ""
6874
try:
6975
self.connect()
@@ -81,9 +87,12 @@ def connect(self):
8187
self.__client.username_pw_set(self.__appID, self.__accessKey)
8288
if self.__mqttAddress == "":
8389
creds = grpc.ssl_channel_credentials()
84-
channel = grpc.secure_channel(
85-
'discovery.thethings.network:1900',
86-
creds)
90+
if self.__discoveryAddress == "":
91+
channel = grpc.secure_channel(
92+
'discovery.thethings.network:1900',
93+
creds)
94+
else:
95+
channel = grpc.secure_channel(self.__discoveryAddress, creds)
8796
stub = discovery_pb2_grpc.DiscoveryStub(channel)
8897
req = discovery_pb2.GetByAppIDRequest()
8998
req.app_id = self.__appID
@@ -94,10 +103,13 @@ def connect(self):
94103
port = int(split[1])
95104
self.__client.connect(address, port, 60)
96105
else:
97-
split = self.__mqttAddress.split(':')
98-
address = split[0]
99-
port = int(split[1])
100-
self.__client.connect(address, port, 60)
106+
if ':' in self.__mqttAddress:
107+
split = self.__mqttAddress.split(':')
108+
address = split[0]
109+
port = int(split[1])
110+
else:
111+
address = self.__mqttAddress
112+
self.__client.connect(address, port, 60)
101113

102114
def _onConnect(self):
103115
def on_connect(client, userdata, flags, rc):

0 commit comments

Comments
 (0)