Mycroft on FreeBSD

$ locale
LANG=es_ES.UTF-8
LC_CTYPE="es_ES.UTF-8"
LC_COLLATE="es_ES.UTF-8"
LC_TIME="es_ES.UTF-8"
LC_NUMERIC="es_ES.UTF-8"
LC_MONETARY="es_ES.UTF-8"
LC_MESSAGES="es_ES.UTF-8"
LC_ALL=

$ env | grep LANGUAGE
$

With this small hack the cli comes up:

$ diff /usr/home/guru/Mycroft-test/mycroft-core/mycroft/client/text/text_client.p*
1078,1079c1078
<                 # c = scr.get_wch()  # unicode char or int for special keys
<                 c = 27
---
>                 c = scr.get_wch()  # unicode char or int for special keys

Can you try to set the LC_ALL by running the command;

export LC_ALL=en_US.UTF-8

You can try ā€œes_ES.UTF-8ā€ as well, but I believe Mycroft needs en_US. Anyway, try the en first and you could use the ES later if it works.

The curses interface of the LC_ALL=en_US.UTF-8 cli looks like this:

but at the prompt in the bottom line no input is accepted visible, I tried too :help Ctrl-j, nothing happens, only Ctrl-c terminates the proc.

Not visible as in; falls of the screen or as in; it does not take any input whatsoever

The screen does not show any reaction on any keypress I tried.

I found log files below /var/ā€¦ There is some problem with audio (pymplayer not found)

You can ignore the mplayer error.

But can you type a command blind and insert it via Enter.

Just type; ā€œweatherā€ followed by an enter.

Does mycroft tell you the weather or nothing at all?

I think I have to make an account first and pair the device, what I will do now.

I created an accout and paired my laptop using the code printed in the cli, but typing weather+ CR` does not give any visible reaction.

Ok, so at least we tackled one step, however (at least) one more to goā€¦

Anything in any of the logs?

I spent a lot of time yesterday in debugging the input issue in the file mycroft-core/mycroft/client/text/text_client.py There is at line 1080 the central place where the chars get read from STDIN:

       c = scr.get_wch()  # unicode char or int for special keys

This call gives the above mentioned error message about not havin a valied attribute:

AttributeError: '_curses.curses window' object has no attribute 'get_wch'

Thatā€™s why I modified this line to

     c = scr.getch()

and with this change the keyboard input does not work corrctly. The line does not contain chars when ENTER is pressedā€¦

I know less to nothing about Python and do not know how to fix this.

Can some Python guru please send me a 5-line example to test the above call to curses c = scr.get_wch() outside of Mycroft?

I think your issues relates to python and/or libncurses not having unicode wchar support. (wchar = wide characters)

the ā€œscr.get_wch()ā€ basically is a function to get the input as wchar. Considering you have an error of it not understanding the term ā€œwchā€ which relates to WideCharacter this might be your pointer for google.

A quick google session brought me to this old stuff;

https://bugs.python.org/issue4787

Not sure how valid it still is and I am also at the point that it is getting out of my grasp as I am not a FreeBSD guru, but perhaps it gives you the right pointers to continue your search.

I am sorry I could not help you.

The problem is within the Python3.5 application port in FreeBSD: it does not use libcursesw.so.8, but libcurses.so.8. This issue was fixed in June 2017, Iā€™m on March 2017 with my system. I have to update before doing further tests, which I canā€™t do before the end of the year.

Give me a break.

I found a way to selectively fix my Python3.5 installation to make it use libwcursesw.so:

History ========================================    Log Output Legend ================ Mic Level ===
 >> I don't understand.                             DEBUG output
 mycroft                                            skills.log, other
 >> Please rephrase your request.                   voice.log
 mycroft, say something
 >> something
 mycroft, how are you?
 >> Could be better
Input (':' for command, Ctrl+C to quit) ===========================================================
>

Great! Is it something that can be done through setup.sh such that experimental freebsd support can be added through a PR?

When I do:

History ========================================    Log Output Legend ================ Mic Level ===
 Hey Mycroft, how is the weather in Munich?         DEBUG output
 >> temperature, 34 Ā°F (wind chill: 27 Ā°F),         skills.log, other
    relative humidity, 93% (dew point: 32 Ā°F),      voice.log
    wind speed, 8.1 mph, (29 minutes ago)
 Mycroft, sing a song
 >> I'm a bit nervous about my voice, but here
    goes nothing.

she (mycroft) answers and plays the song as audio. Is the audio coming from a local file? I do not see enough traffic on my wlan0 interface for coming down the audio from Internetā€¦ Anyway, what I have to configure or do for:

  1. Give commands/requests by voice
  2. Mycroft answers by voice and not by text

Is Mycroft a she or a he? :slight_smile:

Mycroft is a he, but you can configure a female voice on Mimic (1). The songs are locally stored and played back.

No. I have had to recompile Python3 with a special trick to apply a fix in advance, but itā€™s fixed anyway in very recent FreeBSD (since June 2017).

In any case, I will provide patches for the Mycroft scripts I have had to change.

1 Like

And the answers on my question? Locally too?

That depends on the skill. If it has locally sourced responses, sure. If itā€™s searching wikipedia or something, then would try heading off to the internet.