tesla-0.4.1.2: Tesla API client.
Safe HaskellNone
LanguageHaskell2010

Tesla.Car

Description

Access of car-specific APIs.

Synopsis

Car Monad and related types.

data Car m a Source #

Car Monad for accessing car-specific things.

Instances

Instances details
Monad m => Monad (Car m) Source # 
Instance details

Defined in Tesla.Car

Methods

(>>=) :: Car m a -> (a -> Car m b) -> Car m b #

(>>) :: Car m a -> Car m b -> Car m b #

return :: a -> Car m a #

Functor m => Functor (Car m) Source # 
Instance details

Defined in Tesla.Car

Methods

fmap :: (a -> b) -> Car m a -> Car m b #

(<$) :: a -> Car m b -> Car m a #

MonadFail m => MonadFail (Car m) Source # 
Instance details

Defined in Tesla.Car

Methods

fail :: String -> Car m a #

Applicative m => Applicative (Car m) Source # 
Instance details

Defined in Tesla.Car

Methods

pure :: a -> Car m a #

(<*>) :: Car m (a -> b) -> Car m a -> Car m b #

liftA2 :: (a -> b -> c) -> Car m a -> Car m b -> Car m c #

(*>) :: Car m a -> Car m b -> Car m b #

(<*) :: Car m a -> Car m b -> Car m a #

MonadIO m => MonadIO (Car m) Source # 
Instance details

Defined in Tesla.Car

Methods

liftIO :: IO a -> Car m a #

MonadUnliftIO m => MonadUnliftIO (Car m) Source # 
Instance details

Defined in Tesla.Car

Methods

withRunInIO :: ((forall a. Car m a -> IO a) -> IO b) -> Car m b #

MonadThrow m => MonadThrow (Car m) Source # 
Instance details

Defined in Tesla.Car

Methods

throwM :: Exception e => e -> Car m a #

MonadCatch m => MonadCatch (Car m) Source # 
Instance details

Defined in Tesla.Car

Methods

catch :: Exception e => Car m a -> (e -> Car m a) -> Car m a #

MonadMask m => MonadMask (Car m) Source # 
Instance details

Defined in Tesla.Car

Methods

mask :: ((forall a. Car m a -> Car m a) -> Car m b) -> Car m b #

uninterruptibleMask :: ((forall a. Car m a -> Car m a) -> Car m b) -> Car m b #

generalBracket :: Car m a -> (a -> ExitCase b -> Car m c) -> (a -> Car m b) -> Car m (b, c) #

MonadLogger m => MonadLogger (Car m) Source # 
Instance details

Defined in Tesla.Car

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> Car m () #

runCar :: MonadIO m => IO AuthInfo -> VehicleID -> Car m a -> m a Source #

Run a Car Monad with the given Vehicle ID

runNamedCar :: MonadIO m => Text -> IO AuthInfo -> Car m a -> m a Source #

Run a Car Monad by looking up a car by name.

type VehicleID = Text Source #

A VehicleID.

Requests

vehicleData :: MonadIO m => Car m VehicleData Source #

Fetch the VehicleData.

nearbyChargers :: MonadIO m => Car m [Charger] Source #

Get the nearby chargers.

vehicleStatus :: MonadIO m => Car m VehicleState Source #

vehicleStatus returns the current status of the current vehicle.

isAwake :: MonadIO m => Car m Bool Source #

isAwake returns true if the current vehicle is awake and online.

Convenience functions for examining VehicleData

type VehicleData = ByteString Source #

Giant blob of VehicleData describing all known state of the vehicle.

This is not separated into discrete A VehicleIDfields because that's easy enough to do with Aeson and Lens when you need it but some convenience methods for common | A VehicleIDaccesses are available in this module.

isUserPresent :: VehicleData -> Bool Source #

True if a user is present in the vehicle.

isCharging :: VehicleData -> Bool Source #

True of the vehicle is currently charging.

teslaTS :: VehicleData -> UTCTime Source #

Get the timestamp from this VehicleData or error if there isn't one.

maybeTeslaTS :: VehicleData -> Maybe UTCTime Source #

Get the timestamp from this VehicleData if present.

data Door Source #

The various doors.

Instances

Instances details
Bounded Door Source # 
Instance details

Defined in Tesla.Car

Enum Door Source # 
Instance details

Defined in Tesla.Car

Methods

succ :: Door -> Door #

pred :: Door -> Door #

toEnum :: Int -> Door #

fromEnum :: Door -> Int #

enumFrom :: Door -> [Door] #

enumFromThen :: Door -> Door -> [Door] #

enumFromTo :: Door -> Door -> [Door] #

enumFromThenTo :: Door -> Door -> Door -> [Door] #

Eq Door Source # 
Instance details

Defined in Tesla.Car

Methods

(==) :: Door -> Door -> Bool #

(/=) :: Door -> Door -> Bool #

Show Door Source # 
Instance details

Defined in Tesla.Car

Methods

showsPrec :: Int -> Door -> ShowS #

show :: Door -> String #

showList :: [Door] -> ShowS #

data OpenState a Source #

Constructors

Closed a 
Open a 

Instances

Instances details
Eq a => Eq (OpenState a) Source # 
Instance details

Defined in Tesla.Car

Methods

(==) :: OpenState a -> OpenState a -> Bool #

(/=) :: OpenState a -> OpenState a -> Bool #

Show a => Show (OpenState a) Source # 
Instance details

Defined in Tesla.Car

_Open :: forall a. Prism' (OpenState a) a Source #

_Closed :: forall a. Prism' (OpenState a) a Source #

doors :: VehicleData -> Maybe [OpenState Door] Source #

Return a list of doors and their OpenState.

openDoors :: VehicleData -> [Door] Source #

Return a list of open doors.

Charger Info

data Location Source #

Location, Location, Location.

Constructors

Location 

Fields

Instances

Instances details
Show Location Source # 
Instance details

Defined in Tesla.Car

Generic Location Source # 
Instance details

Defined in Tesla.Car

Associated Types

type Rep Location :: Type -> Type #

Methods

from :: Location -> Rep Location x #

to :: Rep Location x -> Location #

FromJSON Location Source # 
Instance details

Defined in Tesla.Car

type Rep Location Source # 
Instance details

Defined in Tesla.Car

type Rep Location = D1 ('MetaData "Location" "Tesla.Car" "tesla-0.4.1.2-5Rjm5OIWfKA5VHBALJ8MRy" 'False) (C1 ('MetaCons "Location" 'PrefixI 'True) (S1 ('MetaSel ('Just "_lat") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double) :*: S1 ('MetaSel ('Just "_lon") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double)))

data DestinationCharger Source #

A destination charger (provided by nearbyChargers).

Instances

Instances details
Show DestinationCharger Source # 
Instance details

Defined in Tesla.Car

Generic DestinationCharger Source # 
Instance details

Defined in Tesla.Car

Associated Types

type Rep DestinationCharger :: Type -> Type #

FromJSON DestinationCharger Source # 
Instance details

Defined in Tesla.Car

type Rep DestinationCharger Source # 
Instance details

Defined in Tesla.Car

type Rep DestinationCharger = D1 ('MetaData "DestinationCharger" "Tesla.Car" "tesla-0.4.1.2-5Rjm5OIWfKA5VHBALJ8MRy" 'False) (C1 ('MetaCons "DestinationCharger" 'PrefixI 'True) (S1 ('MetaSel ('Just "_location") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Location) :*: (S1 ('MetaSel ('Just "_name") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "_distance_miles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double))))

data Supercharger Source #

A supercharger (provided by nearbyChargers).

Instances

Instances details
Show Supercharger Source # 
Instance details

Defined in Tesla.Car

Generic Supercharger Source # 
Instance details

Defined in Tesla.Car

Associated Types

type Rep Supercharger :: Type -> Type #

FromJSON Supercharger Source # 
Instance details

Defined in Tesla.Car

type Rep Supercharger Source # 
Instance details

Defined in Tesla.Car

data Charger Source #

Eitehr a Supercharger or Destination charger.

Instances

Instances details
Show Charger Source # 
Instance details

Defined in Tesla.Car

superchargers :: [Charger] -> [Supercharger] Source #

Return only the superchargers from a Charger list.

destinationChargers :: [Charger] -> [DestinationCharger] Source #

Return only the destination chargers from a Charger list.

Lenses

name :: HasName s a => Lens' s a Source #

location :: HasLocation s a => Lens' s a Source #

distance_miles :: HasDistance_miles s a => Lens' s a Source #

available_stalls :: HasAvailable_stalls s a => Lens' s a Source #

total_stalls :: HasTotal_stalls s a => Lens' s a Source #

site_closed :: HasSite_closed s a => Lens' s a Source #

Probably uninteresting internals

vehicleURL :: VehicleID -> String -> String Source #

Get the URL for a named endpoint for a given vehicle.

currentVehicleID :: MonadReader CarEnv m => m VehicleID Source #

Get the current vehicle ID from the Car Monad.

Orphan instances

(Monad m, MonadIO m, MonadReader CarEnv m) => HasTeslaAuth m Source # 
Instance details