Convergence: Multimedia and Home Automation With A Raspberry Pi
Convergence: Multimedia and Home Automation With A Raspberry Pi
by Alex Pojer
Preface
4.Choosing applications
4.1.KODI
4.2.CODECs and Audio/Video conversions
4.2.1.Installing Gstreamer with OpenMAX libraries
4.2.1.1.Source code compilation
4.2.1.2.Executable release
4.2.2.Using Gstreamer for realtime conversion
4.3.Asterisk
4.4.Other applications
5.Voice recognition, control and synthesis
5.1.Installation of Voicecommand
5.2.Voicecommand setup instructions
5.3.Update
5.4.Setting up the configuration file
5.5.How to run voicecommand in background
6.Security
6.1.Webcam
Convergence - multimedia and home automation (at a very low cost) -v20201228- 1
7.Remote login
7.1.Getting your public IP address
7.2.Setting up Dynamic DNS service updates
7.3.Virtual Network Computing (Vnc)
8.IR Remote Control/ed
8.1.Receiver
8.2.Transmitter
9.DVB-T receiver
9.1.EPG
9.1.1.OTA Grabber
9.1.2.Internal Grabbers
9.1.3.External Interfaces option
9.2.Frontend on the smartphone
9.3.Syslog
9.4.UPnP server
10.Upnp/SMB media server
11.Personal cloud
12.HDMI vs. USB audio device
13.Tuning the system: issues and surroundings
1) No more space left on SD root partition (OSMC) [Ref.38].
2) Audio problems using external usb peripheral
3) To backup/reload your KODI configuration
4) Setting local date/time
5) How to turn down CPU usage
6) To spindown your external HDD drive
7) Back up of your SD card (Linux procedure):
8) Fixing a corrupted SD card filesystem
9) Overclocking issues
10) GPG error during update
11) USB microphone settings
12) Issues building a IR transmitter
14.Raspberry PI pin diagram
15.Power consumption
16.Addendum
1) How to write down an image on the SD card
2) Steps to install Asterisk and FreePBX
a) Asterisk and needed software
b) Download FreePBX (example with rel. 11.0.25)
c) Setting MySQL
d) Choose the mysql root password
e) Restart Asterisk with correct permissions
f) Check if Asterisk installation was good
Convergence - multimedia and home automation (at a very low cost) -v20201228- 2
g) Set the correct Timezone for PHP, opening the PHP Configuration file
h) Setup Apache for FreePBX and Asterisk
i) Install FreePBX
j) Restart all services
k) Enter the FreePBX page
3) How to install TVHeadend
4) How to install and use Screen
5) Example of .command.conf file
17.References
18.Pictures
Convergence - multimedia and home automation (at a very low cost) -v20201228- 3
Preface
In 2014 I heard about the Raspberry Pi board, so I bought one in the middle of that year to
test its potential. The results were exciting, because they allowed me to approach the
much-proclaimed technological convergence [Ref.1].
I had defined some initial objectives, which were not restricted to a simple media-center, but
which included some home-automation concepts, then still little known to the general public
(Amazon Alexa was only released, as a limited edition, in late 2014).
What until recently seemed inconceivable, was at that moment achievable by means of a
small, cheap and harmless device.
While I was approaching those goals, I developed the procedures that accomplished them
and took note, as if I was connecting the dots of a still partially unknown drawing.
These are the notes of that project.
The board used for the test was a Raspberry Pi Model B+, but the concepts may be easily
transferred to other more powerful modern boards.
1.1.Project specifications
Hereafter, you can find some of the specifications this system should realize:
● TV program digital receiver (terrestrial or Sat)
● Personal Video Recorder (PVR)
● IP-TV
● Mediaplayer
● Upnp/SMB/VPN server
● phone line connection (PSTN) to forward VOIP in/out-coming calls
● voice control commands (home light control, knowledge easy access, …)
● webradio/media with external audio amplifier connection
● anti-theft home security system [Ref.2]
● access to the system via remote login connection [Ref.3]
● infrared remote receiver
● remote control via smartphone app [Ref.4]
● personal cloud
Not all of these goals have been fully developed here, but the road is drawn.
Convergence - multimedia and home automation (at a very low cost) -v20201228- 4
2.1.Choosing the Operating System
A lot of Operating Systems are now available for ARM processors. Hereafter, you can find
some of them, available for free:
1. Raspberry Pi OS (previously called Raspbian)
This distribution is derived from Debian, and it has been created specifically for
Raspberry Pi systems.
2. OSMC (Open Source Media Center, formerly Raspbmc)
Even this distribution is derived from Debian, but built around the KODI mediacenter
(formerly known as XBMC). It can handle more components in an easier way (the
OSMC Settings internal module is already enabled to manage external USB Audio
devices, firewall, ssh, remote control, etc.) [Ref.5]
3. LibreELEC
Light Linux distribution built around Kodi mediacenter
4. O.S images
From the Raspberry Pi website you can get officially supported and third party
operating systems images.
Convergence - multimedia and home automation (at a very low cost) -v20201228- 5
3.Which Operating System
From the Raspberry Pi website Downloads page [Ref.7], you can get some O.S. images to
be flashed in your SD memory card.
To flash the SD, if you are using a GNU/Linux PC you can follow the procedure in the section
How to write down an image to SD card in the Addendum. For others PCs, you can read the
reference at link [Ref. 8]
Afterwards, only two O.S. will be evaluated: RaspberryPi OS and OSMC. They are quite
different, because the first one is a typical Linux distribution; the second one is a Linux
distribution with a mediacenter user interface.
3.1.RaspberryPi OS/Raspbian
“Raspbian is a free operating system based on Debian, optimized for the Raspberry Pi
hardware. An operating system is the set of basic programs and utilities that makes your
Raspberry Pi to run. However, Raspbian provides more than a pure OS: it comes with over
35,000 packages, pre-compiled software bundled in a nice format for easy installation on
your Raspberry Pi.” [Ref.9]
At this point, you can launch the Graphic User Interface (GUI):
startx
3.1.2.Programs to install
To simplify the search and installation of a software from the online repositories, you can
start installing synaptic, running from the shell this command:
sudo apt-get install synaptic
To get a mediacenter, install kodi, available on the default Raspbian repositories [Ref.10]:
sudo apt-get install kodi
3.2.OSMC
OSMC (Open Source Media Center) ([Ref.11]) is a linux-based Operating System distribution
with a Kodi media-center interface and it was born for Raspberry Pi. It is maintained by Sam
Nazarko and a team of volunteers. It was formerly known as Raspbmc.
After installation, if needed, you can reconfigure your keyboard layout [Ref.12]:
sudo dpkg-reconfigure keyboard-configuration
or reconfigure locales:
sudo dpkg-reconfigure locales
Convergence - multimedia and home automation (at a very low cost) -v20201228- 6
3.2.1.Configuration menu from KODI/OSMC
OSMC has a configuration program to set some specific features.
These ones are:
- Updates/backups settings
- Services (ssh/samba server)
- Overclock settings
- App Store
- Network settings
- Remotes
- Pi Configuration (hdmi output, MPG2 license, memory allocation, GPIO configuration)
4.Choosing applications
Once you have chosen the preferred O.S., you could even choose the applications to install
on it. There is a convenient way to proceed with the installation, using a computer remotely
connected via a ssh terminal to the IP of your system in the local subnetwork.
Hereafter, you can find a collection of useful applications.
4.1.KODI
“Kodi (formerly XBMC) is a free and open-source media player software application
developed by the XBMC Foundation, a non-profit technology consortium. Kodi is available for
multiple operating systems and hardware platforms” (Wikipedia).
Kodi has become very popular for its easy-to-use interface and for its Add-ons that give it
great flexibility, allowing to integrate images, music, video and other kind of entertainments.
If you choose a distribution without KODI “embedded” (e.g. RaspberryPiOS), you can install
prebuilt packages, looking for them in the Internet.
The first three ones are specific transcoding tools. The last one is a pipeline based
command, linking together other commands in a complex workflow.
To make the transcoding operation more efficient, it’s better to use hardware accelerated
audio/video conversions. In this case, the converter should use the Broadcom’s OpenMAX
libraries. Hereafter, I’ll introduce using Gstreamer in addiction to these libraries.
4.2.1.2.Executable release
You can install the already compiled version from the Raspian Repos, or adding to
/etc/apt/sources.list the source (now deprecated):
deb http://vontaene.de/raspbian-updates/ . main
To check the Gstreamer plugins are installed, you can use the gst-inspect-1.0 command,
then to learn more about a specific plugin, you need to pass its name to the command
line.
To check if the OpenMAX extensions have been correctly acquired, please get the
results for:
Convergence - multimedia and home automation (at a very low cost) -v20201228- 8
gst-inspect-1.0 | grep omx
4.3.Asterisk
Asterisk is an open source project capable of providing Private Branch Exchange (PBX), a
VoIP Gateway/Server or other services for an IP/PSTN communication system.
Asterisk and the Apache web server need a huge amount of RAM that might slow down the
system when running X Windows at the same time. To fix this, you can either shut down X
Windows, or use the FreePBX interface, a web-based Graphic User Interface (GUI), from
another computer on the network.
For installation purposes, you can follow the procedure in the par. Steps to install Asterisk
and FreePBX in the Addendum.
If you want to work with XWindows graphical environment, shut down Apache and Asterisk
from a root shell:
service apache2 stop
amportal stop
4.4.Other applications
Hereafter, there's a list of recommended software, very helpful in setting and using your
system as a PC. To manage the installation you can use Synaptic.
Tightvncserver (vnc server for remote connections)
Convergence - multimedia and home automation (at a very low cost) -v20201228- 9
php5
php-pear
You may install the following software as a starting set up of your system:
vlc (multimedia player, with a wide variety of CODECs embedded)
synaptic (graphic interface to manage software installation)
csh (advanced terminal command line)
lxde (desktop environment) [Ref.17]
nedit (advanced intuitive text editor)
gufw (graphic interface for firewall set-up)
motion (application to record/catch images from a web cam) [Ref.18]
lame (mp3 audio Encoder)
screen (sect.4 in the “Addendum”, “How to install and use Screen” )
5.1.Installation of Voicecommand
To get installed Voicecommand [Ref.21], connect to your system via a ssh terminal and
enter:
sudo apt-get install git-core
git clone git://github.com/StevenHickson/PiAUISuite.git
cd VoiceCommand
Change the string given to Wolfram-alpha server in the voicecommand.cpp:
link += "&rein
t erpret=true&translation=true&format=plaintext&input=";
cd PiAUISuite/Install/
./InstallAUISuite.sh
Convergence - multimedia and home automation (at a very low cost) -v20201228- 10
5.3.Update
You can update the application running the following commands:
cd PiAUISuite
git pull
cd Install
sudo ./UpdateAUISuite.sh
Sometimes the application would crash, so, as a future improvement, we could think of a task
to check if it's still running and run it again in case of crash.
In the Internet you can find tons of other projects of voice recognition ([Ref.22], [Ref.23]) and
text2speech systems [Ref.24].
6.Security
The security surveillance mode can be performed via video/audio devices and adding
presence detector devices:
1) webcam
2) microphone
3) occupancy sensors
Hereafter, I'm going to consider only the first kind of devices, leaving microphone and
occupancy sensors to future implementations.
Convergence - multimedia and home automation (at a very low cost) -v20201228- 11
6.1.Webcam
To manage web cameras you can install motion:
sudo apt-get install motion
If the motion daemon is running, the system is able to detect any movement in the field of
view of the camera. After that, you can either save videos or pictures.
Be sure to give the needed writing rights to your saving folders.
Furthermore, you can remotely observe the environment under surveillance, because an
integrated web server is also available.
To set the program up, you have to edit the motion.conf file, under /etc/motion/
There are some projects to get the DropBox connection, to store web cameras results in that
cloud.
It could be interesting to approach the study of a more complex system, built by RaspberryPI
evices (as peripheral leaf-devices).
(as a system controller) and Arduino d
7.Remote login
You can access your system via remote login from either inside the same subnetwork or
externally (worldwide).
To ensure an adequate level of security, my suggestion is to activate a secure ssh protocol,
to sustain a cryptographic network protocol, capable of connections over even unsecured
networks.
Convergence - multimedia and home automation (at a very low cost) -v20201228- 12
2) install ddclient from the standard repository;
3) set up your modem if noip is available in its settings.
For the first and third options you can follow the instructions on noip website or your modem
manual respectively.
As an alternative, to install ddclient [Ref.26]:
1) sudo apt-get install ddclient
2) answer to the questions during installation (username, pwd, protocol dyndns2, etc.)
3) then sudo nano /etc/ddclient.conf
4) protocol=dyndns2
5) use=web, web=checkip.dyndns.com/, web-skip='IP Address'
6) server=dynupdate.no-ip.com
7) login=yourusername
8) password=yourpassword
9) yourhostname.no-ip.org
10) to set the number of seconds between updates, add: daemon=600
11) to use ssl, add: ssl=yes
12) restart the client: sudo /etc/init.d/ddclient restart
13) to ensure the configuration is working: sudo ddclient -daemon=0 -debug -verbose
-noquiet
After getting your public IP address updated, to get your Raspy reached worldwide you’ll
have to set up your modem/router’s port forwarding, pointing to the Raspy subnetwork IP
address (e.g. 192.168.1.xxx) with TCP port:22.
To connect with a PC, you can run the VNC client using the chosen password for the server
on port number 5901.
For test purposes I used Remmina Remote Desktop Client under Ubuntu-GNU/Linux
distribution, without any user name, but only the passwd.
To make vnc server always available after system start up, use the cron c ommand to
schedule its launch:
crontab -e
and add the line:
Convergence - multimedia and home automation (at a very low cost) -v20201228- 13
@reboot /usr/bin/vncserver
8.1.Receiver
According to projects at [Ref.28] and [Ref.29] you can build a IR receiver. I did that for the
OSMC distribution.
You need a few components:
- 1 IR receiver sensor (TSOP38238);
- Some female to female leads, such as wiring connectors
- A remote control (i.e. your TV-set RC)
Convergence - multimedia and home automation (at a very low cost) -v20201228- 14
Schematic of the IR receiver, for the Raspberry Pi Model B, by Simon Monk
For your convenience, I have listed here the steps to follow, using a Raspberry Pi Model B+:
a) connect the IR receiver photo-sensor according to the schematics above (using pins
3.3V, GND and GPIO18)
b) open the “OSMC Settings” (in the OSMC distribution) and be sure the “Enable GPIO
TSOP IR Receiver” option is not set. Otherwise, unset it and restart KODI
c) connect to the Raspberry by a PC via SSH
d) sudo modprobe lirc_rpi
e) sudo kill $(pidof lircd)
f) mode2 -d /dev/lirc0
g) pressing buttons on the remote will display pulse/space codes on the monitor
h) to know the allowed key names for the following process, type the command:
irrecord –list-namespace
i) to generate the config file, type the command:
irrecord -d /dev/lirc0 ~/lircd.conf
j) open “OSMC Settings” and enable the IR receiver (“Enable GPIO TSOP IR
Receiver”)
k) set the “GPIO Remote Profile” to “Custom (lircd.conf)”
l) copy the lircd.conf file in /etc/lirc
m) in the OSMC menù, select Program - > OSMC Settings
n) select Remote a nd choose your lircd.conf file
Convergence - multimedia and home automation (at a very low cost) -v20201228- 15
8.2.Transmitter
You can even add to the Raspberry board some circuits to control home appliances.
If you prefer to keep your system electrically separated from other external devices, starting
from projects [Ref.30] and [Ref.31], you can create an infrared transmitter extension, with the
possibility of cloning the remote controls of the devices you need to drive.
To do that, you need few components:
- 2 IR emitting diodes (2N3906);
- 1 transistor P2N2222AG
- 1 10 KΩ resistor
- Some female to female leads, such as wiring connectors
Hereafter, I’m going to write the simple steps to build the IR transmitter:
a) connect the components according to the schematic below, for the Raspberry Pi
Model B (using of: pins 5V, GND, GPIO22)
b) Click on the “OSMC Settings” , in the OSMC distribution, and be sure the “Enable
GPIO TSOP IR Receiver” option is not set, otherwise, unset it and restart KODI
c) Open a SSH connection from a PC to the Raspberry and add these lines to your
/etc/modules file:
lirc_dev
lirc_rpi gpio_out_pin=22
d) Change your /etc/lirc/hardware.conf file to:
LIRCD_ARGS="--uinput"
DRIVER="default"
DEVICE="/dev/lirc0"
MODULES="lirc_rpi
e) Having previously built the receiver, now you can clone any remote control, so, write
in the terminal:
sudo modprobe lirc_rpi
sudo kill $(pidof lircd)
mode2 -d /dev/lirc0
f) pressing buttons on the remote you want to clone, you will see pulse/space codes
on the monitor
g) to know the allowed key names for the following process, via SSH, type the
command:
irrecord –list-namespace
h) to generate the config file with the given names of step g) (even if it is not the final
one), type the command
irrecord -d /dev/lirc0 ~/lircd.conf2
i) copy from begin remote to end remote from lircd.conf2 to lircd.conf file (already set
in IR Receiver setting) and set the remote control name after the keyword name, and
the final button names
j) Now, restart lircd so it acquires these changes:
sudo /etc/init.d/lirc restart
k) run one of the programmed buttons with:
irsend SEND_ONCE Remote_Name PROGRAMMED_BUTTON
Convergence - multimedia and home automation (at a very low cost) -v20201228- 16
Schematic of the IR transmitter, for the Raspberry Pi Model B
If you have any issue, look at the section "Issues building a IR transmitter", in the chapter
"Tuning the system: issues and surroundings".
9.DVB-T receiver
Using a Raspberry Pi with KODI installed, you can implement a DVB-T (Terrestrial Digital
Video Broadcasting) receiver, receiving free digital television programmes.
For this purpose, you need a USB DVB-T receiver and install a TV back-end server (such as
TVHeadend) .
At the referenced link [Ref.32],you can find a USB DVB-T device list compatible with Linux
kernels. To implement this project, I bought a Realtek RTL2832-chipset based receiver.
To get an easy installation of TVHeadend, you can follow the tutorial in the "Section 3" of the
Addendum, “How to install TVHeadend” (release version 4.1 of the program).
On line you can find lot of tutorials about using TVHeadend [Ref.33].
Convergence - multimedia and home automation (at a very low cost) -v20201228- 17
9.1.EPG
In addition to TV programs, each television broadcaster transmits information related to its
daily programs. The Electronic Programme Guide (EPG) usually contains titles, timings and
content plots of programmes to watch.
TVHeadend is able to get EPG information in three different ways [Ref.34]:
- Over-The-Air (OTA)
- Internal grabber
- External grabber
The configuration page for these grabbers can be accessed using an Internet browser by
navigating the IP address of your device, at port 9981, then selecting:
Configuration -> Channel/EPG -> EPG Grabber
See the figure below:
9.1.1.OTA Grabber
After installing TVHeadend back-end server, if you want your system to collect the EPG in
the simplest way, you can choose the Over The Air (OTA) grabber, to get EPG directly over
the air, choosing a module from Over-the-air Grabbers in the EPG Grabber section.
Convergence - multimedia and home automation (at a very low cost) -v20201228- 18
Please, visit the github section of the XMLTV project [Ref.35] for more information and to get
your locale tv_grab_xx file, then restart TVHeadend.
9.1.2.Internal Grabbers
In this case, the grabber can be initiated from within TVHeadend using a scheduler to set a
time to catch EPG data directly from the Internet, by selecting the corresponding “Module” in
that section.
The scheduler can be programmed in the section “Cron multi-line” with five parameters,
according to this convention:
[Mins (0-59)] [Hours (0-23)] [Day of the month (0-31)] [Month (1-12)] [Day of the week (0-6)]
Enter the web GUI and select Configuration -> Channel/EPG -> EPG Grabber, then in
“External Interfaces” choose XMLTV
9.3.Syslog
If you have any issues, you can enable the system log for debugging purposes, adding a line
to the configuration file of TVHeadend:
sudo nano /etc/default/tvheadend
set TVH_DEBUG = 1
Then, from the webGUI:
Configuration -> Debugging -> Debug Log Path: /home/osmc/tvhx.log
Convergence - multimedia and home automation (at a very low cost) -v20201228- 19
9.4.UPnP server
To make the recorded programmes available to your home network (smart TV and so on),
you have to:
1) enable UPnP server on Kodi;
2) format an external USB drive (pen/HDD) with Ext4 Filesystem;
3) connect the USB drive to the RaspberryPi;
4) substitute video folder under /home/osmc/.kodi/userdata/playlists with a symbolic link
to the external drive:
ln -s /media/<NAME of EXT DEV>/ video
5) open TVHeadend configuration browser (192.168.1.x:9981) and put the video folder
path in:
Configuration -> Recording -> Recording System Path
6) access the video folder via the smart TV
7) Record the TV programmes in mkv format to allow subtitles and fast forward/rewind
(tested on LG smart TV)
To enable Upnp, from KODI home, chose System -> Settings -> Services, then enable
Upnp/DLNA service.
To enable SMB server (in OSMC), from Program, open OSMC settings and install Samba
Server, then open a ssh remote connection from a PC and define the smb user password
with the following command:
smbpasswd -a osmc
11.Personal cloud
You can also implement your own Personal Cloud, where to store documents, photos and
other files, accessing it using specific apps directly from your smartphone.
For instance, you can use AndFTP or Cx File Explorer (find them in your app store) to tranfer
files from/to your cloud.
Of course, you can also access your remote virtual space via a PC, using Filezilla or some
specific functionalities, like “Add network location” or “Connect to server”, if available in the
File Manager of your O.S.
Convergence - multimedia and home automation (at a very low cost) -v20201228- 20
- Select from the menu, System -> Settings -> System -> Audio Output
- Audio Output Device: ALSA Generic USB Audio Device
- Select from the menu, System -> Settings -> Video -> Acceleration
- keep enabled OMXPlayer
- disable MMAL hw acceleration
Then:
alsamixer
and select the right card (F5)
● Transfer that file to a secondary machine (ftp, sftp, or scp commands are all available
options)
When needed (e.g. because of a corruption in your KODI configuration), you can write back
the stored backup:
● Move the saved tar-file to the Raspberry-Pi
Convergence - multimedia and home automation (at a very low cost) -v20201228- 21
● Run the following commands:
sudo systemctl stop mediacenter; tar -xzf backup.tar.gz; rm backup.tar.gz;
sudo systemctl start mediacenter
To make this working after every reboot of the Raspberry-Pi, you can add to the
/etc/hdparm.conf file:
/dev/sda {
spindown_time = 120
}
Another way should be using udisk command [Ref.41]. Unfortunately, the change of
/etc/udisks-glue.conf is not always working.
Anyway, to get a spindown timeout of 30 minutes (1800 seconds), you need to run:
sudo /etc/rc.local
sudo udisks --set-spindown /dev/sda --spindown-timeout 1800
Convergence - multimedia and home automation (at a very low cost) -v20201228- 22
Then…
e) To flash a new card with the saved image:
gzip -dc pi.gz | sudo dd bs=4M of=/dev/mmcblk0
To check the job in progress, write this command in another terminal window and come back
to check the first one:
sudo pkill -USR1 -n -x dd
15.Power consumption
Raspberry Pi has low power consumption.
Using an energy counter, you can measure the energy used by the system. For example, for
a RaspberryPI, model B+, with a self powered USB hub, I got approximately an average
power of less than 5W.
These results would confirm it’s cheap and convenient to keep the system up 24/7.
16.Addendum
1) How to write down an image on the SD card
Once you’ll get an O.S. image, you have to put it on a SD card, used as a Solid State Disc
(SSD) from the Raspberry Pi. Hereafter, some steps to follow if you are using a GNU/Linux
O.S. to make this procedure:
a) First of all, you’ll have to know the SD card mountpoint, so, before inserting it into the
reader, run the command:
df -h
b) Now, insert the SD card into the reader and run again:
df -h
c) A new device should be listed and you should see something like /dev/mmcblk0p1 or
/dev/sdX1, with one or more partitions
Convergence - multimedia and home automation (at a very low cost) -v20201228- 24
d) Unmount all the partitions of the SD card:
umount /dev/mmcblk0pX
or
umount /dev/sdX1, ...
(with X as the partition number)
e) Copy the image to the SD card:
sudo dd bs=4M if=2017-09-07-raspbian-stretch.img of=/dev/mmcblk0
conv=fsync
f) Or, if the image is zipped:
unzip -p 2017-09-07-raspbian-stretch.zip | sudo dd of=/dev/mmcblk0 bs=4M \
conv=fsync
g) Before removing the SD card, run this command to make sure the write flash is
flushed:
sync
Convergence - multimedia and home automation (at a very low cost) -v20201228- 25
c) Setting MySQL
sudo service mysql start
cd /usr/src/freepbx*
flush privileges;
exit
g) Set the correct Timezone for PHP, opening the PHP Configuration file
sudo nano /etc/php5/apache2/php.ini
date.timezone = Europe/London
Convergence - multimedia and home automation (at a very low cost) -v20201228- 2
6
APACHE_RUN_GROUP www-data
Change those to these:
APACHE_RUN_USER asterisk
APACHE_RUN_GROUP asterisk
Finally restart apache using the following command (if you have set the webserver control
option in OSMC, you need to set that port differently from 80, because of conflicts with the
one used by FreePBX):
sudo service apache2 restart
i) Install FreePBX
To install FreePBX, you will need to specify the username and password of the asterisk user
for the database we setup earlier, starting by typing in the following command (****** is the
password you chose):
sudo ./install_amp --username=asteriskuser --password=******
For each of the prompts, just hit enter except when prompted for
Enter the path to use for your AMP web root: [/var/www/html]
Once this is complete, set the file permissions for FreePBX, to be accessible to apache
users:
sudo chmod 777 /var/www/* -R
Convergence - multimedia and home automation (at a very low cost) -v20201228- 2
7
k) Enter the FreePBX page
Open a web browser and insert the IP address of the Raspberry Pi:
user: admin
Password: admin ( to be changed)
Config file:
/etc/amportal.conf
Change dir to TVHeadend source dir and change the user that will run TVHeadhend from hts
to osmc before you build the package:
cd tvheadend*
sed -i 's/hts/osmc/g' ./debian/tvheadend.default
You will end up with two packages (you won't need the dbg package), that you have to copy
to your osmc home folder:
Convergence - multimedia and home automation (at a very low cost) -v20201228- 2
8
cp /tmp/src/tvheadend_*deb /home/osmc/
If TVHeadend was not yet installed, you'll be asked to enter/choose a user name and
password and then you should be able to browse to http://x.x.x.x:9981/
To configure TVHeadend:
tvheadend -C
To restart TVHeadend:
sudo service tvheadend restart
If the autostart is not working automatically, you can take a look at the tutorial at [Ref.47].
To reconnect:
screen -r
If you have more than one session open, add the session name:
screen -r <session name>
Convergence - multimedia and home automation (at a very low cost) -v20201228- 2
9
To terminate a session:
CTRL + D
############################################
#This is an example of the config file
#These are the special options you can set (remove the #)
!api==L3VH6W-9G64K49RYY
!maxResponse==1
!language==en
#Not to verify if not explicitly
!verify==0
!thresh==0.8
!continuous==1
!response=="OK"
!quiet==0
!ignore==1
!filler==0
!duration==2
!com_dur==1
#!hardware==plughw:1,0
#Here are the commands
show me==/home/pi/AUI/Imaging/test 2
track me==/home/pi/AUI/Imaging/test 1
download==download ...
play $1 season $2 episode $3==playvideo -s $2 -e $3 $1
download $1 season $2 episode $3==download $1 s$2e$3
play==playvideo -r -f ...
multiple==playvideo -r -m -c 5 ...
YouTube==youtube-search ...
#Google==google ...
Google==/home/pi/my_prog/scripts/google ...
#~music==xterm -e pianobar
~weather==/home/pi/AUI/Misc/sayweather.sh
~made you==tts "I was created by Steven Hickson" 2>/dev/null
#~music==xterm -e control-pianobar.sh play
~terminal==xterm &
#~Internet==midori &
~Internet==lynx --accept_all_cookies &
!hardware==plughw:0,0
#!thresh==2.00794
!keyword==moon
Convergence - multimedia and home automation (at a very low cost) -v20201228- 3
0
!improper=="Repeat, please"
###############################################
###LIGHTs########################################
light==/home/pi/my_prog/scripts/lux ...
switchon==/home/pi/my_prog/scripts/switch_on ...
switchoff==/home/pi/my_prog/scripts/switch_off ...
~dark==/home/pi/my_prog/scripts/command_light_off
17.References
[Ref.1]: Wikipedia: Technological Convergence
https://en.wikipedia.org/wiki/Technological_convergence
https://www.ionos.com/digitalguide/server/tools/free-dynamic-dns-providers-an-overview/
[Ref.5]: OSMC
https://osmc.tv/
[Ref.6]: RaspberryPiBoard
https://elinux.org/RPi_Hub
https://www.raspberrypi.org/documentation/installation/installing-images/
http://www.raspbian.org/FrontPage
Convergence - multimedia and home automation (at a very low cost) -v20201228- 3
1
[Ref.12]: Re-mapping the keyboard with Debian Squeeze
http://elinux.org/R-Pi_Troubleshooting#Re-mapping_the_keyboard_with_Debian_Squeeze
https://raspberrypi.stackexchange.com/questions/9311/how-to-install-lxde-on-raspbmc
[Ref.20]: How to Control a Lamp With Voice Commands and a Raspberry Pi
https://computers.tutsplus.com/articles/how-to-control-a-lamp-with-voice-commands-and-a-raspberry-p
i--mac-60825
Convergence - multimedia and home automation (at a very low cost) -v20201228- 3
2
[Ref.29]: RC GPIO /IR remote working?
https://discourse.osmc.tv/t/rc-gpio-ir-remote-working/1612
http://manpages.ubuntu.com/manpages/artful/man1/tv_grab_it.1p.html
[Ref.37]: Is it possible to have used DAC output and hdmi audio output
simultaneously?
https://discourse.osmc.tv/t/is-it-possible-to-have-used-dac-output-and-hdmi-audio-output-simultaneous
ly/2066
Convergence - multimedia and home automation (at a very low cost) -v20201228- 3
3
[Ref.44]: Lirc has to be manually restarted after boot
https://www.raspberrypi.org/forums/viewtopic.php?f=37&t=51900&sid=f4156404a7f6cfc2cd4f1e1b4b7
2eef2
[Ref.45]: GPIO
https://www.raspberrypi.org/documentation/usage/gpio/README.md
Convergence - multimedia and home automation (at a very low cost) -v20201228- 3
4
18.Pictures
Convergence - multimedia and home automation (at a very low cost) -v20201228- 3
5
Convergence - multimedia and home automation (at a very low cost) -v20201228- 3
6
“Convergence-Multimedia and home automation” by Alex Pojer
is licensed under a Creative Commons
Attribution-NonCommercial-ShareAlike 4.0 International
License.
Convergence - multimedia and home automation (at a very low cost) -v20201228- 3
7