blob: 9f548fcced66b6a42ae2e3e474bb2eb6554c7aa8 (
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
|
(ns app.temperature
(:import (java.nio.charset StandardCharsets)
(java.nio.file Files Paths)
(java.util.concurrent Executors TimeUnit)))
(def temp (agent nil))
(defn poll
[state]
(let [path (Paths/get "/sys/bus/w1/devices" (make-array String 0))
devices (Files/newDirectoryStream path "28-*")
files (map #(.resolve % "w1_slave") devices)
temperatures (map (fn [file]
(let [id (.. file
(getName 4)
(toString)
(substring 3))
temp (-> (Files/readAllLines
file StandardCharsets/UTF_8)
(second)
(.split "t=")
(second))]
[id temp])) files)]
(assoc state :state temperatures)))
(defn init
[]
(let [executor (Executors/newSingleThreadScheduledExecutor)]
(.scheduleAtFixedRate executor #(send temp poll) 0 10 TimeUnit/SECONDS)))
|