TESI communicates with devices through three protocols: the lust channel (LC) protocol, the lust effects channel (LEC) protocol, and specialized messages over the standard light bus. It also provides three linked messages, 980 LUBRICANT_LEVEL_QUERY, 981 LUBRICANT_LEVEL, and 982 AROUSAL_LEVEL.

lust channel (LC)-9999969interactive devices, furniture, control HUDs
lust effects channel (LEC)-1010101sending particle effects and sound commands to sensor attachments
light bussee articledevices that need to know about lubricant or arousal state passively

TESI can be used on its own, but is generally paired with sensor attachments, which are a special class of devices that communicate via the LC and LEC protocols. The standard sensor suite is sold under the 'NS Epidermal' name. These make it possible to detect when touches have been made directly to the body, and are responsible for presenting particle effects in response to stimulation.

LC messages

This protocol is intended for use by furniture and devices (e.g. HUDs) that manipulate arousal and lubricant levels. Messages are sent to the controller, with possible response messages noted below. TESI does not spontaneously send any messages over LC, but does send some messages over the light bus (see below). Sensors may need to send some LC messages, such as parts.

deposit <volume> <substance name> <r> <g> <b>
Add <volume> liters of <substance name> (no spaces), which has color <<r>, <g>, <b>>.
If <substance name> is anything besides 'lubricant', this is treated as a contaminant.
Lubricant color is ignored.
Example: deposit 1.00 gatorade 0.0 0.6 1 — this feeds the robot 1 L of blue Gatorade.

withdraw <volume>
Reduce current volume by <volume> liters while maintaining current substance ratios (i.e., assuming full mixing).
No response is sent; use query fluids first to evaluate composition.

Force an orgasm (if arousal is over orgasm threshold).

plateau <level>
Prevent arousal from falling below <level> (in range 0.0 to 1.0).

stimulate <amount> <surface>
Adds <amount> to arousal, subject to current sensitivity, physical sensitivity coefficient, the general arousal build rate, and a multiplier for the stimulation surface. Each point of <amount> is equivalent to touching the specified area for 1 second.

moan (requires _emotion ≥ 0.7.5)
Force a moan. Equivalent to @lust moan. Not equivalent to moan over LEC (although this is generated as a side effect.)

surfacesensitivity multiplier
other values0.25

touch <amount> <surface>
As 'stimulate', above, but for use by touch scripts in body sensors. For <amount>, send the number of seconds that stimulation has been occurring; as long as the number continues to grow, the script will seamlessly handle the smooth incrementation of arousal.

parts <surface> <surface> <surface> ...
A sensor has been attached that provides the indicated surfaces (see table above). This is primarily used to determine which nozzles to use for dilation (visible particles during lubricant leaking.)

query parts
Relays the complete parts list, as above, on LC. Note that there is not yet a way to tell when a part or sensor has been removed; a '@reset emotion' or relog should update the list, though.

query status
Sends a reply message over LC: status <a> <o> <p> <lv> <nlv> <s> <r> <g> <b>
<a> is arousal level (0.0-1.0)
<o> is orgasm threshold (0.0-1.0)
<p> is plateau level (0.0-1.0)
<lv> is lubricant volume (in L)
<nlv> is normal lubricant volume (in L)
<s> is sensitivity (0.0-1.0)
<<r>, <g>, <b>> is the total color of the unit's current lubricant
Example: status 0.5 0.6 0.2 4.89 5.0 0.8 1 0.5 1 — the unit is 50% aroused, must reach 60% arousal to be able to orgasm, cannot fall below 20% arousal, has 4.89 L of an ideal 5.0 L of fluid volume (including contaminants), is at 80% sensitivity, and leaks fluids with the color <1, 0.5, 1> (light magenta)

query fluids
Sends a reply over LC: fluids <r> <g> <b> [<contaminant> <volume>] lubricant <volume>
<<r>, <g>, <b>> is the total color of the unit's current lubricant
<contaminant> <volume> is the name and volume of each contaminant substance
lubricant <volume> is the word "lubricant" followed by volume of the unit's lubricant when contaminants are removed (always included, may be 0)

LEC messages

These messages are sent by TESI to sensor devices. The sound messages are not currently used by TESI directly; they are useful for adding sound effects to represent the physical act of intercourse. The NS standard sensor suite only supports sound effects emanating from the pelvic region. LEC messages can be sent by any object belonging to the unit; future versions of TESI may support a pass-through to allow authorized furniture to trigger LEC effects.

Probes for available parts. Sensors should send parts message over the LC protocol (see above).

D <surface> <rate>
Sets particle drip rate for the part <surface> to <rate>. TESI will only send drip commands for the parts labia, glans, right_nipple, left_nipple, and anus. The special message D -1 0 indicates that all particles should be removed.

C <r> <g> <b>
Sets the lubricant color.

T <key>
Triggers a sound once.

Stops playing a looping sound.

L <key>
Loops a sound.

P <key>
Plays a sound once.

V <float>
Sets the sound playback volume.

The unit is moaning; play an animation or something.

light bus messages

arousal <a> <o> <s> <p>
Current arousal status, sent spontaneously on change. See response to query status message in the LC protocol (above) for parameter naming.

lubricant <lv> <nlv> <r> <g> <b>
Current lubricant status, sent spontaneously on change of more than 5%, or once every five seconds if a change has occurred. See response to query status message in the LC protocol (above) for parameter naming.