You are on page 1of 39

L12 Device Health

Jeff Eaton

COMPANY CONFIDENTIAL

L07 - Device Health - Agenda


Device Health Overview
Dashboard GUI
SmartSystems Console Properties Viewer
Device Health XML for ITCSSApi
Rules Language
Ready-To-Work Control
SmartSystems Device Health Rules Editor

COMPANY CONFIDENTIAL

Device Health Overview


Collect Data, Process Rules, Report Status
Periodically collect health data
Rules Engine processes health data with user programmable
rules
Rules trigger Ready-To-Work status (Blue Light)
Dashboard GUI shows current state and reasons for this
state
Rules trigger messages sent up line to SmartSystems
console
View health data via SmartSystems Properties Viewer
Device Support
70 Series, CK3R/X, CN50, CS40, CV41, CV61

COMPANY CONFIDENTIAL

Health Data Collected


Detailed battery health statistics for on-time replacement
Network interface statistics for trouble-shooting connectivity
issues
Memory, Storage, Process info for monitoring critical
threshold violations
Scanner statistics to trend throughput deviations across
device pools
Version information to ensure up to date software
On-device as well as remote alerts upon deviations

NOTE: Info accessible via any device management console!

COMPANY CONFIDENTIAL

Collected Health Items - Battery


BackupBatteryFlag
BackupBatteryFullLifeTime
BackupBatteryLifePercent
BackupBatteryLifeTime
BackupBatteryVoltage
BatteryChargerState
BatteryCurrent
BatteryFlag
ManufacturedDate

BatteryHealth
BatteryTemperature
BatteryChemistry
BatterymAHourConsumed
ChargingTime
ExtremeTemperatureTime
HighTemperatureTime
LastFullCharge
LowTemperatureTime

BatteryLastChanged
BatteryLifePercent
BatteryLifeTime
BatteryHighTemperatureReached
BatteryLowTemperatureReached
BatteryPrevCPUUsage
BatteryTemperature
BatteryVoltage
PartNumber
SerialNumber
UsageTime

What if some batteries are not lasting through a shift?

COMPANY CONFIDENTIAL

Collected Health Items - WLAN


WLAN\AccessPoint
Associated
Authentication
BSSID
Channel
Encryption
SSID
WLAN\AdapterStats
ACKFailureCount
FCSErrorCount
FailedCount
FrameDuplicateCount
MultipleRetryCount
PacketReceiveErrors
PacketSendErrors
PacketsReceived
PacketsSent
RTSFailureCount
ReceivedFragmentCount
RetryCount
TimeUnassociated
TotalRoams
TransmittedFragmentCount

WLAN\Adapter
APIPA
Antenna
Country
DHCP
DHCPLeaseExpires
DHCPLeaseObtained
DHCPServer
DefaultGateway
Driver
Enabled
HardwarePresent
IP
IntermecDhcpVersion
Link_Mbps
MAc
NICnotifications
Noise_dBm
Power
RSSI_dBm
RoamThreshold_dBm
SNR_dB
SubnetMask
TxPower_mW
ZeroConfig

COMPANY CONFIDENTIAL

Collected Health Items - WLAN


Access Points
the device has been associated with

WLAN\Association\00:23:ab:24:b2:c0
Associations
AverageTimeAssociated_seconds
MaxLink_Mbps
MaxNoise_dBm
MaxRSSI_dBm
MaxTxPower_mW
MinLink_Mbps
MinNoise_dBm
MinRSSI_dBm
MinTxPower_mW
TimeAssociated_seconds

Access Point List

WLAN\BSSID\00:02:2d:64:e1:5e
Configuration\ATIMWindow
Configuration\BeaconPeriod
Configuration\DSConfig
InfrastructureMode
MacAddress
NetworkType
Privacy
RSSI
SSID
SupportedRates\0
SupportedRates\1
SupportedRates\2
SupportedRates\3
SupportedRates\4
SupportedRates\5
SupportedRates\6
SupportedRates\7

COMPANY CONFIDENTIAL

Scanning Health
State
Good Reads
Trigger Pulls
Trigger Releases
Accumulated Decode Time

Internal Scanner only!!


COMPANY CONFIDENTIAL

Dashboard GUI

Accessed via ? key on the keypad


Displays current ReadyToWork status
Displays select device health information
Current screen and health data are captured
when Dashboard App starts
Disable/enable Rules causing unhealthy status

COMPANY CONFIDENTIAL

Dashboard GUI

COMPANY CONFIDENTIAL

10

Dashboard Configuration
Enable/Disable Dashboard GUI

COMPANY CONFIDENTIAL

11

Dashboard GUI Configuration


Dashboard GUI Screen Capture Location

COMPANY CONFIDENTIAL

12

SmartSystems Console Properties Viewer

COMPANY CONFIDENTIAL

13

SmartSystems API
Set of APIs to manage settings locally
Device Management Resource Kit - IDL
Device support (7xx, CVx, CNx, CKx, CS40)
Language support, C, C++, C#, VB.Net, Java
XML Driven SmartSystems configuration XML
Now can be used to retrieve Device Health items
Health items require Management license on
device

COMPANY CONFIDENTIAL

14

Licensing
No license required to access device health through
dashboard on device
Management License required for any Partner application
or Remote Console (including SmartSystems Console) to
access device health
Per device license
Only applicable on devices with 4.XX SmartSystems Client
60-day demo period available
Part Number: 454-048-001
List Price: $20

COMPANY CONFIDENTIAL

15

SmartSystems Settings XML - Device Health

<Subsystem Name="Device Monitor">


<Group Name="ITCHealth">
<Field Name="System\Power\Battery\BatteryHealth"></Field>
<Field Name="System\Power\Battery\BatteryFlag"></Field>
<Field Name="System\Power\Battery\BatteryLifePercent"></Field>
<Field Name="System\Power\Battery\BatteryTemperature"></Field>
</Group>
</Subsystem>

How do you figure out the name path??


SmartSystems Asset Message
Health Data Model Files
Intermec\SmartSystems\SS_Lib\Tools\RulesEditor\DataModels

COMPANY CONFIDENTIAL

16

Exercise 1 ITCSSApi
Retrieve individual health items via the ITCSSApi
Lab12 Device Health\Exercise 1 Instructions.txt

COMPANY CONFIDENTIAL

17

SmartSystems Settings XML


Device Health
<Subsystem Name="Device Monitor">
<Group Name="ITCHealth">
<Field Name="HealthInfo"></Field>
</Group>
</Subsystem>

COMPANY CONFIDENTIAL

18

Exercise 2 ITCSSApi
Retrieve all health data via the ITCSSApi
Lab12 Device Health\Exercise 2 Instructions.txt

COMPANY CONFIDENTIAL

19

Device Health Rules - Overview


Simple Interpreted Programming Language
Monitor Health, Configuration and Registry
Items
Allows for Setting the Ready-To-Work state /
light
User Defined Health Messages with the Rtw
state
Executed when health data is collected or a
referenced configuration item or registry item is
manipulated
Requires a Rules file and a Language XML file

COMPANY CONFIDENTIAL

20

Example Rules File Content


/* RTW State Definitions */
INT RTW_BROKEN = 1;
INT RTW_UNHEALTHY = 2;
INT RTW_HEALTHY = 3;

/* bind variable to a health item */


INT MemoryLoad
= @[health/System/Memory/MemoryLoad];
/*If the MemoryLoad is greater than 90%, set the device to UnHealthy */
if (MemoryLoad > 90)
{
SetRtwState (RTW_UNHEALTHY, "", 11, __BLOCK__);
}

COMPANY CONFIDENTIAL

21

Device Health XML RTW number to text map


<Internationalization Version="1.0">
<RuleFile Name="HealthRules.txt">
<Map MsgNum="0" Value="%s" />
<Map MsgNum="1" Value="Initializing, please wait" />
<Map MsgNum="2" Value="Illegal or no Health Rules file" />
<Map MsgNum="3" Value="Health Rule Execution Error" />
<Map MsgNum="4" Value="Connected" />
<Map MsgNum="10" Value="Main Battery Low, charge or change battery" />
<Map MsgNum="11" Value="Memory is Full" />
<Map MsgNum="12" Value="No IP Address" />
<Map MsgNum="13" Value="Main Storage is Low" />
<Map MsgNum="14" Value="Battery health low, change battery" />
<Map MsgNum="20" Value="WLAN AP not associated." />
<Map MsgNum="21" Value="WLAN low signal strength" />
<Map MsgNum="22" Value="WLAN marginal link speed" />
<Map MsgNum="40" Value="Test and insert %s just before this" />
</RuleFile>
</Internationalization>

COMPANY CONFIDENTIAL

22

Health Rules Controlling Ready-To-Work


INT RTW_BROKEN
= 1;
INT RTW_UNHEALTHY = 2;
INT RTW_HEALTHY
= 3;

SetRtwState (RTW_UNHEALTHY, Optional Text, 40, __BLOCK__);


ForceAssetMsg ();

Rtw State Order of Precedence:

Broken
Unhealthy
Healthy

COMPANY CONFIDENTIAL

23

Health Rules Language - Basics


Types
INT, STRING, TIME, FLOAT

Constants
INT MEMORY_FULL = 10;
FLOAT fValue = -1.4;
TIME aTime = 02:00:00;
STRING myName = Jeff;

Comments
/* this is a comment block */

COMPANY CONFIDENTIAL

24

Health Rules Language - Basics


Data Bindings
Health, Configuration, Registry, Static
STRING systemUpTime = @[health:/System/UpTime];
INT tcoGUIEnabled = @[cfg:/Device Monitor/Device
Health/TCOGuiEnabled];
INT intRegCheck =
@[reg:/HKEY_LOCAL_MACHINE/Software/MyCompany/IntValue];
INT loopCnt
= @[static/loopCnt];
Strings are initialized to or empty strings
Integer and Floats are initialized to 0

Health Definition files


Located in ss_lib\Tools\RulesEditor\DataModels
NetworkHealthDataModel.xml
SystemHealthDataModel.xml
WWANConfigletDataModel.xml
COMPANY CONFIDENTIAL

25

Health Rules Language - Basics

Operators
arithmetic:
Logical:
Boolean:
Assignment:
Threshold:

-, +, *, /
==, <=, >=, <, >
&&, ||, ! (and, or, not)
=
<T, >T

COMPANY CONFIDENTIAL

26

Health Rules Language - Basics


No looping mechanism
Nested If / else is supported
if (a > b) || (c < d)
{
/* do something */
}
else
{
if (ab > (5 + 10 + 20))
{
/* do something else */
}
}

COMPANY CONFIDENTIAL

27

Health Rules Language - Basics

STRING Intrinsics
INT LENGTH (STRING arg1)
INT MATCH (STRING arg1, STRING arg2)
STRING CONCAT (STRING arg1, STRING arg2)

TIME Intrinsics
INT BETWEEN(TIME time1, TIME time2, TIME time3)
STRING TO_STRING(TIME time1)
TIME TO_TIME(STRING string1)

COMPANY CONFIDENTIAL

28

Rules Language Statics


INT iterCounter = @[static/IterationCounter];
TO_STRING (iterCounter);
INT iterCounter = @[static/IterationCounter];
STRING tempBuf = "";
iterCounter = iterCounter + 1;
if (iterCounter > 2)
{
tempBuf = CONCAT ("Iteration Counter = ", TO_STRING (iterCounter));
iterCounter = 0;
SetRtwState (RTW_UNHEALTHY, tempBuf, 0, __BLOCK__);
}

COMPANY CONFIDENTIAL

29

Rules Editor
Accessed via the SmartSystems Console
Menu Tools->Start Rules Editor
Right Click a Rule Bundle

Allows you to create / edit rule sets


Textual and graphic representation of rules

Automatically creates rule bundles


Bundles can update one or more devices with rule
sets
No reboot required to update rules

COMPANY CONFIDENTIAL

30

Rules Editor

COMPANY CONFIDENTIAL

31

Exercise 3 Rules Editor Add Config Item Rule


Create a Configuration Item Rule
Lab12 Device Health\Exercise 3 Instructions.txt
STRING Enable_Code_39 = @[cfg/Data Collection/Scanners:0/Symbologies/Code
39/Enable Code 39];
if (Enable_Code_39 != "1")
{
SetRtwState(RTW_UNHEALTHY, "", 50, __BLOCK__);
}

COMPANY CONFIDENTIAL

32

Exercise 4 Rules Editor Add Registry Item Rule


Create a Registry Entry Health Rule
Lab12 Device Health\Exercise 4 Instructions.txt

STRING RuleCheckValue =
@[reg/HKEY_LOCAL_MACHINE/SOFTWARE/Intermec/RuleCheckValue];
if (RuleCheckValue != 1")
{
SetRtwState(RTW_UNHEALTHY, "", 50, __BLOCK__);
}

COMPANY CONFIDENTIAL

33

SmartSystems Settings XML Rtw Info


<Subsystem Name="SS_Client">
<Group Name="Ready-to-Work">
<Field Name="State"></Field>
<Group Name="Reasons" Instance="*">
<Field Name="Reason"></Field>
<Field Name="ReasonNum"></Field>
</Group>
<Field Name="Time"></Field>
</Group>
</Subsystem>

COMPANY CONFIDENTIAL

34

Exercise 5 ITCSSApi
Retrieve Rtw state data via the ITCSSApi
Lab12 Device Health\Exercise 5 Instructions.txt

COMPANY CONFIDENTIAL

35

What about Printers?


You can access bluetooth connected printer health
information via the connected computer.
New Desktop printers have health information and
you can write rules for them. There is no Rule
Editor Support.
You must download rules to a persistent directory
and point the configuration parameter at them.

COMPANY CONFIDENTIAL

36

What about Printers?


Printer Demo
Show Printer Health Fields from an Asset Message
Show example rules
Send rules to printer and configure printer to use
them

COMPANY CONFIDENTIAL

37

Questions & Discussion

Thank You!
COMPANY CONFIDENTIAL

38

COMPANY CONFIDENTIAL

39

You might also like