$30 off During Our Annual Pro Sale. View Details »

Netatmo API × Rubyで
オフィスのCO2濃度をSlackに通知する / Netatmo API × Ruby × Slack

Netatmo API × Rubyで
オフィスのCO2濃度をSlackに通知する / Netatmo API × Ruby × Slack

2018/11/30 BE もくもく会vol,1 での登壇資料です。

Tomoki Ishimaru

November 30, 2018
Tweet

More Decks by Tomoki Ishimaru

Other Decks in Programming

Transcript

  1. Netatmo API × RubyͰ

    ΦϑΟεͷCO2ೱ౓ΛSlackʹ௨஌͢Δ
    2018/11/30 BE ΋͘΋͘ձvol,1
    Tomoki Ishimaru / @thom_i40

    View Slide

  2. ࣗݾ঺հ
    • Tomoki Ishimaru
    • GMO AD Marketing Inc.
    • ϑϩϯτΤϯυ / αʔόʔαΠυ
    • Իָͱࣸਅ͕޷͖
    @thom_i40

    View Slide

  3. ຊ୊

    View Slide

  4. Netatmo × Ruby

    ͰΦϑΟεͷCO2ೱ౓ΛՄࢹԽ

    View Slide

  5. ͳͥCO2ೱ౓ΛՄࢹԽʁ

    View Slide

  6. ͖͔͚ͬ

    View Slide

  7. https://www.businessinsider.jp/post-106379

    View Slide

  8. CO2ೱ౓ͱਓͷύϑΥʔϚϯε
    • CO2ೱ౓ͷߴ͍؀ڥͰ͸ҙࢥܾఆͳͲͷ

    ύϑΥʔϚϯε͕௿Լ͢Δֶज़࿦จ͕ൃද
    • ްੜ࿑ಇলͱจ෦Պֶল͸ɺڭҭࢪઃ΍ݐங
    ෺ʹCO2ೱ౓ͷج४஋ΛఆΊ͍ͯΔ
    • CO2ೱ౓͕ݸਓͷύϑΥʔϚϯεʹӨڹ͢Δ

    View Slide

  9. CO2ೱ౓ͷݟ͑ΔԽ͔Β࢝ΊΑ͏

    View Slide

  10. Ͳ͏΍ͬͯʁ

    View Slide

  11. Netatmo Weather Station

    View Slide

  12. Netatmo Weather Station
    • ԰಺֎ͷ؀ڥΛܭଌ͢ΔϞδϡʔϧ
    • ؾԹ΍࣪౓, ؾѹ, ૽Ի, CO2ೱ౓ͳͲΛܭଌ
    • ෩ྔ΍ӍྔΛܭଌ͢Δ௥ՃϞδϡʔϧ
    • εϚʔτϑΥϯͱ࿈ܞՄೳ
    • ܭଌσʔλʹΞΫηεͰ͖ΔAPIΛఏڙ

    View Slide

  13. CO2ೱ౓ΛSlack௨஌

    View Slide

  14. Netatmo API
    require 'net/https'

    require 'json'

    require 'uri'


    token_uri = URI('https://api.netatmo.com/oauth2/token')


    res = Net::HTTP.post_form(

    token_uri,

    grant_type: 'password',

    client_id: 'xxx',

    client_secret: 'xxx',

    username: 'xxx',

    password: 'xxx',

    scope: 'read_station'

    )


    access_token = JSON.parse(res.body)['access_token']


    api_uri = URI.parse('https://api.netatmo.com/api/getstationsdata')


    http = Net::HTTP.new(api_uri.host, api_uri.port)

    http.use_ssl = true


    req = Net::HTTP::Post.new(api_uri.path)

    req.set_form_data(access_token: access_token)


    res = http.request(req)


    data = JSON.parse(res.body)


    puts JSON.pretty_generate(data)

    https://dev.netatmo.com/en-US/resources/technical/samplessdks/tutorials

    View Slide

  15. Ruby͔ΒSlack΁ͷ௨஌
    • slack-incoming-webhooks
    • ਺ߦͷεΫϦϓτͰSlack΁ͷ௨஌͕Մೳ
    • Slack APIͷAttachmentsʹ΋ରԠ
    https://github.com/shoyan/slack-incoming-webhooks

    View Slide

  16. Ruby͔ΒSlack΁ͷ௨஌
    https://github.com/shoyan/slack-incoming-webhooks

    View Slide

  17. Google Sheets ΁ग़ྗ
    • google-drive-ruby
    • CO2ೱ౓ͷ܏޲΍׵ؾͷޮՌΛՄࢹԽ͢Δ
    • άϥϑͷੜ੒΍ڞ༗/ΞΧ΢ϯτ؅ཧ͕༰қ
    https://github.com/gimite/google-drive-ruby

    View Slide

  18. Google Sheets ΁ग़ྗ
    https://github.com/gimite/google-drive-ruby

    View Slide

  19. γεςϜߏ੒
    Netatmoαʔόʔ




    Netatmo Weather Station
    Ruby

    View Slide

  20. IFTTTͰ͸μϝͳͷʁ
    • ௨஌͕1࣌ؒ΄Ͳ஗ΕΔ͜ͱ͕͋ͬͨ
    • ௨஌ϑΥʔϚοτͷ੍ޚʹݶք͕͋Δ
    • ௨஌ͷ৚݅͝ͱʹΞϓϨοτͷ؅ཧ͕ඞཁ

    View Slide

  21. ·ͱΊ
    • Netatmo APIΛ࢖ͬͯCO2ೱ౓ΛՄࢹԽͨ͠
    • RubyGemsΛ༻͍ͯ

    Slack΍Google Sheetsʹ΋ग़ྗͨ͠
    • Slack௨஌Λ͖͔͚ͬʹ׵ؾ͢Δश׳͕෇͖ɺ

    CO2ೱ౓্͕͕Γʹ͍͘ΦϑΟε؀ڥΛ࡞Εͨ

    View Slide

  22. https://techblog.gmo-ap.jp/2018/05/15/ruby_netatmo_api_slack/

    View Slide

  23. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠
    @thom_i40

    View Slide