dht22 calculates temperature incorrectly at negative values

オープン 初心者向け
#1,074 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
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時間
マージ済み PR(30日)
3

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

micropython/micropython-lib のほかの issue

micropython/micropython-lib の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。