Skip to content

Commit 3ca272f

Browse files
feat: Shelly WS90: expose wind, UV and rain data (#10752)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
1 parent 4d5f7a1 commit 3ca272f

File tree

1 file changed

+97
-1
lines changed

1 file changed

+97
-1
lines changed

src/devices/shelly.ts

Lines changed: 97 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,102 @@ export const definitions: DefinitionWithExtend[] = [
615615
model: "WS90",
616616
vendor: "Shelly",
617617
description: "Weather station",
618-
extend: [m.battery(), m.illuminance(), m.temperature(), m.pressure(), m.humidity()],
618+
extend: [
619+
m.battery(),
620+
m.illuminance(),
621+
m.temperature(),
622+
m.pressure(),
623+
m.humidity(),
624+
m.deviceAddCustomCluster("shellyWS90Wind", {
625+
ID: 0xfc01,
626+
manufacturerCode: Zcl.ManufacturerCode.SHELLY,
627+
attributes: {},
628+
commands: {},
629+
commandsResponse: {},
630+
}),
631+
m.numeric({
632+
name: "wind_speed",
633+
cluster: "shellyWS90Wind",
634+
attribute: {ID: 0x0000, type: Zcl.DataType.UINT16},
635+
valueMin: 0,
636+
valueMax: 140,
637+
reporting: {min: "10_SECONDS", max: "1_HOUR", change: 1},
638+
description: "Wind speed in m/s",
639+
scale: 10,
640+
unit: "m/s",
641+
access: "STATE_GET",
642+
}),
643+
m.numeric({
644+
name: "wind_direction",
645+
cluster: "shellyWS90Wind",
646+
attribute: {ID: 0x0004, type: Zcl.DataType.UINT16},
647+
valueMin: 0,
648+
valueMax: 360,
649+
reporting: {min: "10_SECONDS", max: "1_HOUR", change: 1},
650+
description: "Wind direction in degrees",
651+
scale: 10,
652+
unit: "°",
653+
access: "STATE_GET",
654+
}),
655+
m.numeric({
656+
name: "gust_speed",
657+
cluster: "shellyWS90Wind",
658+
attribute: {ID: 0x0007, type: Zcl.DataType.UINT16},
659+
valueMin: 0,
660+
valueMax: 140,
661+
reporting: {min: "10_SECONDS", max: "1_HOUR", change: 1},
662+
description: "Gust speed in m/s",
663+
scale: 10,
664+
unit: "m/s",
665+
access: "STATE_GET",
666+
}),
667+
m.deviceAddCustomCluster("shellyWS90UV", {
668+
ID: 0xfc02,
669+
manufacturerCode: Zcl.ManufacturerCode.SHELLY,
670+
attributes: {},
671+
commands: {},
672+
commandsResponse: {},
673+
}),
674+
m.numeric({
675+
name: "uv_index",
676+
cluster: "shellyWS90UV",
677+
attribute: {ID: 0x0000, type: Zcl.DataType.UINT8},
678+
valueMin: 0,
679+
valueMax: 11,
680+
reporting: {min: "10_SECONDS", max: "1_HOUR", change: 1},
681+
description: "UV index",
682+
scale: 10,
683+
access: "STATE_GET",
684+
}),
685+
m.deviceAddCustomCluster("shellyWS90Rain", {
686+
ID: 0xfc03,
687+
manufacturerCode: Zcl.ManufacturerCode.SHELLY,
688+
attributes: {},
689+
commands: {},
690+
commandsResponse: {},
691+
}),
692+
m.binary({
693+
name: "rain_status",
694+
cluster: "shellyWS90Rain",
695+
attribute: {ID: 0x0000, type: Zcl.DataType.BOOLEAN},
696+
valueOn: [true, 1],
697+
valueOff: [false, 0],
698+
reporting: {min: "10_SECONDS", max: "1_HOUR", change: 1},
699+
description: "Rain status",
700+
access: "STATE_GET",
701+
}),
702+
m.numeric({
703+
name: "precipitation",
704+
cluster: "shellyWS90Rain",
705+
attribute: {ID: 0x0001, type: Zcl.DataType.UINT24},
706+
valueMin: 0,
707+
valueMax: 100000,
708+
reporting: {min: "10_SECONDS", max: "1_HOUR", change: 1},
709+
description: "Precipitation",
710+
unit: "mm",
711+
scale: 10,
712+
access: "STATE_GET",
713+
}),
714+
],
619715
},
620716
];

0 commit comments

Comments
 (0)