CData JDBC Driver for HubDB で Ignition SCADA と連携

Somya Sharma
Somya Sharma
Technical Marketing Engineer
CData JDBC Driver を使って、Ignition SCADA からリアルタイムの HubDB データに接続。ETL やレプリケーションは不要です。

Ignition は、Inductive Automation 社が提供する産業用の SCADA(監視制御およびデータ収集)および IIoT(産業用モノのインターネット)プラットフォームです。中核となる Gateway サービスが、デバイス接続やタグ、データベース接続を一元的に管理します。ただし、Ignition には HubDB 用のコネクタが標準で用意されていません。そのため、HubDB のデータを扱うには、独自のミドルウェアを用意するか、手作業でデータをエクスポートするのが一般的です。

CData JDBC Driver for HubDB を使えば、この課題を解消できます。このドライバーは、HubDB を標準的な JDBC(Java Database Connectivity)データソースとして利用できるようにするものです。Ignition はどの JDBC ドライバーも標準のデータベース接続として扱えるため、Gateway にドライバーを登録するだけで、Script Console や SQL Bridge、タグ、Perspective / Vision の画面からリアルタイムの HubDB データをクエリできます。レプリケーションや独自コネクタ、ETL(抽出・変換・ロード)パイプラインは必要ありません。

この記事では、Ignition のインストールとコミッショニングから、CData JDBC Driver for HubDB の登録、接続の作成、リアルタイムクエリによる動作確認までの流れを順を追って紹介します。

前提条件

  • Windows 版 Ignition(Windows 10/11 または Windows Server)と、Windows サービスをインストールするための管理者権限
  • CData JDBC Driver for HubDB
  • 有効な認証情報を持ち、API アクセスが有効化された HubDB アカウント
  • Gateway の Web インターフェースを開くための対応デスクトップブラウザ(Google Chrome、Mozilla Firefox、Microsoft Edge、Safari のいずれか)

ステップ 1:Ignition のインストールとセットアップ

Ignition をすでにインストールして稼働させている場合は、ステップ 2 に進んでください。

Ignition のダウンロード

  1. Inductive Automation のダウンロードページにアクセスし、Windows 版の Ignition をダウンロードします。 Ignition のダウンロード
  2. このファイルひとつで Ignition Gateway のフルインストーラーになっています。Gateway サービスと Designer Launcher の両方が含まれているので、Designer を別途ダウンロードする必要はありません。

Ignition のインストール

  1. インストーラーを実行し、ライセンス契約に同意してインストール先を選択します。
  2. Windows の起動時に Gateway も自動で起動するよう、Install as a Windows Service にはチェックを入れたままにしておきます。
  3. インストールを完了すると Gateway サービスが起動し、ブラウザで http://localhost:8088 が開いてコミッショニングウィザードが表示されます。Browser Not Supported と表示された場合は、Chrome、Firefox、Edge、Safari のいずれかで同じアドレスを開いてください。

Gateway のコミッショニング

  1. Commission Ignition Gateway ウィザードで Gateway Name を設定し、管理者のユーザー名とパスワードを作成します。
  2. エンドユーザー使用許諾契約に同意し、トライアルを開始するか、購入済みの Ignition ライセンスをアクティベートします。
  3. コミッショニングが完了したら、管理者アカウントでログインします。Gateway の Home ページが表示されます。 ログイン後の Gateway Home ページ

注意: トライアル版では Gateway の各ページにカウントダウンタイマーが表示され、Gateway サービスを再起動するとタイマーがリセットされます。テスト用途であれば問題ありませんが、本番環境で利用する場合はライセンスが必要です。

ステップ 2:Ignition への CData JDBC Driver の登録

Ignition では、サードパーティ製の JDBC ドライバーを Gateway の Web インターフェースからアップロードできます。ファイルシステムを直接操作する必要はありません。

  1. 管理者として Gateway にログインします。
  2. Connections > Databases > Settings に移動して Drivers タブを開き、Create JDBC Driver をクリックします。
  3. ダイアログで次の内容を入力します。
    • Name: HubDB
    • Classname: cdata.jdbc.hubdb.HubDBDriver
    • Driver Type: Generic
    • Default Validation Query: SELECT PartitionKey FROM NorthwindProducts LIMIT 1
    JDBC ドライバーの作成(画面は Salesforce の例)
  4. Create JDBC Driver をクリックします。現行の Ignition 8.3 では作成ダイアログに JAR(Java アーカイブ)ファイルのアップロード欄がないため、JAR ファイルは次の手順で追加します。
  5. 作成したドライバーの行の右端にあるメニューを開いて Manage JAR files を選択し、ドライバーのインストールディレクトリ内の lib フォルダにある cdata.jdbc.hubdb.jar をアップロードして保存します。
  6. ドライバー一覧で、ドライバーのステータスが INSTALLED になっていることを確認します。 ステータスが INSTALLED のドライバー(画面は Salesforce の例)

ステップ 3:HubDB への接続の作成

  1. Connections > Databases > Connections に移動し、Create Database Connection をクリックします。
  2. Driver Selection ステップで HubDB を選択し、Next をクリックします。 ドライバーの選択(画面は Salesforce の例)
  3. Database Setup ステップで、Name に HubDB を設定します。認証情報は接続 URL に含めるため、Username は空欄のままにし、Password は None を選択します。
  4. Connect URL に接続文字列を入力します。
    jdbc:hubdb:AuthScheme=OAuth;OAuthClientID=MyOAuthClientID;OAuthClientSecret=MyOAuthClientSecret;CallbackURL=http://localhost:33333;
    接続情報の入力(画面は Salesforce の例)
  5. Create Database Connection をクリックし、Database Connections ページで接続のステータスが VALID になっていることを確認します。 ステータスが VALID の接続(画面は Salesforce の例)

HubDB の接続プロパティ

HubDBデータソースへの接続には、パブリックHubSpotアプリケーションを使用したOAuth認証とプライベートアプリケーショントークンを使用した認証の2つの方法があります。

カスタムOAuthアプリを使用する

すべてのOAuthフローでAuthSchemeを"OAuth"に設定する必要があります。特定の認証ニーズ(デスクトップアプリケーション、Webアプリケーション、ヘッドレスマシン)に必要な接続プロパティについては、ヘルプドキュメントを確認してください。

アプリケーションを登録し、OAuthクライアント認証情報を取得するには、以下の手順を実行してください。

  1. HubSpotアプリ開発者アカウントにログインします。
    • アプリ開発者アカウントである必要があります。標準のHubSpotアカウントではパブリックアプリを作成できません。
  2. 開発者アカウントのホームページで、アプリタブをクリックします。
  3. アプリを作成をクリックします。
  4. アプリ情報タブで、ユーザーが接続する際に表示される値を入力し、必要に応じて変更します。これらの値には、パブリックアプリケーション名、アプリケーションロゴ、アプリケーションの説明が含まれます。
  5. 認証タブで、「リダイレクトURL」ボックスにコールバックURLを入力します。
    • デスクトップアプリケーションを作成する場合は、http://localhost:33333のようなローカルにアクセス可能なURLに設定します。
    • Webアプリケーションを作成する場合は、ユーザーがアプリケーションを承認した際にリダイレクトされる信頼できるURLに設定します。
  6. アプリを作成をクリックします。HubSpotがアプリケーションとそれに関連する認証情報を生成します。
  7. 認証タブで、クライアントIDとクライアントシークレットを確認します。これらは後でドライバーを設定する際に使用します。
  8. スコープの下で、アプリケーションの意図する機能に必要なスコープを選択します。

    テーブルにアクセスするには、最低限以下のスコープが必要です:

    • hubdb
    • oauth
    • crm.objects.owners.read
  9. 変更を保存をクリックします。
  10. 統合に必要な機能にアクセスできる本番ポータルにアプリケーションをインストールします。
    • 「インストールURL(OAuth)」の下で、完全なURLをコピーをクリックして、アプリケーションのインストールURLをコピーします。
    • コピーしたリンクをブラウザで開きます。アプリケーションをインストールする標準アカウントを選択します。
    • アプリを接続をクリックします。結果のタブは閉じて構いません。

プライベートアプリを使用する

HubSpotプライベートアプリケーショントークンを使用して接続するには、AuthSchemeプロパティを"PrivateApp"に設定します。

以下の手順に従ってプライベートアプリケーショントークンを生成できます:

  1. HubDBアカウントで、メインナビゲーションバーの設定アイコン(歯車)をクリックします。
  2. 左サイドバーメニューで、統合 > プライベートアプリに移動します。
  3. プライベートアプリを作成をクリックします。
  4. 基本情報タブで、アプリケーションの詳細(名前、ロゴ、説明)を設定します。
  5. スコープタブで、プライベートアプリケーションがアクセスできるようにしたい各スコープに対して読み取りまたは書き込みを選択します。
  6. テーブルにアクセスするには、最低限hubdbとcrm.objects.owners.readが必要です。
  7. アプリケーションの設定が完了したら、右上のアプリを作成をクリックします。
  8. アプリケーションのアクセストークンに関する情報を確認し、作成を続行をクリックし、その後トークンを表示をクリックします。
  9. コピーをクリックして、プライベートアプリケーショントークンをコピーします。

接続するには、PrivateAppTokenを取得したプライベートアプリケーショントークンに設定します。

注意: パスワードやトークンにセミコロンが含まれていると接続 URL が正しく解釈されません。その場合は、セミコロンを含まない値に再設定してください。

ステップ 4:Ignition からリアルタイムの HubDB データをクエリ

接続が有効になったら、Designer からリアルタイムの HubDB データをクエリしてみましょう。

  1. Ignition Designer Launcher を開き、使用する Gateway を選択して Open Designer をクリックします(一覧に Gateway が表示されていない場合は、Add Designer をクリックして http://localhost:8088 を入力します)。Gateway の管理者アカウントでログインしてください。 Designer Launcher から Designer へのログイン
  2. プロジェクトを開くか、新規に作成します。Designer が開き、Project Browser、Tag Browser、Component Palette の各パネルが表示されます。 Ignition Designer のメインウィンドウ
  3. Designer で Tools > Script Console に移動します。Multiline Buffer にテストクエリを入力し、Execute をクリックします。NorthwindProducts の部分は、HubDB 接続で利用可能な任意のテーブルに置き換えてください。
    print system.db.runQuery(
        "SELECT PartitionKey, Name FROM NorthwindProducts LIMIT 10",
        "HubDB")
    Script Console でのテストクエリの実行(画面は Salesforce の例)
  4. クエリが成功すると、Interactive Interpreter パネルに PyDataset rows:10 cols:2 と出力されます。これで、Ignition が CData JDBC Driver を介して HubDB からリアルタイムデータを取得できたことを確認できます。

注意: スクリプト内の接続名は、ステップ 3 で設定した接続名と一致させる必要があります。

ステップ 5:結果の検証

  1. 取得した行を出力し、HubDB 上の同じレコードと値を照合します。
    ds = system.db.runQuery("SELECT PartitionKey, Name FROM NorthwindProducts LIMIT 10", "HubDB")
    for row in ds:
        print row["PartitionKey"], row["Name"]
  2. 必要に応じて、別のテーブルへのクエリやフィルタ付きのクエリも実行し、スキーマの検出とフィルタリングが正しく機能することを確認します。
  3. 必要に応じて Gateway サービスを再起動し、接続のステータスが VALID に戻ることを確認します。

トラブルシューティング

症状 考えられる原因と対処法
ドライバーのステータスが ERROR になるクラス名が間違っているか、Manage JAR files から JAR ファイルがアップロードされていません。
接続のステータスが FAULTED になる認証情報が間違っている、外部への Web 通信(HTTPS)がブロックされている、または CData のライセンスが見つからないことが考えられます。ステータスをクリックしてエラー内容を確認してください。
「Could not find a valid license」エラーが表示されるGateway は Windows サービスとして実行されているため、ユーザープロファイルに保存されたライセンスを読み取れません。管理者権限のコマンドプロンプトでドライバーの lib フォルダに移動して java -jar cdata.jdbc.hubdb.jar --license を実行し、生成された .lic ファイルを C:\Windows\system32\config\systemprofile\.CData\ にコピーしてから、Gateway サービスを再起動してください。
データベース接続が見つからないスクリプト内の接続名が、Gateway の接続名と完全には一致していません。

Ignition 以外の環境でのドライバーのテスト

Gateway とは切り離してドライバー単体の動作を確認したい場合は、次のスタンドアロンの Java サンプルを実行してみてください。cdata.jdbc.hubdb.jar と cdata.jdbc.hubdb.lic は同じディレクトリに配置し、クラスパスに含めておく必要があります。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class CDataExample {
    public static void main(String[] args) throws Exception {
        Class.forName("cdata.jdbc.hubdb.HubDBDriver");
        String connectionString = "jdbc:hubdb:AuthScheme=OAuth;OAuthClientID=MyOAuthClientID;OAuthClientSecret=MyOAuthClientSecret;CallbackURL=http://localhost:33333;";
        try (Connection conn = DriverManager.getConnection(connectionString)) {
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT PartitionKey, Name FROM NorthwindProducts LIMIT 10");
            while (rs.next()) {
                System.out.println(rs.getString("PartitionKey") + ", " + rs.getString("Name"));
            }
        }
    }
}

CData で Ignition にリアルタイムかつガバナンスの効いた HubDB 連携を

CData JDBC Driver for HubDB を登録すれば、ETL 基盤や手作業でのエクスポート、独自の連携コードを用意することなく、Ignition からリアルタイムの HubDB データをクエリできます。同じ接続をタグや SQL Bridge、Perspective / Vision の画面でも再利用できます。

無料トライアルで、CData を使って Ignition から数百もの外部システムへリアルタイムかつセキュアにアクセスできることを、ぜひお確かめください。

はじめる準備はできましたか?

HubDB Driver の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

HubDB Icon HubDB JDBC Driver

HubDB データと連携するパワフルなJava アプリケーションを短時間・低コストで作成して配布できます。