Open mitch7391 opened 2 years ago
this are some old notes I toke while I was running homebridge on windows with bash scripts. Perhaps they help.
"state_cmd": "C:\\Users\\Desktop\\onedrive\\nodejs\\homebridge-config\\cmd4scripts\\VolumeWinCurl.bat"
All of this info is old and can be wrong. I’m not very good in programming hope it helps a bit anyways.
HOMEBRIDGE-SETUP
PORTABLE INSTALL
Get binaries from node.js
cd to local install location then
test node.js -v and npm -v in install dir
use homebruidge -U "PATH TO CONFIG" to run homebridge
WITH Node.js Installer directories then for plugins are
C:\Users\AppData\Roaming\npm\node_modules
C:\Users\.homebridge\
NPM commands
npm outdated -g //check for outdated plugins
npm update -g //Installiert alle Updates
npm uninstall Pluginname -g //Deinstallieren eines Plugins
npm ls //Installierte Plugins anzeigen
HOMEBRIDGE-CMD4
DO NOT RUN AS SERVICE!
ALWAYS SPECIFY FULL PATH IN CONFIG statecmd for running homebridge in Linux subsystem
bash /mnt/c/Users/.homebridge/Cmd4Scripts/VOLUME.sh
Check EOL End of line versions use Unix(LF)! not windows(CRLF) for.sh scripts
more notes on bash
statecmd -> bash .homebridge/Cmd4Scripts/PS4.sh Get 'PS4' 'Brightness' //call script mit parametern $1 $2 $3 $4
ACHTUNG .sh dateien mit LF (linux standard) EOL (end of line) characters speichern!!
NICHT mit CRLF (windows standard)
IN VSCODE bottom right purple button
ODER NOTEPAD++ EOL conversion
ERROR message indicating wrong EOL endings "unexpected end of file"
ATENTION NOT EQUIVALENT!!
bash .../test.sh PARAMETER if [ "$1" = "..." ]
bash .../test.sh 'PARAMETER' if [ "$1" = "'...'" ]
@crbyxwpzfl thank you for your notes, I was hoping a user might be lurking the issues, find this and help me out :) I think in particular I was having issues with the file paths being path\to\bash\script.sh
, but then the config.json
requiring it in the format of path/to/bash/script.sh
and figured I was doing something wrong here. I will refer to your notes and try again; thank you!
just found a old config of mine. yes I remember having trouble with that too
perhaps escaping the command for json is the problem
I think escaping the path like this worked when running homebridge in a cmd window on windows with batch scripts
I used this tool a lot https://www.freeformatter.com/json-escape.html
"platform": "Cmd4",
"name": "Cmd4",
"accessories": [
{
"type": "Lightbulb",
"displayName": "volume",
"on": "FALSE",
"brightness": 10,
"stateChangeResponseTime": 1,
"state_cmd": "C:\\Users\\Desktop\\onedrive\\nodejs\\homebridge-config\\cmd4scripts\\VolumeWinCurl.bat"
}
perhaps something like tihs works for bash scripts
"state_cmd": "bash \"C:\\Users\\Desktop\\onedrive\\nodejs\\homebridge-config\\cmd4scripts\\VolumeWinCurl.bat\""
asuming you can run this command in the same terminal you run homebridge in
bash "C:\Users\Desktop\onedrive\nodejs\homebridge-config\cmd4scripts\VolumeWinCurl.bat"
I escaped this command with the tool above. the output looked like this
bash \"C:\\Users\\Desktop\\onedrive\\nodejs\\homebridge-config\\cmd4scripts\\VolumeWinCurl.bat\"
and then pasted this into the "state_cmd": "<json escaped command>"
Oh wow, you are a champion! This may be the missing piece of the puzzle! Thank you so much for this information; I will do a little testing on my days off and report back to you how it went.
@crbyxwpzfl I think my issue might be further along with trying to use my shell script with Windows than just the "state_cmd"
issue. Naturally only assuming that was the issue, after trying the json escape and still coming up short with feedback from my scripts, I decided to try a direct command in the terminal from script (I should have done this sooner...):
C:\Windows\System32>curl -s http://192.168.0.173:2025/getSystemData | jq '.aircons.ac1.zones.z01.measuredTemp'
jq: error: syntax error, unexpected INVALID_CHARACTER, expecting $end (Windows cmd shell quoting issues?) at <top-level>, line 1:
'.aircons.ac1.zones.z01.measuredTemp'
jq: 1 compile error
C:\Windows\System32>curl -s http://192.168.0.173:2025/getSystemData | jq ".aircons.ac1.zones.z01.measuredTemp"
24.2
So already there is a difference between how Raspbian/macOs uses jq
vs how Windows OS does; how annoying... Which means I would need a different script for Windows OS users; or a different approach altogether.
Just a quick response. I’m not at my pc. I don’t know what jq is. Did you check for Unix(LF) Line endings (EOL). windows uses CRFL. Bash for example needs LF line endings.
Hey @crbyxwpzfl,jq
is essentially a json parsing tool; so in my repo I am using it to pull out data I need from a json data array and use it in my script.
Did you check for Unix(LF) Line endings (EOL). windows uses CRFL. Bash for example needs LF line endings.
I am not sure I understand this part sorry. I might have to do a bit of Googling; still learning as I go. I just know the json escape didn’t work for me and discovered the above instead.
If you edit a script in windows notepad and save it it will be saved with windows line endings CRFL. Some Programms don’t like that. I had this issue with bash scripts. You can choose to save a file with Unix line endings LF with most programming tools like notepad++ or vscode just google how to do that it’s some option usually not too difficult. just did a quick search specific to jq and found this on stack Hope it helps and isn’t a waste of time. But I remember the $end some how haha
Thanks for all this effort @crbyxwpzfl, it is really appreciated. I might not get a chance to test this for some days as I am tied up in some other work at the moment; but I will let you know how I go when I do get to it.
Describe Your Problem:
Hey @ztalbot2000 I hope you do not mind that I open an issue to try grab the attention of any of your Windows OS users using bash/shell scripts; I have tried on Reddit and had no bites. I really want to try and get installation instructions going for my repo.
I am looking for a user of
homebridge-cmd4
that has their Homebridge server living on Windows OS and are using bash/shell scripts for cmd4. In particular, I would be interested in the following:If you feel this is not the place to ask this John, just close it out. Otherwise I will leave it open for some time and close it out if I get no bites again. I know I constantly peruse the issues of plug-ins I have installed; so I am hoping others do and see this.