3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

mui Developer Editionで遊んでみる(HOME画面のカスタマイズ)

Last updated at Posted at 2019-04-06

#この記事について
muiを入手したので、その開発情報を自分用にまとめたものです。

mui Developer Editionで遊んでみる(準備編)
mui Developer Editionで遊んでみる(HOME画面のカスタマイズ)
mui Developer EditionでSORACOMを使ってみる

HOME画面をカスタマイズしてみる

muiのSDKに付属のサンプルだけでは何もできませんので、さっそくカスタマイズをしてみます。
最初に、個人的に一番欲しかったゴミの日をお知らせしてくれる機能をHOME画面に追加してみたいと思います。

ゴミの日のデータを探す。

まず、ごみを出せる日をデータとして持つ必要があります。
私が住んでいる長野市では、ごみ収集日をエクセルでダウンロードできるので、まずはそれをダウンロードします。
今年のデータは以下のページからダウンロードすることが出来ます。
https://www.city.nagano.nagano.jp/site/kateigomi/423431.html

正直、このデータがダウンロードできる長野市は偉いと思います。若干神エクセルっぽいですが、できないよりはできたほうが良いので。

データを変換する

ダウンロードした神エクセルから使える形に変換します。ゴミの種類ごとにCSVファイルに変換します。こんな感じ。

2019-04-02,
2019-04-05,
2019-04-09,
2019-04-12,
2019-04-16,
2019-04-19,
2019-04-23,
2019-04-26,

それぞれの収集日データを作成したら、Raspberry Pi側に転送しておきます。ここでは~/mui/mui-display-lib/sample/gomi以下に下記のファイル名で保存しました。

ごみの種類 ファイル名
可燃ごみ kanen.csv
プラごみ pla.csv
不燃ごみ funen.csv
神ごみ kami.csv
缶ごみ kan.csv
ビンごみ bin.csv

##コードを修正する
class HomeApp(MyMUIApp, OnUpdateRequestListener, OnTouchEventListener):クラスを修正していきます。
まずごみの日を検索する処理を追加します。今回はお手軽にファイルの中を日付文字列でsearchする方法で実装しました。

sample.py

    # Check Gomi no hi
    def searchStringInFile(self, fileName, searchText):
        ld = open(fileName)
        lines = ld.readlines()
        ld.close()
 
        for line in lines:
            if line.find(searchText) >= 0:
                return True

        return False

    def checkGominoHi(self):
        strGominoHiMsg = ""

        tdatetime = dt.now(timezone(timedelta(hours=9)))
        tstr = tdatetime.strftime('%Y-%m-%d')
        if (self.searchStringInFile(os.path.normpath(os.path.join(dir, './gomi/kanen.csv')),tstr) == True ):
                strGominoHiMsg = "今日は可燃ごみの日です"

        if (self.searchStringInFile(os.path.normpath(os.path.join(dir, './gomi/pla.csv')),tstr) == True ):
                strGominoHiMsg = "今日はプラごみの日です"

        if (self.searchStringInFile(os.path.normpath(os.path.join(dir, './gomi/funen.csv')),tstr) == True ):
                strGominoHiMsg = "今日は不燃ごみの日です"

        if (self.searchStringInFile(os.path.normpath(os.path.join(dir, './gomi/kami.csv')),tstr) == True ):
                strGominoHiMsg = "今日は紙ごみの日です"

        if (self.searchStringInFile(os.path.normpath(os.path.join(dir, './gomi/kan.csv')),tstr) == True ):
                strGominoHiMsg = "今日は缶ごみの日です"

        if (self.searchStringInFile(os.path.normpath(os.path.join(dir, './gomi/bin.csv')),tstr) == True ):
                strGominoHiMsg = "今日はビンごみの日です"

        return strGominoHiMsg

次に、ごみの日かどうかを表示するViewを追加します。def __init__(self, appEventListener: AppEventListener):で画面の定義を行っているので、ここにViewを追加する処理を記載します。

sample.py
        gominohiView = Text('')
        gominohiView.setSize(0,0,100,8)
        self.addView(gominohiView)
        self.setView(gominohiView, 'gomi')

最後に表示データを更新する処理を追加します。とりあえずHOMEアプリが実行開始されるタイミングでデータを更新します。
muiのSDKではアプリケーションが開始されるタイミングでstartTask()が、終了されるタイミングでstopTask()が呼び出されます。ですので、startTask()にテキストの更新処理を追加します。

sample.py
    def startTask(self):
        # check gomi no hi
        self.getView('gomi').setText(self.checkGominoHi())

        # start clock update
        self.getView('clock').startTick()

この修正を実行するとこのように表示されました。
mui1.png

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?