adding additional Accessories Homekit basic Syntax settings #1095
Unanswered
TBuTcher71
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
my current .INO file is below and it works great... my values that I change on my iPhone are kept even after a reboot of the ESP32. but I was wondering if there is a sample of all of the available accessories
for example I used....
new Characteristic::Model("Temp Sensor");
new FakeTemperatureSensor("Inside Temp", 22.0f);
and it has a display name and then a value..
while my tanks have
new Characteristic::Model("Humidity Sensor");
new FakeTankLevel("Drinking 1", 85);
what is the syntax for all of the following?
Lightbulb (Light): Service::Lightbulb
Switch: Service::Switch
Fan: Service::Fan
Outlet: Service::Outlet (looks like a power socket)
Garage Door Opener: Service::GarageDoorOpener
Lock Mechanism: Service::LockMechanism
Window Covering: Service::WindowCovering (for blinds/curtains)
Thermostat: Service::Thermostat (has a thermostat icon)
Air Purifier: Service::AirPurifier
Heater: Service::HeaterCooler (often generic climate icon or heater icon if distinct)
Humidifier/Dehumidifier: Service::HumidifierDehumidifier (often generic climate icon)
Motion Sensor: Service::MotionSensor (generic sensor, sometimes a person-like icon)
Contact Sensor: Service::ContactSensor (generic sensor)
Occupancy Sensor: Service::OccupancySensor (generic sensor)
Leak Sensor: Service::LeakSensor (generic sensor, sometimes a drop)
Smoke Sensor: Service::SmokeSensor (smoke detector icon)
Carbon Monoxide Sensor: Service::CarbonMonoxideSensor (CO detector icon)
Carbon Dioxide Sensor: Service::CarbonDioxideSensor (CO2 icon, usually generic sensor)
Air Quality Sensor: Service::AirQualitySensor (generic sensor)
MY WORKING CODE FEEL FREE TO USE IT IF YOU WANT.
#include <HomeSpan.h>
struct FakeTemperatureSensor : Service::TemperatureSensor {
float temp;
Characteristic::CurrentTemperature currentTemp;
FakeTemperatureSensor(const char* name, float value)
: Service::TemperatureSensor(),
currentTemp(value, false) { // No NVS here, as value comes from sensor/logic
temp = value;
}
void loop() override {
currentTemp.setVal(temp);
}
};
struct FakeTankLevel : Service::LeakSensor {
int level;
Characteristic::CurrentRelativeHumidity humidity;
FakeTankLevel(const char* name, int percent)
: Service::LeakSensor(), humidity(percent, false) { // No NVS here, assuming you might update dynamically
level = percent;
}
void loop() override {
humidity.setVal(level);
}
};
struct FakeSwitch : Service::Switch {
Characteristic::On power;
FakeSwitch(const char* name, bool on) : Service::Switch(), power(on, true) { // <--- IMPORTANT: Added TRUE for NVS persistence!
new Characteristic::Name(name);
}
void loop() override {
// State is automatically loaded from NVS on boot and saved on change
}
};
void setup() {
Serial.begin(115200);
homeSpan.setPairingCode("12345678");
homeSpan.setWifiCredentials("home", "password");
homeSpan.begin(Category::Bridges,"ESP32 HomeKit Bridge");
// --- Main Bridge Accessory (AID=1) ---
new SpanAccessory();
new Service::AccessoryInformation();
new Characteristic::Name("ESP Bridge");
new Characteristic::Manufacturer("OpenAI");
new Characteristic::SerialNumber("123-ABC");
new Characteristic::Model("Bridge");
new Characteristic::FirmwareRevision("1.0");
new Characteristic::Identify();
// --- Bridged Accessory (AID=2): Inside Temp Sensor ---
new SpanAccessory();
new Service::AccessoryInformation();
new Characteristic::Name("Inside Temp Sensor");
new Characteristic::Manufacturer("HomeSpan");
new Characteristic::SerialNumber("TEMP001");
new Characteristic::Model("Temp Sensor");
new Characteristic::FirmwareRevision("1.0");
new Characteristic::Identify();
new FakeTemperatureSensor("Inside Temp", 22.0f);
// --- Bridged Accessory (AID=3): Outside Temp Sensor ---
new SpanAccessory();
new Service::AccessoryInformation();
new Characteristic::Name("Outside Temp Sensor");
new Characteristic::Manufacturer("HomeSpan");
new Characteristic::SerialNumber("TEMP002");
new Characteristic::Model("Temp Sensor");
new Characteristic::FirmwareRevision("1.0");
new Characteristic::Identify();
new FakeTemperatureSensor("Outside Temp", 13.0f);
// --- Bridged Accessory (AID=4): Drinking Water Tank 1 ---
new SpanAccessory();
new Service::AccessoryInformation();
new Characteristic::Name("Drinking 1 Tank");
new Characteristic::Manufacturer("HomeSpan");
new Characteristic::SerialNumber("TANK001");
new Characteristic::Model("Humidity Sensor");
new Characteristic::FirmwareRevision("1.0");
new Characteristic::Identify();
new FakeTankLevel("Drinking 1", 85);
// --- Bridged Accessory (AID=5): Drinking Water Tank 2 ---
new SpanAccessory();
new Service::AccessoryInformation();
new Characteristic::Name("Drinking 2 Tank");
new Characteristic::Manufacturer("HomeSpan");
new Characteristic::SerialNumber("TANK002");
new Characteristic::Model("Humidity Sensor");
new Characteristic::FirmwareRevision("1.0");
new Characteristic::Identify();
new FakeTankLevel("Drinking 2", 73);
// --- Bridged Accessory (AID=6): Shower Tank ---
new SpanAccessory();
new Service::AccessoryInformation();
new Characteristic::Name("Shower Tank");
new Characteristic::Manufacturer("HomeSpan");
new Characteristic::SerialNumber("TANK003");
new Characteristic::Model("Humidity Sensor");
new Characteristic::FirmwareRevision("1.0");
new Characteristic::Identify();
new FakeTankLevel("Shower", 50);
// --- Bridged Accessory (AID=7): Grey Water Tank ---
new SpanAccessory();
new Service::AccessoryInformation();
new Characteristic::Name("Grey Water Tank");
new Characteristic::Manufacturer("HomeSpan");
new Characteristic::SerialNumber("TANK004");
new Characteristic::Model("Humidity Sensor");
new Characteristic::FirmwareRevision("1.0");
new Characteristic::Identify();
new FakeTankLevel("Grey", 15);
// --- Bridged Accessory (AID=8): Valve 1 ---
new SpanAccessory();
new Service::AccessoryInformation();
new Characteristic::Name("Valve 1");
new Characteristic::Manufacturer("HomeSpan");
new Characteristic::SerialNumber("VALVE001");
new Characteristic::Model("Switch");
new Characteristic::FirmwareRevision("1.0");
new Characteristic::Identify();
new FakeSwitch("Valve 1", true);
// --- Bridged Accessory (AID=9): Valve 2 ---
new SpanAccessory();
new Service::AccessoryInformation();
new Characteristic::Name("Valve 2");
new Characteristic::Manufacturer("HomeSpan");
new Characteristic::SerialNumber("VALVE002");
new Characteristic::Model("Switch");
new Characteristic::FirmwareRevision("1.0");
new Characteristic::Identify();
new FakeSwitch("Valve 2", false);
// --- Bridged Accessory (AID=10): Relay ---
new SpanAccessory();
new Service::AccessoryInformation();
new Characteristic::Name("Relay");
new Characteristic::Manufacturer("HomeSpan");
new Characteristic::SerialNumber("RELAY001");
new Characteristic::Model("Switch");
new Characteristic::FirmwareRevision("1.0");
new Characteristic::Identify();
new FakeSwitch("Relay", true);
// --- Bridged Accessory (AID=11): Fan ---
new SpanAccessory();
new Service::AccessoryInformation();
new Characteristic::Name("Fan");
new Characteristic::Manufacturer("HomeSpan");
new Characteristic::SerialNumber("FAN001");
new Characteristic::Model("Switch");
new Characteristic::FirmwareRevision("1.0");
new Characteristic::Identify();
new FakeSwitch("Fan", false);
// --- Bridged Accessory (AID=12): Recirculate ---
new SpanAccessory();
new Service::AccessoryInformation();
new Characteristic::Name("Recirculate");
new Characteristic::Manufacturer("HomeSpan");
new Characteristic::SerialNumber("RECIRC001");
new Characteristic::Model("Switch");
new Characteristic::FirmwareRevision("1.0");
new Characteristic::Identify();
new FakeSwitch("Recirculate", true);
}
void loop() {
homeSpan.poll();
}
Beta Was this translation helpful? Give feedback.
All reactions