@sissiwup ich habe dein Script im Einsatz und habe es eigentlich so verstanden, dass damit auch keine kleineren Zählerstände entstehen oder sehe ich das falsch?
Hier mal die History Tabelle, die zeigt, dass doch kleinere Zählerstände geloggt werden und ich glaube deshalb funktioniert auch der Datenpunkt in Sourceanalytix nicht.
Anbei noch das Script dazu:
| createState('javascript.0.Wasserzaehler.Stand',""); |
| createState('javascript.0.Wasserzaehler.Log',""); |
| |
| |
| schedule('*/10 * * * *', function () { |
| |
| if (isNaN(Number(getState('javascript.0.Wasserzaehler.Stand').val))) { |
| log("Set NaN!!!!","warn"); |
| } else { |
| var url = "http://192.168.66.38:3000/setPreValue?value="+getState('javascript.0.Wasserzaehler.Stand').val; |
| |
| request(url, function(error, response, body) { |
| if (body){ |
| log("Set OK:"+ body,"info"); |
| } |
| else |
| { |
| log("Set fehlerhaft:" +url+"->"+ body,"warn"); |
| } |
| }) |
| } |
| |
| var url = "http://192.168.66.38:3000/wasserzaehler.html?usePreValue"; |
| |
| request(url, function(error, response, body) { |
| if (body){ |
| var count=String(body.match(/^[0-9.N]+/)); |
| var err=body.search("Error"); |
| var org=count; |
| if (err>=0) { |
| org= String(body.match(/[0-9.N]+$/)); |
| var oar = org.split("."); |
| var last = String(getState('javascript.0.Wasserzaehler.Stand').val); |
| var lar= last.split("."); |
| var calc = lar[0]+"."+oar[1]; |
| if (Number(calc)<Number(last) && (Number("0."+oar[1])<0.1) && (Number("0."+lar[1])>0.9)){ |
| calc=(String(Number(lar[0])+1))+"."+oar[1]; |
| } |
| log("Body Calc:"+calc,"info"); |
| count=calc; |
| } |
| if (isNaN(Number(count))) { |
| log("Body OK/NaN:"+body,"warn"); |
| } else { |
| log("Body OK:"+body+"->" + count,"info"); |
| setState("javascript.0.Wasserzaehler.Stand",count); |
| } |
| setState("javascript.0.Wasserzaehler.Log",String(body)); |
| } |
| else |
| { |
| log("Body fehlerhaft:" +url+"->"+ body,"warn"); |
| } |
| }) |
| }); |

Den Tip zur Ausrichtung der Analogen Zeiger werde ich mal noch testen.