« 2016年11月 | トップページ | 2017年1月 »

2016年12月13日 (火)

秋月の温湿度・気圧センサモジュールAE-BME280で、温度・湿度・気圧を取得する(2/2)

Cactiで表示させてみることにしました。

(1)カスタマイズグラフの作り方
まずスクリプトを作る
cd /usr/local/share/cacti/scripts

sudo vi bme280_temp.pl
----
#!/usr/local/bin/perl
$val = `/usr/bin/python /home/pi/bme280_sample.py |grep temp |awk '{print $3}'`;
print $val;
----
:wq
実行権付与
sudo chmod +x bme280_temp.pl

(2)Data Input Method画面
----
name: bme280_temp
Input Type: Script/command
Input String: perl /usr/local/share/cacti/scripts/bme280_temp.pl
----

ただ、これではうまく行かない。
ログに延々エラーが出ていた。
tail /var/log/cacti/poller-error.log
----
Traceback (most recent call last):
File "/home/pi/bme280_sample.py", line 9, in
bus = SMBus(bus_number)
File "/usr/local/lib/python2.7/dist-packages/smbus2/smbus2.py", line 132, in __init__
self.open(bus)
File "/usr/local/lib/python2.7/dist-packages/smbus2/smbus2.py", line 142, in open
self.fd = os.open("/dev/i2c-{}".format(bus), os.O_RDWR)
OSError: [Errno 13] Permission denied: '/dev/i2c-1'
----

www-dataでは/dev/i2c-1を読む権限がないらしい

(3)無理矢理パスワードを付けて
sudo passwd www-data

(4)soduersに追加
sudo vi /etc/sudoers
----
www-data ALL=(ALL) NOPASSWD: ALL
----
:wq

うまく(?)出来たようだ
sudo -u www-data sh /usr/local/share/cacti/scripts/bme280_temp.sh
22.54

まあでも、www-dataにsudo権限を付けるのは、セキュリティ的にはどうですかね。

以上

秋月の温湿度・気圧センサモジュールAE-BME280で、温度・湿度・気圧を取得する(1/2)

お手伝いしている会社の勉強会のために、秋月の温湿度・気圧センサモジュールAE-BME280で、温度・湿度・大気圧を得る手順をまとめました。

最近、smbus2が必要になったようです。

Img01013

(1)モジュール接続
割愛

(2)I2C有効化
[Preferences]-[Raspberry Pi Configuration]
[Interfaces」->「I2C」「Enable」

再起動
[YES]

(3)i2cパッケージのインストール
sudo apt-get install i2c-tools
sudo apt-get python-smbus

検出
sudo i2cdetect -y 1

中身を取り出す
sudo i2cdump -y 1 0x76

(4)スイッチサイエンス社のライブラリをダウンロード
wget https://github.com/SWITCHSCIENCE/BME280/archive/master.zip

unzip master.zip

cp -p ./BME280-master/Python27/bme280_sample.py .
python ./bme280_sample.py
----
Traceback (most recent call last):
File "/home/pi/bme280_sample.py", line 3, in
from smbus2 import SMBus
ImportError: No module named smbus2
----
エラーになる。

cd /BME280-master/Python27
cat requirements.txt
----
smbus2>=0.1.3
----
smbus2が必要なようだ。

(5)smbus2のインストール
wget https://github.com/kplindegaard/smbus2/archive/master.zip
unzip master.zip.1
----
Archive: master.zip.1
a115a850ed7c8ecc7438fff0d5c40e230eaf6579
creating: smbus2-master/
inflating: smbus2-master/.travis.yml
inflating: smbus2-master/LICENSE
inflating: smbus2-master/README.md
inflating: smbus2-master/README.rst
inflating: smbus2-master/setup.py
creating: smbus2-master/smbus2/
inflating: smbus2-master/smbus2/__init__.py
inflating: smbus2-master/smbus2/smbus2.py
creating: smbus2-master/tests/
inflating: smbus2-master/tests/test_datatypes.py
inflating: smbus2-master/tests/test_smbus2.py
----

cd smbus2-master
sudo pip install smbus2
----
Downloading/unpacking smbus2
Downloading smbus2-0.1.4.tar.gz
Running setup.py (path:/tmp/pip-build-Eqrjt6/smbus2/setup.py) egg_info for package smbus2

Installing collected packages: smbus2
Running setup.py install for smbus2

Successfully installed smbus2
Cleaning up...
----

(6)動作確認
python ./bme280_sample.py
----
temp : 24.13 ℃
pressure : 1011.14 hPa
hum : 67.66 %
----

以上

2016年12月 6日 (火)

ipset作成メモ(日本のIPv4アドレス一覧)

ipsetで日本のIPv4アドレス一覧を作成したときのメモ

最新のCIDR一覧を取得
wget http://nami.jp/ipv4bycc/cidr.txt.gz
gunzip -f cidr.txt.gz
grep -e "^JP" cidr.txt |awk '{print $2}' >IP_JAPAN
rm cidr.txt

IP_JAPANという名前で一覧を作成
sudo ipset create -exist IP_JAPAN hash:net
while read NET; do sudo ipset add IP_JAPAN $NET; done

※けっこう時間が掛かる

保存
sudo ipset save |sudo tee /etc/ipset.conf

再起動時にipsetをリストアさせる方法

iptablesで日本国外からのアクセスを禁止する設定をしているのですが
ファイアウォールルールが長くなっていろいろ面倒なので、ipsetを使ってみることにしました。
ipsetの内容は再起動時にクリアされてしまうため、うまい方法がないか、考えてみました。

ipsetはインストール&設定済み、の前提で。

■概要
(1)/etc/ipset.confファイルに ipset save する
(2)netfilter-persistent起動時に、ipset restore する。

■詳細
(1)/etc/ipset.confファイルに ipset save
# sudo ipset save |sudo tee /etc/ipset.conf

(2)netfilter-persistent起動時に、ipset restoreする。
# sudo vi /lib/systemd/system/netfilter-persistent.service
----
[Unit]
Description=netfilter persistent configuration
DefaultDependencies=no
Before=network.target
Requires=systemd-modules-load.service local-fs.target
After=systemd-modules-load.service local-fs.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStartPre=/usr/bin/sudo /sbin/ipset restore -exist -f /etc/ipset.conf <---これを追加
ExecStart=/usr/sbin/netfilter-persistent start
ExecStop=/usr/sbin/netfilter-persistent stop

[Install]
WantedBy=multi-user.target
----
:wq

# sudo systemctl daemon-reload
# sudo systemctl restart netfilter-persistent

以上

« 2016年11月 | トップページ | 2017年1月 »

最近のトラックバック

2017年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
フォト
無料ブログはココログ