Making petrol stations talk Challenges when implementing an end to - - PowerPoint PPT Presentation

making petrol stations talk
SMART_READER_LITE
LIVE PREVIEW

Making petrol stations talk Challenges when implementing an end to - - PowerPoint PPT Presentation

Making petrol stations talk Challenges when implementing an end to end IoT solution About DiUS Technology services company End to end solutions (including hardware) AWS Innovation Partner of the Year dius.com.au


slide-1
SLIDE 1

Making petrol stations “talk”

Challenges when implementing an end to end IoT solution

slide-2
SLIDE 2

About DiUS

▪ Technology services company ▪ End to end solutions (including hardware) ▪ AWS Innovation Partner of the Year ▪ dius.com.au

slide-3
SLIDE 3

Petrol stations

slide-4
SLIDE 4

Petrol station

slide-5
SLIDE 5

Tank connections

Image from http://www.interspecllc.net/Content/Images/UST_Diagram.jpg

slide-6
SLIDE 6

Petrol station current loop

FCC PCM Pump Pump Pump Pump Pump POS

slide-7
SLIDE 7

ATG - Automatic Tank Gauge

▪ Connects to tanks ▪ Collects relevant tank information ▪ Limited storage

slide-8
SLIDE 8

ATG - Automatic Tank Gauge

▪ Connects to tanks ▪ Collects relevant tank information ▪ Limited storage ▪ Introvert

slide-9
SLIDE 9

Data retrieval

Image from http://www.interspecllc.net/Content/Images/UST_Diagram.jpg

slide-10
SLIDE 10

The problem

▪ Old hardware and protocols ▪ Reactive system ▪ Slow response times

slide-11
SLIDE 11

What if we can predict problems before they occur?

The problem

slide-12
SLIDE 12

How can I monitor the pumps on the forecourt as well?

The problem

slide-13
SLIDE 13

DiUS embedded team

Joo Bernie Johny

slide-14
SLIDE 14

Power sensor

slide-15
SLIDE 15

PCM - Pump Communication Module

slide-16
SLIDE 16

Petrol station current loop

FCC PCM Pump Pump Pump Pump Pump POS

slide-17
SLIDE 17
  • 1. Fuel dispensed events
  • 2. Pump online / offline
  • 3. Fuel not dispensed events
  • 4. “Current loop” status

PCM - Pump Communication Module

slide-18
SLIDE 18

SDA - Station Data Aggregator

slide-19
SLIDE 19
  • 1. System information events
  • 2. System configuration

management

  • 3. Priceboard configuration
  • 4. Data aggregation and

transformation

SDA - Station Data Aggregator

slide-20
SLIDE 20

Fuelscan

slide-21
SLIDE 21

AWS IoT

slide-22
SLIDE 22

Fuelsuite

slide-23
SLIDE 23

Fuelscan + Fuelsuite

▪ Proactive system ▪ Predictive analytics ▪ Identify unknown unknowns

slide-24
SLIDE 24

Challenges

▪ Monitor and manage remote devices at a large scale nationally? ▪ Visualise the data captured? ▪ Manage all this data coming down?

slide-25
SLIDE 25

Device configuration

slide-26
SLIDE 26

Device shadow

What is it?

A JSON document that is used to store and retrieve current state information for a device.

  • AWS IoT Developer Guide
  • http://docs.aws.amazon.com/iot/latest/developerguide/iot-thing-shadows.html
slide-27
SLIDE 27

Device shadow

{ "state": { "desired": { "online": true }, "reported": { "online": false } } }

slide-28
SLIDE 28

Device shadow

{ "state": { "desired": { "online": true }, "reported": { "online": false } } }

Fuelsuite Fuelscan

slide-29
SLIDE 29

Priceboard shadow JSON

{ "state": { "reported": { "priceboard": { "display": { "1": "Unleaded", "3": "Diesel" } } } } }

slide-30
SLIDE 30

Priceboard shadow JSON

{ "state": { "desired": { "priceboard": { "display": { "1": "Diesel" } } }, "reported": { "priceboard": { "display": { "1": "Unleaded", "3": "Diesel" } } } } }

slide-31
SLIDE 31

Priceboard shadow JSON

{ "state": { "desired": { "priceboard": { "display": { "1": "Diesel" } } }, "reported": { "priceboard": { "display": { "1": "Unleaded", "3": "Diesel" } } } } } { "state": { "reported": { "priceboard": { "display": { "1": "Diesel", "3": "Diesel" } } } } }

slide-32
SLIDE 32

Priceboard shadow JSON

{ "state": { "desired": { "priceboard": { "display": { "1": "Diesel", "3": null } } }, "reported": { "priceboard": { "display": { "1": "Unleaded", "3": "Diesel" } } } } } { "state": { "reported": { "priceboard": { "display": { "1": "Diesel", "3": "Diesel" } } } } }

slide-33
SLIDE 33

Device shadow

▪ Caveat ▪ a request for deletion of a property in the desired section does not get passed through to the device for deletion ▪AWS Docs ▪ To delete a key, send a null value ▪ { … “key”: null, … }

slide-34
SLIDE 34

Priceboard shadow JSON

{ "state": { "desired": { "priceboard": { "display": { "1": "Diesel", "3": [] } } }, "reported": { "priceboard": { "display": { "1": "Unleaded", "3": "Diesel" } } } } }

slide-35
SLIDE 35

Priceboard shadow JSON

{ "state": { "desired": { "priceboard": { "display": { "1": "Diesel", "3": [] } } }, "reported": { "priceboard": { "display": { "1": "Unleaded", "3": "Diesel" } } } } } { "state": { "reported": { "priceboard": { "display": { "1": "Diesel" } } } } }

slide-36
SLIDE 36

Device shadow

Be explicit.

slide-37
SLIDE 37

Message consumption

slide-38
SLIDE 38

Message consumption

Many types of messages ▪ Alarms ▪ Inventory ▪ Leak tests ▪ Tank tests ▪ Deliveries ▪ Tank configuration ▪ Sensor configuration ▪ Pricing

slide-39
SLIDE 39

Message consumption

What is the problem? ▪We need to configure a petrol station by consuming messages ensuring historical data was captured

slide-40
SLIDE 40

Tank configuration message

{ ... "LabelList": [ { "Tank": 1, "Label": "DIESEL " }, { "Tank": 2, "Label": " " } ], ... }

slide-41
SLIDE 41

Tank activation message

{ ... "ConfigList": [ { "Tank": 1, "Flag": 1 }, { "Tank": 2, "Flag": 0 } ], ... }

slide-42
SLIDE 42

Alarm event message

{ ... "AlarmEvent": { "Tank": 1, "Category": 2, "Type": 5, "SensorCategory": 2, "State": 2, "EventTime": "1706020638" }, ... }

slide-43
SLIDE 43

Message consumption

AWS IoT AWS Kinesis Fuelsuite API

slide-44
SLIDE 44

Message consumption

AWS IoT AWS Kinesis Fuelsuite API

slide-45
SLIDE 45

Message consumption

Classes of messages ▪ Configuration ▪ Configuration flags ▪ Live ▪ Monitor ▪ History

slide-46
SLIDE 46

Message consumption

slide-47
SLIDE 47

Scalability

▪ Horizontal scaling ▪ Add more boxes ▪ Vertical scaling ▪ Add more resources to a box

slide-48
SLIDE 48

Scalability

slide-49
SLIDE 49

Data management

slide-50
SLIDE 50

Classes of messages

▪ Configuration ▪ Configuration flags ▪ Live ▪ Monitor ▪ History

slide-51
SLIDE 51

Alarm event message

{ ... "AlarmEvent": { "Tank": 1, "Category": 2, "Type": 5, "SensorCategory": 2, "State": 2, "EventTime": "1706020638" }, ... }

Frequency ▪ every time there’s a change ▪ checked every 30 seconds

slide-52
SLIDE 52

Inventory levels message

{ ... "InventoryList": [ { "Tank": 1, "Type": "2", "Status": 0, "Volume": 34943.12, "TCVolume": 34856.07, "Ullage": 17306.9, "Height": 1495.77, "Water": 0, "Temperature": 16.95, "WaterVolume": 0 }, ... ], ... }

Frequency ▪every 30 seconds

slide-53
SLIDE 53

Windows of interest

Immediate Monitor Report

1 ~ 5 min 1 ~ 90 days 90+ days

slide-54
SLIDE 54

Windows of interest

▪ Identify time/date range ▪ Identify frequency of access of data ▪ Storage requirements for each window Immediate Monitor Report

slide-55
SLIDE 55

Closing thoughts

slide-56
SLIDE 56

Lesson learned

▪ Real time does not mean “streaming” ▪ Ensure UX understands the domain ▪ Keep it lean

slide-57
SLIDE 57

Thank you!

@tarciosaraiva @dius_au