What is an IoT Gateway?

IoT Gateways – Powering the Industrial Internet of Things

As the Internet of Things (IoT) expands, businesses find themselves faced with the challenge of integrating a multitude of devices and protocols, many with varying  power and connectivity requirements. This mix may also include legacy technologies.

IoT Gateways are emerging as an essential component in building a robust IoT and for delivering computational power in edge computing scenarios. Edge computing distributes the load on a system by performing data processing at the data source, or “edge”, rather than relying on a central server for the bulk of the work. This is where an IoT Gateway comes in, such as the OAS Platform.

iot gateway

What is an IoT Gateway?

An IoT Gateway is a solution for enabling IoT communication, usually device -to-device communications or device-to-cloud communications. The gateway is typically a hardware device housing application software that performs essential tasks. At its most basic level, the gateway facilitates the connections between different data sources and destinations.

A simple way to conceive of an IoT Gateway is to compare it to your home or office network router or gateway. Such a gateway facilitates communication between your devices, maintains security and provides an admin interface where you can perform basic functions. An IoT Gateway does this and much more.

What functions does an IoT gateway perform?

IoT Gateways have evolved to perform many tasks, from simple data filtering to enabling visualization and complex analytics. These smart devices are helping power the current wave of IoT expansion.

IoT Gateway feature set

A versatile IoT Gateway may perform any of the following :

  • Facilitating communication with legacy or non-internet connected devices
  • Data caching, buffering and streaming
  • Data pre-processing, cleansing, filtering and optimization
  • Some data aggregation
  • Device to Device communications/M2M
  • Networking features and hosting live data
  • Data visualization and basic data analytics via IoT Gateway applications
  • Short term data historian features
  • Security – manage user access and network security features
  • Device configuration management
  • System diagnostics

IoT Gateways and Edge Computing

In edge computing, critical data processing occurs at the data source rather than in a centralized cloud-based location. A versatile IoT Gateway is the essential link in delivering edge computing power to technicians in the field or at the plant floor. IoT Gateways that come equipped with these capabilities are referred to as ’Smart’ Gateways.

The OAS Platform and Universal Data Connector is an example of such a robust and versatile IoT Gateway. With its ability to operate at the data source as well as in the cloud to perform data aggregation and networking functions, the OAS Platform is also a flexible solution for most IoT and IIoT implementations.

 

Overview of IoT software products by Open Automation Software
Distributed Network Architecture implementing Edge Computing to provide accurate and scalable network solution for Industry 4.0 data.
How to publish data to Azure IoT Hub, AWS IoT Gateway, and MQTT Brokers.

IIoT Edge Computing vs. Cloud Computing

As enterprise data sources are becoming increasingly decentralized, the shortcomings of cloud-based architectures tend to rise to the surface.

What is Edge Computing?

In edge computing, critical data processing occurs at the data source rather than in a centralized cloud-based location. Other terms sometimes used to describe edge computing include ‘fog’ computing and grid computing.

The Industrial Internet of Things (IIoT) relies on data from many sensors, controllers and attached servers, often across multiple, remote locations. Certain data processing tasks are best performed ‘at source’ rather than in the cloud.

Why cloud solutions (on their own) are not suitable for realtime IIoT data

With typical network cloud systems, data is pushed up to a server and then pulled back down by clients. This works well for videos, pictures, music, documents and non-critical applications, but is not a good design for realtime IIoT data. If data does not reside at the source, the data quality may be unreliable. Issues with the freshness, accuracy of data, and speed of delivery are potentially impacted when using a cloud architecture.

When supporting a complex IIoT solution, a centralised cloud architecture becomes costly in terms of bandwidth cost and computing resources. Latency and network availability issues also impact cloud based IIoT.

Comparing Edge and Cloud Network Architectures

Edge Computing

  • Basic data visualization
  • Basic data analytics and short term data historian features
  • Data caching, buffering and streaming
  • Data pre-processing, cleansing, filtering and optimization
  • Some data aggregation
  • Device to Device communications/M2M

Cloud Computing

  • Complex analytics
  • Big Data mining
  • Sources of business logic
  • Machine learning rules
  • Advanced visualizations
  • Long term data storage/warehousing

Example – Edge Computing in the Field

Technicians working on a remote wind turbine use edge computing to view basic data and analytic information in the field. The essential data needed to diagnose the turbine is more efficiently delivered in the field without having to rely on patchy cellular communications with a cloud based solution.

Processing power is provided at the data source or ‘edge’ via standard PC hardware or other IIoT gateway devices. The centralized cloud platform is still utilized for more resource-intensive analytics, stored business logic and data warehousing.

The Business Case for Edge Computing

The business case for edge computing is driven by cost savings in computing power and bandwidth as well as its ability to provide faster and more accurate access to automation data at its source.

For many IIoT applications, edge computing is the  reliable and cost-effective way to ensure data quality,  freshness, accuracy and speed of delivery. Other factors such as the quantities of data transferred and bandwidth costs  will determine the ultimate mix cloud and edge services.

 

Which network architecture is right for your business?

Edge computing and cloud computing are complementary architectures that come together to create powerful IIoT platforms. One does not replace the other.

The best IIoT solution for your business will likely be a mix of the two architectures. Deciding which computing tasks should happen in the cloud or at the edge requires careful analysis of your business needs. Software providers like Open Automation Software are ideally placed to provide the software infrastructure for creating a world-class IIoT solution as well as providing advice on how to best design your edge computing platform.

download-Open-Automation-SoftwareDownload a free trial of OAS – start building an edge computing solution!

Complete this form and we’ll send you a download link to a fully functional trial version of Open Automation Software.

 

Create World Class IOT With Open Automation Software

Find out how our world class systems can be used to piece together all elements of your business into one cohesive system.

1. Connect

With Open Automation Software you can connect to almost any industrial data source – controllers, frameworks, protocols and databases. This means anything from manufacturing lines, to power stations and even air traffic control systems.

Sources include:

OAS IoT Data Communications

  • Modbus
  • Allen Bradley
  • Siemens
  • OPTO
  • OPC
  • .NET
  • REST
  • Java Script
  • MQTT
  • Excel
  • SQL Server
  • Oracle
  • mySQL
  • Access
  • Azure IoT
  • Amazon Web Services
  • and more

2. Data Processing

All data is processed and logged live at the source, with full store and forward. This means there’s no risk of data loss in the event of network failure. All your data is rendered in open format with resolution down to 100 nanoseconds.

3. Built On Distributed Network Architecture

Because our distributed networks use Live Data Cloud, you can host live data with any Windows PC without any risk of data loss that can occur with typical cloud architectures. Networking features allow you to forward, redirect and host data at the data source. You can send and receive data securely through any corporate network, even without internet access.

4. Data Transport and Security

Data is transported through a lightweight protocol using compressed, securely encrypted data packets. Full client and server confirmation of delivery of data at each end ensures the quality of data transported, and there is no limit to the number of security profiles you can create.

5. Data Destinations

You can visualize, analyze and deploy data within your organization, to any existing platform of your choice. This can be done through web, Windows, Smartphones, databases, and a variety of file formats. We provide your developers and system integrators full programmatic access to all data and configuration in open format. There’s also a range of free HMI symbols available for download, so your programmers can put together a visually engaging user interface.

See how an OAS system such as this came together for Allen Bradley Programmable Logic Controllers.

Cost-Effective Licensing

Our licencing is based on three simple factors;

  1. The number of tags you need to connect to
  2. The number of OAS products needed to connect your data sources
  3. Whether you need a networked or stand-alone system

You can still deploy unlimited client applications within each Distributed Network Architecture enabled server.

For more information about how OAS can streamline your business and protect your data, either contact us, request a quote online, or download a trial version of Open Automation Software.

OAS Security

hex-security-feature-graphicHow our systems protect your data on networks

With any Open Automation Software, security is built in thanks to the way in which our network communications work.

Our system utilizes both hardware and software technology to protect your information. Data is sent through a lightweight protocol with compressed, securely encrypted data packets. These encrypted packets can be transferred at extremely fast speeds with multiple values in each packet.

The quality of your data is assured with full client and server confirmation of data delivery, end to end. There’s also individual user security setup on data servers, providing client access to live data, historical data, and configuration.

No data loss on network failures

One of the great benefits of hosting data directly from the source, is that in the event of network failure, there’s no data loss.

So, whether you’re receiving data, alarm and access logs, or monitoring production in a remote location, nothing is lost due to dropped networks.

Just take a look at how our network architecture stacks up against typical cloud architectures:

Network Feature

OAS IoT DNA

Typical Cloud

Accurate Live Data Included Missing
No Data Loss on Network Failure Included Missing
Small Compressed Packet Size Included Missing
Open TCP Transport
WCF and/or REST
Included Unknown
High Speed Throughput < 50 ms Included Missing
Verification of Delivery of Data
Source to Destination
Included Missing
Data Resolution of 100 Nanoseconds Included Missing
Encrypted Secure Data Packets Included Unknown
Fastest Communication Possible
No Database Required
Included Missing

Iot Network Solutions

We’re proud to offer a range of network forwarding, redirect, and hosting solutions that can work in any combination to securely send and receive data through corporate networks, with or without the internet.

Find out more about our IoT network solutions:

What is the Internet of Things?

Where does Open Automation Software fit into it?

Internet-of-Things-Hex-IconThe Internet of Things (IoT) was a term initially used to describe the perceived future where everyday physical objects would be connected either wirelessly to each other, or to the internet, to allow them to be used more cohesively. On a domestic level, imagine your fridge being able to recognize you’re out of milk, eggs and juice, so it automatically orders replacements to be delivered using your account.

While not many of us are this integrated with the Internet of Things at home, the concept is already well used in much of our industrial sector. Entire production lines can be connected and managed from websites, software systems with emergency procedures, redundancy programs and data history logging.

Production of everything from food and drinks, to advanced electrical components, vehicles etc. while once managed from the manufacturing plant can now be controlled from anywhere in the world. If used properly, systems can be refined to reduce waste, save energy, increase production and improve quality.

This advancement of the industrial sector has also been labelled Industry 4.0, but we’ll delve into that another day.

For office buildings an integrated “Internet of Things” style system could combine security cameras, lighting, thermostats, speaker systems, cars and other appliances. Meaning security matters can be monitored quickly, staff know where company cars are located and when they need refuelling, you can securely open and lock doors, climate control the building for more efficient energy use and improve many more processes to make things more efficient.

So where does Open Automation Software fit into IoT?

Open Automation Software has developed a complete suite of software applications that can be customised to access, record and control everything from basic security systems to whole production lines and even international logistics.

Our HMI and SCADA toolkits are designed to promote the free flow of data and support a wide range of third party controls and add ins. Just take a look at how some of our clients have used OAS for large scale systems;

Case Study: AES Wind TurbinesAES-wind-generation-protecting-bats-turbine
Maintaining thousands of wind turbines across the US, AES Wind Generation found migrating bats were frequently killed by the turbines. A flexible HMI solution utilized the existing SCADA setup, helping them develop a process to reduce the impact on bats while keeping energy production losses to a minimum. Read more…

Case Study: NREL Solar Cells
The National Renewable Energy Laboratory utilize our software in the research and development of some of the most advanced solar cells in the world. Read more…

Case Study: JBT AeroTechAirport
Using Open Automation Software, JBT AeroTech have created an airport monitoring system linking everything from maintenance management systems to aircraft avionics data, baggage handling, ground support and more. This has improved airport operations, reduced missed connections and aircraft time in air, saving millions of dollars. Read more…

Open Automation Software has the experience and flexibility to develop a system that streamlines your production and saves you money. To learn more about our automation software products contact your OAS Sales Representative toll free in the US on 1-800-533-4994 or for international enquiries call 1-303-679-0898.

What is WPF?

Windows Presentation Foundation (WPF) is a newer version of Microsoft’s Windows Forms product.

What is WPF

What is WPF used for?

WPF (and the original Windows Forms) are suited to creating desktop applications that run on a Windows operating system. Both platforms can produce Smart Client applications. See www.smartclienthmi.com

Windows Forms has been around for as long as the .NET product, and arguably the most popular Windows Desktop application development since Visual Basic 6.

What is WPF?

Moving from Windows Forms to WPF

WPF provides much needed upgrades to the Windows Forms user Interface (UI) and also provides some specific programmatic advantages. It is not too difficult for someone who is competent in Windows Forms to upgrade their skill set to WPF as most of the code is similar. It doesn’t matter whether you are comfortable in writing C# or VB.Net applications.

Greater Flexibility and Improved Interface

The big difference is in the added flexibility and improved visual aspects of the interface. It all adds up to creating more engaging application in a shorter period of time with much less effort and coding.

Transforms, Storyboards and Animations

In WPF objects are easily rotated, sized, scaled and skewed without any code. WPF also offers the ability to create Storyboards. In short, Storyboard allows you to create real-time animation on the objects, for example, move, scale, rotate, change the color etc. over a time period.

Create screen resolution independent applications

One other major advantage the WPF has is the ability to create applications that are screen resolution independent. Your application will look just as nice on 600 x 800 as it does on high definition without having to rebuild you application.

WPF ideal for HMI and SCADA applications

WPF is a great choice for HMI and SCADA applications. Sure you can have an HMI or SCADA system based on Windows Forms, but if you are looking to do more than static images and text, WPF in a far better platform.

what is WPF?Like to know more about our WPF .NET product?

Open Automation Software offers a 100% managed WPF assembly to build live data dashboard applications using Visual Studio or Microsoft Blend with no code required.

To learn more about our WPF HMI.NET product contact your OAS Sales Representative toll free in the US on 1-800-533-4994 or for international enquiries call 1-303-679-0898.

What is JSON?

JSON-icon-2An Essential Part of the Web Developer’s Toolkit

If you’ve done any web development, you’ve probably seen mentions of JSON. In fact, if you’ve done any Javascript development lately, chances are good that you’ve even used JSON. It has become one of the most important tools in a JS developer’s toolkit. So what exactly is JSON?

What is JSON?: Javascript Object Notation

In short, JSON stands for JavaScript Object Notation, and is a concise hierarchical data serialization syntax that is supported by all modern browsers.

Its format makes it a lightweight way of representing objects, while remaining human-readable. For this reason it has replaced XML notation on many platforms.

XML is fantastic at describing object hierarchies and even semantics, but adds a great deal of overhead to the serialized object.

For example, the following is an example of a simple User object serialized to XML:

<xml>
   <user>
       <firstName>Jason</firstName>
       <middleName>Alexander</middleName>
       <lastName>Smith</lastName>
       <address>
           <street1>1234 Someplace Avenue</street1>
           <street2>Apt. 302</street2>
           <city>Anytown</city>
           <state>NY</state>
           <postalCode>12345</postalCode>
           <country>US</country>
       </address>
   </user>
</xml>

As you can see, the same data represented in JSON is far more efficient, while retaining all of its human-readability:

{
  "firstName" : "Jason",
  "middleName" : "Alexander",
  "lastName" : "Smith",
  "address" : {
    "street1" : "1234 Someplace Avenue",
    "street2" : "Apt. 302",
    "city" : "Anytown",
    "state" : "NY",
    "postalCode" : "12345",
    "country" : "US"
  }
}

JSON is Cross-Platform

Since browser support is so widespread, JSON is also a cross-platform way representing data. This is the real power of JSON. It can be used natively within Javascript without any parsing, interpretation or 3rd party libraries.

JSON objects can be passed around in variables and used as arguments of functions:

function restockSKU(product) {
   var prod = DB.getProductBySKU(product.SKU);
   setProductStock(product.quantity);
}

var product = { "SKU" : "123456", "quantity" :  9 };
restockSKU(product);

Referencing Values within JSON Object

As you can see, referencing values within a JSON object can done using the “.” notation to denote hierarchy. In the example above, you can see that the value in the “SKU” field is a string “123456” but the “quantity” field is a numeric 9.

JSON values can be any one of the following:

  • string (contained with quotes)
  • number (integers and decimals)
  • boolean (written as true or false, without quotes)
  • object (wrapped in curly braces, thus creating a hierarchy)
  • array (wrapped in square brackets and arrays can contain lists of any type, including mixed types)
  • null (written exactly as null to denote a non-value)

This is an example of a JSON object using all data types:

{
   "username" : "user0012",
   "age" : 21,
   "active" : true,
   "prefs" : {
       "home" : "http://google.com",
       "sessionExp" : 30,
       "colors" : [ "#000", "#FC0", "#00C"  ]
   },
   "referredBy" : null
}

Using JSON in the OAS Platform

The quickest and simplest way to add real time data and control to your web applications is through the Web HMI product. This technology lets you read and write real time data, display it in HTML elements and even control look and feel based on live server data.

All of these settings are applied as HTML attributes containing JSON to define behavior. After adding script reference to the OAS Web HMI libraries in your web page, applying attributes to your HTML elements will add real time data and customizable behavior to your application.

The simplest example of this is if you want to display a single real time server tag value in the following HTML DIV element:

<div id="myValue" ></div>

Just add the opc-tag-txt attribute to start displaying the current value of the “Pump.Value”:

<div id="myValue" opc-tag-txt='{"tag":"Pump.Value"}'></div>

A more complex example shows how you can use a series of boolean server tags to change the background color of a div when each evaluates to true, or when all are false:

<div id="myValue" opc-tag-bkg='{
   "type" : "group",
   "all_f" : {"color":"#F00"},
   "bad_q" : {"color":"#FC0"},
   "group" : [
   	{"tag":"Pump.Value","config":{"color":"#00F"}},
   	{"tag":"Pump2.Value","config":{"color":"#080"}}
   ]
}'></div>

In this example, the opc-tag-bkg attribute controls the background color under several conditions. The “group” field is an array of configurations containing a tag and color which are tested in order, using the first value that evaluates to True:

  • In this case, if Pump.Value evaluates to True, then the background color will be set to the HTML color of “#00F”, a bright blue.
  • If Pump.Value is False and Pump2.Value is True, the color will be set to “#080”, a green.
  • If both are False, the “all_f” color of “#F00” is used, setting the background to red.
  • If any value returns bad data quality from the server, “bad_q” will be used, setting it to “#FC0” or yellow.

JSON in the OAS Platform

JSON Calculations

The OAS Calculation Engine provides several functions for locating, constructing, and modifying JSON objects and nodes.
Read more about JSON Calculations.

JSON Data Type

OAS Tags have their data type set to JSON which provides some automatic validation. This data type is essentially the same as a String, but performs JSON validation every time the value is updated. If the value cannot be converted to JSON, the Tag will report “bad quality”. This indication of quality can be used for many features within OAS, including data logging, alarming, and more.

JSON Data Source

Using the JSON Data Source allows you to define a base JSON structure and map keys to OAS Tag values. This feature is extremely useful for dynamically populating JSON data without requiring any string manipulation or complex calculations.
Read more about using the JSON Data Source.

Additionally, the OAS Platform supports the use of JSON in several other product features.
Read more about JSON in the OAS Platform.

Learn More

For OAS Web HMI documentation, including a list of all attributes and how to use them, see our API reference at: Programming Reference – Web HMI

What is MQTT ?

MQTT-iconMQTT is a light weight protocol that implements a client/broker architecture. Originally developed as a machine to machine protocol by IBM and is now an open protocol.

Due to the Client/Server nature and its small footprint this protocol is well suited for small devices with limited power or network connectivity.

What is MQTT used for?

A common application is to use this protocol on hundreds or thousands of remote devices that may have battery or solar power and be utilizing cellular or other limited or expensive communications.

Because of the small packet size the overall bandwidth usage is low compared to other common protocols. Even with limited connectivity the Client/Broker architecture is an excellent choice.

The remote device connects to the broker when possible and publishes its topics. The broker then notifies any client that has subscribed to that topic. This eliminates the need to constantly poll the device for changes thus reducing the network usage.

Example:

Let’s use a simple example of a remote site where you want to know if someone entered a building in some cases you would have an application that polled the remote sensor to determine when a change in state occurs. Let’s say once a second.

So the device at the remote location has to have enough power to constantly respond to your requests every second and your network connection has to be able to provide you with unlimited data usage. But if you have a remote location that does not have power lines or a cable/DSL or other hardwired internet connection this way of getting data becomes very expensive.

This is one situation where MQTT shines. Now you have a low cost simple device that uses very little power. It could be powered by a battery. Using a satellite or cellular connection the device can update its status when the sensor changes state. The broker then notifies the client application of this state change.

Connecting to MQTT

MQTT-conceptThe MQTT Protocol is well supported by numerous devices. For example you can download MQTT Client apps for Windows, Android, Apple operating systems and be connected to MQTT data in a matter of minutes.

The Protocol is also supported in a number of programming languages and it is very easy to implement a MQTT Client application in just about any programming language.

Open Automation Software is an MQTT Client able to both subscribe and publish to MQTT Brokers. This makes it easy to take remote device data and View, Historize, Alarm, Trend and Notify via Web, .Net, Email, Voice and SMS.

It also makes it easy to take non MQTT data and share it with MQTT device and clients. For example take data that is coming from a PLC, Database, Excel Spread Sheet,.Net or Web User Interface or other non MQTT devices and publish that data to one or more MQTT Brokers.

To learn more about MQTT  & other integrated systems, contact your OAS Sales Representative toll free in the US on 1-800-533-4994 or for international enquiries call 1-303-679-0898.

What is REST?

What is REST?What is REST?

Many publicly accessible services expose a REST API which enables a wide range of applications from web user interfaces to back-end system integration and synchronization. So what exactly is REST and what makes an API RESTful?

REST – REpresentational State Transfer

Technically, REST stands for REpresentational State Transfer (so it’s not a perfect acronym), and essentially means that it’s an architecture intended to transfer a representation of server data or state between a client and server.

There are a few detailed criteria that are considered necessary for an API to be RESTful, but the most important are that the API be:

  • Stateless
    This means that there is no necessary session is held between a client and server. Data received from the server can be used by the client independently. This allows for short, discrete operations, and even offline caching of data. This makes REST a natural fit for HTTP operations in which requests are intended to be singular and short-lived.
  • Uniform
    REST APIs are meant to be self-describing, uniform in their definition, and each operation separated by a different endpoint or URL. In practical terms, most REST APIs implement classic CRUD (Create, Read, Update, Delete) operations against a data model. This uniformity allows developers to easily learn the usage pattern of each API.

So what does a REST API look like?

Because it’s meant to be representational, let’s start with the data model that it’s meant to represent. For example, if we have an online commerce application, we’d want to define the operations for managing products in our catalog, centered around the Product model.

Each of these operations would be linked to a combination of a URL and an HTTP verb. To review, there are many HTTP verbs, but most web development uses only the GET and POST verbs for requesting a URL or posting form data, respectively. But REST uses more HTTP verbs to signal to the server what type of operation the client is performing.

REST_API_1

The following is a simplified list of URLs combined with the HTTP verb that we’d use to expose the full API for managing a Product catalog:

REST_API_2

The operations and URLs above are just the basic operations on a single model. REST APIs can also support very specific operations or hierarchical operations.  For example, if you wanted to send a signal to the server to reorder a supply of products, you might expose a URL like this:

/products/{id}/reorder   POST  Signal to the server that you want to reorder quantities of a product {id}. The message body could be empty, or contain a data model used for detailed instructions on the reorder operation.

Or, if you wanted to dive into the product catalog and run a query to return a list of all orders for a given product, the API could expose an operation like this:

/products/{id}/orders    GET   Given an {id} for a product, return all orders.

Conversely, you could expose an order-centric endpoint that allows you to list all products in the order:

/orders/{id}/products    GET   Given an order {id} return all products in the order.

What does the server data look like?

While there’s no strict requirement for what type of data a REST API uses or returns, it has become a de facto standard for web-based REST APIs to use JSON as the data definition.

This is because JSON is a native format that all modern browsers can use to represent hierarchical objects. For more information on JSON, read our article What Is JSON?

To learn more about our products, contact your OAS Sales Representative toll free in the US on 1-800-533-4994 or for international enquiries call 1-303-679-0898.

Moving data from Rockwell Allen Bradley ControlLogix to Android & iOS apps & Azure IoT

A practical demonstration of the power of Open Automation Software products

Open Automation Software’s new PCL support for Visual Studio and Xamarin Studio IDEs was recently featured at Xamarin Evolve 2016. The session showcased a physical demo complete with Robotic Production Line, controlled by Allen Bradley Programmable Logic Controllers.

Unlocking industrial device data

During the session (video below) the presenters demonstrated the collaborative capabilities, and insights enabled by unlocking industrial device data, and putting the power of device data consumption, device command and control directly in the palm of your hands through Xamarin Apps and Open Automation Software

The session showed how field workers, operations, analysts, and leaders can all collaborate seamlessly, gain real-time operational insights and command capabilities using Xamarin, Azure, and Open Automation Software.

Learn more about Open Automation Software’s PCL support for Visual Studio and Xamarin Studio IDEs.

To learn more about our products, contact your OAS Sales Representative toll free in the US on 1-800-533-4994 or for international enquiries call 1-303-679-0898.