Supported devices and sensors - Ravi-Pansuriya/Geeky GitHub Wiki
Devices | Type | Geeky | Amazon Alexa | Google Home |
---|---|---|---|---|
Switch | 1 | Yes | Yes | Yes |
Outlet | 2 | Yes | Yes | Yes |
Light | 3 | Yes | Yes | Yes |
Color Light (RGB) | 4 | Yes | Yes | Yes |
Air Conditioner | 5 | Yes | No | Yes |
Thermostat | 6 | No | No | No |
Fan (Table/Wall) | 7 | Yes | Yes | Yes |
Ceiling Fan | 8 | Yes | Yes | Yes |
Sensors | Type | Geeky | Amazon Alexa | Google Home |
---|---|---|---|---|
Temperature | 101 | Yes | No | No |
Humidity | 102 | Yes | No | No |
Ambient Light | 103 | Yes | No | No |
Sensors data can only be updated via publishing packet using MQTT client. And only readable via Geeky web panel and mobile app as of now. (Feature to read sensor values by Alexa and Google Home will be added later)
Geeky has it's own messaging format based on JSON. Every message you publish or receive on subscribe is JSON.
Packet format:
{
"client": "<client_id>", // String
"type": "<device_type>", // Numeric
"data": {
// device controlling params...
}
}
Example:
{
"client": "ESP32-1234-PUB", // Unique client id of device for publishing message
"type": 1, // device type
"data": {
"power": true // true -> on, false -> off
}
}
- client - is a unique client used to identify which device has published the message and also can be used to prevent unnecessary processing of packet data if device it self is subscribed for same topic.
- type - indicates the type of device and make easy to parse data according to specified type.
- data - holds the actual values for controlling the device. i.e. power, temperature, modes etc..
For parsing and generating JSON packet in Arduino we have used ArduinoJson
. you can find more details about it here.
1. Switch/Outlet:
"data": {
"power": true
}
power
(boolean) - It defined state of power of device.
true - on (Power on)
false - off (Power off)
All the devices shares power
as default parameter
2. Light:
"data": {
"power": true,
"brightness": 100
}
brightness
(number) - It is used to adjust brightness.
Min - 0
Max - 100
3. Color Light (RGB):
"data": {
"power": true,
"brightness": 100,
"mode": 1,
"name": "yellow",
"color": 16776960,
"color_temperature": 2700,
}
brightness
(number) - It is used to adjust brightness.
Min - 0
Max - 100
mode
(number) - It is used to define which color mode is currently active.
0 - RGB (default)
1 - HSV
2 - White Color Shades
name
(string) - Relevant color or temperature name. It’s optional and can have ‘null’ value.
color
(number) - RGB/HSV color values as integer.
color_temperature
(number) - for color temperature of light(white color shades) in kelvin(K).
Min - 1000
Max - 10000
4. Air Conditioner:
"data": {
"power": true,
"temperature": 27,
"mode": 0,
"fan_speed": 0
}
temperature
(number) - Temperature value of AC in celsius.
Min - 17
Max - 30
mode
(number) - AC modes.
0 - Auto
1 - Cool
2 - Dry
3 - Heat
4 - Fan
fan_speed
(number) - AC fan speed.
0 - Auto
1 - Low
2 - Mid
3 - High
5. Thermostat:
// under development (coming soon)
6. Fan (Table/Wall):
"data": {
"power": true,
"fan_speed": 2
}
fan_speed
(number) - Table/Wall fan speed.
0 - Off
1 - Low
2 - Mid
3 - High
6. Ceiling Fan:
"data": {
"power": true,
"fan_speed": 60
}
fan_speed
(number) - Ceiling fan variable speed.
Min - 0
Max - 100
1. Temperature:
"data": {
"value": 28,
"unit": "C"
}
value
(number) - Temperature value.
unit
(string) - Temperature unit.
C - Celsius
F - Fahrenheit
2. Humidity:
"data": {
"value": 30,
}
value
(number) - Humidity value in percentage (%).
Min - 0
Max - 100
3. Ambient Light:
"data": {
"value": 60,
}
value
(number) - Ambient light value in percentage (%).
Min - 0
Max - 100