Skip to content

Add the ebus_homie target; ebus_core becomes an umbrella - #12

Merged
dcj merged 4 commits into
mainfrom
refactor/ebus-homie-target
Oct 9, 2026
Merged

dcj merged 4 commits into
mainfrom
refactor/ebus-homie-target

Conversation

@dcj

@dcj dcj commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

The last of the three components: the Homie model moves to homie/ as ebus_homie, and ebus_core becomes an umbrella.

Target Contents Depends on
ebus_homie Device, Node, Property, lifecycle, /set dispatch, controller and inbox, ids, datatypes, limits, enums, descriptor, vocabulary, JSON helpers, HomieTransport, log, clock, topic ebus_mqtt, ArduinoJson
ebus_core INTERFACE: links ebus_mqtt, ebus_discovery, ebus_homie; carries include/ (pre-split paths) the three
  • Layout follows mqtt/ and discovery/: homie/include/ebus/homie/, homie/src/, homie/CMakeLists.txt (standalone add_subdirectory(<path>/cpp-sdk/homie) adds ebus_mqtt too), ebus_homie_header_check, CI step "ebus_homie alone" (-I homie/include -I mqtt/include plus ArduinoJson), library.json srcFilter and -I homie/include. Files keep their names; util/jsonUtils.h becomes ebus/homie/jsonUtils.h.
  • Log and clock go into ebus_homie: nothing in mqtt/ or discovery/ calls them, so a shared base target would have no second user.
  • Compatibility: include/homie/*.h and include/util/jsonUtils.h forward to the new paths, so esp32-sdk's #include <homie/...> builds unchanged. esp32-sdk's generator regex-parses include/homie/homie_limits.h for the four base limits, so that forwarder repeats those #defines; a value that differs from ebus/homie/homie_limits.h is a macro redefinition warning (an error in CI).
  • The move is its own commit, before the forwarders, so git log --follow reaches each file's history.
  • Tests and the POSIX port include <ebus/homie/...>; every suite other than test_mqtt_* and test_discovery_* links ebus_homie alone.

Closes #3

🤖 Generated with Claude Code

https://claude.ai/code/session_01Npk6WmkpnBRzWkuhK6uCuz

dcj and others added 4 commits October 9, 2026 08:13
The Device, Node and Property model, /set dispatch, the controller, ids,
datatypes, limits, JSON helpers, the HomieTransport adapter, and the log
and clock hooks move to homie/ (include/ebus/homie/, src/). ebus_homie
links ebus_mqtt and ArduinoJson and nothing else; mqtt/ and discovery/
use neither hook, so log and clock stay with the Homie model.

ebus_core becomes an INTERFACE target linking ebus_mqtt, ebus_discovery
and ebus_homie. The tests and the POSIX port include the new paths; the
Homie suites link ebus_homie alone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Npk6WmkpnBRzWkuhK6uCuz
include/homie/*.h and include/util/jsonUtils.h forward to ebus_homie, so
esp32-sdk's #include <homie/Device.h> and the like keep compiling. The
ebus_core umbrella and the PlatformIO library put include/ on the path.

esp32-sdk's generator parses include/homie/homie_limits.h for the four
base id and topic limits, so that forwarder repeats them. A repeated
#define that differs from ebus/homie/homie_limits.h is a macro
redefinition warning, an error under the CI's warnings-as-errors build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Npk6WmkpnBRzWkuhK6uCuz
…clude directories only

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Npk6WmkpnBRzWkuhK6uCuz
@dcj
dcj merged commit 9d7e925 into main Oct 9, 2026
8 checks passed
@dcj
dcj deleted the refactor/ebus-homie-target branch October 9, 2026 15:22
@dcj dcj mentioned this pull request Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Split ebus_core into ebus_mqtt, ebus_discovery and ebus_homie targets

1 participant