福野泰介の一日一創 - create every day

I want to make web apps in Python3.
Python3でwebアプリを創りたい!
Django!


I made the simplest sample web app. (only 27 lines)
超シンプルなサンプルwebアプリを作りました。(たった27行)

import os webappname = os.path.basename(__file__)[0:-3] if __name__ == '__main__': os.environ.setdefault('DJANGO_SETTINGS_MODULE', webappname) import django.core.management django.core.management.execute_from_command_line([ '', 'runserver' ]) SECRET_KEY = 'secret' ROOT_URLCONF = webappname WSGI_APPLICATION = webappname + '.application' import django.core.wsgi application = django.core.wsgi.get_wsgi_application() DEBUG = True #ALLOWED_HOSTS = [ "localhost" ] # webapp main from django.http import HttpResponse from django.shortcuts import redirect, render def root(req): return HttpResponse("<h1>simple django</h1>") from django.contrib import admin from django.urls import path urlpatterns = [ path('', root), ]

At the first, install Django.
まずは Django のインストール

pip3 install django

If you want to run after saving that python program as the name 'test.py'
動かすときは、さきほどのPythonプログラムを 'test.py' として保存して

python3 test.py

Try to access 'http://localhost:8000/' on your browesr!
ブラウザで 'http://localhost:8000/' へアクセス!

It's simple isn't it?
シンプルでしょ?

This is a sample program using the parameter and redirecting (see also official document)
パラメータを使ったり、リダイレクトしたりするサンプルはこちら(詳細は公式ドキュメントをどうぞ!)

# webapp main from django.http import HttpResponse from django.shortcuts import redirect, render def root(req): return HttpResponse(""" <h2>hello django</h2> <a href=t1?p=param>param</a><br> <a href=t2>redirect</a><br> """) def test1(req): return HttpResponse(req.get_full_path()) def test2(req): return redirect("http://fukuno.jig.jp/2388") from django.contrib import admin from django.urls import path urlpatterns = [ path('', root), path('t1', test1), path('t2', test2), ]

links
- Django
- Django documentation | Django documentation | Django
- Django ドキュメント | Django documentation | Django
- simpledjango src on GitHub

3社共催、親子プログラミングイベント、楽しんでくれました!

2019-2-3 はじめてのIoTデータ活用 親子プログラミングワークショップ

かんたんデータ管理の kintone(キントーン)の サイボウズ
かんたん格安IoTの sakura.io(サクラアイオー)の さくらインターネット
かんたんプログラミングの IchigoJam(イチゴジャム)の jig.jp

人間業じゃない計算力と記憶力を持ち、世界中とつながるコンピューターくんを味方にしよう!
「データで遊ぶ」をテーマに、その入口を親子で楽しく体験するイベント。

スライドダウンロード
はじめてのIoTデータ活用 親子プログラミングワークショップ kintone x sakura.io x IchigoJam (PDF)


サイボウズ社長室ビジネスプロデューサー 中村龍太さんから、kintoneの魅力をご紹介!
牛乳で身長は伸びる?運動で身長は伸びる?データで検証してみよう!


まずはプログラミングはじめの定番、LEDの制御、エルチカゲーム、エルチカロボット、かわくだりゲーム!
電子工作も、プログラミングも、極力シンプルでインパクトあるものにとチューニングしています。


本題、IoTとは? IoT = Internet of Things、(人じゃなくて)モノのインターネット
いろんなものとネットを通じて話ができたり、モノとモノ同士がお話したりする世の中のスタートです。


インターネットは、世界100億台のコンピューターがつながったもの。
2台のIchigoJamをつないでネットワーク実験!
子供2人、Aさん、Bさんとしてペアになって、順番に操作!


遠隔操作、ブロック、チャット体験、コンピューターはつなぐともっとおもしろい。


今回使ったIchigoSodaは、IoT通信モジュール sakura.io が内蔵されたIchigoJam。

こちらが1行ずつ、楽しくキーボードからタイピングしてできあがった、かわくだりゲーム!

10 CLS:X=15 11 CLT 20 LOCATE X,5:?"O" 30 LOCATE RND(32),23:?"*" 35 WAIT 3 36 X=X-BTN(LEFT)+BTN(RIGHT) 39 IF SCR(X,5) GOTO 50 40 GOTO 20 50 ?"GAME OVER!" 60 S=TICK():?S

1行足すだけで、IoTエディションのできあがり!

70 IOT.OUT S

かわくだりゲームが、みんなの反射神経を計測するIoTデバイスに早変わり!


kintoneでみんなから送られたデータをみよう!


かわくだりゲーム、スコアランキング!
しばらく放っておいたらチートされてすごいスコアにw


大人の問題、子供がチャレンジ!
お父さん、お母さんに課題を聞いて、IoTでどう解決するか考えてみよう!
「大人の課題」とかけて「子供の好きなもの」と解く、その心は?
と、なぞかけ形式にして、即興で答えを出してもらうのもいいかも。
時間があれば、じっくり時間をかけて「こどもIoTハッカソン」が楽しい!
(課題例:留守中の火災が怖い → 創電さん、IchigoSodaで、IoT火災報知器「火守くん」を開発、販売!)


自由時間、果敢にサーボや光センサーに挑戦する子供たち!


kintone の今回のイベントページ。質問や、感想などもこちらに描いていただきました。
右側にあるアプリがメイン!


お父さん参加が多かった、今回の親子ワークショップ。親子で楽しくプログラミング、ぜひご家庭でも!


自分でつくれる IcihgoJam、秋葉原にある PCN秋葉原Assemblage ではんだづけできますよ!


楽しい作品、PCNこどもプロコンへぜひどうぞ!
決まった、第9回のノミネート作品はこちら。
PCNこどもプロコン2018 一次審査結果発表 | PCN プログラミング クラブ ネットワーク


ちょうど節分!


kintone x sakura.io x IchigoJam IoT.OUT
大人も楽しいかんたん、IoTプログラミング!

IoTでデータを気軽に集めて、kintone のグラフでいろいろデータで遊んでみると、また新たなデータが欲しくなる。
オープンデータを含めて、たくさんデータを集めてできたビッグデータ、かんたんAIを使ったアドバンストコースも楽しそう!
さくらインターネットさん中心で進む、宇宙オープンデータプラットフォーム「Tellus」β公開しています!

Tellus


本日の機材、準備らくらく IchigoJamスピードパックのIchigoSoda&わくわく電子工作キットバージョン
こんの研修してみたい!機材提供など、ご相談ください!

技術的なお話

IchigoJam ver 1.3 で正式対応した、IoT.OUT を使って、64円/月/1万回通信の格安IoT sakura.ioを通じて、1コマンドでネットへ送信。 Python3 で sakura.io から WebSocket で受け取ったデータ kintone REST API で、kintone アプリに送信、グラフ化などが簡単!というシカケ。


通信モジュールを sakura.io の管理画面で登録、サービス連携として、WebSocketを設定。
ここで表示されるトークンを使います。


ドラッグ&ドロップでできちゃう、kintone上でのアプリづくり。
かわくだりゲームのスコアランキングアプリは、「文字列(1行)」でモジュール番号、「数値」でスコアを入れることにします。
設定、APIトーク、生成する、アクセス権、レコード追加にチェックをいれて、こちらのAPIトークンと、例として URL app=?? と書かれている ID を使います。

こちらPython3のプログラム、WebSocketで受け取ったデータを、kintone に送る

import http.client import websocket import json import ssl SAKURA_TOKEN = *sakura.ioのトークンを設定* KINTONE_DOMAIN = "*kintoneのドメインを設定*.cybozu.com" KINTONE_TOKEN = "*kintoneのAPIトークン" KINTONE_APPID = *kintoneのAPP ID* SAKURA_MODULE = [ { "id":"m01", "module":"*モジュールID1*" }, { "id":"m02", "module":"*モジュールID2*" }, ] def getModule(moduleid): for item in SAKURA_MODULE: if item['module'] == moduleid: return item['id'] return None def sendData(module, val): record = { "app": KINTONE_APPID, "record": { "文字列__1行_": { "value": module }, "数値": { "value": val } } } requestJson = json.dumps(record) headers = { "Content-Type": "application/json", 'X-Requested-With': 'XMLHttpRequest', 'X-Cybozu-API-Token': KINTONE_TOKEN } connect = http.client.HTTPSConnection(KINTONE_DOMAIN) connect.request("POST", "/k/v1/record.json", requestJson, headers) response = connect.getresponse() print(response.status) data = response.read() print(data.decode("utf-8")) def on_message(ws, message): data = json.JSONDecoder().decode(message) mestype = data['type'] if mestype == 'channels': module = getModule(data['module']) val = data['payload']['channels'][0]['value'] print('on_message: ' + module + " -> " + str(val)) sendData(module, val) if __name__ == "__main__": websocket.enableTrace(True) path = "wss://api.sakura.io/ws/v1/" + SAKURA_TOKEN ws = websocket.WebSocketApp(path) ws.on_message = on_message ws.run_forever(sslopt = { "cert_reqs": ssl.CERT_NONE })

*参考
レコードの登録(POST) – cybozu developer network
IchigoSoda スタートガイド — sakura.io ドキュメント
WebSocketでの通信内容の確認 — sakura.io ドキュメント


あとは受け取ったデータでグラフをつくるだけ。こちらも選択ボックスから順番に選ぶだけ、右側にプレビューがあるのでわかりやすい!


かわくだりゲーム、一番たくさんやったのはだれかなランキング!
いろんな切り口のグラフが、簡単に作って、すぐにグループ内で共有できます。


sakura.io、イベントアラートを設定しておけば、いつのまにかすごい数が通信されてしまう心配も無用。
切断アラートを使えば、電池切れや意図しないトラブルの検出もできます!

* 撮影協力、チアプログラミング 浅井さん

links
- 小学生がつくるIoTプログラム教室、サイボウズ、jig.jp、さくらインターネットが共催 - BCN+R
- はじめてのIoTデータ活用 親子プログラミングワークショップ レポート | CSAJ 一般社団法人コンピュータソフトウェア協会

JavaとJavaScriptは、メロンとメロンパンほどは違いません。
どちらもプログラミング言語、名前が似ているだけあって、使い方も似ているところも多いです。

何か得意な言語をもつと、違う言語の習得も楽々。私の場合、Javaが長いので、あまり変わりないJavaScriptは覚えやすく、ちょっと違うPython3はその違いを覚えるまでに一手間必要です。

こちら忘れがちな、Python3の文字列操作をJavaとJavaScriptとの比較と合わせて記載したものです。
結構似てます。単語単位では、英語とフランス語ほど違いがあるわけではありません。言うなれば方言程度?


Python3の短さがよくわかりますね。慣れるとJavaやJavaScriptでの文字列操作が億劫になってしまうほど!


strfuncs」 - シンプルな JavaScript 文字列操作チェックプログラム

PCNこどもプロコンの一次審査では、JavaScript, Python, Swift を使いこなしている小学生もちらほら!
ありがとう、329作品! 小中学生PCNこどもプロコン一次審査とJavaScriptで触るScratch - lib4scratch.js

links
- IchigoJamからのステップアップ - IchigoJam BASIC / Python3 / JavaScript / Java / C言語 対照表

オープンデータ伝道師への出動要請あって、新潟県妙高市へ。

鯖江市などでのオープンデータの活用を事例を交えて紹介、IoTプログラミング体験、地理院マップアプリをベースに避難所一覧2つ星オープンデータのアプリ化、SPARQL!

妙高市役所、上越市役所の皆さんと!5つ星オープンデータで、つなげましょう、上越と鯖江!


妙高市避難所一覧(サンプル)
こちら、研修内にて使った、妙高市オープンデータの避難所一覧を表示するものに、更に、今回の旅写真を加えてみました。避難所データはWordファイルで、緯度経度未記載。緯度経度地図を使って、3点ほど追加してみました。 マップアプリづくりも、IchigoJamのプログラミングを一歩先。(src on GitHub

5つ星オープンデータを手軽に実現する odp で、アプリ作成もとっても簡単に!
災害別避難所案内「ヒナンパス」は、データをいれると、即使えます。


縮小すると、上越妙高駅付近や、名物とん汁ラーメンなどの写真も置いてみました。(addIcon)


妙高市議の村越さんと!(アップいただいた、IoT研修中の動画


月額64円で実現、IchigoSoda(sakura.io x IchigoJam)でかんたんIoTプログラミング!
妙高市役所、オープンデータ担当の池田さん、とても楽しそう!


雪の上越妙高駅!雪は少ないそう。


会場は、妙高市役所。エレベーターで見かけたゆるキャラ「ミョーコーさん
胸元の馬は、雪解けとともに山に現れる、跳ね馬!
跳ね馬(はねうま)・牛形 - haneumas jimdo page!
妙高市役所最寄りの新井駅から上越妙高駅をつなぐ、妙高はねうまラインの名前の由来。


災害相互応援協定を結ぶまち、姉妹都市など、関係ある都市同士を結ぶオープンデータもおもしろそう。


松茶屋のとん汁ラーメン、一見大きなとん汁


でも、らーめんが入ってる!


唐辛子を雪にさらして、3年寝かす、薬味、かんずり!いろいろ付けておいしい!


上越妙高駅近くにあるコンテナを並べた飲食店、FURUSATTO(フルサット)


こちらにも、かんずり!特性中華ソースで食べる、地元の鳥料理が美味!(食堂酒場 酉かつ

その土地ならではの特産物、ローカルチェーンなど、グルメオープンデータ、あるといいですね!

EXIFのGPS、位置情報付き写真から、JSONデータをつくるPython3のプログラムつくりました。お手軽マップづくりがはかどります。

from PIL import Image def toDegree(v): d = float(v[0][0]) / float(v[0][1]) m = float(v[1][0]) / float(v[1][1]) s = float(v[2][0]) / float(v[2][1]) return d + (m / 60.0) + (s / 3600.0) def fixfloat(d, beem): s = str(d) n = s.find('.') if n < 0: return s s += "0000000000" return s[0:n + beem + 1] def fixnum(n, beem): s = "0000000000000" + str(n) return s[-beem:] def getExifGPS(fn): im = Image.open(fn) exif = im._getexif() for id, value in exif.items(): if id == 0x8825: # GPS gps = value lat = toDegree(gps[2]) if gps[1] == 'S': lat = -lat lng = toDegree(gps[4]) if gps[3] == 'W': lng = -lng return fixfloat(lat, 7) + "," + fixfloat(lng, 7) return '' def getExifDate(fn): im = Image.open(fn) exif = im._getexif() for id, value in exif.items(): if id == 0x9003: # DateTimeOriginal s = ''.join(value.split(':')) return ''.join(s.split(' ')) return '' def getImageSize(fn): im = Image.open(fn) h, w, c = im.shape return str(w) + '.' + str(h) import os import sys files = os.listdir('./') list = [] for f in files: if f.endswith('.jpg') or f.endswith('.JPG'): list.append([ f, getExifDate(f) ]) list.sort(key = lambda x: x[1]) if len(sys.argv) > 1: nameprefix = sys.argv[1] n = 0 for i in range(len(list)): f = list[i][0] f2 = nameprefix + '-' + fixnum(n, 2) + ".jpg" os.rename(f, f2) list[i][0] = f2 n += 1 print('[') for item in list: f = item[0] print('{ name: "' + f + '", size: [ ' + getImageSize(f) + ' ], latlng: [ ' + getExifGPS(f) + ' ] },') print(']')

光るIchigoJamバッジができました!

アイロンビーズと光る電子工作は相性、良し!


KidsVenture@児童養護施設のアイロンビーズ部屋で創られたIchigoJamバッジ!


ダイレクトにつないでもOKですが、いろんなものを接続しやすいように、WS2812B付属のコネクターを使って、着脱式にしてみます。


L字ピンヘッダーが壊れにくい。熱収縮チューブを使ってはんだづけ部分を強化しておきます。


IchigoJam側の端子、できあがり。


WS2812B、LEDテープを10コずつ、2つ切り出す。


電線でDOUT-DIN、5V、GND同士をつなぎ、DIN側に接続コネクターをはんだづけ。


ホットボンドで裏面に接着。


あとはIchigoJamでプログラムを打ち込むだけで、光る!
WS2812B x IchigoJamでエモいウェアラブル「イチゴ帽子」プログラミング入門とマシン語、舞鶴x鯖江コラボに向けて
光らせ方、自由自在!いろんな作品作れそうですね!

ブログにアップする写真、EXIFデータを消して軽くする方法 (Python3編)

pip install pillow

画像編集ライブラリ、PILをインストール

import os import PIL.Image dir = './' files = os.listdir(dir) for f in files: if f.endswith('.jpg') or f.endswith('.JPG'): with PIL.Image.open(dir + f) as src: src.thumbnail((1220, 1220), PIL.Image.ANTIALIAS) data = src.getdata() mode = src.mode size = src.size with PIL.Image.new(mode, size) as dst: dst.putdata(data) dst.save(dir + f, 'JPEG', quality=90, optimize=True)

画像サイズを1220にリサイズして、データだけ保存することで、EXIFデータが消えて軽くなる。
ちょっとした手間、プログラミングでどんどん自動化して時間創出!

links
- 広がるプログラミングと電子工作、こども、おじいちゃん、校長、そして、ギャル!見事にちょうどいいカセットテープ x IchigoJam

交流深い、鎌倉と鯖江。
鎌倉に本社を置くカヤック、社長の柳澤さんより届いた新刊「鎌倉新本主義

なんと、帯デビューというスゴイ演出、ありがとうございます!(柳澤さんによる解説

地域内最適をするほどに下がってしまうGDPという20世紀指標に替わる、地域資本のバランスという考え方とその実践が、鎌倉資本主義に詰まってました。

鎌倉資本主義提唱の地域資本を引用しつつ、新指標を勝手に名付けた「NDD」
N - 何をするか? 地域経済資本(財源や生産性) 地域内GDP?
D - 誰とするか? 地域社会資本(人のつながり) 社会的欲求、承認欲求を満たすもの?(自己実現理論より)
D - どこでするか? 地域環境資本(自然と文化) その土地の魅力?

1つ目のDは、地域通貨の流通、2つ目のDは、そこに住む人の幸福度でそれぞれ計測し、バランスと総量で比較するとおもしろそう。


カマコンバレーからカマコンとなって全国へ拡散中!
福井県鯖江市の名前も入れてもらっていました。

課題に対して理由を探るのは縦だとすると、みんなでアイデアを積み重ねるブレストは横。
縦で思考すると、横の思考が鈍るというのはなんとなく思い当たる気がします。
鯖江を楽しくイノベーションする「ブレスト」、「サバコン」としてやってみましょう!

次回、UDトークなど、多言語アプリをテーマにした鯖江市商工会議所でのイベント「あたらしもんずき勉強会 vol.3」でもブレストします。 ご都合つく方、ぜひどうぞ!

イベントの司会進行を多言語かつ自動で進めるスクリプトを作ってみました。
ひとまず、Macの標準搭載の音声合成コマンド「say」を活用したコンソール版。

時間とアナウンスして欲しい言葉を記述言語、アナウンス言語、テキストの順に書くCSVファイルを作ればOK。

0,ja,ja,英語でカップラーメンの作り方をご案内します 10,ja,en,カップラーメンにお湯を注いでください 20,ja,en,3分間の蒸らし時間に入ります 30,ja,en,10秒経過しました 40,ja,en,20秒経過しました 80,ja,en,残り2分です 140,ja,en,残り1分です 190,ja,en,10秒前 200,ja,en,カップラーメンができあがりました。どうぞお召し上がりください。

プログラムは、オープンソース、「tagengo - GitHub」にあります。
多言語翻訳アプリコンテストのアイデアやサンプル実装としてもどうぞ!
webアプリ化できると手軽に使えて便利かも。

イベントがより手軽に楽しくできるようになるツールで、地域資本主義も一歩前進!?

参考までに、多言語翻訳ライブラリを使った、Python3のプログラムはこんな感じ

import sys if len(sys.argv) < 4: print("[client_id] [clint_secret] [script.csv]") exit(0) client_id = sys.argv[1] client_secret = sys.argv[2] csvfn = sys.argv[3] from getAccessToken import getAccessToken access_token = getAccessToken(client_id, client_secret) from datetime import datetime startt = int(datetime.now().strftime('%s')) import csv with open(csvfn, newline = '') as csvfile: reader = csv.reader(csvfile, delimiter = ',') for row in reader: dt = int(row[0]) src = row[1] dst = row[2] text = row[3] if src != dst: from translate import translate text2 = translate(access_token, src, dst, text) print("time " + str(dt) + "sec : " + text + " -> " + text2) else: print("time " + str(dt) + "sec : " + text) text2 = text from time import sleep while 1: sleep(0.1) now = int(datetime.now().strftime('%s')) if now > startt + dt: break from say import say say(dst, text2)

links
- 新刊『鎌倉資本主義』の「はじめに」と第一章を全文無料公開します。 | 面白法人カヤック
- UDトーク | コミュニケーション支援・会話の見える化アプリ

越前がにロボコンなどのイベント会場で便利な会場案内。
音声合成を使って手軽に、翻訳も使えば多言語案内も即時に反映できて便利!


オートアナウンサー(越前がにロボコンデモ)

多言語音声翻訳コンテスト」で無料トライアル可能な音声合成APIを使っています。
GitHub上に、音声合成呼び出し用の Python3 のプログラムを追加したので、参考にどうぞ!
tagengo - GitHub / taisukef

音声合成API、「越前がにロボコン」のイントネーション違いが気になる。
直したいけど直す方法あるのかな?
IchigoJamでも使える、AquesTalk なら自由自在に制御可能だけど、全部設定するのがちょっと大変。
技術は適材適所で使いましょう。

日本国、内閣府の「官民研究開発投資拡大プログラム」PRISM予算で開催「多言語音声翻訳コンテスト
中学生以上の誰でも応募できるアイデア部門に加えて(小学生は残念!)、音声認識翻訳生成APIを使っての試作品コンテストもスタート!

初回で3万回、5回おかわりできる5万回分のAPIアクセス権を使って試作可能!(計28万回)
ということで、早速 Wikipedia を使った英語学習アプリを作ってみました。
英語と日本語で交互に読み上げる辞典を聞き流すことで学習する「DicLearning(ディクラーニング)」


キーワードを英語でいれると、英語版 Wikipedia で検索し、本文を1文ごとに英語で読み上げ、続いて、翻訳APIを使って日本語化した日本語で読み上げ、再度、英語で読み上げます。 関心あるキーワードだと、頭に入りやすく、操作が殆どいらないので、運転などの移動中などでも楽しく勉強できます。

試作なので、APIアクセス権を取得して使ってください。
こちらからサンドボックスサーバーのアクセス権を申請します。
届いた、client_id / client_secret を使って、GitHub "tagengo" からダウンロードしたPython3のプログラムを動かします。

python3 translateWikipedia [client_id] [client_secret] MSX

AccessToken取得、翻訳API、Wikipediaの取得などができるサンプルとしても活用ください!
* 現在、音声読み上げは Mac に付属の say コマンドを使用しています(音声生成API接続への改造もどうぞ)

まだ謎多い「多言語音声翻訳コンテスト
豪華審査員、総務大臣賞、協賛企業賞等の副賞など、どうなるんでしょうね?
それはともかく、自由にAPIが遊べる大チャンス、あれこれ遊んでみましょう!

プログラミング初心者の方には、「万華鏡アプリコンテスト」もどうぞ!

舞鶴高専出身、さくらインターネット田中さんが委員長を務める、CSAJプログラミング教育委員会に初参加、総務省提唱の地域ICTクラブと採択地域の一例として、福井県こどもプログラミング協議会などを情報提供。

いかに次世代を創るか、企業も行政も、国を含む地域を超えて人類共通の課題。MSX世代だったり、BASICからマシン語へと燃えたあの時も共有できてうれしい。(Armマシン語入門 with IchigoJam


こどもの創造と表現の場を2002年から提供し続ける、NPO法人CANVASの理事長で、超教育協会の幹事、石戸奈々子さん with 光るイチゴ帽子

便利なSaaSがあふれる現代、パソコンさえあれば、サーバーの契約など面倒なことをしなくても、オープンデータの公開、解析、人工知能活用までこどもであっても一直線。 ガンガン小中学生が楽しいエンジニアリングの世界の第一線に来れる環境づくりを目指したい。


KI of taisuke fukuno - Ambient」気分によって送信される福野泰介の「気」の値、オープンデータ

BASICでIoT、IchigoJam x sakura.io や、無線LAN MixJuiceを使ったこども簡単IoT。 サーバーがないこども視点で使えるサービス「Ambient」を使ってみました。

メールアドレスがあれば、無料登録でき、チャンネルをとりあえず生成。チャネルIDと書き込み用のライトキーと値を Python で書いたプログラム sendambient.py で送れば、即折れ線グラフ化してくれました。(参考、AmbientDataInc/ambient-python-lib - GitHub

import http.client import json import sys domain = "ambidata.io"; record = { "writeKey": sys.argv[2], "d1": sys.argv[3] } requestJson = json.dumps(record) headers = { "Content-Type": "application/json" } connect = http.client.HTTPConnection(domain) connect.request("POST", "/api/v2/channels/" + sys.argv[1] + "/data", requestJson, headers) response = connect.getresponse() print(response)

呼び出しコマンドはこちら([writekey]は一応秘密、だけど非SSL)

python sendambient.py 6728 [writekey] 15

送ったデータの読み出しは、単純にwebアクセスで JSON で取得ok!
http://ambidata.io/api/v2/channels/6728/data
(callbackパラメータを指定できるとwebアプリで簡単に使えてうれしいところ!)

IchigoJam x MixJuice を使ったサンプルの丁寧な解説もあります!
IchigoJam + MixJuiceで製作するIoTセンサ – Ambient

いろんなサービスとの連携、開発、提案、紹介していきたいと思います!

教育は最大の投資なり

Maker Faire Tokyo 2018、閉幕。今年もいろんな刺激とたくさんの出会いがありました。
ハッシュタグを追いかけ見つけた、見たかった作品はこちら、IoT黒電話!


なんと小学生がラズパイとPythonで作ったとのこと。こどもの活躍、うれしい!


台湾のプログラミング教育のためのWiFiBoy32で、初MicroPythonに挑戦してみました。

WiFiBoy32で、MicroPythonをインストールし、エルチカするまでの手順
1. esp32用ツールにパスを通す

export PATH=$PATH:/Users/[username]/Documents/Arduino/hardware/espressif/esp32/tools/

2. MicroPythonをダウンロード
3. バイナリを WiFiBoy32 に転送(しばし待つ)

esptool.py --chip esp32 --port /dev/tty.SLAB_USBtoUART write_flash -z 0x1000 esp32-20180805-v1.9.4-440-g3bef7bd78.bin

4. シリアルで接続する

screen /dev/tty.SLAB_USBtoUART 115200

5. 記事を参考にLEDを光らせてみる

import machine led = machine.Pin(16, machine.Pin.OUT) led.value(0)

* WiFiBoy32のLED、回路図を見るとGPIO16をOFFで光るように接続されている
6. エルチカ(上キーを押したら光りっぱなし)

import machine import utime up = machine.Pin(33, machine.Pin.IN, machine.Pin.PULL_UP) led = machine.Pin(16, machine.Pin.OUT) while True: if up.value(): led.value(1) utime.sleep_ms(500) led.value(0) utime.sleep_ms(500)

できた!
いつものPythonで動くのは便利!

でも、やっぱり短いコードなら、IchigoJam BASICの方が簡単!

10 LED BTN(UP)=0:WAIT30 20 LED0:WAIT30 30 GOTO10

IchigoJamでいろいろいじって工夫して、物足りなさを感じてからのステップアップがおすすめです。


こどもプログラミングの老舗、LEGOマインドストームは20周年!貴重な初代モデル展示がありました!


子どもプログラミング喫茶、たくさんの感動が生まれました!


大人も体験プログラミング!


訪ねてきてくれたIchigoJamオーナーと記念写真!


USBシリアルと電源の切り替えスイッチを搭載した、自慢のオレンジカムロボを見せてくれました。


IchigoJam、一度教わると、教えられそうかなっと思えるくらいの簡単さが特徴です。
大人にも喜んでもらえるとうれしい!


上級者にはIoT対応IchigoSodaをいろいろいじってもらってメンタリング。どんどん勝手に夢膨らむ感じがステキ!


IchigoJamの初参加!OtOMOの倉本さん、楽しい機会をありがとうございました!


15歳のWiFiBoy創業者、PCNブースにも来てくれました!


供の操縦、楽しそう!タミヤのムカデロボ、すでにサーボでラジコン化されてました。


PCN北千住&PCNブース、おつかれさまでした!


PCNブース、たくさんのご来訪ありがとうございました。子供でもできちゃう手書きPOPメソッド。


花添えた、未就学児でも楽しめるプログラミング環境「IchigonQuest」のエルイー


たくさんのこどもたち!


こどもが作った作品を、こどもが楽しむ!


こどもが開発、笑顔になれるボタン!


高専カンファレンス、おびなたさん!


イスラエルから!


Pimoroni x MagPi


ラズパイユーザーグループ太田さんと!


同時開催のデザフェス、オレンジの作業服が決まってる「紙でできた道路アクセサリー」というレアジャンル!


極小LEDをなんと手半田して作っている光るペンダント。光るアクサリー、来ますね!


大好きなBLAMEのような世界観。


融合するともっと楽しいことになりそう!


Startup Weekend Tokyo @ Maker Faire Tokyo


今回のMaker Faire内開催の発端となった、大田区、スゴイ!沖縄も鯖江市も負けてはられません!


子供の発想による自由な作品が増えるともっとすごいイベントになりそう!
Maker Faire、次は大垣開催

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / アイコン画像 / プロフィール画像