node-switchbot 3.4.2-beta.1 → 3.4.2-beta.3

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.
@@ -1,9 +1,8 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <!-- Generated by Pixelmator Pro 3.6.9 -->
2
+ <!-- Generated by Pixelmator Pro 3.6.13 -->
3
3
  <svg width="600" height="450" viewBox="0 0 600 450" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
4
4
  <g id="Switchbot">
5
5
  <image id="image1" x="149" y="25" width="302" height="301" xlink:href="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAS4AAAEtCAYAAAC21I3tAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAABLqADAAQAAAABAAABLQAAAAAxPDuQAAA5aUlEQVR4Ae19CXxV1bX3PudOJISEME8Coig0EGZIAtaIAs5Va1uHKvW19b1q26/f+2r7rK0+basdfe3ztXawn3WoQ9VSp6pANWpICDIG4gQyySxDEpKQ3OGc91+HJOQmd77nnHuGtX9s7rnn7GHt/z73n73XXnttSXBgBGIgUFNentc/Ehmh+nz5kqpKPZP0/t7zWSbXqiSpPfPRd4+qtst+/8GSqqqWns/4mhEgBKJeSIbEXQhsKi3tLxcUjIhIUj9ZUWRVVX0gjaF4KSYDiRlCkiaoijJAkiS517tCREPvThTh4Hsmofc7SGVSbEXcibhBkuUGEQ4fFLIcVGRZkSXpRPDEiQOz161rw3MOLkSg90vjQgic3+Q3Kiu9A9vbx0geT38pEgmosjwERFUCEpiF0dMEINAfkcjJixeiCKwx0mKoHIQ8xxDDiArkawHLbgfJrkN8V1KUw6rH06FGIq2N/frtOa+qitJxcDACTFwO7NyGysqCUDg8SoRCwzBamoSRyjyhqmejqUWIfsRCxFGITgj70IhmxCBiE0aJHwhFqcPo8X3h8x3yeb37eLrphG6ObgMTVzQetvymTfny88diyjcWHVqKRsxApJHUUMSxiF5ENwUace1G/ARxO+IGjNLqMeXc6W1s3FHS0EAkx8HGCDBx2bDzaOpXHA5P8IRC40BWUzGqmoUf5kTM9cZYcJpnFYRpZPYxXvgGRYg1ILF3Md3cd9jv38VTS6t0UepyMHGljlVOU66dNSvf5/NNwlSIlOZlmPqVQCAaTY3OqWD2rBzcJXYh7gOW7wHL1YgbQqHQ+6zwt0eHMnFZuJ92VFb2a+roKMWIajZ+WGXQ29D1pyCyz8Ji21G0ELB9F9jWg8hWQ0e2TrS1bZlWX08rmxwsiAATl8U6paGkxB8qLCxBx8zEj2m+RlpCTLWYmE4XpwGrrRuw+lqLPlhbFAjUn15V1e70RtupfUxcFugt6KXkLfPmTYnI8mx0SAVEmolIU0FaAeSQWwQ2E3nhD8gq9NP6cDC4BdPJUG5F4tqZuHL4Drw3d+7gkMezELZI52EqOAei0MgqkEORuOr4CNBKZAOmkuswGnsj6PW+Mfvtt/fHT85PjESAictIdGOUDSU7dOy+qVjVmgWr9IX4ISxEsmExkvIt6yJwFD+cN/EHpwr9t6bQ59vIU0lzO4uJyyS8aXSFv9KLUN35GF3NxucURLfZV5mEtqnVbMGPaA1IbIU/HF4xec2aI6bW7tLKmLgM7vjO6eAS6Ecuwcu9GNOMIQZXycXnAAH07WH07XLEf0Cpv2JaTc2hHIjhmiqZuAzq6k0VFcOwh24RXuhLUMVixMEGVcXFWguBo/gjtZIILOTzLWc9mDGdw8SlM65rzzlnpC8UWgzCuhjgXoDiB+lcBRdnDwSaIOYKENjLQZ/vNSYwfTuNiUsnPImw/KHQks4RFumyaEMzB0aACcyAd4CJK0tQaUoIS+uLsLp0KYpiwsoSTwdn1wgMCzMvYY/kq1Pr6shVD4cMEWDiyhA4mDUM8ft8S6CIvQwv4xIUMzDDojibuxBoxB+516D/fDEYCr0GY9bD7mq+Pq1l4koTx/oFC4rhsO5CZKMRFhEWK93TxJCTawiQ2cRriC/BweOrpdXV5CiRQ4oIMHGlCBQl21hRsRjTwmvgmO8yKF3ZrCEN7DhpbATIjALv1Ivwsf8kpo8rYqfiu70RYOLqjUiM7xhlTYDP86vhC+U67FmbFiMJ32IEskVgAwp4QlHVZ2esXr0z28Kcnp+JK0EP07RQUZRLocO6CskuA1ieBMn5ESOQLQJhvGMvKpL0N9Xvf2lGVVVjtgU6NT8TV5yexWrhQkwHr4cx4WeQhPVYcXDi2/ojQNNH/DD/Dl3qI9Pr6qr1r8H+JTJx9erD9fPnj/Ioyudw+4uItKeQAyOQGwQkqRr6r0e8GIGV1NYezY0Q1qyViatHv9SXlZGl+1L8xfssPvN6POJLRiBXCBzDj3QZjpJ7fPqqVW/kSgir1cvEhR7RtumEw5/HJY+yrPaGsjxdCKyBQ8PHfZHIMyXvvHOg66ZbP11PXPUVFZ/GC/FlvAA0PeRRllt/CfZoN53c/Qz8uD3kdt2Xa4lLMyQNhz8LK+Yv4WWYb4/3lqVkBDQEXsd7+1u4znnOrXi4krg2zZ9Px3t9GZF0WcVu7Xxut60ReB/v72NQ3j85bc2aHbZuSQbCu464SAEP5fu3gRVt1+HACNgZARXk9TTcgD9YWlPzlp0bkq7sriKujeXlV6LB/wcgnZsuUJyeEbAsAji8A3+MH5heW7vMsjLqLJgriKthwYKxkXD4GnTujcCPjv3iwAg4CgH8kN/FlrTHYHX/5Myaml2OalyMxjieuDbOm7dAeDz/Biv4L6D9fDhFjJeAbzkDAezyiOAH/TRWHR90+qqjo4lLMyiVpNvQoeTznQMj4AoE8KNeDt3Xz0tXr17p1AY7lrhgn/UZdN63QFqVTu08bhcjEA8B/LDpzMdfQWn/fLw0dr7vOOLaVFraX+Tn34hOuxkdM93OncOyMwJZIlAPve6j+AP+FBT3e7Msy1LZHUVcm8vKJkM5eRMQJiX8cEshzcIwArlBIIhqn4afr9/Dz9eq3Iigf62OIa7OrTvfAERX6w8Tl8gI2BsB/NCXQ23ys2m1tf+0d0tOSu8I4tpUXn4+hsTfxcohnbLDgRFgBGIjQKR1nxPIy/bERaSFzrgdkT45MAKMQGIEHEFetiYuJq3Ebyg/ZQTiIGB78rItcTFpxXkl+TYjkBoCtiYvWxIXk1ZqbyanYgSSIGBb8rIdcTFpJXkV+TEjkB4CtiQvWxEXk1Z6bySnZgRSRMB25GUb4mLSSvEV5GSMQGYI2Iq8bEFcTFqZvYmcixFIEwHbkJfliYtJK81Xj5MzAtkhYAvysjRxMWll9wZybkYgQwQsT15yhg0zPBs5AASrfgcVsUW84WhzBYxAFALn028Ph8qcE3XXQl8sSVzrKyrG4QCAr7EDQAu9KSyKqxDQfnuqeuvmioozrNhwSxKXrKrXAqxrrAgYy8QIuAYBuDuPqOp1Vmyv5YhrY1nZVRDqBoBlOdms2IEsEyNgJALwuPLF+vJyOuXdUsFS5LB53rxFkiR9E8PUT1kKJRaGEXArApJ0Fn6PX6ffppUgsMyq4qaKioVwMUvuaS6wEkAsSxoISJKAblLgVKWTn3Tdec8zYIDwDhkivIMGCTkQ0KJEn36/kHw+LY8IhYQaiQiVPhGVcFgoLS0i0twsIl2fra04ywZpVPycFBzIhc/ua3zXrukZB70RsNRKoyWIC6sXZXgJ7wTSF+mNNpdnDAKS1yv6nX666HfmmVr0jx4tPIWFQs7L06IHn1K/fqeICQSmV1BBaGowKJSOjpOfuO76rpw4IcLHjonQwYPdsWPPHhHct09Lo5cMbiwHPbgcOq97rOACWr+3KcOebJgzZ0TI47kXU8SbMiyCsxmIgNy/vwiAlPxjxoh+Z5wh8s4+WwTGjhX+kSOhhbSUpiExChiNhY8eFUEQWvDAARFCDO7dK8JHjogQIj2jSCM9DgkReAzj2dtzffhGzg9IDXu914A96bBWDhZAgKZtNGoqOvdcMejKKzWisoBY2YsAktWmqpiu5pfEPswcB6mKjp07Rcv69aJ13TrRtnmzUNrbT05fMcrTpqbZS2L3Er6A6f8mNOKXuWxITkdcm8rKLgd734PR1rRcguD2umna13/WLFG8ZInod9ZZ2mhKxjTP9QFEFjl+XIRJx9bUJDo+/li0bdkiWuvrRceOHZp+zaUY1eM3e2cuz2zMGXFtKCubL0vS3eh4tozPwdsvQYFOJDWgokIUX3TRyalfDuSwa5WkS2vftk2c+PBD0VxdLVrWrLFrUzKV+5848uyuXOm7ckJcWFodrsjyT4HY0kxR43yZIUAregVz5oiRt94q/NBVcdAHga1Ll2pEpk9ptinlEVlRvju1ru6g2RLnRMeleDxfwLq15YzazAbfzPpIdzX0hhtE8YUXCv+oUZqZgpn1O70uWlWlEZjLwucikrQObX7A7HabTlwby8svBWnRSCvf7Ma6sT7f8OGi6PzzxdBrr9VsqNyIgRltdqlOMB92e0vhxWUrzmp81Qycu+owlbhw2nQ5TAa/CeKa2SUAfxqDAI2wBi5aJEbddptmS2VMLVxqFwJkSOvKoKqzsMr4NWwL2ltaW7vZLAxMM8TZUFk5EMvNN/Fp08Z3LemwzvzTn8SY229n0jIebq0G2gXg2qCqZB1w49pZs7AFwpxg2ohLCgYvAzNfZU6z3FkLTQuHf/Wronjx4pNbaNwJQ05a7dKp4ims4UnC7/dvwI0nTt007sqUEVdDefmZWL68Gs0YbFxTXFwyttMUzJ4tJj37rGbaQHsFOZiLgJzvcpWtJJ2GUddNGyoq5piBvCnEFVbVz0OvdbkZDXJbHRJ0K2O+9z0x7mc/s9cWHId1lOuJ62R/XoA/mTdgymg4ixtOXPCgeAmmiOQYkIPOCNDewTMefFAUX3yx5m1B5+K5uDQQoE3lHGgzgfpZr893mdFYGEpc5IIZu8lvRCOmGN0Qt5UfgGeGCb/5jcibNMltTbdke2kzOgcNgVHYDnR1w4IFhlo3G0pcHkwRodtihbzOb3ThOeeIM373O0E+rjhYAwEPE1fPjrg8Eg5/tucNva8NI65Oj4nkr9q0lUu9wbFieYOuuEKM+8lPhKegwIriuVYmHnFFdb1fleXrO48XjHqg1xdDiKt+wYJibAUgvdZ0vQR1fTlYOSxauFCMhkEpB+shwCOuXn0Cw1TMtq4jLuj1RJevhhCXCIehLZYNV9DpgoBNCimYMUNbPbSJuK4Tk0fAfbtckaTLFUW5pO+T7O/oTlyb5s0bo0rSFbCQH5K9eFwCIdAfpDX+/vs1B3+MiDURkHnq3qdjiAMQrzRCUa87ccH4kZTxl/ZpBd/ICAGyDzrtzjtPHiiRUQmcyQwEyHJeO/TDjMrsVccl4UhE9wU6XYmLTuqBHccXgSu7z9Th5SLj0vEwLPUNG6ZDaVyE0Qh4Bw40ugo7lk+bOK/FJuxz9RReN+KiTdQYFl4PhZwpJv96gmDJsqCMH3rddaL/dF7fsGT/xBCKjl7jEBOBudgOdE1DZaVuS+G6EZfc0XERhGOFfMx+S/9mwdy52oZp7DpIPzPnyAkCTFzxYcdb/JlQe/vF8VOk90QX4npv7lzaPE16raHpVc+pYyKAE2lG3nJLzEd807oI+HCCEIfYCGBQMxKWBpd3ckXsRGnc1YW4cC7iEtRJkUO2CGCERaRFB61ysBcCdPwZh4QILOnkioSJUnmYNXERg4JNyVaDXdakgniSNKSIH/SZzyRJxY+tiIBvKE84EvULmUcQV+gx6sqauHi0lair0nyG0dbYu+4S7CIlTdwskpxXf1PqCF1GXVkRF4+2UuqolBORM8D8aXw2bsqAWSyhp7CQT09K3ifaDC3bUVdWxMWjreS9lE6KIZ//fDrJOa3FEKAzK+mgXQ5JEch61JUxcfFoK2nnpJWARlsF8+allYcTWwsBOjCDiSulPsl61JUxcXXI8vkQcVFKYnKihAjQyz70xhv5pU+IkvUf0oiL/f2n1k/Yz7w46PVmzB8ZEVdDSYkfBmUXQEReRkmtnxKmIt1I3llnJUzDD62PAE8VU+8jWmGEn+cLiEtSz3UqZUbEFSkqokMgy08Vw1fZIDDossvYm2k2AFokL08V0+6IOcrAgaVp50KGjIhLKEoZ8k7JpELOE40Aec4cesMN0Tf5my0R0EZcOEGcQ8oITFEikYz2NqdNXBvLy0djfnpuyqJxwoQI5E+ezHZbCRGy0UPY4XlxKC+HlBGQMXM7D15l0nZ/kjZxUUUQi4kr5b5JnJCcBHJwDgKBMWOc0xhzWrIQ+i7Sl6cV0iIuckvRWQk7HkoL5viJB5TRrJuDUxAInHaaU5piVjvINGJxui5v0iKucEcHGRotMKtFTq/HO3gwn4vosE5m4sqoQxdE2tvT+gue1tFhYMb5MIM4IyPROFMfBAorKvrc4xuxEVBDIRE5frw7Km1tmqtkUojLOEWaFjk0tzJwCZTLwMSVEfpn4GAN+jGsTDV3ysSFY4YmiEhkPsiLg04IsKV8LyAVRXTs2iVOfPihCO7dKzp27z4ZP/5YEFElDVCOk00cuVAmp37+ESOEb+RIzfW1D6NbH7778Z2IzqjgZx1XZtBK0gLimNLq6u2pFJAyceGYIRptse1WKqimkIYOVgiMG5dCSmcnUcNhEWlqEo0rVojDzz4rQvv3Z95gVdXKovKIAFvjlBQ4/XShbbGaM0fkn322kGjERodd6LDPkDx7UEyJaOPI58bb0J2XqZEIqaH0I661s2b5QFqfRqF85rtObxVNcbxFRTqVZs9ijtfUiIMPPSTad+wQajBoWiM6UB/FI888I+hAEm2EhlFaXkmJKDznHI3UsiExz4ABTFzp9+YAcMy5Wy+66OmJr7zSkSx7SiMur98/Beb5s5IVxs9TR4BGXG70u0UjrOa33hKH//pX0bZ5c+qAGZSSCDN06JAWaYp6dNkyQWckFuCQEjJVyYOdXR5GZTQiSzXQH6TQwYOpJud0nQhADTWntbGR/DqtSQZKSsQFJpyJgkqSFcbPU0dAm54YqGtJXRLzUkZaWsSeH/5QNFdXm1dpBjUpkJNk7JKTFP+DL79cDLrqKuEtLk6qI9P8cmVQL2cRUyVJmg0ckhJX0iWYzk2QpNvKaDMkd0ZsBPJc5lO+fetWsXXp0m4yiI2KNe8qra3ikyefFB9ee63Yiu1Zu++4Q7Rt2RJXWDeOpOOCke4D6LqgmspPli3piCtUWFjSOeJKVhY/TwOBflAQuyW0rF0rdn3ve4IIwM6BprlBLB5QbKqq0g40KVq4UJARMR1uQnoxMtvowCooh8wQwIHSpT6fbxJyr09UQlLi4mliIvgyf+aW6USksVF8fPfdtietWD3dvm2boHjwD38QgQkTNAJrev11ETpwIFZyvpcCApgqfgrJaB9cQuJKOFXkaWIKSGeYhFaenB5o9LHjtttE+OhRpzdVdGzfLg4/8QSTVvY9Te41ypP56UpIXDRNRCGkmOegMwJuGHGdoBEJVuo4MAJpIjCzk3viZktIXDxNjItb1g/SWV7PurIcFXAYCm3SC3FgBNJEIKlePS5x8TQxTajTTK60t6eZw17JNXutt9+2l9AsrVUQIAuGhNPFuMQVLCrqUpJZpTGOksPpW0JIKW+mNbyjXg5uDCGQcLoYl7g8ijIdmYm8OBiAgN1NA5JBgn1nyZLwc0YgEQIJp4sxiQum9xLcM5PvrdT3OSQSgZ/1QSDo8CVz2v/HgRHIAgE/vC2XvVFZGdNkKyZxbSwrI7cFPNrKAvVkWclli5MDnXjjYfJychcb3zZVnTw4HB4bq6KYxIWEozHqGhUrA9/TBwE3WFcXVVbqAxaX4lYERkbC4ZGxGh+TuHBzMkwhxsfKwPf0QYB8RikdSb136FNZjkoZdOmlOAAv5iuWI4m4WpshMJa4KJbMfd4qbU4py6Tfijm3jFUI30sfAVpxI1fETg7+0aM1X1dObiO3zVAEvPjDNy+WnqsPcQ1qa6NjSmiTIwcDEVBcQFy0O2DghRcaiCIX7XgE4ui5+hCX7PMNhtPAIY4HJMcNpH18oX37ciyF8dWP+OpXtQ3IxtfENTgUgRGx9Fx9iEtVlDEAYKhDQbBUs7oc1VlKKJ2FIdfII26+WedSuTgXITBWlqQ+M8A+xKUIUQpQBrsImJw1tYm2xOBkG6cH8uM+BE74YJfj9KZy+/RHgM67mAMrhyiuivqC44GKkYh8PnMwAYHIsWPaUVwmVJXzKoZ/5Ssi76yzci4HC2A/BEBakzZUVEQdER5FXPjbPxSJohLYr5n2krh51Sp7CZyhtOQNY/wvfiHoaDAOjECaCBRjuljQM08UccmhEB0R5HwPdz0RyPF1yzvv5FgC86qnQ1rH/ud/aqdOm1cr1+QABAIeIaJO8Y0iLkWWyUp1kAMaapsmnHjvPe1oLNsInKWg5Jt9wgMPMHlliaPLshdHFGVEzzZHERdGW1PxcFjPBHxtLALkt2r/f/+3gAmKsRVZqHQ6p3DcffcJGoFxYARSQGBYJzd1J+0mrq3z5hXip0OubDiYjEDLmjUidPiwybXmtrqCWbPEaThEg84s5MAIpIDADBxb1n30ezdxBWWZWG1cCgVwEp0RiLS1aac761ys5YsrmDlTnPGb3wg3HBxi+c6wvoBj8/z+bvvSbuIKSxL53sq3vvwOlBDTxIN//KMIHzniwMYlblK/iRPFhN/+VvTD8V4cGIEECOR3cpSWpJu4YAhJfp55Y3UC5Ix8RBuujzz3nJFVWLZsIq3Tf/1rERg/no1ULdtLORfM28lRmiDdxKXKMu1P7J5D5lxMFwpw9IUXhOrwQzTidSsp6s/4/e/FgHnkmIQDI9AHgaJOjtIedBOXrCh0hiI7D+yDl3k3wrCk33XXXa490stTUCDG//znYuj115sHOtdkFwRGdXKUJq9GXNDW58OGa5ZdWuBkOVtWrxZk2+XaAMeDI265RYz5wQ+EG86edG0/Z9Bw4ijiKsqqEVcgEBgpqeqEDMriLDojQHZdu2Fd7vRTgJLBVrxkiZiAFUe29UqGlHueE0cRV1GLNeKKnFxRZIMai7wDIZwAtB8rba4O8CSRN2mSprTPnzLF1VBw47sR6N/JVSeJC0wGE65otxHdSfkiJwgcff55cbyuLid1W6nSrhXHgjlz8IZqf2etJB7LYi4CcidXRRGXuSJwbYkRgG3Xx5gyOv38xcQgnHza5VmCXONwYAQIAf4TZuH3INLcLHZ///uCjrN3e5C8XjFs6VIx9p572NLexS9D1IgL80YP5opMYhZ8IWiFcR+MM93gKTUV+IvOP19M/POfhf80dhuXCl5OSkMcRVxFbTpJVorSHxusacsPBwsi0LRypTjwu9+5yoNEom7wjRghzoSxKrmE5uAeBMBRAa+qnjKHAJPRydV8so9F3wEcYCIOP/20OPryyxaV0HyxPEVFmneJoZg+0oEcHFyBwEDwlOZ2SxtxwS1qCcir0BVNt2kjyb5rL3xYNdMBGxw0BORAQDtBaMz3vic87B7HDW/FYLiX1078kemADLAYG8rYpNv3/OhHrjlgI9UuGbhokbbP0TuYD6dKFTO7psMAq3RTaWl/ORIK0RRxtF0b4ja5Iy0tYsc3viHatmxxW9MTtpcO4Zj4yCOicMGChOn4oe0RGB8pKBgiyx5PAE2JckRv+6Y5vAFEXttBXifef9/hLU2ved7iYjHuJz8Rg6++WkgebfEpvQI4tR0Q6C/LcqDLBKLr0w6Cs4xAQA0Gxc7bbhMdu3czHj0RwFahkd/8phj7wx8K0oFxcBwCmC12mUM4rm3uaFD46FHx0de+JtrefdcdDU6xlTTaKjz3XDH+/vtFgO29UkTNNsmYuGzTVQkEJav67SCv1o0bE6Ry56P+06drSvt+dII2RmIcnIMATxEd0JdkKrHzO98RbjkVO50uI3uvMx58UAy+8sp0snFaCyOghkKq52unnUYGXVcjaoZdFpaXRUuAADpTNL/5piCTADq3kMMpBGif44CyMuEdOFC0rF8vRCRy6iFf2Q2BQ6qqPs0jLrt1WwJ5SWG/F6tqnzz+OO9t7I0TXOLQauP4n/1MeArZ1ro3PHb7zsRltx5LQV466mzPvfe61nd9IojIrxd5VvVg9MXBvggwcdm37+JKTjqvY6++Kvb8+MeCXONwiEaAnBOeCXIP8FmO0cDY5JtfllUmLpt0VtpiwhFh4/LlYtcddzB5xQDPP2qUmPjwwyK/hA634mAnBIKKIjFx2anHMpC1FcrobfAcGjp0KIPczs5CSvvxv/ylyJ82zdkNdWDrmLgc2Km9mxTcu1d8dPPNomXdut6PXP/dM2CAGP/Tn4qCuXNdj4WdAGDislNvZSFr6JNPxC7YetG5jexNNRpIIq/T/+u/mLyiYbH0ty7igmcbDk5HQGlvFzv/4z/EkWXLnN7UjNo3DosZBfPmZZSXM5mHgOTzdeu4eD+EebjntCYyVN2HPXwHYE0uoMDncAoBOT9fjL37btGfdV6nQLHoVdeIy6LisVhGIUBGqrvvvFPQKIzDKQRo2jjhf/6HVxtPQWK1K+2vbRdx8Z9eq3WPCfI0vfGG2PGtbwmltdWE2mxUBazsycLeP5r9a1qx1+iIMlmV8KGqcOXMwXUIYKrYtnmz2PHv/y5CBw+6rvmJGkyW9aSwZ3fQiVDKybOIEg4rMg7KOCFJUktOROBKLYEAuYHe+uUvi45duywhj1WEoBGXtj2I9zZapUtIjiZME0/IA7zeffjykZUkY1nMRyBy7Jj46F//VZDBKodTCJAjwjFYieVgGQS2hcLhg55f79wZ/trYsWMh1kWWEY0FyQkC5F2iuaZG+IYOFbSfj53vneyGwPjxwlNQIFrXruWV2Jy8macqhfnDwzPWrFmtKeclRSHfv3tPPeYrtyIQaWrSNmcfe+UVobLfqu7XgFziFMCnF4ecIrAXJjzaCTEacSmSdATisBuBnPaJdSon7xJ7cPjsQRxzz+EkAuTHfhzOtMybPJkhyR0CzTB/OErVa8SF/8K4ZreQuesQ69WsKOKTJ57Q/HqxrdfJ7pH8fjH6298WZKjKIScIRLCQGKKaNeIik4iciMGVWhsBmEsce/llsZtc4xw/bm1ZTZIub9IkMRrHwgnYenEwH4EurmL0zcfedjUex8bs7TirUDlxwnayGyFw0cKFvC3ICGDTKLPniIuNUNMAzm1J2z/8UGxdulS079jhtqb3aS/58RoHHaBvxIg+z/iGoQgoUSMuj6q2ozre92Eo5vYvnPx6bYOhalt9vf0bk2ULaE/jMBA5B1MROE4G81SjNuLq6OjYDybbbqoIXJktEVA7OrQtQs3Y5+j2UHzJJWJAebnbYTCz/dtbIpH9VKFGXLPXrWuTFYXdY5rZBTaui3Rdu++5Rxx55hlXG2SSicSIW24RciBg4960lejrK2prT424SHTsWmzAB23/4cAIJEWArOz3/epX4uBDD7n6GDTaYVBYWZkUL06QNQL7MCskQ3ktaCMuuoL1/GF8sBGqBgv/lyoChx59VOz+wQ8EOSh0axj93e9qp2S7tf0mtbupk6O06rqJC3YpQdyhyIERSB0BGKo2v/222P3974vwUc2oOfW8DklJU8WBixc7pDWWbUa4k6M0AbuJCxc0d+SVRcv2m4UFg6Fqc3W12HX77a4lr+JLL2WjVGNf0TbvSesHrZZu4lJaWg7wyqKxyDu9dPLrte2rX3XlGY6k6xrAB20Y9opja88uv6J0Hw7aTVzT6utbeWXRMNxdU3DowAHtDEciMVcFSRJDrrlG0EojB/0RgDubjRPr6rp18N3ERVXxyqL+gLuxRO0MRzjf69i501XNzzv7bCH37++qNpvU2EMYcW3uWVcUccHXzSdgtsaeCfiaEcgEgTA8qm7/+tdFcL9mL5hJEbbLQ9b0+VOn2k5uGwh8BLPBqBcpirh8QhzHwRndwzEbNIhFtDACRF47sDk7uGePhaXUV7QhcDjIQV8EMNo6hil41IAqirhEIHAA7np36Fstl+ZmBIL79om9v/iFa+y8CubOFZ6iIjd3ue5txyxwa4HfH+WhOYq4Sqqq6LSfDbrXzAW6GoEW+Gqn07PdEvKh6+KgHwIgrrWnV1WRI4juEEVcdBenLNJy0IHuFHzBCGSLAOy8GpcvFye2bs22JFvk9/FBsvr1k6p+3HOrT1fBfYgL/ucPgOHcaQLdhQp/6o4AuX/ee++9rpgyBsaM0R0/1xYoSU0eWaYzMaJCH+KSIpFGMBwTVxRM/EUPBE7AGSFtD3J6CIwb5/Qmmtm+Y5FgsM+CYR/iOpqf/zGk0o4AMlM6rssdCNCU0ekhoB1T6vRWmtQ+Sfqgk5OiKuxDXOdVVYWFotQhlXu3+0dBxF/0RKAFJ2U7/bxGb3GxnpC5uawQbEtXa5zUC4U+xEXPMVWspyXIXmn5KyOQNQJKa6s40UCu35wb5Lw8PgVcn+79QJblTbGKiklcgUjkIyT+IFYGvscIZItAq9N91mPfIm/9yfYtwQBKiHc72ttjDqBiEtfkNWuO4MgftufKHnsuIQYCoUPdm/xjPHXGLS+2/3DIDgFZVdfBrXxTrFJiEhclhD3XRnw4/w2LhQrfMxSBSAvZOTs7aNNFZzfR0NZBVUUH+NTHqyQuceHBNmTaGS8j32cEMkXAO3Bgplltk0+BT34OmSOAPdO74PE07vbDuMTVEQptw77FuIyXuUguygldB+1bowNEOZxCIO+ss059cegVGdxyyAIBWd5y1OcjXXvMEJe4MLfUliKRi80iYkKX/ObQ664TZz/5pJj42GOi6LzzkmdwQwpZFgPmz3d8S2n1lEPGCATjmUF0lZh4KKCqG0izL0nStK4M/Jk6AnTSMa0u0ahr7I9+pLl3aXrzTdH4yiuuPcp+wJw5gvxWOTnQaIvOnuSQMQIN4J31iXLHHXFRplAo9D5Ii6eLiRBM8Ezy+6Oe+rGHbej112sjsHE/+YnmdM5TUBCVxulfBl1xhdObKMgPGYesEFjva25OaOyXkLjohGvouVZnJYKLM5ML45gBuq/Cc84RE37zG3HWU0+J0bfdJtxgba0dWb9gQUxInHQzfJiOKOWQIQK0qlFb0tCQcHUjIXFRxdDur8VHlL9nus8hOQJxiaszKx2sQIRFo5BJf/+7OP2BB8QQ6MV8w4cnL9xmKfrPmCFGfetbQoKOy+nBTR5fDejLpNNEqjOxjgsJigKB+qb29rWYMrIz7TR7KR1DS1p5LJg5U4sjb71VtKxbJ46CzE68/74gArTtSdE0usQoaxxc2mB5O00E7Zm8w0Wuqg3ooaTTRKozKXGR58FN5eWrkPZ6xGilDZXAIS4CyUZccTPiQcGsWVokJS+dEH0MCv0jzz0nIs19PHwkKianz+iE5zE4JLawstI1pEWAB/dGeRnOaR/YrPKUponUpqTERYlIww9LVlKWzaDvHFJDIHykj/+z1DL2SEUW2H541Bz+la+I4f/yL6J9505Bfq1oo3Lrpk2i/aO4pi49SjH30jt4sBh02WVa9I0YYW7lFqitY/duC0hhSxFSmiZSy1IirnAwuMUXCKyDwouJK433IdIUc5tVGiX0SoqpFp2YTLH4wgu1hxGsYB1fs0aLHSCxMOqkqHZ09Mps4FcytC0sFAEQ7MCLLxaDLrlE9F5RNbB2SxVNLns6PiaXdhzSRkCS1oU7Osh1fNKQEnGRMerGioq3MOr6Akp0thFOUshST0AEYnTwQLk/cMkSLdKPRiUbIpBWEH/1W+CFoQ2xFadKK8eP6y6Kd+hQUfTpT4uBixYJ8vop5+e7fpdA64YNQmlr0x1rFxR4HDO7tzTD9xQamxJxUTnwi7NKRCK1KHxxCuVyEiBgtj6KViklGLyS0at30CCRP336yX7AYRXhxkZNyU+jQCJU7ROjNZKRDCZV7K0jwqNPmMBoBEQLBkRGnk4jWloB9WCfoW/YMOHHyqdmwoG0HE4hQHpIDukjgA3VqzWOSTFrysRVWl29fSOU9HhNmbhSBNds4oorFsiFSEYjmriJ+EG2CNBIi/SOHDJAQFWriWNSzZnW+jRIi1YXracNTrW1JqezDHGZ3G63Vhfcv5+niZl1/ked3JJy7rSIyxsIkC/66pRLd3nCCOmVFLhk5OAKBI5XV9vX3i63PVTdyS0pS5EWcdFJ15iLrkTpxmudU26CdROSsjzE2z+s20E6SkYGwkeWLdOxRNcURcchriRuSafFaREXFewJhd7Eh/MPx0sHxQRpeftHAnAc9Oh4ba22+OGgJpnTFEl6C2ZWb6RbWdrENfWdd8hI5a10K3JretJ7cHA+Am44L9KIXpQUpWp6bW3aWw3SJi5NeFkmjxF8aGwKPcnbP1IAyeZJyIc+GQFzSBuBLbCzysj7TEbEFWpvXwevEbVpi+nCDMF9+1zYanc1ee9PfyrY42kGfQ4O8TQ1rcsgp8iIuMhPF7xFrIBSjR0PJUGdiSsJQDZ/TKoA0m9xSBuBQzBmX5nM71a8UjMiLirMH4ksxxFmy+MVzPdPIhCkMwRhuc7BmQgce/FFdtOcWdeuDCjKPzPLip08mWakQ2NhNPYy8mfvAiFTIeyQLxxm2x479FMGMpJnjk8efzyDnK7PonEHcUimSGRMXFShLxJ5DR8UOcRBgGy5aA8gB+chcOjRRwX1L4e0EXitkzvSztiVISvi4lFXF4wJPsljAx8OmgAgez4irxvNb6RtfmTPxuorddajLRInK+KiAnjURSjEDyq2/PCpxvHxseMT2oO66/vf59FWZp2X9WiLqs2auLpGXbzCGLsXNR9ZPOKKDY5N7x7CAb/kTptDeggQR5BePBvdVleNWRMXFcSjri44Y3zyiCsGKPa91YwDfQ8/8QSvFGfWhbqMtqhqXYiLGFRW1edRHltb9upQHnH1AsTGX2kj9d7777dxC3InOkZa8PmjvKDHaItaoQtxUUFqa+s/YK/0d7rm0AMB2HCxK98eeNj0krb1bL/lFsGHvWbWgbBkfN7Xr98/MsvdN5duxDWtvr5VeDxPgbwy2nvUVzTn3AnpcNqPc9CwX0topHXgwQdF27vv2k94a0i8BiOup9J1XZNIdN2IiyqZtmrV29g0+SQu2xNV6rZnEVbk2rrLDz70kHY4r60bkTvhyYjxydLa2jf1FEFX4iLB5FBoGUZdZFHPoROBEBOXLd8FMmU59PDD4vBTT9lSfosI/bLX4/mb3rLoTlzkrwvDwmVsHnGqq3jp/BQWdrmiRZVjL7ygEZeKbVsc0keAOABxWUl19e70cyfOoTtxadV5vf/AKuMLiat2z9MwjgHjYC8EDmF6uPeXv2Qj0yy6jTgAR44ZMvsyhLhwzNAxMO1f0Oa1WbTbMVl5xGWfrqQzJvf+/Ofik7/g9eWDTrLpuLXEAcQF2RQSL68hxEWVTaupeR0ftHXe9Yp6HnHRG2H9QKYOu3/wA00Rz5uns+ov+s0/3skBWRUUL7NhxKVVqCjPwX7D9VNGJq54r5917pOL7W033yyO19RYRyj7SrIMv/tnjRTfUOKaVle3B55Sn0EDdhvZCMuXTdt+WlstL6YbBSTF+6FHHhFbb7xRhA4edCMEere5QZLlxzM5ACMdQQwlLhLE29T0AsjLUPZNp8G5Shth4soV9LHrxY6Gjp07xc5vf1sc/MMfBOm2OOiAgKo+WbpqlW4W8vEkMpy4yKc0XK09BhMJQ1YX4jXMavdpywgHayBA9ln7YQm/9aabRMs771hDKGdI8SxWEU0xejOcuKg/ZtTUbMSpQL/H5WZn9E/6rWDiSh8z3XOAsJpef11s+9KXxGGsGrKDR10R3iJL0p+n1tR8pGupcQrzxrmv++1pq1e/uKm8fBIK/jGiT/cKLF6gwiOu3PUQpoXt27dr/uEbV6xglzT694QCZfxfQFqmzapMIy7CSg6Hn1K83hm4vFZ/7KxdIo+4ctM/ZOKw6447xIkPPuBDS4zrgqcVSaI9yqYFU4mLtgPVl5X9fximTUQLZ5vWSgtUFDxwwAJSuEQEjLBaN24UR559VjTDvIGnhIb2e60qy3+cuWrVLkNr6VW4qcRFdZeuXr1yY1nZZKw0fgpf83vJ49ivR59/XhRMny58w4YJz8CBQu7Xz7FtzUnDQFZhuA8i1zNH/vY30bIWmzZwj4OhCDTid/xneIV5w9BaYhRuOnGRDB5V/SuGlrNwuTSGTI68FcKI66NbbxWyzyckRP+YMWJAWZkYUF4u8qdMcWSbzWpUcPdubZWQVgg1swYmLLOgfw6/5ZyYOsFKITdhQ1nZfKxC3I3az8+NBNaplYjMN2KE8A8fLnyIgdNOE4HTTxf9EP0jR0I5aMrir3UASSIJnVPZun69ZsrQummTaN+6lTdDJ8HMgMevYbR1d2lNTa0BZSctMmfERZLVV1R8BmYS9+CyNKmkLk1AU8p+Z50l8idNEv0mThT+UaOEZ8CA7ijn5TkbGYyeaGEj9Mknon3bNtFUVaVtyyGvpBxygwAm4DUCpDW9pmZ5biQQIqfERY3eWFHx/yRVvReX/lyBYKt6JUlIHo+QvJjl49NbWCjyp04VeZMni7yzzxZ5IDm7kxltw2nbvFk0V1drJBXCyiARFZOVJd7UQxhp/QdGWg/nUpqc6LiiGqyqZGk7DfGGqPv8JTYCGIHQD7vLuV0QW4mC+/eLxuWn/vjRiMyLBQBaBPAWFwsPyM07aJDwDRmiRe/QocKHSGlommp6QBtIkd6Bjc20uZki7ROke7T6SpFXAk3vlZQqxGjrGa/fT/uPcxpyPuKi1pO+yyNJdwKUxTlFw22VY/QmFxQI3+DBJ4mNPimC6Oi+pzNKmK5qIzzo2vDXVtO5dX3Syh1toSHfVZorGPqkCHKNNDVpp+LQYSFESjRy0j4PHeK9gTZ819DzL6Of7yqtq1uXa/EtQVwEAqzqSUl/O6LrlfWEh+UCERZFBI20egkIXeXJO/TZdd0rDX+1NQIr0fH3GeljKx10LENcJPTmefMWKbJ8By7PTacRnJYRYAQMReBNWVF+PLWuDvulrBEstc5OwODv9a8BTYM14GEpGAHXI9BAv0krkRb1iKWIiwSCA7JlWGV8FJd8tAoBwoERyB0CYfot0m8ydyLErtlyxEVierzep7Cf8enYIvNdRoARMAMB+g3Sb9GMutKtw5LEpZ3DFon8Dgq4U2v86baM0zMCjEDGCGi/PfwGjTgTMWOhemS0JHGRfNPr6qoxt/4ZLv/ZQ16+ZAQYAeMR+Cf99ug3aHxVmdVgqVXFWE1gM4lYqPA9RsAwBGigcN+02lpLDxgsT1zUPUxehr2kXDAj0BMBW5AWCWwL4iJBmbwIBQ6MgGEI2Ia0CAHbEBcJy+RFKHBgBHRHwFakRa23FXGRwExehAIHRkA3BGxHWtRy2xEXCc3kRShwYASyRsCWpEWttiVxkeBMXoQCB0YgYwRsS1rUYtsSFwnP5EUocGAE0kbA1qRFrbU1cVEDmLwIBQ6MQMoI2J60qKWWtZxPtRs6DeXuw74qy7jcSFV2TscImIlA52/E8salqWBi+xFXVyNx8Man4czu6/j+ua57/MkIMALdCDwLB5APwFf8W913bHzhGOKiPtg0f/7Z8L55A+L1+Dqe7nFgBFyOwEG0/1FZVR+eunr1e07BwlHERZ2CzaHypoqK6+BH6BZ8LXdKR3E7GIEMENiIP+J/EG1tj06rr2/NIL9lsziOuLqQri8ruwhz+m/j+8Kue/zJCLgFAfywq+Aj/leYGj7vxDY7lrios0BeF8CH/Xcw+lrkxM7jNjECcRB4De/8L0pXr14Z57ntbzuauKh36svLz8XhWd9CQ6+wfW9xAxiBxAi04fEzMBX4w9Ta2prESe391PHERd0DndcUzPVvRLwGw+fT7N1lLD0jEBOBDXi3/+wNhf5a8s47B2KmcNBNVxAX9dfaWbN8fp/v86os/xsIbIGD+pCb4nYEVPUN6HPvx6EWL7kFCtcQV1eHdp7d+H/x/aKue/zJCNgYAcfrs2L1jeuIi0DYUFExB3qAm2A68TkoMYfEAobvMQIWR+AYpobPIf5p2qpVqy0uq+7iuZK4CMWt8+YVnvB4Pgtr+5vw9RzdkeUCGQGjEJCkaqEoj0he73Ol1dXHjKrGyuW6lri6OqVzq9CX8Z22CuV13edPRsCCCGijLDUSecTKJ/CYgZvriYtAbpgzZ0QYinso7W/A19lmAM91MAJpIvA23s9H3TzK6okXE1cPNGA2sRA6r+uh+7oSt4t7POJLRiBXCPAoKwbyTFy9QGkoLx8UVtWrhCwvZbOJXuDwV3MRIF2Wqv5ZCQSem1FV1Whu5daujYkrTv9snDdvgeTxLMXo6wpeeYwDEt82BAHYZB3GD/PvrMuKDy8TV3xsxIbKyoFSMHgpiIumjpci+hMk50eMQLYIBFHASyCuZarf/xKPsuLDycQVH5vuJw0LFowNRyJXYfR1HQCb0/2ALxgBnRDAu/UO3q0nvB7P30qqq3frVKxji2HiSqNrN5eVVWLD9nUw+rsc2YankZWTMgLxEDgIPdYLMIh+Ao7+quIl4vvRCDBxReOR9BsZrrZK0kVwg3s5hvSLWf+VFDJOEAMBTY+lqsthAP1Cf1V9ZWJdXXOMZHwrDgJMXHGASXb7vblzB4c8niUY4l+CtEsQByfLw88ZASBwBPE1/PBe9kUir01es4a+c0gTASauNAHrnZwJrDci/D0OAo1QMbwmKcqLwVDotdnr1h2Ok45vp4AAE1cKIKWSBG5zhsBtzhK4zbkMOgsagQ1MJR+ncTwCTWjhCrwTL+HAilen1tXR4RUcskSAiStLAHtnh9uc4XAXrU0hAe4FeD6odxr+7goEjkKNsBI60H+EfL7ls99+e78rWm1SI5m4DAIa24eGYVqwCErYi1EF68AMwtmCxZ7UYYGwMPpeMa2m5pAFZbS9SExcBndhTx0Yr0IaDHZui/8E1a/AD4qV7ib0AxOXCSBTFURgQa93EfwoLYSSljxQTEH00TMOtkWALN23YEq4Fjqs1wOKspJXCc3pSyYuc3DuroV833v9/inQfczCzfMxnbiAbcG64bHLxV6MnqugCqiCPnNto9+/5byqqrBdhHeCnExcOexFWon0BQKkwD8ff7GJyEoQeT9kDvskQdUnMLLagOd1siS9Ce8hb7nV+2gCjEx7xMRlGtTxK+oehQkxE6nKEemTSSw+ZGY9oalgA+J6jIqr4e5ozcy6unfNqpzriY8AE1d8bHLypKGkxB8qLCxBxzCJ5aQHRDdZofpajLLW+5qbG0oaGug+B4sgwMRlkY6IJQaTWCxUDLnHZGUIrMYVysRlHLa6lhxFYpJUBp0YTSXHIo7WtSL3FLYXTd2NFd4GYLmaR1b26ngmLnv1lybtG5WV3uJweAJMK8YjToGniln44U1EZ45EgjE2bJIZIu8BRvuB0VZ4ZFgH5foWxJ3HvN7tvCJoBvz61sHEpS+eOSmtobKyINLRMQYjhzFYpi+BInk2fqRnYjQxDALRqMybE8FyVyntBzyK2AgsPgIma/HZADz2eAKBPSVVVS25E41r1gMBJi49ULRYGVilzPd4vaPRucMxGpuEkcU8kNrZELMIkYxeByA6YWRGtlN7EFvQvha0cxdsq9YLj2cL/LUfkGW5qaOjYz88MbQhDQcHIcDE5aDOjNcUmloObG8fg8M/+mNq6UenD0KchPQzaYqJqVMhCA5OOAW9Dx5EIrhRiFYItJWGRk+hTmHghFY0YfT0AdpSB5L6AGTVCKFPeGT54KRVq453puMPByPAxOXgzk3WNFL4BwcMGAXiyvd4PDKmU/in+uB+ZTAswmnKOUuRpAl4SQpQFhFbVwDfaSRHn9mG3u8gEdMJxI8xitqIz3rZ49mvKkoHpnyQEDESaW3s128P66ayhd6++Xu/NPZtCUuuOwI05QwEAiMjktSPKKNnBb2/93yWzjURUe/0SiTSEQmHD2GKR76sODACfRD4XzaujFinfShuAAAAAElFTkSuQmCC"/>
6
6
  </g>
7
- <text id="Node-SwitchBot" xml:space="preserve" x="10.70752" y="402" font-family="Kefa" font-size="75" font-weight="700" fill="#d13939">Node-SwitchBot</text>
8
- <text id="Text" xml:space="preserve" x="304" y="244" font-family="Kefa" font-size="75" font-weight="700" fill="#d13939">T</text>
7
+ <text id="Node-SwitchBot" xml:space="preserve" x="10" y="404" font-family="Kefa" font-size="75" font-weight="700" fill="#d13939">Node-SwitchBot</text>
9
8
  </svg>
@@ -7,6 +7,7 @@ import { SwitchbotDevice } from '../device.js';
7
7
  * @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/tree/latest/devicetypes
8
8
  */
9
9
  export declare class WoHumi extends SwitchbotDevice {
10
+ constructor(peripheral: NobleTypes['peripheral'], noble: NobleTypes['noble']);
10
11
  /**
11
12
  * Parses the service data for WoHumi.
12
13
  * @param {Buffer} serviceData - The service data buffer.
@@ -14,18 +15,12 @@ export declare class WoHumi extends SwitchbotDevice {
14
15
  * @returns {Promise<humidifierServiceData | null>} - Parsed service data or null if invalid.
15
16
  */
16
17
  static parseServiceData(serviceData: Buffer, emitLog: (level: string, message: string) => void): Promise<humidifierServiceData | null>;
17
- constructor(peripheral: NobleTypes['peripheral'], noble: NobleTypes['noble']);
18
18
  /**
19
19
  * Sends a command to the humidifier.
20
- * @param {number[]} bytes - The command bytes.
21
- * @returns {Promise<void>}
22
- */
23
- operateHumi(bytes: number[]): Promise<void>;
24
- /**
25
- * Presses the humidifier button.
20
+ * @param {Buffer} reqBuf - The command buffer.
26
21
  * @returns {Promise<void>}
27
22
  */
28
- press(): Promise<void>;
23
+ protected operateHumi(reqBuf: Buffer): Promise<void>;
29
24
  /**
30
25
  * Turns on the humidifier.
31
26
  * @returns {Promise<void>}
@@ -36,15 +31,31 @@ export declare class WoHumi extends SwitchbotDevice {
36
31
  * @returns {Promise<void>}
37
32
  */
38
33
  turnOff(): Promise<void>;
34
+ /**
35
+ * Increases the humidifier setting.
36
+ * @returns {Promise<void>}
37
+ */
38
+ increase(): Promise<void>;
39
39
  /**
40
40
  * Decreases the humidifier setting.
41
41
  * @returns {Promise<void>}
42
42
  */
43
- down(): Promise<void>;
43
+ decrease(): Promise<void>;
44
44
  /**
45
- * Increases the humidifier setting.
45
+ * Sets the humidifier to auto mode.
46
+ * @returns {Promise<void>}
47
+ */
48
+ setAutoMode(): Promise<void>;
49
+ /**
50
+ * Sets the humidifier to manual mode.
51
+ * @returns {Promise<void>}
52
+ */
53
+ setManualMode(): Promise<void>;
54
+ /**
55
+ * Sets the humidifier level.
56
+ * @param {number} level - The level to set (0-100).
46
57
  * @returns {Promise<void>}
47
58
  */
48
- up(): Promise<void>;
59
+ percentage(level: number): Promise<void>;
49
60
  }
50
61
  //# sourceMappingURL=wohumi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wohumi.d.ts","sourceRoot":"","sources":["../../src/device/wohumi.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C;;;GAGG;AACH,qBAAa,MAAO,SAAQ,eAAe;IACzC;;;;;OAKG;WACU,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAChD,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBA2B5B,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;IAI5E;;;;OAIG;IACU,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxD;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;;OAGG;IACG,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;CAG1B"}
1
+ {"version":3,"file":"wohumi.d.ts","sourceRoot":"","sources":["../../src/device/wohumi.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAW9C;;;GAGG;AACH,qBAAa,MAAO,SAAQ,eAAe;gBAC7B,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;IAI5E;;;;;OAKG;WACU,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAChD,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IA2BxC;;;;OAIG;cACa,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1D;;;OAGG;IACU,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC;;;OAGG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC;;;OAGG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC;;;OAGG;IACU,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzC;;;OAGG;IACU,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3C;;;;OAIG;IACU,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOtD"}
@@ -1,11 +1,21 @@
1
1
  import { Buffer } from 'node:buffer';
2
2
  import { SwitchbotDevice } from '../device.js';
3
3
  import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
4
+ const HUMIDIFIER_COMMAND_HEADER = '5701';
5
+ const TURN_ON_KEY = `${HUMIDIFIER_COMMAND_HEADER}0101`;
6
+ const TURN_OFF_KEY = `${HUMIDIFIER_COMMAND_HEADER}0102`;
7
+ const INCREASE_KEY = `${HUMIDIFIER_COMMAND_HEADER}0103`;
8
+ const DECREASE_KEY = `${HUMIDIFIER_COMMAND_HEADER}0104`;
9
+ const SET_AUTO_MODE_KEY = `${HUMIDIFIER_COMMAND_HEADER}0105`;
10
+ const SET_MANUAL_MODE_KEY = `${HUMIDIFIER_COMMAND_HEADER}0106`;
4
11
  /**
5
12
  * Class representing a WoHumi device.
6
13
  * @see https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/tree/latest/devicetypes
7
14
  */
8
15
  export class WoHumi extends SwitchbotDevice {
16
+ constructor(peripheral, noble) {
17
+ super(peripheral, noble);
18
+ }
9
19
  /**
10
20
  * Parses the service data for WoHumi.
11
21
  * @param {Buffer} serviceData - The service data buffer.
@@ -34,56 +44,71 @@ export class WoHumi extends SwitchbotDevice {
34
44
  };
35
45
  return data;
36
46
  }
37
- constructor(peripheral, noble) {
38
- super(peripheral, noble);
39
- }
40
47
  /**
41
48
  * Sends a command to the humidifier.
42
- * @param {number[]} bytes - The command bytes.
49
+ * @param {Buffer} reqBuf - The command buffer.
43
50
  * @returns {Promise<void>}
44
51
  */
45
- async operateHumi(bytes) {
46
- const reqBuf = Buffer.from(bytes);
52
+ async operateHumi(reqBuf) {
47
53
  const resBuf = await this.command(reqBuf);
48
54
  const code = resBuf.readUInt8(0);
49
55
  if (resBuf.length !== 3 || (code !== 0x01 && code !== 0x05)) {
50
56
  throw new Error(`The device returned an error: 0x${resBuf.toString('hex')}`);
51
57
  }
52
58
  }
53
- /**
54
- * Presses the humidifier button.
55
- * @returns {Promise<void>}
56
- */
57
- async press() {
58
- await this.operateHumi([0x57, 0x01, 0x00]);
59
- }
60
59
  /**
61
60
  * Turns on the humidifier.
62
61
  * @returns {Promise<void>}
63
62
  */
64
63
  async turnOn() {
65
- await this.operateHumi([0x57, 0x01, 0x01]);
64
+ await this.operateHumi(Buffer.from(TURN_ON_KEY, 'hex'));
66
65
  }
67
66
  /**
68
67
  * Turns off the humidifier.
69
68
  * @returns {Promise<void>}
70
69
  */
71
70
  async turnOff() {
72
- await this.operateHumi([0x57, 0x01, 0x02]);
71
+ await this.operateHumi(Buffer.from(TURN_OFF_KEY, 'hex'));
72
+ }
73
+ /**
74
+ * Increases the humidifier setting.
75
+ * @returns {Promise<void>}
76
+ */
77
+ async increase() {
78
+ await this.operateHumi(Buffer.from(INCREASE_KEY, 'hex'));
73
79
  }
74
80
  /**
75
81
  * Decreases the humidifier setting.
76
82
  * @returns {Promise<void>}
77
83
  */
78
- async down() {
79
- await this.operateHumi([0x57, 0x01, 0x03]);
84
+ async decrease() {
85
+ await this.operateHumi(Buffer.from(DECREASE_KEY, 'hex'));
80
86
  }
81
87
  /**
82
- * Increases the humidifier setting.
88
+ * Sets the humidifier to auto mode.
89
+ * @returns {Promise<void>}
90
+ */
91
+ async setAutoMode() {
92
+ await this.operateHumi(Buffer.from(SET_AUTO_MODE_KEY, 'hex'));
93
+ }
94
+ /**
95
+ * Sets the humidifier to manual mode.
96
+ * @returns {Promise<void>}
97
+ */
98
+ async setManualMode() {
99
+ await this.operateHumi(Buffer.from(SET_MANUAL_MODE_KEY, 'hex'));
100
+ }
101
+ /**
102
+ * Sets the humidifier level.
103
+ * @param {number} level - The level to set (0-100).
83
104
  * @returns {Promise<void>}
84
105
  */
85
- async up() {
86
- await this.operateHumi([0x57, 0x01, 0x04]);
106
+ async percentage(level) {
107
+ if (level < 0 || level > 100) {
108
+ throw new Error('Level must be between 0 and 100');
109
+ }
110
+ const levelKey = `${HUMIDIFIER_COMMAND_HEADER}0107${level.toString(16).padStart(2, '0')}`;
111
+ await this.operateHumi(Buffer.from(levelKey, 'hex'));
87
112
  }
88
113
  }
89
114
  //# sourceMappingURL=wohumi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wohumi.js","sourceRoot":"","sources":["../../src/device/wohumi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wohumi.js","sourceRoot":"","sources":["../../src/device/wohumi.ts"],"names":[],"mappings":"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"}
@@ -1,81 +1,33 @@
1
1
  import { Buffer } from 'node:buffer';
2
- import { describe, expect, it, vi } from 'vitest';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { SwitchbotDevice } from '../device.js';
3
4
  import { WoHumi } from '../device/wohumi.js';
4
- import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
5
5
  describe('woHumi', () => {
6
- const emitLog = vi.fn();
7
- describe('parseServiceData', () => {
8
- it('should return parsed data for valid service data', async () => {
9
- const serviceData = Buffer.from([0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00]);
10
- const result = await WoHumi.parseServiceData(serviceData, emitLog);
11
- expect(result).toEqual({
12
- model: SwitchBotBLEModel.Humidifier,
13
- modelName: SwitchBotBLEModelName.Humidifier,
14
- modelFriendlyName: SwitchBotBLEModelFriendlyName.Humidifier,
15
- onState: true,
16
- autoMode: true,
17
- percentage: 0,
18
- humidity: 0,
19
- });
20
- });
21
- it('should return null for invalid service data length', async () => {
22
- const serviceData = Buffer.from([0x00, 0x80, 0x00]);
23
- const result = await WoHumi.parseServiceData(serviceData, emitLog);
24
- expect(result).toBeNull();
25
- expect(emitLog).toHaveBeenCalledWith('error', '[parseServiceDataForWoHumi] Buffer length 3 !== 8!');
26
- });
27
- });
28
- describe('operateHumi', () => {
29
- it('should throw an error if the device returns an error', async () => {
30
- const peripheral = {};
31
- const wohumi = new WoHumi(peripheral, emitLog);
32
- vi.spyOn(wohumi, 'command').mockResolvedValue(Buffer.from([0x00, 0x00, 0x00]));
33
- await expect(wohumi.operateHumi([0x57, 0x01, 0x00])).rejects.toThrow('The device returned an error: 0x000000');
34
- });
35
- });
36
- describe('press', () => {
37
- it('should call operateHumi with correct bytes', async () => {
38
- const peripheral = {};
39
- const wohumi = new WoHumi(peripheral, emitLog);
40
- const operateHumiSpy = vi.spyOn(wohumi, 'operateHumi').mockResolvedValue();
41
- await wohumi.press();
42
- expect(operateHumiSpy).toHaveBeenCalledWith([0x57, 0x01, 0x00]);
43
- });
6
+ let wohumi;
7
+ let mockPeripheral;
8
+ let mockNoble;
9
+ beforeEach(() => {
10
+ mockPeripheral = {};
11
+ mockNoble = {};
12
+ wohumi = new WoHumi(mockPeripheral, mockNoble);
13
+ jest.spyOn(SwitchbotDevice.prototype, 'command').mockResolvedValue(Buffer.from([0x01, 0x00, 0x00]));
44
14
  });
45
- describe('turnOn', () => {
46
- it('should call operateHumi with correct bytes', async () => {
47
- const peripheral = {};
48
- const wohumi = new WoHumi(peripheral, emitLog);
49
- const operateHumiSpy = vi.spyOn(wohumi, 'operateHumi').mockResolvedValue();
50
- await wohumi.turnOn();
51
- expect(operateHumiSpy).toHaveBeenCalledWith([0x57, 0x01, 0x01]);
52
- });
53
- });
54
- describe('turnOff', () => {
55
- it('should call operateHumi with correct bytes', async () => {
56
- const peripheral = {};
57
- const wohumi = new WoHumi(peripheral, emitLog);
58
- const operateHumiSpy = vi.spyOn(wohumi, 'operateHumi').mockResolvedValue();
59
- await wohumi.turnOff();
60
- expect(operateHumiSpy).toHaveBeenCalledWith([0x57, 0x01, 0x02]);
61
- });
62
- });
63
- describe('down', () => {
64
- it('should call operateHumi with correct bytes', async () => {
65
- const peripheral = {};
66
- const wohumi = new WoHumi(peripheral, emitLog);
67
- const operateHumiSpy = vi.spyOn(wohumi, 'operateHumi').mockResolvedValue();
68
- await wohumi.down();
69
- expect(operateHumiSpy).toHaveBeenCalledWith([0x57, 0x01, 0x03]);
70
- });
15
+ afterEach(() => {
16
+ jest.restoreAllMocks();
71
17
  });
72
- describe('up', () => {
73
- it('should call operateHumi with correct bytes', async () => {
74
- const peripheral = {};
75
- const wohumi = new WoHumi(peripheral, emitLog);
76
- const operateHumiSpy = vi.spyOn(wohumi, 'operateHumi').mockResolvedValue();
77
- await wohumi.up();
78
- expect(operateHumiSpy).toHaveBeenCalledWith([0x57, 0x01, 0x04]);
18
+ describe('percentage', () => {
19
+ it('should throw an error if level is less than 0', async () => {
20
+ await expect(wohumi.percentage(-1)).rejects.toThrow('Level must be between 0 and 100');
21
+ });
22
+ it('should throw an error if level is greater than 100', async () => {
23
+ await expect(wohumi.percentage(101)).rejects.toThrow('Level must be between 0 and 100');
24
+ });
25
+ it('should send the correct command for a valid level', async () => {
26
+ const level = 50;
27
+ const expectedCommand = Buffer.from(`57010107${level.toString(16).padStart(2, '0')}`, 'hex');
28
+ const operateHumiSpy = jest.spyOn(wohumi, 'operateHumi');
29
+ await wohumi.percentage(level);
30
+ expect(operateHumiSpy).toHaveBeenCalledWith(expectedCommand);
79
31
  });
80
32
  });
81
33
  });
@@ -1 +1 @@
1
- {"version":3,"file":"wohumi.test.js","sourceRoot":"","sources":["../../src/test/wohumi.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wohumi.test.js","sourceRoot":"","sources":["../../src/test/wohumi.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,IAAI,MAAc,CAAA;IAClB,IAAI,cAAwC,CAAA;IAC5C,IAAI,SAA8B,CAAA;IAElC,UAAU,CAAC,GAAG,EAAE;QACd,cAAc,GAAG,EAA8B,CAAA;QAC/C,SAAS,GAAG,EAAyB,CAAA;QACrC,MAAM,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;QAC9C,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IACrG,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,eAAe,EAAE,CAAA;IACxB,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAA;QACxF,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAA;QACzF,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,KAAK,GAAG,EAAE,CAAA;YAChB,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;YAC5F,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAa,EAAE,aAAa,CAAC,CAAA;YAE/D,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YAE9B,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "node-switchbot",
3
3
  "type": "module",
4
- "version": "3.4.2-beta.1",
4
+ "version": "3.4.2-beta.3",
5
5
  "description": "The node-switchbot is a Node.js module which allows you to control your Switchbot Devices through Bluetooth (BLE).",
6
6
  "author": "OpenWonderLabs (https://github.com/OpenWonderLabs)",
7
7
  "license": "MIT",