srctree

Gregory Mullen parent 10bf70a5 ab165f7d
add 12way buttons and update dep

build.zig.zon added: 30, removed: 5, total 25
@@ -4,8 +4,8 @@
//.minimum_zig_version = "0.11.0",
.dependencies = .{
.mqtt = .{
.url = "git+https://github.com/GrayHatter/mqtt.git#f80fc42464c4970f5f3b8baa94765be628f18342",
.hash = "1220cca633744f44332e2415ef922eefcb72694328d2368474677ea4b4231311c4da",
.url = "git+https://github.com/GrayHatter/mqtt.git#d37771dc42e3f3ceb18024b0b4281582348f01a2",
.hash = "12201b1ee8c1f57fb7cf30c529604b48ad1254083898dc04616bed967629ed94373c",
},
},
.paths = .{
 
src/zigbee.zig added: 30, removed: 5, total 25
@@ -255,6 +255,11 @@ pub const Device = struct {
sensitivity: ?usize = null,
power_on_behavior: PowerOn = .nos,
 
// button thingy
battery: ?f64 = null,
action: Buttons12Way = .nos,
 
// Power meter
voltage: ?f64 = null,
ac_frequency: ?usize = null,
state: PowerOn = .nos,
@@ -272,6 +277,22 @@ pub const Device = struct {
previous,
};
 
pub const Buttons12Way = enum {
nos,
@"1_single",
@"1_double",
@"1_hold",
@"2_single",
@"2_double",
@"2_hold",
@"3_single",
@"3_double",
@"3_hold",
@"4_single",
@"4_double",
@"4_hold",
};
 
pub fn initZ2m(zb: *Zigbee, z2m_bd: Z2m.bridge.devices) !Device {
return .{
.name = try zb.alloc.dupe(u8, z2m_bd.friendly_name orelse return error.InvalidDevice),
@@ -326,7 +347,11 @@ pub const Device = struct {
return edge;
}
},
PowerOn => {
PowerOn, Buttons12Way => {
if (payload.len == 0) {
defer field.* = .nos;
return field.* != @as(T, .nos);
}
inline for (@typeInfo(T).Enum.fields) |en| {
if (eqlAny(en.name, payload)) {
defer field.* = @enumFromInt(en.value);