Artisan can communicate with a large number of devices out-of-the box and can call external programs to be extended programmatically.