Pratipadを用いて構築したIoTシステムの例 Room 1 Room 2 Local Area Network Edge Layer Device Layer Device Layer My House Wide Area Network Sensing: - CO2 concentration - air pressure - humidity Cloud Layer - visualize - analyze - send back actuation order External API - provide additional metadata (e.g. precipitation) Users - monitor situation - do some actions (e.g. open the window) mTLS connection - aggregate - transform - add more info ・・・ Running on Elixir LED blinks when the cloud system sends a notification to prompt uses to open the window. 出所: Kentaro Kuribayashi "Pratipad: A Declarative Framework for Describing Bidirectional Dataflow in IoT Systems with Elixir" https://speakerdeck.com/kentaro/pratipad-a-declarative-framework-for-describing-bidirectional-dataflow-in-iot-systems-with-elixir
Pratipadは双方向かつ多様なデータ取得方式に対応 Push、Pull、Demandの3つのデータ取得方式と双方向データフローを実現する。 Push Pull Demand 出所: Kentaro Kuribayashi "Pratipad: A Declarative Framework for Describing Bidirectional Dataflow in IoT Systems with Elixir" https://speakerdeck.com/kentaro/pratipad-a-declarative-framework-for-describing-bidirectional-dataflow-in-iot-systems-with-elixir
宣言的なデータフロー記述 Pratipadは右図のようなデータフローと 処理の記述方法を提供する。 ● データフロー自体を、一つのファ イル内に宣言的に記述できる ● データへの処理を、さまざまな形 で記述できる(逐次適用、並行適 用等) ● データに対する処理内容の記述は 、データフローとは別個に、Elixir モジュールとして記述する Push <~> P1 <~> P2 <~> P3 <~> Output defmodule P1 do alias Pratipad.Processor use Processor @impl GenServer def init(initial_state) do %{:ok, initial_state) end @impl Processor def process(message, state) do # do something with the message end end Dataflow Processor 出所: Kentaro Kuribayashi "Pratipad: A Declarative Framework for Describing Bidirectional Dataflow in IoT Systems with Elixir" https://speakerdeck.com/kentaro/pratipad-a-declarative-framework-for-describing-bidirectional-dataflow-in-iot-systems-with-elixir