Я написал умный контракт для отправки данных датчика с 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 отдельно.