<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ambient on 高木のブログ</title>
    <link>https://takagi.blog/tags/ambient/</link>
    <description>Recent content in Ambient on 高木のブログ</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja-jp</language>
    <lastBuildDate>Thu, 07 Jan 2021 00:00:00 +0000</lastBuildDate><atom:link href="https://takagi.blog/tags/ambient/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>【Nature Remo E lite】瞬時電力計測値をAmbientでグラフ化する</title>
      <link>https://takagi.blog/nature_remo_e_lite_to_ambient/</link>
      <pubDate>Thu, 07 Jan 2021 00:00:00 +0000</pubDate>
      
      <guid>https://takagi.blog/nature_remo_e_lite_to_ambient/</guid>
      <description>&lt;p&gt;半年くらい前に&lt;a href=&#34;https://nature.global/jp/nature-remo-e-lite&#34; target=&#34;_blank&#34;&gt;Nature Remo E lite&lt;/a&gt;
を買って放置していたが、せっかくなので&lt;a href=&#34;https://ambidata.io/&#34; target=&#34;_blank&#34;&gt;Ambient&lt;/a&gt;
に値を投げてグラフ化してみることにした。&lt;br&gt;
Nature Remoの公式アプリでグラフは見れるので、正直何も意味はない。&lt;br&gt;
&lt;a href=&#34;https://developer.nature.global/jp/how-to-calculate-energy-data-from-smart-meter-values&#34; target=&#34;_blank&#34;&gt;API&lt;/a&gt;
でいろいろ値は取れるが、ばっと見、意味がわかるのは瞬時電力計測値くらいなのでそれを使う。&lt;/p&gt;
&lt;iframe sandbox=&#34;allow-popups allow-scripts allow-modals allow-forms allow-same-origin&#34; style=&#34;width:120px;height:240px;&#34; marginwidth=&#34;0&#34; marginheight=&#34;0&#34; scrolling=&#34;no&#34; frameborder=&#34;0&#34; src=&#34;//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=ytkg04-22&amp;language=ja_JP&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=B086WGR1TZ&amp;linkId=5ded4f0e72cdace3ff67d39f97eb99e0&#34;&gt;&lt;/iframe&gt;
&lt;h2 id=&#34;手順&#34;&gt;手順 &lt;a href=&#34;#%e6%89%8b%e9%a0%86&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;h3 id=&#34;コード&#34;&gt;コード &lt;a href=&#34;#%e3%82%b3%e3%83%bc%e3%83%89&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-ruby:title=Gemfile&#34; data-lang=&#34;ruby:title=Gemfile&#34;&gt;source &amp;#39;https://rubygems.org&amp;#39;

git_source(:github) {|repo_name| &amp;#39;https://github.com/#{repo_name}&amp;#39; }

gem &amp;#39;dotenv&amp;#39;
gem &amp;#39;nature_remo&amp;#39;
gem &amp;#39;ruby-ambient&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plain:title=.env&#34; data-lang=&#34;plain:title=.env&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;NATURE_REMO_API_TOKEN&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;AMBIENT_CHANNEL_ID&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;AMBIENT_WRITE_KEY&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ruby:title=app.rb&#34; data-lang=&#34;ruby:title=app.rb&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;require &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;dotenv/load&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;require &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;nature_remo&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;require &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ruby-ambient&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;client &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;NatureRemo&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Client&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#66d9ef&#34;&gt;ENV&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;NATURE_REMO_API_TOKEN&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;response &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; client&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;appliances
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;appliances &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;JSON&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;parse(response&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;body, &lt;span style=&#34;color:#e6db74&#34;&gt;symbolize_names&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;el_smart_meter &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; appliances&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;find { &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;appliance&lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; appliance&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;:type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EL_SMART_METER&amp;#39;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echonetlite_properties &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; el_smart_meter&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;:smart_meter&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;][&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;:echonetlite_properties&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;].&lt;/span&gt;each_with_object({}) &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;echonetlite_property, hash&lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  hash&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;echonetlite_property&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;:name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;].&lt;/span&gt;to_sym&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; echonetlite_property&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;:val&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;].&lt;/span&gt;to_i
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ambient &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;Ambient&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#66d9ef&#34;&gt;ENV&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;AMBIENT_CHANNEL_ID&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;write_key&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;ENV&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;AMBIENT_WRITE_KEY&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ambient&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;send({ &lt;span style=&#34;color:#e6db74&#34;&gt;d1&lt;/span&gt;: echonetlite_properties&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;:measured_instantaneous&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://github.com/ytkg/nature_remo_e_lite_to_ambient&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://gh-card.dev/repos/ytkg/nature_remo_e_lite_to_ambient.svg&#34; alt=&#34;ytkg/nature_remo_e_lite_to_ambient - GitHub&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3 id=&#34;raspberry-piで動かす&#34;&gt;Raspberry Piで動かす &lt;a href=&#34;#raspberry-pi%e3%81%a7%e5%8b%95%e3%81%8b%e3%81%99&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;GitHub Actionsで1分毎動かすのはちょっと気が引けたので、Raspberry Piで動かすことにした。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-text:title=crontab&#34; data-lang=&#34;text:title=crontab&#34;&gt;* * * * * cd /home/pi/workspace/nature_remo_e_lite_to_ambient/ &amp;amp;&amp;amp; /home/pi/.rbenv/shims/bundle exec ruby app.rb
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;bundleだけだと、&lt;code&gt;bundle: not found&lt;/code&gt;になってしまったので、フルパスで呼び出した。&lt;br&gt;
crontab何もわからん。&lt;/p&gt;
&lt;h3 id=&#34;結果&#34;&gt;結果 &lt;a href=&#34;#%e7%b5%90%e6%9e%9c&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src=&#34;./ambient_graph.png&#34; alt=&#34;ambient_graph&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>RubyでAmbientにデータを送信してグラフ化する</title>
      <link>https://takagi.blog/send-data-to-ambient-in-ruby/</link>
      <pubDate>Sun, 03 Jan 2021 00:00:00 +0000</pubDate>
      
      <guid>https://takagi.blog/send-data-to-ambient-in-ruby/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://ambidata.io/&#34; target=&#34;_blank&#34;&gt;Ambient&lt;/a&gt;
というIoTデータ向けの可視化サービスを見つけたので、RubyからAmbientにデータを送ってグラフを作るところまでをやってみた。&lt;/p&gt;
&lt;h2 id=&#34;手順&#34;&gt;手順 &lt;a href=&#34;#%e6%89%8b%e9%a0%86&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;h3 id=&#34;1-ユーザー登録&#34;&gt;1. ユーザー登録 &lt;a href=&#34;#1-%e3%83%a6%e3%83%bc%e3%82%b6%e3%83%bc%e7%99%bb%e9%8c%b2&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href=&#34;https://ambidata.io/usr/signup.html&#34; target=&#34;_blank&#34;&gt;Ambient 新規登録&lt;/a&gt;
&lt;/p&gt;
&lt;h3 id=&#34;2-チャネル作成&#34;&gt;2. チャネル作成 &lt;a href=&#34;#2-%e3%83%81%e3%83%a3%e3%83%8d%e3%83%ab%e4%bd%9c%e6%88%90&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;様々なグラフを表示するボードみたいなもの。（多分）&lt;br&gt;
「チャネルを作る」ボタンを押すだけで生成される。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;ambient_001.png&#34; alt=&#34;ambient_001&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;3-データ送信&#34;&gt;3. データ送信 &lt;a href=&#34;#3-%e3%83%87%e3%83%bc%e3%82%bf%e9%80%81%e4%bf%a1&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;ruby-ambientというGemがあったのでそれを使わせてもらう。
&lt;a href=&#34;https://github.com/suruseas/ruby-ambient&#34; target=&#34;_blank&#34;&gt;&lt;img src=&#34;https://gh-card.dev/repos/suruseas/ruby-ambient.svg&#34; alt=&#34;suruseas/ruby-ambient - GitHub&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h4 id=&#34;31-gemのインストール&#34;&gt;3.1 gemのインストール &lt;a href=&#34;#31-gem%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ gem install ruby-ambient
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;32-コード&#34;&gt;3.2 コード &lt;a href=&#34;#32-%e3%82%b3%e3%83%bc%e3%83%89&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;require &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ruby-ambient&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;am &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;Ambient&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;new(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;チャネルID&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;write_key&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ライトキー&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;am&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;send( { &lt;span style=&#34;color:#e6db74&#34;&gt;d1&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;d2&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt; } )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# =&amp;gt; #&amp;lt;Net::HTTPOK 200 OK readbody=true&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;データはd1からd8まで8種類まで送ることができる。&lt;br&gt;
最短の送信間隔は5秒。&lt;/p&gt;
&lt;h3 id=&#34;4-グラフ作成&#34;&gt;4. グラフ作成 &lt;a href=&#34;#4-%e3%82%b0%e3%83%a9%e3%83%95%e4%bd%9c%e6%88%90&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;チャネル一覧画面のチャネル名をクリックするとボードが表示されるので、そこでグラフ追加のアイコンを押したらグラフを作れる。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;ambient_002.png&#34; alt=&#34;ambient_002&#34;&gt;&lt;/p&gt;
&lt;p&gt;データは最大1年分保持される。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考 &lt;a href=&#34;#%e5%8f%82%e8%80%83&#34; class=&#34;anchor&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href=&#34;https://ambidata.io/docs/&#34; target=&#34;_blank&#34;&gt;チュートリアル – Ambient&lt;/a&gt;
&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
