The Experiences about OpenADR-based architecture

Slide

Outline

  • About me

  • OpenADR標準與介紹

  • 接手開發一路辛酸心得

  • 研究原本的架構並加以改良的心路歷程

  • 開源的解決方案----OpenLEADR介紹

About me

  • Peter
  • GitHub
  • Active open source contributor
  • An associate engineer
    • DevOps
    • Back-end
    • System Architecture Researching
    • Web Application Security
    • PHP, Python and JavaScript
  • Smart Grid Technology (2017~2021)
  • Database, Data platform architecture (2021~)

OpenADR標準與介紹

Open Automated Demand Response

OpenADR

  • A Research Standard

  • Founded by North American research labs

  • 1.0a

  • 2.0b

OpenADR Scenario

OpenADR Roles

  • VTN, Virtual Top Node (server)

    • Aggregator

    • Utility

    • Power Station System Server

  • VEN, Virtual End Node (client)

    • Aggregator

    • Device

      • Smart Meter

      • Embedded Device

更多OpenADR 介紹

OpenADR 重要Specs

  • VEN Registration

  • VEN Poll & Event

  • VEN Pull & Event

  • VEN Report

  • VEN Opt

  • VEN device Identification

  • Application Error Codes

  • Communication Modes

  • Network Communication Protocol

  • Data Format

VEN Registration(Part 1)

VEN Registration(Part 1)

VEN Sends oadrQueryRegistration

VEN Receives oadrCreatedPartyRegistration

VEN Registration(Part 2)

VEN Sends oadrCreatePartyRegistration

VEN Receives oadrCreatedPartyRegistration

VEN Poll & Event

VEN Sends oadrPoll

VEN Receives oadrResponse

VEN Receives oadrDistributeEvent

VEN Receives oadrDistributeEvent

VEN Receives oadrDistributeEvent

VEN Receives oadrDistributeEvent

VEN Receives oadrDistributeEvent

VEN Report

VEN Sends oadrRegisterReport

VEN Receives oadrCreateReport

VEN Sends oadrCreatedReport

VEN Receives oadrResponse

VEN Sends oadrUpdateReport

VEN Receives oadrUpdatedReport

VEN Opt

VEN Sends oadrCreateOpt

VEN Receives oadrCreatedOpt

VEN device Identification Issue

VEN device Identification Issue

VEN device Identification Issue

VEN device Identification Issue

VEN device Identification(By their VEN name)

VEN device Identification(Use fixed VEN ID)

VEN device Identification(By certificate)

Application Error Codes

Application Error Codes

接手開發一路辛酸心得

故事是這樣的......

Development Team

PM

工程師A(VTN)

工程師B(VEN)

有一天......

工程師B要請長(ㄔㄢˇ)假

你要負責VEN專案

接手VEN專案

專案結構

C + PHP + Go

VEN傳輸→C

VEN API service→Go

ven-web Dockerfile?

VEN網頁→PHP

Compile C & Run

Then....

Segmentation fault

(core dumped)

Why?

configuration setting issue......

But she doesn't tell me......

Environment is not consistency...

ven-web Dockerfile?

COPY VEN-Comm-pull /root

Fix some C codes...

OpenADR standard implementation issue

C codes are not easy to fix...

Writing Dockerfile

Building Docker image

Make environment consistency

Compiling, Building and environment setup

VEN傳輸→openadr-ven

VEN API service→ven-rest

Architecture

Deploy 30 VENs on same machine

How?

Docker-based architecture

Run 30 times docker run commands?

Run 30 times configure

Nginx subdomain?

Run 30 times configure

subdomain DNS Record?

No, I'm lazy guy.

Using Bash script to save my life.

Deployment Steps

  1. Export related Docker images

  2. Import related Docker images

  3. Setup credential settings file

    • Creating VEN REST token lists

    • Creating Cloudflare API token setting file

  4. Configure Nginx subdomain

  5. Configure subdomain DNS record via Cloudflare API

Why not using

container orchestration?

K8s, K3s, MicroK8s.......

Reasons

Hating OpenADR standard development?

You should checkout OpenLEADR!

What's OpenLEADR?

OpenLEADR

應用情境

User Scenario in Foreign Country

User Scenario in Taiwan

References

Thanks!

MOPCON 2021

By peter279k

MOPCON 2021

The Experiences about OpenADR-based architecture

  • 895