質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

3回答

3775閲覧

温度、湿度のスクリプトが正常動作しない

yu_polo

総合スコア13

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2016/08/24 01:52

編集2016/08/27 02:07

AdafruitDHT.pyから温度用temp.py,湿度用humid.pyを作成
temp.py、tempスクリプト
URL
blog.bnikka.com/raspberrypi/am2302dht22raspberrypi.html

コード!/usr/bin/python # Copyright (c) 2014 Adafruit Industries # Author: Tony DiCola # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. import sys import Adafruit_DHT # Parse command line parameters. sensor_args = { '11': Adafruit_DHT.DHT11, '22': Adafruit_DHT.DHT22, '2302': Adafruit_DHT.AM2302 } if len(sys.argv) == 3 and sys.argv[1] in sensor_args: sensor = sensor_args[sys.argv[1]] pin = sys.argv[2] else: print('usage: sudo ./Adafruit_DHT.py [11|22|2302] GPIOpin#') print('example: sudo ./Adafruit_DHT.py 2302 4 - Read from an AM2302 connected to GPIO #4') sys.exit(1) # Try to grab a sensor reading. Use the read_retry method which will retry up # to 15 times to get a sensor reading (waiting 2 seconds between each retry). humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) # Un-comment the line below to convert the temperature to Fahrenheit. # temperature = temperature * 9/5.0 + 32 # Note that sometimes you won't get a reading and # the results will be null (because Linux can't # guarantee the timing of calls to read the sensor). # If this happens try again! if humidity is not None and temperature is not None: print('Temp={0:0.1f}* Humidity={1:0.1f}%'.format(temperature, humidity)) else: print('Failed to get reading. Try again!') sys.exit(1)
#!/bin/sh #%# family=auto #%# capabilities=autoconf GETNUM=`python /usr/local/bin/temp.py 22 4` if [ "$1" = "autoconf" ]; then if [ -n ${GETNUM} ] ; then echo yes exit 0 else echo no exit 0 fi fi if [ "$1" = "config" ]; then echo 'graph_title temperature' echo 'graph_args -r --lower-limit 0' echo 'graph_vlabel C' echo 'graph_category Weather' echo 'total.label temperature' echo 'total.min 0' echo 'total.draw LINE2' echo 'total.type GAUGE' exit 0 fi echo "total.value $GETNUM";ド

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

argius

2016/08/24 03:08

コード部分は``` ```で囲んで下さい。 コード部分を選択してから編集画面の上部にある<code>ボタンを押すと自動で囲んでくれます。
coco_bauer

2016/08/24 03:14

GETNUM=python /usr/local/bin/temp.py 22 4 を、GETNUM=`python /usr/local/bin/temp.py 22 4` に換えてみてはどうでしょうか。
退会済みユーザー

退会済みユーザー

2016/08/25 08:01

#!/bin/sh -x として実行し、出力結果を追記してください。
yu_polo

2016/08/26 03:20

bash -x tempを実行 ++ python /usr/local/bin/temp.py 22 4 Traceback (most recent call last): File "/usr/local/bin/temp.py",line41, in <module> humidity,temperature = Adafruit_DHT.read_retry(sensor, pin) File "build/bdist.linux-arm7l/egg/Adafruit_DHT/common.py", line 90, in read_retry File "build/bdist.linux-arm7l/egg/Adafruit_DHT/common.py",line77, in read File "build/bdist.linux-arm7l/egg/Adafruit_DHT/Raspberry_pi_2.py",line34,in read RuntimeError:Error accessing GPIO. + GEtNUM=$'\\r' temp: 行 27: 構文エラー:予期しないファイル終了(EOF)です が出力されました
退会済みユーザー

退会済みユーザー

2016/08/26 03:34

権限がなくて、python /usr/local/bin/temp.py 22 4が適切に実行されていないようですから、sudo bash -x tempと実行してください。また、GEtNUMとありますが、記述されたスクリプトにはないようですが。。。
退会済みユーザー

退会済みユーザー

2016/08/26 03:46

コード部分は``` ```で囲んで下さい。 コード部分を選択してから編集画面の上部にある<code>ボタンを押すと自動で囲んでくれます。
yu_polo

2016/08/26 05:55 編集

'sudo bash -x temp' 実行後 '++ python /usr/local/bin/temp.py 22 4' '+ GETNUM=$'30.6000003815\r'' temp: 行26: 構文エラー:予期しないファイル終了(EOF)です 表示されます。 30.6000003815は温度だとおもいます。 temp:行 26は 最後の行 'echo "total.value $GETNUM";
退会済みユーザー

退会済みユーザー

2016/08/26 08:08

この質問で引用したとしているスクリプトと現在実行しているスクリプトは同一ですか? それと最後の行の ; は必要ですか? さらに\rが気になりますが、temp.pyもなにか変更されているような気がするのですが。。。DHT22をお使いだと思うのですが、https://github.com/adafruit/Adafruit_Python_DHT/blob/master/examples/AdafruitDHT.py#L51 とは出力のさせ方が違うような。
退会済みユーザー

退会済みユーザー

2016/08/26 08:28

tempとtemp.pyを質問を編集する形で、対象のコードを``` ```で囲んで引用して下さい。 コード部分を選択してから編集画面の上部にある<code>ボタンを押すと自動で囲んでくれます。 また、参考にしたページをURLを含む形で追記してください。
guest

回答3

0

自己解決

raspberry piにマウス、キーボードをセットして、temp.py,humid.pyをAdafruitDHT.pyからコピー、
temp,humidのスクリプトをサンプルより作成して実行した結果、無事起動しました。
いろいろとアドバイスをいただき、作業をしました。ふと思って原因はwindows keyboadから入力で作成で
ないかとおもいます。
ご迷惑をお掛けしてすみません。もっと注意を払います。
でも、たのしみなteratailです。

投稿2016/08/30 06:38

yu_polo

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/08/30 07:58

おそらくコピペミスなのでしょう。 ただ、コピペする際にコピー元がどういう処理をしているのかを把握していないと今回のように問題に対処できません。 引用してくださいとお願いされて、似ているけど、違う何かを引用されるのは気をつけたほうがよろしいかと思います。
yu_polo

2016/08/30 08:55

ご指摘の通りです。 お恥ずかしいかぎりです。 今後とも気おつけて勉強いたします
guest

0

shellスクリプトの方は

構文エラー:予期しないファイル終了(EOF)です

というエラーが出ており、引用されたものにも確認できますので、
最終行の末におかしい文字が入っているので、それを削除すればよろしいかと思います。

また、pythonスクリプトについては、情報の追加依頼において

\rが気になりますが、temp.pyもなにか変更されているような気がするのですが。。。

と指摘したのですが、

http://blog.bnikka.com/raspberrypi/am2302dht22raspberrypi.html

を参考にした後、修正したような形跡がない引用ですので、参照したブログと同じように修正すればよろしいのではないでしょうか。

情報の追加依頼において、当方よりトレースの結果を表示するように依頼し、追記されたようですが、その実行結果と引用しているものが異なるように見えますので、これ以上は何も言えません。

投稿2016/08/27 03:11

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_polo

2016/08/29 07:11

ご指摘の件よく調べてエラーてきには解決いましたが、 temp.pyは/usr/local/bin/にあり、実行は正常。 tempスクリプトもうまく動作するのですが、 cd /usr/share/munin/plugins sudo ./temp 結果が、total.value 温度数字がでません sudo bash -x tempの結果は ++ GETNUM=29.5 + '[ ' ''=autoconf '] + [' '' =config ' ] + echo 'total.value' total.value 温度が読めてない原因はわからない
yu_polo

2016/08/29 09:55

気になる点があります。 スクリプトを通るところに移動になっていますが、 temp.py humid.pyは/usr/local/bin temp,humidは/usr/share/munin/pluginsです。 echo $PATHは /usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/local/games:/usr/games temp.py,humid.pyはパスが通ってるおもいます。
guest

0

GETNUM=`python /usr/local/bin/temp.py 22 4`

ココで single-quote と back-quote のマチガイとかないですか?

投稿2016/08/24 03:21

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_polo

2016/08/24 03:28

引用文を確認しましたが、single-quoteになっています
episteme

2016/08/24 03:31

back-quote でやってみそ。
yu_polo

2016/08/25 03:12

back-quoteにてやってみましたが、結果はおなじです 「温度湿度のデータを取得してグラフを表示する」および「MUNINで温度湿度のグラフを表示させた」の記事を参考にしています。
episteme

2016/08/25 04:02

うーむ... shell-prompt から python /usr/local/bin/temp.py 22 4 ってやればちゃんと動いて結果がでてくるんですよね?
yu_polo

2016/08/25 07:24

1.sudo cp AdafruitDHT.py temp.py 2.sudo cp temp.py /usr/local/temp.py 3.確認実行  sudo ./temp.py 22 4 4.温度は正常出力 5.cd /usr/share/munin/plugins 6.sudo nano temp  作成後  sudo chmod 755 temp 7.実行してみる  sudo ./temp ここで正常動作しない 以上ですが、原因がわからない
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問