2020年4月1日水曜日

ラズパイ(IOT・74)

jQueryアナログパッドプラグインをラズパイ上で動作できるように
Webサーバーに設置し、node.jsと連携してみたいと思います。
今回追加するjQueryアナログパッドのjsとcssファイルを
組み込みます。

まず、node側
  socket.on('set_motor', function(msg) {
    console.log('set_motor: ' + msg);
    io.emit('set_motor', msg);
  });

ページ側
  setInterval(function() {
    var input1 = _analogpad1.input();
    var x1 = input1.x;
    var y1 = input1.y;
    var input2 = _analogpad2.input();
    var x2 = input2.x;
    var y2 = input2.y;
    if (_x1 != x1 || _y1 != y1 || _x2 != x2 || _y2 != y2) {
      _x1 = x1;
      _y1 = y1;
      _x2 = x2;
      _y2 = y2;
      $('#x1').val(_x1);
      $('#y1').val(_y1);
      $('#x2').val(_x2);
      $('#y2').val(_y2);
      socketio.emit('set_motor', { "x1": _x1, "y1": _y1, "x2": _x2, "y2": _y2 });
    }
  }, 50)

Python側もnodeに接続して制御します
    @sio.on('set_motor')
    def on_set_motor(data):
        print('I received a set_motor x1: ' + str(data['x1']) + ' y1: ' + str(data['y1']) + \
            ' x2: ' + str(data['x2']) + ' y2: ' + str(data['y2']))
        
        if (data['y1'] > 0.1):
            i2c.write_byte_data(adr0, 0, 0b10100101)
        elif (data['y1'] < 0.1):
            i2c.write_byte_data(adr0, 0, 0b10100110)
        else:
            i2c.write_byte_data(adr0, 0, 0b110100)
        
        if (data['y1'] == 0):
            i2c.write_byte_data(adr0, 0, 0b110100)
        
        if (data['y2'] > 0.1):
            i2c.write_byte_data(adr1, 0, 0b10100101)
        elif (data['y2'] < 0.1):
            i2c.write_byte_data(adr1, 0, 0b10100110)
        else:
            i2c.write_byte_data(adr1, 0, 0b110100)
        
        if (data['y2'] == 0):
            i2c.write_byte_data(adr1, 0, 0b110100)

0 件のコメント:

コメントを投稿