Files
start-os/agent/src/Lib/External/Metrics/Temperature.hs
Aiden McClelland 95d3845906 0.2.5 initial commit
Makefile incomplete
2020-11-23 13:44:28 -07:00

23 lines
805 B
Haskell

module Lib.External.Metrics.Temperature where
import Startlude
import qualified Data.Attoparsec.Text as A
import qualified Data.Text as T
import Lib.External.Metrics.Types
import System.Process.Text
-- Pi4 Specific
getTemperature :: MonadIO m => m (Maybe Celsius)
getTemperature = liftIO $ do
(ec, tempString, errlog) <- readProcessWithExitCode "/opt/vc/bin/vcgencmd" ["measure_temp"] ""
unless (T.null errlog) $ putStrLn errlog
case ec of
ExitFailure _ -> pure Nothing
ExitSuccess -> case A.parse tempParser tempString of
A.Done _ c -> pure $ Just c
_ -> pure Nothing
tempParser :: A.Parser Celsius
tempParser = A.asciiCI "temp=" *> fmap Celsius A.double <* "'C" <* A.endOfLine