Sensor Simulation

Durchflusstemperatur: °Celsius
Durchfluss Sensor: Puls ~ 20 ms
(Menge pro Puls = 3,3 ml) =
{{Anzahl*3.3}} ml


Bei Temperaturänderung oder spätestens alle 60 Sekunden
Durchfluss: {{SendeAnzahl}} * 3,3 ml = {{SendeAnzahl*3.3}} ml
Dauer: {{Dauer}} ms
Liter/Minute: {{60 * (SendeAnzahl*3.3 / Dauer)}}

Transmit:
{{sende}}



    Quellcode:

    APP.controller("APP", function ($scope,$http,$timeout,$interval) {
// *** Arduino: Loop Flankenwechsel on Port oder digitalRead() oder Interrupt (ISR) oder Timer etc. 
    $scope.Anzahl = 0;
    $scope.SendeAnzahl = 0;
    $scope.vonTime = Date.now();
    $scope.DurchflussSensor = function() {
        if (Math.random() > 0.75) return;   // "Bremse" Durchfluss
        $scope.Anzahl++;
    }
    $scope.prom = $interval(function() { $scope.DurchflussSensor() }, 20, false);   // Alle 20 ms 
// ********************************************************************************************
    $scope.Temperatur = 60;
    $scope.SendeTemperatur = $scope.Temperatur;
    $scope.TemperaturSensor = function() {      // variiere Temperatur
        Temperatur = $scope.Temperatur + (Math.random() - 0.5)/5;
        $scope.Temperatur = Math.round(10*Math.min(Math.max(Temperatur,50),70))/10;
        //$scope.Temperatur = Math.round(1*Math.min(Math.max(Temperatur,50),70))/1;
        if ($scope.Temperatur != $scope.SendeTemperatur) {
            $scope.Dauer = Date.now() - $scope.vonTime; 
            $scope.SendeAnzahl = $scope.Anzahl;
            $scope.Anzahl = 0;  // Zähler reset
            $scope.vonTime = Date.now();
            $interval.cancel($scope.promTransmit); 
            $scope.Durchfluss = $scope.SendeAnzahl * 0.0033;  // Menge pro Puls = 3,3 ml
            $scope.Transmit();
            $scope.promTransmit = $interval(function() { $scope.Transmit() }, 60000, false);    // Alle 60 Sekunden 
            $scope.SendeTemperatur = $scope.Temperatur;
        }   
    }
    $scope.promTemperatur = $interval(function() { $scope.TemperaturSensor() }, 10000, false);  // Alle 10 Sekunden 
// ********************************************************************************************
    $scope.MesspunktID = "DEADBEEFFEED";    // MAC-Adresse, Arduino: WiFi.macAddress()  (48 bits = 6 octets) z.B 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
    $scope.Transmit = function() {
        Parm = [];
        Parm.push("Durchfluss="+$scope.Durchfluss);
        Parm.push("Temperatur="+$scope.SendeTemperatur);
        Parm.push("Dauer="+$scope.Dauer);
        Parm.push("SensorID="+$scope.MesspunktID);
        "$http.post('https://api.a1vm.de/Transmit/', Parm.join("&") , {headers:{'Content-Type':'application/x-www-form-urlencoded'}})";
        $scope.sende = "api.a1vm.de/Transmit/?"+Parm.join("&");
    }
    $scope.promTransmit = $interval(function() { $scope.Transmit() }, 60000, false);    // Alle 60 Sekunden