とりいそぎ自己解決しました。
img.crossOrigin = "Anonymous";
を指定し、かつChromeブラウザにCORS回避の拡張を入れたら動きました。もっとスマートな解決方法があればお知らせください。
とりいそぎ自己解決しました。
img.crossOrigin = "Anonymous";
を指定し、かつChromeブラウザにCORS回避の拡張を入れたら動きました。もっとスマートな解決方法があればお知らせください。
obnizのCanvasに表示する画像を外部サイトからImageオブジェクトに読み込もうとすると、CORSのエラーが発生します。
Uncaught SecurityError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data.
これを回避するにはどうすればいいでしょうか? リポジトリAPIを使い画像ファイルをobnizのリポジトリに置くしか方法はないでしょうか?
おおすばらしい! さっそく後ほど試してみますね。この指紋スキャナーのプロトコルはシンプルなので、そんなに苦労せずobnizから使えそうです。動いたらお知らせします。
この指紋スキャナーをつなげようとしています。
https://learn.sparkfun.com/tutorials/fingerprint-scanner-gt-521fxx-hookup-guide
でもUARTが3.3Vです。。obnizのUART APIで電圧を指定する方法はありますでしょうか?
了解です、また復活させて使ってみますね。
ちなみに、このエラーハンドリングを入れてから安定して長期稼働できるようになりました。数時間に1回の割合でresetしているようです。
この現象に関連しているかどうか不明ですが、長時間運用時にまた別のエラー(添付画像)が発生しています。1日に数回の割合です。お知らせまで。
ありがとうございます!
この方法を試してみます。
ちなみに私が観測しているエラーですが、Wifi接続されたPCのブラウザから長時間実行していると出る気がします。obnizとブラウザ間の通信が滞ったときにどこかにリクエストが溜まって、、って感じかなと想像していました。
WS2812搭載のLEDを60個接続し、hsvs関数で表示制御しています。1時間ほど連続使用していると時折以下のようなエラーが発生し、制御がフリーズすることはしばしば発生します。こうしたエラーをcatchして本体resetすることは可能でしょうか?
@Yuki-Sato 対応パーツリストのコードそのままで動きました!
見逃していました。お知らせありがとうございます!
AdafruitのNeoPixel LEDをつないで時計を作ろうとしています。
https://www.switch-science.com/catalog/1861/
でもこれ、LEDの制御のために800KHzもしくは400KHzでシリアル制御が必要です。0.1us単位でduty比を制御して0/1を伝えます。
http://mirata.blogspot.com/2017/04/led-ws2812.html
PWMのmodulateでパルス幅変調をサポートしていただければ、LEDを制御できそうです。いかがでしょうか? 現状では手がないので、しょうがなくArduinoを間に入れるしかないかなと思ってます。
このNeoPixelのLED制御プロトコルってとてもポピュラーなので、obnizから以下のようなハデハデ系LEDを簡単に制御できるようになると、かっこいいデモもいろいろ作れると思います。屋外や店舗で使えるデカいLEDディスプレイも作れそう。
https://goo.gl/Lp8K7u
もし対応していただけるなら、ベータテスターとしてお手伝いできると思います。ぜひご検討ください!
自己解決しました。使用している天気APIサイト側がCORSに対応しておらず、ブラウザ内で以下のエラーが発生していました。
obniz_undefined_2018_8_27_10_10_55.html:1 Failed to load https://samples.openweathermap.org/data/2.5/forecast?id=524901&appid=b1b15e88fa797225412429c1c50c122a1: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
以下のコードで外部の天気APIを呼び出そうとしています。
$.ajax({
type: "GET",
scriptCharset: "utf-8",
dataType:"json",
url: "https://samples.openweathermap.org/data/2.5/forecast?id=524901&appid=b1b15e88fa797225412429c1c50c122a1",
}).done(function(data) {
console.log(data);
}).fail(function(xhr, status, error) {
console.log(xhr);
console.log(status);
console.log(error);
});
このコードをブラウザから実行するとstatus = errorとなりJSONが取得できませんが、Cloudイベントとして実行するとJSONが取得できます。なぜ前者では取得できないのでしょうか?
ブラウザはChrome (mac), Safari, Firefoxで試してみましたが、いずれも結果はエラーでした。