summaryrefslogtreecommitdiffstats
path: root/src/mqtt-client.rkt
diff options
context:
space:
mode:
authorjdlugosz963 <jdlugosz963@gmail.com>2024-07-30 11:57:23 +0200
committerjdlugosz963 <jdlugosz963@gmail.com>2024-07-30 11:57:23 +0200
commit78740ba7206ec0895be4aebedd308d409bc1dbb5 (patch)
tree96243f03c0d50841ccfd4096545543ac09381536 /src/mqtt-client.rkt
parent8f08fd044e505d63837fc747c31b2dbb1ab4688d (diff)
downloadsmart-relay-master.tar.gz
smart-relay-master.zip
Add new command: toggle-blinker.HEADmaster
Diffstat (limited to 'src/mqtt-client.rkt')
-rw-r--r--src/mqtt-client.rkt34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/mqtt-client.rkt b/src/mqtt-client.rkt
new file mode 100644
index 0000000..dfe0a1f
--- /dev/null
+++ b/src/mqtt-client.rkt
@@ -0,0 +1,34 @@
1#lang racket/base
2
3(require racket/place)
4(require racket/match)
5(require mqtt-client)
6(require (file "utils.rkt"))
7
8(provide main)
9
10(define (main c)
11 (displayln "MQTT WORKER")
12 (match (place-channel-get c)
13 [(list host username password client-name topic-name)
14 (mqtt/with-client (host client-name)
15 (mqtt/with-connection (#:keep-alive-interval 20
16 #:clean-session #t
17 #:username username
18 #:password password)
19
20
21 (mqtt/with-qos ('qos-1)
22 (mqtt/subscribe topic-name)
23 (let loop ()
24 (mqtt/with-message-recv (topic payload)
25 (displayln (format "Message \"~a\" recieved on topic \"~a\"" payload topic))
26 (let* ((payload (bytes->string/utf-8 payload))
27 (payload=? (lambda (what)
28 (string=? payload
29 what))))
30 (when (or (payload=? "toggle")
31 (payload=? "toggle-blinker"))
32 (place-channel-put c (string->symbol payload)))))
33 (loop)))))]))
34