Matrix Patterns
Matrix Patterns
The set_intensity method accepts more than just a single float value. You can pass complex structures to create patterns across selections.
How Spreading Works
For example, on an 8x8 machine (8 rows and 8 columns of modules), you can pass a 2x2 matrix to create 4 different "corners" with different intensities. The SDK will spread these values across the entire grid.

from dotenv import load_dotenv
from windsuite_sdk import WindsuiteSDK
sdk = WindsuiteSDK(base_url="192.168.88.40")
sdk.start_communication()
sdk.fan_controller.set_intensity(
percent=[
[20, 40],
[60, 80],
]
).apply()
The spreading algorithm repeats each value proportionally:
- If the pattern is smaller than the grid, values are evenly distributed across the whole machine
- If the pattern is larger, it's truncated
Smaller patter
On a 8x8 machine, passing a 2x1 matrix will create a horizontal gradient with 2 different values:

from windsuite_sdk import WindsuiteSDK
sdk = WindsuiteSDK(base_url="http://windshape.local")
sdk.start_communication()
sdk.fan_controller.set_intensity(percent=[[20, 80]]).apply()
Larger pattern
On a 2x2 machine, passing a 12x1 matrix will create a pattern using only the first 6 values (as each module contains 3x3 fans, so 6 fans horizontally):

from windsuite_sdk import WindsuiteSDK
sdk = WindsuiteSDK(base_url="http://windshape.local")
sdk.start_communication()
sdk.fan_controller.set_intensity(
percent=[
[10, 20, 30, 40, 50, 60, 70, 80, 100, 20, 30, 40],
]
).apply()
Effectivly the same as giving:
percent=[
[10, 20, 30, 40, 50, 60],
]
1D List Spreading
Horizontal Spreading
Pass a simple list to spread values horizontally across columns:

from windsuite_sdk import WindsuiteSDK
sdk = WindsuiteSDK(base_url="http://windshape.local")
sdk.start_communication()
sdk.fan_controller.set_intensity(percent=[20, 40, 60, 80]).apply()
Vertical Spreading
Wrap each value in its own list to spread vertically across rows:

from windsuite_sdk import WindsuiteSDK
sdk = WindsuiteSDK(base_url="http://windshape.local")
sdk.start_communication()
sdk.fan_controller.set_intensity(percent=[[20], [40], [60], [80]]).apply()
2D List Spreading
Combine both dimensions for complex patterns:

from windsuite_sdk import WindsuiteSDK
sdk = WindsuiteSDK(base_url="http://windshape.local")
sdk.start_communication()
sdk.fan_controller.set_intensity(
percent=[
[10, 20, 30, 40],
[50, 60, 70, 80],
[10, 20, 30, 40],
[60, 90],
]
).apply()
