node-poweredup 6.10.0 → 8.0.0

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 (314) 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 +8 -9
  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.d.ts +2 -2
  21. package/dist/node/devices/device.js +10 -5
  22. package/dist/node/devices/device.js.map +1 -1
  23. package/dist/node/devices/duplotrainbasecolorsensor.d.ts +2 -1
  24. package/dist/node/devices/duplotrainbasecolorsensor.js +15 -2
  25. package/dist/node/devices/duplotrainbasecolorsensor.js.map +1 -1
  26. package/dist/node/devices/light.js +1 -1
  27. package/dist/node/devices/light.js.map +1 -1
  28. package/dist/node/devices/tachomotor.js +10 -12
  29. package/dist/node/devices/tachomotor.js.map +1 -1
  30. package/dist/node/devices/technic3x3colorlightmatrix.d.ts +22 -0
  31. package/dist/node/devices/technic3x3colorlightmatrix.js +77 -0
  32. package/dist/node/devices/technic3x3colorlightmatrix.js.map +1 -0
  33. package/dist/node/devices/techniccolorsensor.js +2 -1
  34. package/dist/node/devices/techniccolorsensor.js.map +1 -1
  35. package/dist/node/devices/technicmediumhubtiltsensor.d.ts +25 -1
  36. package/dist/node/devices/technicmediumhubtiltsensor.js +70 -2
  37. package/dist/node/devices/technicmediumhubtiltsensor.js.map +1 -1
  38. package/dist/node/devices/technicsmallangularmotor.d.ts +12 -0
  39. package/dist/node/devices/technicsmallangularmotor.js +35 -0
  40. package/dist/node/devices/technicsmallangularmotor.js.map +1 -0
  41. package/dist/node/hubs/basehub.js +4 -0
  42. package/dist/node/hubs/basehub.js.map +1 -1
  43. package/dist/node/hubs/hub.js +1 -1
  44. package/dist/node/hubs/hub.js.map +1 -1
  45. package/dist/node/hubs/lpf2hub.js +19 -21
  46. package/dist/node/hubs/lpf2hub.js.map +1 -1
  47. package/dist/node/hubs/movehub.js +1 -1
  48. package/dist/node/hubs/movehub.js.map +1 -1
  49. package/dist/node/hubs/technicmediumhub.js +1 -1
  50. package/dist/node/hubs/technicmediumhub.js.map +1 -1
  51. package/dist/node/hubs/technicsmallhub.d.ts +18 -0
  52. package/dist/node/hubs/technicsmallhub.js +64 -0
  53. package/dist/node/hubs/technicsmallhub.js.map +1 -0
  54. package/dist/node/index-browser.js +6 -0
  55. package/dist/node/index-browser.js.map +1 -1
  56. package/dist/node/index-node.d.ts +4 -1
  57. package/dist/node/index-node.js +7 -1
  58. package/dist/node/index-node.js.map +1 -1
  59. package/dist/node/poweredup-browser.js +8 -1
  60. package/dist/node/poweredup-browser.js.map +1 -1
  61. package/dist/node/poweredup-node.js +28 -1
  62. package/dist/node/poweredup-node.js.map +1 -1
  63. package/dist/node/utils.d.ts +1 -1
  64. package/dist/node/utils.js +10 -3
  65. package/dist/node/utils.js.map +1 -1
  66. package/docs/AbsoluteMotor.html +1220 -1405
  67. package/docs/BaseHub.html +787 -872
  68. package/docs/BasicMotor.html +923 -1078
  69. package/docs/ColorDistanceSensor.html +2188 -1540
  70. package/docs/CurrentSensor.html +711 -800
  71. package/docs/Device.html +574 -665
  72. package/docs/DuploTrainBase.html +1255 -1375
  73. package/docs/DuploTrainBaseColorSensor.html +1049 -978
  74. package/docs/DuploTrainBaseMotor.html +958 -1113
  75. package/docs/DuploTrainBaseSpeaker.html +793 -916
  76. package/docs/DuploTraniBaseSpeedometer.html +628 -719
  77. package/docs/Hub.html +5621 -2397
  78. package/docs/HubLED.html +831 -944
  79. package/docs/LPF2Hub.html +1215 -1335
  80. package/docs/Light.html +831 -944
  81. package/docs/Mario.html +1255 -1420
  82. package/docs/MarioAccelerometer.html +834 -911
  83. package/docs/MarioBarcodeSensor.html +834 -911
  84. package/docs/MarioPantsSensor.html +711 -800
  85. package/docs/MediumLinearMotor.html +861 -1000
  86. package/docs/MotionSensor.html +711 -800
  87. package/docs/MoveHub.html +1255 -1420
  88. package/docs/MoveHubMediumLinearMotor.html +861 -1000
  89. package/docs/MoveHubTiltSensor.html +730 -814
  90. package/docs/PiezoBuzzer.html +732 -834
  91. package/docs/PoweredUP.html +4322 -0
  92. package/docs/RemoteControl.html +1255 -1420
  93. package/docs/RemoteControlButton.html +711 -800
  94. package/docs/SimpleMediumLinearMotor.html +628 -719
  95. package/docs/TachoMotor.html +1644 -1835
  96. package/docs/Technic3x3ColorLightMatrix.html +1181 -0
  97. package/docs/TechnicColorSensor.html +1008 -1099
  98. package/docs/TechnicDistanceSensor.html +939 -1027
  99. package/docs/TechnicForceSensor.html +883 -968
  100. package/docs/TechnicLargeAngularMotor.html +1254 -1439
  101. package/docs/TechnicLargeLinearMotor.html +1254 -1439
  102. package/docs/TechnicMediumAngularMotor.html +1254 -1439
  103. package/docs/TechnicMediumHub.html +1255 -1420
  104. package/docs/TechnicMediumHubAccelerometerSensor.html +749 -828
  105. package/docs/TechnicMediumHubGyroSensor.html +749 -828
  106. package/docs/TechnicMediumHubTiltSensor.html +1340 -831
  107. package/docs/TechnicSmallAngularMotor.html +2073 -0
  108. package/docs/TechnicXLargeLinearMotor.html +1254 -1439
  109. package/docs/TiltSensor.html +730 -814
  110. package/docs/TrainMotor.html +958 -1113
  111. package/docs/VoltageSensor.html +711 -800
  112. package/docs/WeDo2SmartHub.html +1112 -1221
  113. package/docs/consts.js.html +791 -0
  114. package/docs/devices_absolutemotor.js.html +97 -200
  115. package/docs/devices_basicmotor.js.html +91 -193
  116. package/docs/devices_colordistancesensor.js.html +184 -193
  117. package/docs/devices_currentsensor.js.html +89 -191
  118. package/docs/devices_device.js.html +99 -196
  119. package/docs/devices_duplotrainbasecolorsensor.js.html +104 -193
  120. package/docs/devices_duplotrainbasemotor.js.html +92 -194
  121. package/docs/devices_duplotrainbasespeaker.js.html +89 -191
  122. package/docs/devices_duplotrainbasespeedometer.js.html +89 -191
  123. package/docs/devices_hubled.js.html +89 -191
  124. package/docs/devices_light.js.html +90 -192
  125. package/docs/devices_marioaccelerometer.js.html +89 -191
  126. package/docs/devices_mariobarcodesensor.js.html +89 -191
  127. package/docs/devices_mariopantssensor.js.html +89 -191
  128. package/docs/devices_mediumlinearmotor.js.html +92 -194
  129. package/docs/devices_motionsensor.js.html +89 -191
  130. package/docs/devices_movehubmediumlinearmotor.js.html +92 -194
  131. package/docs/devices_movehubtiltsensor.js.html +89 -191
  132. package/docs/devices_piezobuzzer.js.html +89 -191
  133. package/docs/devices_remotecontrolbutton.js.html +89 -191
  134. package/docs/devices_simplemediumlinearmotor.js.html +92 -194
  135. package/docs/devices_tachomotor.js.html +99 -203
  136. package/docs/devices_technic3x3colorlightmatrix.js.html +190 -0
  137. package/docs/devices_techniccolorsensor.js.html +91 -192
  138. package/docs/devices_technicdistancesensor.js.html +89 -191
  139. package/docs/devices_technicforcesensor.js.html +89 -191
  140. package/docs/devices_techniclargeangularmotor.js.html +92 -194
  141. package/docs/devices_techniclargelinearmotor.js.html +92 -194
  142. package/docs/devices_technicmediumangularmotor.js.html +92 -194
  143. package/docs/devices_technicmediumhubaccelerometersensor.js.html +89 -191
  144. package/docs/devices_technicmediumhubgyrosensor.js.html +89 -191
  145. package/docs/devices_technicmediumhubtiltsensor.js.html +159 -193
  146. package/docs/devices_technicsmallangularmotor.js.html +148 -0
  147. package/docs/devices_technicxlargelinearmotor.js.html +92 -194
  148. package/docs/devices_tiltsensor.js.html +89 -191
  149. package/docs/devices_trainmotor.js.html +92 -194
  150. package/docs/devices_voltagesensor.js.html +89 -191
  151. package/docs/fonts/OpenSans-Bold-webfont.eot +0 -0
  152. package/docs/fonts/OpenSans-Bold-webfont.svg +1830 -0
  153. package/docs/fonts/OpenSans-Bold-webfont.woff +0 -0
  154. package/docs/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  155. package/docs/fonts/OpenSans-BoldItalic-webfont.svg +1830 -0
  156. package/docs/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  157. package/docs/fonts/OpenSans-Italic-webfont.eot +0 -0
  158. package/docs/fonts/OpenSans-Italic-webfont.svg +1830 -0
  159. package/docs/fonts/OpenSans-Italic-webfont.woff +0 -0
  160. package/docs/fonts/OpenSans-Light-webfont.eot +0 -0
  161. package/docs/fonts/OpenSans-Light-webfont.svg +1831 -0
  162. package/docs/fonts/OpenSans-Light-webfont.woff +0 -0
  163. package/docs/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  164. package/docs/fonts/OpenSans-LightItalic-webfont.svg +1835 -0
  165. package/docs/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  166. package/docs/fonts/OpenSans-Regular-webfont.eot +0 -0
  167. package/docs/fonts/OpenSans-Regular-webfont.svg +1831 -0
  168. package/docs/fonts/OpenSans-Regular-webfont.woff +0 -0
  169. package/docs/fonts/OpenSans-Semibold-webfont.eot +0 -0
  170. package/docs/fonts/OpenSans-Semibold-webfont.svg +1830 -0
  171. package/docs/fonts/OpenSans-Semibold-webfont.ttf +0 -0
  172. package/docs/fonts/OpenSans-Semibold-webfont.woff +0 -0
  173. package/docs/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
  174. package/docs/fonts/OpenSans-SemiboldItalic-webfont.svg +1830 -0
  175. package/docs/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  176. package/docs/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
  177. package/docs/global.html +9829 -0
  178. package/docs/hubs_basehub.js.html +93 -191
  179. package/docs/hubs_duplotrainbase.js.html +89 -191
  180. package/docs/hubs_hub.js.html +90 -192
  181. package/docs/hubs_lpf2hub.js.html +108 -212
  182. package/docs/hubs_mario.js.html +89 -191
  183. package/docs/hubs_movehub.js.html +90 -192
  184. package/docs/hubs_remotecontrol.js.html +89 -191
  185. package/docs/hubs_technicmediumhub.js.html +90 -192
  186. package/docs/hubs_technicsmallhub.js.html +177 -0
  187. package/docs/hubs_wedo2smarthub.js.html +89 -191
  188. package/docs/icons/home.svg +4 -0
  189. package/docs/icons/search.svg +4 -0
  190. package/docs/index.html +143 -236
  191. package/docs/poweredup-browser.js.html +348 -0
  192. package/docs/poweredup-node.js.html +312 -0
  193. package/docs/scripts/linenumber.js +23 -0
  194. package/docs/scripts/pagelocation.js +89 -0
  195. package/docs/styles/collapse.css +27 -0
  196. package/docs/styles/jsdoc-default.css +953 -0
  197. package/docs/styles/prettify-jsdoc.css +111 -0
  198. package/docs/styles/prettify-tomorrow.css +15 -9
  199. package/jsdoc-template/braintree/CHANGELOG.md +31 -0
  200. package/jsdoc-template/braintree/LICENSE +27 -0
  201. package/jsdoc-template/braintree/README.md +90 -0
  202. package/jsdoc-template/braintree/package.json +39 -0
  203. package/jsdoc-template/braintree/publish.js +675 -0
  204. package/jsdoc-template/braintree/static/fonts/OpenSans-Bold-webfont.eot +0 -0
  205. package/jsdoc-template/braintree/static/fonts/OpenSans-Bold-webfont.svg +1830 -0
  206. package/jsdoc-template/braintree/static/fonts/OpenSans-Bold-webfont.woff +0 -0
  207. package/jsdoc-template/braintree/static/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  208. package/jsdoc-template/braintree/static/fonts/OpenSans-BoldItalic-webfont.svg +1830 -0
  209. package/jsdoc-template/braintree/static/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  210. package/jsdoc-template/braintree/static/fonts/OpenSans-Italic-webfont.eot +0 -0
  211. package/jsdoc-template/braintree/static/fonts/OpenSans-Italic-webfont.svg +1830 -0
  212. package/jsdoc-template/braintree/static/fonts/OpenSans-Italic-webfont.woff +0 -0
  213. package/jsdoc-template/braintree/static/fonts/OpenSans-Light-webfont.eot +0 -0
  214. package/jsdoc-template/braintree/static/fonts/OpenSans-Light-webfont.svg +1831 -0
  215. package/jsdoc-template/braintree/static/fonts/OpenSans-Light-webfont.woff +0 -0
  216. package/jsdoc-template/braintree/static/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  217. package/jsdoc-template/braintree/static/fonts/OpenSans-LightItalic-webfont.svg +1835 -0
  218. package/jsdoc-template/braintree/static/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  219. package/jsdoc-template/braintree/static/fonts/OpenSans-Regular-webfont.eot +0 -0
  220. package/jsdoc-template/braintree/static/fonts/OpenSans-Regular-webfont.svg +1831 -0
  221. package/jsdoc-template/braintree/static/fonts/OpenSans-Regular-webfont.woff +0 -0
  222. package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.eot +0 -0
  223. package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.svg +1830 -0
  224. package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.ttf +0 -0
  225. package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.woff +0 -0
  226. package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
  227. package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.svg +1830 -0
  228. package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  229. package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
  230. package/jsdoc-template/braintree/static/icons/home.svg +4 -0
  231. package/jsdoc-template/braintree/static/icons/search.svg +4 -0
  232. package/jsdoc-template/braintree/static/scripts/linenumber.js +23 -0
  233. package/jsdoc-template/braintree/static/scripts/pagelocation.js +89 -0
  234. package/jsdoc-template/braintree/static/styles/collapse.css +27 -0
  235. package/jsdoc-template/braintree/static/styles/jsdoc-default.css +953 -0
  236. package/jsdoc-template/braintree/static/styles/prettify-jsdoc.css +111 -0
  237. package/jsdoc-template/braintree/static/styles/prettify-tomorrow.css +138 -0
  238. package/jsdoc-template/braintree/tmpl/augments.tmpl +10 -0
  239. package/jsdoc-template/braintree/tmpl/container.tmpl +213 -0
  240. package/jsdoc-template/braintree/tmpl/details.tmpl +223 -0
  241. package/jsdoc-template/braintree/tmpl/example.tmpl +2 -0
  242. package/jsdoc-template/braintree/tmpl/examples.tmpl +14 -0
  243. package/jsdoc-template/braintree/tmpl/exceptions.tmpl +28 -0
  244. package/jsdoc-template/braintree/tmpl/layout.tmpl +150 -0
  245. package/jsdoc-template/braintree/tmpl/mainpage.tmpl +9 -0
  246. package/jsdoc-template/braintree/tmpl/members.tmpl +38 -0
  247. package/jsdoc-template/braintree/tmpl/method.tmpl +128 -0
  248. package/jsdoc-template/braintree/tmpl/params.tmpl +125 -0
  249. package/jsdoc-template/braintree/tmpl/properties.tmpl +111 -0
  250. package/jsdoc-template/braintree/tmpl/returns.tmpl +17 -0
  251. package/jsdoc-template/braintree/tmpl/source.tmpl +9 -0
  252. package/jsdoc-template/braintree/tmpl/tutorial.tmpl +23 -0
  253. package/jsdoc-template/braintree/tmpl/type.tmpl +11 -0
  254. package/package.json +14 -15
  255. package/src/color.ts +20 -0
  256. package/src/consts.ts +47 -26
  257. package/src/devices/absolutemotor.ts +2 -3
  258. package/src/devices/colordistancesensor.ts +98 -3
  259. package/src/devices/device.ts +9 -6
  260. package/src/devices/duplotrainbasecolorsensor.ts +17 -2
  261. package/src/devices/tachomotor.ts +4 -6
  262. package/src/devices/technic3x3colorlightmatrix.ts +64 -0
  263. package/src/devices/techniccolorsensor.ts +2 -1
  264. package/src/devices/technicmediumhubtiltsensor.ts +75 -3
  265. package/src/devices/technicsmallangularmotor.ts +17 -0
  266. package/src/hubs/basehub.ts +4 -0
  267. package/src/hubs/lpf2hub.ts +7 -11
  268. package/src/hubs/technicmediumhub.ts +1 -1
  269. package/src/hubs/technicsmallhub.ts +60 -0
  270. package/src/index-browser.ts +6 -0
  271. package/src/index-node.ts +6 -0
  272. package/src/poweredup-browser.ts +8 -1
  273. package/src/poweredup-node.ts +7 -1
  274. package/src/utils.ts +7 -0
  275. package/docs/classes.list.html +0 -8654
  276. package/docs/fonts/glyphicons-halflings-regular.eot +0 -0
  277. package/docs/fonts/glyphicons-halflings-regular.svg +0 -288
  278. package/docs/fonts/glyphicons-halflings-regular.ttf +0 -0
  279. package/docs/fonts/glyphicons-halflings-regular.woff +0 -0
  280. package/docs/fonts/glyphicons-halflings-regular.woff2 +0 -0
  281. package/docs/img/glyphicons-halflings-white.png +0 -0
  282. package/docs/img/glyphicons-halflings.png +0 -0
  283. package/docs/quicksearch.html +0 -31
  284. package/docs/scripts/docstrap.lib.js +0 -11
  285. package/docs/scripts/fulltext-search-ui.js +0 -89
  286. package/docs/scripts/fulltext-search.js +0 -36
  287. package/docs/scripts/lunr.min.js +0 -6
  288. package/docs/scripts/prettify/Apache-License-2.0.txt +0 -202
  289. package/docs/scripts/prettify/jquery.min.js +0 -6
  290. package/docs/scripts/prettify/lang-css.js +0 -21
  291. package/docs/scripts/prettify/prettify.js +0 -496
  292. package/docs/scripts/sunlight.js +0 -1157
  293. package/docs/scripts/toc.js +0 -203
  294. package/docs/styles/darkstrap.css +0 -960
  295. package/docs/styles/site.cerulean.css +0 -7008
  296. package/docs/styles/site.cosmo.css +0 -7061
  297. package/docs/styles/site.cyborg.css +0 -7048
  298. package/docs/styles/site.darkly.css +0 -7171
  299. package/docs/styles/site.darkstrap.css +0 -5638
  300. package/docs/styles/site.dibs-bootstrap.css +0 -5899
  301. package/docs/styles/site.flatly.css +0 -7147
  302. package/docs/styles/site.journal.css +0 -6973
  303. package/docs/styles/site.lumen.css +0 -7298
  304. package/docs/styles/site.paper.css +0 -7623
  305. package/docs/styles/site.readable.css +0 -6997
  306. package/docs/styles/site.sandstone.css +0 -7035
  307. package/docs/styles/site.simplex.css +0 -7023
  308. package/docs/styles/site.slate.css +0 -7343
  309. package/docs/styles/site.spacelab.css +0 -7055
  310. package/docs/styles/site.superhero.css +0 -7131
  311. package/docs/styles/site.united.css +0 -6895
  312. package/docs/styles/site.yeti.css +0 -7195
  313. package/docs/styles/sunlight.dark.css +0 -345
  314. 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>