V380s Camera

oh. thank you. I did port forward but still no respond.

anyway thank you very much for your help.

I gave up.

im using esp32 cam with home assistant.

thank you again

Finally with success over v380 camera. now im running on zoneminder.

thank you

Thanks! It helps me. I have another cam:

sdever-1080P-Wi-Fi.jpg_Q90.jpg_

I configure it only after port scanning. Rtsp works on 554 port so default link is rtsp://admin:123456@ipaddress:554/live/ch00_1
Link to image like http://ipaddress/jpg/image.jpg does not works. 80 port is closed…

1 Like

Reporting here the status of my V380 Pro Outdoor ONVIF 2-way sound camera for anyone’s benefit - i will update this post as i discover new things.

1. Installation

Managed to configure it with the standard ONVIF integration from UI; the trick was to set in its configuration dialog (apart from its IP):

port: 8899

Stream_0 was ok (HD), but the auto-detected stream_1 cam up as disabled; after manually enabling it from the “entities” configuration page, it worked flawlessly, with reduced resolution, as it should (hence, lower latency).

2. Streaming performance

The latency is significant, ~7sec, while in my mobile-app it’s close to ~2 sec, so i guess the later is using WebRTC (instead of ffmpg used by hass, i guess).

3. PTZ

With latest hass-containerd 2021.6.4, ONVIF has been improved not to throw any warnings.
(maybe PTZ had been recognized with previous version 2021.5.5, but didn’t know how to install it - absence of warnings made my bolder).

For the PT-controls (no Zoom, my camera probably doesn’t have it), i adapted the picture-elements card found at the bottom of amcrest-camera, pasted below.

Note that only move_mode: ContinuousMove is supported, both RelativeMove & AbsoluteMove issue unsupported warning-logs - have no idea how to setup GotoPreset mode.

type: picture-elements
entity: camera.v380_1_stream0_0
camera_image: camera.v380_1_stream0_0
camera_view: live
elements:
  - type: icon
    icon: mdi:arrow-up
    style:
      background: rgba(255, 255, 255, 0.35)
      right: 25px
      bottom: 50px
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        device_id: 7138caad78f448c6678e1029c2992983
        move_mode: ContinuousMove
        tilt: UP
  - type: icon
    icon: mdi:arrow-down
    style:
      background: rgba(255, 255, 255, 0.35)
      right: 25px
      bottom: 0px
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        device_id: 7138caad78f448c6678e1029c2992983
        move_mode: ContinuousMove
        tilt: DOWN
  - type: icon
    icon: mdi:arrow-left
    style:
      background: rgba(255, 255, 255, 0.35)
      right: 50px
      bottom: 25px
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        device_id: 7138caad78f448c6678e1029c2992983
        move_mode: ContinuousMove
        pan: LEFT
  - type: icon
    icon: mdi:arrow-right
    style:
      background: rgba(255, 255, 255, 0.35)
      right: 0px
      bottom: 25px
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        device_id: 7138caad78f448c6678e1029c2992983
        move_mode: ContinuousMove
        pan: RIGHT
  - type: icon
    icon: mdi:arrow-top-left
    style:
      background: rgba(255, 255, 255, 0.35)
      right: 50px
      bottom: 50px
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        device_id: 7138caad78f448c6678e1029c2992983
        move_mode: ContinuousMove
        tilt: UP
        pan: LEFT
  - type: icon
    icon: mdi:arrow-top-right
    style:
      background: rgba(255, 255, 255, 0.35)
      right: 0px
      bottom: 50px
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        device_id: 7138caad78f448c6678e1029c2992983
        move_mode: ContinuousMove
        tilt: UP
        pan: RIGHT
  - type: icon
    icon: mdi:arrow-bottom-left
    style:
      background: rgba(255, 255, 255, 0.35)
      right: 50px
      bottom: 0px
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        device_id: 7138caad78f448c6678e1029c2992983
        move_mode: ContinuousMove
        tilt: DOWN
        pan: LEFT
  - type: icon
    icon: mdi:arrow-bottom-right
    style:
      background: rgba(255, 255, 255, 0.35)
      right: 0px
      bottom: 0px
    tap_action:
      action: call-service
      service: onvif.ptz
      service_data:
        device_id: 7138caad78f448c6678e1029c2992983
        move_mode: ContinuousMove
        tilt: DOWN
        pan: RIGHT
  - type: icon
    icon: mdi:camera
    title: 'TODO: snapshot (in SD?)'
    style:
      background: rgba(255, 255, 255, 0.35)
      bottom: 25px
      right: 25px
    tap_action:
      action: call-service
      service: camera.record
      service_data:
        device_id: 7138caad78f448c6678e1029c2992983

4. Recording

Not configured yet (yet :frowning:), therefore the middle-button, above, does not work.

I would love to record through WebRTC (see below), for lower latency.

5. Capture sound from Mic / Speak to Loudspeaker

My V380 has 2-way sound capability, but VLC cannot play the received sound-stream
Have no idea how to send sound to camera’s loudspeaker.

For receiving the sound, i’m experimenting with WebRTC HACS integration

6. Logs

Pasting below my debug logs (from 2021.5.5, with 2021.6.4 warnings have gone!), for future reference.
Note that no user/pswd was needed (tried also with username: admin, nothing changed).

homeassistant    | 2021-05-25 10:37:13 DEBUG (MainThread) [homeassistant.components.onvif] Starting ONVIF discovery
homeassistant    | 2021-05-25 10:37:16 DEBUG (MainThread) [homeassistant.components.onvif] Discovered ONVIF devices []
homeassistant    | 2021-05-25 10:38:21 DEBUG (MainThread) [homeassistant.components.onvif] Fetching profiles from ONVIF device {'host': '192.168.1.123',
homeassistant    |  'name': 'V380-1',
homeassistant    |  'password': '',
homeassistant    |  'port': 8899,
homeassistant    |  'username': ''}
homeassistant    | 2021-05-25 10:38:23 DEBUG (MainThread) [homeassistant.components.onvif] Couldn't get network interfaces from ONVIF deivice 'V380-1'. Error: Method 'ns0:GetNetworkInterfaces' not implemented: method name or namespace not recognized
homeassistant    | 2021-05-25 10:38:25 DEBUG (MainThread) [homeassistant.components.onvif] Setting up the ONVIF device management service
homeassistant    | 2021-05-25 10:38:25 DEBUG (MainThread) [homeassistant.components.onvif] Retrieving current device date/time
homeassistant    | 2021-05-25 10:38:25 DEBUG (MainThread) [homeassistant.components.onvif] Device date/time: 2021-05-25 07:03:26+00:00 | System date/time: 2021-05-25 08:38:25.571230+00:00
homeassistant    | 2021-05-25 10:38:25 DEBUG (MainThread) [homeassistant.components.onvif] Couldn't get network interfaces from ONVIF device 'V380-1'. Error: Method 'ns0:GetNetworkInterfaces' not implemented: method name or namespace not recognized
homeassistant    | 2021-05-25 10:38:27 INFO (MainThread) [homeassistant.components.camera] Setting up camera.onvif
homeassistant    | 2021-05-25 10:38:27 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new camera.onvif entity: camera.v380_1_stream0_0
homeassistant    | 2021-05-25 10:38:27 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new camera.onvif entity: camera.v380_1_stream0_1
homeassistant    | 2021-05-25 10:38:27 INFO (MainThread) [homeassistant.components.camera] Not adding entity V380-1 - stream0_1 because it's disabled
homeassistant    | 2021-05-25 10:39:08 INFO (MainThread) [homeassistant.components.stream] Started stream: rtsp://****:****@192.168.1.123/live/ch00_1
5 Likes

Great post! I could see the stream by rtsp, but not with ONVIF, using the port you refered changed all! Finally can pan and tilt the cam with your code! :smiley:
Any more progress on other features? Thanks, @ankostis !

Could you please specify if you did any changes to the settings in the camera app (V380 Pro) compared to factory settings?
Also, how did you obtain the device_id? I guess this is just the entity_id

Actually getting the device-id was the hardest part. If i remember correctly, i fished itoutr of the logs, but please do post here how you did it, when you find out.

I setup the device integration according to your instructions, entering name, IP, port. then from Configuration → Devices I selected the newly added camera and copied the name (name of the stream entity, without the ‘_stream0_0’ part).
Your example for a picture elements card works for me just by replacing the entity, but my camera is a bit different - a light-bulb type with 360 view, so I don’t actually need the arrow keys and commands.
What I’d like to do is find a way to turn the LED light in the camera. I think I remember reading somewhere I how to get telnet/root access… once I do that I’ll probably expose the light as a command_line switch in HA.
Do you have any progress with the WebRTC integration for audio and/or recording?

Unfortunately not in my case.
But i applied my instructions to a friends camera and recording also just worked. In that case, we used the authenticated url (user/paswwd) we had discovered through some Windows driver/utility.

I can successfully record video to a file using the Dev tools (calling the service camera: record with one of the stream entities as a target and a file path in i.e. media)
I’ll test for audio in the evening.

For anyone have difficulties or problems with this i tried for 3 days and it didn’t work. I got the camera from Aliexpress the bullet one peephole camera with v380 pro software. I asked the seller but he wasn’t helpfull. So i just asked a different seller, and he helpt me like in couple minutes. He send me the file and it works like a charm. I did’t open any ports or anything. The seller of the ZSCAM Official Store, shout out to him he helpt me, the Small angle Store seller didn’t help a bit. But the solution is like this:

Make a ceshi.ini file with notepad with this inside:
[CONST_PARAM]
rtsp=1 ; 1是开启,0是关闭

save and after this put this file on the root of your sdcard. Put it in the camera while it’s on. After you put in the card, turn off the camera, i just pulled the power cord and waited for 30 seconds, ( it is wat i did, it is not in the instructions) after that i gave the camera power again. And some camera’s you should here a chinese voice, mine has no speaker built in, so i waited the regular booting time, it’s one minute for mines, but to be safe i waited 3 minutes or so. Then when still on pulled the sd card out again. and formated it on my laptop, so if you want to keep the images make a backup, you can just delete the ceshi file but i wanted to be safe so formated it. After this put it back in the camera, and in the whole proces i didn’t open up the app, to be safe again. Now open up vlc or any other player and fill in the network path for the substream: rtsp://xxx.xxx.xxx.xxx/live/ch00_0 and for main stream: rtsp://xxx.xxx.xxx.xxx/live/ch00_1
THE XXX.XXX.XXX.XXX is the ipadres of your camera, you should put it in instead of the XXX’s. And voila, it works like a charm. Shout out again to ZSCAM Official Store, i am not related or something to them, but they helped me figuring this out in a couple minutes, where i was struggling for F$%^#$% 3 days. I hope this cleares some out for others, i was missing the chinese part of the ceshi file every where i look up on the net.

4 Likes

Reporting here thanks to the above I managed to get PTZ working: v380 pro, Indoor 8MP
Firmware versionHwV380E12_WF3_AKPTZ_Q6_20180628
unlocked with ceshi.ini as explained here above
new Android v380 Pro app > Advanced settings > Onvif setting > ON
HA Integration : Onvif
Configuration: UDP, port: 8899, fixed IP
live mainstream lag: ~10 sec
PTZ via Picture Elements Card Configuration:

type: picture-elements
camera_view: live
camera_image: camera.backcam_mainstream
title: v380 PTZ
elements:
  - type: icon
    icon: mdi:arrow-up
    style:
      background: rgba(255, 255, 255, 0.35)
      right: 25px
      bottom: 50px
    tap_action:
      action: call-service
      service: onvif.ptz
      target:
        entity_id:
          - camera.backcam_mainstream
      data:
        move_mode: ContinuousMove
        speed: 0.1
        distance: 0.1
        tilt: UP
  - type: icon
    icon: mdi:arrow-down
    style:
      background: rgba(255, 255, 255, 0.35)
      right: 25px
      bottom: 0px
    tap_action:
      action: call-service
      service: onvif.ptz
      target:
        entity_id:
          - camera.backcam_mainstream
      data:
        move_mode: ContinuousMove
        speed: 0.1
        distance: 0.1
        tilt: DOWN
  - type: icon
    icon: mdi:arrow-left
    style:
      background: rgba(255, 255, 255, 0.35)
      right: 50px
      bottom: 25px
    tap_action:
      action: call-service
      service: onvif.ptz
      target:
        entity_id:
          - camera.backcam_mainstream
      data:
        move_mode: ContinuousMove
        speed: 0.1
        distance: 0.1
        pan: LEFT
  - type: icon
    icon: mdi:arrow-right
    style:
      background: rgba(255, 255, 255, 0.35)
      right: 0px
      bottom: 25px
    tap_action:
      action: call-service
      service: onvif.ptz
      target:
        entity_id:
          - camera.backcam_mainstream
      data:
        move_mode: ContinuousMove
        speed: 0.1
        distance: 0.1
        pan: RIGHT
  - type: icon
    icon: mdi:arrow-top-left
    style:
      background: rgba(255, 255, 255, 0.35)
      right: 50px
      bottom: 50px
    tap_action:
      action: call-service
      service: onvif.ptz
      target:
        entity_id:
          - camera.backcam_mainstream
      data:
        move_mode: ContinuousMove
        speed: 0.1
        distance: 0.1
        tilt: UP
        pan: LEFT
  - type: icon
    icon: mdi:arrow-top-right
    style:
      background: rgba(255, 255, 255, 0.35)
      right: 0px
      bottom: 50px
    tap_action:
      action: call-service
      service: onvif.ptz
      target:
        entity_id:
          - camera.backcam_mainstream
      data:
        move_mode: ContinuousMove
        speed: 0.1
        distance: 0.1
        tilt: UP
        pan: RIGHT
  - type: icon
    icon: mdi:arrow-bottom-left
    style:
      background: rgba(255, 255, 255, 0.35)
      right: 50px
      bottom: 0px
    tap_action:
      action: call-service
      service: onvif.ptz
      target:
        entity_id:
          - camera.backcam_mainstream
      data:
        move_mode: ContinuousMove
        speed: 0.1
        distance: 0.1
        tilt: DOWN
        pan: LEFT
  - type: icon
    icon: mdi:arrow-bottom-right
    style:
      background: rgba(255, 255, 255, 0.35)
      right: 0px
      bottom: 0px
    tap_action:
      action: call-service
      service: onvif.ptz
      target:
        entity_id:
          - camera.backcam_mainstream
      data:
        move_mode: ContinuousMove
        speed: 0.1
        distance: 0.1
        tilt: DOWN
        pan: RIGHT
2 Likes

Thanks! Got it to work with the code provided. Audio and Recording not happening thou.

Web server for V380

I recently got these bunch of IP Cams for free…

These are cheap camera with false advertisement on it.

  • first the sensor is only 480p even though theres a 1080p watermark, rtsp stream only works upto 720p and obviously looks upscaled from 480p.
  • other features are not functional.
  • onvif also works but needs to be enabled using the smartphone app first after enabling rtsp on ceshi.ini
  • this cheap v380 camera works only reliably if there’s a DHCP server on the network, setting a static IP will also work but it constantly get disconnected for no reason it also gets a random 5 request time out while running a ping on the background. Its funny that as soon as I unplugged the network cable to my pfsense (that acts as DHCP server) waiting for about 10seconds and the v380 ip camera gets disconnected to the network, its still connected via wifi/ethernet but no icmp response, connect that ethernet cable back to pfsense and it goes back alive. Even if the network dont have (blocked) internet access as long as theres a DHCP server on the network, the v380 cam works just fine.

Has anybody found a good way to switch the ligth on/off? Assuming the v380-in-a-light-bulb option…

…cheap and all…they work…in my case 3 years already with hard cold winters, all inside although, but still, very reliable, …with HA 2023 is easier than ever with the onvif integration (port 8899) and that’s it, even ptz control works fine…I manage to have all my cameras into HA though zoneminder wich in my case works better in terms of realtime than onvif integration…I do use ptz control from onvif integration for this type of cameras…the only downside is the file thing you have to do to enable rtsp on the cameras, but is only 1 time…

i would like to thank you very much, i could connect to my v380 ptz camera by vlc player now, unfortunately i couldn’t add it to HA
once again thank you

Did you try to use the onvif integration to scan your network for it? You need to use the right password and username

hi, i have a firmware dump of a v380 blub e27 IoT WiFI smart camera.
360158459-63b1db17-480f-4e0c-99ab-037052d0f10c
this camera uses a T25S80 flash chip, with a XF16 P9141EA6AD1 SoC.
some part of UART shell:

wlan information ===================================================
firmware:
    version : R-XR_C10.08.52.64_01.80 Jul  6 2019 20:05:10-P01.46-R
    buffer  : 12
driver:
    version : XR_V02.05
====================================================================

PMA: wlan mode:a

platform information ===============================================
XRADIO Skylark SDK 1.2.0 Jun  7 2023 11:32:54

sram heap space [0x21e4c0, 0x25fc00), total size 268096 Bytes
cpu  clock 240000000 Hz
HF   clock  40000000 Hz

sdk option:
    XIP           : enable
    INT LF OSC    : enable

mac address:
    efuse         : a0:17:f1:98:84:e2
    in use        : 34:bc:87:f3:00:0d
====================================================================

im sure someone would need it here.
name: v380-blub-IoT-camera-firmware.bin
sha256: 28c1bd4fa632d7ba30148c0c51acd15a7844b90bb06db83e254c8be7c434cdb8
download link: Google Drive