Home assistant

Unlocking RTSP on the MoesHouse/Tuya 4MP Indoor Camera: A Complete Guide

On this page
    TL;DR: In the Tuya or Smart Life app, turn on the ONVIF switch and set a password with at least one capital letter. The username is always admin, the port is 8554 (not 554), and the paths are /stream0 for the 4MP main stream and /stream1 for the low resolution sub stream: rtsp://admin:PASSWORD@CAMERA_IP:8554/stream0. In Home Assistant, add it with the Generic Camera integration, and put go2rtc in front of it if more than one thing needs the stream.

    Updated November 2026. I have been running this camera 24/7 for months as the input for a DIY AI baby monitor at home, so this version adds what I learned from long-term use: which stream to use where, why a second viewer can silently break the first, and how to keep a firmware update from killing RTSP.

    The MoesHouse 4MP indoor PTZ camera is a Tuya camera. It is cheap, the picture is good, it pans and tilts, and it has night vision. It also claims ONVIF and RTSP support, which is what makes it interesting for Home Assistant, Frigate or VLC. RTSP is the standard way cameras send live video over your home network, and ONVIF is a camera standard apps use to find and control cameras. Getting the stream working took me hours of trial and error, because the usual URLs from other guides simply do not work on this model.

    What you need

    The camera itself (sold in the MoesHouse store on AliExpress and also listed on Amazon), the Tuya Smart or Smart Life app for the initial setup, and a DHCP reservation for the camera in your router so the IP address in your stream URL never changes.

    What you needReolink PoE camera (RTSP + ONVIF)Local RTSP streams that work with Frigate and Home Assistant, no cloud needed.Check price on AliExpressGoogle Coral USB AcceleratorOffloads Frigate object detection so the CPU stays cool and fast.Check price on AliExpress

    Step 1: Enable ONVIF and set the password

    1. Add the camera to the Tuya Smart or Smart Life app as usual and let it join your Wi-Fi.
    2. Open the camera, then its settings (the pencil or gear icon).
    3. Find ONVIF (sometimes shown as Onvif Switch or under advanced settings) and turn it on.
    4. Tap Reset password and set a password with at least one capital letter, for example Admin1234. Without a capital letter it fails without telling you why.
    5. Give the camera a minute or reboot it. RTSP often does not answer right after switching ONVIF on.

    The username is always admin and cannot be changed.

    Step 2: Confirm the camera is listening

    Before blaming your URL, check which port is open. nmap is a free network scanning tool for Windows, macOS and Linux:

    nmap -p 554,8554 192.168.1.80

    On my camera the result is:

    AliExpress deals
    554/tcp  closed rtsp
    8554/tcp open   rtsp-alt

    So RTSP runs on port 8554, not the standard 554. Replace the IP with your camera’s address.

    Step 3: The stream URLs

    None of the usual paths (/main, /sub, /onvif1, /live) work on this model. These do:

    rtsp://admin:[email protected]:8554/stream0
    rtsp://admin:[email protected]:8554/stream1
    • stream0 is the main stream at 2560×1440. It is heavy, and in my experience it is H.265 (HEVC), which many browsers cannot play directly.
    • stream1 is the sub stream at 640×360 with audio. It is light, starts fast and plays almost everywhere.

    Use stream1 for live dashboard views and phone viewing, and stream0 when you need detail, like recording or image analysis.

    Step 4: Test in VLC

    1. In VLC, open Media > Open Network Stream (on macOS File > Open Network).
    2. Paste the full URL including username and password.
    3. Click Play (or Open).

    If VLC plays it, the camera side is done. If it does not, go back to the port check before changing anything else.

    Step 5: Add it to Home Assistant

    1. Go to Settings > Devices & services > Add integration and search for Generic Camera.
    2. Leave Still image URL empty. This camera has no snapshot URL, and Home Assistant grabs stills from the stream.
    3. Set Stream source to the stream1 URL for a quick, reliable live view.
    4. Set RTSP transport protocol to TCP. Over Wi-Fi it avoids the smeared gray frames you get with UDP when packets drop.
    5. Keep authentication on Basic, submit, and check the preview Home Assistant shows you.

    You get a camera entity you can put on a dashboard with a picture entity or picture glance card. Home Assistant has go2rtc built in for WebRTC playback, so the live view is fast in a browser once the stream source works. For more on camera dashboards, see dashboards for IP camera streams.

    Lessons from running it 24/7

    One client per stream, or use go2rtc

    This was the biggest surprise. The camera handles one client per stream path well. When a second client opens the same path, one of them often just stops getting frames, with no error. If Home Assistant, Frigate and a script all read stream0 directly, something breaks at random.

    The fix is a restreamer, a small program that holds the one connection to the camera and shares the video with everyone else. Run go2rtc (as a Home Assistant app, in Docker, or the one bundled with Frigate), point it at the camera once, and let everything else read from go2rtc:

    streams:
      nursery_main: rtsp://admin:[email protected]:8554/stream0
      nursery_sub: rtsp://admin:[email protected]:8554/stream1

    Then use rtsp://GO2RTC_IP:8554/nursery_sub in Home Assistant and the main stream in your recorder or detector. go2rtc also gives you a clean JPEG of the latest frame at http://GO2RTC_IP:1984/api/frame.jpeg?src=nursery_main, which is much more reliable for snapshots than grabbing a single frame from an HEVC stream with ffmpeg.

    Audio and two-way talk

    The sub stream carries audio, so you can listen in through Home Assistant or VLC. Two-way talk does not work over local RTSP, because the camera offers no audio backchannel there. For talking through the camera you still need the Tuya app.

    Firmware updates can break RTSP

    Budget cameras like this sometimes lose or change RTSP behavior after a cloud firmware update. Once everything works, consider blocking the camera’s internet access in your router or firewall. You lose the Tuya app’s remote view and updates, but the local stream stays exactly as it is. Only do this after you have confirmed the local setup, and keep a note of how to undo it.

    Night vision and IR

    In IR night mode the image turns grayscale. If you run any image analysis on it, plan for that, since color based logic stops working at night.

    Android apps

    For quick viewing on a phone, any RTSP player works with the stream1 URL. ONVIF IP camera apps can usually auto-discover the camera, and lightweight players like StreamShow handle the URL fine. The Home Assistant Companion app works too once the camera is in Home Assistant.

    Common pitfalls

    • Wrong port: 554 is closed. Use 8554.
    • Wrong path: use /stream0 or /stream1, not /main, /sub or /onvif1.
    • Wrong credentials: the username is admin, the password is the one set in the ONVIF section, and it needs a capital letter.
    • Too soon: wait a minute or reboot after enabling ONVIF.
    • Gray or smeared frames: switch the transport to TCP, and make sure only one client reads each stream directly.
    • Special characters in the password: characters like @ or : break the URL. Stick to letters and numbers.

    Frequently Asked Questions

    What is the RTSP URL for the MoesHouse Tuya 4MP camera?

    rtsp://admin:PASSWORD@CAMERA_IP:8554/stream0 for the main 4MP stream and the same URL with /stream1 for the 640×360 sub stream. The password is the one you set in the ONVIF section of the Tuya app.

    Why does port 554 not work on this Tuya camera?

    This model serves RTSP on port 8554. Port 554 is closed, which you can confirm with nmap -p 554,8554 followed by the camera IP.

    How do I add a Tuya camera to Home Assistant without the cloud?

    Enable ONVIF in the Tuya app, then add the Generic Camera integration in Home Assistant with the RTSP URL as the stream source and TCP as the transport. The stream then runs fully on your local network.

    Why does my camera stream freeze when Frigate and Home Assistant both use it?

    The camera handles one client per stream path. Run go2rtc as a restreamer so it holds the single connection to the camera, and point Home Assistant and Frigate at go2rtc.

    Does two-way audio work over RTSP on this camera?

    No. The sub stream includes audio from the camera, but there is no local backchannel for talking back. Two-way audio needs the Tuya app.

    Related guides

    Ad

    About us

    The Home Smart Home Team

    One house and a Home Assistant setup that grew one device at a time. Everything here was set up in that house first, in plain steps, and when something breaks the fix ends up in a post.

    More about us

    Leave a comment

    Your email address will not be published. Required fields are marked *

    This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

    Coming soon
    The ready-made Home Assistant dashboard
    One email when it's ready, with an early-bird price. No spam. Privacy