X-Git-Url: http://pere.pagekite.me/gitweb/homepage.git/blobdiff_plain/543a9673dcfa55d929ce0b1437b8d9c0c0e614da..385bf1a56d10250e8797ea9e52836c9a33990967:/blog/index.html diff --git a/blog/index.html b/blog/index.html index 2046447469..20c0816dd5 100644 --- a/blog/index.html +++ b/blog/index.html @@ -19,6 +19,72 @@ +
+
Sleep until morning - home automation for the kids
+
10th February 2013
+

+ +

With kids in the house, one challenge is getting them to sleep +during the night and wake up when it is morning. I mean, when I +believe it is morning, and not two hours earlier. In our household we +have decided that 07:00 is the turning point, but getting the kids to +sleep until 07:00 is a small challenge every day. They have adapted +quite well, and rarely wake up at 05:00 any more, but some times wake +up at times like 05:50, 06:15, 06:30 or 06:45, and it is hard to put +the awake one to bed again without disturbing and waking the rest. +And I understand perfectly well that they fail to sleep until 07:00 +some times, as there is no way for them to know if it is before or +after the magic moment without coming and asking us parents.

+ +

But yesterday I came up with a method to solve this problem. It +involve home automation. A few years ago I bought a +Tellstick and RF +switches at the local Clas +Ohlson shop, allowing me to control lights and other electrical +gadgets using my Linux server. When I moved from the old flat to a +small house, I put away all this equipment as most of the lighting in +the house was not using wall sockets and thus not easy to connect to +the gadgets I had. But recently I bought a +Tellstick +Net to be able to read sensor input as well as control power +sockets. I want to control ovens in the basement to avoid the pipes +to freeze, and monitor the humidity to detect flooding. The default +setup for Tellstick Net is to be controlled by the vendor web service, +which to me is a security problem, but it is also possible to build +ones own +firmware +with local access instead of being controlled by a Swedish +company, thanks to the release of the GPL licensed firmware source +code. I plan to get that running before I let it control anything +important. But while working on this, one idea to make it easier for +the kids came to me yesterday. We can set up a night light controlled +by the computer, and turn it automatically on at 07:00. The kids can +then check the light in the morning to know if they are supposed to +get up or not. They joined me in setting everything up, and I +repeated the concept several times before bed times to make sure they +remembered to check the light before getting up in the morning.

+ +

We tested it this morning, and all the kids stayed in bed until +after 07:00, and every one of them commented on the fact that the +"morning light" was turned on and signalled that the morning had +arrived. So this look like a success, and I am excited to see how +this develops the next few days. :) I really hope this can allow us +all to sleep a bit longer in the morning.

+ +

A nice advantage of this setup is that we can remote control when +to tell the kids to get up. We do not have to wait until 07:00, and +can also delay it if we want to.

+
+
+ + + Tags: english. + + +
+
+
+
Hva stemte hver stortingsrepresentant i voteringene om datalagringsdirektivet?
9th February 2013
@@ -661,267 +727,6 @@ machine, please send me an email or talk to me on
-
-
Modalias strings - a practical way to map "stuff" to hardware
-
14th January 2013
-

While looking into how to look up Debian packages based on hardware -information, to find the packages that support a given piece of -hardware, I refreshed my memory regarding modalias values, and decided -to document the details. Here are my findings so far, also available -in -the -Debian Edu subversion repository: - -

Modalias decoded

- -

This document try to explain what the different types of modalias -values stands for. It is in part based on information from -<URL: https://wiki.archlinux.org/index.php/Modalias >, -<URL: http://unix.stackexchange.com/questions/26132/how-to-assign-usb-driver-to-device >, -<URL: http://code.metager.de/source/history/linux/stable/scripts/mod/file2alias.c > and -<URL: http://cvs.savannah.gnu.org/viewvc/dmidecode/dmidecode.c?root=dmidecode&view=markup >. - -

The modalias entries for a given Linux machine can be found using -this shell script:

- -
-find /sys -name modalias -print0 | xargs -0 cat | sort -u
-
- -

The supported modalias globs for a given kernel module can be found -using modinfo:

- -
-% /sbin/modinfo psmouse | grep alias:
-alias:          serio:ty05pr*id*ex*
-alias:          serio:ty01pr*id*ex*
-%
-
- -

PCI subtype

- -

A typical PCI entry can look like this. This is an Intel Host -Bridge memory controller:

- -

-pci:v00008086d00002770sv00001028sd000001ADbc06sc00i00 -

- -

This represent these values:

- -
- v   00008086  (vendor)
- d   00002770  (device)
- sv  00001028  (subvendor)
- sd  000001AD  (subdevice)
- bc  06        (bus class)
- sc  00        (bus subclass)
- i   00        (interface)
-
- -

The vendor/device values are the same values outputted from 'lspci --n' as 8086:2770. The bus class/subclass is also shown by lspci as -0600. The 0600 class is a host bridge. Other useful bus values are -0300 (VGA compatible card) and 0200 (Ethernet controller).

- -

Not sure how to figure out the interface value, nor what it -means.

- -

USB subtype

- -

Some typical USB entries can look like this. This is an internal -USB hub in a laptop:

- -

-usb:v1D6Bp0001d0206dc09dsc00dp00ic09isc00ip00 -

- -

Here is the values included in this alias:

- -
- v    1D6B  (device vendor)
- p    0001  (device product)
- d    0206  (bcddevice)
- dc     09  (device class)
- dsc    00  (device subclass)
- dp     00  (device protocol)
- ic     09  (interface class)
- isc    00  (interface subclass)
- ip     00  (interface protocol)
-
- -

The 0900 device class/subclass means hub. Some times the relevant -class is in the interface class section. For a simple USB web camera, -these alias entries show up:

- -

-usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc01ip00 -
usb:v0AC8p3420d5000dcEFdsc02dp01ic01isc02ip00 -
usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc01ip00 -
usb:v0AC8p3420d5000dcEFdsc02dp01ic0Eisc02ip00 -

- -

Interface class 0E01 is video control, 0E02 is video streaming (aka -camera), 0101 is audio control device and 0102 is audio streaming (aka -microphone). Thus this is a camera with microphone included.

- -

ACPI subtype

- -

The ACPI type is used for several non-PCI/USB stuff. This is an IR -receiver in a Thinkpad X40:

- -

-acpi:IBM0071:PNP0511: -

- -

The values between the colons are IDs.

- -

DMI subtype

- -

The DMI table contain lots of information about the computer case -and model. This is an entry for a IBM Thinkpad X40, fetched from -/sys/devices/virtual/dmi/id/modalias:

- -

-dmi:bvnIBM:bvr1UETB6WW(1.66):bd06/15/2005:svnIBM:pn2371H4G:pvrThinkPadX40:rvnIBM:rn2371H4G:rvrNotAvailable:cvnIBM:ct10:cvrNotAvailable: -

- -

The values present are

- -
- bvn  IBM            (BIOS vendor)
- bvr  1UETB6WW(1.66) (BIOS version)
- bd   06/15/2005     (BIOS date)
- svn  IBM            (system vendor)
- pn   2371H4G        (product name)
- pvr  ThinkPadX40    (product version)
- rvn  IBM            (board vendor)
- rn   2371H4G        (board name)
- rvr  NotAvailable   (board version)
- cvn  IBM            (chassis vendor)
- ct   10             (chassis type)
- cvr  NotAvailable   (chassis version)
-
- -

The chassis type 10 is Notebook. Other interesting values can be -found in the dmidecode source:

- -
-  3 Desktop
-  4 Low Profile Desktop
-  5 Pizza Box
-  6 Mini Tower
-  7 Tower
-  8 Portable
-  9 Laptop
- 10 Notebook
- 11 Hand Held
- 12 Docking Station
- 13 All In One
- 14 Sub Notebook
- 15 Space-saving
- 16 Lunch Box
- 17 Main Server Chassis
- 18 Expansion Chassis
- 19 Sub Chassis
- 20 Bus Expansion Chassis
- 21 Peripheral Chassis
- 22 RAID Chassis
- 23 Rack Mount Chassis
- 24 Sealed-case PC
- 25 Multi-system
- 26 CompactPCI
- 27 AdvancedTCA
- 28 Blade
- 29 Blade Enclosing
-
- -

The chassis type values are not always accurately set in the DMI -table. For example my home server is a tower, but the DMI modalias -claim it is a desktop.

- -

SerIO subtype

- -

This type is used for PS/2 mouse plugs. One example is from my -test machine:

- -

-serio:ty01pr00id00ex00 -

- -

The values present are

- -
-  ty  01  (type)
-  pr  00  (prototype)
-  id  00  (id)
-  ex  00  (extra)
-
- -

This type is supported by the psmouse driver. I am not sure what -the valid values are.

- -

Other subtypes

- -

There are heaps of other modalias subtypes according to -file2alias.c. There is the rest of the list from that source: amba, -ap, bcma, ccw, css, eisa, hid, i2c, ieee1394, input, ipack, isapnp, -mdio, of, parisc, pcmcia, platform, scsi, sdio, spi, ssb, vio, virtio, -vmbus, x86cpu and zorro. I did not spend time documenting all of -these, as they do not seem relevant for my intended use with mapping -hardware to packages when new stuff is inserted during run time.

- -

Looking up kernel modules using modalias values

- -

To check which kernel modules provide support for a given modalias, -one can use the following shell script:

- -
-  for id in $(find /sys -name modalias -print0 | xargs -0 cat | sort -u); do \
-    echo "$id" ; \
-    /sbin/modprobe --show-depends "$id"|sed 's/^/  /' ; \
-  done
-
- -

The output can look like this (only the first few entries as the -list is very long on my test machine):

- -
-  acpi:ACPI0003:
-    insmod /lib/modules/2.6.32-5-686/kernel/drivers/acpi/ac.ko 
-  acpi:device:
-  FATAL: Module acpi:device: not found.
-  acpi:IBM0068:
-    insmod /lib/modules/2.6.32-5-686/kernel/drivers/char/nvram.ko 
-    insmod /lib/modules/2.6.32-5-686/kernel/drivers/leds/led-class.ko 
-    insmod /lib/modules/2.6.32-5-686/kernel/net/rfkill/rfkill.ko 
-    insmod /lib/modules/2.6.32-5-686/kernel/drivers/platform/x86/thinkpad_acpi.ko 
-  acpi:IBM0071:PNP0511:
-    insmod /lib/modules/2.6.32-5-686/kernel/lib/crc-ccitt.ko 
-    insmod /lib/modules/2.6.32-5-686/kernel/net/irda/irda.ko 
-    insmod /lib/modules/2.6.32-5-686/kernel/drivers/net/irda/nsc-ircc.ko 
-  [...]
-
- -

If you want to help implementing a system to let us propose what -packages to install when new hardware is plugged into a Debian -machine, please send me an email or talk to me on -#debian-devel.

- -

Update 2013-01-15: Rewrite "cat $(find ...)" to -"find ... -print0 | xargs -0 cat" to make sure it handle directories -in /sys/ with space in them.

-
-
- - - Tags: debian, english, isenkram. - - -
-
-
-

RSS feed