wiki:tellstickController

Version 2 (modified by jsandahl, 15 years ago) ( diff )

--

tellstickController

tellstickController be used to control a number of remote receivers from the console or be run as a daemon controlling receivers according to certain rules.

tellstickController was created with the objective of:

  • enable control via aliases such as "BedroomMythtvPower" instead of "Nexa A 2".
  • having a saved permission (in a database file) for each receiver enabling turning on and off with one command.
  • running the software as a daemon and as regular commands (of course simultaneously).
  • having rules based on extendable expressions such as "monday+weekend/sunrise-00:30+random(01:00)".
  • having group management of receivers making it easier to establish rules.
  • enabling the use of more than one TellStick connected to a computer.
  • working in MythTV backend which requires the software to function in Linux.
  • enabling control of the software with a RF remote control from all rooms.

Download

A stable versio can be downloaded from the ftp server: En stabil version kan laddas ned från http://download.telldus.se/TellStick/Software/tellstickController/tellstickController_v1_5_0.tar.gz.

Moreover, the Rfcmd program is installed as it is required for communication in tellstickController.

tellstickController is written in Perl and functions with a standard installation plus these three Perl-modules:

  * DB_File;
  * DateTime;
  * DateTime::Event::Sunrise;

The extra Perl-modules can be installed by executing the following if you use a Ubuntu distribution (using apt-get is also OK if aptitude does not work):

* sudo aptitude install libmldbm-perl
* sudo aptitude install libdatetime-event-sunrise-perl

Usage

These arguments can be used with tellstickController:

 -h, --help          Show this help text.
 -v, --verbose       Show extra information.

 -d, --daemon        Starts in daemon mode.

 -f, --file F        Set configfile to file F.
 -c, --check         Check content of configuration file.

 -t, --test          Test mode, no real devices will used.

 -a, --aliases       List of aliases for devices/groups.
 -l, --list          List states for all devices/groups.

 -s, --set D S       Set device/group D to state S.
 -g, --get D         Get state for device/group D.

 -x, --swap D        Swap state for device/group D.
 -w, --swapfirst G   Swap states for group G based on first device state.

An example of how tellstickController can be used in the console:

# tellstickController --help

#  tellstickController --aliases
Alias testDevice1 = receiver (/dev/tellstick0 NEXA A 1)
Alias testDevice2 = receiver (/dev/tellstick0 NEXA A 2)
Group allDevices = delay 10 seconds, aliases (testDevice1 testDevice2)

# tellstickController --set testDevice2 on

# tellstickController --list
Device testDevice1 = off
Device testDevice2 = on
Group allDevices = off on

# tellstickController --swap testDevice1

# tellstickController --get testDevice1
On

# tellstickController --daemon

An example of how simple shell scripts may be setup:

#!/bin/sh
#
# Power on bedroom MythTV, turn on backlight leds and turn off window lamp.
#
tellstickController --set bedroom_mythtv_power on
tellstickController --set bedroom_mythtv_leds on
tellstickController --set bedroom_window off

Inställningar

An example of hos the file tellstickController.conf can look like:

# List of location settings.
#
# Usage example:
# Set  Key       Value
# Set  Timezone  Europe/Stockholm
#
Set  Timezone   Europe/Stockholm
Set  Latitude   58.24
Set  Longitude  15.31
Set  dbfile     /var/lib/tellstickController.db
Set  pidfile    /var/run/tellstickController.pid
Set  logfile    /var/log/tellstickController.log

# Aliases for recevier devices.
#
# Usage example:
# Alias  Name           Sender           Dimmer  Protocol  Housecode  Channel
#
# Alias  BedroomWindow  /dev/tellstick0  yes     Nexa      A          1
# Alias  device42       /dev/tellstick1  No      Waveman   B          3
#
#   or
#
# Usage example:
# Alias  Name              Sender        Dimmer  Protocol  Channel
#
# Alias  MythTv_Backlight  /dev/ttyUSB0  No      Sartano   000000001
#
Alias  testDevice1  /dev/tellstick0  No  Nexa  A  1
Alias  testDevice2  /dev/tellstick0  No  Nexa  A  2

# Groups used for handling a list of aliases.
#
# Usage examples:
# Group  Name              Delay  Aliases
# Group  Livingroom_walls  60     Livingroom_wall_north  Livingroom_wall_east
# Group  Kitchen            5     Kitchen_cabinets       Kitchen_window
#
Group  allDevices  10  testDevice1  testDevice2


# Timer rules for reciever devices.
#
# Usage examples:
# Rule  Alias             DeviceOn       DeviceOff
# Rule  BedroomWindow     Sunrise        Sunrise+01:30
# Rule  BedroomWindow     18:33          23:10+Random(00:45)
# Rule  MythTv_Backlight  Weekend/Sunset Weekend/23:45
#
Rule  testDevice1  weekend/sunrise  weekend/08:45
Rule  testDevice1  sunset+00:15     23:30+Random(00:20)
Rule  testDevice2  monday/20:42     wednesday/20:42
Rule  allDevices   16:45            23:45

SVN

The definite latest version is found in subversion and can be checked out with this command: svn checkout http://svn.telldus.se/telldus/trunk/tellstickcontroller

Tips

  • tellstickController can be run on MythTV backend to control lamps, MythTV frontend etc.
  • Except of automatically controlling lamps via rules in tellstickcontroller.conf and tellstickcontrollerDaemon, all receivers can ve controlled manually with a Logitech UltraX RF remote from all rooms.
  • All buttons on the remote control are bound to different events through the softwares KeyWatcher and XMacro.
  • By using the button KEY_CCTELETEXT which has a shift button on the remote control it is possible to add two-button macros for different events. For example, tellstickController can be used to control a lamp in the living room by pressing both KEY_CCTELETEXT + KEY_1 at the same time. This is what the creator's config file for KeyWatcher looks like (created via KeyConfig / GUI frontend for KeyWatcher).
# This is a generated file. Edit carefully!
# --- Variable section --- 
set filter11+388 = true
set filter111+388 = true
set filter10+388 = true
set filter410 = true
set filter405 = true
set filter403 = true
set filter402 = true
set filter398 = true
set filter393 = true
set filter392 = true
set filter391 = true
set filter389 = true
set filter385 = true
set filter377 = true
set filter371 = true
set filter370 = true
set filter368 = true
set filter226 = true
set filter208 = true
set filter206 = true
set filter168 = true
set filter167 = true
set filter166 = true
set filter165 = true
set filter164 = true
set filter163 = true
set filter158 = true
set filter139 = true
set filter130 = true
set filter129 = true
set filter115 = true
set filter114 = true
set filter113 = true
set filter102 = true
set filter388 = true
set filter96+388 = true
set filter9+388 = true
set filter8+388 = true
set filter7+388 = true
set filter6+388 = true
set filter5+388 = true
set filter4+388 = true
set filter3+388 = true
set filter2+388 = true
set label11+388 = KEY_0+KEY_CCTELETEXT
set label10+388 = KEY_9+KEY_CCTELETEXT
set label4+388 = KEY_3+KEY_CCTELETEXT
set label5+388 = KEY_4+KEY_CCTELETEXT
set label6+388 = KEY_5+KEY_CCTELETEXT
set label111+388 = KEY_CLEAR+KEY_CCTELETEXT
set label7+388 = KEY_6+KEY_CCTELETEXT
set label8+388 = KEY_7+KEY_CCTELETEXT
set label9+388 = KEY_8+KEY_CCTELETEXT
set label96+388 = KEY_ENTER+KEY_CCTELETEXT
set label2+388 = KEY_1+KEY_CCTELETEXT
set label3+388 = KEY_2+KEY_CCTELETEXT
set label410 = KEY_SHUFFLE
set label405 = KEY_LASTCH
set label403 = KEY_CHANNELDOWN
set label402 = KEY_CHANNELUP
set label398 = KEY_RED
set label393 = KEY_VIDEO
set label392 = KEY_SAP
set label391 = KEY_MUSIC
set label389 = KEY_DVD
set label385 = KEY_RADIO
set label377 = KEY_TV
set label371 = KEY_ANGLE
set label370 = KEY_REPEAT
set label368 = KEY_LANGUAGE
set label226 = KEY_PICTURES
set label208 = KEY_FASTFORWARD
set label206 = KEY_CLOSE
set label168 = KEY_REWIND
set label167 = KEY_RECORD
set label166 = KEY_STOPCD
set label165 = KEY_PREVIOUSSONG
set label164 = KEY_PLAYPAUSE
set label163 = KEY_NEXTSONG
set label158 = KEY_BACK
set label139 = KEY_DVDMENU
set label130 = KEY_SUBTITLE
set label129 = KEY_INFOEPG
set label115 = KEY_VOLUMEUP
set label114 = KEY_VOLUMEDOWN
set label113 = KEY_MIN_INTERESTING
set label102 = KEY_HOME
set ConfigFile = .keyWatcher
set action410 = "xmacroplay-keys :0.0 D"
set action405 = "xmacroplay-keys :0.0 Y"
set action403 = "xmacroplay-keys :0.0 Z"
set action402 = "xmacroplay-keys :0.0 E"
set action398 = "killall mythfrontend.real"
set action393 = "xmacroplay-keys :0.0 F32"
set action392 = "xmacroplay-keys :0.0 X"
set action391 = "xmacroplay-keys :0.0 F33"
set action389 = "xmacroplay-keys :0.0 F29"
set action385 = "xmacroplay-keys :0.0 F30"
set action377 = "xmacroplay-keys :0.0 F28"
set action371 = "xmacroplay-keys :0.0 W"
set action370 = "xmacroplay-keys :0.0 Q"
set action368 = "xmacroplay-keys :0.0 +"
set action226 = "xmacroplay-keys :0.0 F31"
set action208 = "xmacroplay-keys :0.0 Next"
set action206 = "xmacroplay-keys :0.0 F27"
set action168 = "xmacroplay-keys :0.0 Prior"
set action167 = "xmacroplay-keys :0.0 R"
set action166 = "xmacroplay-keys :0.0 Escape"
set action165 = "xmacroplay-keys :0.0 Left"
set action164 = "xmacroplay-keys :0.0 P"
set action163 = "xmacroplay-keys :0.0 Right"
set action158 = "sudo eject -T"
set action139 = "xmacroplay-keys :0.0 I"
#set action130 = "xmacroplay-keys :0.0 C"
set action130 = "osd_show_date"
set action129 = "xmacroplay-keys :0.0 V"
set action115 = "xmacroplay-keys :0.0 U"
set action114 = "xmacroplay-keys :0.0 O"
set action113 = "xmacroplay-keys :0.0 M"
set action102 = "xmacroplay-keys :0.0 F26"
set action96+388 = "sudo power_on_bedroom_mythtv"
set action11+388 = "sudo power_off_all_lights"
set action10+388 = "sudo tellstickController --swap bedroom_mythtv_leds"
set action111+388 = "sudo swap_livingroom_tv_mode"
set action9+388 = "sudo tellstickController --swap Bedroom_window"
set action8+388 = "sudo tellstickController --swap Kitchen_cabinets"
set action7+388 = "sudo tellstickController --swap Livingroom_uplight"
set action6+388 = "sudo tellstickController --swap Livingroom_mythtv_leds"
set action5+388 = "sudo tellstickController --swap Livingroom_window"
set action4+388 = "sudo tellstickController --swap Livingroom_cabinets"
set action3+388 = "sudo tellstickController --swap Livingroom_wall_east"
set action2+388 = "sudo tellstickController --swap Livingroom_wall_north"
set enableFiltering = true
set ignoreProductName5 = "Power Button (FF)"
set ignoreProductName4 = "Power Button (CM)"
set ignoreProductName3 = "PC Speaker"
set ignoreProductName2 = "Macintosh mouse button emulation"
set ignoreProductName1 = "Logitech USB-PS/2 Optical Mouse"
set ignoreProductName0 = "Logitech HID compliant keyboard"
set volumeStepSize = 5

As tellstickController attemps to continuously keep track of status of all receivers, these scripts function pretty well to turn lamps (etc.) on and off.

Also see TellstickControllerHTML

Note: See TracWiki for help on using the wiki.