INTERACT FORUM
Devices => Engen -- Home Automation with Z-Wave => Topic started by: astromo on February 21, 2019, 05:06:40 am
-
As per the subject, how to do this ... ?
I'm using MC25 and I want to set up a shortcut on the desktop so that I can switch off three different switches with one click.
I found this piece of intel from a search (hopefully I haven't missed the obvious):
https://yabb.jriver.com/interact/index.php/topic,105422.0.html (https://yabb.jriver.com/interact/index.php/topic,105422.0.html)
but I'm not seeing sub-folder /Engen1/ under the JRiver/Media Center 25/ program folder. I gather it was withdrawn at some stage in the past and the thread is simply out of sync?
I can see the limited detail at <IdPi Address>:52125/docs but I'm not sharp enough to make what I want to do happen from that advice without a whole heap of trial and error. The Wiki normally offers a start but not in this case.
When I run <IdPi Address>:52125/api/v1/nodes/ I get the following (trimmed down for convenience):
>result
0:5
association
1
command_list {}
info {}
name {}
nodes
maxnode 5
nodes
0 1
2
command_list {}
info {}
name {}
nodes
maxnode 5
nodes []
association_groupings
groupings 2
basic {}
...
ident
address "0:5"
name "ACA 2"
manufacturer_specific
manufacturer_id "aeon_labs"
product_id 96
product_type_id 515
...
generic_type "switch_binary"
listening true
security 28
sensor1000 false
sensor250 false
specific_type "power_switch_binary"
switch_binary
value false
I've tried executing:
http://<IdPi Address>:52125/api/v1/nodes/5/switch_binary/value/true
which seems logical to me given what I know but I get nothing from the switch and this from the browser:
{
"params": {},
"response": "0.00755",
"result": {
"error": "An internal error occurred.",
"info": "result must be present"
},
"url": "http://<IdPi Address>:52125/api/v1/nodes/5/switch_binary/value/true",
"url_path": "/api/v1/nodes/5/switch_binary/value/true"
}
Thanks in advance for any useful advice.
-
Found some clues from further searching (but no result).
I tried http://<IdPi Address>:52125/api/v1/nodes/5?name=switch_binary&value=true and got this in response:
params
name "switch_binary"
value "true"
response "0.00456"
result
association
1
command_list {}
info {}
name {}
nodes
maxnode 5
nodes
0 1
2
command_list {}
info {}
name {}
nodes
maxnode 5
nodes []
association_groupings
groupings 2
basic {}
color_supported
colors
0 "red"
1 "green"
2 "blue"
configuration {}
health
command_ack_time
0 0.027976130761362177
1 "s"
2 "green"
command_error_rate
0 0
1 "%"
2 "green"
command_response_time
0 0.02094023721789946
1 "s"
2 "green"
commands_per_minute
0 26.466583024685118
1 ""
2 "green"
log 0
report_dup_rate
0 0
1 "%"
2 "green"
reports_per_hour
0 0
1 ""
2 "green"
response_dup_rate
0 2.658437009489782
1 "%"
2 "green"
response_error_rate
0 0
1 "%"
2 "green"
response_success_rate
0 100.05399279244192
1 "%"
2 "green"
ident
address "0:5"
name "ACA 2"
manufacturer_specific
manufacturer_id "aeon_labs"
product_id 96
product_type_id 515
meter
A
meter "electric"
precision 3
rate "import"
scale "A"
size 4
value 0
V
meter "electric"
precision 3
rate "import"
scale "V"
size 4
value 239.313
W
meter "electric"
precision 3
rate "import"
scale "W"
size 4
value 0
kWh
meter "electric"
precision 3
rate "import"
scale "kWh"
size 4
value 1.291
meter_supported
meter "electric"
reset 1
scales
0 "kWh"
1 "W"
2 "V"
3 "A"
node_info
cmdclasses
0 "zwaveplus_info"
1 "switch_binary"
2 "switch_multilevel"
3 "switch_color"
4 "configuration"
5 "switch_all"
6 "meter"
7 "clock"
8 "association"
9 "association_grp_info"
10 "manufacturer_specific"
11 "version"
12 "firmware_update_md"
13 "powerlevel"
controlclasses
0 "device_reset_locally"
1 "hail"
protocol
basic_type "routing_slave"
cap 83
generic_type "switch_binary"
listening true
security 28
sensor1000 false
sensor250 false
specific_type "power_switch_binary"
switch_binary
value false
switch_color
blue
value 27
green
value 20
red
value 27
switch_multilevel
value 0
version
application 1
application_subversion 1
library "slave_enhanced"
protocol 4
protocol_subversion 54
version_command
association
version 2
association_grp_info
version 1
clock
version 1
configuration
version 1
firmware_update_md
version 2
manufacturer_specific
version 2
meter
version 3
powerlevel
version 1
switch_all
version 1
switch_binary
version 1
switch_color
version 1
switch_multilevel
version 2
version
version 2
zwaveplus_info
version 2
url "http://<IdPi Address>:52125/api/v1/nodes/5?name=switch_binary&value=true"
url_path "/api/v1/nodes/5"
At least no error but, still no result.
-
Did you try adding a scene in Panel?
-
Did you try adding a scene in Panel?
No, because:
- a Scene will flick the switch at the same time. I'm turning off a pre-amp and two power amps. Good practice recommends turning off the power amps first, then the pre-amp to minimise speaker thump. So, what I'm after is to run a sequence of steps with a time delay in between.
- This still doesn't address the question of how to run this as script/batch file that I can associate with a desktop icon. If I can get the URL command to work, then I could potentially enlist this kind of thinking to get the job done - https://stackoverflow.com/questions/36947181/execute-a-url-from-a-command-line-without-opening-a-browser-in-windows (https://stackoverflow.com/questions/36947181/execute-a-url-from-a-command-line-without-opening-a-browser-in-windows)
I realise that there's probably scope to use PowerPlay to run a shutdown action when I stop playback or move away from my playback zone but this seems a bit brutal if I'm just wanting to quickly change tack, when I know I'll head back to music playback.
-
The urls look wrong.
Device off:
http://<IdPi Address>:52125/alpha000/basic_set?node=<node of device>&value=0
Device on:
http://<IdPi Address>:52125/alpha000/basic_set?node=<node of device>&value=1
You can find the device node from the Engen Panel, I think. [Edit: it's in the 'address:' field in your previous calls, looks like you want node 5.]
If I recall, this just about was the first functionality built into Engen, the thread with this info is somewhere in the early days. There are a lot of scripting possibilities available, type
http://<IdPi Address>:52125/alpha000/
for a very basic API.
Probably goes without saying dude, but all ip addresses are in your LAN.
-
I found when I was building a number of Engen events into my Home Assistant setup that the alpha000 was much slower to update the state of the device vs the /api/v1/. That might have been a random thing, but I moved to using the api address instead with post events. If you can do that, it might be better:
rest_command:
engen_api:
url: http://<engenIP>:52125/api/v1/nodes/{{ node }}/{{ path }}
method: POST
headers:
content-type: application/json; charset=UTF-8
payload: '{{ value }}'
{
"node": 3,
"path": "switch_binary/value",
"value": 1
}
-
Hoyt, if you had time could you write the syntax for a couple examples using the API?
For example, I'm trying to turn a scene on and off called Outside.
This works:
curl -s 'http://192.168.1.200:52125/alpha000/scene?name=Outside'
But this doesn't:
curl -s 'http://192.168.1.200:52125/api/v1/scenes/Outside/on'
Also, do you know a good resource I can read to learn how to make sense of POST and GET commands? Thanks a lot, cheers!
-
Sorry I didn't see this earlier. Your curl isn't posting any data. When you call an API that expects POST data, you need to do it with the --data parameter for a curl command line request. I haven't done much with scenes, but I just tried this and it worked:
curl --data '' http://192.168.2.12:52125/api/v1/scenes/Living%20Room%20Fan%20Light%20On/on
That's odd and not how I have any of my switches setup, but I haven't done much with scenes, so perhaps they're different. Typically what I do with an individual switch is this (I have to include header data or I get an error):
curl --data '{"value":0}' --header "content-type: application/json; charset=UTF-8" http://192.168.2.12:52125/api/v1/nodes/0:4/switch_binary
You asked about how to figure this out, and what I typically do is open up Chrome, open the developer tab, and hit the links, then view the information to see what Engen's page just did. Then I try to mimic that in a curl command. Once I get it all worked up, then I'll put it into whatever other program I'm using to actually send the data to Engen.
Hopefully that helps a bit. I'm sure JRiver can answer a lot more questions about how the API works than I can, I've just figured out how to mess around with and figure out what works for me...
-
Thanks for the responses.
I'll give this a digest and see what I can work out.
Don't be surprised if I ask follow on questions.
-
hoyt, thanks for posting the correct Engen curl commands above. Finally had some time to try them and they worked as expected.
Cheers!
-
Just to round this out for my future reference, this is what I found worked from drmimosa's intel via a Window's cmd command line:
Turn Switch On:
curl -s "http://<IdPi Address>:52125/alpha000/basic_set?node=<node of device>&value=1"
Turn Switch Off
curl -s "http://<IdPi Address>:52125/alpha000/basic_set?node=<node of device>&value=0"
hoyt's advice didn't work for me ... yet.
-
Just to round this out for my future reference, this is what I found worked from drmimosa's intel via a Window's cmd command line:
Turn Switch On:
curl -s "http://<IdPi Address>:52125/alpha000/basic_set?node=<node of device>&value=1"
Turn Switch Off
curl -s "http://<IdPi Address>:52125/alpha000/basic_set?node=<node of device>&value=0"
hoyt's advice didn't work for me ... yet.
I should have pointed out that what I do is typically on mac or linux. So it very well could be different using window's curl command... I can't say I've ever tried that. My only windows desktop these days is my MC server itself.
It also may be different using the alpha000 vs the api/v1 location. I had a number of things setup with alpha000, but when I tried to get the status of the event (ie, turn on the lights, and now check to see if the lights are on to toggle the light on switch), I noticed a good delay. When I got the api/v1 address working, the response was much faster.
I do clarify all of this by saying, I don't really know what I'm doing, I just guess and figure out what works :)