#SORACOM LTE-M Button の簡易位置情報を SORACOM #Funk を通して Azure Functions (C#) で取得する

LTE-M button の簡易位置情報を Azure Functions (C#) で取得する」シリーズの第3弾、完結編です。(そんな大袈裟なものなのか)

今回は Azure Functions にデプロイした C# なアプリケーションで、ボタンの位置情報SORACOM Funk 経由で取得します。

位置情報取得シリーズはこんな構成。

続きを読む

#SORACOM LTE-M Button の簡易位置情報を Azure Functions (C#) で取得する

前の投稿で「LTE-M button の簡易位置情報をローカル PC で実行している C# アプリで取得」しました。

今回はそれの続き、Azure Functions にデプロイ してみます。SORACOM Beam ならローカルで動作確認したものを単にデプロイするだけです。
わざわざ分けて投稿するまでもないんですが、前回は途中で終わってしまった感があるので、今回は真面目に「クラウド連携」します。

今回は素直に Beam 経由です。

「Azure Functions、何それ?おいしいの?」という人もいるかもしれないので、動作確認、というかログの出し方についてもチラッと書きます。
(知っている人には当たり前すぎる内容ですが)

続きを読む

#SORACOM LTE-M Button の簡易位置情報をローカルPC上のC#アプリで取得してみる

SORACOM LTE-M Button で簡易位置情報を取得できるようになりました。

https://blog.soracom.jp/blog/2019/08/01/location-function-release/

「それでは」ということで早速試してみます。

今回、位置情報を確認するための手順は以下の通り。

  • SORACOM ユーザーコンソールでの設定
  • SORACOM Harvest でデータの確認
  • Azure Functions のプロジェクトをローカルで作成
  • ngrok で localhost を公開
  • SORACOM Beam の設定
  • 動作確認

ローカルで Azure Functions を開発する環境としては、今回は Visual Studio Code を使います。

続きを読む

大迫力の ゴジラ・ナイト を体験してきました (+ ほんのちょっとだけ技術の考察) #hibiya2018 #godzilla

開催中の「ゴジラ・ナイト」を体験してきました。

gozillanights_logo

5月24日 (木) から 29日 (火) までの開催で、すでに抽選は終わっています。これを読んで「面白そう、行ってみたい!」と思った方がいたら、ごめんなさい。

この辺りのレポート でライターさんも大興奮で書いているので、雰囲気は伝わるかな。

続きを読む

【2017年版】Visual Studio で Arduino 開発

Arduino と言えば、普通は開発には Arduino IDE を使うと思いますが、ここでは Visual Studio で Arduino 開発ができますよ、しかもより効率的に開発できますよというお話。

2~3年ごとに、Visual Studio での Arduino 開発の記事を書いています。本当にたまたまなんですが、今回が3回目。
やんごとなき理由 で久しぶりに Arduino を触っておこうと思い、せっかくなのでデバッグあたりも見てみました(と言っても、作ったスケッチは L チカなんですが・・・)。

Visual Studio を使っちゃうと、申し訳ないですが Arduino IDE には戻れないですね。

続きを読む

Windows 10 IoT をアプリでデバイスシャットダウンする方法

今回は、Windows 10 IoT でアプリからデバイスをシャットダウン(再起動)する方法。

他のマイコンボードだと、いきなり給電を止めても問題ありません。
microSD に書き込み中に電源を落としたりすると、カードの中身を破損する可能性はあると思うので絶対安全とは言えませんが、それほど神経質になることもないと思います。

それに対して、Windows 10 IoT はやむを得ない場合を除いて、ちゃんとシャットダウンしてあげるべきです。Windows です。“OS”です。
それなのにディスプレイもマウス・キーボードも接続していないということもあるでしょう。

そこでアプリでデバイスをシャットダウンしたくなります。タクトスイッチを押すとか、IoT Hub からメッセージを送るとかのタイミングでシャットダウンプロセスを起動することが考えられます。


Windows 10 IoT を楽しんでいる人ならば馴染みのある画面。

2017-01-26 23-08-27

ご承知のように、Windows 10 IoT はデフォルトシェルを持っていません。見慣れた画面も “IoT Core Default App” なるごく普通の UWP アプリケーション。
ソースコード が公開されているので、シャットダウンの方法もすぐにわかるでしょう

実際に、ソースコードを展開して、”Shutdown” を検索すればすぐに見つかります。
MainPage.xaml.csShutdownManager クラスの BeginShutdown  を呼び出しています。なるほど。

真似をしてこんなコードを書いてみました。起動して10秒後に自動的にシャットダウンしてしまうという、無意味この上ないアプリケーション(笑)。

using System;
using System.Threading.Tasks;
using Windows.System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

namespace ShutdownDemo01
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

        private void MainPage_OnLoaded(object sender, RoutedEventArgs e)
        {
            Task.Delay(TimeSpan.FromSeconds(10)).Wait();

            new System.Threading.Tasks.Task(() =>
            {
                ShutdownManager.BeginShutdown(ShutdownKind.Shutdown, TimeSpan.FromSeconds(0));
            }).Start();
        }
    }
}

 

実行してみるとこんなことになりました・・・。

2017-01-25 23-59-44

・・・“UnauthorizatedAccessException”。
さすが UWP アプリケーション、デバイスの機能を利用するには機能の指定が必要なようです。

残念ながら、ソリューションエクスプローラーの Package.appxmanifest をダブルクリックして開いても該当しそうな機能がリストに見つかりません。

2017-01-26 23-29-34

仕方ないのでここで改めて、先ほどダウンロードした IoT Core Default App のソースコードを参考にしてみます。

Package.appxmanifest を右クリックして、コードの表示を選択します。

2017-01-26 0-00-58

変更箇所は2か所。

Package 要素に属性を一つ追加。もう一つは一番下の Capabilities に要素を一つ追加。こうなります。

<?xml version="1.0" encoding="utf-8"?>

<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:iot="http://schemas.microsoft.com/appx/manifest/iot/windows10"
  IgnorableNamespaces="uap mp iot">

  <Identity
    Name="c626b4f7-7b52-4c90-90cb-9606fdce05c8"
    Publisher="CN=taka"
    Version="1.0.0.0" />

  <mp:PhoneIdentity PhoneProductId="c626b4f7-7b52-4c90-90cb-9606fdce05c8" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>

  <Properties>
    <DisplayName>ShutdownDemo01</DisplayName>
    <PublisherDisplayName>taka</PublisherDisplayName>
    <Logo>Assets\StoreLogo.png</Logo>
  </Properties>

  <Dependencies>
    <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
  </Dependencies>

  <Resources>
    <Resource Language="x-generate"/>
  </Resources>

  <Applications>
    <Application Id="App"
      Executable="$targetnametoken$.exe"
      EntryPoint="ShutdownDemo01.App">
      <uap:VisualElements
        DisplayName="ShutdownDemo01"
        Square150x150Logo="Assets\Square150x150Logo.png"
        Square44x44Logo="Assets\Square44x44Logo.png"
        Description="ShutdownDemo01"
        BackgroundColor="transparent">
        <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png"/>
        <uap:SplashScreen Image="Assets\SplashScreen.png" />
      </uap:VisualElements>
    </Application>
  </Applications>

  <Capabilities>
    <Capability Name="internetClient" />
    <iot:Capability Name="systemManagement" />
  </Capabilities>
</Package>

 

以上で、無事にアプリからシャットダウンできるようになりました。めでたしめでたし。