ieGeek IP C7837WIP cameras with Home Assistant

Hi,

I have been struggling to get this IP camera working with Home Assistant. I have tried ONVIF and RTSP, and am not sure that I’m using the correct configuration.

The camera is https://www.amazon.co.uk/gp/product/B06XJ5CWB8/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1

Here are my configuration attempts under camera:

  • platform: ffmpeg
    input: rtsp://192.168.1.83:10554/user=admin&password=redacted
    name: Patio door rtsp

  • platform: onvif
    name: Front porch ONVIF
    host: 192.168.1.85
    port: 10080
    username: admin
    password: redacted

I have three of these cameras and they work well with the vendor’s eye4 software and also with ONVIFER on an Android phone. I’ve tried obtaining port numbers from ONVIFER and putting them into configuration.yaml. I don’t know where I’m going wrong.

Many thanks to anyone who can help!

It may be due to a problem with Home Assistant’s ONVIF module:

   Traceback (most recent call last):
  File "/home/redacted_user/homeassistant/lib/python3.5/site-packages/suds/transport/http.py", line 78, in send
    fp = self.u2open(u2request)
  File "/usr/lib/python3.5/urllib/request.py", line 472, in open
    response = meth(req, response)
  File "/usr/lib/python3.5/urllib/request.py", line 582, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python3.5/urllib/request.py", line 510, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.5/urllib/request.py", line 444, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.5/urllib/request.py", line 590, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 400: Bad Request

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/redacted_user/homeassistant/lib/python3.5/site-packages/suds/client.py", line 652, in send
    reply = transport.send(request)
  File "/home/redacted_user/homeassistant/lib/python3.5/site-packages/suds/transport/http.py", line 178, in send
    return HttpTransport.send(self, request)
  File "/home/redacted_user/homeassistant/lib/python3.5/site-packages/suds/transport/http.py", line 86, in send
    raise TransportError(e.msg, e.code, e.fp)
suds.transport.TransportError: Bad Request

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/redacted_user/homeassistant/lib/python3.5/site-packages/onvif/client.py", line 34, in wrapped
    return func(*args, **kwargs)
  File "/home/redacted_user/homeassistant/lib/python3.5/site-packages/onvif/client.py", line 201, in wrapped
    return call(params, callback)
  File "/home/redacted_user/homeassistant/lib/python3.5/site-packages/onvif/client.py", line 191, in call
    ret = func(**params)
  File "/home/redacted_user/homeassistant/lib/python3.5/site-packages/suds/client.py", line 559, in __call__
    return client.invoke(args, kwargs)
  File "/home/redacted_user/homeassistant/lib/python3.5/site-packages/suds/client.py", line 618, in invoke
    result = self.send(soapenv)
  File "/home/redacted_user/homeassistant/lib/python3.5/site-packages/suds/client.py", line 664, in send
    result = self.failed(binding, e)
  File "/home/redacted_user/homeassistant/lib/python3.5/site-packages/suds/client.py", line 726, in failed
    raise Exception((status, reason))
Exception: (400, 'Bad Request')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/redacted_user/homeassistant/lib/python3.5/site-packages/homeassistant/helpers/entity_component.py", line 170, in _async_setup_platform
    SLOW_SETUP_MAX_WAIT, loop=self.hass.loop)
  File "/usr/lib/python3.5/asyncio/tasks.py", line 400, in wait_for
    return fut.result()
  File "/usr/lib/python3.5/asyncio/futures.py", line 293, in result
    raise self._exception
  File "/usr/lib/python3.5/asyncio/tasks.py", line 239, in _step
    result = coro.send(None)
  File "/usr/lib/python3.5/asyncio/coroutines.py", line 210, in coro
    res = func(*args, **kw)
  File "/home/redacted_user/homeassistant/lib/python3.5/site-packages/homeassistant/components/camera/onvif.py", line 49, in async_setup_platform
    async_add_devices([ONVIFCamera(hass, config)])
  File "/home/redacted_user/homeassistant/lib/python3.5/site-packages/homeassistant/components/camera/onvif.py", line 70, in __init__
    self._input = media.GetStreamUri().Uri
  File "/home/redacted_user/homeassistant/lib/python3.5/site-packages/onvif/client.py", line 36, in wrapped
    raise ONVIFError(err)
onvif.exceptions.ONVIFError: Unknown error: (400, 'Bad Request')

A workaround:

  1. Get the ip address of the camera (it is best if it uses a static ip address set by the .exe software)
  2. Get the port number of the http from
  3. Put the following in crontab * * * * * wget -O /mnt/sata/homeassistant_temporary/patio_door.jpg --user admin --password PASSWORD "http://192.168.IP.ADDRESS:PORT/snapshot.cgi?user=admin&pwd=PASSWORD" > /dev/null 2>&1
  4. The home assistant configuration line is

camera: - platform: local_file name: Patio door file_path: /mnt/sata/homeassistant_temporary/patio_door.jpg

Hi.
What is the Onvifer configuration?
I have the same IP cam…

I never got ONVIF working.

I think I used an android app to get the http address and port number of the camera and then eventually found the still_image_url by right clicking on a jpeg image. This goes into a generic platform with digest authentication as follows:

- platform: generic
  name: Camera location
  authentication: digest
  username: admin
  password: camera_password_set_via_Eye4_app
  still_image_url: http://ip.add.re.ss:port_number/snapshot.cgi?user=admin&pwd=camera_password_set_via_Eye4_app

Thank you for support…
What is the app for to get the port and the still_image?
The username is admin?
Only password is the same Eye4 app?