你好,
我设置了一个超声波传感器,但它的反应非常多变。唯一正确的是:
在100个测量值的样本中,前10个对应于正确的预期测量值。
我想创建一个过滤器,从100中选出最高的10个。然后它只会将最高的10个值传递给家庭助理。19463331伟德国际

使用中位数,将选择一个错误的数字。

JSN-SR04T / AJ-SR04M防水超声波传感器模块
NodeMCU
引脚Rx和Tx

esphome: name: nodemcu1 platform: ESP8266 board: nodemcuv2 ## SENSOR ## SENSOR: platform:超声波trigger_pin: GPIO3 echo_pin: GPIO1 unit_of_measurement: m update_interval: 1s name: " disstancia " pulse_time: 20us timeout: 20m filters: - lambda: |- float MIN_VALUE = 0.25;浮点数MAX_VALUE = 6.0;if (MIN_VALUE <= x && x <= MAX_VALUE) return x;否则返回{};—filter_out: 00.0—offset: 0.04—filter_out: 0.04

我还是会有很多的时间或错误的读数。唯一正确的是最高的值。

如果有人帮助我,我会很感激的。

日志:

解决了所有改变电源的测量误差。

请删除这篇文章。

关于删除,见第19点:如何帮助我们帮助你——或者如何问一个好问题

嗨,汤姆,

我的问题仍然没有得到回答。所以,在这个特殊的情况下,我的帖子对任何人都没有帮助,这就是为什么我昨天告诉我们可以删除它。

今天早上,我和一个朋友聊天,他是电气工程师,他教我所有的中性(地)线都应该连接,以便正常工作,以防你的设备有两个不同的电源。

所以,完成我如何解决我的问题:

  • 传感器上没有任何缺陷,
  • 接线错误,因为我有2个不同的电源(1个用于NodeMCU,另一个用于传感器)。
  • 如果你有两个不同的电源,你应该连接地引脚。

其他的想法:
我的传感器是5V,但使用Nodemcu 3V引脚工作得很完美。

不需要对结果进行复杂的计算来过滤值。

最终的编程是:(为将来需要的人添加了##注释)

##传感器##传感器:-平台:超声波trigger_pin: GPIO3 echo_pin: GPIO1 unit_of_measurement: cm update_interval: 1s name: " distance " pulse_time: 20us timeout: 20m #选择您的模型距离范围米过滤器:- lambda: |- float MIN_VALUE = 0.20;#将你的距离浮动MAX_VALUE = 6.0;if (MIN_VALUE <= x && x <= MAX_VALUE) return x*100;否则返回{};- offset: 3 #只是为了调整结果- median: # this filters可能的离值window_size: 5 send_every: 3 send_first_at: 3

你解决了你的问题。其他人可能有同样的问题,并希望知道您的解决方案。

是的,同意。事实上,这也是我后来做出更好解释的原因。
昨天我很累。

在我寻找答案的过程中,我在其他任何地方都没有发现关于这种干扰(2个电源)的评论。也许这对某人有用。:笑:

1像