Developers

Developer Documentation

Build custom integrations and extend HomeFlowHub functionality with our APIs.

IFTTT Webhook Integration

Webhook Configuration
Configure IFTTT webhooks to trigger applets from HomeFlowHub

Each button can be configured to send a webhook request to IFTTT. The webhook URL format is:

https://maker.ifttt.com/trigger/{event}/with/key/{your_key}
Request Format

HomeFlowHub sends a POST request with JSON payload:

{
  "value1": "button_name",
  "value2": "optional_value",
  "value3": "optional_value"
}
Example: Kitchen Timer

Trigger a 20-minute kitchen timer and activate cooking scene:

{
  "event": "kitchen_action",
  "value1": "timer",
  "value2": "20",
  "value3": "cooking_scene"
}

Your IFTTT applet can parse these values to start a timer and trigger the appropriate scene.

Security & Token Storage

Encrypted Storage
All sensitive tokens are encrypted using ESP32 Secure NVS
  • • AES-256 encryption for all stored credentials
  • • Hardware-backed encryption keys
  • • Tokens never transmitted in plain text
  • • Secure erase on factory reset
Best Practices
  • • Use HTTPS for all webhook endpoints
  • • Rotate IFTTT keys periodically
  • • Limit webhook permissions to necessary actions
  • • Monitor webhook activity for anomalies

API Examples

Hue Scene Activation

Activate a Philips Hue scene via local bridge:

PUT /api/{username}/groups/{group_id}/action

{
  "scene": "bedroom_relax"
}
Light Control

Control individual lights or groups:

PUT /api/{username}/lights/{light_id}/state

{
  "on": true,
  "bri": 200,
  "ct": 350,
  "transitiontime": 10
}
Response Handling

HomeFlowHub provides visual feedback based on API responses:

// Success response
{
  "success": {
    "/lights/1/state/on": true
  }
}

// Error response
{
  "error": {
    "type": 3,
    "address": "/lights/1/state/on",
    "description": "resource not available"
  }
}

Device Configuration

Settings Structure
Configuration is stored in encrypted NVS partitions
{
  "wifi": {
    "ssid": "encrypted",
    "password": "encrypted"
  },
  "hue": {
    "bridge_ip": "192.168.1.100",
    "username": "encrypted"
  },
  "ifttt": {
    "webhooks": [
      {
        "name": "Kitchen Timer",
        "event": "kitchen_action",
        "key": "encrypted"
      }
    ]
  },
  "power": {
    "dim_timeout": 30,
    "sleep_timeout": 120,
    "brightness": 200
  }
}