rudybrian / GreenBeanify

Interface with your Green Bean connected GE appliance via web services
https://firstbuild.com/brudy/idea-ywuogk/
GNU General Public License v2.0
3 stars 1 forks source link

GreenBeanify

Description

GreenBeanify is an Express-based web service that interfaces (via firstbuild's Green Bean) to your late model GE appliance and exposes all status and control functionality available in the gea-sdk via several different web services. This extensibility enables your appliance to join the Internet of Things (IoT) and will allow you to locally or remotely interface your appliance with other network-attached home services such as home automation and security systems, energy monitoring systems, smart devices and whatever else you can imagine. Since the Green Bean requires USB connectivity to the machine running GreenBeanify, it is recommended that you use a Raspberry Pi or similar SBC with Ethernet or WiFi connectivity to run this application.

Example use cases

Screen Shots

Status

Installation instructions

Settings

Modify config.json as needed for your system. Note: the //comments below are not valid JSON, they are for guidance only and should not be copy-pasted

{
  "instance": "main",
  "listen_port": 3000,                          //The TCP port that express will listen on 
  "post": {
    "enabled": true,                            //Global enable/disable for callback HTTP POST 
    "post_host": "192.168.69.8",                //The IP or hostname to send the callback POSTs to
    "post_port": "8080",                        //The port to send the callback POSTs to
    "post_path": "/bin/GreenBeanifyHandler.pl", //The path to send the HTTP POSTs to
    "laundry": {
      "machineStatus": true,                    //Atomic enable/disable of machineStatus callback POSTs
      "machineSubCycle": true,
      "endOfCycle": true,
      "cycleCount": true,
      "dryerServiceErrorCodes": true,
      "dsmOverridesAllowed": true,
      "maximumWaterTemperature": true,
      "timeRemainingInSeconds": true,
      "tankType": true,
      "tankEnabled": true,
      "tankPercentageRemaining": true,
      "cycleSelected": true,
      "washerUserInterfaceServiceErrorCodes": true,
      "washerInverterServiceErrorCodes": true,
      "washerMainControlServiceErrorCodes": true,
      "operatingMode": true,
      "dryerCriticalResponseEnabled": true,
      "delayTimeRemainingInMinutes": true
    }
  }
}

Current Implimentation

Provides two methods of getting/setting the appliance state:

HTTP GET

The HTTP GET request paths correspond with the gea-plugin-laundry's API call.

Default output format is raw text. Additional format options can be specified by adding /format/ to the URL e.g. /laundry/machineStatus/json/ where format can be json or numeric.

Example output:

text
Idle
numeric
0
json
{
    "text": "Idle",
    "numeric": 0
}

Subscription/callback HTTP POST

Subscribes to selected set of events (as determined by settings in config.json) and sends callbacks to given URL with JSON in the POST body with details on what has changed when changes occur.

Example of callback JSON:

{
    "GreenBeanify":{
        "id":"fe143a5c-0a3f-4a38-9a17-41a4e2e77653",
        "created_at":"2014-10-13T20:07:15.667Z",
        "status":"changed",
        "messageType":"laundry.machineStatus", 
        "applianceAddress":36,
        "applianceType":"Clothes washer",
        "modelNumber":"GFWR4805F0MC",
        "serialNumber":"ZAxxxxxxG",
        "applianceVersion":"0.1.1.46.1.91.1.1.3",
        "softwareVersion":"0.1.0",
        "data":{
            "text":"Idle",
            "numeric":0
        }
    }
}

Design Goals

History

References