node-poweredup 6.11.0 → 8.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/.drone.yml +1 -0
  2. package/.gitmodules +3 -0
  3. package/{jsdoc.conf.json → .jsdoc.json} +14 -1
  4. package/README.md +47 -42
  5. package/dist/browser/poweredup.js +1 -1
  6. package/dist/browser/poweredup.js.map +1 -1
  7. package/dist/node/color.d.ts +6 -0
  8. package/dist/node/color.js +38 -0
  9. package/dist/node/color.js.map +1 -0
  10. package/dist/node/consts.d.ts +48 -27
  11. package/dist/node/consts.js +53 -31
  12. package/dist/node/consts.js.map +1 -1
  13. package/dist/node/devices/absolutemotor.js +6 -6
  14. package/dist/node/devices/absolutemotor.js.map +1 -1
  15. package/dist/node/devices/basicmotor.js +2 -2
  16. package/dist/node/devices/basicmotor.js.map +1 -1
  17. package/dist/node/devices/colordistancesensor.d.ts +11 -0
  18. package/dist/node/devices/colordistancesensor.js +95 -2
  19. package/dist/node/devices/colordistancesensor.js.map +1 -1
  20. package/dist/node/devices/device.js +2 -0
  21. package/dist/node/devices/device.js.map +1 -1
  22. package/dist/node/devices/duplotrainbasecolorsensor.d.ts +2 -1
  23. package/dist/node/devices/duplotrainbasecolorsensor.js +15 -2
  24. package/dist/node/devices/duplotrainbasecolorsensor.js.map +1 -1
  25. package/dist/node/devices/light.js +1 -1
  26. package/dist/node/devices/light.js.map +1 -1
  27. package/dist/node/devices/tachomotor.js +6 -6
  28. package/dist/node/devices/tachomotor.js.map +1 -1
  29. package/dist/node/devices/technic3x3colorlightmatrix.d.ts +22 -0
  30. package/dist/node/devices/technic3x3colorlightmatrix.js +77 -0
  31. package/dist/node/devices/technic3x3colorlightmatrix.js.map +1 -0
  32. package/dist/node/devices/techniccolorsensor.js +2 -1
  33. package/dist/node/devices/techniccolorsensor.js.map +1 -1
  34. package/dist/node/devices/technicmediumhubtiltsensor.d.ts +25 -1
  35. package/dist/node/devices/technicmediumhubtiltsensor.js +70 -2
  36. package/dist/node/devices/technicmediumhubtiltsensor.js.map +1 -1
  37. package/dist/node/devices/technicsmallangularmotor.d.ts +12 -0
  38. package/dist/node/devices/technicsmallangularmotor.js +35 -0
  39. package/dist/node/devices/technicsmallangularmotor.js.map +1 -0
  40. package/dist/node/hubs/basehub.js +4 -0
  41. package/dist/node/hubs/basehub.js.map +1 -1
  42. package/dist/node/hubs/hub.js +1 -1
  43. package/dist/node/hubs/hub.js.map +1 -1
  44. package/dist/node/hubs/lpf2hub.js +20 -19
  45. package/dist/node/hubs/lpf2hub.js.map +1 -1
  46. package/dist/node/hubs/movehub.js +1 -1
  47. package/dist/node/hubs/movehub.js.map +1 -1
  48. package/dist/node/hubs/technicmediumhub.js +1 -1
  49. package/dist/node/hubs/technicmediumhub.js.map +1 -1
  50. package/dist/node/hubs/technicsmallhub.d.ts +18 -0
  51. package/dist/node/hubs/technicsmallhub.js +64 -0
  52. package/dist/node/hubs/technicsmallhub.js.map +1 -0
  53. package/dist/node/index-browser.js +6 -0
  54. package/dist/node/index-browser.js.map +1 -1
  55. package/dist/node/index-node.d.ts +4 -1
  56. package/dist/node/index-node.js +7 -1
  57. package/dist/node/index-node.js.map +1 -1
  58. package/dist/node/poweredup-browser.js +8 -1
  59. package/dist/node/poweredup-browser.js.map +1 -1
  60. package/dist/node/poweredup-node.js +30 -1
  61. package/dist/node/poweredup-node.js.map +1 -1
  62. package/dist/node/utils.d.ts +1 -1
  63. package/dist/node/utils.js +10 -3
  64. package/dist/node/utils.js.map +1 -1
  65. package/docs/AbsoluteMotor.html +1220 -1405
  66. package/docs/BaseHub.html +787 -872
  67. package/docs/BasicMotor.html +923 -1078
  68. package/docs/ColorDistanceSensor.html +2188 -1540
  69. package/docs/CurrentSensor.html +711 -800
  70. package/docs/Device.html +574 -665
  71. package/docs/DuploTrainBase.html +1255 -1375
  72. package/docs/DuploTrainBaseColorSensor.html +1049 -978
  73. package/docs/DuploTrainBaseMotor.html +958 -1113
  74. package/docs/DuploTrainBaseSpeaker.html +793 -916
  75. package/docs/DuploTraniBaseSpeedometer.html +628 -719
  76. package/docs/Hub.html +5621 -2397
  77. package/docs/HubLED.html +831 -944
  78. package/docs/LPF2Hub.html +1215 -1335
  79. package/docs/Light.html +831 -944
  80. package/docs/Mario.html +1255 -1420
  81. package/docs/MarioAccelerometer.html +834 -911
  82. package/docs/MarioBarcodeSensor.html +834 -911
  83. package/docs/MarioPantsSensor.html +711 -800
  84. package/docs/MediumLinearMotor.html +861 -1000
  85. package/docs/MotionSensor.html +711 -800
  86. package/docs/MoveHub.html +1255 -1420
  87. package/docs/MoveHubMediumLinearMotor.html +861 -1000
  88. package/docs/MoveHubTiltSensor.html +730 -814
  89. package/docs/PiezoBuzzer.html +732 -834
  90. package/docs/PoweredUP.html +4322 -0
  91. package/docs/RemoteControl.html +1255 -1420
  92. package/docs/RemoteControlButton.html +711 -800
  93. package/docs/SimpleMediumLinearMotor.html +628 -719
  94. package/docs/TachoMotor.html +1644 -1835
  95. package/docs/Technic3x3ColorLightMatrix.html +1181 -0
  96. package/docs/TechnicColorSensor.html +1008 -1099
  97. package/docs/TechnicDistanceSensor.html +939 -1027
  98. package/docs/TechnicForceSensor.html +883 -968
  99. package/docs/TechnicLargeAngularMotor.html +1254 -1439
  100. package/docs/TechnicLargeLinearMotor.html +1254 -1439
  101. package/docs/TechnicMediumAngularMotor.html +1254 -1439
  102. package/docs/TechnicMediumHub.html +1255 -1420
  103. package/docs/TechnicMediumHubAccelerometerSensor.html +749 -828
  104. package/docs/TechnicMediumHubGyroSensor.html +749 -828
  105. package/docs/TechnicMediumHubTiltSensor.html +1340 -831
  106. package/docs/TechnicSmallAngularMotor.html +2073 -0
  107. package/docs/TechnicXLargeLinearMotor.html +1254 -1439
  108. package/docs/TiltSensor.html +730 -814
  109. package/docs/TrainMotor.html +958 -1113
  110. package/docs/VoltageSensor.html +711 -800
  111. package/docs/WeDo2SmartHub.html +1112 -1221
  112. package/docs/consts.js.html +791 -0
  113. package/docs/devices_absolutemotor.js.html +95 -197
  114. package/docs/devices_basicmotor.js.html +91 -193
  115. package/docs/devices_colordistancesensor.js.html +184 -193
  116. package/docs/devices_currentsensor.js.html +89 -191
  117. package/docs/devices_device.js.html +91 -191
  118. package/docs/devices_duplotrainbasecolorsensor.js.html +104 -193
  119. package/docs/devices_duplotrainbasemotor.js.html +92 -194
  120. package/docs/devices_duplotrainbasespeaker.js.html +89 -191
  121. package/docs/devices_duplotrainbasespeedometer.js.html +89 -191
  122. package/docs/devices_hubled.js.html +89 -191
  123. package/docs/devices_light.js.html +90 -192
  124. package/docs/devices_marioaccelerometer.js.html +89 -191
  125. package/docs/devices_mariobarcodesensor.js.html +89 -191
  126. package/docs/devices_mariopantssensor.js.html +89 -191
  127. package/docs/devices_mediumlinearmotor.js.html +92 -194
  128. package/docs/devices_motionsensor.js.html +89 -191
  129. package/docs/devices_movehubmediumlinearmotor.js.html +92 -194
  130. package/docs/devices_movehubtiltsensor.js.html +89 -191
  131. package/docs/devices_piezobuzzer.js.html +89 -191
  132. package/docs/devices_remotecontrolbutton.js.html +89 -191
  133. package/docs/devices_simplemediumlinearmotor.js.html +92 -194
  134. package/docs/devices_tachomotor.js.html +95 -197
  135. package/docs/devices_technic3x3colorlightmatrix.js.html +190 -0
  136. package/docs/devices_techniccolorsensor.js.html +91 -192
  137. package/docs/devices_technicdistancesensor.js.html +89 -191
  138. package/docs/devices_technicforcesensor.js.html +89 -191
  139. package/docs/devices_techniclargeangularmotor.js.html +92 -194
  140. package/docs/devices_techniclargelinearmotor.js.html +92 -194
  141. package/docs/devices_technicmediumangularmotor.js.html +92 -194
  142. package/docs/devices_technicmediumhubaccelerometersensor.js.html +89 -191
  143. package/docs/devices_technicmediumhubgyrosensor.js.html +89 -191
  144. package/docs/devices_technicmediumhubtiltsensor.js.html +159 -193
  145. package/docs/devices_technicsmallangularmotor.js.html +148 -0
  146. package/docs/devices_technicxlargelinearmotor.js.html +92 -194
  147. package/docs/devices_tiltsensor.js.html +89 -191
  148. package/docs/devices_trainmotor.js.html +92 -194
  149. package/docs/devices_voltagesensor.js.html +89 -191
  150. package/docs/fonts/OpenSans-Bold-webfont.eot +0 -0
  151. package/docs/fonts/OpenSans-Bold-webfont.svg +1830 -0
  152. package/docs/fonts/OpenSans-Bold-webfont.woff +0 -0
  153. package/docs/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  154. package/docs/fonts/OpenSans-BoldItalic-webfont.svg +1830 -0
  155. package/docs/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  156. package/docs/fonts/OpenSans-Italic-webfont.eot +0 -0
  157. package/docs/fonts/OpenSans-Italic-webfont.svg +1830 -0
  158. package/docs/fonts/OpenSans-Italic-webfont.woff +0 -0
  159. package/docs/fonts/OpenSans-Light-webfont.eot +0 -0
  160. package/docs/fonts/OpenSans-Light-webfont.svg +1831 -0
  161. package/docs/fonts/OpenSans-Light-webfont.woff +0 -0
  162. package/docs/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  163. package/docs/fonts/OpenSans-LightItalic-webfont.svg +1835 -0
  164. package/docs/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  165. package/docs/fonts/OpenSans-Regular-webfont.eot +0 -0
  166. package/docs/fonts/OpenSans-Regular-webfont.svg +1831 -0
  167. package/docs/fonts/OpenSans-Regular-webfont.woff +0 -0
  168. package/docs/fonts/OpenSans-Semibold-webfont.eot +0 -0
  169. package/docs/fonts/OpenSans-Semibold-webfont.svg +1830 -0
  170. package/docs/fonts/OpenSans-Semibold-webfont.ttf +0 -0
  171. package/docs/fonts/OpenSans-Semibold-webfont.woff +0 -0
  172. package/docs/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
  173. package/docs/fonts/OpenSans-SemiboldItalic-webfont.svg +1830 -0
  174. package/docs/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  175. package/docs/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
  176. package/docs/global.html +9829 -0
  177. package/docs/hubs_basehub.js.html +93 -191
  178. package/docs/hubs_duplotrainbase.js.html +89 -191
  179. package/docs/hubs_hub.js.html +90 -192
  180. package/docs/hubs_lpf2hub.js.html +109 -210
  181. package/docs/hubs_mario.js.html +89 -191
  182. package/docs/hubs_movehub.js.html +90 -192
  183. package/docs/hubs_remotecontrol.js.html +89 -191
  184. package/docs/hubs_technicmediumhub.js.html +90 -192
  185. package/docs/hubs_technicsmallhub.js.html +177 -0
  186. package/docs/hubs_wedo2smarthub.js.html +89 -191
  187. package/docs/icons/home.svg +4 -0
  188. package/docs/icons/search.svg +4 -0
  189. package/docs/index.html +143 -236
  190. package/docs/poweredup-browser.js.html +348 -0
  191. package/docs/poweredup-node.js.html +314 -0
  192. package/docs/scripts/linenumber.js +23 -0
  193. package/docs/scripts/pagelocation.js +89 -0
  194. package/docs/styles/collapse.css +27 -0
  195. package/docs/styles/jsdoc-default.css +953 -0
  196. package/docs/styles/prettify-jsdoc.css +111 -0
  197. package/docs/styles/prettify-tomorrow.css +15 -9
  198. package/jsdoc-template/braintree/CHANGELOG.md +31 -0
  199. package/jsdoc-template/braintree/LICENSE +27 -0
  200. package/jsdoc-template/braintree/README.md +90 -0
  201. package/jsdoc-template/braintree/package.json +39 -0
  202. package/jsdoc-template/braintree/publish.js +675 -0
  203. package/jsdoc-template/braintree/static/fonts/OpenSans-Bold-webfont.eot +0 -0
  204. package/jsdoc-template/braintree/static/fonts/OpenSans-Bold-webfont.svg +1830 -0
  205. package/jsdoc-template/braintree/static/fonts/OpenSans-Bold-webfont.woff +0 -0
  206. package/jsdoc-template/braintree/static/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  207. package/jsdoc-template/braintree/static/fonts/OpenSans-BoldItalic-webfont.svg +1830 -0
  208. package/jsdoc-template/braintree/static/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  209. package/jsdoc-template/braintree/static/fonts/OpenSans-Italic-webfont.eot +0 -0
  210. package/jsdoc-template/braintree/static/fonts/OpenSans-Italic-webfont.svg +1830 -0
  211. package/jsdoc-template/braintree/static/fonts/OpenSans-Italic-webfont.woff +0 -0
  212. package/jsdoc-template/braintree/static/fonts/OpenSans-Light-webfont.eot +0 -0
  213. package/jsdoc-template/braintree/static/fonts/OpenSans-Light-webfont.svg +1831 -0
  214. package/jsdoc-template/braintree/static/fonts/OpenSans-Light-webfont.woff +0 -0
  215. package/jsdoc-template/braintree/static/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  216. package/jsdoc-template/braintree/static/fonts/OpenSans-LightItalic-webfont.svg +1835 -0
  217. package/jsdoc-template/braintree/static/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  218. package/jsdoc-template/braintree/static/fonts/OpenSans-Regular-webfont.eot +0 -0
  219. package/jsdoc-template/braintree/static/fonts/OpenSans-Regular-webfont.svg +1831 -0
  220. package/jsdoc-template/braintree/static/fonts/OpenSans-Regular-webfont.woff +0 -0
  221. package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.eot +0 -0
  222. package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.svg +1830 -0
  223. package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.ttf +0 -0
  224. package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.woff +0 -0
  225. package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
  226. package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.svg +1830 -0
  227. package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  228. package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
  229. package/jsdoc-template/braintree/static/icons/home.svg +4 -0
  230. package/jsdoc-template/braintree/static/icons/search.svg +4 -0
  231. package/jsdoc-template/braintree/static/scripts/linenumber.js +23 -0
  232. package/jsdoc-template/braintree/static/scripts/pagelocation.js +89 -0
  233. package/jsdoc-template/braintree/static/styles/collapse.css +27 -0
  234. package/jsdoc-template/braintree/static/styles/jsdoc-default.css +953 -0
  235. package/jsdoc-template/braintree/static/styles/prettify-jsdoc.css +111 -0
  236. package/jsdoc-template/braintree/static/styles/prettify-tomorrow.css +138 -0
  237. package/jsdoc-template/braintree/tmpl/augments.tmpl +10 -0
  238. package/jsdoc-template/braintree/tmpl/container.tmpl +213 -0
  239. package/jsdoc-template/braintree/tmpl/details.tmpl +223 -0
  240. package/jsdoc-template/braintree/tmpl/example.tmpl +2 -0
  241. package/jsdoc-template/braintree/tmpl/examples.tmpl +14 -0
  242. package/jsdoc-template/braintree/tmpl/exceptions.tmpl +28 -0
  243. package/jsdoc-template/braintree/tmpl/layout.tmpl +150 -0
  244. package/jsdoc-template/braintree/tmpl/mainpage.tmpl +9 -0
  245. package/jsdoc-template/braintree/tmpl/members.tmpl +38 -0
  246. package/jsdoc-template/braintree/tmpl/method.tmpl +128 -0
  247. package/jsdoc-template/braintree/tmpl/params.tmpl +125 -0
  248. package/jsdoc-template/braintree/tmpl/properties.tmpl +111 -0
  249. package/jsdoc-template/braintree/tmpl/returns.tmpl +17 -0
  250. package/jsdoc-template/braintree/tmpl/source.tmpl +9 -0
  251. package/jsdoc-template/braintree/tmpl/tutorial.tmpl +23 -0
  252. package/jsdoc-template/braintree/tmpl/type.tmpl +11 -0
  253. package/package.json +14 -15
  254. package/src/color.ts +20 -0
  255. package/src/consts.ts +47 -26
  256. package/src/devices/colordistancesensor.ts +98 -3
  257. package/src/devices/device.ts +1 -0
  258. package/src/devices/duplotrainbasecolorsensor.ts +17 -2
  259. package/src/devices/technic3x3colorlightmatrix.ts +64 -0
  260. package/src/devices/techniccolorsensor.ts +2 -1
  261. package/src/devices/technicmediumhubtiltsensor.ts +75 -3
  262. package/src/devices/technicsmallangularmotor.ts +17 -0
  263. package/src/hubs/basehub.ts +4 -0
  264. package/src/hubs/lpf2hub.ts +8 -9
  265. package/src/hubs/technicmediumhub.ts +1 -1
  266. package/src/hubs/technicsmallhub.ts +60 -0
  267. package/src/index-browser.ts +6 -0
  268. package/src/index-node.ts +6 -0
  269. package/src/poweredup-browser.ts +8 -1
  270. package/src/poweredup-node.ts +9 -1
  271. package/src/utils.ts +7 -0
  272. package/docs/classes.list.html +0 -8654
  273. package/docs/fonts/glyphicons-halflings-regular.eot +0 -0
  274. package/docs/fonts/glyphicons-halflings-regular.svg +0 -288
  275. package/docs/fonts/glyphicons-halflings-regular.ttf +0 -0
  276. package/docs/fonts/glyphicons-halflings-regular.woff +0 -0
  277. package/docs/fonts/glyphicons-halflings-regular.woff2 +0 -0
  278. package/docs/img/glyphicons-halflings-white.png +0 -0
  279. package/docs/img/glyphicons-halflings.png +0 -0
  280. package/docs/quicksearch.html +0 -31
  281. package/docs/scripts/docstrap.lib.js +0 -11
  282. package/docs/scripts/fulltext-search-ui.js +0 -89
  283. package/docs/scripts/fulltext-search.js +0 -36
  284. package/docs/scripts/lunr.min.js +0 -6
  285. package/docs/scripts/prettify/Apache-License-2.0.txt +0 -202
  286. package/docs/scripts/prettify/jquery.min.js +0 -6
  287. package/docs/scripts/prettify/lang-css.js +0 -21
  288. package/docs/scripts/prettify/prettify.js +0 -496
  289. package/docs/scripts/sunlight.js +0 -1157
  290. package/docs/scripts/toc.js +0 -203
  291. package/docs/styles/darkstrap.css +0 -960
  292. package/docs/styles/site.cerulean.css +0 -7008
  293. package/docs/styles/site.cosmo.css +0 -7061
  294. package/docs/styles/site.cyborg.css +0 -7048
  295. package/docs/styles/site.darkly.css +0 -7171
  296. package/docs/styles/site.darkstrap.css +0 -5638
  297. package/docs/styles/site.dibs-bootstrap.css +0 -5899
  298. package/docs/styles/site.flatly.css +0 -7147
  299. package/docs/styles/site.journal.css +0 -6973
  300. package/docs/styles/site.lumen.css +0 -7298
  301. package/docs/styles/site.paper.css +0 -7623
  302. package/docs/styles/site.readable.css +0 -6997
  303. package/docs/styles/site.sandstone.css +0 -7035
  304. package/docs/styles/site.simplex.css +0 -7023
  305. package/docs/styles/site.slate.css +0 -7343
  306. package/docs/styles/site.spacelab.css +0 -7055
  307. package/docs/styles/site.superhero.css +0 -7131
  308. package/docs/styles/site.united.css +0 -6895
  309. package/docs/styles/site.yeti.css +0 -7195
  310. package/docs/styles/sunlight.dark.css +0 -345
  311. package/docs/styles/sunlight.default.css +0 -344
package/docs/index.html CHANGED
@@ -1,104 +1,103 @@
1
1
  <!DOCTYPE html>
2
-
3
2
  <html lang="en">
4
3
  <head>
5
- <meta charset="utf-8">
6
- <meta name="viewport" content="width=device-width">
7
- <title>node-poweredup Index</title>
8
-
9
- <!--[if lt IE 9]>
10
- <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
11
- <![endif]-->
12
- <link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
13
4
 
14
- <link type="text/css" rel="stylesheet" href="styles/site.simplex.css">
5
+ <meta charset="utf-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
15
7
 
16
- </head>
8
+ <title>
9
+ Home - Documentation
10
+ </title>
17
11
 
18
- <body>
12
+ <link href="https://www.braintreepayments.com/images/favicon-ccda0b14.png" rel="icon" type="image/png">
19
13
 
20
- <div class="navbar navbar-default navbar-fixed-top navbar-inverse">
21
- <div class="container">
22
- <div class="navbar-header">
23
- <a class="navbar-brand" href="index.html">node-poweredup</a>
24
- <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#topNavigation">
25
- <span class="icon-bar"></span>
26
- <span class="icon-bar"></span>
27
- <span class="icon-bar"></span>
28
- </button>
29
- </div>
30
- <div class="navbar-collapse collapse" id="topNavigation">
31
- <ul class="nav navbar-nav">
32
-
33
- <li class="dropdown">
34
- <a href="classes.list.html" class="dropdown-toggle" data-toggle="dropdown">Classes<b class="caret"></b></a>
35
- <ul class="dropdown-menu ">
36
- <li><a href="AbsoluteMotor.html">AbsoluteMotor</a></li><li><a href="BaseHub.html">BaseHub</a></li><li><a href="BasicMotor.html">BasicMotor</a></li><li><a href="ColorDistanceSensor.html">ColorDistanceSensor</a></li><li><a href="CurrentSensor.html">CurrentSensor</a></li><li><a href="Device.html">Device</a></li><li><a href="DuploTrainBase.html">DuploTrainBase</a></li><li><a href="DuploTrainBaseColorSensor.html">DuploTrainBaseColorSensor</a></li><li><a href="DuploTrainBaseMotor.html">DuploTrainBaseMotor</a></li><li><a href="DuploTrainBaseSpeaker.html">DuploTrainBaseSpeaker</a></li><li><a href="DuploTraniBaseSpeedometer.html">DuploTraniBaseSpeedometer</a></li><li><a href="Hub.html">Hub</a></li><li><a href="HubLED.html">HubLED</a></li><li><a href="Light.html">Light</a></li><li><a href="LPF2Hub.html">LPF2Hub</a></li><li><a href="Mario.html">Mario</a></li><li><a href="MarioAccelerometer.html">MarioAccelerometer</a></li><li><a href="MarioBarcodeSensor.html">MarioBarcodeSensor</a></li><li><a href="MarioPantsSensor.html">MarioPantsSensor</a></li><li><a href="MediumLinearMotor.html">MediumLinearMotor</a></li><li><a href="MotionSensor.html">MotionSensor</a></li><li><a href="MoveHub.html">MoveHub</a></li><li><a href="MoveHubMediumLinearMotor.html">MoveHubMediumLinearMotor</a></li><li><a href="MoveHubTiltSensor.html">MoveHubTiltSensor</a></li><li><a href="PiezoBuzzer.html">PiezoBuzzer</a></li><li><a href="RemoteControl.html">RemoteControl</a></li><li><a href="RemoteControlButton.html">RemoteControlButton</a></li><li><a href="SimpleMediumLinearMotor.html">SimpleMediumLinearMotor</a></li><li><a href="TachoMotor.html">TachoMotor</a></li><li><a href="TechnicColorSensor.html">TechnicColorSensor</a></li><li><a href="TechnicDistanceSensor.html">TechnicDistanceSensor</a></li><li><a href="TechnicForceSensor.html">TechnicForceSensor</a></li><li><a href="TechnicLargeAngularMotor.html">TechnicLargeAngularMotor</a></li><li><a href="TechnicLargeLinearMotor.html">TechnicLargeLinearMotor</a></li><li><a href="TechnicMediumAngularMotor.html">TechnicMediumAngularMotor</a></li><li><a href="TechnicMediumHub.html">TechnicMediumHub</a></li><li><a href="TechnicMediumHubAccelerometerSensor.html">TechnicMediumHubAccelerometerSensor</a></li><li><a href="TechnicMediumHubGyroSensor.html">TechnicMediumHubGyroSensor</a></li><li><a href="TechnicMediumHubTiltSensor.html">TechnicMediumHubTiltSensor</a></li><li><a href="TechnicXLargeLinearMotor.html">TechnicXLargeLinearMotor</a></li><li><a href="TiltSensor.html">TiltSensor</a></li><li><a href="TrainMotor.html">TrainMotor</a></li><li><a href="VoltageSensor.html">VoltageSensor</a></li><li><a href="WeDo2SmartHub.html">WeDo2SmartHub</a></li>
37
- </ul>
38
- </li>
39
-
40
- <li class="dropdown">
41
- <a href="events.list.html" class="dropdown-toggle" data-toggle="dropdown">Events<b class="caret"></b></a>
42
- <ul class="dropdown-menu ">
43
- <li><a href="AbsoluteMotor.html#event:absolute">AbsoluteMotor#event:absolute</a></li><li><a href="AbsoluteMotor.html#event:rotate">AbsoluteMotor#event:rotate</a></li><li><a href="ColorDistanceSensor.html#event:color">ColorDistanceSensor#event:color</a></li><li><a href="ColorDistanceSensor.html#event:colorAndDistance">ColorDistanceSensor#event:colorAndDistance</a></li><li><a href="ColorDistanceSensor.html#event:distance">ColorDistanceSensor#event:distance</a></li><li><a href="CurrentSensor.html#event:current">CurrentSensor#event:current</a></li><li><a href="DuploTrainBase.html#event:button">DuploTrainBase#event:button</a></li><li><a href="DuploTrainBaseColorSensor.html#event:color">DuploTrainBaseColorSensor#event:color</a></li><li><a href="DuploTrainBaseColorSensor.html#event:reflect">DuploTrainBaseColorSensor#event:reflect</a></li><li><a href="DuploTrainBaseColorSensor.html#event:rgb">DuploTrainBaseColorSensor#event:rgb</a></li><li><a href="DuploTrainBaseSpeedometer.html#event:speed">DuploTrainBaseSpeedometer#event:speed</a></li><li><a href="Hub.html#event:attach">Hub#event:attach</a></li><li><a href="Hub.html#event:button">Hub#event:button</a></li><li><a href="Hub.html#event:detach">Hub#event:detach</a></li><li><a href="Hub.html#event:disconnect">Hub#event:disconnect</a></li><li><a href="LPF2Hub.html#event:button">LPF2Hub#event:button</a></li><li><a href="Mario.html#event:button">Mario#event:button</a></li><li><a href="MarioAccelerometer.html#event:accel">MarioAccelerometer#event:accel</a></li><li><a href="MarioAccelerometer.html#event:gest">MarioAccelerometer#event:gest</a></li><li><a href="MarioBarcodeSensor.html#event:barcode">MarioBarcodeSensor#event:barcode</a></li><li><a href="MarioBarcodeSensor.html#event:rgb">MarioBarcodeSensor#event:rgb</a></li><li><a href="MarioPantsSensor.html#event:pants">MarioPantsSensor#event:pants</a></li><li><a href="MediumLinearMotor.html#event:rotate">MediumLinearMotor#event:rotate</a></li><li><a href="MotionSensor.html#event:distance">MotionSensor#event:distance</a></li><li><a href="MoveHub.html#event:button">MoveHub#event:button</a></li><li><a href="MoveHubMediumLinearMotor.html#event:rotate">MoveHubMediumLinearMotor#event:rotate</a></li><li><a href="MoveHubTiltSensor.html#event:tilt">MoveHubTiltSensor#event:tilt</a></li><li><a href="RemoteControl.html#event:button">RemoteControl#event:button</a></li><li><a href="RemoteControlButton.html#event:button">RemoteControlButton#event:button</a></li><li><a href="TachoMotor.html#event:rotate">TachoMotor#event:rotate</a></li><li><a href="TechnicColorSensor.html#event:ambient">TechnicColorSensor#event:ambient</a></li><li><a href="TechnicColorSensor.html#event:color">TechnicColorSensor#event:color</a></li><li><a href="TechnicColorSensor.html#event:reflect">TechnicColorSensor#event:reflect</a></li><li><a href="TechnicDistanceSensor.html#event:distance">TechnicDistanceSensor#event:distance</a></li><li><a href="TechnicDistanceSensor.html#event:fastDistance">TechnicDistanceSensor#event:fastDistance</a></li><li><a href="TechnicForceSensor.html#event:force">TechnicForceSensor#event:force</a></li><li><a href="TechnicForceSensor.html#event:tapped">TechnicForceSensor#event:tapped</a></li><li><a href="TechnicForceSensor.html#event:touch">TechnicForceSensor#event:touch</a></li><li><a href="TechnicLargeAngularMotor.html#event:absolute">TechnicLargeAngularMotor#event:absolute</a></li><li><a href="TechnicLargeAngularMotor.html#event:rotate">TechnicLargeAngularMotor#event:rotate</a></li><li><a href="TechnicLargeLinearMotor.html#event:absolute">TechnicLargeLinearMotor#event:absolute</a></li><li><a href="TechnicLargeLinearMotor.html#event:rotate">TechnicLargeLinearMotor#event:rotate</a></li><li><a href="TechnicMediumAngularMotor.html#event:absolute">TechnicMediumAngularMotor#event:absolute</a></li><li><a href="TechnicMediumAngularMotor.html#event:rotate">TechnicMediumAngularMotor#event:rotate</a></li><li><a href="TechnicMediumHub.html#event:button">TechnicMediumHub#event:button</a></li><li><a href="TechnicMediumHubAccelerometerSensor.html#event:accel">TechnicMediumHubAccelerometerSensor#event:accel</a></li><li><a href="TechnicMediumHubGyroSensor.html#event:gyro">TechnicMediumHubGyroSensor#event:gyro</a></li><li><a href="TechnicMediumHubTiltSensor.html#event:tilt">TechnicMediumHubTiltSensor#event:tilt</a></li><li><a href="TechnicXLargeLinearMotor.html#event:absolute">TechnicXLargeLinearMotor#event:absolute</a></li><li><a href="TechnicXLargeLinearMotor.html#event:rotate">TechnicXLargeLinearMotor#event:rotate</a></li><li><a href="TiltSensor.html#event:tilt">TiltSensor#event:tilt</a></li><li><a href="VoltageSensor.html#event:voltage">VoltageSensor#event:voltage</a></li><li><a href="WeDo2SmartHub.html#event:button">WeDo2SmartHub#event:button</a></li>
44
- </ul>
45
- </li>
46
-
47
- </ul>
48
-
49
- <div class="col-sm-3 col-md-3">
50
- <form class="navbar-form" role="search">
51
- <div class="input-group">
52
- <input type="text" class="form-control" placeholder="Search" name="q" id="search-input">
53
- <div class="input-group-btn">
54
- <button class="btn btn-default" id="search-submit"><i class="glyphicon glyphicon-search"></i></button>
55
- </div>
56
- </div>
57
- </form>
58
- </div>
59
-
60
- </div>
14
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.7.0/highlight.min.js"></script>
15
+ <script>hljs.initHighlightingOnLoad();</script>
61
16
 
62
- </div>
63
- </div>
17
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
64
18
 
19
+ <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
20
+ <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
21
+
65
22
 
66
- <div class="container" id="toc-content">
67
- <div class="row">
23
+
68
24
 
69
-
70
- <div class="col-md-8">
71
-
72
- <div id="main">
73
-
25
+ <!-- start Mixpanel -->
26
+ <script type="text/javascript">(function(e,a){if(!a.__SV){var b=window;try{var c,l,i,j=b.location,g=j.hash;c=function(a,b){return(l=a.match(RegExp(b+"=([^&]*)")))?l[1]:null};g&&c(g,"state")&&(i=JSON.parse(decodeURIComponent(c(g,"state"))),"mpeditor"===i.action&&(b.sessionStorage.setItem("_mpcehash",g),history.replaceState(i.desiredHash||"",e.title,j.pathname+j.search)))}catch(m){}var k,h;window.mixpanel=a;a._i=[];a.init=function(b,c,f){function e(b,a){var c=a.split(".");2==c.length&&(b=b[c[0]],a=c[1]);b[a]=function(){b.push([a].concat(Array.prototype.slice.call(arguments,
27
+ 0)))}}var d=a;"undefined"!==typeof f?d=a[f]=[]:f="mixpanel";d.people=d.people||[];d.toString=function(b){var a="mixpanel";"mixpanel"!==f&&(a+="."+f);b||(a+=" (stub)");return a};d.people.toString=function(){return d.toString(1)+".people (stub)"};k="disable time_event track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config reset people.set people.set_once people.increment people.append people.union people.track_charge people.clear_charges people.delete_user".split(" ");
28
+ for(h=0;h<k.length;h++)e(d,k[h]);a._i.push([b,c,f])};a.__SV=1.2;b=e.createElement("script");b.type="text/javascript";b.async=!0;b.src="undefined"!==typeof MIXPANEL_CUSTOM_LIB_URL?MIXPANEL_CUSTOM_LIB_URL:"file:"===e.location.protocol&&"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js".match(/^\/\//)?"https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js":"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js";c=e.getElementsByTagName("script")[0];c.parentNode.insertBefore(b,c)}})(document,window.mixpanel||[]);
29
+ mixpanel.init("1919205b2da72e4da3b9b6639b444d59");</script>
30
+ <!-- end Mixpanel -->
31
+ </head>
74
32
 
75
-
76
-
33
+ <body>
34
+ <svg style="display: none;">
35
+ <defs>
36
+ <symbol id="linkIcon" fill="#706d77" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
37
+ <path d="M0 0h24v24H0z" fill="none"/>
38
+ <path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/>
39
+ </symbol>
40
+ </defs>
41
+ </svg>
77
42
 
43
+ <input type="checkbox" id="nav-trigger" class="nav-trigger" />
44
+ <label for="nav-trigger" class="navicon-button x">
45
+ <div class="navicon"></div>
46
+ </label>
78
47
 
48
+ <label for="nav-trigger" class="overlay"></label>
79
49
 
50
+ <div class="top-nav-wrapper">
51
+ <ul>
52
+ <li class="active" >
53
+ <a href="index.html">
54
+
55
+
56
+ <svg fill="#0095dd" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
57
+ <path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/>
58
+ <path d="M0 0h24v24H0z" fill="none"/>
59
+ </svg>
60
+
61
+ </a>
62
+ </li>
80
63
 
64
+
81
65
 
66
+ </ul>
67
+ </div>
82
68
 
69
+ <nav>
70
+ <h3 class="reference-title">
71
+ node-poweredup Reference
72
+ </h3>
83
73
 
74
+
84
75
 
76
+ <h3>Classes</h3><ul><li id="AbsoluteMotor-nav"><a href="AbsoluteMotor.html">AbsoluteMotor</a><ul class='methods'><li data-type="method" id="AbsoluteMotor-gotoAngle-nav"><a href="AbsoluteMotor.html#gotoAngle">gotoAngle</a></li><li data-type="method" id="AbsoluteMotor-gotoRealZero-nav"><a href="AbsoluteMotor.html#gotoRealZero">gotoRealZero</a></li><li data-type="method" id="AbsoluteMotor-resetZero-nav"><a href="AbsoluteMotor.html#resetZero">resetZero</a></li><li data-type="method" id="AbsoluteMotor-rotateByDegrees-nav"><a href="AbsoluteMotor.html#rotateByDegrees">rotateByDegrees</a></li><li data-type="method" id="AbsoluteMotor-setAccelerationTime-nav"><a href="AbsoluteMotor.html#setAccelerationTime">setAccelerationTime</a></li><li data-type="method" id="AbsoluteMotor-setBrakingStyle-nav"><a href="AbsoluteMotor.html#setBrakingStyle">setBrakingStyle</a></li><li data-type="method" id="AbsoluteMotor-setDecelerationTime-nav"><a href="AbsoluteMotor.html#setDecelerationTime">setDecelerationTime</a></li><li data-type="method" id="AbsoluteMotor-setMaxPower-nav"><a href="AbsoluteMotor.html#setMaxPower">setMaxPower</a></li><li data-type="method" id="AbsoluteMotor-setSpeed-nav"><a href="AbsoluteMotor.html#setSpeed">setSpeed</a></li></ul></li><li id="BaseHub-nav"><a href="BaseHub.html">BaseHub</a></li><li id="BasicMotor-nav"><a href="BasicMotor.html">BasicMotor</a><ul class='methods'><li data-type="method" id="BasicMotor-brake-nav"><a href="BasicMotor.html#brake">brake</a></li><li data-type="method" id="BasicMotor-rampPower-nav"><a href="BasicMotor.html#rampPower">rampPower</a></li><li data-type="method" id="BasicMotor-setPower-nav"><a href="BasicMotor.html#setPower">setPower</a></li><li data-type="method" id="BasicMotor-stop-nav"><a href="BasicMotor.html#stop">stop</a></li></ul></li><li id="ColorDistanceSensor-nav"><a href="ColorDistanceSensor.html">ColorDistanceSensor</a><ul class='methods'><li data-type="method" id="ColorDistanceSensor-sendPFIRMessage-nav"><a href="ColorDistanceSensor.html#sendPFIRMessage">sendPFIRMessage</a></li><li data-type="method" id="ColorDistanceSensor-setColor-nav"><a href="ColorDistanceSensor.html#setColor">setColor</a></li><li data-type="method" id="ColorDistanceSensor-setDistanceCount-nav"><a href="ColorDistanceSensor.html#setDistanceCount">setDistanceCount</a></li><li data-type="method" id="ColorDistanceSensor-setPFExtendedChannel-nav"><a href="ColorDistanceSensor.html#setPFExtendedChannel">setPFExtendedChannel</a></li><li data-type="method" id="ColorDistanceSensor-setPFPower-nav"><a href="ColorDistanceSensor.html#setPFPower">setPFPower</a></li><li data-type="method" id="ColorDistanceSensor-startPFMotors-nav"><a href="ColorDistanceSensor.html#startPFMotors">startPFMotors</a></li></ul></li><li id="CurrentSensor-nav"><a href="CurrentSensor.html">CurrentSensor</a></li><li id="Device-nav"><a href="Device.html">Device</a></li><li id="DuploTrainBase-nav"><a href="DuploTrainBase.html">DuploTrainBase</a><ul class='methods'><li data-type="method" id="DuploTrainBase-createVirtualPort-nav"><a href="DuploTrainBase.html#createVirtualPort">createVirtualPort</a></li><li data-type="method" id="DuploTrainBase-setName-nav"><a href="DuploTrainBase.html#setName">setName</a></li><li data-type="method" id="DuploTrainBase-shutdown-nav"><a href="DuploTrainBase.html#shutdown">shutdown</a></li></ul></li><li id="DuploTrainBaseColorSensor-nav"><a href="DuploTrainBaseColorSensor.html">DuploTrainBaseColorSensor</a></li><li id="DuploTrainBaseMotor-nav"><a href="DuploTrainBaseMotor.html">DuploTrainBaseMotor</a><ul class='methods'><li data-type="method" id="DuploTrainBaseMotor-brake-nav"><a href="DuploTrainBaseMotor.html#brake">brake</a></li><li data-type="method" id="DuploTrainBaseMotor-rampPower-nav"><a href="DuploTrainBaseMotor.html#rampPower">rampPower</a></li><li data-type="method" id="DuploTrainBaseMotor-setPower-nav"><a href="DuploTrainBaseMotor.html#setPower">setPower</a></li><li data-type="method" id="DuploTrainBaseMotor-stop-nav"><a href="DuploTrainBaseMotor.html#stop">stop</a></li></ul></li><li id="DuploTrainBaseSpeaker-nav"><a href="DuploTrainBaseSpeaker.html">DuploTrainBaseSpeaker</a><ul class='methods'><li data-type="method" id="DuploTrainBaseSpeaker-playSound-nav"><a href="DuploTrainBaseSpeaker.html#playSound">playSound</a></li><li data-type="method" id="DuploTrainBaseSpeaker-playTone-nav"><a href="DuploTrainBaseSpeaker.html#playTone">playTone</a></li></ul></li><li id="DuploTraniBaseSpeedometer-nav"><a href="DuploTraniBaseSpeedometer.html">DuploTraniBaseSpeedometer</a></li><li id="Hub-nav"><a href="Hub.html">Hub</a><ul class='methods'><li data-type="method" id="Hub-connect-nav"><a href="Hub.html#connect">connect</a></li><li data-type="method" id="Hub-createVirtualPort-nav"><a href="Hub.html#createVirtualPort">createVirtualPort</a></li><li data-type="method" id="Hub-disconnect-nav"><a href="Hub.html#disconnect">disconnect</a></li><li data-type="method" id="Hub-getDeviceAtPort-nav"><a href="Hub.html#getDeviceAtPort">getDeviceAtPort</a></li><li data-type="method" id="Hub-getDevices-nav"><a href="Hub.html#getDevices">getDevices</a></li><li data-type="method" id="Hub-getDevicesByType-nav"><a href="Hub.html#getDevicesByType">getDevicesByType</a></li><li data-type="method" id="Hub-setName-nav"><a href="Hub.html#setName">setName</a></li><li data-type="method" id="Hub-shutdown-nav"><a href="Hub.html#shutdown">shutdown</a></li><li data-type="method" id="Hub-sleep-nav"><a href="Hub.html#sleep">sleep</a></li><li data-type="method" id="Hub-wait-nav"><a href="Hub.html#wait">wait</a></li><li data-type="method" id="Hub-waitForDeviceAtPort-nav"><a href="Hub.html#waitForDeviceAtPort">waitForDeviceAtPort</a></li><li data-type="method" id="Hub-waitForDeviceByType-nav"><a href="Hub.html#waitForDeviceByType">waitForDeviceByType</a></li></ul></li><li id="HubLED-nav"><a href="HubLED.html">HubLED</a><ul class='methods'><li data-type="method" id="HubLED-setColor-nav"><a href="HubLED.html#setColor">setColor</a></li><li data-type="method" id="HubLED-setRGB-nav"><a href="HubLED.html#setRGB">setRGB</a></li></ul></li><li id="Light-nav"><a href="Light.html">Light</a><ul class='methods'><li data-type="method" id="Light-rampBrightness-nav"><a href="Light.html#rampBrightness">rampBrightness</a></li><li data-type="method" id="Light-setBrightness-nav"><a href="Light.html#setBrightness">setBrightness</a></li></ul></li><li id="LPF2Hub-nav"><a href="LPF2Hub.html">LPF2Hub</a><ul class='methods'><li data-type="method" id="LPF2Hub-createVirtualPort-nav"><a href="LPF2Hub.html#createVirtualPort">createVirtualPort</a></li><li data-type="method" id="LPF2Hub-setName-nav"><a href="LPF2Hub.html#setName">setName</a></li><li data-type="method" id="LPF2Hub-shutdown-nav"><a href="LPF2Hub.html#shutdown">shutdown</a></li></ul></li><li id="Mario-nav"><a href="Mario.html">Mario</a><ul class='methods'><li data-type="method" id="Mario-createVirtualPort-nav"><a href="Mario.html#createVirtualPort">createVirtualPort</a></li><li data-type="method" id="Mario-setName-nav"><a href="Mario.html#setName">setName</a></li><li data-type="method" id="Mario-shutdown-nav"><a href="Mario.html#shutdown">shutdown</a></li></ul></li><li id="MarioAccelerometer-nav"><a href="MarioAccelerometer.html">MarioAccelerometer</a></li><li id="MarioBarcodeSensor-nav"><a href="MarioBarcodeSensor.html">MarioBarcodeSensor</a></li><li id="MarioPantsSensor-nav"><a href="MarioPantsSensor.html">MarioPantsSensor</a></li><li id="MediumLinearMotor-nav"><a href="MediumLinearMotor.html">MediumLinearMotor</a><ul class='methods'><li data-type="method" id="MediumLinearMotor-rotateByDegrees-nav"><a href="MediumLinearMotor.html#rotateByDegrees">rotateByDegrees</a></li><li data-type="method" id="MediumLinearMotor-setAccelerationTime-nav"><a href="MediumLinearMotor.html#setAccelerationTime">setAccelerationTime</a></li><li data-type="method" id="MediumLinearMotor-setBrakingStyle-nav"><a href="MediumLinearMotor.html#setBrakingStyle">setBrakingStyle</a></li><li data-type="method" id="MediumLinearMotor-setDecelerationTime-nav"><a href="MediumLinearMotor.html#setDecelerationTime">setDecelerationTime</a></li><li data-type="method" id="MediumLinearMotor-setMaxPower-nav"><a href="MediumLinearMotor.html#setMaxPower">setMaxPower</a></li><li data-type="method" id="MediumLinearMotor-setSpeed-nav"><a href="MediumLinearMotor.html#setSpeed">setSpeed</a></li></ul></li><li id="MotionSensor-nav"><a href="MotionSensor.html">MotionSensor</a></li><li id="MoveHub-nav"><a href="MoveHub.html">MoveHub</a><ul class='methods'><li data-type="method" id="MoveHub-createVirtualPort-nav"><a href="MoveHub.html#createVirtualPort">createVirtualPort</a></li><li data-type="method" id="MoveHub-setName-nav"><a href="MoveHub.html#setName">setName</a></li><li data-type="method" id="MoveHub-shutdown-nav"><a href="MoveHub.html#shutdown">shutdown</a></li></ul></li><li id="MoveHubMediumLinearMotor-nav"><a href="MoveHubMediumLinearMotor.html">MoveHubMediumLinearMotor</a><ul class='methods'><li data-type="method" id="MoveHubMediumLinearMotor-rotateByDegrees-nav"><a href="MoveHubMediumLinearMotor.html#rotateByDegrees">rotateByDegrees</a></li><li data-type="method" id="MoveHubMediumLinearMotor-setAccelerationTime-nav"><a href="MoveHubMediumLinearMotor.html#setAccelerationTime">setAccelerationTime</a></li><li data-type="method" id="MoveHubMediumLinearMotor-setBrakingStyle-nav"><a href="MoveHubMediumLinearMotor.html#setBrakingStyle">setBrakingStyle</a></li><li data-type="method" id="MoveHubMediumLinearMotor-setDecelerationTime-nav"><a href="MoveHubMediumLinearMotor.html#setDecelerationTime">setDecelerationTime</a></li><li data-type="method" id="MoveHubMediumLinearMotor-setMaxPower-nav"><a href="MoveHubMediumLinearMotor.html#setMaxPower">setMaxPower</a></li><li data-type="method" id="MoveHubMediumLinearMotor-setSpeed-nav"><a href="MoveHubMediumLinearMotor.html#setSpeed">setSpeed</a></li></ul></li><li id="MoveHubTiltSensor-nav"><a href="MoveHubTiltSensor.html">MoveHubTiltSensor</a></li><li id="PiezoBuzzer-nav"><a href="PiezoBuzzer.html">PiezoBuzzer</a><ul class='methods'><li data-type="method" id="PiezoBuzzer-playTone-nav"><a href="PiezoBuzzer.html#playTone">playTone</a></li></ul></li><li id="PoweredUP-nav"><a href="PoweredUP.html">PoweredUP</a><ul class='methods'><li data-type="method" id="PoweredUP-getHubByPrimaryMACAddress-nav"><a href="PoweredUP.html#getHubByPrimaryMACAddress">getHubByPrimaryMACAddress</a></li><li data-type="method" id="PoweredUP-getHubByPrimaryMACAddress-nav"><a href="PoweredUP.html#getHubByPrimaryMACAddress">getHubByPrimaryMACAddress</a></li><li data-type="method" id="PoweredUP-getHubByUUID-nav"><a href="PoweredUP.html#getHubByUUID">getHubByUUID</a></li><li data-type="method" id="PoweredUP-getHubByUUID-nav"><a href="PoweredUP.html#getHubByUUID">getHubByUUID</a></li><li data-type="method" id="PoweredUP-getHubs-nav"><a href="PoweredUP.html#getHubs">getHubs</a></li><li data-type="method" id="PoweredUP-getHubs-nav"><a href="PoweredUP.html#getHubs">getHubs</a></li><li data-type="method" id="PoweredUP-getHubsByName-nav"><a href="PoweredUP.html#getHubsByName">getHubsByName</a></li><li data-type="method" id="PoweredUP-getHubsByName-nav"><a href="PoweredUP.html#getHubsByName">getHubsByName</a></li><li data-type="method" id="PoweredUP-getHubsByType-nav"><a href="PoweredUP.html#getHubsByType">getHubsByType</a></li><li data-type="method" id="PoweredUP-getHubsByType-nav"><a href="PoweredUP.html#getHubsByType">getHubsByType</a></li><li data-type="method" id="PoweredUP-scan-nav"><a href="PoweredUP.html#scan">scan</a></li><li data-type="method" id="PoweredUP-scan-nav"><a href="PoweredUP.html#scan">scan</a></li><li data-type="method" id="PoweredUP-stop-nav"><a href="PoweredUP.html#stop">stop</a></li></ul></li><li id="RemoteControl-nav"><a href="RemoteControl.html">RemoteControl</a><ul class='methods'><li data-type="method" id="RemoteControl-createVirtualPort-nav"><a href="RemoteControl.html#createVirtualPort">createVirtualPort</a></li><li data-type="method" id="RemoteControl-setName-nav"><a href="RemoteControl.html#setName">setName</a></li><li data-type="method" id="RemoteControl-shutdown-nav"><a href="RemoteControl.html#shutdown">shutdown</a></li></ul></li><li id="RemoteControlButton-nav"><a href="RemoteControlButton.html">RemoteControlButton</a></li><li id="SimpleMediumLinearMotor-nav"><a href="SimpleMediumLinearMotor.html">SimpleMediumLinearMotor</a></li><li id="TachoMotor-nav"><a href="TachoMotor.html">TachoMotor</a><ul class='methods'><li data-type="method" id="TachoMotor-brake-nav"><a href="TachoMotor.html#brake">brake</a></li><li data-type="method" id="TachoMotor-rampPower-nav"><a href="TachoMotor.html#rampPower">rampPower</a></li><li data-type="method" id="TachoMotor-rotateByDegrees-nav"><a href="TachoMotor.html#rotateByDegrees">rotateByDegrees</a></li><li data-type="method" id="TachoMotor-setAccelerationTime-nav"><a href="TachoMotor.html#setAccelerationTime">setAccelerationTime</a></li><li data-type="method" id="TachoMotor-setBrakingStyle-nav"><a href="TachoMotor.html#setBrakingStyle">setBrakingStyle</a></li><li data-type="method" id="TachoMotor-setDecelerationTime-nav"><a href="TachoMotor.html#setDecelerationTime">setDecelerationTime</a></li><li data-type="method" id="TachoMotor-setMaxPower-nav"><a href="TachoMotor.html#setMaxPower">setMaxPower</a></li><li data-type="method" id="TachoMotor-setPower-nav"><a href="TachoMotor.html#setPower">setPower</a></li><li data-type="method" id="TachoMotor-setSpeed-nav"><a href="TachoMotor.html#setSpeed">setSpeed</a></li><li data-type="method" id="TachoMotor-stop-nav"><a href="TachoMotor.html#stop">stop</a></li></ul></li><li id="Technic3x3ColorLightMatrix-nav"><a href="Technic3x3ColorLightMatrix.html">Technic3x3ColorLightMatrix</a><ul class='methods'><li data-type="method" id="Technic3x3ColorLightMatrix-setMatrix-nav"><a href="Technic3x3ColorLightMatrix.html#setMatrix">setMatrix</a></li></ul></li><li id="TechnicColorSensor-nav"><a href="TechnicColorSensor.html">TechnicColorSensor</a><ul class='methods'><li data-type="method" id="TechnicColorSensor-setBrightness-nav"><a href="TechnicColorSensor.html#setBrightness">setBrightness</a></li></ul></li><li id="TechnicDistanceSensor-nav"><a href="TechnicDistanceSensor.html">TechnicDistanceSensor</a><ul class='methods'><li data-type="method" id="TechnicDistanceSensor-setBrightness-nav"><a href="TechnicDistanceSensor.html#setBrightness">setBrightness</a></li></ul></li><li id="TechnicForceSensor-nav"><a href="TechnicForceSensor.html">TechnicForceSensor</a></li><li id="TechnicLargeAngularMotor-nav"><a href="TechnicLargeAngularMotor.html">TechnicLargeAngularMotor</a><ul class='methods'><li data-type="method" id="TechnicLargeAngularMotor-gotoAngle-nav"><a href="TechnicLargeAngularMotor.html#gotoAngle">gotoAngle</a></li><li data-type="method" id="TechnicLargeAngularMotor-gotoRealZero-nav"><a href="TechnicLargeAngularMotor.html#gotoRealZero">gotoRealZero</a></li><li data-type="method" id="TechnicLargeAngularMotor-resetZero-nav"><a href="TechnicLargeAngularMotor.html#resetZero">resetZero</a></li><li data-type="method" id="TechnicLargeAngularMotor-rotateByDegrees-nav"><a href="TechnicLargeAngularMotor.html#rotateByDegrees">rotateByDegrees</a></li><li data-type="method" id="TechnicLargeAngularMotor-setAccelerationTime-nav"><a href="TechnicLargeAngularMotor.html#setAccelerationTime">setAccelerationTime</a></li><li data-type="method" id="TechnicLargeAngularMotor-setBrakingStyle-nav"><a href="TechnicLargeAngularMotor.html#setBrakingStyle">setBrakingStyle</a></li><li data-type="method" id="TechnicLargeAngularMotor-setDecelerationTime-nav"><a href="TechnicLargeAngularMotor.html#setDecelerationTime">setDecelerationTime</a></li><li data-type="method" id="TechnicLargeAngularMotor-setMaxPower-nav"><a href="TechnicLargeAngularMotor.html#setMaxPower">setMaxPower</a></li><li data-type="method" id="TechnicLargeAngularMotor-setSpeed-nav"><a href="TechnicLargeAngularMotor.html#setSpeed">setSpeed</a></li></ul></li><li id="TechnicLargeLinearMotor-nav"><a href="TechnicLargeLinearMotor.html">TechnicLargeLinearMotor</a><ul class='methods'><li data-type="method" id="TechnicLargeLinearMotor-gotoAngle-nav"><a href="TechnicLargeLinearMotor.html#gotoAngle">gotoAngle</a></li><li data-type="method" id="TechnicLargeLinearMotor-gotoRealZero-nav"><a href="TechnicLargeLinearMotor.html#gotoRealZero">gotoRealZero</a></li><li data-type="method" id="TechnicLargeLinearMotor-resetZero-nav"><a href="TechnicLargeLinearMotor.html#resetZero">resetZero</a></li><li data-type="method" id="TechnicLargeLinearMotor-rotateByDegrees-nav"><a href="TechnicLargeLinearMotor.html#rotateByDegrees">rotateByDegrees</a></li><li data-type="method" id="TechnicLargeLinearMotor-setAccelerationTime-nav"><a href="TechnicLargeLinearMotor.html#setAccelerationTime">setAccelerationTime</a></li><li data-type="method" id="TechnicLargeLinearMotor-setBrakingStyle-nav"><a href="TechnicLargeLinearMotor.html#setBrakingStyle">setBrakingStyle</a></li><li data-type="method" id="TechnicLargeLinearMotor-setDecelerationTime-nav"><a href="TechnicLargeLinearMotor.html#setDecelerationTime">setDecelerationTime</a></li><li data-type="method" id="TechnicLargeLinearMotor-setMaxPower-nav"><a href="TechnicLargeLinearMotor.html#setMaxPower">setMaxPower</a></li><li data-type="method" id="TechnicLargeLinearMotor-setSpeed-nav"><a href="TechnicLargeLinearMotor.html#setSpeed">setSpeed</a></li></ul></li><li id="TechnicMediumAngularMotor-nav"><a href="TechnicMediumAngularMotor.html">TechnicMediumAngularMotor</a><ul class='methods'><li data-type="method" id="TechnicMediumAngularMotor-gotoAngle-nav"><a href="TechnicMediumAngularMotor.html#gotoAngle">gotoAngle</a></li><li data-type="method" id="TechnicMediumAngularMotor-gotoRealZero-nav"><a href="TechnicMediumAngularMotor.html#gotoRealZero">gotoRealZero</a></li><li data-type="method" id="TechnicMediumAngularMotor-resetZero-nav"><a href="TechnicMediumAngularMotor.html#resetZero">resetZero</a></li><li data-type="method" id="TechnicMediumAngularMotor-rotateByDegrees-nav"><a href="TechnicMediumAngularMotor.html#rotateByDegrees">rotateByDegrees</a></li><li data-type="method" id="TechnicMediumAngularMotor-setAccelerationTime-nav"><a href="TechnicMediumAngularMotor.html#setAccelerationTime">setAccelerationTime</a></li><li data-type="method" id="TechnicMediumAngularMotor-setBrakingStyle-nav"><a href="TechnicMediumAngularMotor.html#setBrakingStyle">setBrakingStyle</a></li><li data-type="method" id="TechnicMediumAngularMotor-setDecelerationTime-nav"><a href="TechnicMediumAngularMotor.html#setDecelerationTime">setDecelerationTime</a></li><li data-type="method" id="TechnicMediumAngularMotor-setMaxPower-nav"><a href="TechnicMediumAngularMotor.html#setMaxPower">setMaxPower</a></li><li data-type="method" id="TechnicMediumAngularMotor-setSpeed-nav"><a href="TechnicMediumAngularMotor.html#setSpeed">setSpeed</a></li></ul></li><li id="TechnicMediumHub-nav"><a href="TechnicMediumHub.html">TechnicMediumHub</a><ul class='methods'><li data-type="method" id="TechnicMediumHub-createVirtualPort-nav"><a href="TechnicMediumHub.html#createVirtualPort">createVirtualPort</a></li><li data-type="method" id="TechnicMediumHub-setName-nav"><a href="TechnicMediumHub.html#setName">setName</a></li><li data-type="method" id="TechnicMediumHub-shutdown-nav"><a href="TechnicMediumHub.html#shutdown">shutdown</a></li></ul></li><li id="TechnicMediumHubAccelerometerSensor-nav"><a href="TechnicMediumHubAccelerometerSensor.html">TechnicMediumHubAccelerometerSensor</a></li><li id="TechnicMediumHubGyroSensor-nav"><a href="TechnicMediumHubGyroSensor.html">TechnicMediumHubGyroSensor</a></li><li id="TechnicMediumHubTiltSensor-nav"><a href="TechnicMediumHubTiltSensor.html">TechnicMediumHubTiltSensor</a><ul class='methods'><li data-type="method" id="TechnicMediumHubTiltSensor-setImpactCount-nav"><a href="TechnicMediumHubTiltSensor.html#setImpactCount">setImpactCount</a></li><li data-type="method" id="TechnicMediumHubTiltSensor-setImpactHoldoff-nav"><a href="TechnicMediumHubTiltSensor.html#setImpactHoldoff">setImpactHoldoff</a></li><li data-type="method" id="TechnicMediumHubTiltSensor-setImpactThreshold-nav"><a href="TechnicMediumHubTiltSensor.html#setImpactThreshold">setImpactThreshold</a></li></ul></li><li id="TechnicSmallAngularMotor-nav"><a href="TechnicSmallAngularMotor.html">TechnicSmallAngularMotor</a><ul class='methods'><li data-type="method" id="TechnicSmallAngularMotor-gotoAngle-nav"><a href="TechnicSmallAngularMotor.html#gotoAngle">gotoAngle</a></li><li data-type="method" id="TechnicSmallAngularMotor-gotoRealZero-nav"><a href="TechnicSmallAngularMotor.html#gotoRealZero">gotoRealZero</a></li><li data-type="method" id="TechnicSmallAngularMotor-resetZero-nav"><a href="TechnicSmallAngularMotor.html#resetZero">resetZero</a></li><li data-type="method" id="TechnicSmallAngularMotor-rotateByDegrees-nav"><a href="TechnicSmallAngularMotor.html#rotateByDegrees">rotateByDegrees</a></li><li data-type="method" id="TechnicSmallAngularMotor-setAccelerationTime-nav"><a href="TechnicSmallAngularMotor.html#setAccelerationTime">setAccelerationTime</a></li><li data-type="method" id="TechnicSmallAngularMotor-setBrakingStyle-nav"><a href="TechnicSmallAngularMotor.html#setBrakingStyle">setBrakingStyle</a></li><li data-type="method" id="TechnicSmallAngularMotor-setDecelerationTime-nav"><a href="TechnicSmallAngularMotor.html#setDecelerationTime">setDecelerationTime</a></li><li data-type="method" id="TechnicSmallAngularMotor-setMaxPower-nav"><a href="TechnicSmallAngularMotor.html#setMaxPower">setMaxPower</a></li><li data-type="method" id="TechnicSmallAngularMotor-setSpeed-nav"><a href="TechnicSmallAngularMotor.html#setSpeed">setSpeed</a></li></ul></li><li id="TechnicXLargeLinearMotor-nav"><a href="TechnicXLargeLinearMotor.html">TechnicXLargeLinearMotor</a><ul class='methods'><li data-type="method" id="TechnicXLargeLinearMotor-gotoAngle-nav"><a href="TechnicXLargeLinearMotor.html#gotoAngle">gotoAngle</a></li><li data-type="method" id="TechnicXLargeLinearMotor-gotoRealZero-nav"><a href="TechnicXLargeLinearMotor.html#gotoRealZero">gotoRealZero</a></li><li data-type="method" id="TechnicXLargeLinearMotor-resetZero-nav"><a href="TechnicXLargeLinearMotor.html#resetZero">resetZero</a></li><li data-type="method" id="TechnicXLargeLinearMotor-rotateByDegrees-nav"><a href="TechnicXLargeLinearMotor.html#rotateByDegrees">rotateByDegrees</a></li><li data-type="method" id="TechnicXLargeLinearMotor-setAccelerationTime-nav"><a href="TechnicXLargeLinearMotor.html#setAccelerationTime">setAccelerationTime</a></li><li data-type="method" id="TechnicXLargeLinearMotor-setBrakingStyle-nav"><a href="TechnicXLargeLinearMotor.html#setBrakingStyle">setBrakingStyle</a></li><li data-type="method" id="TechnicXLargeLinearMotor-setDecelerationTime-nav"><a href="TechnicXLargeLinearMotor.html#setDecelerationTime">setDecelerationTime</a></li><li data-type="method" id="TechnicXLargeLinearMotor-setMaxPower-nav"><a href="TechnicXLargeLinearMotor.html#setMaxPower">setMaxPower</a></li><li data-type="method" id="TechnicXLargeLinearMotor-setSpeed-nav"><a href="TechnicXLargeLinearMotor.html#setSpeed">setSpeed</a></li></ul></li><li id="TiltSensor-nav"><a href="TiltSensor.html">TiltSensor</a></li><li id="TrainMotor-nav"><a href="TrainMotor.html">TrainMotor</a><ul class='methods'><li data-type="method" id="TrainMotor-brake-nav"><a href="TrainMotor.html#brake">brake</a></li><li data-type="method" id="TrainMotor-rampPower-nav"><a href="TrainMotor.html#rampPower">rampPower</a></li><li data-type="method" id="TrainMotor-setPower-nav"><a href="TrainMotor.html#setPower">setPower</a></li><li data-type="method" id="TrainMotor-stop-nav"><a href="TrainMotor.html#stop">stop</a></li></ul></li><li id="VoltageSensor-nav"><a href="VoltageSensor.html">VoltageSensor</a></li><li id="WeDo2SmartHub-nav"><a href="WeDo2SmartHub.html">WeDo2SmartHub</a><ul class='methods'><li data-type="method" id="WeDo2SmartHub-setName-nav"><a href="WeDo2SmartHub.html#setName">setName</a></li><li data-type="method" id="WeDo2SmartHub-shutdown-nav"><a href="WeDo2SmartHub.html#shutdown">shutdown</a></li></ul></li></ul><h3 id="global-nav"><a href="global.html">Global</a></h3>
77
+ </nav>
85
78
 
79
+ <div id="main">
80
+
86
81
 
82
+
83
+
87
84
 
88
-
89
-
90
85
 
91
86
 
87
+
92
88
 
89
+
93
90
 
94
91
 
95
- <section class="readme-section">
96
- <article><p><a href="https://drone.kellenicki.com/nkellenicki/node-poweredup"><img src="https://drone.kellenicki.com/api/badges/nkellenicki/node-poweredup/status.svg" alt="Drone"></a><br>
97
- <a href="https://www.npmjs.com/package/node-poweredup"><img src="https://img.shields.io/npm/v/node-poweredup.svg?style=flat" alt="NPM Version"></a></p>
92
+ <section class="readme">
93
+ <article>
94
+ <p><a href="https://drone.kellenicki.com/nkellenicki/node-poweredup"><img src="https://drone.kellenicki.com/api/badges/nkellenicki/node-poweredup/status.svg" alt="Drone"></a><br>
95
+ <a href="https://www.npmjs.com/package/node-poweredup"><img src="https://img.shields.io/npm/v/node-poweredup.svg?style=flat" alt="NPM Version"></a><br>
96
+ <a href="https://nathan.kellenicki.com/node-poweredup/"><img src="https://img.shields.io/badge/docs-start%20here-yellowgreen.svg" alt="Docs"></a></p>
98
97
  <h1><strong>node-poweredup</strong> - A Javascript module to interface with LEGO Powered Up components.</h1>
99
98
  <h3>Announcements</h3>
100
99
  <ul>
101
- <li>v6.8.0 adds support for LEGO Super Mario.</li>
100
+ <li>v7.1.0 adds support for SPIKE Essential, including the Technic Small Hub, Technic Small Angular Motor, and Technic 3x3 Color Matrix.</li>
102
101
  </ul>
103
102
  <h3>Introduction</h3>
104
103
  <p>LEGO Powered Up is the successor to Power Functions, the system for adding electronics to LEGO models. Powered Up is a collection of ranges, all of which are compatible with each other:</p>
@@ -108,12 +107,46 @@
108
107
  <li>LEGO Powered Up</li>
109
108
  <li>LEGO Technic CONTROL+</li>
110
109
  <li>LEGO Education SPIKE Prime</li>
110
+ <li>LEGO Education SPIKE Essential</li>
111
111
  <li>LEGO Mindstorms Robot Inventor</li>
112
112
  </ul>
113
113
  <p>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.</p>
114
114
  <p>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.</p>
115
+ <h3>Sample Usage</h3>
116
+ <pre class="prettyprint source lang-javascript"><code>const PoweredUP = require(&quot;node-poweredup&quot;);
117
+ const poweredUP = new PoweredUP.PoweredUP();
118
+
119
+ poweredUP.on(&quot;discover&quot;, async (hub) => { // Wait to discover a Hub
120
+ console.log(`Discovered ${hub.name}!`);
121
+ await hub.connect(); // Connect to the Hub
122
+ const motorA = await hub.waitForDeviceAtPort(&quot;A&quot;); // Make sure a motor is plugged into port A
123
+ const motorB = await hub.waitForDeviceAtPort(&quot;B&quot;); // Make sure a motor is plugged into port B
124
+ console.log(&quot;Connected&quot;);
125
+
126
+ while (true) { // Repeat indefinitely
127
+ console.log(&quot;Running motor B at speed 50&quot;);
128
+ motorB.setPower(50); // Start a motor attached to port B to run a 3/4 speed (75) indefinitely
129
+ console.log(&quot;Running motor A at speed 100 for 2 seconds&quot;);
130
+ motorA.setPower(100); // Run a motor attached to port A for 2 seconds at maximum speed (100) then stop
131
+ await hub.sleep(2000);
132
+ motorA.brake();
133
+ await hub.sleep(1000); // Do nothing for 1 second
134
+ console.log(&quot;Running motor A at speed -30 for 1 second&quot;);
135
+ motorA.setPower(-30); // Run a motor attached to port A for 2 seconds at 1/2 speed in reverse (-50) then stop
136
+ await hub.sleep(2000);
137
+ motorA.brake();
138
+ await hub.sleep(1000); // Do nothing for 1 second
139
+ }
140
+ });
141
+
142
+ poweredUP.scan(); // Start scanning for Hubs
143
+ console.log(&quot;Scanning for Hubs...&quot;);
144
+ </code></pre>
145
+ <p>More examples are available in the &quot;examples&quot; directory.</p>
146
+ <h3>Documentation</h3>
147
+ <p><a href="https://nathankellenicki.github.io/node-poweredup/">Full documentation is available here.</a></p>
115
148
  <h3>Node.js Installation</h3>
116
- <p>Node.js v8.0+ required.</p>
149
+ <p>Node.js v12.0+ required.</p>
117
150
  <pre class="prettyprint source lang-javascript"><code>npm install node-poweredup --save
118
151
  </code></pre>
119
152
  <p>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 <a href="https://github.com/abandonware/noble#prerequisites">certain dependencies which may need installed first</a>.</p>
@@ -274,6 +307,26 @@
274
307
  <td>Yes</td>
275
308
  <td><a href="https://brickset.com/sets/45678-1/">45678</a></td>
276
309
  </tr>
310
+ <tr>
311
+ <td>SPIKE Essential Small Motor</td>
312
+ <td>45607</td>
313
+ <td>Motor/Sensor</td>
314
+ <td><em>Partial</em></td>
315
+ <td>No</td>
316
+ <td>Yes</td>
317
+ <td>Yes</td>
318
+ <td><a href="https://brickset.com/sets/45345-1/">45345</a></td>
319
+ </tr>
320
+ <tr>
321
+ <td>SPIKE Essential 3x3 Color Matrix</td>
322
+ <td>45608</td>
323
+ <td>Motor/Sensor</td>
324
+ <td><em>Partial</em></td>
325
+ <td>No</td>
326
+ <td>Yes</td>
327
+ <td>Yes</td>
328
+ <td><a href="https://brickset.com/sets/45345-1/">45345</a></td>
329
+ </tr>
277
330
  </tbody>
278
331
  </table>
279
332
  <p>In addition, the Hubs themselves have certain built-in features which this library exposes.</p>
@@ -329,6 +382,12 @@
329
382
  <td>Pants Sensor<br />Barcode and Color Sensor</td>
330
383
  <td><a href="https://brickset.com/sets/71360-1/">71360</a></td>
331
384
  </tr>
385
+ <tr>
386
+ <td>SPIKE Essential Hub</td>
387
+ <td>45609</td>
388
+ <td>RGB LED<br />Button<br />Tilt Sensor<br />Accelerometer</td>
389
+ <td><a href="https://brickset.com/sets/45345-1/">45345</a></td>
390
+ </tr>
332
391
  </tbody>
333
392
  </table>
334
393
  <h3>Known Issues and Limitations</h3>
@@ -340,185 +399,33 @@
340
399
  <p>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)</p>
341
400
  </li>
342
401
  <li>
343
- <p>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.</p>
402
+ <p>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.</p>
344
403
  </li>
345
404
  <li>
346
405
  <p>On most Unix systems, you need root permissions to access Bluetooth devices. You may want to <a href="https://github.com/abandonware/noble#running-without-rootsudo-linux-specific">grant the node executable access to the Bluetooth adapter</a></p>
347
406
  </li>
348
407
  </ul>
349
- <h3>Documentation</h3>
350
- <p><a href="https://nathankellenicki.github.io/node-poweredup/">Full documentation is available here.</a></p>
351
- <h3>Node.js Sample Usage</h3>
352
- <pre class="prettyprint source lang-javascript"><code>const PoweredUP = require(&quot;node-poweredup&quot;);
353
- const poweredUP = new PoweredUP.PoweredUP();
354
-
355
- poweredUP.on(&quot;discover&quot;, async (hub) => { // Wait to discover a Hub
356
- console.log(`Discovered ${hub.name}!`);
357
- await hub.connect(); // Connect to the Hub
358
- const motorA = await hub.waitForDeviceAtPort(&quot;A&quot;); // Make sure a motor is plugged into port A
359
- const motorB = await hub.waitForDeviceAtPort(&quot;B&quot;); // Make sure a motor is plugged into port B
360
- console.log(&quot;Connected&quot;);
361
-
362
- while (true) { // Repeat indefinitely
363
- console.log(&quot;Running motor B at speed 50&quot;);
364
- motorB.setPower(50); // Start a motor attached to port B to run a 3/4 speed (75) indefinitely
365
- console.log(&quot;Running motor A at speed 100 for 2 seconds&quot;);
366
- motorA.setPower(100); // Run a motor attached to port A for 2 seconds at maximum speed (100) then stop
367
- await hub.sleep(2000);
368
- motorA.brake();
369
- await hub.sleep(1000); // Do nothing for 1 second
370
- console.log(&quot;Running motor A at speed -30 for 1 second&quot;);
371
- motorA.setPower(-30); // Run a motor attached to port A for 2 seconds at 1/2 speed in reverse (-50) then stop
372
- await hub.sleep(2000);
373
- motorA.brake();
374
- await hub.sleep(1000); // Do nothing for 1 second
375
- }
376
- });
377
-
378
- poweredUP.scan(); // Start scanning for Hubs
379
- console.log(&quot;Scanning for Hubs...&quot;);
380
- </code></pre>
381
- <p>More examples are available in the &quot;examples&quot; directory.</p>
382
408
  <h3>Credits</h3>
383
- <p>Thanks go to Jorge Pereira (<a href="https://github.com/JorgePe">@JorgePe</a>), Sebastian Raff (<a href="https://github.com/hobbyquaker">@hobbyquaker</a>), Valentin Heun (<a href="https://github.com/vheun">@vheun</a>), Johan Korten (<a href="https://github.com/jakorten">@jakorten</a>), and Andrey Pokhilko (<a href="https://github.com/undera">@undera</a>) for their various works, contributions, and assistance on figuring out the LEGO Boost, WeDo 2.0, and Powered Up protocols.</p></article>
384
- </section>
385
-
386
-
387
-
388
-
389
-
390
-
391
-
392
- </div>
393
- </div>
394
-
395
- <div class="clearfix"></div>
396
-
397
-
398
- <div class="col-md-3">
399
- <div id="toc" class="col-md-3 hidden-xs hidden-sm hidden-md"></div>
400
- </div>
401
-
402
-
403
- </div>
404
- </div>
405
-
406
-
407
- <div class="modal fade" id="searchResults">
408
- <div class="modal-dialog">
409
- <div class="modal-content">
410
- <div class="modal-header">
411
- <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
412
- <h4 class="modal-title">Search results</h4>
413
- </div>
414
- <div class="modal-body"></div>
415
- <div class="modal-footer">
416
- <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
417
- </div>
418
- </div><!-- /.modal-content -->
419
- </div><!-- /.modal-dialog -->
420
- </div>
421
-
422
-
423
- <footer>
424
-
425
-
426
- <span class="copyright">
427
- node-poweredup by Nathan Kellenicki licensed under the MIT license.
428
- </span>
429
-
430
- <span class="jsdoc-message">
431
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.6</a>
432
-
433
- on Tue Apr 6th 2021
434
-
435
- using the <a href="https://github.com/docstrap/docstrap">DocStrap template</a>.
436
- </span>
437
- </footer>
438
-
439
- <script src="scripts/docstrap.lib.js"></script>
440
- <script src="scripts/toc.js"></script>
441
-
442
- <script type="text/javascript" src="scripts/fulltext-search-ui.js"></script>
443
-
444
-
445
- <script>
446
- $( function () {
447
- $( "[id*='$']" ).each( function () {
448
- var $this = $( this );
449
-
450
- $this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
451
- } );
452
-
453
- $( ".tutorial-section pre, .readme-section pre, pre.prettyprint.source" ).each( function () {
454
- var $this = $( this );
455
-
456
- var example = $this.find( "code" );
457
- exampleText = example.html();
458
- var lang = /{@lang (.*?)}/.exec( exampleText );
459
- if ( lang && lang[1] ) {
460
- exampleText = exampleText.replace( lang[0], "" );
461
- example.html( exampleText );
462
- lang = lang[1];
463
- } else {
464
- var langClassMatch = example.parent()[0].className.match(/lang\-(\S+)/);
465
- lang = langClassMatch ? langClassMatch[1] : "javascript";
466
- }
467
-
468
- if ( lang ) {
469
-
470
- $this
471
- .addClass( "sunlight-highlight-" + lang )
472
- .addClass( "linenums" )
473
- .html( example.html() );
474
-
475
- }
476
- } );
477
-
478
- Sunlight.highlightAll( {
479
- lineNumbers : true,
480
- showMenu : true,
481
- enableDoclinks : true
482
- } );
483
-
484
- $.catchAnchorLinks( {
485
- navbarOffset: 10
486
- } );
487
- $( "#toc" ).toc( {
488
- anchorName : function ( i, heading, prefix ) {
489
- return $( heading ).attr( "id" ) || ( prefix + i );
490
- },
491
- selectors : "#toc-content h1,#toc-content h2,#toc-content h3,#toc-content h4",
492
- showAndHide : false,
493
- smoothScrolling: true
494
- } );
495
-
496
- $( "#main span[id^='toc']" ).addClass( "toc-shim" );
497
- $( '.dropdown-toggle' ).dropdown();
498
-
499
- $( "table" ).each( function () {
500
- var $this = $( this );
501
- $this.addClass('table');
502
- } );
503
-
504
- } );
505
- </script>
506
-
409
+ <p>Thanks go to Jorge Pereira (<a href="https://github.com/JorgePe">@JorgePe</a>), Sebastian Raff (<a href="https://github.com/hobbyquaker">@hobbyquaker</a>), Valentin Heun (<a href="https://github.com/vheun">@vheun</a>), Johan Korten (<a href="https://github.com/jakorten">@jakorten</a>), and Andrey Pokhilko (<a href="https://github.com/undera">@undera</a>) for their various works, contributions, and assistance on figuring out the LEGO Boost, WeDo 2.0, and Powered Up protocols.</p>
410
+ </article>
411
+ </section>
507
412
 
508
413
 
509
- <!--Navigation and Symbol Display-->
414
+
510
415
 
511
416
 
512
- <!--Google Analytics-->
417
+ </div>
513
418
 
419
+ <br class="clear">
514
420
 
421
+ <footer>
422
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.7</a>
423
+ </footer>
515
424
 
516
- <script type="text/javascript">
517
- $(document).ready(function() {
518
- SearcherDisplay.init();
519
- });
520
- </script>
425
+ <script src="scripts/linenumber.js"></script>
426
+ <script src="scripts/pagelocation.js"></script>
521
427
 
428
+
522
429
 
523
430
  </body>
524
431
  </html>