Our Core Values: Expertise

I have believed in four core principles for nearly my entire life.  When I found my faith… those four core principles were validated–and a fifth was added.  These core values are the foundation upon which Intellic Integration is built.  This post is part 4 of 5… to explain what our values are and why they matter.

  1. Authenticity
  2. Transparency
  3. Humility
  4. Expertise
  5. Faith-Based Servant Leadership

You can view the explanation of our core values here.

Expertise

Drives us to maintain our expert status through training and continuing education. We build teams of Subject Matter Experts so our clients don’t have to. The ability to select more complicated projects preserves a work environment that is challenging and exciting. Intellic is viewed as the team who pushes technology to the edge!

What Is Expertise?

  1. We are all experts in a discipline of Engineering and/or Software
  2. We put our experts forward
  3. We share our expertise with our colleagues and our clients

Why Does It Matter?

  1. Expertise is what we are known for… this drives us to live up to our reputations–with great knowledge comes great responsibility
  2. Building teams of subject matter experts is the best way to ensure that our clients leverage technology to do more with less–this is how we help to keep good paying, middle class manufacturing jobs here in the United States

Intellic Integration was born out of a need we observed in the Systems Integration market.  The typical systems integrator has 1 or 2 rockstar engineers/developers and then a host of contractors and junior engineers.  The rockstar engineers are put forward during the sales phase but are rarely used during the development phase–primarily because they are busy working on application engineering and sales.  It is left to contractors and junior engineers to do the development.  We have observed this approach time and time again in the marketplace.

There is an inherent flaw in this model… it has created a vacuum in the market–one that we set out to fill.

The client is sold a bill of goods based on the expertise of the rockstar applications engineer and then delivered a sub-par project by the still developing contractor or junior engineer… this sets the project up to be oversold and underdelivered.  It is pure economics that drives this model… and leaves the client and project wanting.

Early in my career I developed a team building model that allowed us to staff our entire organization with subject matter experts while still being able to afford to offer the most competitive rates for our clients.  This model, known as the T-Based team, has given us an opportunity to build a reputation as being the only systems integrator that guarantees the rockstar subject matter experts will be delivering solutions to our clients at the same price or less than integrators utilizing the more traditional model above.

Our engineers and software developers are the highest paid in the industry… they are the rockstar subject matter experts… and they are the reason we have developed the reputation as being the systems integrator you call when all others have failed.

Thanks for reading!

Walker

 

Our Core Values: Humility

I have believed in four core principles for nearly my entire life.  When I found my faith… those four core principles were validated–and a fifth was added.  These core values are the foundation upon which Intellic Integration is built.  This post is part 3 of 5… to explain what our values are and why they matter.

  1. Authenticity
  2. Transparency
  3. Humility
  4. Expertise
  5. Faith-Based Servant Leadership

You can view the explanation of our core values here.

Humility

Teaches us that while we are an elite team it is impossible to know everything. We welcome the opportunity to learn through and with clients and employees.

What Is Humility?

 

  1. We all have strengths
  2. We all have weaknesses
  3. We admit our strengths
  4. We admit our weaknesses
  5. We offer support
  6. We accept support

Why Does It Matter?

  1. Humility keeps us from making promises we can’t keep by not accepting projects we aren’t equipped to deliver
  2. Humility reminds us we are here to offer support to those who need it and accept support from those who are better qualified than we are
  3. Humility reminds us to work with our colleagues, clients and peers (sometimes called competitors) and NEVER against them
  4. Humility makes us more than the sum of our whole by leveraging each individuals strengths while shoring up the weaknesses

Growing up, my father used to repeat many maxims to my siblings and me–many of which will be repeated on this blog.  The one I remember the most was first told to me when I was 8 or 9 years old.  I was working on my first group project in school–a science experiment for our Science Fair.  I was struggling… our group wasn’t working together well, we were behind schedule and, honestly, completely without direction.  I complained to my father that I was going to end up with a bad grade on this assignment because my group wasn’t carrying their weight.  In a moment of Zen he said–‘Walker, to be successful in life you have to know two things: What you are good at and, more importantly, what you are not good at.  Surround yourself with the people who are good at the things you are not and then you will find success.’

I followed his lead and asked myself what strength I brought to the team, what were we missing and then found the members of my group who could shore up my weaknesses… we hit our stride and got an A on the assignment and medaled at the Science Fair.

That lesson has stuck with me nearly all of my life… and it has become a core principle at Intellic Integration.  We admit what we are good at, we admit what we are not so good at and then we organize the team to strengthen our weaknesses. That is the crux of humility… we use our strengths to shore up our team’s weaknesses.

Humility matters… 

Thanks for reading,

Walker

Our Core Values: Authenticity

I have believed in four core principles for nearly my entire life.  When I found my faith… those four core principles were validated–and a fifth was added.  These core values are the foundation upon which Intellic Integration is built.  This post is part 2 of 5… to explain what our values are and why they matter.

  1. Authenticity
  2. Transparency
  3. Humility
  4. Expertise
  5. Faith-Based Servant Leadership

You can view the explanation of our core values here.

Authenticity

Inspires us to genuinely care about our employees, clients and their customers, society, and human kind. Our approach in all that we do is to consider the wider impact; we want to save and create middle-class jobs.

 

What Is Authenticity?

  1. We are all human
  2. We all put our pants on one leg at a time
  3. We all have successes
  4. We all make mistakes
  5. We are our authentic selves, always

Why Does It Matter?

  1. Authenticity connects us to our colleagues and our clients
  2. Authenticity means we can be who we are… we don’t waste energy on being someone we are not
  3. Authenticity means we can react to challenges with our native gifts–this makes us efficient, engaged and successful
  4. Authenticity gives our colleagues and our clients the freedom to express naturally

Authenticity is the idea that we celebrate all of the nuances that make each individual on our team and in our portfolio unique.  When we are free to be our authentic selves,  we are freed from the constraints of being someone we are not.  When we celebrate the nuances of the individual we celebrate the strengths while acknowledging the weaknesses.  This gives Intellic the ability to build truly dynamic teams where members are free to be themselves.  This is efficient, refreshing and plain good business.

Authenticity matters… 

Thanks for reading,

Walker

Our Core Values: Transparency

I have believed in four core principles for nearly my entire life.  When I found my faith… those four core principles were validated–and a fifth was added.  These core values are the foundation upon which Intellic Integration is built.  This post is part 1 of 5… to explain what our values are and why they matter.

  1. Authenticity
  2. Transparency
  3. Humility
  4. Expertise
  5. Faith-Based Servant Leadership

You can view the explanation of our core values here.

Transparency

Encourages us to be open about our business practices with employees and clients. We join organizations like CSIA (Control System Integrators Association) to stay up to date on best business practices, industry standards, and trends as well as conferences.

I have never really understood the value of playing games, talking out of both sides of the mouth, manipulating (using soft skills, Carnegie etc) or misrepresenting the truth when dealing with anyone–especially clients and colleagues.  I believe that transparency in all interactions is important.  At Intellic Integration, we tell it like it is.  We don’t sugar-coat things, we don’t mislead, we don’t manipulate and we definitely don’t talk out of both sides of our mouths.  What we do is respect that our colleagues and clients can handle the bare truth–that they want the raw data–that they appreciate and desire transparency in all interactions.

What Is Transparency?

  1. We tell it like it is…
  2. We are transparent about our skills
  3. We are transparent about our business practices
  4. We are transparent about our profitability
  5. We are transparent about our schedule
  6. We are transparent about our compensation
  7. We are transparent about our successes and our failures
  8. We are transparent about our expectations and how each of us are living up to them

Why Does It Matter?

  1. Transparency breaks down the walls that create uncertainty in and out of the office
  2. Transparency translates into expediency–especially, when you hire the right type of people (A Players)
  3. Transparency is profitable.  Colleagues know the expectations and this clarity translates into faster delivery times.  Clients have the information they need, when they need it–for better or worse
  4. Transparency builds trust.  When transparency breaks down the relationship then it means you are dealing with someone who does not value transparency in their own lives–these are not A Players… these are not the people you want on your team or in your portfolio
  5. Transparency cuts through the crud… no more sandwich techniques (start with something good, sandwich the growth opportunity in the middle, end with something good), Carnegie manipulations or whatever management technique is popular at the time

Transparency saves time, builds trust, increases efficiency and builds mutual respect at all levels of the organization–inside and out.  At Intellic Integration… Transparency is a very important core value–one we talk about every single day.  When someone joins our team they can be confident they haven’t had the wool pulled over their eyes.  When a client joins our portfolio, they can be confident that they will always have accurate, timely and clear information to make decisions.

Transparency matters… 

Thanks for reading,

Walker

Ignition Makes All Things Possible

One of my core beliefs is for a System Integrator to remain relevant, successful and on the cutting edge of technology, the leadership must stay close to the technology.  So… while I own Intellic Integration, that doesn’t mean I work in the office on paperwork all day.  I still spend a lot of time working on projects (part of the deal I made with myself is that I would never give development up–no matter how successful we became).  Last year, I spent 270 days on the road developing–primarily with Ignition.  The same will hold true for this year.

This past week, I was on-site in Mexico running off a project our team has been developing since December.  This project is a classic example of the type of work we are called on to do.  An end-user has an atypical integration… they’ve called on other integrators to take a stab at it and it didn’t go well.  They find out about Intellic through the Ignition community and give us a call.  The project is late and over-budget before we ever walk in the door.  We whiteboard a solution, submit a proposal, a schedule and get to work.  This week was classic II…

The Situation:

The client has a Komax Alpha 355S.  This is a machine that creates finished products from wire and terminal ends–either single terminal and double terminal.  There are 6 total axis of motion control, embedded controller, Windows XP PC with Custom UI and no PLC.  The client wants OEE, Error Logging, Status and integration with SAP for work order retrieval and SAP confirmation.

The Challenges:

  1. No PLC and the OEM won’t allow one to be added or integrated
  2. Windows XP OS is behind 3 layers of firewall from the Ignition Gateway and IS won’t open anything but a direct connection to :8080
  3. The OEM provides 3 flat files–production, quality and error–that are updated only on each status change.  All of these files are both comma and tab delimited
  4. The location of the files changes every day

The Solution:

  1. File copier program in Ignition
    1. Checks the flat files to see if they have been updated
    2. Contains a client window with configuration options for the location of the flat files, the location of the gateway, the dynamic pattern of the file location (in this case parentPath + Year/Month/Day)
  2. Shared script library
    1. Contains 1 package and 5 scripts–34 total functions and over 2000 lines of code
  3. Ship the files to a REST endpoint on the Gateway
    1. doPost contains code that copies the files onto the Gateway server
    2. doPost logs the copy and then calls shared.ii.parsers.komax
  4. Parse the files
    1. Our parsing code contains a total of 26 functions–about half of them are nested
    2. The parser pulls apart the flat files and builds 3 datasets–one is the complete production history, one is the complete error history, the last is the complete quality history.  This dataset is updated each time the status changes
    3. At the end of parsing, the parser writes values into our UDTs
  5. UDTs
    1. We built a total of 9 UDTs to handle monitoring of the files, quality, production and error data
    2. These UDTs are then used to map into the OEE template exactly as if they were PLC tags coming from a PLC

The Result:

This is a screenshot of the final product in development prior to turning the SAP interface on.  All data is test data and contains no IP.  The upper right hand corner contains all of the parsed Production and Error Log data.  The lower right contains some test buttons (for reset and starting test runs) as well as the quality and count data.  In this case, the operator manually enters in waste pieces and tells how many pieces are in a lot for this batch.  All counts, errors, status and quality data are pulled from our parser and UDTs–making this a fully automated solution with little input from the operator.   Work orders are pulled from SAP and all data is shipped back to SAP on completion of the run.

HMO

This is the fun stuff… this is why Intellic has thrived and why I won’t ever stray too far from the technology.  Now… its time to grab a flight back to the States and enjoy a weekend with my family.

Thanks for reading!

Blessings,

Walker

MQTT Custom Name Spaces

Over the last week, I’ve been working with MQTT–Node Red, Raspberry Pi3, Ignition by Inductive Automation, Cirrus Link MQTT modules and MQTT Spy to build an OEE simulator.  This is for a client based in Europe, with operations all over the world.  We are implementing a hybrid of our OEE template and the goal is to integrate hundreds of lines, globally, in the next 18 months.

With MQTT, all topics (tags) are published to a central broker, which then publishes the topic updates to all agents who are subscribing to those topics (tags).  When subscribing we have a couple of options.

I can say subscribe to topic hello/world, hello/mom, hello/dad or I can say subscribe to topic hello/#.  This will subscribe us to any current topics under the hello directory and any future ones.  Of course, if we say subscribe to topic # then we will subscribe to all current and future topics, no matter what directories they sit in.

For the project we are currently working on, our plants only want to subscribe to topics (tags) that fall under their plant.

In the video below, I show you how to use Custom Name Spaces in Cirrus Link’s MQTT Engine module to filter to only the topics (tags) we want to see in our gateway.  In this example, a Raspberry Pi3 is our Broker and Ignition is an Agent.

Enjoy!

Walker

Getting Started with Ignition and MQTT

Inductive Automation IIOT recently announced the release of Ignition Edge–a new offering of their Ignition platform as an edge of network resource.  The new licensing model offers a stripped down version of Ignition for edge of network HMI applications for about $1000.  Consumers can add on MQTT and Store and Forward–to integrate the edge of network gateway with a central enterprise gateway–for a few hundred dollars more.  This announcement motivated me to put together a quick demo of Ignition using the Cirrus Link MQTT modules, a Raspberry Pi, and ESP8266 Arduino and Kepserver IOT Gateway.

The goal here is to help interested developers and end users quickly put together an MQTT Ignition environment to develop in… the process is easy, painless and a lot of fun.

This post is a companion to a comprehensive video we released on Wednesday 3/16/17.  You can view the video here.

Architecture

Demo Architecture with Raspberry Pi as Broker

 

Steps:

  1. Install Mosquitto on Raspberry Pi
    1. Pi will be our broker in this example
  2. Install MQTT Spy on Windows
    1. MQTT Spy will be a publisher and subscriber
  3. Setup ESP8266 Arduino
    1. Arduino will read an LM35 temperature sensor and publish two topics
      1. Intellic/Pyramid/Temp
      2. outTopic
  4. Install and Setup the Cirrus Link MQTT Modules in Ignition
  5. Install and Setup Kepserver IOT Gateway
  6. Build a test window and play around
MQTT Hardware

Raspberry Pi3, Adafruit Feather HUZZAH ESP8266 with LM35 Temperature Sensor

Step 1. Install Mosquitto on Raspberry Pi

The best instructions I found for installing Mosquitto were here.

  1. Install Mosquitto
  2. Stop the server
  3. Update Mosquitto.conf
  4. Restart server
  5. Open a new terminal and subscribe to a topic
    1. mosquitto_sub -d -t hello/world
  6. Open another terminal and publish to the topic
    1. mosquitto_pub -d -t hello/world -m ‘Test’
  7. Revel in your glory… you just set up a Raspberry Pi3 as an MQTT Broker, subscribed to and published to a topic!

Mosquitto sub

Mosquitto pub

Step 2. Install MQTT-Spy on Windows

Documentation for MQTT-Spy are here.  MQTT-Spy will be used to publish and subscribe to topics from one of our servers.  Essentially, we use it in this demo as another agent to show the versatility of MQTT-Spy.

  1. Download MQTT-Spy
  2. Run the jar
  3. Setup a connection with the broker (in our case, 192.168.0.33:1883)
  4. Use hashtag to subscribe to all topics
  5. Revel in your glory… you just set up MQTT-Spy to talk to your broker!

Spy 1

Spy 2

Step 3. Setup the ESP8266 Arduino with LM35 Temperature Sensor

Documentation on the ESP8266 can be found here.

  1. Wire up the LM35 to A0 (ADC) analog in
  2. Open up the Arduino IDE and use the code below (add in your SSID and Password and your broker IP address).
/*
 Basic ESP8266 MQTT example

 This sketch demonstrates the capabilities of the pubsub library in combination
 with the ESP8266 board/library.

 It connects to an MQTT server then:
  - publishes "hello world" to the topic "outTopic" every two seconds
  - subscribes to the topic "inTopic", printing out any messages
    it receives. NB - it assumes the received payloads are strings not binary
  - If the first character of the topic "inTopic" is an 1, switch ON the ESP Led,
    else switch it off

 It will reconnect to the server if the connection is lost using a blocking
 reconnect function. See the 'mqtt_reconnect_nonblocking' example for how to
 achieve the same result without blocking the main loop.

 To install the ESP8266 board, (using Arduino 1.6.4+):
  - Add the following 3rd party board manager under "File -> Preferences -> Additional Boards Manager URLs":
       http://arduino.esp8266.com/stable/package_esp8266com_index.json
  - Open the "Tools -> Board -> Board Manager" and click install for the ESP8266"
  - Select your ESP8266 in "Tools -> Board"

*/

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

// Update these with values suitable for your network.

const char* ssid = "**********";
const char* password = "**********";
const char* mqtt_server = "192.168.0.33";

WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;

void setup() {
  pinMode(BUILTIN_LED, OUTPUT);   // Initialize the BUILTIN_LED pin as an output
  Serial.begin(115200);
  
  // initialize the ADC pin as an input
  pinMode(A0, INPUT); 
  
  setup_wifi();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
}

void setup_wifi() {

  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();

  // Switch on the LED if an 1 was received as first character
  if ((char)payload[0] == '1') {
    digitalWrite(BUILTIN_LED, LOW);   // Turn the LED on (Note that LOW is the voltage level
    // but actually the LED is on; this is because
    // it is acive low on the ESP-01)
  } else {
    digitalWrite(BUILTIN_LED, HIGH);  // Turn the LED off by making the voltage HIGH
  }

}

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect("ESP8266Client")) {
      Serial.println("connected");
      // Once connected, publish an announcement...
      client.publish("outTopic", "hello world");
      client.publish("Intellic/Pyramid/Temp","0");
      // ... and resubscribe
      client.subscribe("inTopic");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}

// Declare variables for the analog input from temp sensor
int sensorPin = A0;
int sensorValue = 0;
String mes = "0";



void loop() {
  // Read the sensor
  sensorValue = analogRead(sensorPin);

  if (!client.connected()) {
    reconnect();
  }
  client.loop();
  
  long now = millis();
  if (now - lastMsg > 2000) {
    

    Serial.print("Raw Sensor Value:");
    Serial.println(sensorValue);
    
    lastMsg = now;
    ++value;
    snprintf (msg, 75, "hello world #%ld", value);
    Serial.print("Publish message: ");
    Serial.println(msg);
    client.publish("outTopic", msg);
    mes = String(sensorValue);
    client.publish("Intellic/Pyramid/Temp",(char*)mes.c_str());
  }
}


  1. Subscribe to the new topics in the Raspberry Pi
    1. mosquitto_sub -d -t Intellic/Pyramid/Temp
    2. mosquitto_sub -d -t outTopic
  2. Confirm that the updates are showing up in the Raspberry Pi and MQTT Spy
  3. Revel in your glory… you just successfully set up an ESP8266 with LM35 temperature sensor to publish to your MQTT Broker!
Spy 3

MQTT-Spy Testing Topics from Arduino

Step 4. Install and Setup the Cirrus Link MQTT Modules in Ignition

Download Ignition and the Cirrus Link Modules here.  Documentation for the modules are here.

  1. Install Ignition and Modules
  2. Configure MQTT Engine for your broker
  3. Create Custom Namespace with # to subscribe to all topics
  4. Test tags in Ignition
  5. Revel in your glory… you have successfully setup Ignition to talk to your broker over MQTT!
MQTT 1

Navigate to the Gateway Homepage and Open MQTT Engine Settings

MQTT 2

Configure a New MQTT Server

MQTT 3

Create a Custom NameSpace and Subscribe to # (all topics)

MQTT 4

Launch a Designer, Check Your Tags and Build a Demo Project!

Step 5. Setup Kepserver IOT Gateway

This process is straight forward… download Kepserver and install.  Create a new agent (that points to your broker) under the IOT Gateway and drop some tags in.  The video link at the beginning of this post covers the details very well.

Step 6. Build Your Demo Project

Once you have tags in Ignition, building a project is the same as with traditional tags.  The difference here is that as soon as new topics are published to the broker, they will just show up in the tag structure under the MQTT Engine.  I like to call this Self Aware SCADA.

There you have it… a simple demo in Ignition using a Raspberry Pi 3, Arduino ESP8266, MQTT-Spy and Kepserver IOT Gateway.

For a more detailed discussion about the implications of MQTT and the future of SCADA and the Industrial Automation space, please watch the video we put together here.

Thanks for reading!