Skip to content

Commit 5cc3da8

Browse files
authored
Feature/mqtt endpoint (#415)
* add python script for mqtt heartbeat Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com> * add generate proto Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com> * check connection Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com> * enable send broadcast Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com> * specify UDP port and address Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com> * modify Dockerfile Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com> * move directory Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com> * configure action Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com> * comment out description action Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com> * update docker action Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com> * fix yaml Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com> * fix platform Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com> * modify matrix Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com> * remove cleanup runner step Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com> * add restart option Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com> * use keep alive Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com> * update script Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com> --------- Signed-off-by: Masaya Kataoka <ms.kataoka@gmail.com>
1 parent 20e66c3 commit 5cc3da8

File tree

3 files changed

+39
-11
lines changed

3 files changed

+39
-11
lines changed

.github/workflows/docker/mqtt_endpoint/docker-compose.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ services:
33
mqtt_endpoint:
44
image: wamvtan/mqtt_endpoint:latest
55
network_mode: host
6+
restart: always

.github/workflows/docker/mqtt_endpoint/mqtt_endpoint/mqtt_endpoint/main.py

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,45 @@
77
from google.protobuf.json_format import MessageToJson
88

99

10+
def on_connect(client, userdata, flags, rc):
11+
if rc == 0:
12+
print("Connected to MQTT broker")
13+
else:
14+
print(f"Connection failed with code {rc}")
15+
16+
17+
def on_disconnect(client, userdata, rc):
18+
if rc != 0:
19+
print(f"Unexpected disconnection. Reconnecting... (rc={rc})")
20+
time.sleep(5)
21+
try:
22+
client.reconnect()
23+
except Exception as e:
24+
print(f"Reconnection failed: {e}")
25+
26+
1027
def main():
1128
broker = "54.212.20.15"
1229
port = 1883
1330
topic = "miniv/heartbeat"
1431
udp_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
1532

1633
client = mqtt.Client()
34+
client.on_connect = on_connect
35+
client.on_disconnect = on_disconnect
36+
37+
keep_alive_timeout = 1
1738

18-
client.connect(broker, port)
19-
client.loop_start()
39+
try:
40+
client.connect(broker, port, keep_alive_timeout)
41+
client.loop_start()
2042

21-
sequence = 0
22-
message = hardware_communication_msgs__HeartBeat()
23-
time.sleep(1)
24-
while True:
25-
if client.is_connected():
43+
sequence = 0
44+
message = hardware_communication_msgs__HeartBeat()
45+
time.sleep(3)
46+
while True:
47+
if not client.is_connected():
48+
break
2649
sequence = sequence + 1
2750
message.sequence = sequence
2851
print("Send heart beat to EStop")
@@ -31,9 +54,14 @@ def main():
3154
hardware_communication_msgs__HeartBeat.SerializeToString(message),
3255
("192.168.0.103", 4000),
3356
)
34-
else:
35-
print("Does not connected")
36-
time.sleep(1)
57+
time.sleep(keep_alive_timeout)
58+
except KeyboardInterrupt:
59+
print("Exiting...")
60+
except Exception as e:
61+
print(e)
62+
finally:
63+
client.loop_stop()
64+
client.disconnect()
3765

3866

3967
if __name__ == "__main__":

.github/workflows/docker_push.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ jobs:
109109
timeout-minutes: 30
110110
steps:
111111
- uses: actions/checkout@v4
112-
- uses: ./.github/workflows/actions/cleanup_runner
113112
- uses: ./.github/workflows/docker/mqtt_endpoint
114113
with:
115114
docker_username: ${{ secrets.DOCKER_USERNAME }}

0 commit comments

Comments
 (0)