значение из блока не получено из развернутого смарт-контракта - PullRequest
0 голосов
/ 17 марта 2019

Я написал умный контракт для отправки данных датчика с Raspberry Pi, а также для получения значений. Код работает без каких-либо ошибок. Затем я написал web3js для получения значений и отображения на веб-странице, а код: `

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

    <link rel="stylesheet" type="text/css" href="main.css">
   <!-- <script src="./node_modules/web3/dist/web3.min.js"></script>-->
    <script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>

</head>
<body>
    <div class="container">

        <h1>Smart Maintenance</h1>
        <div>
        <p id="sData">value in the block</p>
        </div>
    </div>

    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>

    <script>
        //var Web3 = require('web3')
        if (typeof web3 !== 'undefined') {
            web3 = new Web3(web3.currentProvider);
        } else {
             //set the provider you want from Web3.providers
           web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:8545"));
        }

        var abi= [
    {
        "constant": false,
        "inputs": [],
        "name": "getSensorData",
        "outputs": [
            {
                "name": "",
                "type": "int256"
            }
        ],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "constant": false,
        "inputs": [
            {
                "name": "_sensorData",
                "type": "int256"
            }
        ],
        "name": "setSensorData",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "name": "_sensorData",
                "type": "int256"
            }
        ],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "constructor"
    }
]
    var ContractAddress = '0x2f5beA7A525074f64929F6D237d4A9dA1B182ADC';
    var myAbi = web3.eth.contract(abi);
    var myfunction = myAbi.at(ContractAddress);
    //const StoreIntegerValue = web3.eth.Contract({abi}, ContractAddress);
    console.log(myfunction);
    myfunction.getSensorData.call(function(error, result){
        if(!error)
                {

                       $("#sData").text(result + ' degrees' );
                        console.log(result);




                }
            else
                console.error(error);


    });
    //var sensData = myfunction.getSensorData.call();
    //console.log(sensData)


    </script>

</body>
</html>` 

из console.log (myfunction) Я мог видеть, что есть контакт с контрактом и методами. Но я не вижу желаемого результата для console.log (результат). выход . Я пробовал разные методы, но не помогло. Пожалуйста, помогите мне Примечание: я хотел бы вызвать метод setSensorData в Raspberry Pi. и вызовите getSensorData для webUI с другого компьютера позже в приватной цепочке блоков. следовательно, в настоящее время тестируем для setSensorData и getSensorData в localhost отдельно.

...