blob: dfe0a1fe9009451ac4500a67c931bca907ed6a03 (
plain)
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
|
#lang racket/base
(require racket/place)
(require racket/match)
(require mqtt-client)
(require (file "utils.rkt"))
(provide main)
(define (main c)
(displayln "MQTT WORKER")
(match (place-channel-get c)
[(list host username password client-name topic-name)
(mqtt/with-client (host client-name)
(mqtt/with-connection (#:keep-alive-interval 20
#:clean-session #t
#:username username
#:password password)
(mqtt/with-qos ('qos-1)
(mqtt/subscribe topic-name)
(let loop ()
(mqtt/with-message-recv (topic payload)
(displayln (format "Message \"~a\" recieved on topic \"~a\"" payload topic))
(let* ((payload (bytes->string/utf-8 payload))
(payload=? (lambda (what)
(string=? payload
what))))
(when (or (payload=? "toggle")
(payload=? "toggle-blinker"))
(place-channel-put c (string->symbol payload)))))
(loop)))))]))
|