Mycroft Openhab Skill

Hi,
you can try to open a ssh connection to your device (you can get the ip address asking “Hey Mycroft, what’s your IP address?”), after the connection is established you should wait to get the mycroft-cli-client (otherwise open the cli via command). Via mycroft-cli-client you can type commands and exclude a microphone issue. Check also the command syntax.

If anyone is struggling to get the openHAB skill manually installed (until it gets returns to the marketplace)

This forum post might be useful.

It’s kind of like the “Evolution of Man” but at least I got something working

Interesting - I suspect my Mark One works fine as the openHAB skill has been installed for a very long time (mycroft-core v19.8.4).

Note- setting the openHAB network details via mycroft.conf has been replaced by using the Mycroft portal at https://account.mycroft.ai/skills . My account shows settings for the pre-installed openHAB skill, but interestingly, the https://market.mycroft.ai/skills does not.

Looks like the PR to merge in the openHAB skill hasn’t completed yet.

The portal access to settings didn’t work initially, but was patched back when I was running 19.02:

Thanks James,

That’s my understanding now.

Mycroft is certainly working now with my openHAB2 setup.

However, I’ve got to figure out what the exact phrases are to get the responses I’m looking for.

“What’s the temperature in X room” returns an error, suggesting that the weather skill can’t find X (city / country etc), instead of using the openHAB2 skill.

May I ask how you get on with Mycroft, does it give you the level of functionality that your expect?

(I’m experimenting in case it’s easier / better than Alexa / Google and so on)

Thanks,

Stuart

Could you try with:
"what’s bedroom temperature?

bedroom is the openHAB Item name exposed.

The problem here is about Mycroft has to get the intend and select the right skill. With temperature and humidity it can get confused.

Hi,

My main use is ‘write’ rather than ‘read’, avoiding the need to enable control outside my LAN. For example, I have a Zwave device defined in my *.items as:

Switch  sBed1_Lamps         "Bedside Light"             <light> (gU_Bed1, gLights)  ["Lighting"]    {channel="zwave:device:aaaaaaaa:node99:switch_binary"}

Which allows control via:

Hey, Mycroft
Turn on bedside lamps
Switch on on bedside lamps

I also have a ‘dummy’ Switch to allow me to trigger a rule for multiple actions:

/* Experiment for Mycroft skill */
Switch  GoodNight       "Good Night [%s]"   ["Switchable"]

The language to use this is a little artificial, but works:

Hey, Mycroft
Turn on Good Night

To test your room temperature example, I’ve re-defined a OneWire item:

Number  owRoom1          "Inside  [%.1f C]"  <temperature>   ["CurrentTemperature"]  {channel="onewire:temperature:aaaaaaaa:99_000000000000:temperature"}

Sadly, all of the dialogues below give a generic weather forecast - I guess the Weather skill is getting there first:

Hey, Mycroft
What is the temperature Inside?
What is the Inside temperature?
What is Inside temperature?
What's Inside temperature?

Hmm. Looks like on mycroft-core v19.8.4, Current Temperature isn’t working.

I have tagged a few more temp sensors with ["CurrentTemperature"] as above, and SSH’d directly into a Mark_1, used mycroft-cli-client to inject speech commands:

refresh openhab items
 >> All right. I found 21 items.

list openhab items
 >> Found the following items:
  Lights: Bedside Light <and others> 
  Switches: Good Night <and others>
  Current Temperature: Inside, Radiator <and others>

Sadly, What's Radiator temperature? just gives a generic weather forecast - suggests some Padatious hacking may be needed to register the extra intents.

Yup… that’s what I’m getting too…

If you do find a way to resolve this, I’d be very interested.

Good luck

I’ve documented my debug so far in a GitHub issue:

Documenting the issue is at least a start!

1 Like

Hi there. Following the issue, I tried to review the “what’s the status” intent, switching to the other way available in mycroft to define an intent (it uses a Machine Learning algorithm to decide the right skill). I also added new “questions formula” in order to have more way to ask the same thing and, f.i:

Hey Mycroft, what is the status of Switch?
Hey Mycroft, tell me the temperature of Bedroom
Hey Mycroft, I’d like to know the humidity of Bedroom

I made some test and it seems to be better. Could any of you make also some test? I’d appreciate that before to release the new version. If interested, I have a new branch in my github repository, can be installed manually typing:

git clone -b status_intent_review https://github.com/mortommy/openhab-mycroft.git

Thank you.

Just got spammed that it’s selling now.
Do you have any information that you can share now ?
With SNIPS just dying thanks to Sonos a number of people are worried how to proceed to voice enable their homes.

Hi

Thanks for this.

I understand what you are trying to achieve, but I don’t understand what I’m supposed to do to add this functionality.

for example, which directory should I be cloning you repo into ?

(For to ask basic questions, I really am very new to Mycroft)

Hi @MDAR,
after other test I decided to release the fix. I submitted the skill to v19, so you’ll get the update when will be accepted, or follow the steps:

cd mycroft-core/skills/openhab-skill/
git clone https://github.com/openhab/openhab-mycroft.git skill-openhab

then deactivate and activate the skill from mycroft-cli-client

Thank you.

1 Like

Skill now available in 19.08

1 Like

would appreciate advice on correctly tagging Hue Sensors for mycroft skill

have mycroft skill installked and running and recognises and controls hue lights correctly but having problems with temperature;

When asking mycroft for a list of openhab items only lights appear to have been recognised from hue.item file;

included below is hue things and hue items -

what is the correct way to tag temperature (and other) sensors to get mycroft skill to recognise the items?

Thanks

hue.things file
Bridge hue:bridge:1 [ ipAddress="192.168.178.213", userName="Kqi72OpU2KNpYZfg2iFyOwDOv3m9rzBrRFLm5QET" ] {
    0100  F0_Hall_Light  "Downstairs main lamp" @ "Ground floor" [ lightId="3" ]
    0100  F1_Lounge_Light_1  "Lounge corner desk lamp" @ "Lounge" [ lightId="1" ]
    0100  F1_Lounge_Light_2  "Lounge main lamp" @ "Lounge" [ lightId="4" ]
    0100  F2_Studio_Light_1  "Studio desk lamp" @ "Studio" [ lightId="5" ]
   
    0302  Temperature_Sensor_1 "Ground floor"   @ "Ground floor" [ sensorId="9" ]
    0302  Temperature_Sensor_2 "Temp Sensor"   @ "Middle floor" [ sensorId="18" ]
    0302  Temperature_Sensor_3 "Temp Sensor 3"   @ "Top floor" [ sensorId="49" ]
}

hue.items
// Studio
Switch  F2_Studio_Light_1_Switch  "Studio desk lamp" <light> (F2_Studio, gLight) ["Lighting", "Switchable"] {channel="hue:0100:1:F2_Studio_Light_1:brightness"}
Dimmer  F2_Studio_Light_1_Dimmer  "Studio desk lamp" <light> (F2_Studio, gLight) ["Lighting", "Switchable"] {channel="hue:0100:1:F2_Studio_Light_1:brightness"}
String  F2_Studio_Light_1_Alert  "Studio desk lamp" <light> (F2_Studio, gLight) ["Lighting", "Switchable"] {channel="hue:0100:1:F2_Studio_Light_1:alert"}


// Temperature Sensors
Number:Temperature F0_Hall_temp_sensor "Ground floor temperature" <temperature> (F0_Hall, gTemp) {channel="hue:0302:1:Temperature_Sensor_1:temperature"}
Number:Temperature F1_Hall_temp_sensor "Middle floor temperature" <temperature> (F1_Hall, gTemp) {channel="hue:0302:1:Temperature_Sensor_2:temperature"}
Number:Temperature F2_Hall_temp_sensor "Top floor temperature" <temperature> (F2_Hall, gTemp) {channel="hue:0302:1:Temperature_Sensor_3:temperature"}

Have you read the Docs on the Mycroft items tagging?

There is a pretty clear example in there.

@MDAR Hi Stuart,
thanks for the speedy response,
Yes, I read it in detail and also the homekit tagging advice and the hue tagging pages - it may be a simple oversight on my side but after many many hours I’m no further forward on why non-light hue items are not discovered by the mycroft ‘refresh openhab items’ request.

I think you probably missed the part that shows the correct tags (I assume these are correct and that Mycroft hasn’t moved to Metadata yet)

Group gMyThermostat "My Thermostat"
Number ThermostatCurrentTemp "Thermostat Current Temperature" (gMyThermostat) ["CurrentTemperature"] {channel="Your Item"}
Number ThermostatTargetTemperature "Thermostat Target Temperature" (gMainThermostat) ["TargetTemperature"] {channel="Your Item"}
String ThermostatHeatingCoolingMode "Thermostat Heating/Cooling Mode" (gMyThermostat) ["homekit:HeatingCoolingMode"] {channel="Your Item"}

hi @MDAR
awesome - thanks - I was looking at the tag lists and trying to work out what what deprecated - whether to use metadata or not - mycroft now lists the items as recognised - unfortunately any variation of asking for temperatures now gives the external weather temperature

It looks like i am getting the same issue #85 as @FloatingBoater documented…

checking openhab items via SSH shows

Current Temperature: Middle floor, Ground floor, Top floor    

and in response to

 What's the temperature of Middle floor   
 >> It's currently 8 degrees celsius.   

 whats top floor temperature 
 >> It's currently 8 degrees celsius.   

tell me the temperature of Top floor    
 >> It's currently 8 degrees celsius.         

but the openhab log shows this error on updating the related thing file

2020-11-20 15:16:57.897 [ome.event.ItemUpdatedEvent] - Item 'F1_Hall_temp_sensor' has been updated.

==> /var/log/openhab2/openhab.log <==

2020-11-20 15:16:57.902 [ERROR] [ore.common.registry.AbstractRegistry] - Cannot inform the listener "org.openhab.io.hueemulation.internal.rest.Sensors@18848bb" about the "UPDATED" event: Item type not supported as sensor

java.lang.IllegalArgumentException: Item type not supported as sensor

	at org.openhab.io.hueemulation.internal.dto.HueSensorEntry.<init>(HueSensorEntry.java:84) ~[?:?]

	at org.openhab.io.hueemulation.internal.rest.Sensors.updated(Sensors.java:141) ~[?:?]

	at org.openhab.io.hueemulation.internal.rest.Sensors.updated(Sensors.java:1) ~[?:?]

	at org.eclipse.smarthome.core.common.registry.AbstractRegistry.notifyListeners(AbstractRegistry.java:366) ~[?:?]

	at org.eclipse.smarthome.core.common.registry.AbstractRegistry.notifyListenersAboutUpdatedElement(AbstractRegistry.java:387) ~[?:?]

	at org.eclipse.smarthome.core.internal.items.ItemRegistryImpl.notifyListenersAboutUpdatedElement(ItemRegistryImpl.java:379) ~[?:?]

	at org.eclipse.smarthome.core.internal.items.ItemRegistryImpl.notifyListenersAboutUpdatedElement(ItemRegistryImpl.java:1) ~[?:?]

	at org.eclipse.smarthome.core.common.registry.AbstractRegistry.updated(AbstractRegistry.java:291) ~[?:?]

	at org.eclipse.smarthome.core.common.registry.AbstractRegistry.updated(AbstractRegistry.java:1) ~[?:?]

	at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:62) ~[?:?]

	at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListenersAboutUpdatedElement(AbstractProvider.java:87) ~[?:?]

	at org.eclipse.smarthome.model.item.internal.GenericItemProvider.modelChanged(GenericItemProvider.java:398) ~[?:?]

	at org.eclipse.smarthome.model.core.internal.ModelRepositoryImpl.notifyListeners(ModelRepositoryImpl.java:311) ~[?:?]

	at org.eclipse.smarthome.model.core.internal.ModelRepositoryImpl.addOrRefreshModel(ModelRepositoryImpl.java:149) ~[?:?]

	at org.eclipse.smarthome.model.core.internal.folder.FolderObserver.checkFile(FolderObserver.java:247) ~[?:?]

	at org.eclipse.smarthome.model.core.internal.folder.FolderObserver.processWatchEvent(FolderObserver.java:310) ~[?:?]

	at org.eclipse.smarthome.core.service.WatchQueueReader.lambda$3(WatchQueueReader.java:323) ~[?:?]

	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_265]

	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_265]

	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_265]

	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.8.0_265]

	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_265]

	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_265]

	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_265]

Hardware:PI$ 4GB
OS: Openhabian Install 2.5.10-1

//

Picroft Buster Keaton - Pork Pi mycroft-core: 20.8.0 ( master )

Hello all,

I don’t know if the subject has been discussed in this topic, but as I run toward some need of controling Mycroft, I made myself a Mycroft binding for OpenHAB. Maybe some of you would be interested ?

I post a new topic here, comments are welcome.