Compare commits

...

67 Commits

Author SHA1 Message Date
Nathan Kellenicki
60a42dfc47 New build with PRs
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-04-25 17:10:39 -07:00
Nathan Kellenicki
7ebc37a369 Updated drone 2024-04-25 17:09:44 -07:00
2fc1622c25
Merge pull request #169 from Debenben/tiltSensorRename
Rename tiltCount to impactCount for consistency
2024-04-25 17:08:29 -07:00
505bbdc648
Merge pull request #158 from cafjs/master
Fix for #157 (and possibly #131)
2024-04-25 17:05:54 -07:00
69ee57e6ff
Merge pull request #164 from Debenben/mario-pull
Add missing Mario hub to poweredup-browser
2024-04-25 17:02:41 -07:00
e0ae64e7f3
Merge pull request #174 from Debenben/RemoteControlButton
fix #173 RemoteControlButton documentation
2024-04-25 17:00:15 -07:00
Nathan Kellenicki
abecb5385b Updated
Some checks failed
continuous-integration/drone/push Build is failing
2024-04-25 16:38:57 -07:00
bene
2b03176509 fix #173 RemoteControlButton documentation 2022-12-18 13:59:10 +01:00
bene
d117fe10ff Rename tiltCount to impactCount for consistency 2022-10-08 14:09:41 +02:00
bene
3bba7c7e73 Add missing Mario hub to poweredup-browser
fix for issue #152
2022-08-14 10:17:31 +02:00
Antonio Lain
333d300fc4 Undo change package name
Signed-off-by: Antonio Lain <antlai@cafjs.com>
2022-05-27 14:30:26 -07:00
Antonio Lain
d3ccc7ac41 Change package name
Signed-off-by: Antonio Lain <antlai@cafjs.com>
2022-05-27 14:27:27 -07:00
Antonio Lain
a613e9956d Fix for #131 2022-05-27 14:01:57 -07:00
Nathan Kellenicki
e4c68e5749 Another discovery fix
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-01-20 22:17:46 -08:00
Nathan Kellenicki
72ef125d4f Connection and discovery improvements
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-01-19 20:03:06 -08:00
Nathan Kellenicki
a8a27eaeaa Expose connection status
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-01-18 21:31:55 -08:00
Nathan Kellenicki
ce0f4509be Disconnect fix
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-01-18 21:17:22 -08:00
Nathan Kellenicki
f71411aacd Fixed Raspberry Pi discovery
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-01-18 20:45:38 -08:00
Nathan Kellenicki
e877dbf65e Fixed Raspberry Pi discovery 2022-01-18 20:45:09 -08:00
Nathan Kellenicki
4836695840 Updated version
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-01-18 17:57:50 -08:00
Nathan Kellenicki
57ee61e620 Updated docs
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-01-18 17:52:45 -08:00
Nathan Kellenicki
32fe39fd8c Merge branch 'master' of github.com:nathankellenicki/node-poweredup 2022-01-18 17:52:25 -08:00
Nathan Kellenicki
ddb71b5d05 Updated docs 2022-01-18 17:49:56 -08:00
fe80b0fd81
Merge pull request #144 from Debenben/commandFeedback
Command feedback
2022-01-18 17:43:52 -08:00
Nathan Kellenicki
a833732f8c Revised distance calculation 2022-01-18 17:41:37 -08:00
Nathan Kellenicki
e6c575a0da Merge branch 'master' of github.com:nathankellenicki/node-poweredup 2022-01-18 17:34:57 -08:00
322b269e5a
Merge pull request #149 from Debenben/colordistanceSensor
change colordistancesensor distance calculation
2022-01-18 17:34:51 -08:00
Nathan Kellenicki
f0169117b5 Merge branch 'master' of github.com:nathankellenicki/node-poweredup 2022-01-18 17:27:06 -08:00
a0279a1fb6
Merge pull request #146 from Debenben/tiltSensor
add workaround for wrong tilt orientation
2022-01-18 17:26:47 -08:00
7b1795c967
Merge pull request #147 from Debenben/tiltSensorExtra
add impact count mode to tiltsensor
2022-01-18 17:10:03 -08:00
de6f60b42c
Merge pull request #150 from Debenben/colordistanceSensorExtra
add additional modes to colordistancesensor
2022-01-18 17:09:07 -08:00
9845a0b118
Merge pull request #143 from Debenben/documentation
update enum documentation
2022-01-18 17:07:59 -08:00
70c753c660
Merge pull request #140 from jncraton/patch-1
Correct typo in example
2022-01-18 17:07:00 -08:00
Nathan Kellenicki
48a8aea80a Fixed Bluetooth discovery until macOS Monterey 2022-01-18 17:02:35 -08:00
Nathan Kellenicki
aabf02580e Updated dependencies 2022-01-18 17:02:16 -08:00
bene
0877d068a5 add additional modes to colordistancesensor 2022-01-09 16:48:25 +01:00
bene
7782d64003 change colordistancesensor distance calculation
ignores inaccurate distance values for small distances and
avoids negative values for distance=0 and partial >0
2022-01-09 16:32:55 +01:00
bene
4cc92c6d37 add impact count mode to tiltsensor 2022-01-09 15:59:15 +01:00
bene
d51851d058 add workaround for wrong tilt orientation 2022-01-09 15:25:21 +01:00
bene
02215ccf40 handle busy/full feedback message
commands with startup and completion information changed from
0x11 (= execute immediately + request feedback) to
0x01 (= buffer if neccessary + request reedback)
can return feedback 0x10 = busy/full. This feedback should not resolve
the buffered commands.
2022-01-09 13:55:18 +01:00
bene
07edc32a8a parse multiple feedback message correctly
Using a virtual port you get feedback for the virtual port and its
componentes in one message.

Change suggested by @aileo
https://github.com/nathankellenicki/node-poweredup/issues/118#issuecomment-754911527
2022-01-09 13:47:15 +01:00
bene
f570afba08 update enum documentation 2022-01-09 13:37:26 +01:00
Jon Craton
52ee5d04c7
Correct typo in example 2021-11-05 20:03:54 -04:00
4bfa4d15e5 Updated readme
All checks were successful
continuous-integration/drone/push Build is passing
2021-09-14 21:21:00 -07:00
6b44373930 Bumped version
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2021-09-14 21:17:51 -07:00
0577491a8c Technic 3x3 Light Matrix support 2021-09-14 21:13:32 -07:00
7b1fdb42e7 Support for Technic Small Hub and Technic Small Angular Motor 2021-09-14 19:22:54 -07:00
e3259f4ba7 Support for Technic Small Hub and Technic Small Angular Motor 2021-09-14 18:21:31 -07:00
10a0a9457a Updated docs
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-29 21:03:59 -07:00
24e8d00db4 Fixed gitignore
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-29 21:01:31 -07:00
e0ec800dcc Fixed gitignore
Some checks failed
continuous-integration/drone/push Build is failing
2021-08-29 20:59:31 -07:00
60dee2c62d Updated docs
Some checks failed
continuous-integration/drone/push Build is failing
2021-08-29 20:56:42 -07:00
671c2d21db Updated build
Some checks failed
continuous-integration/drone/push Build is failing
2021-08-29 20:35:21 -07:00
0e5f94e189 Changed from ink-docstrap to braintree jsdoc template
Some checks failed
continuous-integration/drone/push Build is failing
2021-08-29 20:29:38 -07:00
2e43ee7cf0 Fixed Duplo color sensor, color sensor output on all sensors
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2021-08-29 20:07:10 -07:00
6a02a89e5e
Merge pull request #135 from 10on/master
Fix path for constants after renaming it
2021-06-15 09:38:40 -07:00
Denis Pushkarev
fbf5b5ccf3 Fix path for constants after renaming it 2021-06-08 20:48:30 +03:00
093cdc0c00
Merge pull request #130 from sciguy16/patch-1
Rename events enum from AlertPayload to Event
2021-06-04 10:35:37 -07:00
David Young
88ace0f66f
Rename events enum from AlertPayload to Event 2021-05-09 19:43:59 +01:00
dbe7f1999b Updated version with latest PRs
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2021-04-05 21:30:51 -07:00
7e8eaf6598
Merge pull request #121 from Debenben/patch-2
possible fix for #118, always return resolve
2021-04-05 21:12:33 -07:00
08489819ec Fixed Mario initializer, Technic and Mindstorms angular motors
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2021-04-05 21:08:37 -07:00
debenben
a51aac1066 possible fix for #118, always return resolve
* changed _finished pointer to array to not overwrite callbacks
* all completed and discarded commands get resolved
* 0x10 bitset exists in documentation only? -> not implemented
2020-12-30 20:54:24 +01:00
a3f66d5df0 Updated docs
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2020-12-29 22:35:23 -08:00
04e8798c6a Bumped package 2020-12-29 22:30:13 -08:00
e6a174e53a
Merge pull request #119 from Debenben/patch-1
fix issue #118 (partially)
2020-12-29 22:28:18 -08:00
Debenben
01d229823e
fix issue #118 (partially)
fix wrong constant, should be 0x82 like in previous version.
2020-12-29 16:31:45 +01:00
203 changed files with 49392 additions and 209330 deletions

View File

@ -1,14 +1,15 @@
pipeline:
install:
image: node:10.15.1
image: node:20.12.2
commands:
- apt-get update
- apt-get install -y bluetooth bluez libbluetooth-dev libudev-dev
- git submodule update --init --recursive
- npm install
build:
image: node:10.15.1
image: node:20.12.2
commands:
- npm run all

0
.gitmodules vendored Normal file
View File

View File

@ -1,9 +1,15 @@
{
"tags": {
"allowUnknownTags": true
"allowUnknownTags": true,
"dictionaries": ["jsdoc"]
},
"source": {
"include": [ "README.md", "dist/node" ],
"includePattern": ".js$"
},
"plugins": ["plugins/markdown"],
"templates": {
"referenceTitle": "node-poweredup Reference",
"logoFile": "",
"cleverLinks": false,
"monospaceLinks": false,
@ -24,5 +30,11 @@
"markdown": {
"parser": "gfm",
"hardwrap": true
},
"opts": {
"destination": "./docs/",
"encoding": "utf8",
"private": true,
"recurse": true
}
}

129
README.md
View File

@ -1,11 +1,12 @@
[![Drone](https://drone.kellenicki.com/api/badges/nkellenicki/node-poweredup/status.svg)](https://drone.kellenicki.com/nkellenicki/node-poweredup)
[![NPM Version](https://img.shields.io/npm/v/node-poweredup.svg?style=flat)](https://www.npmjs.com/package/node-poweredup)
[![Docs](https://img.shields.io/badge/docs-start%20here-yellowgreen.svg)](https://nathan.kellenicki.com/node-poweredup/)
# **node-poweredup** - A Javascript module to interface with LEGO Powered Up components.
### Announcements
* v6.8.0 adds support for LEGO Super Mario.
* v7.1.0 adds support for SPIKE Essential, including the Technic Small Hub, Technic Small Angular Motor, and Technic 3x3 Color Matrix.
### Introduction
@ -16,73 +17,14 @@ LEGO Powered Up is the successor to Power Functions, the system for adding elect
* LEGO Powered Up
* LEGO Technic CONTROL+
* LEGO Education SPIKE Prime
* LEGO Education SPIKE Essential
* LEGO Mindstorms Robot Inventor
Other products that speak the Powered Up protocol include the Duplo App-Controlled trains and LEGO Super Mario, both of which are compatible with this library.
This library allows communication and control of Powered Up devices and peripherals via Javascript, both from Node.js and from the browser using Web Bluetooth.
### Node.js Installation
Node.js v8.0+ required.
```javascript
npm install node-poweredup --save
```
node-poweredup uses the Noble BLE library by Sandeep Mistry. On macOS everything should function out of the box. On Linux and Windows there are [certain dependencies which may need installed first](https://github.com/abandonware/noble#prerequisites).
Note: node-poweredup has been tested on macOS 11.0 and Debian/Raspbian on the Raspberry Pi 3 Model B.
### Compatibility
While most Powered Up components and Hubs are compatible with each other, there are exceptions. For example, there is limited backwards compatibility between newer components and the WeDo 2.0 Smart Hub. However WeDo 2.0 components are fully forwards compatible with newer Hubs.
| Device Name | Product Code | Type | WeDo 2.0 Smart Hub | Boost Move Hub | Powered Up Hub | Control+ Hub | Availability |
| ------------------------------- | ------------ | ------------- | ------------------ | -------------- | -------------- | ------------ | ----- |
| WeDo 2.0 Tilt Sensor | <a href="https://brickset.com/sets/45305-1/">45305</a> | Sensor | Yes | Yes | Yes | Yes | <a href="https://brickset.com/sets/45300-1/">45300</a> |
| WeDo 2.0 Motion Sensor | <a href="https://brickset.com/sets/45304-1/">45304</a> | Sensor | Yes | Yes | Yes | Yes | <a href="https://brickset.com/sets/45300-1/">45300</a> |
| WeDo 2.0 Medium Motor | <a href="https://brickset.com/sets/45303-1/">45303</a> | Motor | Yes | Yes | Yes | Yes | <a href="https://brickset.com/sets/45300-1/">45300</a><br /> <a href="https://brickset.com/sets/76112-1/">76112</a> |
| Boost Color and Distance Sensor | <a href="https://brickset.com/sets/88007-1/">88007</a> | Sensor | *Partial* | Yes | Yes | Yes | <a href="https://brickset.com/sets/17101-1/">17101</a> |
| Boost Tacho Motor | <a href="https://brickset.com/sets/88008-1/">88008</a> | Motor/Sensor | *Partial* | Yes | Yes | Yes | <a href="https://brickset.com/sets/17101-1/">17101</a> |
| Powered Up Train Motor | <a href="https://brickset.com/sets/88011-1/">88011</a> | Motor | Yes | Yes | Yes | Yes | <a href="https://brickset.com/sets/60197-1/">60197</a><br /><a href="https://brickset.com/sets/60198-1/">60198</a> |
| Powered Up LED Lights | <a href="https://brickset.com/sets/88005-1/">88005</a> | Light | Yes | Yes | Yes | Yes | <a href="https://brickset.com/sets/88005-1/">88005</a> |
| Control+ Large Motor | 22169 | Motor/Sensor | *Partial* | No | Yes | Yes | <a href="https://brickset.com/sets/42099-1/">42099</a><br /><a href="https://brickset.com/sets/42100-1/">42100</a> |
| Control+ XLarge Motor | 22172 | Motor/Sensor | *Partial* | No | Yes | Yes | <a href="https://brickset.com/sets/42099-1/">42099</a><br /><a href="https://brickset.com/sets/42100-1/">42100</a> |
| SPIKE Prime Medium Motor | 45678 | Motor/Sensor | *Partial* | No | Yes | Yes | <a href="https://brickset.com/sets/45678-1/">45678</a> |
| SPIKE Prime Large Motor | 45678 | Motor/Sensor | *Partial* | No | Yes | Yes | <a href="https://brickset.com/sets/45678-1/">45678</a> |
| SPIKE Prime Color Sensor | 45678 | Sensor | No | No | Yes | Yes | <a href="https://brickset.com/sets/45678-1/">45678</a> |
| SPIKE Prime Distance Sensor | 45678 | Sensor | No | No | Yes | Yes | <a href="https://brickset.com/sets/45678-1/">45678</a> |
| SPIKE Prime Force Sensor | 45678 | Sensor | *Partial* | Yes | Yes | Yes | <a href="https://brickset.com/sets/45678-1/">45678</a> |
In addition, the Hubs themselves have certain built-in features which this library exposes.
| Hub Name | Product Code | Built-In Features | Availability |
| ------------------ | ------------ | ---------------------- | ------------ |
| WeDo 2.0 Smart hub | <a href="https://brickset.com/sets/45301-1/">45301</a> | RGB LED<br />Piezo Buzzer<br />Button | <a href="https://brickset.com/sets/45300-1/">45300</a> |
| Boost Move Hub | <a href="https://brickset.com/sets/88006-1/">88006</a> | RGB LED<br />Tilt Sensor<br />2x Tacho Motors<br />Button | <a href="https://brickset.com/sets/17101-1/">17101</a> |
| Powered Up Hub | <a href="https://brickset.com/sets/88009-1/">88009</a> | RGB LED<br />Button | <a href="https://brickset.com/sets/60197-1/">60197</a><br /><a href="https://brickset.com/sets/60198-1/">60198</a><br /><a href="https://brickset.com/sets/76112-1/">76112</a> |
| Powered Up Remote | <a href="https://brickset.com/sets/88010-1/">88010</a> | RGB LED<br />Left and Right Control Buttons<br />Button | <a href="https://brickset.com/sets/60197-1/">60197</a><br /><a href="https://brickset.com/sets/60198-1/">60198</a> |
| Duplo Train Base | 28743 | RGB LED/Headlights<br />Speaker<br />Speedometer<br />Motor<br />Color and Distance Sensor<br />Button | <a href="https://brickset.com/sets/10874-1/">10874</a><br /><a href="https://brickset.com/sets/10875-1/">10875</a> |
| Control+ Hub | 22127 | RGB LED<br />Button<br />Tilt Sensor<br />Accelerometer | <a href="https://brickset.com/sets/42099-1/">42099</a><br /><a href="https://brickset.com/sets/42100-1/">42100</a> |
| Super Mario | 71360 | Pants Sensor<br />Barcode and Color Sensor | <a href="https://brickset.com/sets/71360-1/">71360</a> |
### Known Issues and Limitations
* The WeDo 2.0 Smart Hub uses an older firmware which is no longer being updated. As a result, only certain motors and sensors work with it. See the table above.
* When used with the Boost Move Hub, the Control+ Motors and SPIKE Prime Motors/Sensors do not currently accept commands (This is a known bug which requires a firmware update from Lego to fix)
* The SPIKE Prime Hub does not use Bluetooth Low Energy, so is not supported via this library. It is recommended you use MicroPython to develop for this Hub using the officially provided tools and software.
* On most Unix systems, you need root permissions to access Bluetooth devices. You may want to [grant the node executable access to the Bluetooth adapter](https://github.com/abandonware/noble#running-without-rootsudo-linux-specific)
### Documentation
[Full documentation is available here.](https://nathankellenicki.github.io/node-poweredup/)
### Node.js Sample Usage
### Sample Usage
```javascript
const PoweredUP = require("node-poweredup");
@ -117,6 +59,69 @@ console.log("Scanning for Hubs...");
More examples are available in the "examples" directory.
### Documentation
[Full documentation is available here.](https://nathankellenicki.github.io/node-poweredup/)
### Node.js Installation
Node.js v12.0+ required.
```javascript
npm install node-poweredup --save
```
node-poweredup uses the Noble BLE library by Sandeep Mistry. On macOS everything should function out of the box. On Linux and Windows there are [certain dependencies which may need installed first](https://github.com/abandonware/noble#prerequisites).
Note: node-poweredup has been tested on macOS 11.0 and Debian/Raspbian on the Raspberry Pi 3 Model B.
### Compatibility
While most Powered Up components and Hubs are compatible with each other, there are exceptions. For example, there is limited backwards compatibility between newer components and the WeDo 2.0 Smart Hub. However WeDo 2.0 components are fully forwards compatible with newer Hubs.
| Device Name | Product Code | Type | WeDo 2.0 Smart Hub | Boost Move Hub | Powered Up Hub | Control+ Hub | Availability |
| ------------------------------- | ------------ | ------------- | ------------------ | -------------- | -------------- | ------------ | ----- |
| WeDo 2.0 Tilt Sensor | <a href="https://brickset.com/sets/45305-1/">45305</a> | Sensor | Yes | Yes | Yes | Yes | <a href="https://brickset.com/sets/45300-1/">45300</a> |
| WeDo 2.0 Motion Sensor | <a href="https://brickset.com/sets/45304-1/">45304</a> | Sensor | Yes | Yes | Yes | Yes | <a href="https://brickset.com/sets/45300-1/">45300</a> |
| WeDo 2.0 Medium Motor | <a href="https://brickset.com/sets/45303-1/">45303</a> | Motor | Yes | Yes | Yes | Yes | <a href="https://brickset.com/sets/45300-1/">45300</a><br /> <a href="https://brickset.com/sets/76112-1/">76112</a> |
| Boost Color and Distance Sensor | <a href="https://brickset.com/sets/88007-1/">88007</a> | Sensor | *Partial* | Yes | Yes | Yes | <a href="https://brickset.com/sets/17101-1/">17101</a> |
| Boost Tacho Motor | <a href="https://brickset.com/sets/88008-1/">88008</a> | Motor/Sensor | *Partial* | Yes | Yes | Yes | <a href="https://brickset.com/sets/17101-1/">17101</a> |
| Powered Up Train Motor | <a href="https://brickset.com/sets/88011-1/">88011</a> | Motor | Yes | Yes | Yes | Yes | <a href="https://brickset.com/sets/60197-1/">60197</a><br /><a href="https://brickset.com/sets/60198-1/">60198</a> |
| Powered Up LED Lights | <a href="https://brickset.com/sets/88005-1/">88005</a> | Light | Yes | Yes | Yes | Yes | <a href="https://brickset.com/sets/88005-1/">88005</a> |
| Control+ Large Motor | 22169 | Motor/Sensor | *Partial* | No | Yes | Yes | <a href="https://brickset.com/sets/42099-1/">42099</a><br /><a href="https://brickset.com/sets/42100-1/">42100</a> |
| Control+ XLarge Motor | 22172 | Motor/Sensor | *Partial* | No | Yes | Yes | <a href="https://brickset.com/sets/42099-1/">42099</a><br /><a href="https://brickset.com/sets/42100-1/">42100</a> |
| SPIKE Prime Medium Motor | 45678 | Motor/Sensor | *Partial* | No | Yes | Yes | <a href="https://brickset.com/sets/45678-1/">45678</a> |
| SPIKE Prime Large Motor | 45678 | Motor/Sensor | *Partial* | No | Yes | Yes | <a href="https://brickset.com/sets/45678-1/">45678</a> |
| SPIKE Prime Color Sensor | 45678 | Sensor | No | No | Yes | Yes | <a href="https://brickset.com/sets/45678-1/">45678</a> |
| SPIKE Prime Distance Sensor | 45678 | Sensor | No | No | Yes | Yes | <a href="https://brickset.com/sets/45678-1/">45678</a> |
| SPIKE Prime Force Sensor | 45678 | Sensor | *Partial* | Yes | Yes | Yes | <a href="https://brickset.com/sets/45678-1/">45678</a> |
| SPIKE Essential Small Motor | 45607 | Motor/Sensor | *Partial* | No | Yes | Yes | <a href="https://brickset.com/sets/45345-1/">45345</a> |
| SPIKE Essential 3x3 Color Matrix | 45608 | Motor/Sensor | *Partial* | No | Yes | Yes | <a href="https://brickset.com/sets/45345-1/">45345</a> |
In addition, the Hubs themselves have certain built-in features which this library exposes.
| Hub Name | Product Code | Built-In Features | Availability |
| ------------------ | ------------ | ---------------------- | ------------ |
| WeDo 2.0 Smart hub | <a href="https://brickset.com/sets/45301-1/">45301</a> | RGB LED<br />Piezo Buzzer<br />Button | <a href="https://brickset.com/sets/45300-1/">45300</a> |
| Boost Move Hub | <a href="https://brickset.com/sets/88006-1/">88006</a> | RGB LED<br />Tilt Sensor<br />2x Tacho Motors<br />Button | <a href="https://brickset.com/sets/17101-1/">17101</a> |
| Powered Up Hub | <a href="https://brickset.com/sets/88009-1/">88009</a> | RGB LED<br />Button | <a href="https://brickset.com/sets/60197-1/">60197</a><br /><a href="https://brickset.com/sets/60198-1/">60198</a><br /><a href="https://brickset.com/sets/76112-1/">76112</a> |
| Powered Up Remote | <a href="https://brickset.com/sets/88010-1/">88010</a> | RGB LED<br />Left and Right Control Buttons<br />Button | <a href="https://brickset.com/sets/60197-1/">60197</a><br /><a href="https://brickset.com/sets/60198-1/">60198</a> |
| Duplo Train Base | 28743 | RGB LED/Headlights<br />Speaker<br />Speedometer<br />Motor<br />Color and Distance Sensor<br />Button | <a href="https://brickset.com/sets/10874-1/">10874</a><br /><a href="https://brickset.com/sets/10875-1/">10875</a> |
| Control+ Hub | 22127 | RGB LED<br />Button<br />Tilt Sensor<br />Accelerometer | <a href="https://brickset.com/sets/42099-1/">42099</a><br /><a href="https://brickset.com/sets/42100-1/">42100</a> |
| Super Mario | 71360 | Pants Sensor<br />Barcode and Color Sensor | <a href="https://brickset.com/sets/71360-1/">71360</a> |
| SPIKE Essential Hub | 45609 | RGB LED<br />Button<br />Tilt Sensor<br />Accelerometer | <a href="https://brickset.com/sets/45345-1/">45345</a> |
### Known Issues and Limitations
* The WeDo 2.0 Smart Hub uses an older firmware which is no longer being updated. As a result, only certain motors and sensors work with it. See the table above.
* When used with the Boost Move Hub, the Control+ Motors and SPIKE Prime Motors/Sensors do not currently accept commands (This is a known bug which requires a firmware update from Lego to fix)
* The SPIKE Prime Hub does not use Bluetooth Low Energy, so is not supported via this library. It is recommended you use MicroPython to develop for this Hub using the officially provided tools and software. The SPIKE Essential Hub however is supported, as it uses Bluetooth Low Energy.
* On most Unix systems, you need root permissions to access Bluetooth devices. You may want to [grant the node executable access to the Bluetooth adapter](https://github.com/abandonware/noble#running-without-rootsudo-linux-specific)
### Credits
Thanks go to Jorge Pereira ([@JorgePe](https://github.com/JorgePe)), Sebastian Raff ([@hobbyquaker](https://github.com/hobbyquaker)), Valentin Heun ([@vheun](https://github.com/vheun)), Johan Korten ([@jakorten](https://github.com/jakorten)), and Andrey Pokhilko ([@undera](https://github.com/undera)) for their various works, contributions, and assistance on figuring out the LEGO Boost, WeDo 2.0, and Powered Up protocols.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More