Skip to content
skrtk98 edited this page Oct 24, 2026 · 1 revision

PTZ(首振り)

ONVIF の PTZ サービスで動かす。ズームは無い。

能力

GetNodes・GetConfigurations の値:

  • 位置・移動量・速度は、どれも −1〜1 に正規化した値。速度の空間(PanTiltSpeedSpace)は 0〜1。
  • DefaultPTZSpeed は x=1.0、y=0.89。
  • プリセットは 8 件まで。保存・移動・削除を実機で確かめた。
  • HomeSupported=false(GotoHomePosition は ActionNotSupported)。
  • PresetTour に対応すると答える(MaximumNumberOfPresetTours 8、操作は Start・Stop・Pause)。実機では試していない。
  • PTControlDirection の EFlip・Reverse はどちらも Mode OFF。

向き

  • pan の向きが、速度と位置で逆になる。 ContinuousMove の速度は正の pan で画面が右へ動く。一方、位置(GetStatus・AbsoluteMove・RelativeMove)は、正の pan で左を向く。tilt はどちらも正で上。
  • 画像の上下反転(flip)をオンにして天井に逆さに付けると、首振りは上下左右とも逆になる。 step up で部屋の下を、step left で部屋の右を向いた。 ライブラリはこれを TapoC220.inverted と detect_inverted() で吸収している。

Timeout

  • ContinuousMove の Timeout は整数の秒だけ受け付ける。PT1S は受け付けられ、1 秒で自分で止まった。
  • PT0.5S を送ると、カメラの HTTP サーバが壊れた応答を返す。NUL で区切ったヘッダの文字列のあとに HTTP/1.1 500 が続く形で、Python の http クライアントは BadStatusLine で落ちた。
  • Timeout を省くと、カメラの既定(180 秒)まで動き続ける。

動く速さ

1 秒間 ContinuousMove したときの位置の変化(指示の往復の時間を含む粗い値):

軸 速度 位置の変化
pan −0.1 +0.056
pan +0.5 −0.146
pan +1.0 −0.204
tilt +0.5 +0.711

正の pan の速度で位置が負に動くのは、上の「向き」の逆転による。tilt は正規化した値に対して速い。

動きの状態

  • 移動の指示には、すぐ応答が返る(動き終わるのを待たない)。
  • GetStatus の位置は動いている途中も変わるが、MoveStatus は常に UNKNOWN。動き終えたかは、位置が変わらなくなったことで判断するしかない。
  • 動いている途中に次の移動を送ると、前の移動は打ち切られる。
  • RelativeMove に Speed 要素を付けても受け付けられる。

Clone this wiki locally