matlab
IoT
Thingspeak

ThingSpeakでMATLAB Visualization使ってグラフをカスタマイズ

はじめに

Nature Remoで測定した温度とOpenWeatherMapで取得した気温をThingSpeakで重ねて表示したい。
ThingSpeakのデフォルトのグラフ表示は自由度低くてかゆいところに手が届かない。
MATLAB Visualizationって機能を使ってブラウザ上でプログラミングしてグラフ表示した。

前提

すでにThingSpeakのChannelにデータをアップロードしてる。

Nature Remoで測定した室温をThingSpeakに渡して表示。 - Qiita
pythonを使ってOpenWeatherMapから天気情報を取得 - Qiita

設定とコーディング

チュートリアルみながら、MATLAB Visualizationってところを押して、ぽちぽちやってたらできた。

温度と湿度でグラフを書いた。
湿度のグラフ表示のコードはこんな感じ。
xxx, yyyは自分のChannelの情報を書く。
humisは配列でNature Remoからとってきた湿度(field2)と、
OpenWeatherMapからとってきた湿度(field5)が入ってる。
ポイント数とか表示範囲を自由に決められる。
y軸の表示範囲をylim()で指定。
thingSpeakPlot()使ってみたところはコメントアウトしている。

readChId = xxx;
readKey = 'yyy';

[humis,time] = thingSpeakRead(readChId,'fields',[2,5],'NumPoints',1000,'ReadKey',readKey);

plot(time, humis);
title('Humidity Measurement');
xlabel('TimeStamps');
ylabel('Measured Values');
legend({'Nature Remo','OpenWeatherMap'});
legend('Location','southwest')

grid on;
ylim([0,100]);

% thingSpeakPlot(time(1:10:end),temps(1:10:end,:),'xlabel','TimeStamps',...
%    'ylabel','Measured Values','title','Temperature Measurement',...
%    'Legend',{'Nature Remo','OpenWeatherMap'},'grid','on');

thingSpeakPlot()を使わないといけないのかと思ったけど、そういうわけではないみたい。
ためしにplot()使ってみたら表示できた。
plot()を使ったほうが自由度高い。

結果

こんな感じ。
NatureRemo   OpenWeather   ThingSpeak IoT.png

おわりに

いい感じ。
Nature Remoの値が信用ならんけども。
発熱してるやろし、筐体で空気がこもるやろから、変化しないんかなぁ。

参考

MathWorksはドキュメントがむちゃくちゃ親切。
公式のサイトだけでなんとかなった。
データの解析 - MATLAB & Simulink - MathWorks 日本