README.md

# Movi

A library for communicating with the [Audeme MOVI™ Voice Control Shield](http://www.audeme.com/movi.html). Be sure to read the documentation provided by Audeme [here](http://www.audeme.com/downloads.html)

## Installation

    1. git clone https://github.com/NationalAssociationOfRealtors/movi.git
    2. mix do deps.get, deps.compile
    3. iex -S mix

## Usage

View the Client API in `Movi.Client` you have access to the whole Low Level interface provided by MOVI Serial interface. All events are broadcast over `Movi.Client.Events`

### Some usage examples

#### Assign a callsign

    iex(1)> Movi.Client.callsign("Elixir")
    :ok
    iex(2)>
    16:37:07.799 [debug] Event: %Movi.Event{code: 213, message: ["New", "callsign", "trained."]}

    16:37:13.603 [debug] Event: %Movi.Event{code: 112, message: ["The", "call", "sign", "is:", "ELIXIR"]}

    16:37:13.627 [debug] Event: %Movi.Event{code: 105, message: ["READY"]}

#### Add sentence

    iex(6)> Movi.Client.addsentence("turn lights on")
    :ok
    iex(7)>
    16:39:14.370 [debug] Event: %Movi.Event{code: 211, message: ["Sentence", "added", "to", "cache."]}

#### Train sentence

    iex(9)> Movi.Client.trainsentences()
    :ok
    iex(10)>
    16:41:26.138 [debug] Event: %Movi.Event{code: 212, message: ["Sentences", "trained."]}

    16:41:31.872 [debug] Event: %Movi.Event{code: 112, message: ["The", "call", "sign", "is:", "ELIXIR"]}

    16:41:31.896 [debug] Event: %Movi.Event{code: 105, message: ["READY"]}

#### Say Sentence

    iex(13)> Movi.Client.say("Elixir is awesome")
    :ok
    iex(14)>
    16:42:14.039 [debug] Event: %Movi.Event{code: 150, message: ["SPEAKING"]}

    16:42:16.323 [debug] Event: %Movi.Event{code: 151, message: ["END", "SPEAKING"]}

#### Events for incoming speech recognition

    iex(1)>
    16:45:17.474 [debug] Event: %Movi.Event{code: 200, message: ["CALLSIGN", "DETECTED"]}

    16:45:17.936 [debug] Event: %Movi.Event{code: 140, message: ["ACTIVELISTEN"]}

    16:45:20.671 [debug] Event: %Movi.Event{code: 141, message: ["END", "ACTIVELISTEN"]}

    16:45:21.277 [debug] Event: %Movi.Event{code: 201, message: ["TURN", "LIGHTS", "ON"]}

    16:45:21.476 [debug] Event: %Movi.Event{code: 202, message: ["#0"]}