Creating an Update Daemon for SUSI Smart Speaker

A daemon in reference of operating systems is a computer program that runs as a background process rather than under direct control of the user. Various daemons are being used in SUSI smart speaker. The following daemons have been created Update Daemon Media Discovery Daemon Factory Reset Daemon  In this blog, we’ll be discussing the implementation of the Update Daemon in SUSI.AI Update Daemon Due to the ever-growing coding community, it is needed to provide regular updates to the smart speaker and keep it in sync with the latest technology. Hence an Update Daemon was required that could fetch updates at a regular interval. The Updated Daemon was implemented in the following steps 1.Deciding the Update Interval How frequently should we check for updates was the first question that was tackled while implementing this daemon. We decided that we should check for Update, every time the Raspberry Pi starts and an internet connection was available. 2. Implementing The Decision To start the Update script every time the Raspberry Pi starts, we decided to create Systemd rules. [Unit] Description=Update Check- SUSI Linux Wants=network-online.target After=network-online.target [Service] Type=oneshot ExecStart=/home/pi/SUSI.AI/susi_linux/update_daemon/update_check.sh [Install] WantedBy=multi-user.target The above rule waits for a network connection to be established with the Raspberry Pi and then triggers a bash script that fetches updates 3. Fetching The Updates Now, a bash script was prepared that would fetch the latest changes from the online repo and merge the latest changes in the local repo   #!/bin/sh UPSTREAM=${1:-'@{u}'} LOCAL=$(git rev-parse @) REMOTE=$(git rev-parse "$UPSTREAM") BASE=$(git merge-base @ "$UPSTREAM") CHECK='' if [ $LOCAL = $REMOTE ] then    echo "Up-to-date"    CHECK='up-to-date' elif [ $LOCAL = $BASE ] then    echo "Need to pull"    CHECK=”Need-to-pull” else    echo "Diverged" fi if [$CHECK = "Need-to-pull"] then    git fetch UPSTREAM    git merge UPSTREAM/master fi   Resources https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-unit_files https://github.com/fossasia/susi_linux https://github.com/fossasia/susi_server Tags   susi.ai, gsoc, gsoc’18, fossasia, update, daemon, update_daemon, smart speaker, systemd, hardware

Continue ReadingCreating an Update Daemon for SUSI Smart Speaker