mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 14:12:16 +03:00
257 Median filter added to ultasonic
This commit is contained in:
@@ -43,7 +43,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "h4",
|
"type": "h4",
|
||||||
"title": "LittleFS version: 256"
|
"title": "LittleFS version: 257"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "hr"
|
"type": "hr"
|
||||||
@@ -130,6 +130,15 @@
|
|||||||
"action": "/set?sceninit",
|
"action": "/set?sceninit",
|
||||||
"class": "btn btn-block btn-default"
|
"class": "btn btn-block btn-default"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "link",
|
||||||
|
"title": "Ручная настройка",
|
||||||
|
"action": "/?set.manual",
|
||||||
|
"class": "btn btn-block btn-default"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "link",
|
"type": "link",
|
||||||
"title": "Инструкция к системе автоматизации",
|
"title": "Инструкция к системе автоматизации",
|
||||||
|
|||||||
@@ -1,30 +1,38 @@
|
|||||||
{
|
{
|
||||||
"configs": [
|
"configs": [
|
||||||
"/config.setup.json",
|
"/config.setup.json",
|
||||||
"/config.option.json",
|
"/config.option.json",
|
||||||
"/config.live.json",
|
"/config.live.json",
|
||||||
"/lang/lang.ru.json"
|
"/lang/lang.ru.json"
|
||||||
],
|
],
|
||||||
"class": "col-sm-offset-1 col-sm-10",
|
"class": "col-sm-offset-1 col-sm-10",
|
||||||
"content": [
|
"content": [
|
||||||
{
|
{
|
||||||
"type": "h5",
|
"type": "h5",
|
||||||
"title": "{{name}}",
|
"title": "{{name}}",
|
||||||
"class": "alert-default"
|
"class": "alert-default"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "link",
|
"type": "link",
|
||||||
"title": "{{ButMainPage}}",
|
"title": "{{ButMainPage}}",
|
||||||
"action": "/",
|
"action": "/",
|
||||||
"class": "btn btn-block btn-default"
|
"class": "btn btn-block btn-default"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"state": "s.conf.csv",
|
"state": "s.conf.csv",
|
||||||
"style": "width:100%;height:350px",
|
"style": "width:100%;height:350px",
|
||||||
"title": "Сохранить",
|
"title": "Сохранить",
|
||||||
"action": "/set?saveItems",
|
"action": "/set?saveItems",
|
||||||
"class": "btn btn-block btn-default"
|
"class": "btn btn-block btn-default"
|
||||||
}
|
},
|
||||||
]
|
{
|
||||||
}
|
"type": "file",
|
||||||
|
"state": "s.scen.txt",
|
||||||
|
"style": "width:100%;height:350px",
|
||||||
|
"title": "Сохранить",
|
||||||
|
"action": "/set?sceninit",
|
||||||
|
"class": "btn btn-block btn-default"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
//=================Firmeare=================
|
//=================Firmeare=================
|
||||||
#define FIRMWARE_NAME "esp8266-iotm"
|
#define FIRMWARE_NAME "esp8266-iotm"
|
||||||
#define FIRMWARE_VERSION 256
|
#define FIRMWARE_VERSION 257
|
||||||
#define FLASH_4MB true
|
#define FLASH_4MB true
|
||||||
|
|
||||||
//=================System===================
|
//=================System===================
|
||||||
|
|||||||
@@ -4,6 +4,9 @@
|
|||||||
#include "Class/LineParsing.h"
|
#include "Class/LineParsing.h"
|
||||||
#include "Global.h"
|
#include "Global.h"
|
||||||
#include "items/SensorConvertingClass.h"
|
#include "items/SensorConvertingClass.h"
|
||||||
|
#include "GyverFilters.h"
|
||||||
|
|
||||||
|
GMedian<6, int> testFilter;
|
||||||
|
|
||||||
class SensorUltrasonic : public SensorConvertingClass {
|
class SensorUltrasonic : public SensorConvertingClass {
|
||||||
public:
|
public:
|
||||||
@@ -33,6 +36,8 @@ class SensorUltrasonic : public SensorConvertingClass {
|
|||||||
long duration_ = pulseIn(echo, HIGH, 30000); // 3000 µs = 50cm // 30000 µs = 5 m
|
long duration_ = pulseIn(echo, HIGH, 30000); // 3000 µs = 50cm // 30000 µs = 5 m
|
||||||
value = duration_ / 29 / 2;
|
value = duration_ / 29 / 2;
|
||||||
|
|
||||||
|
value = testFilter.filtered(value);
|
||||||
|
|
||||||
value = this->mapping(key, value);
|
value = this->mapping(key, value);
|
||||||
float valueFl = this->correction(key, value);
|
float valueFl = this->correction(key, value);
|
||||||
eventGen(key, "");
|
eventGen(key, "");
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
name=GyverFilters
|
name=GyverFilters
|
||||||
version=2.0
|
version=2.1
|
||||||
author=AlexGyver <beragumbo@ya.ru>
|
author=AlexGyver <alex@alexgyver.ru>
|
||||||
maintainer=AlexGyver <beragumbo@ya.ru>
|
maintainer=AlexGyver <alex@alexgyver.ru>
|
||||||
sentence=Library with few filters for data.
|
sentence=Library with few filters for data.
|
||||||
paragraph=Includes median, running average, AB, simplified Kalman and linear approximation filtering algorithms.
|
paragraph=Includes median, running average, AB, simplified Kalman and linear approximation filtering algorithms.
|
||||||
category=Data Processing
|
category=Data Processing
|
||||||
|
|||||||
@@ -7,7 +7,8 @@
|
|||||||
#include <filters/runningAverage.h>
|
#include <filters/runningAverage.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
GyverFilters - библиотека с некоторыми удобными фильтрами:
|
GyverFilters - библиотека с некоторыми удобными фильтрами.
|
||||||
|
Документация: https://alexgyver.ru/gyverfilters/
|
||||||
- GFilterRA - компактная альтернатива фильтра экспоненциальное бегущее среднее (Running Average)
|
- GFilterRA - компактная альтернатива фильтра экспоненциальное бегущее среднее (Running Average)
|
||||||
- GMedian3 - быстрый медианный фильтр 3-го порядка (отсекает выбросы)
|
- GMedian3 - быстрый медианный фильтр 3-го порядка (отсекает выбросы)
|
||||||
- GMedian - медианный фильтр N-го порядка. Порядок настраивается в GyverFilters.h - MEDIAN_FILTER_SIZE
|
- GMedian - медианный фильтр N-го порядка. Порядок настраивается в GyverFilters.h - MEDIAN_FILTER_SIZE
|
||||||
@@ -23,4 +24,5 @@
|
|||||||
- Улучшен и исправлен median и median3
|
- Улучшен и исправлен median и median3
|
||||||
- Улучшен linear
|
- Улучшен linear
|
||||||
- Смотрите примеры! Использование этих фильтров чуть изменилось
|
- Смотрите примеры! Использование этих фильтров чуть изменилось
|
||||||
|
- 2.1: Исправлен расчёт дельты в линейном фильтре
|
||||||
*/
|
*/
|
||||||
@@ -19,7 +19,7 @@ public:
|
|||||||
a = a - (long)sumX * sumY;
|
a = a - (long)sumX * sumY;
|
||||||
a = (float)a / (arrSize * sumX2 - sumX * sumX);
|
a = (float)a / (arrSize * sumX2 - sumX * sumX);
|
||||||
b = (float)(sumY - (float)a * sumX) / arrSize;
|
b = (float)(sumY - (float)a * sumX) / arrSize;
|
||||||
delta = a * arrSize; // расчёт изменения
|
delta = a * (x_array[arrSize-1] - x_array[0]); // расчёт изменения
|
||||||
}
|
}
|
||||||
float getA() {return a;} // получить коэффициент А
|
float getA() {return a;} // получить коэффициент А
|
||||||
float getB() {return b;} // получить коэффициент В
|
float getB() {return b;} // получить коэффициент В
|
||||||
@@ -27,4 +27,23 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
float a, b, delta;
|
float a, b, delta;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Сам алгоритм выглядит так:
|
||||||
|
void loop() {
|
||||||
|
sumX = 0;
|
||||||
|
sumY = 0;
|
||||||
|
sumX2 = 0;
|
||||||
|
sumXY = 0;
|
||||||
|
for (int i = 0; i < steps; i++) {
|
||||||
|
sumX += X[i];
|
||||||
|
sumY += Y[i];
|
||||||
|
sumX2 += X[i] * X[i];
|
||||||
|
sumXY += X[i] * Y[i];
|
||||||
|
}
|
||||||
|
a = (steps * sumXY - sumX * sumY) / (steps * sumX2 - sumX * sumX);
|
||||||
|
b = (sumY - a * sumX) / steps;
|
||||||
|
int delta = steps * a;
|
||||||
|
}
|
||||||
|
*/
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
#include "Global.h"
|
#include "Global.h"
|
||||||
|
|
||||||
//
|
|
||||||
#include <LITTLEFS.h>
|
#include <LITTLEFS.h>
|
||||||
|
|
||||||
void sendLogData(String file, String topic);
|
void sendLogData(String file, String topic);
|
||||||
|
|||||||
Reference in New Issue
Block a user