# US 12,113,671 B2 · Behavior driven digital twin for Internet of Things devices

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,113,671 B2
- Document ID: US12113671B2
- Status: Granted
- Kind: B2
- Application number: 17/722,144
- Filed: 2022-04-15
- Published: 2023-03-02
- Granted: 2024-10-08
- Earliest claimed: 2021-04-16
- Assignees: Yonomi, Inc.
- Applicants: Yonomi, Inc.
- Inventors: Garett Madole; Brandon Valosek; Anand Surada
- Web page: https://patentgrep.com/patent/US12113671B2

## CPC

- H04L 41/082: the condition being updates or upgrades of network functionality
- H04L 67/12: specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
- G16Y 30/00: IoT infrastructure
- G16Y 40/35: Management of things, i.e. controlling in accordance with a policy or in order to achieve specified objectives
- G07C 2209/62: Comprising means for indicating the status of the lock
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G16Y: INFORMATION AND COMMUNICATION TECHNOLOGY SPECIALLY ADAPTED FOR THE INTERNET OF THINGS [IoT]
- G07C: TIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE

## Abstract

Systems, methods, and storage media for communicating with connected devices are disclosed. Exemplary implementations may: identify one or more traits for a connected device; receive an action request, wherein the action request corresponds to a first desired state of the connected device; receive a trait configuration for the one or more traits; calculate a second desired state for the connected device, wherein the second desired state is calculated based on one or more of the action request and trait configuration for the connected device; and at least one of transmit a first message to the connected device, including an indication of the first or the second desired state, or transmit a second message, including an indication of an estimated state, to the first computing device.

## Claims

### Claim 1

A method for communicating with connected devices, the method comprising:
identifying one or more traits for a connected device;
receiving, from a first computing device, an action request, wherein the action request corresponds to a first desired state of the connected device;
receiving, via an internet or cellular data connection, a trait configuration for the one or more traits corresponding to the connected device;
calculating, at a controller, a second desired state for the connected device, wherein the second desired state is calculated based on the action request and the trait configuration for the connected device, and the second desired state differs from the first desired state;
calculating an expected state for the connected device, the expected state based upon one or more of the action request, a behavior model, and the trait configuration for the connected device;
transmitting a first message to the connected device, the first message including an indication of the second desired state;
receiving, from the connected device, a reported state;
determining at least one error or issue for the connected device based on identifying a discrepancy between the reported state and the expected state; and
transmitting a second message to the first computing device, the second message including an indication of an estimated state of the connected device and an indication of the error or the issue.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
refraining from transmitting to the connected device information pertaining to the action request based on the estimated state of the connected device.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
receiving one or more state snapshots for the one or more traits for the connected device, wherein each of the one or more state snapshots comprises one or more state fields.

### Claim 4 (depends on 3)

The method of claim 3, further comprising:
receiving one or more of an updated trait configuration, and an updated state snapshot for at least one of the one or more state snapshots, for the connected device, based on transmitting the request to the connected device; and
calculating a third desired state for the connected device.

### Claim 5 (depends on 1)

The method of claim 1, wherein each of the one or more traits is associated with one or more of a capability, a functionality, and a behavior of the connected device.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
calculating an expected state, the expected state based upon one or more of the action request, a behavior model, and the trait configuration for the connected device;
determining an error or issue for the connected device based on one of:
receiving a reported state from the connected device, wherein the reported state is different from the expected state; and
identifying an absence of an error response, an updated state, or a reported state from the connected device; and
transmitting a third message to the connected device, the third message including an indication of a third desired state for the connected device, and wherein the third message is transmitted based upon determining the error or the issue for the connected device.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
receiving, from the connected device, a reported state; and
refraining from transmitting information pertaining to the action request to the connected device based at least in part on identifying that the first desired state is the same as or approximately the same as the reported state.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
validating the action request, wherein the validating comprises assessing the action request with respect to the trait configuration for the connected device;
generating an action intent from the action request, wherein generating the action intent is based at least in part on validating the action request; and
wherein calculating the second desired state is further based on the action intent and a reported state of the connected device.

### Claim 9

A method for communicating with connected devices, the method comprising:
identifying one or more traits for a connected device;
receiving, from a first computing device, an action request, wherein the action request corresponds to a first desired state of the connected device;
receiving, via an internet or cellular data connection, a trait configuration for the one or more traits corresponding to the connected device;
calculating, at a controller, a second desired state for the connected device, wherein the second desired state is calculated based on the action request and the trait configuration for the connected device, and the second desired state differs from the first desired state;
transmitting a first message to the connected device, the first message including an indication of the second desired state;
transmitting a second message to the first computing device, the second message including an indication of an estimated state of the connected device;
receiving a traits payload for the connected device, the traits payload comprising the trait configuration and a state snapshot;
parsing the traits payload, based at least in part on sourcing one or more data contracts, the one or more data contracts selected from a group consisting of configuration property definitions, state property definitions, and action definitions;
receiving additional trait data for the connected device, the additional trait data including information pertaining to one or more validation sources, trait constraints, and action validations; and
validating one or more of a pending state update and a pending property update for the connected device based on the parsed traits payload and the additional trait data.

### Claim 10

A system configured for communicating with connected devices, the system comprising:
one or more hardware processors configured by machine-readable instructions to:
identify one or more traits for a connected device;
receive, from a first computing device, an action request, wherein the action request corresponds to a first desired state of the connected device;
receive, via an internet or cellular data connection, a trait configuration for the one or more traits corresponding to the connected device;
calculate a second desired state for the connected device, wherein the second desired state is calculated based on the action request and the trait configuration for the connected device, and the second desired state differs from the first desired state;
calculate an expected state for the connected device, the expected state based upon one or more of the action request, a behavior model, and the trait configuration for the connected device;
transmit a first message to the connected device, the first message including an indication of the second desired state;
receive, from the connected device, a reported state;
determine at least one error or issue for the connected device based on identifying a discrepancy between the reported state and the expected state; and
transmit a second message to the first computing device, the second message including an indication of an estimated state of the connected device and an indication of the error or the issue.

### Claim 11 (depends on 10)

The system of claim 10, wherein the one or more hardware processors are further configured by the machine-readable instructions to:
refrain from transmitting to the connected device, information pertaining to the action request based on the estimated state of the connected device.

### Claim 12 (depends on 10)

The system of claim 10, wherein the one or more hardware processors are further configured by the machine-readable instructions to:
receive one or more state snapshots for the one or more traits for the connected device, wherein each of the one or more state snapshots comprises one or more state fields.

### Claim 13 (depends on 12)

The system of claim 12, wherein the one or more hardware processors are further configured by the machine-readable instructions to:
receive one or more of an updated trait configuration, and an updated state snapshot for at least one of the one or more state snapshots, for the connected device, based on transmitting the first message to the connected device; and
calculate a third desired state for the connected device.

### Claim 14 (depends on 10)

The system of claim 10, wherein each of the one or more traits is associated with one or more of a capability, a functionality, and a behavior of the connected device.

### Claim 15 (depends on 10)

The system of claim 10, wherein the one or more hardware processors are configured by the machine-readable instructions to:
calculate an expected state, the expected state based upon one or more of the action request, a behavior model, and the trait configuration for the connected device; determine an error or issue for the connected device based on one of:
receiving a reported state from the connected device, wherein the reported state is different from the expected state; and
identifying an absence of an error response, an updated state, or a reported state from the connected device; and
transmit a third message to the connected device, the third message including an indication of a third desired state for the connected device, and wherein the third message is transmitted based upon determining the error or the issue for the connected device.

### Claim 16

A non-transient computer-readable storage medium having instructions embodied thereon, the instructions being executable by one or more processors to perform a method for communicating with connected devices, the method comprising:
identifying one or more traits for a connected device;
receiving, from a first computing device, an action request, wherein the action request corresponds to a first desired state of the connected device;
receiving, via an internet or cellular data connection, a trait configuration for the one or more traits corresponding to the connected device;
calculating, at a controller, a second desired state for the connected device, wherein the second desired state is calculated based on the action request and the trait configuration for the connected device, and the second desired state differs from the first desired state;
calculating an expected state for the connected device, the expected state based upon one or more of the action request, a behavior model, and the trait configuration for the connected device;
transmitting a first message to the connected device, the first message including an indication of the second desired state;
receiving, from the connected device, a reported state;
determining at least one error or issue for the connected device based on identifying a discrepancy between the reported state and the expected state; and
transmitting a second message to the first computing device, the second message including an indication of an estimated state of the connected device and an indication of the error or the issue.

### Claim 17

A non-transient computer-readable storage medium having instructions embodied thereon, the instructions being executable by one or more processors to perform a method for communicating with connected devices, the method comprising:
identifying one or more traits for a connected device;
receiving, from a first computing device, an action request, wherein the action request corresponds to a first desired state of the connected device;
receiving, via an internet or cellular data connection, a trait configuration for the one or more traits corresponding to the connected device;
calculating, at a controller, a second desired state for the connected device, wherein the second desired state is calculated based on the action request and the trait configuration for the connected device, and the second desired state differs from the first desired state;
transmitting a first message to the connected device, the first message including an indication of the second desired state;
transmitting a second message to the first computing device, the second message including an indication of an estimated state of the connected device;
receiving a traits payload for the connected device, the traits payload comprising the trait configuration and a state snapshot;
parsing the traits payload, based at least in part on sourcing one or more data contracts, the one or more data contracts selected from a group consisting of configuration property definitions, state property definitions, and action definitions;
receiving additional trait data for the connected device, the additional trait data including information pertaining to one or more validation sources, trait constraints, and action validations; and
validating one or more of a pending state update and a pending property update for the connected device based on the parsed traits payload and the additional trait data.
