ブログ一覧へ戻る

コードを書かずに MQTT 温度アラートをセットアップ

2026-05-23 · Tablize チーム

冷凍庫、冷蔵室、温室、温度センサー付きのサーバークローゼットを持っているなら、この記事はコールドチェーン監視 SaaS への年額 $2,400 のサブスクリプションを節約します。

MQTT ブローカーを Tablize にサブスクライブし、エージェントにセンサートピックを識別させ、温度閾値のウォッチをセットアップし、アラートを Slack にルーティングします。合計時間:約 10 分。Python なし、Node-RED なし、Grafana セットアップなし。

必要なもの

  • センサーがパブリッシュしている MQTT ブローカー。 Mosquitto、HiveMQ、EMQX — いずれでも。まだなければ、EMQX に 2 分で立ち上がる無料クラウドブローカーがあります。
  • 温度データをパブリッシュしている少なくとも 1 つのセンサー(JSON または単純数値)。ほとんどのコンシューマグレード ESP32 ベースセンサーはこれを箱出しで行います。
  • Pro プラン以上の Tablize ワークスペース(月額 $60)。MQTT は Pro 機能 — 常時オンの計算ポッドが必要なため、センサーデータが到着したときエージェントが起きている必要があります。
  • 配信用の Slack ワークスペース。(メールも機能 — 最後に触れます。)

ステップ 1:Tablize を MQTT ブローカーに接続

Tablize サイドバーで Spaces(IoT セクション)をクリック。Tablize で IoT を使ったことがなければ、これがエントリーポイント。

Add MQTT broker をクリック。必要なもの:

  • ブローカーホスト(例:broker.hivemq.com や EMQX クラウド URL)
  • ポート(プレーン MQTT は 1883、TLS は 8883 — TLS を使用)
  • ユーザー名 + パスワード(ブローカーが認証を要求する場合)
  • サブスクリプショントピック(# で開始してすべて受信、または sensors/+/temperature などにスコープ)

「Test connection」を押す。Tablize がサブスクライブし、メッセージを待ち、受信した最初の 10 件を表示。センサーデータが流れ込むのが見えれば、接続完了。

これは Tablize にどのセンサーがどれかのヒントを与える瞬間でもあります。センサーが sensors/freezer-east/temperaturesensors/walkin-cooler-1/temperature のようなトピックにパブリッシュしていれば、エージェントは「freezer-east」と「walkin-cooler-1」が 2 つの別個のデバイスだと推論します。トピックが不透明(devices/0a3f1b2c/temp)なら、出現後に Spaces UI で名前変更したくなるでしょう — 各々に人間が読める名前を与える。

ステップ 2:エージェントにデータを学習させる

新しいチャットを開く。入力:

"現在ワークスペースに流れ込んでいる MQTT データは何ですか?
 各トピック、それがパブリッシュする頻度、数値フィールドの典型的な値範囲を
 見せてください。"

エージェントが過去 24 時間の MQTT データ(Tablize が自動的に TimescaleDB に保存するもの — パイプラインをセットアップする必要なし)をクエリし、表を返します:

  • トピック名
  • 分あたりメッセージ数
  • JSON ペイロードから抽出されたフィールド名
  • 各数値フィールドの最小 / 最大 / 中央値

これがセンサー在庫。問題も浮上 — センサーが 1 回パブリッシュして停止していたら、「過去 24h で 1 メッセージ」としてここに表示され、確認しに行くべきだとわかります。

ステップ 3:ウォッチをセットアップ

月額 $200 SaaS を置き換える部分。入力:

"すべての freezer センサー(トピック名に 'freezer' を含むもの)を監視。
 午後 10 時から午前 6 時の間に温度読み取りが -15°C を 5 分連続で超えたら、
 センサー名、現在温度、閾値超過時間、Tablize でライブデータを表示する
 リンク付きで Slack DM を送ってください。"

エージェントは:

  1. ルールを基礎ウォッチプリミティブに解析 — フィルター(topic LIKE ‘%freezer%’)、トリガー(temperature > -15)、期間(5 分)、スケジュール(午後 10 時 - 午前 6 時)、アクション(Slack DM)。
  2. 使う Slack ワークスペース + チャンネル / DM を尋ねる。Slack を接続していなければ、OAuth をガイドします。
  3. 確認のためルールを自然な言葉で表示。
  4. ウォッチを有効化。

ウォッチは今からウォッチサイドバーに存在します。編集、停止、複製できます。エージェントは見えないコードを書いていません — すべてのウォッチはトリガー、条件、アクションがすべて見えて編集可能な構造化オブジェクトです。

ステップ 4:動作を検証

これがほとんどのコールドチェーンロールアウトがスキップして後悔するステップ。Tablize はそれを簡単にします:

"freezer-east が午後 11 時から 11:30 まで -15°C を超える 30 分窓を
 シミュレーション。私のウォッチがどんな通知を送ったかを教えてください。"

エージェントが履歴データに対してドライランシミュレーションを実行し、ルールを適用し、どの Slack メッセージが発火したかを正確に表示。ウォッチが間違っている(間違った時間窓、間違ったセンサーパターン、閾値が逆)なら、今見えます。

一時的に閾値を下げる(例:-100°C — それ以上のすべてが即座に発火)ことで実トリガーを強制し、Slack DM の到着を確認してから実閾値に戻す方法もあります。30 秒で完了。

コスト比較

典型的なコールドチェーン SaaS と比較:

Tablize Proコールドチェーン SaaS Aコールドチェーン SaaS B
月額コスト$60(Tablize の全機能込み)ロケーションあたり $200ロケーションあたり $150、アラート別課金
カバーするセンサー数ワークスペースあたり無制限プラン層あたり通常 10〜50プラン層あたり通常 5〜20
他のユースケース込みTablize の全機能なしなし
ベンダーセンサーへのロックインなししばしばありしばしばあり

専用 SaaS が存在する理由は、一部の 顧客(病院、FDA 規制食品保管、ワクチンコールドチェーン)が認定ハードウェア、監査証跡コンプライアンス、24/7 SLA サポートを必要とするから。それらには月額 $200 を支払うべき。それ以外のすべて — 冷凍庫 3 台のレストラン、温室のある農場、去年壊れたワインフリッジのあるアパート — には Tablize が正しい形。

ウォッチを拡張

基本ウォッチが動作したら、自然な次の動き:

マルチチャネルアラートを追加。 「午後 11 時から午前 5 時の間にアラートが発火し、10 分以内に承認されなかったら SMS でも通知して。」 Tablize はメール、Slack、ウェブフックを箱出しでサポート;SMS は Twilio ウェブフック経由。

集約イベントレポート。 「毎週日曜朝、過去 1 週間のすべての freezer イベントのダイジェストを送って — センサー名、時刻、ピーク温度、閾値超過期間。」 これはウォッチのイベント履歴の上の別レポート。

ダッシュボードを生成。 「すべての freezer のライブ温度、センサーごとの 24 時間ライングラフ、最後の 10 アラートのリストを表示するダッシュボードを構築。」 これは生成アプリ、キッチンマネージャーが電話から見る必要があれば公開リンクで共有可能。

派生条件を監視。 「営業時間中にセンサーが 15 分以上パブリッシュを停止したら通知して」 — 温度ドリフトだけでなくセンサー障害を捕捉。しばしば温度アラートより有用。

Slack の代わりにメールはどうか?

同じフロー、アクションをスワップ:「Slack の代わりにメールを送って。」 エージェントがウォッチアクションをメールに再接続(デフォルトではアカウントの確認済みアドレスを使用)。

ウェブフックにルーティングもできる — PagerDuty、Opsgenie、カスタム通知スタックにパイプする一般的なパターン。

よくある落とし穴

TLS vs プレーン MQTT。 本番では TLS(ポート 8883)を使用。プレーン MQTT(ポート 1883)は認証情報を平文で送ります。Tablize は両方サポートしますがデフォルトは TLS。

トピックワイルドカード。 MQTT は +(単一レベル)と #(複数レベル)を使用。sensors/+/temperaturesensors/freezer-1/temperature にマッチしますが sensors/freezer-1/room-a/temperature にはマッチしません。後者には sensors/# を使用。

重複メッセージ。 一部の QoS-0 パブリッシャーは不安定なネットワークで再試行し、重複イベントを引き起こす可能性。Tablize はデフォルトで同じ (topic, timestamp, payload) トリプルで重複排除 — センサーが積極的な再試行動作を持ち Tablize が正しく重複排除していなければ、ペイロードに一意の event_id を追加。

センサーオフライン。 センサーがオフラインになると、温度ウォッチは決して発火しません(閾値を超える読み取りがないから)。常に温度ウォッチを「センサーがパブリッシュを停止」ウォッチとペアに — それが死んだセンサーを捕捉。

次は何か

これが Tablize での最初の IoT 連携なら、自然な拡張:2 つ目のセンサータイプ(湿度、ドア開イベント、消費電力)を接続、すべての物理資産を表示する Spaces マップ UI を生成、センサーイベントの上にメンテナンスチケットアプリを構築。すべて 1 文プロンプト離れています。

MQTT ブローカーで Tablize Pro を試す →


関連記事: