diff options
author | jdlugosz963 <jdlugosz963@gmail.com> | 2024-07-30 11:57:23 +0200 |
---|---|---|
committer | jdlugosz963 <jdlugosz963@gmail.com> | 2024-07-30 11:57:23 +0200 |
commit | 78740ba7206ec0895be4aebedd308d409bc1dbb5 (patch) | |
tree | 96243f03c0d50841ccfd4096545543ac09381536 /src/mqtt-client.rkt | |
parent | 8f08fd044e505d63837fc747c31b2dbb1ab4688d (diff) | |
download | smart-relay-78740ba7206ec0895be4aebedd308d409bc1dbb5.tar.gz smart-relay-78740ba7206ec0895be4aebedd308d409bc1dbb5.zip |
Diffstat (limited to 'src/mqtt-client.rkt')
-rw-r--r-- | src/mqtt-client.rkt | 34 |
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 | |||