Fönsterstyrning

För meditationscentret har jag byggt en enhet som mäter koldioxid, temperatur och luftfuktighet samt läser av när fönster öppnas och stängs. Vi har elektriskt styrda fönster som styrs med liknande lampknappar för att öppna och stänga.

Det händer att personen som är sköter vädring av salarna blir upptagen så fönstren står öppna längre vilket kan göra det kallt för eleverna. Det har också hänt att fönster glömts öppna en hel natt.

Enheten som jag byggt kan därför automatiskt stänga fönstren om de stått öppna längre än en viss tid eller om koldioxidhalten i salen underskrider ett visst värde.

Kod finns på Github.

pip and virtualenv

Python comes with a lot of great features built in but heaps more can be installed from the Python Package Index. Using the command pip this is really simple. To install for example the requests library you write the following from a terminal / command prompt:

pip install requests

To list all packages installed write:

pip freeze

Example output:

requests==2.11.1

Problem

When working on multiple Python projects on the same computer you will sooner or later run inte package dependency problems. One project might require requests version 1 while another requires requests version 2.

Solution

A solution to this problem is using virtualenv to create virtual environments. When a virtual environment is created it looks like a brand new Python installation. Calling pip freeze will show that no packages are installed. If a package is installed it is available as long as the environment is active.

To make virtualenv easier to use there is a project called virtualenvwrapper which adds a few commands to the terminal. If using Windows virtualenvwrapper-win should be used but the commands are the same.

virtualenvwrapper

To create a new virtual environment (replace test with the name you want):

mkvirtualenv test

The environment will be created, your Python installation will be available and the new environment will be activated.

It will look like this:

Computer:~ marcus$ mkvirtualenv test
New python executable in test/bin/python3.4
Also creating executable in test/bin/python
Installing setuptools, pip, wheel…done.
[…]
(test)Computer:~ marcus$

Notice how the prompt has changed from  now starting with (test). This is to inform which environment is active.

To stop using the environment:

deactivate

The prompt changes back to Computer:~.

To use the newly created environment again:

workon test

If you don’t need your environment any more you can easily delete it:

rmvirtualenv test

Notice that you can not remove an environment that is currently active, you will have to deactivate it first.

Bonus

All at once

Install multiple dependencies at once using a requirements file. At its simplest level a requirements file is just a text file listing a dependency name per line but usually also contains the version like the output of pip freeze.

pip install -r requirements.txt

Multiple Python versions

Even though Python 3 is the recommended version to use, there are cases when the much older Python 2 is required. If more than one Python version is installed the requested one can be chosen when creating the virtual environment.

mkvirtualenv test --python=/usr/local/bin/python2

Links

  1. Python Package Index
  2. pip
  3. VirtualEnv
  4. VirtualEnvWrapper
  5. VirtualEnvWrapper Win

Selamat malam

Jag tycker språk är väldigt svårt att lära sig. Men det måste finnas metoder som är bättre än sämre. Har lite funderingar på att göra en Android app som jag kan använda för att bygga upp mitt eget ordförråd av indonesiska och sasak. Hade tänkt mig följande flöde:

  • Spela in ord på engelska
  • Spela in ord på ett eller flera andra språk
  • Skriv in ordet på engelska

Detta borde gjorde göra flödet att lägga in nya ord effektivt. Att skriva in ordet på engelska kan man t.o.m. vänta med tills senare då man lyssnar av ordet. Man skulle också kunna prova att processera de inspelade orden genom en nätbaserad översättningstjänst.

Tills jag gjort något sådant får jag nöja mig med nätövningar, t.ex. följande som verkar väldigt lättsam:

Bahasa Indonesia in 7 Days

CMS

Jag tänkte göra om den här sidan i Umbraco istället. Umbraco är ett Content Management System skrivet i .NET och jag behöver lära mig det. Det skulle ha två fördelar, dels att jag som sagt lär mig det och dels att den här hemsidan faktiskt uppdateras.

Umbraco.org