TP-Link Тапо

Адаптер для TP-Link Tapo

Текущий релиз
0.6.12
Разработчик
TA2k
Лицензия
MIT

адаптер tapo для ioBroker

Адаптер для TP-Link Tapo

на основе https://github.com/apatsufas/homebridge-tapo-p100

Логинаблауф

Выберите «Почта и пароль». Es werden die Geräte через Cloud abgerufen, aber local gesteuert. Если IP-адрес не используется, вам нужно вручную использовать Tapo.0.id.ip.

Status-Werte (eingehend)

Alle Geraete werden regelmaessig gepollt. Die Werte werden autotisch untertapo.0.id.* angelegt.

Alle Geraete

Пример:tapo.0.80A5897B21C7.nickname ,tapo.0.80A5897B21C7.device_on

ВертТипОписание
прозвищенитьГераетенаме
device_idнитьГераете-ID
модельнитьModellbezeichnung
fw_verнитьВерсия прошивки
hw_verнитьАппаратная версия
макнитьMAC-адрес
device_onлогическийGeraet ein/aus
вовремячислоEinschaltdauer in Sekunden
rssiчислоWLAN-Signalstaerke
уровень сигналачислоСигналстарке (1-3)
SSIDнитьНазвание беспроводной сети (WLAN)
IPнитьIP-адрес
перегретыйлогическийUeberhitzungsstatus

Lampen (zusaetzlich)

Пример:tapo.0.80A5897B21C7.brightness ,tapo.0.80A5897B21C7.hue

ВертТипОписание
яркостьчислоХеллигкейт (0-100)
color_tempчислоФарбтемпература в Кельвинах
оттенокчислоФарбтон (0-360, ну L530/L630)
насыщенностьчислоСэттигунг (0-100, от L530/L630)

P110/P115 Энергетические данные (zusaetzlich)

Пример:tapo.0.80A5897B21C7.current_power ,tapo.0.80A5897B21C7.voltage_mv

ВертТипОписание
текущая_мощностьчислоАктуальная мощность (мВт)
сегодня_энергиячислоПотребление энергии сегодня (Вт·ч)
месяц_энергиячислоПотребление энергии в месяц (Втч)
напряжение_мвчислоШпанунг (мВ)
current_maчислоСтром (мА)
power_mwчислоМощность (мВт)
текущее (потребление)числоAktuelle Leistung (W, берехнет)
общее (потребление)числоEnergie heute (кВтч, бережнет)

Hub-Sensoren (Детские устройства)

Пример:tapo.0.80A5897B21C7.child_SENSOR_ID.current_temp

ДатчикВертеОписание
T100 (Bewegung)обнаруженоBewegung erkannt
Т110 (Контакт)открытьTuer/Fenster offen
Т300 (Вассерлек)water_leak_status, in_alarmСтатус Вассерлека
T310/T315 (температура/влажность)текущая_температура, текущая_влажность, единица_измерения_температурыТемпература и люфтфойхтигкейт
KE100 (термостат)target_temp, current_temp, frost_protection_on, trv_statesСостояние термостата

Все сенсорные датчикиbattery_percentage ,at_low_battery ундsignal_level .

Статус камеры

Пример:tapo.0.80A5897B21C7.alarm ,tapo.0.80A5897B21C7.personDetection

ВертТипОписание
тревогалогическийАктивация сигнализации
глазалогическийРежим конфиденциальности (инвертированный: true = камера)
уведомлениялогическийPush-Benachrichtigungen aktiv
Обнаружение движениялогическийBewegungserkennung aktiv
веллогическийLED активный
автотреклогическийАктивация автоматического отслеживания
personDetectionлогическийPersonenerkennung aktiv
VehicleDetectionлогическийFahrzeugerkennung aktiv
обнаружение питомцевлогическийTiererkennung aktiv
babyCryDetectionлогическийBaby-Schrei-Erkennung aktiv
Обнаружение корылогическийBellen-Erkennung aktiv
обнаружение мяукалогическийMiauen-Erkennung aktiv
glassBreakDetectionлогическийGlasbruch-Erkennung aktiv
обнаружение несанкционированного доступалогическийManipulations-Erkennung aktiv
imageFlipлогическийBild vertikal gespiegelt
льдклогическийLinsenverzerrungscorrektur актив
запись аудиологическийАктивное аудиозапись
автоматическое обновлениелогическийАктивировано автоматическое обновление прошивки

Nicht jedes Geraet Lifert alle Werte. Felder die das Geraet nicht unterstuetzt werden nicht angelegt.

Kamera-Erkennungsereignisse

Пример:tapo.0.80A5897B21C7.detection.active ,tapo.0.80A5897B21C7.detection.events.0.alarm_type

Die Kamera wird local gepollt und Lifert Erkennungs-Events (Bewegung, Personen и т. д.). Die letzten 10 Events werden abgerufen (searchDetectionList ), neuestes Event zuerst.

ВертТипОписание
обнаружение.активлогическийtrue wenn Erkennung in den letzten 30 Sekunden
detection.eventCountчислоAnzahl Ereignisse in den Letzten 10 Minuten
detection.events.0.start_timeчислоUnix-Timestamp Начало новых событий
detection.events.0.end_timeчислоUnix-Timestamp Ende des neuesten Events
detection.events.0.alarm_typeчислоErkennungstyp (siehe Tablele unten)
detection.events.1.start_timeчислоZweitneuestes Event (usw. bis 9)
motionEventлогическийONVIF Echtzeit-Bewegungserkennung

alarm_type Werte

ИДЕНТИФИКАТОРОписание
2Bewegung (motion)
3Манипуляция (подделка)
4Linienueberquerung (пересечение линии)
5Интрузия Берейхса (интрузия территории)
6Человек
7Baby-Schrei (детский плач)
8Fahrzeug (vehicle)
9Уровень (питомец)
11Беллен (кора)
12Мяуэн (мяу)
13Разбить стекло (Glasbruch)
14Rauch (дым)
15Paket abgelegt (доставка посылок)
16Paket abgeholt (выдача посылки)
20Gesichtserkennung (распознавание лиц)
32Herumlungern (праздное шатание)

Nicht jede Kamera Lifert alle Typen. Die verfuegbaren Werte haengen von Modell und Firmware ab.

Настройка сигнализации

Пример:tapo.0.80A5897B21C7.alarmInfo.enabled ,tapo.0.80A5897B21C7.alarmInfo.alarm_volume

ВертТипОписание
alarmInfo.enabledнитьАктивация сигнализации (вкл/выкл)
alarmInfo.alarm_modeсмешанныйРежимы сигнализации (звук, свет)
alarmInfo.alarm_volumeнитьЛаутстарке
alarmInfo.alarm_durationнитьDauer in Sekunden
alarmInfo.alarm_typeнитьSirenen-Typ
alarmInfo.light_typeнитьLicht-Typ
alarmInfo.light_alarm_enabledнитьАктивная световая сигнализация (вкл/выкл)
alarmInfo.sound_alarm_enabledнитьАктивация звуковой сигнализации (вкл/выкл).

Alarm-Event-Typen (выбор типа сигнала тревоги)

Пример:tapo.0.80A5897B21C7.alertEventTypes.motion ,tapo.0.80A5897B21C7.alertEventTypes.person

ВертТипОписание
alertEventTypes.motionлогическийAlarm bei Bewegung
alertEventTypes.personлогическийСигнал тревоги для человека
alertEventTypes.vehicleлогическийAlarm bei Fahrzeug
alertEventTypes.petлогическийСигнализация на уровне

Benachrichtigungen einrichten

Fuer Benachrichtigungen bei Erkennung ein ioBroker-Skript aufdetection.events.0.start_time триггер:

const alarmTypen = {
  2: "Bewegung",
  3: "Manipulation",
  4: "Linienueberquerung",
  5: "Bereichsintrusion",
  6: "Person",
  7: "Baby-Schrei",
  8: "Fahrzeug",
  9: "Tier",
  11: "Bellen",
  12: "Miauen",
  13: "Glasbruch",
  14: "Rauch",
  15: "Paket abgelegt",
  16: "Paket abgeholt",
  20: "Gesicht",
  32: "Herumlungern",
};

on({ id: "tapo.0.DEVICE_ID.detection.events.0.start_time", change: "ne" }, (obj) => {
  const typ = getState("tapo.0.DEVICE_ID.detection.events.0.alarm_type").val;
  sendTo("telegram.0", {
    text: (alarmTypen[typ] || "Typ " + typ) + " um " + new Date(obj.state.val * 1000).toLocaleString(),
  });
});

Blockly-Beispiel (также как XML importierbar):

<xml xmlns="https://developers.google.com/blockly/xml">
  <block type="on_ext" x="38" y="13">
    <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
    <field name="CONDITION">ne</field>
    <field name="ACK_CONDITION"></field>
    <value name="OID0">
      <shadow type="field_oid">
        <field name="oid">tapo.0.DEVICE_ID.detection.events.0.start_time</field>
      </shadow>
    </value>
    <statement name="STATEMENT">
      <block type="telegram">
        <field name="INSTANCE">.0</field>
        <field name="LOG"></field>
        <value name="MESSAGE">
          <block type="text_join">
            <mutation items="3"></mutation>
            <value name="ADD0">
              <block type="text">
                <field name="TEXT">Tapo Erkennung: Typ </field>
              </block>
            </value>
            <value name="ADD1">
              <block type="get_value">
                <field name="ATTR">val</field>
                <field name="OID">tapo.0.DEVICE_ID.detection.events.0.alarm_type</field>
              </block>
            </value>
            <value name="ADD2">
              <block type="text">
                <field name="TEXT"> erkannt</field>
              </block>
            </value>
          </block>
        </value>
      </block>
    </statement>
  </block>
</xml>

Интервал опроса находится в конфигурационной панели Adapteinstellungen (стандартно: 10 секунд). Alles local, kein Cloud-Zugriff noetig.

Стойерн

Tapo.0.id.remote auf true/false setzen steuert den jeweiligen Befehl. Der Befehl wird locale и das Gerät gendet.

Вилки/выключатели (P100, P110, P115, ...)

УдаленныйТипОписание
обновитьлогическийОбновление состояния ручного управления
setPowerStateлогическийЭйн/Аус
setPowerStateChildнитьChild-Device steuern:childId,true ОдерchildId,false
setLedEnabledлогическийLED Indikator ein/aus
setAutoOffлогическийТаймер автоматического отключения ein/aus
setAutoOffDelayчислоАвтоматическое отключение Verzoegerung через минуту
setChildProtectionлогическийTastensperre (Блокировка кнопок) ein/aus
setPowerProtectionлогическийUeberlastschutz ein/aus
setPowerProtectionThresholdчислоUeberlast-Schwellwert in Watt
setAutoUpdateлогическийАвтоматическое обновление прошивки ein/aus

P110/P115liefern zusaetzlich Energiedaten (Leistung, Spannung, Strom).

Лампен (L510E, L520E, L530, L630, L900, L920, ...)

Alle Plug-Remote plus:

УдаленныйТипОписание
установить яркостьчислоHelligkeit setzen
setColorTempчислоФартерматура (2500-6500K)
setColorнитьFarbe setzen:hue, saturation
setLightEffectнитьИдентификатор светового эффектаoff
setGradualOnOffлогическийSanftes Ein-/Ausschalten

Фанаты (F1xx)

УдаленныйТипОписание
setFanSpeedLevelчислоGeschwindigkeit 0-4 (0 = aus)
setFanSleepModeлогическийSchlafmodus ein/aus

Втулка (H100, H200)

УдаленныйТипОписание
playAlarmлогическийAlarm abspielen
стоп-сигналлогическийСигнализация отключена
setAlarmVolumeнитьСигнализация Lautstaerke: без звука/низкий/нормальный/высокий
setAlarmDurationчислоAlarm Dauer in secunden

Термостат / термостатический клапан (KE100)

УдаленныйТипОписание
setTargetTemperatureчислоZieltemperatur setzen
setTemperatureOffsetчислоСмещение температуры (-10 до 10)
setFrostProtectionлогическийFrostschutz ein/aus

Хаб-сенсорен (T100, T110, T300, T310, T315)

Датчики температуры (температура, люфтфойхтигкейт, Bewegung, Kontakt, Wasserleck) автоматически передаются черезgetChildDeviceList abgerufen и другие статусы.

Камеры (C200, C310, C520, TC70, ...)

УдаленныйТипОписание
обновитьлогическийОбновление состояния ручного управления
setAlertConfigлогическийAlarm ein/aus
setLensMaskConfigлогическийPrivacy (Eyes) ein/aus
setForceWhitelampStateлогическийWeisslicht ein/aus
setLedStatusлогическийLED ein/aus
setMsgPushConfigлогическийBenachrichtigungen ein/aus
setDetectionConfigлогическийBewegungserkennung ein/aus
setAutoTrackTargetлогическийАвтоматическое отслеживание ein/aus
setPersonDetectionлогическийPersonenerkennung ein/aus
setVehicleDetectionлогическийFahrzeugerkennung ein/aus
setPetDetectionлогическийTiererkennung ein/aus
setBabyCryDetectionлогическийBaby-Schrei-Erkennung ein/aus
setBarkDetectionлогическийBellen-Erkennung ein/aus
setMeowDetectionлогическийMiauen-Erkennung ein/aus
setGlassBreakDetectionлогическийGlasbruch-Erkennung ein/aus
setTamperDetectionлогическийМанипуляции-Erkennung ein/aus
setImageFlipVerticalлогическийBild vertikal spiegeln
setLensDistortionCorrenceлогическийLinsenverzerrungscorrektur ein/aus
setRecordAudioлогическийAudio aufnehmen ein/aus
setAutoUpgradeлогическийАвтоматическое обновление прошивки ein/aus
установить HDRлогическийHDR ein/aus
setCoverConfigлогическийЗоны конфиденциальности ein/aus
setRecordPlanлогическийSD-Karten Aufnahme ein/aus
moveMotorнитьKamera bewegen:x, y (-360..360, -45..45)
moveMotorStepнитьSchrittwinkel (0-360)
moveToPresetнитьZu Preset fahren (ID)
калибровать двигательлогическийMotor kalibrieren
сохранить ПредустановканитьПредварительно заданные параметры (Имя)
deletePresetнитьПредварительно заданный loeschen (ID)
setCruiseнитьПатрулирование: x/y/выкл.
запуск вручную СигнализациялогическийРучной запуск сигнализации
stopManualAlarmлогическийРучная остановка сигнализации
setAlarmModeнитьРежим сигнализации: оба/свет/звук/выкл.
setDayNightModeнитьРежимы Tag/Nacht: авто/вкл/выкл
setLightFrequencyModeнитьLichtfrequenz: auto/50/60
setSpeakerVolumeчислоЛаутпрехер-Лаутштаерке (0-100)
setMicrophoneVolumeчислоМикрофон-Лаутстерке (0-100)
setMotionDetectionSensitivityнитьBewegungs-Sensitivitaet: высокая/нормальная/низкая
setPersonDetectionSensitivityнитьПерсонен-чувствительность: высокая/нормальная/низкая
setOsdнитьOSD Beschriftungstext
перезагрузитьлогическийKamera neustarten
формат SD-картылогическийSD-Karte formatieren

Не используйте камеру для всех функций. Ничего не нужно делать, если вы хотите, чтобы ваш журнал вышел из журнала.

Kamerasteuerung aktivieren

альтернативный текстальтернативный текст

Discussion und Fragen

https://forum.iobroker.net/topic/57336/test-adapter-tp-link-tapo/

Changelog

0.6.12 (2026-08-11)

  • Fix intermittent "Expected double-quoted property name in JSON" on KLAP/TPAP devices: requests per device are now serialized, so rapid commands (or a poll racing a command) no longer corrupt the AES sequence counter and garble the decrypted response

0.6.11 (2026-08-11)

  • Fix: L530 name variants (e.g. "L530 Series", hw 1.0) are now detected as color bulbs, so setColor/setColorTemp are available (match by prefix instead of exact "L530")

0.6.10 (2026-08-11)

  • Fix setColorTemp for L530/L530E: send the value directly in Kelvin (it was wrongly converted from mired, e.g. 6000 became 2500) and send only color_temp (no hue/saturation), which made the lamp briefly apply the temperature and then revert to a warm hue

0.6.9 (2026-08-11)

  • Publish the configured PTZ presets as a state (presets: id -> name), refreshed after save/delete, so you can see which names/ids moveToPreset accepts

0.6.8 (2026-08-11)

  • PTZ move-to-preset now accepts the preset name (not just the numeric id) and reports success correctly
  • Camera connect/reconnect log messages now show the IP instead of undefined

0.6.7 (2026-08-11)

  • Doorbell ring now also works for hub-paired battery doorbells (e.g. D210 + H200): the ring UDP packet (port 20005) is sent from the hub IP, so any packet on the doorbell port now triggers the ringEvent (matches Home Assistant)

0.6.6 (2026-08-11)

  • Fix: an unreachable camera/doorbell (ONVIF/EHOSTUNREACH) no longer aborts init, so the ringEvent state and doorbell UDP listener are set up even for battery/hub-paired doorbells (D210)

0.6.5 (2026-08-11)

  • Log all incoming doorbell UDP (port 20005) packets at debug level to help diagnose hub-paired doorbells (e.g. D210 + H200)

0.6.4 (2026-08-11)

  • Camera ONVIF port (2020) unreachable is now an info hint, not an error (EHOSTUNREACH/ETIMEDOUT)
  • Capture onvif socket errors so they no longer surface as uncaught errors

0.6.3 (2026-08-10)

  • Camera line crossing detection (on/off toggle + status), ported from python-kasa
  • List dynamic light effects (getLightEffects) for L530/L630
  • Battery status exposed for battery-powered cameras via device info

0.6.2 (2026-08-10)

  • Fix camera PTZ move-to-preset (the request was missing the preset wrapper)
  • Support for Tapo smart chime D100C (play/stop chime, volume, ring type) - uses the plug/TPAP protocol

0.6.1 (2026-08-09)

  • Support for Tapo video doorbells (D-series, e.g. D235) - initialized as camera devices
  • Fetch SMART.TAPODOORBELL / SMART.TAPOCHIME device types from the cloud (doorbells were missing from the device list)
  • Also fetch SMART.TAPOLOCK / SMART.TAPOROBOVAC / SMART.TAPONVR device types
  • Doorbell ring event (ringEvent state) via UDP broadcast (port 20005) and alarm polling fallback

0.6.0 (2026-07-30)

  • Fix camera login for newer firmware (FW 1.4.3+, e.g. C200 1.4.4)
  • Use the Camera Account credentials (Stream Username/Password) for local camera login
  • Try camera default credentials (admin, LV3 built-in) when the password is rejected
  • TPAP/SPAKE2+ fallback for cameras that no longer use the stok login
  • Stop amplifying device lockouts: no repeated login attempts while a camera is suspended
  • Actionable, rate-limited camera log messages (Camera Account / Third-Party Compatibility hints)

0.5.5 (2026-05-25)

  • added udp detection for better device detection

0.5.4 (2026-04-02)

  • Support for TPAP/SPAKE2+ protocol (P100 FW 1.4.3+ and newer devices)
  • Support for KLAP v1 (md5) handshake
  • Fix camera connection for firmware 1.9.1+ (C310 etc.)
  • 30+ new camera remotes (detection, motor, alarm, cruise, presets, image/audio, OSD)
  • New data points for camera status and detection events
  • New remotes for plugs, lamps, fans, hubs and thermostats
  • Device-specific remotes (only relevant controls per device type)
  • Energy data (voltage, current) for P110/P115
  • Automatic reconnect for devices that go offline and come back
  • Less log spam for unreachable devices

0.4.8 (2025-02-04)

  • disable sentry to prevent crashes

0.4.7 (2025-01-14)

  • disable battery devices
  • improved wrong formatted mail adresses

0.4.6 (2025-01-10)

  • add checks for battery devices

0.4.5 (2024-12-16)

  • fix camera remotes

0.4.4 (2024-12-12)

  • improve handshake if e-mail is not entered in lowercase

0.4.3 (2024-12-09)

  • fix handshake for device with HW v1.20

0.4.1 (2024-11-29)

  • fixed Get Device Info failed error

0.3.4 (2024-11-10)

  • update Tapo local lib

0.3.3 (2024-06-17)

  • ignore ssl legacy error

0.3.2 (2024-05-27)

update onvif lib to fix issues with newer cameras

0.2.9 (2024-01-30)

  • fix tapo Plugs and setLensMask

0.0.2

  • (TA2k) initial release

License

MIT License

Copyright (c) 2024-2030 TA2k tombox2020@gmail.com

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.