PeekSmith
About
The PeekSmith support of Atom remote in MagiScript allows developers to connect your PeekSmith to Atom, and control the watch using commands. PeekSmith 3 or SuperPeek are supported. You can:
-
- display messages on its screen,
- send vibration patterns,
- turn its accelerometer reporting on/off,
- receive button events.
Connecting to a PeekSmith
To interact with a PeekSmith device, you must first connect to it using the `ps. connect` method.
If Atom is not yet connected to a PeekSmith device, it will start searching for it and then connect. If a PeekSmith device is already connected, but the specified name is different, Atom will disconnect from the PeekSmith device, and start searching for the specified name.
You can use the *
character to connect to any available PeekSmith device.
The method is flexible regarding its parameters. Let’s review the possible options.
Connecting without a Device Name
This is the recommended way to connect, as this way you can share your code and no change will be necessary.
ps.connect();
You can configure a default PeekSmith device ID in the Atom Editor Settings. By default, it is *, which means it will connect to the first PeekSmith device it finds.
Connecting by Specifying a Device Name
You can pass a PeekSmith device ID as the first parameter, and Atom will connect to it.
ps.connect('PeekSmith-036666');
This is the legacy way, we recommend using it only if you have a specific use case.
Connecting by Specifying a Device Name and a Callback
ps.connect('PeekSmith-036666', connected);
function connected(event) {
console.log('PeekSmith connected.');
}
ps.connect('PeekSmith-036666', connected);
function connected(event) {
console.log('PeekSmith connected.');
}
Using the ps.connect Method
The best way to connect is by adding this call to the beginning of the main
function, which runs when the code is loaded.
function main() {
ps.connect();
// ...
}
Disconnecting your PeekSmith
To disconnect your PeekSmith, simply call the disconnect method. It will disconnect the active PeekSmith device.
ps.disconnect();
You can also specify by it’s name which device you would like to disconnect:
ps.disconnect('PeekSmith-036666');
Querying the Connected PeekSmith(s)
You can query the Bluetooth name (ID) of the PeekSmith device(s) Atom connected to. The id method gives you the active device’s ID, while the ids method returns an array with the PeekSmith devices Atom connected to.
atom.id(); // the active PeekSmith device
atom.ids(); // all the PeekSmith devices Atom connected to
You can query the connected PeekSmith devices as a list of device objects as well using the list method.
const devs = ps.list();
for (let i = 0; i < devs.length; i++) {
console.log(devs[i].id, devs[i].battery);
}
If more than one PeekSmith device is connected, you can set one of them to active with the select method. Messages will be sent to this unit.
ps.select('PeekSmith-036666');
Displaying Text on PeekSmith Screen
Once you have connected to a PeekSmith device, you can display text on its screen using the ps.print
method. The method takes a single argument, which is the text that you want to display on the screen. If PeekSmith is not yet connected, MagiScript will collect your messages and send them as soon as a device is connected.
For example, if you want to display the text “Hello World” on the PeekSmith screen, you can use the following code:
ps.print('Hello World');
This will display the text “Hello World” on the PeekSmith screen.
Using PeekSmith’s “Smart Text”, you can display cards or colors on the screen like sending messages:
ps.print('AH'); // displays an Ace of Heart
ps.print('7D KS'); // seven of diamonds, king of spades
ps.pring('star'); // displays a star ESP sign
ps.print('yellow'); // displays a yellow card
Vibrating PeekSmith
You can also vibrate the PeekSmith device using the ps.vibrate
method. The method takes a single argument, which is the pattern that you want to vibrate.
For example, if you want to vibrate the PeekSmith device with a pattern of three short vibrations, you can use the following code:
ps.vibrate('...');
This will vibrate the PeekSmith device three times in a short pattern. The latest PeekSmith firmware supports the same patterns as Atom (except the short tick).
Accelerometer Data (since firmware v1.1.31)
PeekSmith 3 has an accelerometer, and Atom can turn it on or off. When turned on, the accelerometer will start reporting raw x, y, and z data.
Accelerometer ON
There are more ways to turn on the accelerometer, but they have the same effect:
ps.accel('on'); // please note that ON or On will not work
ps.accel(true);
Accelerometer OFF
Turning off the accelerometer is similar:
ps.accel('off'); // please note that OFF or Off will not work
ps.accel(false);
Accelerometer Data
You will start receiving events with XYZ data when you turn on the accelerometer via the onEvent function. The value is going to be comma-separated numbers, the type ‘xyz’, and the source ‘ps::accel’.
Example
Here’s an example code of how you can use them:
function main() {
ps.connect('PeekSmith-031060');
ps.accel('on');
}
function onEvent(value, type, source) {
if (type === 'xyz' && source === 'ps:accel') {
let xyz = strSplit(value, ',');
let x = parseInt(xyz[0]);
let y = parseInt(xyz[1]);
let z = parseInt(xyz[2]);
console.log(x, y, z);
}
}
Battery Percentage
The battery level of PeekSmith can be queried with the battery method. It reports a number between 0 and 100. It is checked when Atom connects to the device, and is subsequently updated every other minute.
const percentage = atom.battery();
console.log(Atom battery level: ${percentage}%);
Receiving Button Events
When a PeekSmith is connected, it will start sending button press and release events. PeekSmith has 3 buttons, #0 is the side button, #1 is the front left button, and #2 is the front right button. You can process them with the onEvent function.
Read our Buttons documentation page for more details.
Conclusion
MagiScript provides an easy way to connect to and control PeekSmith devices directly from Atom. By using the ps.connect
, ps.print
, and ps.vibrate
methods, you can interact with the PeekSmith device and display text and patterns on its screen, as well as vibrate it.