This should show up at 9am on 7/21/2020
Digital Signage in the Church Setting
The latest project has been trying to get a digital sign up and running in the church. I thought I’d give a little breakdown of the project.
The Concept: Create a Digital Sign that can list church activities, announcements and other important information. It must be cheap, easy to update and be upgradable for the future. It also must have an anti-theft device to dissuade someone from trying to steal it since it is in an open area.
The Challenges: Coming up with a system that can be edited easily but doesn’t cost an arm and a leg. There are great sign companies out there providing great solutions for a fee. You could always get a TV with a USB reader and load slides everyday. But I wanted something that was easier than that. I wanted it to be web-based so a volunteer could log-in and update it.
The Solution: Obviously any TV with an HDMI input will work. The question is how to get info onto the TV. Initially I thought about a recycled computer running Debian or Ubuntu but when I contemplated running a long enough HDMI cable to reach or the issue of powering it, I switched my focus. What about a Roku, Boxee Box or Apple TV? All legitimate options. I landed however on the Raspberry Pi Model B.
This baby will run a modified version of Debian, uses 5v and so far will just run 24/7.
Building the Raspberry Pi to run the Digital Sign
Building The Sign Website
- Install Drupal as you normally would
- Add the following Modules:
- Front Page
- Chaos Tools
- WYSIWYG Editor
- IMCE
- Views
- Views Slideshow
- Libraries
- IMCE wysiwyg
- Draggable Views
- Entity
- Add the jquery files for the slideshow module
- Add TinyMCE (or other favorite editor) for WYSIWYG
- Add your favorite Theme Template (I used Adaptive Theme)
- Disable Comment module
- Remove all the Blocks you don’t want displayed
- I have a header block to contain the Logo
- The main content block
- Go into the Image Style and setup any cropping you want for images you upload and thumbails
- Setup your Content type
- I created an Announcement that just has a Title, Image and Thumbnail
- I also created a Schedule content type that contains Title and Body
- Create a View that shows both types in a Slideshow Format
- Follow the instructions to create a draggable view
- I limited it to the title and thumbnails in a block
- Connect the draggable view to the main slideshow
- Create a View through blocks that shows unpublished content
- Setup Front Page to point to your slideshow link
Security
Slicing an MP3 Based on Marks in the Metadata
Notes: Installing ExifTool – You need sudo yum install perl-ExtUtils-MakeMaker before the Install instructions work for http://www.sno.phy.queensu.ca/~phil/exiftool/install.html
I first decided to use exiftool to find the data I needed:
exiftool -UserDefinedText -a filename.mp3 [where -UserDefinedText is the specific metat field and -a shows all of the fields]
User Defined Text : (DDJ/VER) 0100
User Defined Text : (DDJ/MK01) 885324
User Defined Text : (DDJ/MK02) 1956684
exiftool -UserDefinedText -a filename.mp3 | grep -oP ‘\d+\D+\K\d+’
Extracts the data, uses grep to pull both numbers.
Since I want them separate I add a second grep (might be a better way).
exiftool -UserDefinedText -a $file | grep MK01 | grep -oP ‘\d+\D+\K\d+
Here’s the script test file
#!/bin/bash -x
file=’/home/jimusik/mp3/06152014094419_DN-700R1.mp3′
mk1=`/usr/local/bin/exiftool -UserDefinedText -a $file | grep MK01 | grep -oP ‘\d+\D+\K\d+’`
mk2=`/usr/local/bin/exiftool -UserDefinedText -a $file | grep MK02 | grep -oP ‘\d+\D+\K\d+’`
/* calculate start */
totsecs1=`echo $mk1 / 900.037 | bc`
min1=`echo $totsecs1 / 60 | bc`
sec1=`echo “$totsecs1 – ($min1 * 60)” | bc`
totsecs1=`echo “scale=2; $mk1 / 900.037” | bc`
hund1=`echo “$totsecs1 – ($min1 * 60) – $sec1” | bc`
hun1=`echo “scale=0; $hund1 * 100/1” | bc`
start=`echo $min1″.”$sec1″.”$hun1`
/* calculate end */
totsecs2=`echo $mk2 / 900.037 | bc`
min2=`echo $totsecs2 / 60 | bc`
sec2=`echo “$totsecs2 – ($min2 * 60)” | bc`
totsecs2=`echo “scale=2; $mk2 / 900.037” | bc`
hund2=`echo “$totsecs2 – ($min2 * 60) – $sec2” | bc`
hun2=`echo “scale=0; $hund2 * 100/1” | bc`
end=`echo $min2″.”$sec2″.”$hun2`
echo $start” “$end
/* Split the file */
mp3splt $file $start $endmp3
Update Drupal 7 using SSH
This is my own tutorial so I don’t forget for the future. Stole directly from http://drupal.org/node/297496 with modifications for my useage. I currently use dreamhost and enjoy their SSH access to the servers my sites are hosted on.
UPDATE: I now added Drush to my SSH access so you only need to run one command to backup and update.
$drush pm-update
The following is for those with limited SSH or access to the host only via web/ftp.
Prepare your site
- Switch Drupal into Off-line mode so that visitors do not access the site while the upgrade is happening and encounter various errors.
- Ensure that you are logged into the site as the main administrator account (user ID 1). You cannot run the update.php file near the end of the process unless you are logged in as the administrator user. If you forget to log in first before running update.php, the page will inform you of the step to take to regain access.
Backup your site
Next back up the full site, both the files as well as the database. Never upgrade without backing up. Ever. Here are the basic commands needed for a quick manual backup:
- First make a directory with today’s date in your backups folder (create the backups folder first if you haven’t made one yet). Ensure that this folder is not accessible to the web:
mkdir /home/yoursitename/backups/08-17-08
- Now backup the database (customize with your directory paths and info):
mysqldump --user=username --password=password --host=drupal_database > /home/yoursitename/backups/08-17-08/yoursite_db.sql
- Next backup your site’s files (again, customize as needed):
tar -czvpf /home/yoursitename/backups/08-17-08/yoursite.tar.gz /home/yoursitename/public_html
Upgrade your site
- Navigate to your site’s root directory (the following commands from this point are to be run while you are in the root directory of your site):
cd /home/yoursitename/public_html
- First make a temporary folder to hold Drupal’s old files/folders until you’re certain that the upgrade has completed successfully (doing this extra step instead of deleting the old files right off can be helpful in an emergency, since it makes it quick and easy to undo things back to normal if the upgrade fails for some reason, rather than bothering with extracting the whole backup):
mkdir d-backup
- Next paste in the following command which moves all of Drupal’s files and folders, besides your personal ones (such as the /sites and /files folders), into the temporary d-backupfolder. The .htaccess and robots.txt files are not included in the move since it’s possible that you’ve customized them (however if not, feel free to add them to the list):
Drupal 7:mv authorize.php CHANGELOG.txt COPYRIGHT.txt cron.php includes index.php INSTALL.mysql.txt INSTALL.pgsql.txt install.php INSTALL.sqlite.txt INSTALL.txt LICENSE.txt MAINTAINERS.txt misc modules profiles scripts themes update.php UPGRADE.txt web.config xmlrpc.php d-backup
- Check Drupal.org’s home page to get the download link for the latest version of Drupal (or simply adjust the number in the command below). Generally you can safely upgrade from your current version of Drupal to any version within the same release (for example 6.1 to 6.4), though reading the UPGRADE.txt files for each version ahead of time is advised, just in case. However extra caution/preparation is required upgrading between major releases (for example 5.x to 6.x). Some web hosts do not support the wget command so the alternate curlcommand is also listed (if neither are supported, resort to FTP).
Using wget:
wget http://ftp.drupal.org/files/projects/drupal-7.20.tar.gz
- Extract the downloaded file (it will create its own sub-folder for the files, so don’t worry about it getting mixed up with your own files). This command assumes you only have one downloaded copy of Drupal in the directory – if you have others, enter the full name to exact it instead of using the wildcard character:
tar -xzvpf drupal-*
- Go into the newly created sub-directory:
cd drupal-*
- Run the following command to move the new Drupal files out of the folder they were extracted into and into place in the root directory of your site. This moves “only” the same files and folders which you moved into the d-backup folder, preserving all of your personal files and folders (e.g. the /sites and /files directories) The ../ at the end is what tells the command to move the data up one level in the folder structure, into your site’s root directory:
Drupal 7:
mv authorize.php CHANGELOG.txt COPYRIGHT.txt cron.php includes index.php INSTALL.mysql.txt INSTALL.pgsql.txt install.php INSTALL.sqlite.txt INSTALL.txt LICENSE.txt MAINTAINERS.txt misc modules profiles scripts themes update.php UPGRADE.txt web.config xmlrpc.php ../
- Return to your site’s root directory:
cd ..
- If you had any extra files which you placed into Drupal core folders (for instance jquery.js into the /misc folder in the case of having the jQuery Update module installed), you can quickly restore them into place using commands as well. Very few modules ask you to put files outside of the modules directory, so this may never be a step you need to do. Here are several common examples:
cp sites/all/modules/jquery_update/jquery.js misc/jquery.js
cp sites/all/modules/image/image.imagemagick.inc includes/image.imagemagick.inc
- Lastly, go to example.com/update.php in your web browser and follow the instructions to update the database within a few clicks. Do not adjust any of the drop-down menus under the “Select versions” fieldset; simply run update.php. You can go to Administer > Logs > Status report (Drupal 5) or Administer > Reports > Status report (Drupal 6 and 7) to confirm your Drupal version.
Clean up temporary files/folders and restore access to your site
- Now that the upgrade has completed successfully, go ahead and delete the temporary d-backup folder (remember you still have your “real” backup file in case you need it). Also delete the tar.gz copy of Drupal which you downloaded and the drupal-* folder it was extracted into. To do this all in one step, run this command (only if you do not have any files or folders the name of which begins with drupal- that you want to keep, as this will immediately delete them all):
rm -rf d-backup drupal-*
- Many Drupal site admins prefer to delete the various .txt files (such as UPGRADE.txt, README.txt, etc) in the root directory of their Drupal sites (often because these files easily reveal the currently-installed version of Drupal to the public). Feel free to delete every .txt file from your Drupal installation directory besides robots.txt. If you perform this deletion, adjust the “mv” (move) commands from steps 3 and 7 to no longer include these files during future upgrades.
- When done, you can re-enable Drupal for the public again at Administer > Site configuration > Site maintenance (admin/settings/site-maintenance). You should test the site to ensure that everything works as expected.