Fórum | MyPower.CZ | Obnovitelné zdroje energie - energetická soběstačnost | Poslední návštěva: ned kvě 28, 2023 1:33 am
Frenky píše:Ta špatná hodnota Napětí pole samozřejmně souvisí, viz program. Protože když dáš "A", tak se to počítá podle vorce na proud (iscale). Takže je to potřeba opravit! Ale alespoň to není taková nuda, vždy je potřeba trochu postudovat materiál. Ještě jednou D Ě K U J I autorovi za prográmek.
Snažím se příklad aplikovat na zařízení SDS, ale zatím se mi nedaří. Nemohu od tristaru dostat odpověd přes funkci
http_get(192,168,1,251,'192.168.1.251','/MBCSV.cgi?ID=1&F=4&AHI=0&ALO=35&RHI=0&RLO=1');
Pokusím se ještě postudovat. Další pokus udělám s tím, že uvedený příklad nahraji do SDS, výsledky uveřejním zde.
Je potřeba zjistit, jaká má být hodnota "hostname", a tu správně vyplnit do http_get().
Protože na jedné IP může současně běžet i např. sto různých serverů, a to právě díky HTTP 1.1 specifikaci, kdy se tyto jednotlivé servery od sebe odliší právě hodnotou v "hostname".
Doporučuji zachytit si paket HTTP GET, který posílá prohlížeč když se v něm otevře ten fungující odkaz, a podle obsahu toho paketu pak vyplnit volání funkce http_get() v programu.
Tak jsem to po cca 14 dnech vyřešil
musím napsat před můj web ještě slovo "localhost"
http_get(88,86,113,152,'localhost.hrdlickovi.wz.cz','/data.php......
<?
$ip_tristaru="192.168.1.1:80";
$klice=array(
"napeti baterie" =>array("38","V"),
"cilove napeti" =>array("51","V"),
"Nabijeci proud" =>array("39","A"),
"Napeti pole" =>array("27","V"),
"Proud pole" =>array("29","A"),
"Vystupni vykon" =>array("58","W"),
"Sweep Vmp" =>array("61","V"),
"Sweep Voc" =>array("62","V"),
"Sweep Pmax" =>array("60","W"),
"Teplota Baterie"=>array("37","C"),
"Teplota Tristar"=>array("35","C"),
"Kilowatty" =>array("56","kWh"),
"Stav nabijeni" =>array("50",""),
);
// funkce
function get_data($ip,$alo) {
if (($handle = fopen("http://".$ip."/MBCSV.cgi?ID=1&F=4&AHI=0&ALO=".$alo."&RHI=0&RLO=1", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$hodnota[1]=$data[3];
$hodnota[2]=$data[4]; }
fclose($handle);
}
Return $hodnota;
}
function get_scale($ip,$alo){
$hi=get_data($ip,$alo);
$lo=get_data($ip,$alo+1);
$hi=$hi[2];
$lo=$lo[2];
$scale_factor=$hi.($lo/65535);
return $scale_factor;
}
function get_scaled_value($raw_data,$jednotka,$vscale,$iscale){
switch ($jednotka) {
case "V":
$hodnota=$raw_data[1]*256+$raw_data[2];
$vysledek=(($hodnota*$vscale)/32768)/10;
break;
case "A":
$hodnota=$raw_data[1]*256+$raw_data[2];
$vysledek=(($hodnota*$iscale)/32768)/10;
break;
case "W":
$hodnota=$raw_data[1]*256+$raw_data[2];
$vysledek=(($hodnota*$vscale*$iscale)/131072)/100;
break;
case "C":
$vysledek=$raw_data[2];
break;
case "kWh":
$vysledek=$raw_data[2];
break;
default:
$vysledek=$raw_data[2];
$charge_state = Array("Start","Night Check","Disconnect","Night","Fault","MPPT","Absorbtion","Float","Equalize","Slave");
$vysledek=$charge_state[$vysledek];
break;
}
if(is_numeric($vysledek)) {
return round($vysledek,2);} else {
return $vysledek;
}
}
// samotny program
$vscale=get_scale($ip_tristaru,0);
$iscale=get_scale($ip_tristaru,2);
foreach($klice as $polozka=>$hodnota)
{
list($alo,$jednotka)=$hodnota;
$raw_data=get_data($ip_tristaru,$alo);
echo $polozka . ":" . get_scaled_value($raw_data,$jednotka,$vscale,$iscale).$jednotka."<br>";
}
napeti baterie:29.4V
cilove napeti:29.4V
Nabijeci proud:2.93A
Napeti pole:64.59V
Proud pole:1.19A
Vystupni vykon:85.69W
Sweep Vmp:56.82V
Sweep Voc:70.05V
Sweep Pmax:350.79W
Teplota Baterie:25C
Teplota Tristar:26C
Kilowatty:149kWh
Stav nabijeni:Absorbtion
doba absorbce:144.7min
doba equalizace:0min
doba floatu:0min
Max vykon(dnes):439.34W
Amper hodin(dnes):36.8Ah
Watt hodin(dnes):1020Wh
Max Napeti pole(dnes):70.05V
Max napeti baterie(dnes):29.5V
Min napeti baterie(dnes):25.41V
Vstupni vykon:77.12W
LED indikator:blika 1x za sec zelena LED
napeti baterie na svorkach:29.49V
napeti baterie na sonde:29.39V
miroc píše:Srdecna vdaka!!!
Skusim si ten Ajax pre obnovu dat nastudovat, ale naozaj nie som programator, takze ruzovo to nevidim
Som velmi vdacny za ten kod, pretoze s originalnym webserverom tristaru mavam problem. Uz sa to tu tusim pisalo, ze po case jednoducho prestane byt dostupny. Predpokladam, ze tymto sposobom sa budu dat data ziskavat bez problemov.
miroc píše:Skusim si ten Ajax pre obnovu dat nastudovat
prochazka85 píše:Frenky píše:Ta špatná hodnota Napětí pole samozřejmně souvisí, viz program. Protože když dáš "A", tak se to počítá podle vorce na proud (iscale). Takže je to potřeba opravit! Ale alespoň to není taková nuda, vždy je potřeba trochu postudovat materiál. Ještě jednou D Ě K U J I autorovi za prográmek.
Snažím se příklad aplikovat na zařízení SDS, ale zatím se mi nedaří. Nemohu od tristaru dostat odpověd přes funkci
http_get(192,168,1,251,'192.168.1.251','/MBCSV.cgi?ID=1&F=4&AHI=0&ALO=35&RHI=0&RLO=1');
Pokusím se ještě postudovat. Další pokus udělám s tím, že uvedený příklad nahraji do SDS, výsledky uveřejním zde.
Bohuzel zarizeni SDS nemam abych poradil, jedine co muzu rici ze struktura GETu je v poradku, takze chyba musi byt nekde jinde.
Neco jsem pohledal treba to pomuze:Je potřeba zjistit, jaká má být hodnota "hostname", a tu správně vyplnit do http_get().
Protože na jedné IP může současně běžet i např. sto různých serverů, a to právě díky HTTP 1.1 specifikaci, kdy se tyto jednotlivé servery od sebe odliší právě hodnotou v "hostname".
Doporučuji zachytit si paket HTTP GET, který posílá prohlížeč když se v něm otevře ten fungující odkaz, a podle obsahu toho paketu pak vyplnit volání funkce http_get() v programu.Tak jsem to po cca 14 dnech vyřešil
musím napsat před můj web ještě slovo "localhost"
http_get(88,86,113,152,'localhost.hrdlickovi.wz.cz','/data.php......
jak se zda tvuj problem muze byt s hostname
Viz: http://forum.merenienergie.cz/viewtopic.php?id=83
Frenky píše:Muj TRISTR je pristupny pres NET na adrese 78.45.24.103:1111 (jestli to jde vycist pres internet na dálku.
Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků