euSec

Unterstützung für Eufy-Security-Kameras mit Stationen

Aktueller Release
3.6.2
Entwickler
bropat, iobroker-community-adapters, mcm1957
Lizenz
MIT

[!IMPORTANT] Dieser Adapter kann nicht von GitHub installiert werden.

Dies ist ein ioBroker- Adapter, der die eufy-security-client- Bibliothek zur Kommunikation mit Eufy-Geräten verwendet.

Dieses Projekt steht in keiner Verbindung zu Anker und Eufy (Eufy Security). Es handelt sich um ein privates Projekt, das in der Freizeit betreut wird.

Beschreibung

Mit diesem Adapter können Sie Eufy-Sicherheitsgeräte steuern, indem Sie eine Verbindung zu den Eufy-Cloud-Servern und lokalen/Remote-Stationen herstellen.

Sie müssen Ihre Cloud-Anmeldedaten angeben. Der Adapter verbindet sich mit Ihrem Cloud-Konto und ruft alle Gerätedaten per HTTPS ab. Nun wird auch eine lokale oder Remote-P2P-Verbindung zu den Eufy-Stationen/Geräten unterstützt. Eine Verbindung zur Eufy Cloud ist jedoch immer Voraussetzung.

Eine Adapterinstanz zeigt alle Geräte eines Eufy Cloud-Kontos an und ermöglicht deren Steuerung.

Dokumentation

Die Dokumentation finden Sie hier .

Bekannte funktionierende Geräte

Informationen zu unterstützten Geräten finden Sie hier .

Credits

Dieser Adapter wäre ohne die großartige Arbeit von Patrick Broetto (brobat) https://github.com/bropat , der frühere Versionen dieses Adapters erstellt hat, nicht möglich gewesen.

Upgrade von Adapter 2.x oder älter

Adapter 2.x und älter hinzugefügt --security-revert=CVE-2023-46809 zu den Node-Prozessparametern jeder Instanz, die unter Node.js 18 oder 20 ausgeführt wird. Node.js 22 und neuer weigern sich, eine Instanz mit diesem Flag zu starten, und dieser Adapter benötigt Node.js 24.

Durch die Aktualisierung dieses Adapters werden die Knotenprozessparameter aller EUSEC-Instanzen gelöscht, wodurch das Flag entfernt wird. Andere Parameter (z. B. --max-old-space-size) werden ebenfalls gelöscht und müssen nach jedem Update erneut eingegeben werden. Wenn eine Instanz immer noch nicht startet und ihr Protokoll Folgendes anzeigt --security-revert=CVE-2023-46809 Entfernen Sie die Parameter manuell und starten Sie die Instanz neu:

iobroker object set system.adapter.eusec.0 common.nodeProcessParams=[]

Eine detaillierte Beschreibung (in deutscher Sprache) finden Sie in unserem Forum ( https://forum.iobroker.net/topic/82651/test-adapter-eusec-v2-0-x ).

Changelog

3.4.2 (2026-10-05)

  • (typhosj) On-demand livestreams no longer show only a picture every few seconds and then go black. Since 3.4.0 every keyframe of 16 KB or more was taken for a go2rtc that does not keep up, and the video up to the next keyframe was dropped. Data is now only dropped once more than 4 MB wait for go2rtc (reported in the forum)

3.4.1 (2026-10-05)

  • (typhosj) Updating the adapter clears the node process parameters of all eusec instances again, which removes --security-revert=CVE-2023-46809 left over from adapter 2.x. The install script that removed only this flag is gone, since install scripts are not allowed for ioBroker adapters. Other parameters such as --max-old-space-size have to be entered again after each update

3.4.0 (2026-10-02)

  • (typhosj) Floodlight Cam E30 (T8426): preset positions are now sent to the camera (before, writing preset_position, save_preset_position or delete_preset_position had no effect), and the livestream is no longer rejected with ERROR_INVALID_ACCOUNT. The camera now gets the commands of the Floodlight Cam E340, which the library already defines it like (reported in the forum)
  • (hdering) Changed URLs: without a configured host name, the livestream URLs (states livestream, livestream_rtsp) now use the IPv4 address in the LAN of the ioBroker host the instance runs on instead of the name of the first ioBroker host (e.g. http://192.168.1.10:1984/... instead of http://iobroker:1984/...). Tablets, phones and dashboards often cannot resolve the name, and with several hosts the first one is not necessarily the one that runs go2rtc. Visualizations and scripts that store the URL get the new one with the next livestream; to keep a name, enter it in the setting "Hostname"
  • (hdering) New setting "Start livestreams on demand": the livestream of a camera starts as soon as its player page or RTSP URL is opened and stops shortly after the last viewer left, so start_stream is no longer needed and a dashboard shows a picture right away. A livestream that ends at the maximum duration is started again while somebody still watches. A station carries one livestream at a time: while one of its cameras is watched, the player of another one says which camera that is and starts by itself once the station is free, and a paused player releases the station. Starts the camera acknowledges without sending anything are retried. The states livestream and livestream_rtsp always carry the URL in this mode. go2rtc's player page and API port have no authentication, so every device in the network that reaches them can wake the cameras. Off by default
  • (hdering) New tab "Streams" in the instance settings: every device with a livestream with its station, the player URL to open and the RTSP URL - no need to look the streams up in go2rtc anymore
  • (hdering) New setting "Livestream quality": sets the streaming quality of every camera to low, medium or high before its livestream starts, so no camera streams at "Auto", where it changes the resolution mid-stream and browsers show a green or frozen picture. The encoding of battery doorbells ("Medium / Low Encoding") is kept, devices that name their qualities by resolution ("1080P", "2K HD") are left alone. Off by default. The warning about the "Auto" quality is now logged once per device instead of at every livestream start, and names the state to change and the fixed qualities the device offers
  • (hdering) New setting "Wait for camera data (sec)", 15 seconds by default: a livestream is no longer given up after 5 seconds without data. Battery cameras that first have to wake up often need longer, and their livestream then ended with "we haven't received any data for 5 seconds" before the first frame
  • (hdering) The maximum livestream duration counts from the first picture instead of from the start command, so a camera that needs a minute to wake up no longer loses that minute of its livestream
  • (hdering) Livestream: the audio track (or, with a slow camera, the whole stream) no longer breaks after 5 seconds with socket hang up. go2rtc drops connections whose request header does not arrive within 5 seconds, and the adapter only sent it with the first data. A livestream that already ended is no longer stopped a second time, which logged a misleading warning

3.3.0 (2026-09-21)

  • (typhosj) Breaking: the tilt down button of pan and tilt cameras is renamed from titl_down to tilt_down. The update moves the existing object with its name and custom settings (e.g. history); scripts and visualizations that use the old id have to be changed to tilt_down
  • (typhosj) New setting "Devices with a compatibility stream": the livestream of a camera listed there is re-encoded to 720p H.264, keeping the aspect ratio of the camera, before it reaches the player, which makes it playable on old WebViews, kiosk tablets and hardware decoders that cannot handle the resolution the camera sends. The states livestream and livestream_rtsp of that camera point at the transcoded stream, the untouched one stays available under the serial number. Transcoding costs CPU on the ioBroker host while such a stream is watched, which is why it is off by default and set per device (#153)
  • (typhosj) Talkback: devices with a speaker get the state talkback_play. Writing an http(s) URL or an absolute file path to it plays that audio through the device; a livestream is started for it if none is running and stopped again afterwards (#34)
  • (typhosj) New setting "Battery devices that stay connected": standalone battery devices on permanent power (power supply or solar panel) listed there keep their P2P connection instead of losing it 30 seconds after the last command, and are reconnected when it drops. It drains the battery of a device that is not on permanent power (#33)
  • (typhosj) The eufyCam C31 (T817L) is no longer an unknown device without states; the adapter handles it like the SoloCam Spotlight 1080, which gives it livestream, motion and person detection, light and alarm. Pan and tilt are not available yet (#156)
  • (typhosj) Installing the adapter now removes only --security-revert=CVE-2023-46809 from the node process parameters of an instance instead of clearing them all, so parameters such as --max-old-space-size survive an update. A failure there no longer aborts the installation
  • (typhosj) Event pictures that arrive in a format the adapter cannot decrypt (e.g. v8_eufysecurity) are now loaded from the HomeBase over P2P instead, the way the picture is loaded when the adapter starts. The picture appears about a minute after the event, once the station has stored it (#136)
  • (typhosj) Livestreams no longer fail with "RSA_PKCS1_PADDING is no longer supported for private decryption" on node.js builds that refuse RSA PKCS#1 v1.5 decryption; the stream key is now decrypted by node-rsa's own implementation (#144)
  • (typhosj) Error messages in the log show the actual error again; before, an error passed along with a log line was written as {}, and an error with circular references could not be logged at all
  • (typhosj) A device or station property whose state had no value yet now receives its updates; before, such a state stayed empty until the adapter was restarted
  • (typhosj) The adapter no longer rewrites the object of every property state on each start, only the ones whose definition actually changed
  • (typhosj) A station that disconnects no longer causes warnings about missing livestream states for sensors, locks and other devices without a livestream
  • (typhosj) The chime message command now always answers exactly once: with an error if parameters are missing (before: no answer at all) and only with "not supported" for a station without chime (before: also "chime command sent")
  • (typhosj) The state set_privacy_angle is named "Set Privacy Angle" instead of "Set Default Angle"; existing objects are renamed on update unless their name was changed by hand
  • (typhosj) A channel named "unknown" is no longer deleted on start while it still holds states that have no value yet; only channels without any object below them are removed
  • (typhosj) Update migrations compare adapter versions correctly beyond x.9 (3.10.0 was treated as older than 3.9.0)
  • (typhosj) Removed unused code and the no longer needed dependencies @bropat/fluent-ffmpeg and fs-extra

3.2.1 (2026-09-18)

  • (typhosj) An event picture that cannot be decoded no longer replaces the last picture with a <serial>.unknown file; picture_url and picture_html keep the previous picture and a warning names the device, the data length and the image format (#136)

License

MIT License

Copyright (c) 2025-2026 iobroker-community-adapters iobroker-community-adapters@gmx.de
Copyright (c) 2020-2024 bropat patrick.broetto@gmail.com

The web pages in www/ that go2rtc serves are taken from go2rtc, MIT licensed, Copyright (c) 2022 Alexey Khit. Their license text is in www/LICENSE.go2rtc, the list of files and what was changed is in www/VENDOR.md.

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.