Saturday, November 17, 2018

headless-alexa-avs-sample-app

headless-alexa-avs-sample-app
Scripts to autostart the Amazon alexa-avs-sample-app on boot on a headless Pi

This does not modify your installed alexa-avs-sample-app in any manner. Please do not open issues relating to the working of alexa-avs-sample-app here. Post your issues pertaining to the running of services alone here.

Install the alexa-avs-sample-app and first make sure that it is working fine and after that follow the guidelines given below.
  1. Clone the git using:
git clone https://github.com/shivasiddharth/headless-alexa-avs-sample-app  
  1. Check and verify the path of the installed alexa-avs-sample-app in the clientstart.sh, companionstart.sh and wakeword.sh scripts
  2. Make the installer executable using:
sudo chmod +x /home/pi/headless-alexa-avs-sample-app/installer.sh  
  1. Execute the installer:
sudo /home/pi/headless-alexa-avs-sample-app/installer.sh  

Friday, November 16, 2018

One installer for both Google Assistant and Amazon Alexa

One installer for both Google Assistant and Amazon Alexa

Simultaneously run Google Assistant and Alexa on Raspberry Pi

 Image result for One installer for both Google Assistant and Amazon Alexa Simultaneously run Google Assistant and Alexa on Raspberry Pi

For Google Assistant
  1. Download credentials--->.json file (refer to this doc for creating credentials https://developers.google.com/assistant/sdk/develop/python/config-dev-project-and-account)
  2. Place the .json file in/home/pi directory
  3. DO NOT RENAME THE JSON FILE
For Amazon Alexa
  1. Create a security profile for alexa-avs-sample-app if you already don't have one.
    https://github.com/alexa/avs-device-sdk/wiki/Create-Security-Profile

Setup Amazon Alexa, Google Assistant or Both

  1. Clone the git using:
git clone https://github.com/shivasiddharth/Assistants-Pi  
  1. Make the installers executable using:
sudo chmod +x /home/pi/Assistants-Pi/scripts/prep-system.sh    
sudo chmod +x /home/pi/Assistants-Pi/scripts/audio-test.sh   
sudo chmod +x /home/pi/Assistants-Pi/scripts/installer.sh  
  1. Prepare the system for installing assistants by updating, upgrading and setting up audio using:
sudo /home/pi/Assistants-Pi/scripts/prep-system.sh
  1. Restart the Pi using:
sudo reboot
  1. Make sure that contents of asoundrc match the contents of asound.conf
    Open a terminal and type:
sudo nano /etc/asound.conf
Open a second terminal and type:
sudo nano ~/.asoundrc
If the contents of .asoundrc are not same as asound.conf, copy the contents from asound.conf to .asoundrc, save using ctrl+x and y
  1. Test the audio setup using:
sudo /home/pi/Assistants-Pi/scripts/audio-test.sh  
  1. Restart the Pi using:
sudo reboot
  1. Install the assistant/assistants using the following. This is an interactive script, so just follow the onscreen instructions:
sudo /home/pi/Assistants-Pi/scripts/installer.sh  
  1. After verification of the assistants, to make them auto start on boot:
    Pi 3 and Pi2 users, open the gassistpi-ok-google.service in the /home/pi/Assistants-Pi/systemd folder and add your project-id and model-id in the indicated points.
Pi Zero users, open the gassistpi-push-button.service in the /home/pi/Assistants-Pi/systemd folder and add your project-id and model-id in the indicated points.
After that, open a terminal and run the following commands:
sudo chmod +x /home/pi/Assistants-Pi/scripts/service-installer.sh
sudo /home/pi/Assistants-Pi/scripts/service-installer.sh  
#If using Pi 2B or Pi 3B
For Alexa:
sudo systemctl enable alexa.service  
For Google Assistant:
sudo systemctl enable gassistpi-ok-google.service  
#If using Pi zero
For Alexa:
sudo systemctl enable alexa.service  
For Google Assistant:
sudo systemctl enable gassistpi-push-button.service
  1. Authorize Alexa before restarting
sudo /home/pi/Assistants-Pi/Alexa/startsample.sh  

Manually Start The Google Assistant

At any point of time, if you wish to manually start the assistant:
Ok-Google Hotword/Pi3/Pi2/Armv7 users
Open a terminal and execute the following:
/home/pi/env/bin/python -u /home/pi/GassistPi/src/main.py --device_model_id 'replace this with the model id'

Pushbutton/Pi Zero/Pi B+ and other users
Open a terminal and execute the following:
/home/pi/env/bin/python -u /home/pi/GassistPi/src/pushbutton.py --project-id 'replace this with your project id'  --device-model-id 'replace this with the model id'

 

Google Assistant for all Raspberry Pi

Google Assistant for all Raspberry Pi

Features (All features are 

applicable to all Pi 

boards, unless and otherwise

mentioned):

 

1. Headless auto start on boot.
2. Voice control of GPIOs without IFTTT, api.ai, Actions SDK.
3. Voice control of NodeMCU without IFTTT and MQTT.
4. Radio streaming.
5. Voice control of servo connected to RPi GPIO.
6. Safe shutdown RPi using voice command.
7. Stream Music from YouTube.
8. Indicator lights for assistant listening and speaking events.
9. Startup audio and audio feedback for wakeword detection.
10. Pushbutton service to stop Music or Radio playback.
11. Parcel tracking using Aftership API.
12. RSS Feed streaming.
13. Control of Kodi or Kodi Integration.
14. Streaming music from Google Play Music.
15. Casting of YouTube Videos to Chromecast and Chromecast media control by voice.
16. Voice control of Radio/YouTube/Google Music volume levels.
17. Control Sonoff Tasmota Devices/Emulated Wemo.
18. Track Kickstarter campaigns.
19. Emulated Philips Hue HUB service and control of Emulated Hue Lights.
20. Search recipes and get push message of ingredients and link to recipe.
21. Remote control of Magic Mirror.
22. Sending voice messages from the phone to the raspberry.
23. Play your Spotify playlist.
24. Custom wakeword activation for all Pi boards.
25. Mute microphones to prevent listening to Ok-Google hotword.
26. Create custom conversations.
27. Control of lights added to Domoticz.
28. Stream music from Gaana.com.
29. Stream your playlist from Deezer.
30. Custom actions in French, Italian, German, Dutch and Spanish.

 

FIRST STEP- CLONE the PROJECT on to Pi


  1. Open the terminal and execute the following
sudo apt-get install git  
git clone https://github.com/shivasiddharth/GassistPi 

INSTALL AUDIO CONFIG FILES


  1. Update OS and Kernel
sudo apt-get update sudo apt-get install raspberrypi-kernel
  1. Restart Pi and change directory
cd /home/${USER}/
  1. Choose the audio configuration according to your setup.
    The speaker-test command is used to initialize alsa, so please do not skip that.
    AIY-HAT and CUSTOM-HAT users, please reboot the Pi at places mentioned, else it will lead to audio and taskbar issues.
3.1. USB DAC or USB Sound CARD users,
sudo chmod +x ./GassistPi/audio-drivers/USB-DAC/scripts/install-usb-dac.sh sudo ./GassistPi/audio-drivers/USB-DAC/scripts/install-usb-dac.sh speaker-test 3.2. AIY-HAT users,
sudo chmod +x ./GassistPi/audio-drivers/AIY-HAT/scripts/configure-driver.sh sudo ./GassistPi/audio-drivers/AIY-HAT/scripts/configure-driver.sh sudo reboot cd /home/${USER}/ sudo chmod +x ./GassistPi/audio-drivers/AIY-HAT/scripts/install-alsa-config.sh sudo ./GassistPi/audio-drivers/AIY-HAT/scripts/install-alsa-config.sh speaker-test 3.3. USB MIC AND HDMI users,
sudo chmod +x ./GassistPi/audio-drivers/USB-MIC-HDMI/scripts/configure.sh sudo ./GassistPi/audio-drivers/USB-MIC-HDMI/scripts/configure.sh sudo reboot cd /home/${USER}/ sudo chmod +x ./GassistPi/audio-drivers/USB-MIC-HDMI/scripts/install-usb-mic-hdmi.sh sudo ./GassistPi/audio-drivers/USB-MIC-HDMI/scripts/install-usb-mic-hdmi.sh speaker-test 3.4. USB MIC AND AUDIO JACK users,
sudo chmod +x ./GassistPi/audio-drivers/USB-MIC-JACK/scripts/usb-mic-onboard-jack.sh sudo ./GassistPi/audio-drivers/USB-MIC-JACK/scripts/usb-mic-onboard-jack.sh speaker-test 3.5. CUSTOM VOICE HAT users,
sudo chmod +x ./GassistPi/audio-drivers/CUSTOM-VOICE-HAT/scripts/install-i2s.sh sudo ./GassistPi/audio-drivers/CUSTOM-VOICE-HAT/scripts/install-i2s.sh sudo reboot cd /home/${USER}/ sudo chmod +x ./GassistPi/audio-drivers/CUSTOM-VOICE-HAT/scripts/custom-voice-hat.sh sudo ./GassistPi/audio-drivers/CUSTOM-VOICE-HAT/scripts/custom-voice-hat.sh speaker-test 3.6. RESPEAKER HAT users,
git clone https://github.com/shivasiddharth/seeed-voicecard cd ./seeed-voicecard/ sudo ./install.sh sudo reboot speaker-test Those using any other DACs or HATs install the cards as per the manufacturer's guide and then you can try using the USB-DAC config file after changing the hardware ids
  1. Restart Pi
  2. Check the speaker using the following command
speaker-test -t wav

CONTINUE after SETTING UP AUDIO


  1. Follow the instructions here to Configure a Developer Project and Account Settings. Then follow this guide to register the device and obtain the credentials.json file. Refer to the video below for step by step guidelines.
Detailed Youtube Video
  1. Place the credentials.json file in/home/${USER}/ directory DO NOT RENAME
  2. Use the one-line installer for installing Google Assistant
    Pi3 and Armv7 users use the "gassist-installer-pi3.sh" installer and Pi Zero, Pi A and Pi 1 B+ users use the "gassist-installer-pi-zero.sh" installer.
3.1 Change directory
cd /home/${USER}/ 3.2 Make the installers Executable
sudo chmod +x ./GassistPi/scripts/gassist-installer-pi3.sh sudo chmod +x ./GassistPi/scripts/gassist-installer-pi-zero.sh 3.3 Execute the installers Pi3 and Armv7 users use the "gassist-installer-pi3.sh" installer and Pi Zero, Pi A and Pi 1 B+ users use the "gassist-installer-pi-zero.sh" installer. When Prompted, enter your Google Cloud console Project-Id, A name for your Assistant and the Full Name of your credentials file, including the json extension.
sudo ./GassistPi/scripts/gassist-installer-pi3.sh sudo ./GassistPi/scripts/gassist-installer-pi-zero.sh
  1. Copy the google assistant authentication link from terminal and authorize using your google account
  2. Copy the authorization code from browser onto the terminal and press enter
  3. After successful authentication, the Google Assistant Demo test will automatically start. At the start, the volume might be low, the assistant volume is independent of the Pi volume, so increase the volume by using "Hey Google, Set volume to maximum" command.
  4. After verifying the working of assistant, close and exit the terminal

HEADLESS AUTOSTART on BOOT SERVICE SETUP


  1. Open the service files in the /GassistPi/systemd/ directory and add your project and model ids in the indicated places and save the file.
  2. Change directory
cd /home/${USER}
  1. Make the service installer executable
sudo chmod +x ./GassistPi/scripts/service-installer.sh
  1. Run the service installer
sudo ./GassistPi/scripts/service-installer.sh
  1. Enable the services - Pi3 and Armv7 users, enable the "gassistpi-ok-google.service" and Pi Zero, Pi A and Pi 1 B+ users, enable "gassistpi-push-button.service"
    Previously a service was dedicated for stopbutton that stops music/radio etc. Now, its being run in a thread along with the assistant so you will not find the service.
sudo systemctl enable gassistpi-ok-google.service sudo systemctl enable gassistpi-push-button.service
  1. Start the service - Pi3 and Armv7 users, start the "gassistpi-ok-google.service" and Pi Zero, Pi A and Pi 1 B+ users, start "gassistpi-push-button.service"
    Previously a service was dedicated for stopbutton that stops music/radio etc. Now, its being run in a thread along with the assistant so you will not find the service.
sudo systemctl start gassistpi-ok-google.service sudo systemctl start gassistpi-push-button.service RESTART and ENJOY

MANUALLY START THE ASSISTANT

At any point of time, if you wish to manually start the assistant:
Ok-Google Hotword/Pi3/Pi2/Armv7 users
Open a terminal and execute the following:
/home/${USER}/env/bin/python -u /home/${USER}/GassistPi/src/main.py --device_model_id 'replace this with the model id' Pushbutton/Pi Zero/Pi B+ and other users
Open a terminal and execute the following:
/home/${USER}/env/bin/python -u /home/${USER}/GassistPi/src/pushbutton.py --project-id 'replace this with your project id' --device-model-id 'replace this with the model id' Insert your Project Id and Model Id in quotes in the mentioned places

USING THE CUSTOMIZATIONS


CUSTOM ACTIONS IN Non-English LANGUAGES


Languages supported: French, Italian, Spanish, Dutch and German.
In the config.yaml file, under the Languages and Choice option set your desired language.
Use the Translated versions of the English syntaxes given for all the custom actions.

MUSIC STREAMING FROM DEEZER


NOTE: As a roundabout approach, I have programmed the assistant to get the playlist details using Deezer API and then fetch those tracks from YouTube.
This feature uses a YouTube Data API v3.

Adding YouTube Data API and Generating API Key

  1. Go to the projects page on your Google Cloud Console-> https://console.cloud.google.com/project
  2. Select your project from the list.
  3. On the left top corner, click on the hamburger icon or three horizontal stacked lines.
  4. Move your mouse pointer over "API and services" and choose "credentials".
  5. Click on create credentials and select API Key and choose close. Make a note of the created API Key and enter it in the config.yaml script at the indicated location.
  6. "From the API and services" option, select library and in the search bar type youtube, select "YouTube Data API v3" API and click on "ENABLE".
  7. In the API window, click on "All API Credentials" and in the drop down, make sure to have a tick (check mark) against the API Key that you just generated.
  8. Add your Deezer user number in the config.yaml under the "Deezer" and "User_id".
Note: The same API key can be used for Kickstarter, YouTube and Gaana feature.
Syntax:
  1. To play the playlists added to your Deezer account:
    Hey Google, Play playlist playlist-number from Deezer
    Example: Hey Google, Play playlist number 1 from Deezer

MUSIC STREAMING FROM GAANA.COM


NOTE: As a roundabout approach, I have programmed the assistant to get the playlist details using web requests and then fetch those tracks from YouTube.
This feature uses a custom search engine as well as YouTube Data API v3.

Adding Google Custom Search Engine API, YouTube Data API and Generating API Key

  1. Go to the projects page on your Google Cloud Console-> https://console.cloud.google.com/project
  2. Select your project from the list.
  3. On the left top corner, click on the hamburger icon or three horizontal stacked lines.
  4. Move your mouse pointer over "API and services" and choose "credentials".
  5. Click on create credentials and select API Key and choose close. Make a note of the created API Key and enter it in the config.yaml script at the indicated location.
  6. "From the API and services" option, select library and in the search bar type search, select "Custom Search API" and click on "ENABLE".
  7. "From the API and services" option, select library and in the search bar type youtube, select "YouTube Data API v3" API and click on "ENABLE".
  8. In the API window, click on "All API Credentials" and in the drop down, make sure to have a tick (check mark) against the API Key that you just generated.
Note: The same API key can be used for Kickstarter and YouTube feature.
Syntaxes:
Note - It is necessary to Say the full "Gaana.com", otherwise the assistant will pick it up as Ghana (a country).
  1. To play the playlists added in config.yaml file:
    Hey Google, Play playlist playlist-number from Gaana.com
    Example: Hey Google, Play playlist number 1 from Gaana.com
  2. To play other playlists:
    Hey Google, Play user-playlist-query from Gaana.com

DOMOTICZ CONTROL


As of today, you can control lights and switches only, more controls will be added in the future.
  1. If you want to control devices with Domoticz, in the config.yaml file under "Domoticz:" change "Domoticz_Control:" from "Disabled" to "Enabled".
  2. List the device names and the ids that you want to control in the config.yaml file. The names should be the same as the ones in the domoticz server.
  3. Syntaxes:
    To On/Off/Toggle (The light name should be the same as the Hardware name in Domoticz):
    Hey Google, Turn On/Turn Off/Toggle Name of your light .
    To Change Brightness (between 0 and 100):
    Hey Google, Set Name of your light brightness to desired value .
    To Change Colour (refer the list of available colors given below): Hey Google, Set Name of your light color to desired color .
    Hey Google, Change Name of your light to desired color .

CUSTOM CONVERSATIONS


  1. Customize the assistant's reply to a specific question.
  2. Add the list of questions and answers in config.yaml under the Conversation: option.
  3. There must be only one question, but corresponding answers can be as many.
  4. Sample questions and answers has been provided, please follow the same pattern.

CUSTOM WAKEWORD ACTIVATION


  1. You can choose to either Enable or Disable the custom wakeword activation in the config.yaml file.
  2. In the config.yaml file, under Wakewords, change the "Custom_Wakeword" to 'Enabled' if you want to use the custom wakeword or set it to 'Disabled' if you dont want to use the custom wakeword option.
  3. For changes to take effect, you need to restart the assistant. Changing status while an instance of assistant is already running will not cause any change.
  4. Create your custom snowboy model here. Add the models to /GassistPi/src/resources directory.
  5. Change the paths to the models in the config.yaml file.
  6. To disable the default "Ok Google" hotword, set the Ok_Google option to "Disabled".
  7. Users using pushbutton.py or Pi Zero users have an option between using custom wakeword and GPIO trigerring. If custom wakeword is enabled, then GPIO trigger will not work. To enable GPIO triggering, set custom wakeword to 'Disabled'.

PLAYING SPOTIFY PLAYLIST


NOTE: Spotify API currently only supports playback in a web browser, but DRM content is being blocked in the Raspberry Pi. As a roundabout approach, I have programmed the assistant to get the playlist details using Spotipy API and then fetch those tracks from YouTube. This custom program has a better accuracy than spotify playlist playback using mpsyt.
  1. Click here and register for a spotify developer account, if you already don't have one.
  2. In the developer's dashboard, choose "CREATE A CLIENT ID". In the pop-up window provide the requested details.
  3. Click on the new app created and copy the CLIENT ID and CLIENT SECRET. Paste it in the config.yaml file in the indicated space.
  4. Access spotify:here and copy the username to be entered in config.yaml
Syntax: Hey Google, Play Your Spotify Playlist Name from Spotify

TRACKING KICKSTARTER CAMPAIGNS


A custom Google search engine for Kickstarter has been used. This requires an API to be added to your existing project.

Adding Google Custom Search Engine API and Generating API Key

  1. Go to the projects page on your Google Cloud Console-> https://console.cloud.google.com/project
  2. Select your project from the list.
  3. On the left top corner, click on the hamburger icon or three horizontal stacked lines.
  4. Move your mouse pointer over "API and services" and choose "credentials".
  5. Click on create credentials and select API Key and choose close. Make a note of the created API Key and enter it in the config.yaml script at the indicated location.
  6. "From the API and services" option, select library and in the search bar type search, select "Custom Search API" and click on "ENABLE".
  7. In the API window, click on "All API Credentials" and in the drop down, make sure to have a tick (check mark) against the API Key that you just generated.
Note: The same API key can be used for YouTube and Gaana, but YouTube Data v3 API must be added to the project in the cloud console.
Syntax: Hey Google, (What is the status of) or (Track) Your Desired Campaign Name Kickstarter campaign

EMULATED PHILIPS HUE SEVICE AND CONTROL


Credits for the Emulated Hue to Marius Motea.
Follow the guidelines given in the diyHue's Wiki to setup the Emulated Hue Service.
Download sketches for your NodeMCU/Wemos/ESP Devices from here
After making suitable modifications and uploading the sketches to your device, open the device's webgui by entering the ip address in a browser. In that change the "Startup" value from "Last State" to "Off" as shown below.
|
Depending upon your device, download the Philips Hue App for either of the platforms from the following links.
Apple App Store Philips Hue App Google Play Philips Hue App

To pair the diyHue to the app:

To pair a new device to diyHue, first head to http://{IP_ADDRESS}/hue/linkbutton.
The default username is Hue and password is Hue.
At this point you should open the Hue app on your phone and start searching for hubs.
To speed this up you can click the Help button and then enter the IP address of your diyHue device.
Once the bridge has been detected, click the green Set up button. At this point, the app will prompt you to press the link button on your Hue bridge.
To do so, click the Activate button on the web page you loaded at the start. The Hue app should now prompt you through the rest of the setup. For specific details on how to setup specific lights, browse the lights section in the navigation bar to the right.
Command Syntax:
To turn lights on/off : "Hey Google, Turn Hue-Light-Name On/Off"
To change light colour: "Hey Google, Change Hue-Light-Name colour to Required-Colour" (List of available colours is given at the end of readme doc)
To change brightness : "Hey Google, Change Hue-Light-Name brightness to Required-Brightness-Level"

PUSHING MESSAGES/INFO FROM ASSISTANT ON Pi TO ANDROID DEVICE


For pushing messages/info, the GassistPi uses pushbullet python package. To use this feature:
  1. Download and install pushbullet app on your tablet/mobile device.
  2. Visit www.pushbullet.com register for new account or sign in with your existing account.
  3. Choose Settings-->Account and then choose "Create access token".
  4. Copy this token and paste in the actions.py script under the pushmessage function.

GETTING RECIPE DETAILS USING ASSISTANT


GassistPi uses Edamam for getting recipe details/info. To use this feature:
  1. Click here to visit the developers' porta for Edamam.
  2. Signup as a developer/login with your existing account.
  3. In the Menubar at the top, Click on Dashboard-->Applications-->Create a new applicatiuon-->Recipe Search API and then create a new application.
  4. Copy the application id and application key and paste it in the actions.py script under the getrecipe function.
    **(Note: While copying the application key, do not copy the "—")
Command Syntax:
"Hey Google, Get ingredients for Required-Item"

CONTROLLING MAGIC MIRROR BY VOICE


You can control either Magic Mirror running on another Pi or Magic Mirror running on the same pi as GassistPi.
As a prerequisite, you should have the remote control module installed in the Pi running Magic Mirror.
Enter the Ip address of Pi running Magic Mirror in the config.yaml against the variable "mmmip" declared.
Command Syntax:
To show/hide weather module : "Hey Google, Show/Hide Weather on Magic Mirror"
To turn magic mirror display on/off : "Hey Google, Turn Magic Mirror display on/off"
To power off/reboot/restart Magic Mirror: "Hey Google, Power off/Reboot/Restart Magic Mirror"

INDICATORS FOR GOOGLE ASSISTANT'S LISTENING AND SPEAKING EVENTS


Connect LEDs with colours of your choice to GPIO05 for Listening and GPIO06 for Speaking Events.

PUSHBUTTON TO STOP MUSIC/RADIO PLAYBACK AND MUTE MICROPHONE


Connect a pushbutton between GPIO23 and Ground. Single press mutes microphone and double press stops music streaming.

VOICE CONTROL OF GPIOs, SERVO and Pi SHUTDOWN


The default GPIO and shutdown trigger word is trigger. It should be used for controlling the GPIOs, servo and for safe shutdown of Pi.
It has been intentionally included to prevent control actions due to false positive commands. If you wish to change the trigger word, you can replace the 'trigger'in the main.py code with your desired trigger word.
The default keyword for servo motor is servo. For example, the command trigger servo 90 will rotate the servo by 90 degrees.
If you wish to change the keyword, you can replace the 'servo' in the action.py script with your desired keyword for the motor.
For safe shutdown of the pi, command is: trigger shutdown
 

Saturday, November 10, 2018

How to Install PHP

How to Install PHP
PHP is the most popular server-side programming language on the web. Installing PHP on your computer allows you to safely create and test a web application without affecting the data or systems on your live website. This article by Viswas, HSST Computer Science, Sree Narayana Higher Secondary School, Okkal, Ernakulam describes PHP installation as a module within the Windows. Click on the below link to start downloading the help file.

Downloads
How to Install PHP: Help file (PDF Version)
PHP & MySQL Programming-The Complete Reference: E-Book by Biswas
PHP-MySQL installation in Ubuntu-Software Package Download

Geany GCC C++ Compiler for Windows


Geany Editor and GCC Compiler(Windows Version) for Higher Secondary School Computer Science/Application Students published. Now you can install Geany Editor and GCC C++ Compiler on single go by selecting the auto installer from the below list and click on 'Install' to directly install them on your computer. For more info please read the help file.
 Downloads
Geany C++ Compiler for Windows
Geany C++ Compiler for Windows-Help file 
Geany C++ Compiler for Windows-Video Help