blob: 2ce045f753ee9e5baf088fd8ddec232c034809bb (
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
35
36
37
38
|
#lang racket/base
(require racket/place)
(require racket/match)
(require (file "utils.rkt"))
(provide main)
(define (main #:host [host "localhost"]
#:username [username #f]
#:password [password #f]
#:client-name [client-name "smart-relay"]
#:topic-name [topic-name "hsp/bobma/smart-relay"]
#:relay-dev [relay-dev "/dev/ttyUSB0"])
(define toggle-relay
(make-toggle-relay relay-dev))
(define toggle-blinker-relay
(make-toggle-blinker-relay toggle-relay))
(define (make-mqtt-worker)
(let ((mqtt-worker (dynamic-place (string->path "mqtt-client.rkt") 'main)))
(place-channel-put mqtt-worker (list host
username
password
client-name
topic-name))
mqtt-worker))
(define mqtt-worker (make-mqtt-worker))
(let loop ()
(match (place-channel-get mqtt-worker)
['toggle
(toggle-relay)]
['toggle-blinker
(toggle-blinker-relay)])
(loop)))
|