Package: wccontrol
WCCONTROL - Watts Clever Switch ControlThis is a Raspberry Pi command line program and Python module to switch
on and off a Watts Clever RF Switch via a cheap 433 MHz transmitter
module. I also have a higher level programwcschedulerwhich imports
this module and can be used to schedule one or more switches on/off at
specified times and days of week.Thewccontrolmodule implements the protocol which was reverse
engineered in the excellent postshereandhere.The latest version of this document and code is available athttps://github.com/bulletmark/wccontrol.Watts Clever SwitchYou need one or more of these:Often this is purchased in a pack with 2, 3, or 4 such switches, and an
IR (infra-red) receiver box which allows you to operate the remote
switches using a standard TV remote which talks IR to the receiver, then
the receiver talks RF 433 MHz to the switches. E.g the pack is:Thewccontrolmodule allows your Raspberry Pi to talk directly via RF
to the switches. You do not need the IR receiver box at all (i.e. you do
not need the blue box in above image), neither to operate or initially
program the switches.wccontrolcan be used to fully program
switch group and addresses, and then to operate the switches on and off.RF TransmitterYou also need a 433 MHz RF transmitter to connect to your Raspberry Pi.RF modules like the above for Raspberry Pi and similar devices are
purchased for only a few bucks on ebay etc, usually as a transmitter and
receiver pair. To usewccontrol, we only need the transmitter which is
the smaller board as shown above.The transmitter has 3 pins which you directly connect to the RPi header
pins using push-onfemale to female jumper
wiresas follows.Tx pinDescriptionRaspberry Pi GPIO headerLeftDataGPIO4 (board pin 7)MiddleVCC5V power (e.g. board pin 4 or 2)RightGNDGround  (e.g. board pin 6 or 9 or etc)You can significantly increase the range of the transmitter by soldering
a 17.3 cm copper wire to the ANT pad in the corner of the PCB. Ideally,
orientate the wire parallel to the switches, i.e. if you plug the RF
switch unit directly into a wall socket then orientate the antenna wire
vertically.Note thatwccontroluses GPIO4 by default to drive the transmitter but
you can easily set it to use any of the other Raspberry Pi GPIO pins by
passing thepinargument.InstallationRequires Python 3.6 or later. Does not work with Python 2.wccontrolisavailable on PyPIso install the usual way, e.g:$pipxinstall-UwccontrolOr explicitly fromgithub:$gitclonehttps://github.com/bulletmark/wccontrol.git
$cdwccontrol
$pipxinstall.Make GPIO Device AccessibleTo be able to run this utility/module as your normal user you need to
install a udev rule and assign yourself to thegpiogroup.As root, creategpiogroup:$sudogroupadd-f-rgpioAdd your user to that group:$sudousermod-aGgpio$USERFetchgpio.rulesfrom this repo and copy it to the appropriate place
on your system:$sudocurl-Lhttps://raw.githubusercontent.com/bulletmark/wccontrol/master/gpio.rules-o/etc/udev/rules.d/99-gpio.rulesReboot your RPi and log back in again.Groups and AddressesBefore you can operate a switch on/off you must first program it to
respond to a specificgroupandaddress.Agroupis a number 0 to 1023. Anaddressis a number 0 to 7 within
a group that you allocate to specific switches. Address number 6 is
special as it means "all addresses in same group", i.e. you can switch
all devices together in the same group by using address 6. So there are
actually only 7 unique addresses which you can use per group, 0->5 and
7. Thus there are potentially 1024 x 7 individually addressable devices
you can control.Program Group and Address to DeviceE.g. say you want to assign your first switch as address 0 in group 0.Ensure power is applied to the switch.Ensure switch is OFF, i.e. press button to turn LED OFF.Press and hold the switch button until the LED fast flashes, then
slow flashes, then release.Execute the ON commandwccontrol 0 0 1to program ON.Execute the OFF commandwccontrol 0 0 0to program OFF.The LED will go OFF and the switch is now programmed.Test usingwccontrol 0 0 1to confirm the switch goes ON thenwccontrol 0 0 0to confirm the switch goes OFF.Repeat the above steps for your other switches using a different group/address.Example Commands to Switch On and OffSwitch group 0, device 2 to ON:$wccontrol021Switch group 0, device 2 to OFF:$wccontrol020Switch group 0, device 3 to ON:$wccontrol031Switch group 0, device 3 to OFF:$wccontrol030Switch both (i.e. all) devices in group 0 to ON:$wccontrol061Switch both (i.e. all) devices in group 0 to OFF:$wccontrol060Command Line OptionsTypewccontrol -hto view the usage summary:usage: wccontrol [-h] [-p PIN] [-r RETRIES] group address {0,1}

Module/program to set a Watts Clever Smart switch on or off.

positional arguments:
  group                 group, 0 to 1023
  address               switch address to write to, 0 to 7 (6=all in same
                        group)
  {0,1}                 value 0=off, 1=on

options:
  -h, --help            show this help message and exit
  -p PIN, --pin PIN     RPi BCM GPIO pin to output (default: 4)
  -r RETRIES, --retries RETRIES
                        number of retries to send (default: 15)Using as a Python ModulefromwccontrolimportWCcontrol# Create instance on given "pin"wc=WCcontrol(pin)# Use this instancewc.set(0,2,1)See the stub code inwccontrol.pyor myscheduler
applicationfor more complete examples using the python module.IFTTT IntegrationAnother example of how this module can be used is to call it from a tiny
web service application you can run on your Raspberry Pi and which can
receiveIFTTTweb-hook messages from the
internet to turn devices on and off. Usually you would just forward a
port from your home firewall/router to the RPi. The web-hooks can be
triggered by the Google Assistant service. So you can say "Hey Google,
turn the Living Room lights on" and it happens! Quite simple and cheap
to implement given the hardware described here. Myscheduler
applicationforwccontrolhasIFTTTintegration.