├── LICENSE ├── README.md ├── SupportedAppliances.md ├── index.js └── package.json /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 2, June 1991 3 | 4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | Preamble 10 | 11 | The licenses for most software are designed to take away your 12 | freedom to share and change it. By contrast, the GNU General Public 13 | License is intended to guarantee your freedom to share and change free 14 | software--to make sure the software is free for all its users. This 15 | General Public License applies to most of the Free Software 16 | Foundation's software and to any other program whose authors commit to 17 | using it. (Some other Free Software Foundation software is covered by 18 | the GNU Lesser General Public License instead.) You can apply it to 19 | your programs, too. 20 | 21 | When we speak of free software, we are referring to freedom, not 22 | price. Our General Public Licenses are designed to make sure that you 23 | have the freedom to distribute copies of free software (and charge for 24 | this service if you wish), that you receive source code or can get it 25 | if you want it, that you can change the software or use pieces of it 26 | in new free programs; and that you know you can do these things. 27 | 28 | To protect your rights, we need to make restrictions that forbid 29 | anyone to deny you these rights or to ask you to surrender the rights. 30 | These restrictions translate to certain responsibilities for you if you 31 | distribute copies of the software, or if you modify it. 32 | 33 | For example, if you distribute copies of such a program, whether 34 | gratis or for a fee, you must give the recipients all the rights that 35 | you have. You must make sure that they, too, receive or can get the 36 | source code. And you must show them these terms so they know their 37 | rights. 38 | 39 | We protect your rights with two steps: (1) copyright the software, and 40 | (2) offer you this license which gives you legal permission to copy, 41 | distribute and/or modify the software. 42 | 43 | Also, for each author's protection and ours, we want to make certain 44 | that everyone understands that there is no warranty for this free 45 | software. If the software is modified by someone else and passed on, we 46 | want its recipients to know that what they have is not the original, so 47 | that any problems introduced by others will not reflect on the original 48 | authors' reputations. 49 | 50 | Finally, any free program is threatened constantly by software 51 | patents. We wish to avoid the danger that redistributors of a free 52 | program will individually obtain patent licenses, in effect making the 53 | program proprietary. To prevent this, we have made it clear that any 54 | patent must be licensed for everyone's free use or not licensed at all. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | GNU GENERAL PUBLIC LICENSE 60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 61 | 62 | 0. This License applies to any program or other work which contains 63 | a notice placed by the copyright holder saying it may be distributed 64 | under the terms of this General Public License. The "Program", below, 65 | refers to any such program or work, and a "work based on the Program" 66 | means either the Program or any derivative work under copyright law: 67 | that is to say, a work containing the Program or a portion of it, 68 | either verbatim or with modifications and/or translated into another 69 | language. (Hereinafter, translation is included without limitation in 70 | the term "modification".) Each licensee is addressed as "you". 71 | 72 | Activities other than copying, distribution and modification are not 73 | covered by this License; they are outside its scope. The act of 74 | running the Program is not restricted, and the output from the Program 75 | is covered only if its contents constitute a work based on the 76 | Program (independent of having been made by running the Program). 77 | Whether that is true depends on what the Program does. 78 | 79 | 1. You may copy and distribute verbatim copies of the Program's 80 | source code as you receive it, in any medium, provided that you 81 | conspicuously and appropriately publish on each copy an appropriate 82 | copyright notice and disclaimer of warranty; keep intact all the 83 | notices that refer to this License and to the absence of any warranty; 84 | and give any other recipients of the Program a copy of this License 85 | along with the Program. 86 | 87 | You may charge a fee for the physical act of transferring a copy, and 88 | you may at your option offer warranty protection in exchange for a fee. 89 | 90 | 2. You may modify your copy or copies of the Program or any portion 91 | of it, thus forming a work based on the Program, and copy and 92 | distribute such modifications or work under the terms of Section 1 93 | above, provided that you also meet all of these conditions: 94 | 95 | a) You must cause the modified files to carry prominent notices 96 | stating that you changed the files and the date of any change. 97 | 98 | b) You must cause any work that you distribute or publish, that in 99 | whole or in part contains or is derived from the Program or any 100 | part thereof, to be licensed as a whole at no charge to all third 101 | parties under the terms of this License. 102 | 103 | c) If the modified program normally reads commands interactively 104 | when run, you must cause it, when started running for such 105 | interactive use in the most ordinary way, to print or display an 106 | announcement including an appropriate copyright notice and a 107 | notice that there is no warranty (or else, saying that you provide 108 | a warranty) and that users may redistribute the program under 109 | these conditions, and telling the user how to view a copy of this 110 | License. (Exception: if the Program itself is interactive but 111 | does not normally print such an announcement, your work based on 112 | the Program is not required to print an announcement.) 113 | 114 | These requirements apply to the modified work as a whole. If 115 | identifiable sections of that work are not derived from the Program, 116 | and can be reasonably considered independent and separate works in 117 | themselves, then this License, and its terms, do not apply to those 118 | sections when you distribute them as separate works. But when you 119 | distribute the same sections as part of a whole which is a work based 120 | on the Program, the distribution of the whole must be on the terms of 121 | this License, whose permissions for other licensees extend to the 122 | entire whole, and thus to each and every part regardless of who wrote it. 123 | 124 | Thus, it is not the intent of this section to claim rights or contest 125 | your rights to work written entirely by you; rather, the intent is to 126 | exercise the right to control the distribution of derivative or 127 | collective works based on the Program. 128 | 129 | In addition, mere aggregation of another work not based on the Program 130 | with the Program (or with a work based on the Program) on a volume of 131 | a storage or distribution medium does not bring the other work under 132 | the scope of this License. 133 | 134 | 3. You may copy and distribute the Program (or a work based on it, 135 | under Section 2) in object code or executable form under the terms of 136 | Sections 1 and 2 above provided that you also do one of the following: 137 | 138 | a) Accompany it with the complete corresponding machine-readable 139 | source code, which must be distributed under the terms of Sections 140 | 1 and 2 above on a medium customarily used for software interchange; or, 141 | 142 | b) Accompany it with a written offer, valid for at least three 143 | years, to give any third party, for a charge no more than your 144 | cost of physically performing source distribution, a complete 145 | machine-readable copy of the corresponding source code, to be 146 | distributed under the terms of Sections 1 and 2 above on a medium 147 | customarily used for software interchange; or, 148 | 149 | c) Accompany it with the information you received as to the offer 150 | to distribute corresponding source code. (This alternative is 151 | allowed only for noncommercial distribution and only if you 152 | received the program in object code or executable form with such 153 | an offer, in accord with Subsection b above.) 154 | 155 | The source code for a work means the preferred form of the work for 156 | making modifications to it. For an executable work, complete source 157 | code means all the source code for all modules it contains, plus any 158 | associated interface definition files, plus the scripts used to 159 | control compilation and installation of the executable. However, as a 160 | special exception, the source code distributed need not include 161 | anything that is normally distributed (in either source or binary 162 | form) with the major components (compiler, kernel, and so on) of the 163 | operating system on which the executable runs, unless that component 164 | itself accompanies the executable. 165 | 166 | If distribution of executable or object code is made by offering 167 | access to copy from a designated place, then offering equivalent 168 | access to copy the source code from the same place counts as 169 | distribution of the source code, even though third parties are not 170 | compelled to copy the source along with the object code. 171 | 172 | 4. You may not copy, modify, sublicense, or distribute the Program 173 | except as expressly provided under this License. Any attempt 174 | otherwise to copy, modify, sublicense or distribute the Program is 175 | void, and will automatically terminate your rights under this License. 176 | However, parties who have received copies, or rights, from you under 177 | this License will not have their licenses terminated so long as such 178 | parties remain in full compliance. 179 | 180 | 5. You are not required to accept this License, since you have not 181 | signed it. However, nothing else grants you permission to modify or 182 | distribute the Program or its derivative works. These actions are 183 | prohibited by law if you do not accept this License. Therefore, by 184 | modifying or distributing the Program (or any work based on the 185 | Program), you indicate your acceptance of this License to do so, and 186 | all its terms and conditions for copying, distributing or modifying 187 | the Program or works based on it. 188 | 189 | 6. Each time you redistribute the Program (or any work based on the 190 | Program), the recipient automatically receives a license from the 191 | original licensor to copy, distribute or modify the Program subject to 192 | these terms and conditions. You may not impose any further 193 | restrictions on the recipients' exercise of the rights granted herein. 194 | You are not responsible for enforcing compliance by third parties to 195 | this License. 196 | 197 | 7. If, as a consequence of a court judgment or allegation of patent 198 | infringement or for any other reason (not limited to patent issues), 199 | conditions are imposed on you (whether by court order, agreement or 200 | otherwise) that contradict the conditions of this License, they do not 201 | excuse you from the conditions of this License. If you cannot 202 | distribute so as to satisfy simultaneously your obligations under this 203 | License and any other pertinent obligations, then as a consequence you 204 | may not distribute the Program at all. For example, if a patent 205 | license would not permit royalty-free redistribution of the Program by 206 | all those who receive copies directly or indirectly through you, then 207 | the only way you could satisfy both it and this License would be to 208 | refrain entirely from distribution of the Program. 209 | 210 | If any portion of this section is held invalid or unenforceable under 211 | any particular circumstance, the balance of the section is intended to 212 | apply and the section as a whole is intended to apply in other 213 | circumstances. 214 | 215 | It is not the purpose of this section to induce you to infringe any 216 | patents or other property right claims or to contest validity of any 217 | such claims; this section has the sole purpose of protecting the 218 | integrity of the free software distribution system, which is 219 | implemented by public license practices. Many people have made 220 | generous contributions to the wide range of software distributed 221 | through that system in reliance on consistent application of that 222 | system; it is up to the author/donor to decide if he or she is willing 223 | to distribute software through any other system and a licensee cannot 224 | impose that choice. 225 | 226 | This section is intended to make thoroughly clear what is believed to 227 | be a consequence of the rest of this License. 228 | 229 | 8. If the distribution and/or use of the Program is restricted in 230 | certain countries either by patents or by copyrighted interfaces, the 231 | original copyright holder who places the Program under this License 232 | may add an explicit geographical distribution limitation excluding 233 | those countries, so that distribution is permitted only in or among 234 | countries not thus excluded. In such case, this License incorporates 235 | the limitation as if written in the body of this License. 236 | 237 | 9. The Free Software Foundation may publish revised and/or new versions 238 | of the General Public License from time to time. Such new versions will 239 | be similar in spirit to the present version, but may differ in detail to 240 | address new problems or concerns. 241 | 242 | Each version is given a distinguishing version number. If the Program 243 | specifies a version number of this License which applies to it and "any 244 | later version", you have the option of following the terms and conditions 245 | either of that version or of any later version published by the Free 246 | Software Foundation. If the Program does not specify a version number of 247 | this License, you may choose any version ever published by the Free Software 248 | Foundation. 249 | 250 | 10. If you wish to incorporate parts of the Program into other free 251 | programs whose distribution conditions are different, write to the author 252 | to ask for permission. For software which is copyrighted by the Free 253 | Software Foundation, write to the Free Software Foundation; we sometimes 254 | make exceptions for this. Our decision will be guided by the two goals 255 | of preserving the free status of all derivatives of our free software and 256 | of promoting the sharing and reuse of software generally. 257 | 258 | NO WARRANTY 259 | 260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 268 | REPAIR OR CORRECTION. 269 | 270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 278 | POSSIBILITY OF SUCH DAMAGES. 279 | 280 | END OF TERMS AND CONDITIONS 281 | 282 | How to Apply These Terms to Your New Programs 283 | 284 | If you develop a new program, and you want it to be of the greatest 285 | possible use to the public, the best way to achieve this is to make it 286 | free software which everyone can redistribute and change under these terms. 287 | 288 | To do so, attach the following notices to the program. It is safest 289 | to attach them to the start of each source file to most effectively 290 | convey the exclusion of warranty; and each file should have at least 291 | the "copyright" line and a pointer to where the full notice is found. 292 | 293 | {description} 294 | Copyright (C) {year} {fullname} 295 | 296 | This program is free software; you can redistribute it and/or modify 297 | it under the terms of the GNU General Public License as published by 298 | the Free Software Foundation; either version 2 of the License, or 299 | (at your option) any later version. 300 | 301 | This program is distributed in the hope that it will be useful, 302 | but WITHOUT ANY WARRANTY; without even the implied warranty of 303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 304 | GNU General Public License for more details. 305 | 306 | You should have received a copy of the GNU General Public License along 307 | with this program; if not, write to the Free Software Foundation, Inc., 308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 309 | 310 | Also add information on how to contact you by electronic and paper mail. 311 | 312 | If the program is interactive, make it output a short notice like this 313 | when it starts in an interactive mode: 314 | 315 | Gnomovision version 69, Copyright (C) year name of author 316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 | This is free software, and you are welcome to redistribute it 318 | under certain conditions; type `show c' for details. 319 | 320 | The hypothetical commands `show w' and `show c' should show the appropriate 321 | parts of the General Public License. Of course, the commands you use may 322 | be called something other than `show w' and `show c'; they could even be 323 | mouse-clicks or menu items--whatever suits your program. 324 | 325 | You should also get your employer (if you work as a programmer) or your 326 | school, if any, to sign a "copyright disclaimer" for the program, if 327 | necessary. Here is a sample; alter the names: 328 | 329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 330 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 331 | 332 | {signature of Ty Coon}, 1 April 1989 333 | Ty Coon, President of Vice 334 | 335 | This General Public License does not permit incorporating your program into 336 | proprietary programs. If your program is a subroutine library, you may 337 | consider it more useful to permit linking proprietary applications with the 338 | library. If this is what you want to do, use the GNU Lesser General 339 | Public License instead of this License. 340 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Green Bean 2 | **An Adapter for the Appliance Maker Community** 3 | 4 | The [Green Bean](http://firstbuild.com/greenbean) is a hardware adapter that provides a USB interface to General Electric appliances. This allows devices such as a laptop or a [Raspberry Pi](http://www.raspberrypi.org) to easily connect with, and control, General Electric appliances. For the purpose of this guide, we will be assuming that you will be connecting an appliance to your laptop using the Green Bean. 5 | 6 | ## Overview 7 | 8 | 1. [Getting Started](#getting-started) 9 | - [Connecting the Green Bean to an Appliance](#connecting-the-green-bean-to-an-appliance) 10 | - [Connecting the Green Bean to a Laptop](#connecting-the-green-bean-to-a-laptop) 11 | - [Installing the Software](#installing-the-software) 12 | 2. [Using the Green Bean Software](#using-the-green-bean-software) 13 | - [Reading the Cycle Status of the Dishwasher](#reading-the-cycle-status-of-the-dishwasher) 14 | - [Starting a Cook Mode on the Oven](#starting-a-cook-mode-on-the-oven) 15 | - [Receiving a Temperature Alert from the Refrigerator](#receiving-a-temperature-alert-from-the-refrigerator) 16 | - [Receiving an End of Cycle Notification from the Dryer](#receiving-an-end-of-cycle-notification-from-the-dryer) 17 | - [Changing the Setpoint on the Water Heater](#changing-the-setpoint-on-the-water-heater) 18 | 19 | ### Getting Started 20 | There are a few steps that must be performed before we will be able to start controlling an appliance. 21 | 22 | #### Connecting the Green Bean to an Appliance 23 | The Green Bean must be connected to a [supported 24 | appliance](SupportedAppliances.md) using an RJ45 cable. Any 25 | off-the-shelf ethernet cable should work. **It is important not to use a 26 | crossover cable as this may damage the Green Bean**. 27 | 28 | #### Connecting the Green Bean to a Laptop 29 | The Green Bean must be connected to your laptop with a USB micro cable. Again, any off-the-shelf USB micro cable should work. The Green Bean is powered over USB and should appear as a USB HID device on your laptop shortly after it is plugged in. 30 | 31 | #### Installing the Software 32 | The software that controls the Green Bean and communicates with the appliances must be installed before you can start developing applications to control your appliance. If you have not already, please download and install [node.js](http://nodejs.org/download) and then install the Green Bean software by running the following command from a terminal. 33 | 34 | ``` 35 | npm install green-bean 36 | ``` 37 | 38 | ### Using the Green Bean Software 39 | To demonstrate the features of the Green Bean, I will show how easy it is to connect to an appliance and start communicating with it. Below are a few node.js applications that demonstrate how to communicate with, and control, an appliance. 40 | 41 | #### Reading the Cycle Status of the Dishwasher 42 | Below is an example of how to read the cycle status of the dishwasher. For a more in-depth look at this example, see the [cycle status](https://github.com/GEMakers/gea-plugin-dishwasher#dishwashercyclestatus) documentation. 43 | 44 | ``` javascript 45 | var greenBean = require("green-bean"); 46 | 47 | greenBean.connect("dishwasher", function (dishwasher) { 48 | dishwasher.cycleStatus.read(function (value) { 49 | console.log("cycle status:", value); 50 | }); 51 | }); 52 | ``` 53 | 54 | #### Starting a Cook Mode on the Oven 55 | Below is an example of how to start a cook mode on an oven. For a more in-depth look at this example, see the [cook mode](https://github.com/GEMakers/gea-plugin-range#rangeupperovencookmode) documentation. 56 | 57 | ``` javascript 58 | var greenBean = require("green-bean"); 59 | 60 | greenBean.connect("range", function (range) { 61 | range.upperOven.cookMode.write({ 62 | mode: 18, 63 | cookTemperature: 350, 64 | cookHours: 1, 65 | cookMinutes: 0 66 | }); 67 | }); 68 | ``` 69 | 70 | #### Receiving a Temperature Alert from the Refrigerator 71 | Below is an example of how to subscribe to temperature alerts for a refrigerator. For a more in-depth look at this example, see the [temperature alert](https://github.com/GEMakers/gea-plugin-refrigerator#temperature-alert) documentation. 72 | 73 | ``` javascript 74 | var greenBean = require("green-bean"); 75 | 76 | greenBean.connect("refrigerator", function (refrigerator) { 77 | refrigerator.temperatureAlert.subscribe(function (value) { 78 | console.log("temperature alert:", value); 79 | }); 80 | }); 81 | ``` 82 | 83 | #### Receiving an End of Cycle Notification from the Dryer 84 | Below is an example of how to subscribe to an end of cycle notification from a dryer. For a more in-depth look at this example, see the [end of cycle](https://github.com/GEMakers/gea-plugin-laundry#laundryendofcycle) documentation. 85 | 86 | ``` javascript 87 | var greenBean = require("green-bean"); 88 | 89 | greenBean.connect("laundry", function (laundry) { 90 | laundry.endOfCycle.subscribe(function (value) { 91 | console.log("end of cycle:", value); 92 | }); 93 | }); 94 | ``` 95 | 96 | #### Changing the Setpoint on the Water Heater 97 | Below is an example of how to change the user setpoint on a water heater. For a more in-depth look at this example, see the [user setpoint](https://github.com/GEMakers/gea-plugin-water-heater#waterheaterusersetpoint) documentation. 98 | 99 | ``` javascript 100 | var greenBean = require("green-bean"); 101 | 102 | greenBean.connect("water-heater", function(waterHeater) { 103 | waterHeater.userSetpoint.write(100); 104 | }); 105 | ``` 106 | -------------------------------------------------------------------------------- /SupportedAppliances.md: -------------------------------------------------------------------------------- 1 | # Supported Appliances 2 | 3 | Below is a list of model numbers for General Electric appliances that are 4 | supported by the Green Bean. 5 | 6 | #### Table of Contents 7 | 1. [Bottom Freezer Refrigerators](#bottom-freezer-refrigerators) 8 | 1. [Dishwashers](#dishwashers) 9 | 1. [Free-Standing Electric Ranges](#free-standing-electric-ranges) 10 | 1. [Free-Standing Gas Ranges](#free-standing-gas-ranges) 11 | 1. [Front-Load Dryers](#front-load-dryers) 12 | 1. [Front-Load Washers](#front-load-washers) 13 | 1. [Top-Load Dryers](#top-load-dryers) 14 | 1. [Top-Load Washers](#top-load-washers) 15 | 1. [Wall Ovens](#wall-ovens) 16 | 1. [Water Heaters](#water-heaters) 17 | 18 | ## Bottom Freezer Refrigerators 19 | - CFE29TSDBSS 20 | - CFE29TSDCSS 21 | - CYE23TSDBSS 22 | - CYE23TSDCSS 23 | - DFE29JGDABB 24 | - DFE29JGDAWW 25 | - DFE29JGDBBB 26 | - DFE29JGDBWW 27 | - DFE29JGDCBB 28 | - DFE29JGDCWW 29 | - DFE29JMDAES 30 | - DFE29JMDBES 31 | - DFE29JMDCES 32 | - DFE29JMDDES 33 | - DFE29JMEAES 34 | - DFE29JMEBES 35 | - DFE29JSDASS 36 | - DFE29JSDBSS 37 | - DFE29JSDCSS 38 | - GFE27GGDABB 39 | - GFE27GGDAWW 40 | - GFE27GGDBBB 41 | - GFE27GGDBWW 42 | - GFE27GGDCBB 43 | - GFE27GGDCWW 44 | - GFE27GGEABB 45 | - GFE27GGEAES 46 | - GFE27GGEAWW 47 | - GFE27GMDBES 48 | - GFE27GMDCES 49 | - GFE27GMDDES 50 | - GFE27GSDASS 51 | - GFE27GSDBSS 52 | - GFE27GSDCSS 53 | - GFE27HSECSS 54 | - GFE29HGDABB 55 | - GFE29HGDAWW 56 | - GFE29HGDBBB 57 | - GFE29HGDBWW 58 | - GFE29HGDCBB 59 | - GFE29HGDCWW 60 | - GFE29HMDAES 61 | - GFE29HMDBES 62 | - GFE29HMDCES 63 | - GFE29HMEAES 64 | - GFE29HMEBES 65 | - GFE29HMECES 66 | - GFE29HMEDES 67 | - GFE29HSDASS 68 | - GFE29HSDBSS 69 | - GFE29HSDCSS 70 | - GNE26GGDBBB 71 | - GNE26GGDBWW 72 | - GNE26GGDCBB 73 | - GNE26GGDCWW 74 | - GNE26GMDCES 75 | - GNE26GMDDES 76 | - GNE26GSDCSS 77 | - GNE26GSDDSS 78 | - PFE27KGDBBB 79 | - PFE27KSDASS 80 | - PFE27KSDBSS 81 | - PFE27KSDCSS 82 | - PFE29PSDASS 83 | - PFE29PSDBSS 84 | - PFE29PSDCSS 85 | - PWE23KGDBBB 86 | - PWE23KGDBWW 87 | - PWE23KMDBES 88 | - PWE23KSDBSS 89 | - PYE23KGDBBB 90 | - PYE23KSDBSS 91 | - PYE23KSDCSS 92 | - PYE23PSDBSS 93 | - PYE23PSDCSS 94 | 95 | ## Dishwashers 96 | - ADT521PGF0BS 97 | - ADT521PGF0WS 98 | - ADT521PGF2BS 99 | - ADT521PGF2WS 100 | - CDT725SSF0SS 101 | - CDT765SSF0SS 102 | - DDT575SGF0BB 103 | - DDT575SGF0WW 104 | - DDT575SMF0ES 105 | - DDT575SSF0SS 106 | - GDF510PGD0BB 107 | - GDF510PGD0WW 108 | - GDF510PGD1BB 109 | - GDF510PGD1WW 110 | - GDF510PMD0MB 111 | - GDF510PMD0SA 112 | - GDF510PMD1MB 113 | - GDF510PMD1SA 114 | - GDF510PSD0SS 115 | - GDF510PSD1SS 116 | - GDF520PGD0BB 117 | - GDF520PGD0CC 118 | - GDF520PGD0WW 119 | - GDF520PGD1BB 120 | - GDF520PGD1CC 121 | - GDF520PGD1WW 122 | - GDF520PSD0SS 123 | - GDF520PSD1SS 124 | - GDF520PSF1SS 125 | - GDF520PSF2SS 126 | - GDF540HGD0BB 127 | - GDF540HGD0WW 128 | - GDF540HGD1BB 129 | - GDF540HGD1WW 130 | - GDF540HMF0ES 131 | - GDF540HMF2ES 132 | - GDF540HSD0SS 133 | - GDF540HSD1SS 134 | - GDF540HSF1SS 135 | - GDF540HSF2SS 136 | - GDF570SGF0BB 137 | - GDF570SGF0CC 138 | - GDF570SGF0WW 139 | - GDF570SSF0SS 140 | - GDT530PGD0BB 141 | - GDT530PGD0WW 142 | - GDT530PGD1BB 143 | - GDT530PGD1WW 144 | - GDT530PSD0SS 145 | - GDT530PSD1SS 146 | - GDT550HGD0BB 147 | - GDT550HGD0WW 148 | - GDT550HGD1BB 149 | - GDT550HGD1WW 150 | - GDT550HSD0SS 151 | - GDT550HSD1SS 152 | - GDT580SGF0BB 153 | - GDT580SGF0WW 154 | - GDT580SMF0ES 155 | - GDT580SSF0SS 156 | - GDT720SGF0BB 157 | - GDT720SGF0WW 158 | - GDT720SSF0SS 159 | - GDT740SIF0II 160 | - GDT740SSF0SS 161 | - PDT750SSF0SS 162 | - PDT760SIF0II 163 | - PDT760SSF0SS 164 | - ZDT800SIF0II 165 | - ZDT800SPF0SS 166 | - ZDT800SSF0SS 167 | - ZDT870SIF0II 168 | - ZDT870SPF0SS 169 | - ZDT870SSF0SS 170 | 171 | ## Free-Standing Electric Ranges 172 | - JB740DF1BB 173 | - JB740SF1SS 174 | - JB740TF1WW 175 | - JB745DF1BB 176 | - JB745DF1WW 177 | - JB745EF1ES 178 | - JB745SF1SS 179 | - JB750DF1BB 180 | - JB750DF1CC 181 | - JB750DF1WW 182 | - JB750EF1ES 183 | - JB750SF1SS 184 | - JB850DF1BB 185 | - JB850DF1WW 186 | - JB850EF1ES 187 | - JB850SF1SS 188 | - JB870DF1BB 189 | - JB870SF1SS 190 | - JB870TF1WW 191 | - P2B940DEF1BB 192 | - P2B940DEF1WW 193 | - P2B940SEF1SS 194 | - PB930DF1BB 195 | - PB930SF1SS 196 | - PB930TF1WW 197 | - PB950SF1SS 198 | 199 | ## Free-Standing Gas Ranges 200 | - JGB750DEF1BB 201 | - JGB750DEF1CC 202 | - JGB750DEF1WW 203 | - JGB750EEF1ES 204 | - JGB750SEF1SS 205 | - JGB760DEF1BB 206 | - JGB760DEF1WW 207 | - JGB760EEF1ES 208 | - JGB760SEF1SS 209 | - JGB770DEF1BB 210 | - JGB770DEF1WW 211 | - JGB770SEF1SS 212 | - JGB850DEF1BB 213 | - JGB850DEF1WW 214 | - JGB850EEF1ES 215 | - JGB850SEF1SS 216 | - JGB870DEF1BB 217 | - JGB870DEF1WW 218 | - JGB870SEF1SS 219 | - PGB920DEF1BB 220 | - PGB920DEF1WW 221 | - PGB920SEF1SS 222 | - PGB940DEF1BB 223 | - PGB940DEF1WW 224 | - PGB940SEF1SS 225 | - PGB945SEF1SS 226 | - PGB950DEF1BB 227 | - PGB950DEF1WW 228 | - PGB950SEF1SS 229 | 230 | ## Front-Load Dryers 231 | - GFDR270EH0WW 232 | - GFDR270GH0WW 233 | - GFDR480EF0WW 234 | - GFDR480GF0WW 235 | - GFDR485EF0MC 236 | - GFDR485EF0RR 237 | - GFDR485GF0MC 238 | - GFDR485GF0RR 239 | - GFDS250EF0WW 240 | - GFDS250GF0WW 241 | - GFDS260EF0WW 242 | - GFDS260GF0WW 243 | - GFDS265EF0MC 244 | - GFDS265EF0RR 245 | - GFDS265GF0MC 246 | - GFDS265GF0RR 247 | - GHDS360EF0WW 248 | - GHDS360GF0WW 249 | - GHDS365EF0MC 250 | - GHDS365EF0RR 251 | - GHDS365GF0MC 252 | - GHDS365GF0RR 253 | 254 | ## Front-Load Washers 255 | - GFWR2700H0WW 256 | - GFWR4800F0WW 257 | - GFWR4805F0MC 258 | - GFWR4805F0RR 259 | - GFWS2500F0WW 260 | - GFWS2600F0WW 261 | - GFWS2605F0MC 262 | - GFWS2605F0RR 263 | - GHWS3600F0WW 264 | - GHWS3605F0MC 265 | - GHWS3605F0RR 266 | 267 | ## Top-Load Dryers 268 | - GHDS830ED0WS 269 | - GHDS830GD0WS 270 | - GHDS835ED0MC 271 | - GHDS835GD0MC 272 | - GTDL740ED0WW 273 | - GTDL740GD0WW 274 | - GTDP740ED0WW 275 | - GTDP740GD0WW 276 | - GTDS810ED0WS 277 | - GTDS810GD0WS 278 | - GTDS815ED0MC 279 | - GTDS815GD0MC 280 | - GTDS820ED0WS 281 | - GTDS820GD0WS 282 | - GTDS825ED0MC 283 | - GTDS825GD0MC 284 | - GTDS850ED0WS 285 | - GTDS850GD0WS 286 | - GTDS855ED0MC 287 | - GTDS855GD0MC 288 | - GTDS860ED0WS 289 | - GTDS860GD0WS 290 | - GTDS865ED0MC 291 | - GTDS865GD0MC 292 | 293 | ## Top-Load Washers 294 | - GHWN8350D0WS 295 | - GHWN8355D0MC 296 | - GTWN7450D0WW 297 | - GTWN8150D0WS 298 | - GTWN8155D0MC 299 | - GTWN8250D0WS 300 | - GTWS8450D0WS 301 | - GTWS8455D0MC 302 | - GTWS8650D0WS 303 | - GTWS8655D0MC 304 | 305 | ## Wall Ovens 306 | - JK3000DF1BB 307 | - JK3000DF1CC 308 | - JK3000DF1WW 309 | - JK3000DF2BB 310 | - JK3000DF2CC 311 | - JK3000DF2WW 312 | - JK3000SF1SS 313 | - JK3000SF2SS 314 | - JK3500DF1BB 315 | - JK3500DF1CC 316 | - JK3500DF1WW 317 | - JK3500DF2BB 318 | - JK3500DF2CC 319 | - JK3500DF2WW 320 | - JK3500SF1SS 321 | - JK3500SF2SS 322 | - JK5000DF1BB 323 | - JK5000DF1WW 324 | - JK5000DF2BB 325 | - JK5000DF2WW 326 | - JK5000SF1SS 327 | - JK5000SF2SS 328 | - JK5500DF1BB 329 | - JK5500DF1WW 330 | - JK5500DF2BB 331 | - JK5500DF2WW 332 | - JK5500SF1SS 333 | - JK5500SF2SS 334 | - JT3000DF1BB 335 | - JT3000DF1CC 336 | - JT3000DF1WW 337 | - JT3000DF2BB 338 | - JT3000DF2CC 339 | - JT3000DF2WW 340 | - JT3000SF1SS 341 | - JT3000SF2SS 342 | - JT3500DF1BB 343 | - JT3500DF1CC 344 | - JT3500DF1WW 345 | - JT3500DF2BB 346 | - JT3500DF2CC 347 | - JT3500DF2WW 348 | - JT3500SF1SS 349 | - JT3500SF2SS 350 | - JT5000DF1BB 351 | - JT5000DF1WW 352 | - JT5000DF2BB 353 | - JT5000DF2WW 354 | - JT5000SF1SS 355 | - JT5000SF2SS 356 | - JT5500DF1BB 357 | - JT5500DF1WW 358 | - JT5500DF2BB 359 | - JT5500DF2WW 360 | - JT5500SF1SS 361 | - JT5500SF2SS 362 | - PK7000DF1BB 363 | - PK7000DF1WW 364 | - PK7000DF2BB 365 | - PK7000DF2WW 366 | - PK7000SF1SS 367 | - PK7000SF2SS 368 | - PK7500DF1BB 369 | - PK7500DF1WW 370 | - PK7500DF2BB 371 | - PK7500DF2WW 372 | - PK7500SF1SS 373 | - PK7500SF2SS 374 | - PT7050DF1BB 375 | - PT7050DF1WW 376 | - PT7050DF2BB 377 | - PT7050DF2WW 378 | - PT7050SF1SS 379 | - PT7050SF2SS 380 | - PT7550DF1BB 381 | - PT7550DF1WW 382 | - PT7550DF2BB 383 | - PT7550DF2WW 384 | - PT7550SF1SS 385 | - PT7550SF2SS 386 | - PT9050DF1BB 387 | - PT9050DF2BB 388 | - PT9050SF1SS 389 | - PT9050SF2SS 390 | - PT9550DF1BB 391 | - PT9550DF2BB 392 | - PT9550SF1SS 393 | - PT9550SF2SS 394 | 395 | ## Water Heaters 396 | - GEH50DEEDSCA 397 | - GEH50DEEDSCB 398 | - GEH50DEEDSRA 399 | - GEH50DEEDSRB 400 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 General Electric 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 | * 18 | */ 19 | 20 | var gea = require("gea-sdk"); 21 | var adapter = require("gea-adapter-usb"); 22 | 23 | exports.connect = function (appliance, callback) { 24 | var app = gea.configure({ 25 | address: 0x1b, 26 | version: [ 0, 0, 0, 0 ] 27 | }); 28 | 29 | app.plugin(require("gea-plugin-" + appliance)); 30 | 31 | app.bind(adapter, function (bus) { 32 | bus.on(appliance, callback); 33 | }); 34 | }; 35 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "green-bean", 3 | "description" : "An Adapter for the Appliance Maker Community", 4 | "homepage" : "https://github.com/GEMakers/green-bean", 5 | "keywords" : [ "GE", "GEA", "SDK", "General Electric", "Green Bean" ], 6 | "author" : "Christopher Baker ", 7 | "repository" : { 8 | "type": "git", "url": "https://github.com/GEMakers/green-bean.git" 9 | }, 10 | "version" : "0.1.1", 11 | "dependencies": { 12 | "gea-sdk": "git+https://github.com/GEMakers/gea-sdk.git", 13 | "gea-adapter-usb": "git+https://github.com/GEMakers/gea-adapter-usb.git", 14 | "gea-plugin-range": "git+https://github.com/GEMakers/gea-plugin-range.git", 15 | "gea-plugin-dishwasher": "git+https://github.com/GEMakers/gea-plugin-dishwasher.git", 16 | "gea-plugin-refrigerator": "git+https://github.com/GEMakers/gea-plugin-refrigerator.git", 17 | "gea-plugin-laundry": "git+https://github.com/GEMakers/gea-plugin-laundry.git", 18 | "gea-plugin-water-heater": "git+https://github.com/GEMakers/gea-plugin-water-heater.git" 19 | } 20 | } 21 | --------------------------------------------------------------------------------