Автор Тема: Фотон-100-50 контроллер солнечных панелей  (Прочитано 1311 раз)

Оффлайн Александр

  • Пользователь
  • **
  • Сообщений: 70
  • Репутация: 1
Re: Фотон-100-50 контроллер солнечных панелей
« Ответ #15 : 07 Январь 2019, 00:18:14 »
Еще немного информации для Фотон-100-50-IoT

"Простыни" исходных кодов страниц выкладываю на всякий случай. Естественно, что их можно получить самостоятельно, но вдруг пригодится кому-то, у кого нет такого контроллера.

Адрес по которому отдаются данные о текущем состоянии контроллера http://IP/data.json
Авторизация организуется стандартно http://login:password@192.168.100.47/data.json
Получить данные можно при помощи GET запроса.
Пример ответа:
{"vin":281,"vout":281,"cin":0,"cout":0,"temp":22,"charge":72,"relay":0,"pwr":0,"vch":303,"vfl":303,"ich":40,"ifl":1,"v_relay_on":260,"v_relay_off":250,"mppt_percent":75,"snd_ena":1,"light_mode":1,"contrOn":0,"bat_lo":240,"bat_hi":297,"ssidPass":"password","ssid":"SSID","iLogin":"login","iPass":"password","cloudName":"url","cloudKey":"api_key","ApPass":"11111111","relay_mode":0,"mppt_mode":3,"st_mode":0,"refr":10,"modd":41,"eday":7,"etot":8,"sec":45,"min":48,"hour":23,"date":6,"month":1,"year":19}

Хорошая задумка видимо была - есть "eday" и "etot" да вот беда - они всегда одни и те же и не используются на странице состояния.

Получить отдельные параметры в переменные можно вот таким скриптом.
<?php

$login_url 
'http://login:password@192.168.100.47/data.json'// URL запроса

$ch curl_init(); // создание объекта curl
curl_setopt($chCURLOPT_URL$login_url ); // задаем URL
curl_setopt($chCURLOPT_RETURNTRANSFERtrue); // вернуть результат запроса
$json curl_exec($ch); // выполнить запрос
$array json_decode($jsontrue);

$result $array['vin']/10;
echo 
$result;
echo 
"<br>"

$result $array['cin']/10;
echo 
$result;
echo 
"<br>";


$result $array['vout']/10;
echo 
$result;
echo 
"<br>";

$result $array['cout']/10;
echo 
$result;
echo 
"<br>";

$result $array['pwr']/10;
echo 
$result;
echo 
"<br>";

$result $array['temp'];
echo 
$result;
echo 
"<br>";
?>


Исходный код страницы текущего состояния контроллера.
[spoiler]
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<link rel="icon" href="/favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<title>Фотон-100-50-IOT мониторинг</title>
</head>
<body>
<div align="center"><img  src="ae.jpg"  height="133" width="200" alt="logo"/>  </div>
<font size="7">
<div align="center">Мониторинг контроллера</div>
<table align="center" >
<tr>
<td align="right"> Фотон-100-50-</td>
<td align="left"><img src="iot.jpg"  height="70" width="70" alt="iot"/></td>
</tr>
</table>
</font>

<p align="left"><font size="5">
<a href="\setting.html">Настройки контроллера</a>
<a href="\internet.html">Сетевые настройки</a>
<a href="\graph.html">Графики работы</a>
<a href="\help.html">Справка по функциям</a>
</font></p>
<table align="center" width="100%">
<tr>
<td colspan=2 align="right"  width="20%" ><img id="panel" src="sol.jpg"  width="100%" alt="panel" /><img id="night" src="night.jpg"  width="1%" alt="night" /></td>
<td  width="20%"><marquee direction="right" scrollamount="2" scrolldelay="150" ><img id="arrow1" src="arr.jpg" height="46" width="91" alt="arrow" /></marquee></td>
<td colspan=2 align="center" width="20%"><img src="cont.jpg" width="100%" alt="controller" alt="" /></td>
<td  width="20%"><marquee direction="right" scrollamount="2" scrolldelay="150"><img id="arrow2" src="arr.jpg" height="46" width="91" alt="arrow" /></marquee></td>
<td colspan=2 width="20%"><img src="bat2.jpg" " width="100%" alt="battery" /></td>
</tr>
<tr>
<td align="right">Входное напряжение</td>
<td  id="vin"  align="right" bgcolor="#f0f0f0" style="font-size:200%;border-style:inset" >12,5B</td>
<td></td>
<td align="right">Температура</td>
<td id="temp"  align="right" bgcolor="#f0f0f0" style="font-size:200%;border-style:inset">0C</td>
<td></td>
<td align="right"  >Выходное напряжение</td>
<td id="vout" align="right" bgcolor="#f0f0f0" style="font-size:200%;border-style:inset">0B</td>
</tr>
<tr>
<td align="right">Входной ток</td>
<td id="cin"  align="right" bgcolor="#f0f0f0" style="font-size:200%;border-style:inset">10,1A</td>
<td></td>
<td align="right">Режим работы</td>
<td id="modd"   bgcolor="#f0f0f0" style="font-size:100%;border-style:inset">--</td>
<td></td>
<td align="right">Выходной ток</td>
<td id="cout" align="right" bgcolor="#f0f0f0" style="font-size:200%;border-style:inset">0A</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td rowspan=2 align="right">реле</td>
<td rowspan=2 align="center">
<img id="relayOff" src="relOff2.jpg"  height="99%" alt="relay" />
<img id="relayOn" src="relOn.jpg" height="1%" alt="relay" />
</td>
<td></td>
<td align="right">Мощность</td>
<td id="pwr" align="right"  bgcolor="#f0f0f0" style="font-size:200%;border-style:inset">0.1W</td>
</tr>


<tr>
<td></td><td></td><td></td><td></td>
<td align="right">Заряд</td>
<td id="charge"  align="right" bgcolor="#f0f0f0" style="font-size:200%;border-style:inset">0%</td>
</tr>


</table>
<p align="right"><a href="http://www.a-electronica.ru " >www.a-electronica.ru 2018</a></p>
<script type="text/javascript">
window.onload = setTimeout(instData,1000);//instData();

//window.addEventListener("load", instData());

function instData(){
var request= new XMLHttpRequest();
request.open('POST','/data.json',true);
request.setRequestHeader('Content-Type', 'text-plain');// Отправляем кодировку
request.onreadystatechange=function(){
if( request.readyState==4 ){
var data=JSON.parse(request.responseText);
if( data.contrOn!=1){
document.getElementById('vin').innerHTML="-";
document.getElementById('cin').innerHTML="-";
document.getElementById('cout').innerHTML="0A";
document.getElementById('modd').innerHTML="ожидание";
document.getElementById('pwr').innerHTML="0W";
document.getElementById('arrow1').style="display:none";
document.getElementById('arrow2').style="display:none";

document.getElementById('panel').style.width = "1%";
document.getElementById('night').style.width = "100%";
}
else {
document.getElementById('vin').innerHTML=(data.vin/10).toFixed(1)+"В";
document.getElementById('cin').innerHTML=(data.cin/10).toFixed(1)+"A";
document.getElementById('cout').innerHTML=(data.cout/10).toFixed(1)+"A";
if( data.modd==1){
document.getElementById('modd').innerHTML="заряд постоянным напряжением";}
else if (data.modd==0){
document.getElementById('modd').innerHTML="заряд постоянным током";}
else {
document.getElementById('modd').innerHTML="поддерживающий заряд";}
document.getElementById('pwr').innerHTML=(data.pwr/10).toFixed(1)+"W";
document.getElementById('arrow1').style="";
document.getElementById('arrow2').style="";

document.getElementById('panel').style.width = "100%";
document.getElementById('night').style.width = "1%";
}
document.getElementById('vout').innerHTML=(data.vout/10).toFixed(1)+"В";
document.getElementById('temp').innerHTML=data.temp+"\u00B0C";

if( data.relay==1) {
document.getElementById('relayOn').style.height="99%";
document.getElementById('relayOff').style.height="1%";
}
else {
document.getElementById('relayOn').style.height="1%";
document.getElementById('relayOff').style.height="99%";
}


document.getElementById('charge').innerHTML=data.charge+"%";

//document.getElementById('panel').width = "1%";
//document.getElementById('night').width = "100%";

setTimeout(instData,1000);
}
}
request.timeout = 15000;
request.onerror=function(){ setTimeout(instData,30000); };
request.ontimeout=function(){ setTimeout(instData,30000); };

request.send(null);
}

</script>
</body>
</html>
[/spoiler]
« Последнее редактирование: 07 Январь 2019, 01:06:30 от Александр »

 

Яндекс.Метрика