재배자의 토양 온도를 Ambient+ 쉘 스크립트로 시각화해 보았다.
4352 단어 ShellScriptAmbient
개요
데이터를 쉽게 시각화할 수 있는 서비스 「Ambient」에 쉘 스크립트로부터 데이터를 송신하는 방법을 나타냅니다. (별로 수요는 없을 것 같습니다만)
배경
베란다의 플랜터에서 오크라와 바질을 키우기 시작했기 때문에, 자동으로 물을 주는 시스템을 Raspberry Pi Zero W(이하 RPi)와 펌프를 사용해 만들었습니다.
그런데 "낮에 물을 주면 흙 속의 온도가 올라 식물에 좋지 않다"고 자주 말하지만 "물을 뿌리면 물 자체의 온도와 기화열로 오히려 온도는 내리는 것은 ?」라고 의문을 가지고 있었으므로, 실제로 측정해 보기로 했습니다.
그런 다음 RPi의 CPU 코어 온도를 모니터링하고 RPi 자체의 상태를 참조합니다.
사용한 장비
베란다의 플랜터에서 오크라와 바질을 키우기 시작했기 때문에, 자동으로 물을 주는 시스템을 Raspberry Pi Zero W(이하 RPi)와 펌프를 사용해 만들었습니다.
그런데 "낮에 물을 주면 흙 속의 온도가 올라 식물에 좋지 않다"고 자주 말하지만 "물을 뿌리면 물 자체의 온도와 기화열로 오히려 온도는 내리는 것은 ?」라고 의문을 가지고 있었으므로, 실제로 측정해 보기로 했습니다.
그런 다음 RPi의 CPU 코어 온도를 모니터링하고 RPi 자체의 상태를 참조합니다.
사용한 장비
htps //w w. 오, xp rs. m / m / 32676135779. HTML
방법
다음은 쉘 스크립트입니다.
#!/bin/bash
# チャネルID
channelId="*****"
#ライトキー
writeKey="*****"
url="http://ambidata.io/api/v2/channels/${channelId}/dataarray"
# 1-Wire温度センサから温度を取得
soil_temp="$(grep -m1 "t=" /sys/bus/w1/devices/28*/w1_slave | sed -r 's/.*t=([0-9]{2})([0-9]+)$/\1\.\2/')"
# CPUコア温度を取得
cpu_temp="$(awk '{print $1 / 1000.0}' /sys/class/thermal/thermal_zone0/temp)"
data_text='[{"d1":"'${soil_temp}'","d2":"'${cpu_temp}'"}]'
curl -H 'Content-Type:application/json' \
-d '{"writeKey":"'${writeKey}'", "data":'${data_text}'}' \
${url}
처리 흐름:
1. channelId
, writeKey
, url
를 설정합니다.
2. 1-Wire 연결 온도 센서 DS18B20에서 온도를 얻고 soil_temp
에 저장합니다. 1-Wire의 디바이스는 /sys/bus/w1/devices
이하에 디바이스 마다의 디렉토리로서 인식됩니다만, 온도 센서이면 디렉토리명은 28부터 시작됩니다. grep
로 28로 시작하는 디렉토리에 있는 w1_slave
의 t=
행을 추출합니다. -m1
는, 복수의 결과가 있어도 1 행만 결과를 돌려주는 옵션입니다. sed
에서는 t=
이후의 온도 부분을 꺼내고 있습니다. 온도는 5자리의 정수로 건네지므로, 선두 2자리와 그 이후로 나누어, 사이에 .
를 붙이는 것으로 의사적으로 소수로 변환하고 있습니다.
3. CPU 온도를 얻고 cpu_temp
에 저장합니다. awk 명령으로 /sys/class/thermal/thermal_zone0/temp
로부터 취득한 CPU 온도를 1000으로 나누어 소수로 하고 있습니다.
4. 얻은 soil_temp
와 cpu_temp
를 json 형식으로 성형하고 data_text
에 저장합니다.
5. curl 명령을 사용하여 ambient로 데이터를 POST합니다. writeKey
에서 라이트 키를 전달합니다.
수행한 결과
아래에서 확인할 수 있습니다.
htps : // 아메다였다. 이오/bd/보어 rd. HTML? 예d=15241
위의 스크립트를 cron으로 정기적으로 실행하고 있습니다.
Reference
이 문제에 관하여(재배자의 토양 온도를 Ambient+ 쉘 스크립트로 시각화해 보았다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yamato225/items/364f9f31ce07c04ffd36
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#!/bin/bash
# チャネルID
channelId="*****"
#ライトキー
writeKey="*****"
url="http://ambidata.io/api/v2/channels/${channelId}/dataarray"
# 1-Wire温度センサから温度を取得
soil_temp="$(grep -m1 "t=" /sys/bus/w1/devices/28*/w1_slave | sed -r 's/.*t=([0-9]{2})([0-9]+)$/\1\.\2/')"
# CPUコア温度を取得
cpu_temp="$(awk '{print $1 / 1000.0}' /sys/class/thermal/thermal_zone0/temp)"
data_text='[{"d1":"'${soil_temp}'","d2":"'${cpu_temp}'"}]'
curl -H 'Content-Type:application/json' \
-d '{"writeKey":"'${writeKey}'", "data":'${data_text}'}' \
${url}
아래에서 확인할 수 있습니다.
htps : // 아메다였다. 이오/bd/보어 rd. HTML? 예d=15241
위의 스크립트를 cron으로 정기적으로 실행하고 있습니다.
Reference
이 문제에 관하여(재배자의 토양 온도를 Ambient+ 쉘 스크립트로 시각화해 보았다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yamato225/items/364f9f31ce07c04ffd36텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)