Setting up OctoPi (OctoPrint) with Email Notifier yagmail

I found a few guides to this on the internet but none of them worked for me out of the box using the latest (as of today) Octopi image and a Raspberry Pi 3. What I did eventually get to work was the following

  1. Login to your raspberrypi using SSH. I use Bitvise SSH for all my SSH needs.
  2. Run a few commands to make sure your octoprint is setup correctly. The explanation for the lines is as follows. Activate octoprint environment -> install yagmail (probably already installed) -> install keyrings.alt which is needed by yagmail -> activate python -> run the yagmail registration command
    source ~/oprint/bin/activate
    pip install yagmail
    pip install keyrings.alt
    import yagmail
    yagmail.register('', 'yourpassword')
  3. While you’re here do a test run to make sure you can connect (this will only work for Gmail SMTP servers. It’s possible to get it working with other servers but you would have to modify some source code to get the ports right. Much easier to just use Gmail)

    You should get back

    <yagmail.yagmail.SMTP instance at ...>
  4. Install “Email Notifier” through the OctoPrint web interface if you haven’t already.
  5. Restart your RaspberryPi – This may seem unnecessary but I highly recommend it. I ran into lots of problems with emails not sending that were fixed by a simple reboot.

How to move OcotoPi (OctoPrint on Raspberry Pi 3+) to a new Network

If you’re renaming your network or taking your OctoPi & Printer on the road you may need to change the name and credentials of the Wifi network to work. It’s not hard to do but you will need to connect to the Raspberry Pi console directly. This is when having the Raspberry PI LCD screen comes in really handy.

Once you’re looking at the Raspberry Pi console the network setup file is in

sudo nano /boot/octopi-network.txt

You will recognize this file from initial setup. Just change the name and password to the new network and reboot.

Handy Linux Commands

Get the size of the folders in any directory

du -sh folder_location/*

Get the size of folders in the current directory

sudo du -chax --max-depth=1 . | grep -E "M|G"

Search for content of a file from the command line

grep [--include=file_pattern.extension] -rnwl "matching pattern"

Create a new SVN Repo

sudo svnadmin create /svn/repos/repo_name
sudo chown -R www-data:www-data /svn/repos/repo_name

Remove Directory and Contents

rm -r mydir

List CPU Usage of running processes


Get Wireless Signal Information


will save in /tmp/file_list_$FOLDER an alphabetically ordered list of all the files inside $FOLDER, complete with the corresponding sub-folders

find $FOLDER -type f | cut -d/ -f2- | sort > /tmp/file_list_$FOLDER

Display all processes accessing a folder or drive (source)

sudo fuser -mv /folder

zpool change mount location (source)

zfs set mountpoint=/myspecialfolder mypool

lsof command to get the process ID of the process holding the lock files (source)

sudo lsof /var/lib/dpkg/lock
sudo lsof /var/lib/apt/lists/lock
sudo lsof /var/cache/apt/archives/lock

Get all processes running “apt” and kill those processes (source)

ps aux | grep -i apt
sudo kill -9 <process_id>

1and1 Cloud Hosting Odoo Install – Ubuntu 14.04

You can install Odoo from the Bitnami package but I wanted to have it from source so that I could make changes and get updates with the git commands.

I followed this guide to get started

Which got me most of the way there but I still had 2 problems.


1 creating the database gave me an error

DataError: encoding UTF8 does not match locale en_US DETAIL: 
The chosen ****** setting requires encoding LATIN1.

To fix this I ran the following commands

sudo su postgres


update pg_database set datistemplate=false where datname='template1';
drop database Template1;
create database template1 with owner=postgres encoding='UTF-8' lc_collate='en_US.utf8' lc_ctype='en_US.utf8' template template0;

update pg_database set datistemplate=true where datname='template1';



Then once I had created my database I got an error at the top of the page

/usr/bin/env : node: No such file or directory in ovoo v9
– /website/static/src/less/import_bootstrap.less
– /web/static/src/less/variables.less
– /web/static/src/less/enterprise_compatibility.less
– /web/static/src/less/utils.less
– /web/static/src/less/modal.less
– /web/static/src/less/notification.less
– /base_import/static/src/less/import.less
– /web_tip/static/src/less/tip.less
– /web_calendar/static/src/less/web_calendar.less
– /web_diagram/static/src/less/diagram_view.less
– /web_kanban/static/src/less/kanban_dashboard.less
– /web_kanban/static/src/less/kanban_view.less
– /web_settings_dashboard/static/src/less/dashboard.less

To fix follow the instructions from the NodeJS Website:

curl -sL | sudo bash -
sudo apt-get install -y nodejs
sudo npm install -g npm

Then install Less and accessories:

 sudo npm install -g less less-plugin-clean-css

The Simple Way to Mount a Network Drive on Lubuntu – Ubuntu – Debian

There are lots of answers out there for this problem and they are all absurdly complicated. Here’s the easy way to do it and it takes about 2 minutes.

If you don’t have cifs installed then you’ll need to install the utils package. It’s not installed by default with lubuntu. The command is “sudo apt-get install cifs-utils

Create a director to map this folder to in your media folder “sudo mkdir /media/{your folder name}

Then you need to edit your fstab file. “sudo leafpad /etc/fstab

To the end of the file add the following line; remember to replace the sections in brackets with your information
//{your drive IP address}/{any sub folders you want} /media/{your folder name} cifs username={drive_username},password={drive_password}

To test if it’s working type “sudo mount -a” if you did it wrong this will give you some useful error messages. Unfortunately cifs only supports IP addresses currently so you’re stuck with that. It’s generally a good idea to give things like a network drive a static IP address.

Earlier today I installed some updates and ended up having a problem with my mount. I had to add a version flag to the end of my fstab line to get it to work. vers=1.0 I tried vers=2.0 and vers=3.0 which did not work for me.
// /media/nas cifs username=****,password=****,vers=1.0

Odoo 9 Step By Step Install Guide – Linux Ubuntu Lubuntu Debian

Unfortunately Odoo has intentionally made their community edition a little on the difficult side to install. I can only assume this is to drive people to their paid SaaS model. To balance this I’ve put together a guide to getting Odoo up and running and I’ll add updates as I implement and deploy new functionality.

  1. Download Odoo from their website – You’ll want to pick Odoo 9 Community for Linux
    The pick “Latest Debian 9.0” as your download

The install script does a pretty good job setting up new users and getting things installed and put into the correct place. One very critical step that it does leave out is getting Postgresql configured properly. So that’s step 2. You will see a 500 Internal Server Error if you try to access http://localhost:8069 at this point

  1. Setup Postgresql user
    1. Postgresql should have already been installed but if it wasn’t you can use this command to do it from the terminal “sudo apt-get install postgresql
    2. if you get the message “No passwd entry for user postgres” you probably need to do t his
  2. Well need to create a new user and password that odoo can use to access the database – You can do that with these 2 commands
    1. Switch to postgresql user “sudo su – postgres”
    2. Execute the command “createuser –createdb –username postgres –no-createrole –no-superuser –pwprompt odoo
    3. You will be asked to create and confirm a password – This is the password that will protect your odoo database so make it something good and then remember it – you will need it again
    4. Type “exit” to get back to your previous user
  3. Edit the Odoo config file which is cryptically still called “openerp” even though they changed the name of the software quite some time ago
    1. the file is located in “/etc/odoo/openerp-server.conf
    2. on Lubuntu the command would be “sudo leafpad /etc/odoo/openerp-server.conf” just replace leafpad with “gedit” if you are on ubuntu or your favorite text editor
    3. You need to change the 2 lines for “db_user” and “db_paspsword” to odoo and the password you chose before
    4. also add “logfile =/var/log/odoo/odoo-server.log” to the end of the config file so you can track down log files if you need to
  4. You should now have Odoo up and running at “http://localhost:8069“!
    1. You will get a first configuration screen to setup a new database for your instance
    2. Go ahead and pick your password which will be the default password for your administrator user
    3. The default user name (which it wont tell you) is “admin” with the password you picked
    4. Note: if you change the email address of the admin user you will then login with that email address instead of admin


Let me know if you run into trouble!

The “Some controls on this presentation can’t be activated” Solution

Also know as Object Library Invalid Or Contains References To Object Definitions

I just finished an epic battle with PowerPoint cause by a recent round of Windows Update. My colleague ran into the same problem so it’s time to share the cause and very easy fix to this problem. If you see “Some controls on this presentation can’t be activated. They might not be registered on this computer” when you startup specific PowerPoint files and you’ve recently updated your computer then this is likely your problem.

some controls


To verify if you’re having the same problem open a new PowerPoint file and go to the “DEVELOPER” tab. If you don’t have it you can activate it by going to

File > Options > Customize Ribbon > Right hand panel > Check the box next to Developer

Then try to place one of the “Controls” onto your blank new PowerPoint file.


You should get an error indicating the library is corrupted and missing. Congratulations you’ve identified the problem! Now for the fix:

Open Windows Explorer and type %AppData% into the address bar. Which will take you to the Roaming Directory. You need to navigate back one folder to just the AppData Directory. (On Windows XP running office 2010 I found the files in “Local Settings” instead of “AppData”)


From there just search for “*.EXD” and remove any files that you find. These files are temporary and will conflict with the new files that were installed by Microsoft. Instead of uninstalling updates and Office multiple times, take the easy way out and delete these files. Restart PowerPoint and you’ve got your fix!


Some other things I searched for when trying to fix this problem

method ‘object’ of object ‘oleformat’ failed ActiveX Label
missing activex control windows 8.1
activex controls not registered powerpoint
reinstall activex control windows 8.1
Object Library Invalid Or Contains References To Object Definitions


Connect Excel to PostgreSQL through SSH Tunnel (Part 2)

Now that you have setup your SSH tunnel using Putty It’s time to get excel involved. (Not there yet? go back to part 1)

You will need Office 2013 Professional to get access to the software and you will need to download Power Query from Microsoft. Here’s the current link

Before you connect to a PostgreSQL database, the PostgreSQL .Net Data Provider needs to be installed. To install the PostgreSQL .Net Data Provider, see Install the PostgreSQL .Net Data Provider.

Once you’ve installed Power Query and the PostgreSQL adapter you are ready to open Excel. Navigate to the new Power Query tab and select From Database

Power Query From Database

Power Query From Database

You’ll get a popup to setup your database

Power Query PostgreSQL Database Connection Popup


Server will be localhost and the tunnel port that you setup before. If you’re following along closely we setup localhost and used the default value of 5432. This plugin doesn’t appreciate non-default port numbers so be sure to use the default.
Database is the name of your target database on the server

You will need to enter your database username and password also. You will likely get the following popup which is a good sign and you should accept.

Power Query Encryption Popup

Power Query Encryption Popup

If you run into trouble leave a comment and I’ll see if I can help.

Connect Excel to PostgreSQL through SSH Tunnel (Part 1)

This is a solution I managed to cobble together through trial and error and a lot of web searching. The fundamentals will be applicable to any remote database and should save you a lot of time searching.

1) Setup the tunnel with Putty.
Download Putty Here if you need it:

Once installed you need to create a session. It’s important to do this first as putty likes to delete configurations when you change the settings:

Host name will be the remote server that hosts the database: something like

Putty Configure Settings

Putty Configure Settings

It’s good to test this connection before going forward.

Once you have confirmed your connection to be functional you will need to reopen putty and setup your sever connection again. This time give it a name in “Saved Sessions” and click “Save” to store the configuration.

Next navigate to the Tunnels Section of the Connection > SSH menu

Putty SSH Tunnel

Putty SSH Tunnel

This is where you are going to define your local redirect settings:
Source Port is for the port on your computer that will be used for the connection (typically called localhost)
Destination is the location on the remote server that you need to access. For me and for most databases this is going to be localhost again. Be sure to include the port number for the database. PostgreSQL uses 5432 by default. (It’s important to use the default because the excel addin only supports default port numbers) ( is interchangeable with localhost and just means redirect to the computer I’m on)

Putty Tunnel Setup

Putty Tunnel Setup

Go back to Session and be sure to Save your configurations otherwise they will be lost next time you start putty. Like I said, Putty really likes to delete configurations.

You’ll get this screen to login and once complete your tunnel will be setup!

Putty Login Screen

Putty Login Screen

Continue to Part 2 – Setting up Excel

Working with a 4K display on Windows 8 (Refresh Rate)

I’ve been using my 4K monitor for a few months now and it’s changed the way I work and interact with the computer. It isn’t without some challenges. If you are accustomed to a 60hz monitor (a monitor which can refresh the screen 60 times per second) and you switch back to 30hz you’re going to feel like there’s some lag in the mouse. The technology is moving in the direction of higher frame rates as HDMI standards start to catch up with the screens but for the average user, those advances are expensive and difficult to work with. Most shows and movies are presented in 30hz so you wont notice any difference when watching movies and the 4K makes for a really stunning picture quality.

Having the mouse lag took some getting used to but it hasn’t had a major impact on my productivity and I’ve been writing software and doing 3D modeling without any major problems. When I want to play a game I switch back to 1080p to give my graphics hardware some room to breath and to get the increased frame rates that are so critical to gaming. To switch between modes follow these steps:

  1. Right click on a blank area of the desktop and select Screen Resolution.
  2. You’ll need to change Resolution down to 1920 x 1080 in order to access the higher refresh rates. Windows knows enough to limit your selections in the next step.
  3. Before applying the new settings chose “Advanced settings” to get the following dialog
  4. Select the 60 Hertz from the drop down and hit apply. All your changes will go into effect.
  5. To change back to 4K just do step 1 and 2 but select the 4K resolution. The hertz will automatically set to 30 hertz.