-
Notifications
You must be signed in to change notification settings - Fork 0
/
threadPublishAMessage.py
61 lines (47 loc) · 1.31 KB
/
threadPublishAMessage.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/env python3
import threading
from threading import Thread
import json
import time
import socket
from getmac import get_mac_address as gma
#Lock declaration
threadLock = threading.Lock()
def informationAboutTheHost():
result = []
try:
#IP address
result.append(str(socket.gethostname()))
#Hostname
result.append(socket.gethostbyname(str(result[0])))
#MacAddress
result.append(gma())
except:
print("Unable to get Hostname, IP and MacAddress")
try:
#Time since epoch in seconds
result.append(str(time.time()))
except:
print("Unable to append time")
return result
class ThreadPublishAMessage(Thread):
def __init__(self, client):
Thread.__init__(self)
self.client = client
def run(self):
# Extract the variables
client = self.client
result = informationAboutTheHost()
dictonaryMessageOut = {
"hostname": str(result[0]),
"IPAddress": str(result[1]),
"MacAddress": str(result[2]),
"StartTime": str(result[3])
}
JSONMessageOut = json.dumps(dictonaryMessageOut)
threadLock.acquire()
#Publishing the hostname, IP address, MacAddress and "start time"
print("I'm publishing a messagge...")
client.publish(topic="networkInformationAbout/" + str(result[2]) + "/from", payload = JSONMessageOut, qos=1, retain=True)
threadLock.release()
print("Message published!")