Téma: Získání hodnot z teplotních čidel: problém se zápornými hodnotami
Dobrý den,
mám SDS-MICRO a včera jsem aktualizoval firmware. Nicméně problém, který budu popisovat byl stejný i u předchozího firmware. Při kontrole aktuálnosti firmwaru dostávám zprávu:
Váš firmware je aktuální.
Zařízení: SDS MICRO LM
Verze použitého firmware: 1.7.2022
Nejnovější dostupný vydaný (stable) firmware: 1.7.2022
Naměřené teploty zobrazuji na User Web Page (http://192.168.1.251/user.htm), kterou jsem upravil na základě nějakého příkladu z vaší podpory. Problém není přímo s User Web Page, nicméně uvnitř user.htm pomocí javascriptového http requestu načítám hodnoty teplot ze zařízení. Následující ukázka není přesnou kopií použitého kódu, ale "vyzobávám" z něj jen podstatné věci:
reqTemp=false;
if(window.XMLHttpRequest){
reqTemp=new XMLHttpRequest();
}
else if (window.ActiveXObject){
reqTemp=new ActiveXObject("Microsoft.XMLHTTP");
}
if (reqTemp){
reqTemp.open("GET", "get_ram[292]?rn=16&rand="+Math.random(), true);
reqTemp.onreadystatechange = reqTempComplete;
reqTemp.send(null);
}
function reqTempComplete(){
if(reqTemp.readyState == 4){
if(reqTemp.status == 200){
if (reqTemp.responseText!='') {
var rE=reqTemp.responseText.split("|");
var rE=reqTempXML.responseText.split("|");
...
Takže http requestem získám řetězec 16ti hodnot a ty pak splituju do pole a dále v kódu každou hodnotu dělím 100 ... to je vše v pořádku. Pro simulaci získaných hodnot mohu přímo do adresní řádky prohlížeče vepsat následující URL:
192.168.1.251/get_ram[292]?rn=16
Strukturu parametrů requestu chápu tak, že požaduji vypsání 16ti hodnot z RAM paměti od indexu 292. Je to tak?
A v prohlížeči pak vidím získané hodnoty:
6868|3975|2950|3250|2800|2631|5325|2818|2600|5125|5537|2350|6300|3675|768|687
PROBLÉM je, že takto získané hodnoty (citované v předchozím rámečku) neobsahují záporné hodnoty. Pokud je na některém z čidel záporná hodnota (menší než 0), tak na příslušném místě responseTextu je poslední naměřená nezáporná hodnota.
Včera jsem toto chování simuloval obložením jednoho čidla chladícími vložkami z mrazáku Myslel jsem si, že mám nějakou chybu v javascriptu User Web Page, ale pak jsem si to ověřil přímo v browseru zadáním výše zmíněné URL. Problém jsem vyřešil tak, že naměřené hodnoty získávám http requestem z jiné URL:
192.168.1.251/temp.xml
a na této URL správně dostávám XML se správnými (i zápornými) hodnotami.
Nicméně mě napadlo, že byste o tomto problému chtěli vědět. Předpokládám, že se to dá opravit ve firmwaru ... ale tím si nejsem jistý. Pro upřesnění dodávám, že pracuji jako webový programátor (PHP, SQL, HTML, JAVASCRIPT, CSS). Podle toho můžete formulovat odpověď.
Závěrem mi dovolte poděkovat vám za vaší práci a podporu. Pomocí vaší technologie měřím teploty v topném systému našeho domu a také spotřebu elektřiny. Získané hodnoty mi pomohli významně optimalizovat provoz topného systému i spotřebu elektřiny v domácnosti. Výborná práce!