Raspberry PiでSPIが有効にならない
どうでもいいけど今回SPIはシリアル・ペリフェラル・インタフェース(Serial Peripheral Interface, SPI)の略らしいと知った。いつもただ「シリアルシリアル」と言ってるだけだから。
Raspberry Pi Type BのLinux raspberrypi 3.18.7+ にて、SPIが使えなかった。いろいろ調べても、/etc/modprobe.d/raspi-blacklist.conf で"blacklist i2c-bcm2708"行をコメントアウトするとか、なんとかで、再起動するとlsmodでspi_bcm2708出てくるとか、/dev/以下にspidev0.0やspidev0.1が出てくるとか、/etc/modulesにspidev追加とかいろいろそんなのしたけれどもどうにも読み込まれない。
なんやこれと思って調べていると、下記【参考】に記載した投稿を見つけた。どうやら仕組みが変わっていたらしい。
$ sudo raspi-config から、
"8 Advanced Options"→"A6 SPI"→以降の項目でそれぞれ"<はい>"と"<了解>"→再起動
【参考】
『意識低い開発者のBlog』「Raspberry Pi の I2C を有効化する方法 (2015年版)」
https://blog.ymyzk.com/2015/02/enable-raspberry-pi-i2c/
Yahoo!天気からピンポイントの天気データを取得してちょっと整える
パソコンから天気を読み上げようと思ってデータを取ってみた
python2.7とBeautifulSoupを使ってぱっととってくる。そして、下記のような出力をファイルに得る。東京都は北区。ファイル名は日付.txt
0時,曇り,気温8度,湿度82度,降水量0,風静穏0 3時,曇り,気温7度,湿度97度,降水量0,風北北西2 6時,晴れ,気温6度,湿度96度,降水量0,風北西1 9時,晴れ,気温10度,湿度87度,降水量0,風北北東1 12時,晴れ,気温16度,湿度57度,降水量0,風南東2 15時,晴れ,気温19度,湿度48度,降水量0,風南2 18時,曇り,気温15度,湿度63度,降水量0,風南2 21時,晴れ,気温11度,湿度74度,降水量0,風北西1
下記。とりあえずできた版
import os import re import datetime from urllib import urlopen from bs4 import BeautifulSoup target_url = urlopen('http://weather.yahoo.co.jp/weather/jp/13/4410/13117.html') soup = BeautifulSoup(target_url) objdiv = soup.find('div', attrs={'id' :'yjw_pinpoint_today'}) trlist = objdiv.findAll("tr") result = {} p = re.compile(r'<.*?>') tenkilist = ["jikan", "tenki", "kion", "shitsudo", "kosuiryo", "kaze"] n = 0 for i in tenkilist: result[i] = p.sub("",str(trlist[n])).split("\n") while result[i].count("") > 0: result[i].remove("") n+=1 kaze2 = [] kaze2.append(str(result["kaze"][0])) for i in range(1,len(result["kaze"]),2): kaze2.append(str(result["kaze"][i] + result["kaze"][i+1])) d = datetime.datetime.today() today = d.strftime("%Y%m%d") f = open(today+".txt", "ab") for i in range(1, len(result["jikan"])): f.write(str(result["jikan"][i])+",") f.write(str(result["tenki"][i])+",") f.write("気温" + str(result["kion"][i]) + "度"+",") f.write("湿度" + str(result["shitsudo"][i]) + "度"+",") f.write("降水量" + str(result["kosuiryo"][i])+",") f.write("風" + str(kaze2[i])) f.write("\n") f.close()
参考
『orangain flavor』「Pythonでクローリング・スクレイピングに使えるライブラリいろいろ」
http://orangain.hatenablog.com/entry/scraping-in-python
『Beautiful Soup 4.2.0 Doc. 日本語訳 (2013-11-19最終更新) 』
http://kondou.com/BS4/
『18th Tech Note』「PythonでHTMLタグを除去する方法」
http://www.18th-technote.com/post/5987200384/python-django
『no workaround』「python リストから空の要素を削除 」
http://j4f-note.blogspot.jp/2012/04/python.html
ダイナミックルーティングのpassive interfaceあるいはredistribute connected
ダイナミックルーティングを動作させるときに、通常ユーザ側のネットワークは他のL3機器に対して経路を通知する必要があるが、一方ユーザ側にはそのルーティングプロトコルは流す必要はない。そこで、よくルーティングプロトコル動作インタフェース指定方法やredistribute or passiveという話になると思う。
調べた範囲で、下記が参考となった。
『♪メモのページ♪』『「redistribute connectedか、network ~か。」 OSPFネタ』
http://sky.ap.teacup.com/debslink/1182.html
『ネットワークエンジニアとして』「passive-interface」
http://www.infraexpert.com/study/rp7c.htm
『ネットワークの実験ノート』「【Cisco Tips】 Q. redistribute connectedは必要ですか?」
http://tiida.cocolog-nifty.com/netblog/2004/09/cisco_tips_q_re_1.html
『Darren's Blog』「OSPF – Type 1 LSA vs Type 5 LSA (passive vs redistribute)」
https://mellowd.co.uk/ccie/?p=2060
上記は基本的にはciscoかつOSPFの情報だが、考え方のベースとしてとても有用。
基本的には下記の印象
- passiveは送信を止める。受信はするがネイバを張るプロトコルの場合はhelloをやりとりできなくなるためネイバは張らない
- OSPFの場合は、redistributeを使うと外部経路となるため、設計時に考慮する必要。
- 設定により外部経路扱いになるため、LSA(1 or 5)の違いによって、データベースと経路変化時の動作の違い
ふと、ではRIPの場合はと思ったが、セキュリティを考慮するとpassive-interfaceの考えは微妙かもしれない。メーカーや機器によって実装は違うので、当然都度確認はしなければならないと思うが、passiveのインタフェースは通常ルーティングのパケットを送らないが、受け取る。
RIPはネイバを張らないので、ブロードキャスト(v1)orマルチキャスト(v2)で経路情報を受け取るとルーティングテーブルに乗せてしまうのではないかな。意図しないインタフェースから受け取っても。