#!/usr/bin/python3

########################################################
# ArtiLED Python UDP Functions Test v1.04 (19-02-2026) #
# Written by: Michel van Osenbruggen                   #
# Copyright 2026 ArtiLED B.V. All Rights Reserved      #
########################################################

######################################################################
# This file only shows Examples of all the available UDP commands    #
# See Node Protocol Documentation for information on expected output #
######################################################################

import time
import artiudp

#Target Node List (set to None for broadcast)
node_list = ['192.168.14.40']

#Default settings
channel = 0
realtime = 1
commit = 1

#artiudp.clear(0,realtime,commit,node_list)

############################
# Controller Command Tests #
############################

#Clear (channel,realtime,commit) channel 1-4 or 0 = all
#artiudp.clear(0,realtime,commit,node_list)

#Brightness (brightness,channel,realtime,commit): Value (0-255), Always All Channels
#brightness = 100
#artiudp.brightness(brightness,channel,realtime,commit,node_list)

#Saturation (sat,channel,realtime): Value (0-255), Always All Channels
#artiudp.saturation(255,channel,realtime,node_list)

#Hue (hue,channel,realtime): Value (0-255), Always All Channels
#artiudp.hue(255,channel,realtime,node_list)

#Value (value,channel,realtime): Value (0-255), Always All Channels
#artiudp.value(255,channel,realtime,node_list)

#Brighten (brightness_calc,channel,realtime,commit): Value (0-255), Always All Channels
#artiudp.brighten(10,channel,realtime,commit,node_list)

#Dim (brightness_calc,channel,realtime,commit): Value (0-255), Always All Channels
#artiudp.dim(10,channel,realtime,commit,node_list)

#Scale (scale_calc,channel,realtime,commit): Value (0-255)
#artiudp.scale(50,channel,realtime,commit,node_list)

#Calc (calc_option,calc_value,channel,realtime,commit): Option(0=Add, 1=Subtract, 2=Multiply, 3=Divide), Value (0-255)
#artiudp.calc(3,2,channel,realtime,commit,node_list)

#Save (channel, realtime)
#artiudp.save(1,realtime, node_list)

#Restore (channel,realtime,commit)
#artiudp.restore(1,realtime,commit,node_list)

#Default (channel,realtime,commit)
#artiudp.set_default(1,realtime,commit,node_list)

#Commit (realtime)
#artiudp.commit(realtime,node_list)

#Set Power (value, realtime)
#artiudp.set_power(0,realtime,node_list)

#######################
# Strip Command Tests #
#######################

#Strip RGBW (R,G,B,W,channel,realtime,commit): Value (0-255), Channel 0 or none = all
#artiudp.strip_rgbw(255,0,0,0,channel,realtime,commit,node_list) #Red
#artiudp.strip_rgbw(0,255,0,0,channel,realtime,commit,node_list) #Green
#artiudp.strip_rgbw(0,0,255,0,channel,realtime,commit,node_list) #Blue
#artiudp.strip_rgbw(0,0,0,255,channel,realtime,commit,node_list) #White
#artiudp.strip_rgbw(255,255,255,0,channel,realtime,commit,node_list) #RGB
#artiudp.strip_rgbw(255,255,255,255,channel,realtime,commit,node_list) #RGBW

#Strip RGB (R,G,B,channel,realtime,commit): Value (0-255), Channel 0 or none = all
#artiudp.strip_rgb(255,0,0,channel,realtime,commit,node_list) #Red
#artiudp.strip_rgb(0,255,0,channel,realtime,commit,node_list) #Green

#Strip HSV (Hue,Sat,Value,channel,realtime,commit): Value (0-255), Channel 0 or none = all
#for x in range (0 ,255):
#  artiudp.strip_hsv(x,255,255,channel,realtime,commit,node_list)

#Strip W (temperature,intensity,channel,realtime,commit): Value (0-255), Channel 0 or none = all, 0=Cold, 255=Warm
#artiudp.strip_w(0,255,channel,realtime,commit,node_list) #Cold White
#artiudp.strip_w(127,255,channel,realtime,commit,node_list) #Normal White
#artiudp.strip_w(255,255,channel,realtime,commit,node_list) #Warm White

#for x in range (0 ,255):
#  artiudp.strip_w(255,x,channel,realtime,commit,node_list)

#############################
# Multi Strip Command Tests #
#############################

#Multi Strip RGBW Test ([n x [channel,R,G,B,W] ],channel,realtime,commit)
#arr = [[1,255,0,0,0],[2,0,255,0,0]]
#artiudp.multi_strip_rgbw(arr,channel,realtime,commit,node_list)

#Multi Strip RGB Test ([n x [channel,R,G,B] ],channel,realtime,commit)
#arr = [[1,255,0,255],[2,255,255,0]]
#artiudp.multi_strip_rgb(arr,channel,realtime,commit,node_list)

#Multi Strip HSV Test ([n x [channel,Hue,Sat,Value] ],channel,realtime,commit)
#arr = [[1,60,255,255],[2,127,255,255]]
#artiudp.multi_strip_hsv(arr,channel,realtime,commit,node_list)

#Multi Strip W Test ([n x [channel,Temperature,Intensity] ],channel,realtime,commit)
#arr = [[1,127,255],[2,255,255]]
#artiudp.multi_strip_w(arr,channel,realtime,commit,node_list)

##############################
# Strip Modify Command Tests #
##############################

#Strip Scale RGBW (scale_red,scale_green,scale_blue,scale_white,channel,realtime,commit): Value (0-255)
#artiudp.scale_strip_rgbw(50,50,100,0,channel,realtime,commit,node_list)

#Strip Calc RGBW (calc_option,calc_red,calc_green,calc_blue,calc_white,channel,realtime,commit): Option(0=Add, 1=Subtract, 2=Multiply, 3=Divide)
#artiudp.calc_strip_rgbw(3,2,2,2,2,channel,realtime,commit,node_list)

#Strip Shift (step,mode,recycle,channel,realtime,commit): Mode(0=Left, 1=Right, 2=Outward, 3=Inward) Recycle(0x00=No Recycle, 0x01=Recycle)
#step=1
#mode=3
#recycle=1
#artiudp.strip_shift(step,mode,recycle,channel,realtime,commit,node_list)

#Strip Copy (origin,channel,realtime,commit): Copies Strip Origin to Channel (0x00 = All Channels)
#channel=0
#origin=1
#artiudp.strip_copy(origin,channel,realtime,commit,node_list)

#Strip Swap (origin,channel,realtime,commit): Swap Strip Origin and Channel
#channel=2
#origin=1
#artiudp.strip_swap(origin,channel,realtime,commit,node_list)

#Strip Rotate (direction,channel,realtime,commit): Rotate Strips in Directions (0x00=Right, 0x01=Left)
#direction=1
#artiudp.strip_rotate(direction,channel,realtime,commit,node_list)

#Strip Feed RGBW (red,green,blue,white,step,mode,channel,realtime,commit): Mode(0=Left, 1=Right, 2=Outward, 3=Inward)
#step=1
#mode=0
#red=255
#green=0
#blue=0
#white=0
#artiudp.strip_feed_rgbw(red,green,blue,white,step,mode,channel,realtime,commit,node_list)

#Strip Feed HSV (hue,sat,value,step,mode,channel,realtime,commit): Mode(0=Left, 1=Right, 2=Outward, 3=Inward)
#step=1
#mode=3
#hue = 0
#sat = 255
#value = 100
#artiudp.strip_feed_hsv(hue,sat,value,step,mode,channel,realtime,commit,node_list)

#Strip Feed Palette (index,step,mode,channel,realtime,commit): Mode(0=Left, 1=Right, 2=Outward, 3=Inward)
#step=1
#mode=0
#index = 5
#artiudp.strip_feed_palette(index,step,mode,channel,realtime,commit,node_list)

#Strip Blur (count,amount,channel,realtime,commit) -> Count=Number of Blurs (0-255), Blur Amount 0=No Spread, 64=Moderate Spread, 172=Max Smooth, 173…255=Wider Spread
#artiudp.clear(channel,realtime,commit,node_list)
#artiudp.segment_rgbw(10,15,255,0,0,0,channel,realtime,commit,node_list)
#count = 10
#amount = 255
#time.sleep(2)
#artiudp.strip_blur(count,amount,channel,realtime,commit,node_list)

#artiudp.clear(channel,realtime,commit,node_list)
#artiudp.segment_rgbw(10,15,255,0,0,0,channel,realtime,commit,node_list)
#artiudp.segment_rgbw(50,55,0,255,0,0,channel,realtime,commit,node_list)
#artiudp.segment_rgbw(80,85,0,0,255,0,channel,realtime,commit,node_list)
#artiudp.segment_rgbw(110,115,0,0,0,255,channel,realtime,commit,node_list)
#count = 1
#amount = 255
#for x in range (0,50):
#  artiudp.strip_blur(count,amount,channel,realtime,commit,node_list)
#  time.sleep(0.01)

#########################
# Segment Command Tests #
#########################

#Segment RGBW Test (start,end,R,G,B,W,channel,realtime,commit): Value 0-255, Channel 0 or none = all
#artiudp.segment_rgbw(0,2,255,0,0,0,channel,realtime,commit,node_list)
#artiudp.segment_rgbw(11,20,0,255,0,0,channel,realtime,commit,node_list)
#artiudp.segment_rgbw(22,50,0,0,255,0,channel,realtime,commit,node_list)
#artiudp.segment_rgbw(55,100,255,0,255,0,channel,realtime,commit,node_list)
#artiudp.segment_rgbw(101,132,0,0,0,255,channel,realtime,commit,node_list)

#artiudp.clear(channel,realtime,commit,node_list)
#for x in range (0, 134):
#  if (x > 9):
#    artiudp.segment_rgbw(-10 + x, 1 + x, 0, 0, 0, 0, channel,realtime,commit,node_list)
#    artiudp.segment_rgbw(0 + x, 9 + x, 255, 0, 0, 0, channel,realtime,commit,node_list)
#    artiudp.segment_rgbw(10 + x, 19 + x, 0, 255, 0, 0, channel,realtime,commit,node_list)
#    artiudp.segment_rgbw(20 + x, 29 + x, 0, 0, 255, 0, channel,realtime,commit,node_list)

#Segment RGB Test (start,end,R,G,B,channel,realtime,commit): Value 0-255, Channel 0 or none = all
#artiudp.clear(channel,realtime,commit,node_list)
#artiudp.segment_rgb(0,9,255,0,0,channel,realtime,commit,node_list)
#artiudp.segment_rgb(11,20,0,255,0,channel,realtime,commit,node_list)
#artiudp.segment_rgb(22,50,0,255,0,channel,realtime,commit,node_list)
#artiudp.segment_rgb(55,100,0,0,255,channel,realtime,commit,node_list)
#artiudp.segment_rgb(101,132,255,255,255,channel,realtime,commit,node_list)

#Segment HSV Test (start,end,H,S,V,channel,realtime,commit): Value 0-255, Channel 0 or none = all
#artiudp.clear(channel,realtime,commit,node_list)
#artiudp.segment_hsv(0,9,255,255,255,channel,realtime,commit,node_list)
#artiudp.segment_hsv(11,20,0,255,255,channel,realtime,commit,node_list)
#artiudp.segment_hsv(22,50,50,255,255,channel,realtime,commit,node_list)
#artiudp.segment_hsv(55,100,100,225,255,channel,realtime,commit,node_list)
#artiudp.segment_hsv(101,132,200,255,255,channel,realtime,commit,node_list)

#Segment HSV Test (start,end,H,S,V,channel,realtime,commit): Value 0-255, Channel 0 or none = all
#artiudp.clear(channel,realtime,commit,node_list)
#for x in range (0, 255):
#   artiudp.segment_hsv(0, 49, x, 255, 255, channel,realtime,commit,node_list)
#   y = x + 25
#   if y > 255:
#         y = 255
#   artiudp.segment_hsv(50, 89, y, 255, 255, channel,realtime,commit,node_list)
#   z = x + 50
#   if z > 255:
#      z = 255
#   artiudp.segment_hsv(80, 133, y, 255, 255, channel,realtime,commit,node_list)

#Segment W Test (start,end,temperature,intensity,channel,realtime,commit): Value 0-255, Channel 0 or none = all
#artiudp.clear(channel,realtime,commit,node_list)
#artiudp.segment_w(0,30,0,255,channel,realtime,commit,node_list) #Cold White
#artiudp.segment_w(31,60,127,255,channel,realtime,commit,node_list) #Normal White
#artiudp.segment_w(61,90,255,255,channel,realtime,commit,node_list) #Warm White

################################
# Segment Modify Command Tests #
################################

#Segment Blur (start,end,count,amount,channel,realtime,commit) -> Count=Number of Blurs (0-255), Blur Amount 0=No Spread, 64=Moderate Spread, 172=Max Smooth, 173…255=Wider Spread
#artiudp.clear(channel,realtime,commit,node_list)
#artiudp.segment_rgbw(10,15,255,0,0,0,channel,realtime,commit,node_list)
#start=0
#end=100
#count = 10
#amount = 255
#time.sleep(2)
#artiudp.segment_blur(start,end,count,amount,channel,realtime,commit,node_list)

#artiudp.clear(channel,realtime,commit,node_list)
#artiudp.segment_rgbw(10,15,255,0,0,0,channel,realtime,commit,node_list)
#artiudp.segment_rgbw(50,55,0,255,0,0,channel,realtime,commit,node_list)
#artiudp.segment_rgbw(80,85,0,0,255,0,channel,realtime,commit,node_list)
#artiudp.segment_rgbw(110,115,0,0,0,255,channel,realtime,commit,node_list)
#start = 0
#end = 60
#count = 1
#amount = 255
#for x in range (0,200):
#  artiudp.segment_blur(start,end,count,amount,channel,realtime,commit,node_list)
#  time.sleep(0.01)

###############################
# Multi Segment Command Tests #
###############################

#Multi Segment RGBW Test ([n x [start,end,R,G,B,W] ],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#arr = [[0,30,255,0,0,0],[32,60,0,255,0,0],[62,90,0,0,255,0],[92,133,0,0,0,255]]
#arr = [[32,60,0,255,0,0],[62,90,0,0,255,0],[92,133,0,0,0,255]]
#artiudp.multi_segment_rgbw(arr,channel,realtime,commit,node_list)

#Multi Segment RGB Test ([n x [start,end,R,G,B] ],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#arr = [[0,30,255,0,255],[31,60,255,255,0],[61,90,0,255,255],[91,133,255,255,255]]
#artiudp.multi_segment_rgb(arr,channel,realtime,commit,node_list)

#Multi Segment HSV Test ([n x [start,end,H,S,V] ],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#arr = [[0,30,0,255,255],[31,60,100,255,255],[61,90,150,255,255],[91,133,200,255,255]]
#artiudp.multi_segment_hsv(arr,channel,realtime,commit,node_list)

#Multi Segment W Test ([n x [start,end,temperature,intensity] ],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#arr = [[0,30,0,255],[32,60,80,255],[62,90,127,255],[92,133,255,255]]
#artiudp.multi_segment_w(arr,channel,realtime,commit,node_list)

#######################################
# Multi Channel Segment Command Tests #
#######################################

#Multi Channel Segment RGBW Test ([n x [channel,start,end,R,G,B,W] ],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#arr = [[1,0,30,255,0,0,0],[2,32,60,0,255,0,0],[1,62,90,0,0,255,0],[2,92,133,0,0,0,255]]
#artiudp.multi_channel_segment_rgbw(arr,channel,realtime,commit,node_list)

#Multi Channel Segment RGB Test ([n x [channel,start,end,R,G,B] ],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#arr = [[1,0,30,255,0,255],[2,31,60,255,255,0],[1,61,90,0,255,255],[2,91,133,255,255,255]]
#artiudp.multi_channel_segment_rgb(arr,channel,realtime,commit,node_list)

#Multi Channel Segment HSV Test ([n x [channel,start,end,H,S,V] ],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#arr = [[1,0,30,0,255,255],[2,31,60,100,255,255],[1,61,90,150,255,255],[2,91,133,200,255,255]]
#artiudp.multi_channel_segment_hsv(arr,channel,realtime,commit,node_list)

#Multi Channel Segment W Test ([n x [channel,start,end,temperature,intensity] ],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#arr = [[1,0,30,0,255],[2,32,60,80,255],[1,62,90,127,255],[2,92,133,255,255]]
#artiudp.multi_channel_segment_w(arr,channel,realtime,commit,node_list)

#######################
# Pixel Command Tests #
#######################

#Pixel RGBW Test (pixel,R,G,B,W,channel,realtime,commit): Value 0-255, Channel 0 or none = all
#artiudp.clear(channel,realtime,commit,node_list)
#artiudp.pixel_rgbw(0,255,0,0,0,channel,realtime,commit,node_list)
#artiudp.pixel_rgbw(50,255,0,0,0,channel,realtime,commit,node_list)
#artiudp.pixel_rgbw(100,255,0,0,0,channel,realtime,commit,node_list)

#Pixel RGBW Test (pixel,R,G,B,W,channel,realtime,commit): Value 0-255, Channel 0 or none = all
#artiudp.clear(channel,realtime,commit,node_list)
#for x in range (0, 133):
#    artiudp.pixel_rgbw(x, 255-x, 0, 0, x, channel,realtime,commit,node_list)

#Pixel RGB Test (pixel,R,G,B,channel,realtime,commit): Value 0-255, Channel 0 or none = all
#artiudp.clear(channel,realtime,commit,node_list)
#for x in range (133, 0, -1):
#    artiudp.pixel_rgb(x, 255, x, 0, channel,realtime,commit,node_list)

#Pixel HSV Test (pixel,H,S,V,channel,realtime,commit): Value 0-255, Channel 0 or none = all
#artiudp.clear(channel,realtime,commit,node_list)
#for x in range (0, 133):
#    artiudp.pixel_hsv(x, x, 255, 255, channel,realtime,commit,node_list)

#Pixel W Test (pixel,temperature,intensity,channel,realtime,commit): Value 0-255, Channel 0 or none = all
#artiudp.clear(channel,realtime,commit,node_list)
#artiudp.pixel_w(0,0,255,channel,realtime,commit,node_list)
#artiudp.pixel_w(50,127,127,channel,realtime,commit,node_list)
#artiudp.pixel_w(100,255,255,channel,realtime,commit,node_list)

#############################
# Multi Pixel Command Tests #
#############################

#Multi Pixel RGBW Test ([n x [pixel,R,G,B,W] ],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#arr = [[30,255,0,0,0],[60,0,255,0,0],[90,0,0,255,0],[123,0,0,0,255]]
#artiudp.multi_pixel_rgbw(arr,channel,realtime,commit,node_list)

#Multi Pixel RGB Test ([n x [pixel,R,G,B] ],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#arr = [[15,255,255,0],[45,0,255,255],[65,255,0,255],[100,255,255,255]]
#artiudp.multi_pixel_rgb(arr,channel,realtime,commit,node_list)

##############################
# Pixel String Command Tests #
##############################

#Pixel String RGBW Test (start, [R,G,B,W],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#start = 100
#arr = [[255,0,0,0],[0,255,0,0],[0,0,255,0],[0,0,0,255],[255,255,0,0],[0,255,255,0],[255,255,255,0]]
#artiudp.pixel_string_rgbw(start, arr, channel,realtime,commit,node_list)

#Pixel String RGBW Test (start, [R,G,B,W],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#artiudp.brightness(255,channel,realtime,commit,node_list)
#arr = []
#start = 0
#for x in range (0, 133):
#   if (x < 33):
#      arr = arr + [[255,0,0,0]]
#   elif (x < 66):
#      arr = arr + [[0,255,0,0]]
#   elif (x < 99):
#      arr = arr + [[0,0,255,0]]
#   else:
#      arr = arr + [[0,0,0,255]]
#artiudp.pixel_string_rgbw(start, arr, channel,realtime,commit,node_list)

#Pixel String RGB Test (start, [R,G,B],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#start = 100
#arr = [[255,0,0],[0,255,0],[0,0,255],[255,255,255],[255,255,0],[255,0,255],[0,255,255]]
#artiudp.pixel_string_rgb(start, arr, channel,realtime,commit,node_list)

#Pixel String RGB Test (start, [R,G,B],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#arr = []
#start = 0
#for x in range (0, 133):
#   if (x < 33):
#      arr = arr + [[255,255,0]]
#   elif (x < 66):
#      arr = arr + [[0,255,255]]
#   elif (x < 99):
#      arr = arr + [[255,0,255]]
#   else:
#      arr = arr + [[255,255,255]]
#artiudp.pixel_string_rgb(start, arr, channel,realtime,commit,node_list)

#Pixel String HSV Test (start, [H,S,V],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#artiudp.brightness(255,channel,realtime,commit,node_list)
#start = 0
#arr = [[1,255,255],[2,255,255],[3,255,255],[4,255,255],[5,255,255],[6,255,255],[7,255,255],[8,255,255],[9,255,255],[10,255,255],[11,255,255],[12,255,255],[13,255,255],[14,255,255],[15,255,255],[16,255,255],[17,255,255]]
#artiudp.pixel_string_hsv(start, arr, channel,realtime,commit,node_list)

#Pixel String HSV Test (start, [H,S,V],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#arr = []
#start = 0
#for x in range (0, 133):
#   arr = arr + [[x,255,255]]
#   artiudp.pixel_string_hsv(start, arr, channel,realtime,commit,node_list)

#Pixel String HSV Test (start, [H,S,V],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#arr = []
#start = 0
#for x in range (0, 133):
#   y = x * 255
#   y = int(y / 133)
#   arr = arr + [[y,255,255]]
#   artiudp.pixel_string_hsv(start, arr, channel,realtime,commit,node_list)

#Pixel String W Test (start, [temperature,intensity],channel,realtime,commit)
#artiudp.clear(channel,realtime,commit,node_list)
#start = 100
#arr = [[0,255],[60,255],[100,255],[128,255],[180,255],[200,255],[255,255]]
#artiudp.pixel_string_w(start, arr, channel,realtime,commit,node_list)

##############################
# Strip Effect Command Tests #
##############################

#Strip Effect RGBW Fill Forward (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start_delay = 255
#end_delay = 255
#artiudp.strip_effect_rgbw(1,1,n,start_delay,end_delay,0,0,0,255,channel,realtime,commit,node_list)

#Strip Effect RGBW Fill Reverse (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,2,n,start_delay,end_delay,0,255,0,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Clear Forward (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start_delay = 255
#end_delay = 255
#artiudp.strip_effect_rgbw(0,3,n,start_delay,end_delay,255,0,0,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Clear Reverse (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,4,n,start_delay,end_delay,255,0,0,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Fill Outward (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,5,n,start_delay,end_delay,255,0,0,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Fill Center (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,6,n,start_delay,end_delay,255,0,0,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Clear Outward (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,7,n,start_delay,end_delay,255,0,0,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Clear Center (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,8,n,start_delay,end_delay,255,0,0,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Strobe Even (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 20
#start_delay = 20
#end_delay = 20
#artiudp.strip_effect_rgbw(1,9,n,start_delay,end_delay,255,0,0,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Strobe Vari (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 50
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,10,n,start_delay,end_delay,255,0,0,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Random Fill (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,11,n,start_delay,end_delay,255,0,0,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Fill Fade In (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 10
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,12,n,start_delay,end_delay,128,0,128,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Fill Fade Out (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 10
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,13,n,start_delay,end_delay,128,0,128,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Fill Forward Gradient In (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 1
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,14,n,start_delay,end_delay,128,0,128,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Fill Reverse Gradient In (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 1
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,15,n,start_delay,end_delay,128,0,128,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Fill Forward Gradient Out (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 1
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,16,n,start_delay,end_delay,128,0,128,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Fill Reverse Gradient Out (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,17,n,start_delay,end_delay,128,0,128,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Fill Outward Gradient In (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,18,n,start_delay,end_delay,128,0,128,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Fill Outward Gradient Out (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,19,n,start_delay,end_delay,128,0,128,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Fill Center Gradient In (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,20,n,start_delay,end_delay,128,0,128,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Fill Center Gradient Out (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,21,n,start_delay,end_delay,128,0,128,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Forward Pixel Run (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 4
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,22,n,start_delay,end_delay,255,0,0,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Reversed Pixel Run (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 1
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgbw(1,23,n,start_delay,end_delay,255,0,0,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Outward Pixel Run (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 1
#start_delay = 100
#end_delay = 100
#artiudp.strip_effect_rgbw(1,24,n,start_delay,end_delay,255,0,0,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Center Pixel Run (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 1
#start_delay = 100
#end_delay = 100
#artiudp.strip_effect_rgbw(1,25,n,start_delay,end_delay,0,0,0,255,channel,realtime,commit,node_list)

#Strip Effect RGBW Smart Fill Forward (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#clear = 1
#step = 1
#segments = 3
#delay = 0
#artiudp.strip_effect_rgbw(clear,27,step,delay,segments,0,0,0,255,channel,realtime,commit,node_list)

#Strip Effect RGBW Smart Fill Reverse (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#clear = 1
#step = 1
#segments = 3
#delay = 0
#artiudp.strip_effect_rgbw(clear,28,step,delay,segments,0,0,0,255,channel,realtime,commit,node_list)

#Strip Effect RGBW Smart Clear Forward (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#artiudp.strip_rgbw(0,0,0,255,channel,realtime,commit,node_list)
#clear = 0
#step = 1
#segments = 3
#delay = 0
#artiudp.strip_effect_rgbw(clear,31,step,delay,segments,0,0,0,0,channel,realtime,commit,node_list)

#Strip Effect RGBW Smart Clear Reversed (clear,effect,n,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#artiudp.strip_rgbw(0,0,0,255,channel,realtime,commit,node_list)
#clear = 0
#step = 1
#segments = 3
#delay = 0
#artiudp.strip_effect_rgbw(clear,32,step,delay,segments,0,0,0,0,channel,realtime,commit,node_list)

#Strip Effect RGB Fill Forward (clear,effect,n,start_delay,end_delay,R,G,B,channel,realtime,commit)
#n = 0
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_rgb(1,1,n,start_delay,end_delay,255,0,0,channel,realtime,commit,node_list)

#Strip Effect HSV Fill Forward (clear,effect,n,start_delay,end_delay,H,S,V,channel,realtime,commit)
#n = 0
#start_delay = 10
#end_delay = 20
#artiudp.strip_effect_hsv(1,1,n,start_delay,end_delay,0,255,255,channel,realtime,commit,node_list)

################################
# Segment Effect Command Tests #
################################

#Segment Effect RGBW Fill Forward (clear,effect,n,start,end,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start = 10
#end = 30
#start_delay = 10
#end_delay = 20
#artiudp.segment_effect_rgbw(0,1,n,start,end,start_delay,end_delay,0,0,255,0,channel,realtime,commit,node_list)

#Segment Effect RGBW Fill Reverse (clear,effect,n,start,end,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start = 40
#end = 60
#start_delay = 10
#end_delay = 20
#artiudp.segment_effect_rgbw(1,2,n,start,end,start_delay,end_delay,0,0,255,0,channel,realtime,commit,node_list)

#Segment Effect RGBW Clear Forward (clear,effect,n,start,end,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start = 60
#end = 70
#start_delay = 10
#end_delay = 20
#artiudp.segment_effect_rgbw(0,3,n,start,end,start_delay,end_delay,255,0,0,0,channel,realtime,commit,node_list)

#Segment Effect RGBW Clear Reverse (clear,effect,n,start,end,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start = 80
#end = 90
#start_delay = 10
#end_delay = 20
#artiudp.segment_effect_rgbw(0,4,n,start,end,start_delay,end_delay,255,0,0,0,channel,realtime,commit,node_list)

#Segment Effect RGBW Fill Outward (clear,effect,n,start,end,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start = 20
#end = 110
#start_delay = 5
#end_delay = 25
#artiudp.segment_effect_rgbw(0,5,n,start,end,start_delay,end_delay,0,0,255,0,channel,realtime,commit,node_list)

#Segment Effect RGBW Fill Center (clear,effect,n,start,end,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start = 40
#end = 90
#start_delay = 5
#end_delay = 25
#artiudp.segment_effect_rgbw(0,6,n,start,end,start_delay,end_delay,255,0,255,0,channel,realtime,commit,node_list)

#Segment Effect RGBW Clear Outward (clear,effect,n,start,end,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start = 40
#end = 90
#start_delay = 5
#end_delay = 25
#artiudp.segment_effect_rgbw(0,7,n,start,end,start_delay,end_delay,255,0,255,0,channel,realtime,commit,node_list)

#Segment Effect RGBW Clear Center (clear,effect,n,start,end,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start = 40
#end = 90
#start_delay = 5
#end_delay = 25
#artiudp.segment_effect_rgbw(0,8,n,start,end,start_delay,end_delay,255,0,255,0,channel,realtime,commit,node_list)

#Segment Effect RGBW Strobe Even (clear,effect,n,start,end,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 20
#start = 40
#end = 90
#start_delay = 20
#end_delay = 20
#artiudp.segment_effect_rgbw(0,9,n,start,end,start_delay,end_delay,255,0,255,0,channel,realtime,commit,node_list)

#Segment Effect RGBW Strobe Vari (clear,effect,n,start,end,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 40
#start = 40
#end = 90
#start_delay = 50
#end_delay = 5
#artiudp.segment_effect_rgbw(0,10,n,start,end,start_delay,end_delay,255,0,255,0,channel,realtime,commit,node_list)

#Segment Effect RGBW Fill Random (clear,effect,n,start,end,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start = 40
#end = 90
#start_delay = 10
#end_delay = 50
#artiudp.segment_effect_rgbw(0,11,n,start,end,start_delay,end_delay,255,0,255,0,channel,realtime,commit,node_list)

#Segment Effect RGBW Fill Fade In (clear,effect,n,start,end,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 50
#start = 40
#end = 90
#start_delay = 10
#end_delay = 20
#artiudp.segment_effect_rgbw(0,12,n,start,end,start_delay,end_delay,255,0,255,0,channel,realtime,commit,node_list)

#Segment Effect RGBW Fill Fade Out (clear,effect,n,start,end,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 50
#start = 40
#end = 90
#start_delay = 10
#end_delay = 20
#artiudp.segment_effect_rgbw(0,13,n,start,end,start_delay,end_delay,255,0,255,0,channel,realtime,commit,node_list)

#Segment Effect RGBW Fill Forward Gradient In (clear,effect,n,start,end,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start = 20
#end = 40
#start_delay = 10
#end_delay = 20
#artiudp.segment_effect_rgbw(0,14,n,start,end,start_delay,end_delay,255,0,255,0,channel,realtime,commit,node_list)

#Segment Effect RGBW Fill Reverse Gradient In (clear,effect,n,start,end,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 0
#start = 50
#end = 60
#start_delay = 10
#end_delay = 20
#artiudp.segment_effect_rgbw(0,15,n,start,end,start_delay,end_delay,0,0,255,0,channel,realtime,commit,node_list)

#Segment Effect RGBW Forward Pixel Run (clear,effect,n,start,end,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#n = 1
#start = 0
#end = 133
#start_delay = 1
#end_delay = 1
#artiudp.segment_effect_rgbw(2,22,n,start,end,start_delay,end_delay,255,0,255,0,channel,realtime,commit,node_list)

#Segment Effect RGBW Smart Fill Forward (clear,effect,n,start,end,start_delay,end_delay,R,G,B,W,channel,realtime,commit)
#clear = 1
#step = 1
#segments = 3
#delay = 0
#start = 0
#end = 200
#artiudp.segment_effect_rgbw(clear,27,step,start,end,delay,segments,0,0,0,255,channel,realtime,commit,node_list)

#Segment Effect RGB Fill Forward (clear,effect,n,start,end,start_delay,end_delay,R,G,B,channel,realtime,commit)
#n = 0
#start = 10
#end = 30
#start_delay = 10
#end_delay = 20
#artiudp.segment_effect_rgb(0,1,n,start,end,start_delay,end_delay,0,0,255,channel,realtime,commit,node_list)

#Segment Effect HSV Fill Forward (clear,effect,n,start,end,start_delay,end_delay,H,S,V,channel,realtime,commit)
#n = 0
#start = 10
#end = 30
#start_delay = 10
#end_delay = 20
#artiudp.segment_effect_hsv(0,1,n,start,end,start_delay,end_delay,0,255,255,channel,realtime,commit,node_list)

#########################
# Palette Command Tests #
#########################

#Set Palette(palette,channel,realtime): Set global Palette
#palette = 7
#artiudp.set_palette(palette,channel,realtime,node_list)

#Set Simple Custom Palette (R,G,B,R,G,B,channel,realtime): Set global Palette from 2 colors 2 x (R,G,B)
#artiudp.set_simple_custom_palette(255, 0, 0, 0, 0, 255, channel, realtime, node_list)

#Set Advanced Global Palette: (Position, Red, Green, Blue (2-16 x (Position,R,G,B), channel, realtime)
#arr=[[0,255,0,0],[127,0,255,0],[255,255,0,255]]
#artiudp.set_advanced_custom_palette(arr,channel,realtime,node_list)

#Set Target Palette (palette,channel,realtime): Set Global Target Palette for Blending
#palette = 40
#artiudp.set_target_palette(palette,channel,realtime,node_list)

#Set Simple Target Palette for Blending (R,G,B,R,G,B,channel,realtime): Set global Palette from 2 colors 2 x (R,G,B)
#artiudp.set_simple_target_palette(0, 255, 0, 255, 0, 0, channel, realtime, node_list)

#Set Advanced Target Palette for Blending: (Position, Red, Green, Blue (2-16 x (Position,R,G,B), channel, realtime)
#arr=[[0,0,255,0],[100,0,0,255],[255,255,0,0]]
#artiudp.set_advanced_target_palette(arr,channel,realtime,node_list)

#Strip Palette (blend,scale,alternate,start_index,end_index,channel,realtime,commit) -> 0=No Blend 1=Linear Blend, 0=No Scale or (1-255), 0=No Alternate 1=Alternate
#channel = 0
#blend = 1
#scale = 1
#alternate = 0
#start_index = 0
#end_index = 255
#artiudp.strip_palette(blend,scale,alternate,start_index,end_index,channel,realtime,commit,node_list)

#Strip Part Palette (start,end,clear,blend,scale,alternate,start_index,end_index,channel,realtime,commit) -> 0=No Blend 1=Linear Blend, 0=No Scale or (1-255), 0=No Alternate 1=Alternate
#start = 1
#end = 2
#clear = 1
#channel = 0
#blend = 1
#scale = 1
#alternate = 0
#start_index = 0
#end_index = 255
#artiudp.strip_part_palette(start,end,clear,blend,scale,alternate,start_index,end_index,channel,realtime,commit,node_list)

#Segment Palette (start,end,clear,blend,scale,alternate,start_index,end_index,channel,realtime,commit) -> 0=No Blend 1=Linear Blend, 0=No Scale or (1-255), 0=No Alternate 1=Alternate
#start = 100
#end = 200
#clear = 1
#channel = 2
#blend = 1
#scale = 3
#alternate = 0
#start_index = 0
#end_index = 255
#artiudp.segment_palette(start,end,clear,blend,scale,alternate,start_index,end_index,channel,realtime,commit,node_list)

#Multi Channel Strip Part Palette ([n x [channel,start,end,clear,blend,scale,alternate,start_index,end_index] ],channel,realtime,commit)
#clear = 1
#blend = 1
#scale = 1
#alternate = 0
#start_index = 0
#end_index = 255
#arr = [[1,0,30,clear,blend,scale,alternate,start_index,end_index],[2,0,60,clear,blend,scale,alternate,start_index,end_index]]
#artiudp.multi_channel_strip_part_palette(arr,channel,realtime,commit,node_list)

#Multi Channel Segment Palette ([n x [channel,start,end,clear,blend,scale,alternate,start_index,end_index] ],channel,realtime,commit)
#clear = 1
#blend = 0
#scale = 1
#alternate = 0
#start_index = 0
#end_index = 255
#arr = [[1,0,30,clear,blend,scale,alternate,start_index,end_index],[2,0,60,clear,blend,scale,alternate,start_index,end_index]]
#artiudp.multi_channel_segment_palette(arr,channel,realtime,commit,node_list)

#Blend Palette (speed,steps,delay,channel,realtime) : Blends Current Palette to Target Palette with Step -> 0=No Blend, 1=Very Slow, 50=Fast (Call Blend 100 times)
#speed = 50
#steps = 1
#delay = 0
#for x in range(150):
#  print (x)
#  time.sleep(0.01)
#  artiudp.blend_palette(speed,steps,delay,channel,realtime,node_list)
#  artiudp.strip_palette(blend,scale,alternate,start_index,end_index,channel,realtime,commit,node_list)

##################################
# Controller Additional Commands #
##################################

#On: Turns PSU On and all channels On depending on Startup Mode it will go to Default or Saved State
#artiudp.on(node_list)

#Off: Turn Leds Off and PSU Off
#artiudp.off(node_list)

#Sleep: Put Led Controller Asleep. Turn Power Save On.
#artiudp.sleep(node_list)

#Awake: Awaken Led Controller or Keep Awake. Turn Power Save Off. (After Power Save Leds will remain off. Use 'On' or 'Restore' to turn leds on).
#artiudp.awake(node_list)
