dht22 calculates temperature incorrectly at negative values

未关闭 适合新手
#1,074 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
62/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
停滞
技术栈
python
领域
embedded-iot

调研方向

从 dht.py 中的 DHT22 温度计算开始,复现提供的 buffer 示例。将当前结果与建议的计算进行比较,然后验证示例报告为 -2.2°C,且湿度仍为 69.0%。

由索引模型根据 Issue 内容生成。

描述

I recently installed DHT22, and to my surprise, after a few days of frost, it showed a temperature of -3274.5.
The calculations performed by dht.py are consistent with the documentation, but they are incorrect.

Example and proposal for new calculation:

class DHTBase:
    def xbuf(self, buf):
        self.buf = buf

class DHT22(DHTBase):
    def humidity(self):
        return (self.buf[0] << 8 | self.buf[1]) * 0.1

    def temperature(self):
        t = (self.buf[2] & 0x7f) << 8 | self.buf[3]
        if self.buf[2] & 0x80:
            t = - t ^ 0x7fff
        return t*0.1

def main():
    # hum = 69, temp=-3274.5 = -2.2
    cls = DHT22()
    cls.xbuf([2, 183, 255, 233, 162])
    temp = cls.temperature()
    hum = cls.humidity()
    print(f'temp={temp:.1f} hum={hum:.1f}')

main()

主要语言
Python
星标
2.9k
派生
1.1k
平均合并
7 天 6 小时
30 天内合并 PR
3

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

micropython/micropython-lib 的其他 Issue

查看 micropython/micropython-lib 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。