#やりたいこと
ラズベリーパイでダッシュボードもどきを作成したい.
使用経験のあるdjangoを使用する予定です
まだ作成には至らず、構想段階ですが、
非同期通信などを用いて取得したい
#考えたこと
例えばCPUの温度を調べたい場合
python
1import subprocess,json 2def DetectTemperature(): 3 res = subprocess.check_output(["vcgencmd","measure_temp"]) 4 # res > b"temp=40.0'C\n" 5 res = str(res) 6 cpu_temp = float(res[res.find("=")+1:res.find("'")]) 7 res_json = {"CPU_Temperature":cpu_temp} 8 res_json = json.dumps(res_json, indent=2)# {"CPU_Temperatur":40.0} 9 return HttpResponse(res_json)
などと書くんですが
ただWebブラウザからそれだけを確認するのにわざわざアクセスし直すというのは不便...
(最初から非同期の予定なのでjsonで返しています)
html
1<meta http-equiv="refresh" content="60000; URL=index/"> 2<!-- あるいは --> 3<script type="text/javascript"> 4 setTimeout(function () { 5 location.reload(); 6 }, 60*1000); 7</script>
と自動でリロードさせるというのも手ですが、所謂非同期処理を行いたい...
javascript
1$.ajax({ 2 'url': "{% url 'api' %}", 3 'type': "get", 4 beforeSend: function(xhr, settings) { 5 if (!csrfSafeMethod(settings.type) && !this.crossDomain) 6 xhr.setRequestHeader("X-CSRFToken", csrf_token); 7 }, 8 success: function(data) { 9 //受け取ったdataを何らかのグラフライブラリを使用して描画 10 }, 11 error: function(xhr, status, error) { 12 console.error(status); 13 console.error(xhr); 14 console.error(error); 15 } 16});
という感じのajax通信をsetIntervalなどを使用して1分ごとに送ることも考えたんですが、
些かかっこ悪いのでは...?と思い
他に方法があるか模索しています.
#備考
socket.ioなども知っているだけで使ったことがないので、
良い機会に使えるなら使ってみたいというのが気持ち(今回使えるかは知らないです)
djangoの外にもcrontabを使用してdbなどに格納し
その結果をブラウザに返すとかも考えたんですが、実現可能かもわからない状態
(結果をブラウザに返すタイミングをdjangoに伝えるやり方がわからない)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/15 02:29