공유기 정보를 home assistant의 command_line센서로 만들려다 부딪힌 문제와 구글링해 찾은 해결책들.
먼저 putty에서 만든 암호화키를 ha서버의 /config 디렉토리에 복사후 아래 커맨드로 ha서버에서 공유기로 접속하면서 생긴 에러.
ssh -i /config/id_rsa.ppk -p 2222 -o StrictHostKeyChecking=no root@192.168.1.1 df
bad permissions: ignore key: 이 에러는 암호화키 퍼미션을 소유자 읽기전용으로 변경해주면 됨.
chmod 400 ./id_rsa.ppk
error in libcrypoto: 이 에러는 puttygen.exe에서 만든 암호화키를 openssh key로 변환해주면 해결.
변환방법은 puttygen.exe에서 Conversions/Import key로 암호화키를 불러들인 후 Export OpenSSH key를 해주고 만든 암호화 키를 ha서버에 복사해 준다.
command_line:
- sensor:
name: 'OpenWrt CPU'
unique_id: openwrt_cpu
scan_interval: 300
command: ssh -p 2222 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /config/id_rsa root@192.168.1.1 top -d 1 -b -n2 | grep "CPU"| awk '$1 == "CPU:" {sum += $2 + $4} END {print sum/2}'
unit_of_measurement: '%'
- sensor:
name: 'OpenWrt CPU Temp MAX'
unique_id: openwrt_cpu_temp
scan_interval: 300
command: ssh -p 2222 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /config/id_rsa root@192.168.1.1 cat /sys/class/thermal/thermal_zone*/temp | sort -rn | head -n 1
unit_of_measurement: '°C'
value_template: '{{value | multiply(0.001) }}'
- sensor:
name: 'OpenWrt DISK'
unique_id: openwrt_disk
scan_interval: 300
command: ssh -p 2222 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /config/id_rsa root@192.168.1.1 df | grep overlay | awk '{printf ("%.0f\n",$3*100/($3+$4))}' | head -n 1
unit_of_measurement: '%'
- sensor:
name: 'OpenWrt Memory'
unique_id: openwrt_memory
scan_interval: 300
command: ssh -p 2222 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /config/id_rsa root@192.168.1.1 free -m | grep Mem | awk '{printf ("%.0f\n",$3*100/$2)}'
unit_of_measurement: '%'
공유기의 luci-app-upnp와 command line으로 가져온 센서들.