 
      Axxon Nextソフトウェアは、セキュリティシステムとビデオ監視用ソフトウェアの開発者であるロシアのITV社の製品です。
Axxon Nextは、6,000を超えるIPデバイスをサポートする直感的なユーザーインターフェイスを備えた高性能ビデオ監視システムであり、あらゆる複雑なスケーラブルなビデオ監視システムを簡単に構築できます。 システムのすべての機能は、カメラが1台しかない場合でもライセンスに含まれることに注意してください。
Immixソフトウェアは、アメリカの会社SureView Systemsの製品であり、ビデオ監視システム、アクセス制御、自動化プラットフォーム、および状況情報システムから不快なイベントを受信するように設計されたビデオ指向のソフトウェアプラットフォームです。
開発の結果、SureViewソフトウェアのプラグインとなり、SureViewソフトウェアのAxxon Nextソフトウェアの次の機能を使用できるようになりました。
- Axxon NextのSureViewソフトウェアのライブビデオを表示します。
- Axxon Nextソフトウェアの下に保存されたビデオのアーカイブのSureViewソフトウェアでの再生と再生の制御。
- プリセットの使用を含む、Axxon Nextソフトウェアに接続されたPTZデバイスを使用したSureViewソフトウェアの管理。
- Axxon Nextソフトウェアからのアラームメッセージに関するSureViewソフトウェアでのイベントの受信。
SureviewSystems

SureViewソフトウェアのプラグインを実装するために、SureviewSystemsは、開発中のプラグインをテストするためのドキュメントとアプリケーションを備えたAPIを提供します。
APIは、統合デバイスのさまざまな機能を記述する多数の異なるインターフェイスです。
例。
1)SureViewソフトウェアを統合デバイスに接続するには、次のインターフェースを実装する必要があります。
public interface IDeviceConnectDisconnect : IDevice { void DeviceConnect(); void DeviceDisconnect(); }
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     2)SureViewソフトウェアが統合デバイスからライブビデオストリームを再生するには、そのようなインターフェイスを実装する必要があります。
 public interface ICamera : IDevice { void CameraStartLive(); void CameraStop(); }
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
      
      開発をスピードアップするために、StreamCam基本クラスはSDKとともに提供されます。SDKは必要なインターフェイスの一部を既に実装しており、再生中のビデオストリームへのリンクを指定するだけでRTSPストリームを再生できます。
Axxonnext
 
      Axxon Nextサーバーに接続されたデバイスを管理するために、後者はかなり便利でシンプルなAPIを提供します。
APIの説明はこちらにあります 。
デバイス管理はHTTP経由で行われ、セキュリティを確保するためにHTTP基本認証が使用されます。
すべてのAxxonNextサーバーの応答は、Json形式で送信されます。
ライブストリームの再生とテレメトリ制御の例を考えてみましょう。 接続されているデバイスのリストを取得するには、GET / video-originsのリクエストを送信するだけです。
このリクエストへの応答として、Axxonサーバーは接続されたデバイスのリストを送信します。
 { "HOSTNAME/DeviceIpint.4/SourceEndpoint.video:0:0": { "origin": "SALES/DeviceIpint.4/SourceEndpoint.video:0:0" ,"state": "signal_restored" ,"friendlyNameLong": "4.IP  [4]" ,"friendlyNameShort": "IP  [4]" } ,"HOSTNAME/DeviceIpint.5/SourceEndpoint.video:0:0": { "origin": "SALES/DeviceIpint.5/SourceEndpoint.video:0:0" ,"state": "disconnected" ,"friendlyNameLong": "5.IP  [5]" ,"friendlyNameShort": "IP  [5]" } }
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
      
      応答には、デバイスの名前に加えて、デバイスに関する追加情報も含まれます。デバイスの状態は
state
      
      フィールド、名前は
friendlyName
      
      フィールドです。
デバイス名は3つのコンポーネントで構成されています。
-   AxxonNextサーバーのホスト名。 提示された例では、これはHOSTNAME
 
 
 
 です。 この情報は、多くのAxxonサーバーを単一のドメインに結合でき、単一のAxxonサーバーを介してデバイス管理が可能であるという事実のために必要です。
- 接続されたデバイスの名前。 この例では、これらはDeviceIpint.4およびDeviceIpint.5です。
- 元のビデオソースの名前。 この例では、これはSourceEndpoint.videoogleです。
- 1つのデバイスに、たとえば品質の異なる複数のビデオソースを含めることができます。
デバイスのすべてのビデオソースをリクエストするには、次のようなリクエストを送信する必要があります。
 GET /video-sources/HOSTNAME/DeviceName/OriginSource
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
      
      HOSTNAME
      
      、
DeviceName
      
      、および
OriginSource
      
      は、前述のデバイス名の3つのコンポーネントです。
特定の信号ソースからライブストリーム(RTSP形式)を受信するには、次のリクエストを送信する必要があります。
 GET /live/media/HOSTNAME/DeviceName/VideoSource?format=rtsp
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
      
      応答として、必要なRTSPストリームへのリンクを取得します。
 { "rtsp":{ "description":"RTP/UDP or RTP/RTSP/TCP", "path":"hosts/SALES/DeviceIpint.4/SourceEndpoint.video:0:0", "port":"554" } }
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
      
      元のビデオソースのテレメトリデバイスのリストを取得するには、次の形式のリクエストを送信する必要があります。
 GET /control/telemetry/list/HOSTNAME/DeviceName
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
      
      ここで、
HOSTNAME
      
      と
DeviceName
      
      は、前述のホスト名とデバイス名です。
応答として、デバイスで利用可能なテレメトリデバイスのリストを取得します。
 [ "SALES/DeviceIpint.5/TelemetryControl.0" ]
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
      
      デバイス名は、3つのコンポーネントで構成されます。最後のコンポーネントはテレメトリデバイス名で、最初の2つは前述のホスト名とデバイス名です。
デバイス管理を開始する前に、デバイスでサポートされている制御方法に関する情報を要求する必要があります。 これは、次の形式のクエリを使用して行われます。
 GET /control/telemetry/info/HOSTNAME/DeviceName/TelemetryName
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
      
      それに応じて、自由度、制限値、デバイスの制御方法に関する情報を取得します。
 { "degrees": { "tilt": { "relative": {"min": "-45", "max": "45"}, "continuous": {"min": "-10", "max": "10"} }, "pan": { "absolute": {"min": "-170", "max": "170"}, "continuous": {"min": "-10", "max": "10"} }, "zoom": { "absolute": {"min": "0", "max": "20"} } }, "feature": ["autoFocus", "areaZoom", "pointMove"] }
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
      
      Degrees
      
      -最大許容値を度で表した自由度に関する情報:
-   tilt
 
 
 
 -ビデオカメラのtilt
 
 
 
 制御。
-   pan
 
 
 
 カメラの回転制御。
-   zoom
 
 
 
 コントロール。
-   focus
 
 
 
 制御。
-   iris
 
 
 
 -iris
 
 
 
 制御。
各自由度には、サポートされている制御方法のリストが含まれています。
-   absolute
 
 
 
 -absolute-カメラの設置に対して指定された角度でのカメラの回転。
 
 
 
 
-   relative
 
 
 
 -relative-現在のカメラの位置を基準に、指定した角度だけカメラを回転します。
 
 
 
 
-   continuous
 
 
 
 -連続-コントロールボタンが押されている間のカメラの連続回転。
 
 
 
 
-   feature
 
 
 
 -サポートされている関数のリスト。統合プラグインでこれらの関数を実装するタスクは成り立ちませんでした。
テレメトリデバイスの制御セッションを開始するには、次の形式の要求を送信して制御セッションをキャプチャする必要があります。
 GET /control/telemetry/session/acquire/HOSTNAME/DeviceName/TelemetryName?session_priority=n
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
      
      nは、制御セッションの優先順位である1〜5の数値です。
現時点でテレメトリデバイスが無料であるか、より低い優先度を持つ別のユーザーによって制御されている場合、制御が取得され、サーバーから次の応答が返されます。
 { "session_id" : [id] }
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
      
      id
      
      はセッション識別子です。
管理セッションの関連性を維持するには、少なくとも10秒に1回要求を送信する必要があります。
 GET /control/telemetry/session/keepalive/HOSTNAME/DeviceName/TelemetryName?session_id=id
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
      
      セッションを解放するには、次のフォームのリクエストを送信する必要があります。
 GET /control/telemetry/session/release/HOSTNAME/DeviceName/TelemetryName?session_id=[id]
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
      
      テレメトリーの自由度の1つを変更するコマンドを送信するには、次の形式の要求を送信する必要があります。
 GET /control/telemetry/DEGREE/HOSTNAME/DeviceName/TelemetryName?mode=MODE &value=VAL&session_id=id
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
      
      ここで:
-   DEGREE
 
 
 
 自由度の名前:チルト、パン、ズーム、フォーカス、アイリス。
-   MODE
 
 
 
 制御方法:絶対、相対、連続;
-   VAL
 
 
 
 自由度を変更または確立する必要がある値による値。
-   id
 
 
 
 管理セッションの識別子。
プロジェクトの実装における主な困難は、AxxonNextからSureViewへのアラームメッセージの送信の実装でした。
難しさ。
-   SureView統合プラグインは、アラームメッセージのリストを照会できません;対応する機能は、SDKで単に提供されていません。 代わりに、SDKはアラームメッセージがSMTPを介してSureViewソフトウェアに送信されると想定し、統合プラグインは(SDKに従って)メッセージ本文を分析し、カメラ番号や名前などの必要な情報を抽出します。または、アラームが生成されたセンサー。 
      
 
 
 
 
- AxxonNextはアラームイベントのリストを送信しませんが、HTTP APIを介して要求に応じてそれらを送信します。 イベントは一定期間サンプリングされます。 AxxonNextソフトウェアの功績として、SMTPプロトコル経由でイベントを送信できますが、このアクションは接続されたデバイスごとに個別に手動で構成されます。そうでない場合は、多数のデバイスとアラームを使用して、スパムメールを受信します。
この状況から抜け出すために、アラームのリストを定期的に読み取り、SMTPを介してSureViewソフトウェアに送信するWindowsサービスの形式で別のサービスを実装することが決定されました。
送信されたアラームリストをより正確に制御するために、起動されたサービスのパラメーターを柔軟に構成し、デバイスおよびイベントタイプでフィルターする機能が実装されました。
さらに、イベントの再送信を防ぐために、サービスは制御機能(イベントが以前に送信されたかどうか)を実行します。
 
      その他のプロジェクト:
5233人時でマイクロトモグラフ用のソフトウェアを作成する方法
FB2形式の電子書籍のサポートを実装するSDK
電子文書へのアクセスを管理します。 DefViewからVivaldiへ
Axxon NextとSureViewの2つのビデオ監視システムを統合します
X線トモグラフィーソフトウェアの開発の詳細
「スコープ」:数十億キロワット時を監視する方法
データベースを操作するためのシンプルなJIRAプラグインの開発
DevOpsを支援する:1008時間でDebian上のネットワークデバイスのファームウェアビルダー
貧しい人々のためのAWSを介したWindows Auto Service Update