Wireless X10 sensors in FHEM : GB10E MS13E SD18 COD18 WD18 TH10

Here is a reminder about the use of some X10 sensors with the RFXtrx433 dongle and the FHEM RFXTRX module.

I had to adapt Willi’s code a bit in order to make them recognized properly.


[EDIT 17/07/16]Willi eventually included all my patches in the main code, as he did it for the patches for the Somfy RTS support and  for the Chacon ring

Sensors definitions

Thermostat (TH10)

TH10Despitefully the model I own only sends the demand status ( on / off). It seems that the similar Digimax TLX7506 sends also desired and actual temperatures. My patch should decode it as well (not tested, feedbacks are welcome)

RFXtrx433 firmware must be beta 233 or more recent.

It is recognized as

define TH10_59 TRX_WEATHER TH10_59
attr TH10_59 IODev TRX_0
attr TH10_89 room TRX_WEATHER

Move and light sensor (MS13E)

Marmitek MS13EThis  one is both a move and a light sensor, and it is possible to finetune its behavior (see user manual)

It is recognized in FHEM as two separate TRX_LIGHT  X10  sensors (light: on / off).

In order to normalize readings (motion: normal / alert ; lightsensor: dark / bright) you can define it as :

define TRX_X10_D1 TRX_LIGHT X10 A1 motion
attr TRX_X10_D1 devStateIcon normal:message_ok alert:message_attention
attr TRX_X10_D1 icon motion_detectorsecurity

define TRX_X10_D2 TRX_LIGHT X10 A2 lightsensor
attr TRX_X10_D2 devStateIcon dark:weather_sunset bright:weather_sun
attr TRX_X10_D2 icon message_light_intensity

MS13 dans FHEM

Glass Break and Light sensor (GB10E)

capteur X10 Marmitek GB10EIt is recognized in FHEM as two separate TRX_SECURITY sensors

  • Type DS10A (Window: Open /Closed) for glass break. An event is generated every 90mn or so …
  • Type MS10 (motion: dark) for darkness (no event on brightness …)

Glass break sensor

Default definition of glass break sensor is OK if you want to use it as a mailbox open sensor (see idea here). But as an alarm it is better to change the Reading name from Window en alarm and normalize events to normal / alert).

define TRX_DS10A_81dd TRX_SECURITY DS10A 71ce alarm
attr TRX_DS10A_81dd eventMap Closed:normal Open:alert
attr TRX_DS10A_81dd stateFormat alarm
attr TRX_DS10A_81dd icon security
attr TRX_DS10A_81dd devStateIcon normal:message_ok alert:message_attention


define TRX_DS10A_81dd TRX_SECURITY GB1OE 71ce alarm
attr TRX_DS10A_81dd icon security
attr TRX_DS10A_81dd devStateIcon normal:message_ok alert:message_attention

light sensor

Needs to be normalized :

define TRX_MS10A_0040 TRX_SECURITY MS10A 0060 lightsensor
attr TRX_MS10A_0040 devStateIcon dark:weather_sunset unknown:rc_BLANK
attr TRX_MS10A_0040 icon message_light_intensity

As there is no notification for bright, I use a watchdog, which changes state (without generation an event) for the GUI

define TRX_MS10A_0040_w watchdog TRX_MS10A_0060:dark 00:02 SAME setstate TRX_MS10A_0040 unknown ;; trigger TRX_MS10A_0040_w .

détecteur GB10E dans FHEM

Smoke sensor (SD18)

SD18 (X10)Button must be set to « S »

Recognized as a DS10A TRX_SECURITY sensor  (Window: Open / Closed) . I patched 46_TRX_SECURITY.pm so it can work properly.

define capteur_fumee TRX_SECURITY SD18 97ed alarm

Carbon monoxide sensor (COD18)

Same as SD18 : recognized as DS10A and needs to be defined as COD18, using my patched 46_TRX_SECURITY.pm.

define capteur_CO TRX_SECURITY COD18 62fe alarm

wd18_x10Water detector (WD18)

(See also Définition du capteur d’inondation WD18 ) Same as SD18 : recognized as DS10A and needs to be defined as WD18, using my patched 46_TRX_SECURITY.pm.

define capteur_H2O TRX_SECURITY WD18 63fe water

Some procedures to keep in mind

Suppress unwanted Readings

After readings normalization (eg from light to alarm), initial readings are still displayed in the GUI. In order to suppress them, use the deletereading command:

deletereading <devspec> <readingname>

Some sensors change their ID when changing batteries

In that case, you can manually edit fhem.cfg, find the new ID at the end of the file (device autodiscovery), and report it in the old definition.

It seems some modules have a feature to handle this more easily but it remains to be coded in this one.