# Mycroft Binding
This binding connects to Mycroft A.I. in order to control it or react to events by listening on the message bus.
Possibilies include:
- Press a button in openHAB to wake Mycroft without using a wake word.
- Simulate a voice command to launch a skill, as if you just spoke it
- Send some text that Mycroft will say (Using its Text To Speech service)
- Control the music player
- Mute the sound volume of Mycroft
- React to all the aforementioned events ...
- ... and send/receive any other kind of messages on the message bus
# Supported Things
The only thing managed by this binding is a Mycroft instance
Thing Type ID | Description |
---|---|
mycroft | A Mark I/II, a Picroft, or any other variant exposing the message bus |
# Discovery
There is no discovery service, as Mycroft doesn't announce itself on the network.
# Thing Configuration
The configuration is simple, as you just need to give the IP/hostname of the Mycroft instance accessible on the network. The default port is 8181, which can be changed.
Thing mycroft:mycroft:myMycroft "Mycroft A.I." @ "Living Room" [host="192.168.X.X"]
property | type | description | mandatory |
---|---|---|---|
host | IP or string | IP address or hostname | Yes |
port | integer | Port to reach Mycroft (default 8181) | No |
volume_restoration_level | integer | When unmuted, force Mycroft to restore volume to this value | No |
# Channels
A Mycroft thing has the following channels:
channel type id | Item type | description |
---|---|---|
listen | Switch | Switch to ON when Mycroft is listening. Can simulate a wake word detection to trigger the STT |
speak | String | The last sentence Mycroft speaks |
utterance | String | The last utterance Mycroft receive |
player | Player | The music player Mycroft is currently controlling |
volume_mute | Switch | Mute the Mycroft speaker |
volume | Dimmer | The volume of the Mycroft speaker. (Note: Value unreliable until a volume change occurred) |
full_message | String | The last message (full json) seen on the Mycroft Bus. Filtered by the messageTypes properties |
The channel 'full_message' has the following configuration available:
property | type | description | mandatory |
---|---|---|---|
messageTypes | List of string, comma separated | Only these message types will be forwarded to the Full Message Channel | No |
# Full Example
A manual setup through a things/mycroft.things
file could look like this:
Thing mycroft:mycroft:myMycroft "Mycroft A.I." @ "Living Room" [host="192.168.X.X", port=8181] {
Channels:
Type full-message-channel : Text [
messageTypes="message.type.1,message.type.4"
]
}
# Item Configuration
The mycroft.item
file:
Switch myMycroft_mute "Mute" { channel="mycroft:mycroft:myMycroft:volume_mute" }
Dimmer myMycroft_volume "Volume [%d]" { channel="mycroft:mycroft:myMycroft:volume" }
Player myMycroft_player "Control" { channel="mycroft:mycroft:myMycroft:player" }
Switch myMycroft_listen "Wake and listen" { channel="mycroft:mycroft:myMycroft:listen" }
String myMycroft_speak "Speak STT" { channel="mycroft:mycroft:myMycroft:speak" }
String myMycroft_utterance "Utterance" { channel="mycroft:mycroft:myMycroft:utterance" }
String myMycroft_fullmessage "Full JSON message" { channel="mycroft:mycroft:myMycroft:full_message" }
# Sitemap Configuration
A demo.sitemap
file:
sitemap demo label="myMycroft"
{
Frame label="myMycroft" {
Switch item=myMycroft_mute
Slider item=myMycroft_volume
Default item=myMycroft_player
Switch item=myMycroft_listen
Text item=myMycroft_speak
Text item=myMycroft_utterance
Text item=myMycroft_fullmessage
}
}
# Ask Mycroft to say something
mycroft.rules
rule "Say Hello"
when
Item Presence_Isaac changed
then
myMycroft_speak.sendCommand("Hello Isaac")
end
Caught a mistake or want to contribute to the documentation? Edit this page on GitHub (opens new window)