the ambient sensing gestalt optimizer for the n900
dwimd works by sampling sensors and taking user-defined actions based on a user-written config file.
- Look at http://hg.alexanderweb.de/dwimd-main/file/tip/contrib/alex_config.py how a config file should look like.
- Write your own config file. Every function is executed every 30 seconds. You can use the values and actions explained below.
- Copy your config file to /etc/dwimd/dwimd_plugins/configs. It should have a .py extension.
- dwimd ships the following sensors:
- history: Not really a sensor, it buffers data and returns the buffered
data as a list.
load: Provides the system load as load.
- locationcheck: Provides the current location as location. Such location
objects then have a near method that should be called with the name of a location that was previously defined with define_location. define_location takes a name and either network_in_sight="network_name" for wifi sensing or coordinates=(50, 8, 100) for an 100m circle around the GPS coordinates 50N 8E.
- moving: Provides moving and not_moving_for_5min. The latter is useful
- orientation: Provides orientation, face_up and on_stand. orientation
either contains "portrait" or "landscape" or the same string with " (inverse)" appended (XXX check). The other two variables are booleans.
- time: Provides time which supports time.between("12:00", "15:00") like
- It ships the following actions. These are activatable by using the verbs explained below.
- availability: Should be activated with a status like "online" or "away". Additionally,
availability_message can be activated with the status message.
lock: If activated with off, avoids that the screen locks.
- profile: Can be activated with a profile name that should be switched to (like
"silent" or "general").
wifi: Should be activated with a network name as the value.
- These verbs are provided to activate an action:
- require(object, value) triggers an error if somebody votes against it
- suggest(object, value) is a weak vote (defaults values but does not count in votes)
- vote(object, value, votes) is used for voting
- force(object, value) overwrites requires and votes
where object is a gestalt name or an action.
- Gestalts can be defined like this:
- availability="available", profile="general")
They group similar action values.
- Adjustable sample rate for every plugin.
- Planned inputs: gps, time, weekday, load, location, orientation charging, playing, display, locked, noise level, ringing
- planned outputs: availability, profile, cellular, secure, lock, wifi os.system