View Single Post
No!No!No!Yes!'s Avatar
Posts: 700 | Thanked: 846 times | Joined on Nov 2009
#960
Originally Posted by slarti View Post
Yes, I tried it. The problem was the missing path.

I now have a working script that does what I want for a single node (you have to excuse my code, I really have never done this before):

PHP Code:
node=$(awk -F"~" "/$name/ "'{print $3}' /home/user/zwave/zwave.txt)
state=$(awk -F"~" "/$name/ "'{print $4}' /home/user/zwave/zwave.txt)
if [ 
"$state== "0" ]
then wget -O/home/user/zwave/zwave.txt "http://ipaddress:port/ZwaveCommand?command=device&id=${node}&level=99"
dbus-send --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.SystemNoteInfoprint string:"$name ON"
exit 0
else wget -O/home/user/zwave/zwave.txt "http://ipaddress:port/ZwaveCommand?command=device&id=${node}&level=0"
dbus-send --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.SystemNoteInfoprint string:"$name OFF"
exit 1
fi

I call it in QBW with:

PHP Code:
name="Node name"export namesh /home/user/zwave/script 
Now I'm trying to make them update on startup, update whenever zwave.txt gets rewritten and work as they do now.

I just tried this in QBW:

PHP Code:
name="Node name";
node=$(awk -F"~" "/$name/ "'{print $3}' /home/user/zwave/zwave.txt);
state=$(awk -F"~" "/$name/ "'{print $4}' /home/user/zwave/zwave.txt);
if [ 
"$QBW_EXEC_REASON== "QBW_STARTUP_UPDATE" ]; then
    
if [ "$state== "0" ]; then
        
exit 0;
    if [ 
"$state!= "0" ]; then
        
exit 1;
    
fi;
fi;
if [ 
"$QBW_EXEC_REASON== "QBW_DBUS_UPDATE_CONTENT" ]; then
    
if [ "$state== "0" ]; then
        
exit 0;
    if [ 
"$state!= "0" ]; then
        
exit 1;
    
fi;
fi;
if [ 
"$QBW_EXEC_REASON== "QBW_CLICK" ]; then
export name
;
sh /home/user/zwave/state;
run-standalone.sh dbus-send --session --type=method_call --dest=oh.no.more.qbw /oh/no/more/qbwid3 oh.no.more.qbw.update_content;
fi 
For some reason that didn't work, it just exits with code 2. I'll keep trying...

In the wiki there is:

Code:
run-standalone.sh dbus-send --session --type=method_call --dest=oh.no.more.qbw /oh/no/more/qbw<idX> oh.no.more.qbw.<method> <type1>:"<param1>" <type2>:"<param2>" ... <typeN>:"<paramN>"
Can I use multiple QBW ids in one command somehow? I'm trying to get a QBW to tell the others to update content when it is clicked.
Have a look at POKER DICE beecon script for example on how to issue update on multiple QBWs in sequence; it is also a goot example of 1 QBW driving others.
You can also write a loop like this (metacode by heart):
PHP Code:
for i in id2 id3 id4 id5
do
run-standalone.sh dbus-send --session --type=method_call --dest=oh.no.more.qbw /oh/no/more/qbw$i oh.no.more.qbw.update_content;
done 
2 exit code you are experiencing might suggest some sort of syntax error in the script
also pay attention that if you need $QBW_* meta variables inside you external script then you need to pass them with something like this and manage positional parameters $1 $2 $3 $4 $5 inside your external script:
in QBW cmd:
PHP Code:
/home/user/myscripts/execme.sh $QBW_ID $QBW_EXEC_REASON 
in script:
PHP Code:
QBW_ID=$1
QBW_EXEC_REASON
=$2
... 
__________________
Have a look at Queen BeeCon Widget (WIKI) Customizable and flexible widget-based multi-instance monitoring, alerting and interactive tool for the N900
Please provide comments and feedback for having QBW supported and enhanced further - (DONATE) - v1.3.3devel / v1.3.3testing / v1.3.3extras

Last edited by No!No!No!Yes!; 2010-11-25 at 22:26.
 

The Following User Says Thank You to No!No!No!Yes! For This Useful Post: