Sensor Simulation
Durchflusstemperatur: {{Temperatur}} °Celsius
Durchfluss Sensor: {{Anzahl}} 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