Giter Club home page Giter Club logo

aio-homeghost's Introduction

aio-homeghost

Simple home automation server.

aio-homeghost

Generating events

HTTP

Example of configured "macro":

{
    "events": ["http.harmony.command"], 
    "actions": [
        ("harmony", "command", "{{device}}", "{{command}}"),
    ]
}

Endpoint: POST /event/<event_name>

curl --header "Content-Type: application/json" \
     --request POST \
     --data '{"device":"12345678","command":"Mute"}' \
     http://<host>:<port>/event/harmony.command
{
    "source": "http", 
    "name": "harmony.command", 
    "payload": {
        "device": "12345678",
        "command": "Mute",
    },
    "client": "192.168.1.10"
}

Using ESP8266 Arduino Core (e.g. an ESP-01):

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

HTTPClient http;

void setup()
{
  Serial.begin(115200);
  Serial.println();

  WiFi.persistent(false); // https://github.com/esp8266/Arduino/issues/1997
  WiFi.begin("<ssid>", "<password>");

  Serial.print("Connecting");
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println();

  Serial.print("Connected, IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
    if ((WiFi.status() == WL_CONNECTED)) {
        WiFiClient client;
        HTTPClient http;

        http.begin(client, "http://<host>:<port>/event/<event.name>");

        http.addHeader("Content-Type", "application/json");

        Serial.print("[HTTP] POST...\n");
        int httpCode = http.POST("{\"hello\":\"world\"}");

        if (httpCode > 0) {
            Serial.printf("[HTTP] POST... code: %d\n", httpCode);

            if (httpCode == HTTP_CODE_OK) {
                const String& payload = http.getString();
                Serial.println("received payload:\n<<");
                Serial.println(payload);
                Serial.println(">>");
            }
        } else {
            Serial.printf("[HTTP] POST... failed, error: %s\n", http.errorToString(httpCode).c_str());
        }

        http.end();
    }
    delay(10000);
}

aio-homeghost's People

Contributors

petterhj avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.