You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.3 KiB
Bash
60 lines
1.3 KiB
Bash
4 years ago
|
#!/bin/sh
|
||
|
|
||
|
export PLC=$(uci get plc.plc.interface)
|
||
|
|
||
|
utf8() {
|
||
|
local s
|
||
|
# If valid UTF-8, ok. Else assume CP1252, convert to UTF-8, if not ok use fallback of 8bit unicode codepoints to UTF-8,
|
||
|
# if this also fails, take it as it is.
|
||
|
# actually HFID allow only ASCII code 32..127 according to HomePlug-AV spec. So this usage is not standard conform!
|
||
|
s=$(printf "%s" "$1" | iconv -s -f utf-8 -t utf-8) ||
|
||
|
s=$(printf "%s" "$1" | iconv -s -f cp1252 -t utf-8) ||
|
||
|
s=$(printf "$(printf "%s" "$1" | hexdump -e '/1 "x00x%02x"' | sed -e 's,x,\\x,g')" | iconv -s -f ucs-2be -t utf-8) ||
|
||
|
s=$(printf "%s" "$1")
|
||
|
echo "$s"
|
||
|
}
|
||
|
|
||
|
. /usr/share/libubox/jshn.sh
|
||
|
|
||
|
json_load "$(plcstat -t "$@" | awk -f /usr/share/rpcd/plcstat-t.awk)" 2>/dev/null
|
||
|
|
||
|
json_select devices >/dev/null
|
||
|
el=1
|
||
|
while json_select $((el++)) >/dev/null ; do
|
||
|
json_get_vars mac
|
||
|
mfg="n/a"
|
||
|
usr="n/a"
|
||
|
net="n/a"
|
||
|
nmk="n/a"
|
||
|
if plcwait -x -s -w 1 -q "$mac" ; then
|
||
|
MAC= MFG= USR= NET= NMK=
|
||
|
while IFS=" " read a b; do
|
||
|
case "$a" in
|
||
|
MAC|\
|
||
|
MFG|\
|
||
|
USR|\
|
||
|
NET|\
|
||
|
NMK)
|
||
|
eval $a="\$b"
|
||
|
;;
|
||
|
esac
|
||
|
done <<EOF
|
||
|
$(plcID -t 250 -H "$mac")
|
||
|
EOF
|
||
|
[ "$mac" = "$MAC" ] && {
|
||
|
mfg="$MFG"
|
||
|
usr="$(utf8 "$USR")"
|
||
|
net="$NET"
|
||
|
nmk="$NMK"
|
||
|
}
|
||
|
fi
|
||
|
json_add_string mfg "$mfg"
|
||
|
json_add_string usr "$usr"
|
||
|
json_add_string net "$net"
|
||
|
json_add_string nmk "$nmk"
|
||
|
json_select ..
|
||
|
done
|
||
|
json_select ..
|
||
|
|
||
|
json_dump
|