Meraki#005_Webhook x Raspberrypi

前回はMerakiのAPI使用について説明しました。今回はMerakiのWebhookを使用し、そのあとRaspberryを連携する方法を紹介します。よろしくお願いします。

Webhook?

WebhookはWeb CallbackやHttp push APIなど色々な名前もあり、それはServerがイベントが発生するとき送信側が情報を送信する仕組みになります。現在アプリケーションAとアプリケーションBの間にリアルタイムな情報提供が必要なとき、高い頻度でリクエストを送りデータの更新求めるよりWebbookを使用したほうが効率よい場合があります。

例えばGithubでよくあるResponsibilityをPushするたびに情報をSlackにお知らせするようなイメージです。

*MerakiのWebhookはPOSTリクエストです。

Reference Link

http://soup01.com/ja/category/cisco-ja/meraki/

Configure in Meraki Side

MerakiのDash BoardをLoginし>Network-wide>CONFIGURE>Alertsをクリックします。

Webhookの項目があり、これはWebhookを設定する画面です。

Test Server

次はTest Serverを用意します。

https://webhook.site/

Your Unique URLのLINKをCOPYします。

そしてMerakiのDashboardに戻り、Webhook>Add an HTTP serverのボタンをクリックします。

Name:Server名

URL:先CopyしたTest Server URL

そしてWebhook Testsの下にあるSend test webhookをクリックします。

状態はEnqueuedに変わります。

Test ServerにMerakiからの通知が来ましたね!

そのリクエストをクリックするとWebhookの中身がみえます。

状態もDevliveredに変わり、つまり無事に届いたってことです。

Setup Raspberry

こちらは今回の構成です。RaspberryからLocal Severを立ち上げ>Ngrokに公開します。

MerakiからWebhookのURLをNrgrokに公開したServerのURLに設定し、通知を貰えるようにします。


Ngrok Setup

下記のLINKを参考にしてください。

ngrok#Test your server in Public area

Meraki Side

URLでNgrok公開したServer URLを貼り付けます。

Local Server Code

以下のCodeで簡単なHttp Serverを立ち上げ、常にPostリクエストに200を返答し、WebhookからもらったデータをPrintするだけのプログラムです。

import http.server
import socketserver
import json

class MyHandler(http.server.BaseHTTPRequestHandler):
        def do_POST(self):
                self.send_response(200)
                self.end_headers()
                print(self.path)
                content_length = int(self.headers[‘Content-Length’])
                post_data = self.rfile.read(content_length)
                print(post_data)

        def do_GET(self):
                self.send_response(200,”GET is received.”)
                print(“GET is received”)
                self.end_headers()

with socketserver.TCPServer((“”, 8001), MyHandler) as httpd:
    httpd.serve_forever()

Result

実際Testしてみると、Merakiから情報が来たらTerminalがRequest内容を出力します。

NgrokでPOSTのリクエストがきたとわかります。

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする