Hello from a HomeSeer HS4 Refugee

@marthocoo @theadlee

Everything appears to be working with two bridges and with a single bridge.

The smoke test generated no smoke so I’d say it’s safe to move ahead.

Ken

This place is starting to look like Havana Harbor in 1980… hopefully I’m not too late to get a spot on the “boat” :slight_smile:.

Like many of you here I’m starting a migration to HA from HS3, and also purchased HS4. I frankly rather like 80% of HS3: it’s stable and powerful once you “get” the way it does things. I used to work with SAP software back in the day, and it was similar: horrible UI/UX, completely non-intuitive, but once you understood how it worked, it was very powerful.

The lingering problem I’ve had is that the mobile interfaces absolutely stink. HS Touch is something only a Windows 3.1 developer could love, and the mobile app started out OK, but then quickly died. Mine now requires you to hit the “device” tab before any of the dashboards work, and it just looks substandard and there’s no updating/fixing in sight. Looking at HS4, it looks like the UI/UX isn’t going to be fixed, and it still seems to be in the “science project” stage. If I’m going to have to do a science project, I’d rather do it with a system that provides a quality UI/UX and is based on modern technologies vs. Mono and VB/C#. There’s also the problem with plugins where authors disappear (My location subsystem fell victim to PHLocation), etc.

Like many of you, I have a bunch of ZWave devices across 2 Z-Nets (one in the house and one in a detached building) and also a “legacy” HAI Omnipro I’ll need to figure out how to integrate. My plan is to get the Omnipro into HA, then get HA and HS3 talking for Z-Wave, and then gradually start migrating everything over. I’ve done some stuff with MQTT and Nodered in my existing HS3, so not completely unfamiliar with those, so I’m hoping that helps smooth the learning curve a bit.

Thanks to everyone here sharing their experiences.

@Slappy - you should give my custom component a try, it should make MQTT unnecessary. And @kenm has been doing a great job at helping HomeSeer refugees troubleshoot and get their HA setups working!

@marthocoo it’s definitely on my list. I was able to get my OmniPro into HA a bit easier than expected. The docker container worked well, and I was able to turn lights on and off with great response (about half my lights are HAI Omni and the other half ZWave, I appear to love dead-end technologies).

My big next step is to spend some time messing with Lovelace, since adding the Omni “puked” a whole ton of items onto my dashboard that I need to figure out how to organize and cleanup although it looks like there is a ton of documentation on that aspect of HA available.

@marthocoo - MQTT can still be useful for non-Zwave devices in HS that you don’t want to migrate right way to HA. You can still take advantage of the UI by passing the status and control via MQTT.

@marthocoo – I’m trying to get your component working and am probably making a total rookie mistake, but after an hour of googling I’m coming up empty…

This is my first manually installed custom component (I installed HACS successfully) so there’s probably a basic step. I followed the instructions exactly, installing the terminal, going into /config/custom_components (it already existed), doing a git pull, and successfully getting the homeseer directory created with permissions matching my other two custom_components.

I added (via copy/paste and then manually typing everything to make sure I didn’t mess up the YAML) the config from the readme.md, but when I check config I always get:

Component error: homeseer - Integration 'homeseer' not found.

Here’s my configuration.yaml. Probably something silly I missed but googling “integration not found” led me down all manner of rabbit holes, none of which had the carrot I was seeking:


# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

# Text to speech
tts:
  - platform: google_translate

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

climate:
  - platform: honeywell
    username: !secret honeywell_username
    password: !secret honeywell_password

homeassistant:
  packages: !include_dir_named packages

homeseer:
  host: 192.168.50.10
  namespace: hs3vm
  http_port: 80
  ascii_port: 11000
  username: !secret homeseer_username
  password: !secret homeseer_password
  name_template: '{{ device.name }}'
  allow_events: True

That error indicates that something isn’t right with the way the homeseer directory is in custom_components… try deleting and re-cloning. Sometimes a few restarts of HA may be needed.

Ah-ha! So I repulled and re-checked config and got the same error. I then removed the homeseer: section from configuration.yaml and restarted. Now when I add the lines it worked fine. I guess (and I probably should have tried this) that Home Assistant caches anything in custom_components when it loads. My “invalid configuration” was preventing a reload, so I couldn’t get the new component cached, creating a self-imposed loop of death.

Perhaps for the total newbies add a step between 2 and 3 to restart Home Assistant before updating configuration.yaml.

Probably obvious, but hopefully this helps someone.

I’ve seen this a few times but never got the chance to dig in and figure out why. It has something to do with manually installing a custom component. I can reproduce the same error with a simple “hello world” custom component.

I suspect the data source the configuration checker uses doesn’t know about manually installed custom compoents until there’s a restart.

Component is working well thus far! Only problem I’ve found is only 1 of 3 zwave locks responds to commands, and seems to be the last lock created (assuming they’re named in HA sequentially). I’ve logged this in github with the error message but let me know if you need any additional info or testing.

Please add the following to your configuration.yaml file and restart HA.

logger:
  default: info
  logs:
    homeassistant.core: debug
    asyncio: debug
    custom_components.homeseer: debug
    pyhs3: debug

This should provide @marthocoo with the debug info needed to investigate. Are you running HS3 or HS4? Also, can you post the Device Type (String) values for one of your locks? I don’t use Z-Wave locks, but I might be able to create a similar virtual device for debug.

Hi !

I am pretty sure one day i’ll make to move.

2 questions:

1.I am better to learn python or yaml formatting before doing the move?
2. In Hs3-4 devices hold the value and strings( in hs4 it is named status) after a restart. Is Home assistant doing the same?
( I saw a system ( Jeedom) loading states of devices in ram …and waiting for new info to come in to update the devices state)

I’m running HS3. So once I turned on logging there are a few interesting things going on. First off, I get a few “unsupported device” errors that look like this:

2020-11-17 07:27:08 DEBUG (MainThread) [pyhs3.const] HomeSeer update received for unsupported device: 854
2020-11-17 07:27:09 DEBUG (MainThread) [pyhs3.const] HomeSeer raw ASCII message received: b'DC,854,8.678287,7.877816\r\n'

Device 854 is a timer with Device Type string “Timer.” I’m not sure if this matters or not but this was all over my log.

Here’s what a successful unlock operation looks like with the one lock that works. Device type is Z-Wave Door Lock:

2020-11-17 07:33:11 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event call_service[L]: domain=lock, service=unlock, service_data=entity_id=lock.door_lock_3>
2020-11-17 07:33:11 DEBUG (MainThread) [pyhs3.const] HomeSeer request response: {"Name":"HomeSeer Devices","Version":"1.0","Devices":[{"ref":563,"name":"Door Lock","location":"Workshop","location2":"Locks","value":255.0,"status":"Locked","device_type_string":"Z-Wave Door Lock","last_change":"\/Date(1605540016852-0500)\/","relationship":4,"hide_from_view":false,"associated_devices":[560],"device_type":{"Device_API":4,"Device_API_Description":"Plug-In API","Device_Type":0,"Device_Type_Description":"Plug-In Type 0","Device_SubType":98,"Device_SubType_Description":""},"device_type_values":null,"UserNote":"","UserAccess":"Any","status_image":"/images/HomeSeer/status/locked.gif","voice_command":"","misc":4864,"interface_name":"Z-Wave"}]}

And here is a lock/unlock attempt to one of the two locks that does NOT work:

2020-11-17 07:36:51 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event call_service[L]: domain=lock, service=lock, service_data=entity_id=lock.door_lock_2>
2020-11-17 07:36:51 ERROR (MainThread) [pyhs3.const] HomeSeer HTTP Request error: Invalid variable type: value should be str or int, got None of type <class 'NoneType'>

Nothing appears in the Homeseer logs for the unsuccessful lock. I can’t figure out how to turn debug logging on/off in Homeseer and their forums are down. If there’s a way to do that I will add logging from the HS side.

And after much goofing around to do something seemingly simple (turning on the homeseer logs), here’s what’s happening in HS3 on a successful lock operation:


2020-11-17_08:51:39:9007: ======================================================
===
2020-11-17_08:51:39:9011: Read Start: Data Arrival #243
2020-11-17_08:51:39:9014: Read Start: From IP=192.168.HOMEASSISTANT
2020-11-17_08:51:39:9017: Read Start: Data Length=238
2020-11-17_08:51:39:9022: Read Start: Data (Up to 50)=GET /JSON?request=controld
evicebyvalue&ref=563&val
2020-11-17_08:51:39:9025: ======================================================
===
2020-11-17_08:51:39:9030: Read: Getting headers.
2020-11-17_08:51:39:9038: Read_Headers: Getting Headers
2020-11-17_08:51:39:9041: Read_Headers: Processing...|||GET /JSON?request=contro
ldevicebyvalue&ref=563&value=255 HTTP/1.1|||
2020-11-17_08:51:39:9044: Read_Headers: Processing...|||Host: 192.168.HOMEASSISTANT|||
2020-11-17_08:51:39:9047: Read_Headers: Processing...|||User-Agent: HomeAssistan
t/0.117.6 aiohttp/3.6.2 Python/3.8|||
2020-11-17_08:51:39:9052: Read_Headers: Processing...|||Accept: */*|||
2020-11-17_08:51:39:9056: Read_Headers: Processing...|||Accept-Encoding: gzip, d
eflate|||
2020-11-17_08:51:39:9059: Read_Headers: Processing...|||Authorization: REMOVED|||
2020-11-17_08:51:39:9062: Read_Headers: Processing...||||||
2020-11-17_08:51:39:9065: Read_Headers: No Data
2020-11-17_08:51:39:9068: Checking if local IP address
2020-11-17_08:51:39:9073: Read_Authorization: Found Authorization Header
2020-11-17_08:51:39:9076: Read_Authorization: Found BASIC Authorization, Checkin
g User and Pass
2020-11-17_08:51:39:9080: Read_Authorization: User/Pass ACCEPTED, Checking Timeout
2020-11-17_08:51:39:9083: Read_Authorization: User/Pass ACCEPTED, Not Timed Out
2020-11-17_08:51:39:9086: tcpserver_Read->GET GET /JSON?request=controldevicebyvalue&ref=563&value=255 HTTP/1.1
2020-11-17_08:51:39:9092: GetFormData: Processing Form Data of length: 46 from Index=243
2020-11-17_08:51:39:9099: tcpserver_Read->get page /JSON?request=controldevicebyvalue&ref=563&value=255
2020-11-17_08:51:39:9113: 11/17/2020 8:51:39 PM~STATUS DEBUG~08:51:39:9111: Device: Locks Workshop Door Lock to Lock (255) by/from: CAPI Control Handler
2020-11-17_08:51:39:9121: 11/17/2020 8:51:39 PM~Device Control~Device: Locks Workshop Door Lock to Lock (255) by/from: CAPI Control Handler
2020-11-17_08:51:39:9131: 11/17/2020 8:51:39 PM~EVENT DEBUG~08:51:39:9129: 08:51:39:9129 Queuing Exec Action(s) - count is 1 Queue size is: 0
2020-11-17_08:51:39:9154: 11/17/2020 8:51:39 PM~EVENT DEBUG~08:51:39:9144: 08:51:39:9144 Executing 1 Exec Action(s): Lock
2020-11-17_08:51:39:9168: 11/17/2020 8:51:39 PM~EVENT DEBUG~08:51:39:9160: Sending control to plugin Z-Wave
2020-11-17_08:51:39:9175: Calling SetIOMulti:Z-Wave
2020-11-17_08:51:39:9276: 11/17/2020 8:51:39 PM~EVENT DEBUG~08:51:39:9273: Plugin control took 11 milliseconds
2020-11-17_08:51:39:9485: -------------------
2020-11-17_08:51:39:9488:   Read: DONE EXIT
2020-11-17_08:51:39:9493: -------------------
2020-11-17_08:51:39:9494: Exit  ServerRead (Index: 243)

There is no equivalent “Read State: Data Arrival” block in the HS3 logs for the unsuccessful lock/unlock operations that throw the “Invalid variable type” error on the HA side, leading me to believe the operation errors out in HA in pyhs3 somewhere before the call to HS3 is even made.

The “Device Ref” in HA does indeed match the HS3 “Reference ID” so it appears that all should be well but my suspicion is that somehow the device was improperly created in HA and that’s breaking pyhs3 although that’s a largely uninformed theory on my part.

Can you post logs of when HA starts up and the devices are created? There should be some useful logging there that shows what values are being returned from the HS API.

Hi
A new user of HA have use homeseer for many years now. but have started to use Ha for UI.
I have discover if you change Device Type (String) to a matching Z-wave function then you can use any device in you system.
My system are relay board base with arduino and the arduino plugin.
I have change my arduino outputs device type to z-wave switch instead of arduino output. work good HA discover this units and i can control them.
But the on/off function in this arduino plugin need to be inverted to send a high signal to relay board.
So when i click on button i homesser it change device value to 0 and when i push off it send 1
when i read under advance tab in homeseer on status it say off for 0 and Dim for 1
That give me the problem to get correct status in HA.
Status in HA it just toggle very fast between on and off.

I was wondering where in the light.py and switch.py i can invert the status read and report to HA so i get it working.

Hope you understand my english and my problem.

Hi David (@Daarn),

I’d advise caution when doing that and also advise you to thoroughly test each new device. Pyhs3 was written for and tested only with Z-Wave devices so you are in uncharted waters.

My question is “Why not just use the arduino integration in HA to control the relay board?”.

That being said, carry on.

Hello- Did you ever get your hsm200 to work in HA? I’m having the same issue.

I did not get it working after my initial attempt and really haven’t tried after that. It’s pretty much just a night light now :frowning:

Hi
Ken
I also use one-wire and servo with arduino haven’t seen any arduino integration here that works with that yet