動かないものの最後にpythonのコードを追加します

以下の様にスマートコントラクトを実装しました

pragma solidity ^0.4.23;
contract Vote {
    address public sender;
    mapping (address => uint256) public balanceOf;
    uint private amount;

    function Vote() {
    }

    function deposit() public payable {
        sender = msg.sender;
        amount += msg.value;
    }

    function transfer(address _to, uint256 _vt) {
        _to.transfer(_vt);
    }        
}

うまくいかないのは、deposit機能です
remixでvalueを入力し、depositを実行することでスマートコントラクトアドレスに送金することはできました
実際はpythonのコードで任意のアカウントからdeposit機能を呼び出して送金したいのですが方法がわかりません
コントラクトアドレス対してはsendTransactionは使えないということまではわかりました

from eth_utils import add_0x_prefix
from web3 import Web3, HTTPProvider
from web3.contract import ConciseContract

web3 = Web3(HTTPProvider('http://localhost:8545'))

def contract_vote():
    from_account = add_0x_prefix('0xfrom')
    contract_address = add_0x_prefix('0xcontract_address')
    abi_ = [{'constant': True, 'inputs': [], 'name': 'sender', 'outputs': [{'name': '', 'type': 'address'}], 'payable': False, 'stateMutability': 'view', 'type': 'function'}, {'constant': True, 'inputs': [{'name': '', 'type': 'address'}], 'name': 'balanceOf', 'outputs': [{'name': '', 'type': 'uint256'}], 'payable': False, 'stateMutability': 'view', 'type': 'function'}, {'constant': False, 'inputs': [{'name': '_addr', 'type': 'address'}], 'name': 'chkBalance', 'outputs': [], 'payable': False, 'stateMutability': 'nonpayable', 'type': 'function'}, {'constant': False, 'inputs': [{'name': '_to', 'type': 'address'}, {'name': '_vt', 'type': 'uint256'}], 'name': 'transfer', 'outputs': [], 'payable': False, 'stateMutability': 'nonpayable', 'type': 'function'}, {'constant': False, 'inputs': [], 'name': 'deposit', 'outputs': [], 'payable': True, 'stateMutability': 'payable', 'type': 'function'}, {'inputs': [], 'payable': False, 'stateMutability': 'nonpayable', 'type': 'constructor'}]
    contract_instance = web3.eth.contract(abi=abi_, address=contract_address, ContractFactoryClass=ConciseContract)

    web3.personal.unlockAccount(from_account, 'pwd')

    res_to = contract_instance.functions.deposit().call({'from': from_account, 'to': contract_address, 'value': web3.toWei(1, 'ether')})

    web3.personal.lockAccount(from_account)

if __name__ == '__main__':
    contract_vote()

エラーメッセージ

Traceback (most recent call last):
  File "sendtoca.py", line 20, in <module>
    contract_vote()
  File "sendtoca.py", line 15, in contract_vote
    res_to = contract_instance.deposit({'from': from_account, 'to': contract_address, 'value': web3.toWei(1, 'ether')})
  File "/usr/local/lib/python3.6/site-packages/web3/contract.py", line 777, in __call__
    return self.__prepared_function(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/web3/contract.py", line 790, in __prepared_function
    return getattr(self._function(*args), modifier)(modifier_dict)
  File "/usr/local/lib/python3.6/site-packages/web3/contract.py", line 919, in __init__
    self._set_function_info()
  File "/usr/local/lib/python3.6/site-packages/web3/contract.py", line 925, in _set_function_info
    self.kwargs)
  File "/usr/local/lib/python3.6/site-packages/web3/utils/contracts.py", line 100, in find_matching_fn_abi
    raise ValueError("No matching functions found")
ValueError: No matching functions found
xxxxxxxx:Etherreum xxxxxx$ python3 sendtoca.py 
Traceback (most recent call last):
  File "sendtoca.py", line 20, in <module>
    contract_vote()
  File "sendtoca.py", line 15, in contract_vote
    res_to = contract_instance.functions.deposit({'from': from_account, 'to': contract_address, 'value': web3.toWei(1, 'ether')})
AttributeError: 'ConciseContract' object has no attribute 'functions'

remixからmsgを送っている様にするにはpythonのコードはどのように記載すると良いでしょうか?
callするようにweb3pyのドキュメントにあると思っているのですが分りません