ラズパイからコマンドを送ってWindowsにいろいろやってもらう(5)


ラズパイ側でコマンドを作って送信、Windowsにいろいろやってもらう…..シリーズでは音声認識でコマンドを送っていましたが今回は単純にPythonからsocketでコマンドを1対1で送るだけです。

何をやるかというと、Windows側でEtehreumのマイニングをやってもらいます。

赤線

ラズパイからWin10にマイニングをお願い

青線

Win10からマイニングの状況をラズパイへ通知

 

 

ラズパイから制御

CURL  JSON-RPC APIを使って、8545ポートで直接Windows10側IPアドレスに通信することはできません(着信拒否されます)。

socketを使います。

ラズパイ(Python) ->socket ->Windows(Python)

Pythonコード

【送信側】

 

 

【受信側】

CURL  JSON-RPC API経由でGethのコマンドを使ってみます。

Pythonから直接JSON-RPCを実行する場合

Windowsではpyinstallerで実行形式にしておきます(PythonファイルはUTF-8 BOM無しで保存)。

 

 


やってみます

WindowsでGeth起動->ラズパイでGeth起動->static-nodes.jsonで相互接続->ラズパイからwindowsへマイニングを依頼->Windowsでマイニングを実行

同期の状況

3つを比べて観ると、同じ番号(1211)のブロック生成でラズパイの方が表示が早いように見えますが、時計を確認してみるとラズパイは両方ともWindowsより約2秒遅れていました。辻褄はあっています。つまりWindowsでマイニングした結果がラズパイに渡されています(^^)。なぜラズパイの時計がずれるのかというとラズパイはハードウエア時計(RTC)を持っていないからだそうです。

Windowsのログ

ラズパイBの画面

ラズパイB+の画面

 


WindowsでGethを使っている場合

miner.start()をやってもマイニングが実行されないという現象が起こりました。

原因は不明なのですが、対策としてこんなことをやってみました

これでいいのかな?

 


Next

Ethereumのスマートコントラクトでなんかやってみます。

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*