pepoとネットワークを語ろう

40年前からこれまでとこれからのネットワークを語る

いやー、Linuxとgmailとwgetのコラボもようやく落ち着いたみたいや(^o^)丿

2012-01-19 23:09:03 | Linux

 いやー、Linuxとgmailとwgetのコラボもようやくおちついたみたいや

Remote-Hand、も何となく安定版になったかな

いろいろなバクがあったけど、まだ隠れたバグも在るかもしれんけど

でも、一番堪えたのは2時~3時に火災警報のメールが送られ来ることやな

たぶんやけど、/var/tmpをワークディレクトリに使ったのが失敗かもな

移動してからは深夜のメールがこんようになった

pepogamil4dioこれが一番むずかしい

なんせ、wgetではgmailの新着メールを確認する方法はあるけど

既読にはでけへん

それを何とか、既読もどきの細工をするところや・・・よー、頑張ったわ

半世紀も生きているけど、こんなに夢中になれるLinuxプログラミング、いい感じ

ということで、だいぶ前置きがながなったけど

pepodiod、pepodioctl、pepogamil4dioをバージョンアップしました。

pepodiod、pepodioctl、pepogamil4dioはDIOの入力情報の取得や出力ポートのオン・オフなど遠隔地の外部機器を携帯などからgmail経由で制御できるRemote-Handの中核的なスクリプトたちで、今回はそのバージョンアップです。
詳細は下記から

http://sourceforge.jp/projects/pepolinux/wiki/chobit_prog%20pepogmail4dio

pepo


Remote-Hand_DIO(PepoLinux)で火災報知器を監視・・・夜中にこんなメールが飛んでくる(@_@;)

2012-01-19 05:33:21 | Linux

18日、今日は夜中にこんなメールはこんかった

 

From:  

日付: 2012年1月17日2:30

件名: 一階が火事です!! dio6low

To: dokokano@docomo.ne.jp

Event="01/17 02:30:02"

Remote-Hand_DIOのバグが一つ直ったのか

と言うのも、どうも2時~3時に架けてバグが発生するところを見ると

cronかと思ってみたけど・・・時間帯が違うやん

 

[root@~]# cat /etc/crontab

# run-parts

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

とは言うものの、Remote-Hand_DIOで使っているworkディレクトリが/var/tmpで検索してみると/tmpと同じでtmpwatchなんかに触られそう

 

[root@~]# cat /etc/cron.daily/tmpwatch

 

flags=-umc

/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \

        -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \

        -X '/tmp/hsperfdata_*' 240 /tmp

/usr/sbin/tmpwatch "$flags" 720 /var/tmp

 

なのでworkディレクトリに引越しをしたら夜中のメールはこんようになったがな

これがほんまの原因かどうか分からんけどこれで夜は安心して寝れるわ

pepo


Remote-Hand_DIO(PepoLinux)で火災報知器を監視・・・夜中にこんなメールが飛んでくる(@_@;)

2012-01-17 05:27:03 | Linux

Remote-Hand_DIO(PepoLinux)で火災報知器を監視

夜中にこんなメールが飛んでくる(@_@;)

あかん、2日連荘やんか

From:  <remote-hand@pepolinux.local>

日付: 2012年1月17日2:30

件名: 一階が火事です!! dio6low

To: dokokanodare@docomo.ne.jp

Event="01/17 02:30:02"

嗚呼、Remote-Hand_DIOのバグが直らん

pepo


Remote-Hand_DIOで火災報知器を監視・・・夜中にこんなメールが飛んでくる(@_@;)

2012-01-17 05:08:52 | Linux

このところ夜中にこんなメールが飛んでくる

件名:一階が火事です!! dio6low

From:  <remote-hand@pepolinux.local>

日付: 2012年1月16日2:50

件名: 一階が火事です!! dio6low

To: docokanodare@docomo.ne.jp

じつは大阪ガスの火災報知器『けむぴこ』の端子を

Remote-Hand_DIOの入力端子へ取り込み

火災報知器が働いたら

メールが飛んでくるようにしたけど

Remote-Hand_DIOにバクが

pepo


pepodiodをバージョンアップしました。

2012-01-12 11:07:27 | Linux

pepodiodとはPepoLinux-0.51以降に収録されているシリアルDIOボード各ポートのON/OFF状態をポーリング監視して予め設定されたプログラムを起動するちょっとしたプログラムです。

PepoLinuxに収録されているプログラムを必要とするので単独では動作しませんが、シリアル経由でコマンドのやり取りで制御する機器やボードのプログラムに応用出来ると思います。

更新履歴

2011.12.6:0-7チャンネル8本分の入力ポートを一度に読み込むようにしたので処理速度がアップした。

2012.1.11:デバイス未接続状態から接続状態時に正常動作しないバクを修正

下記よりダウンロードしてください

http://sourceforge.jp/projects/pepolinux/wiki/chobit_prog%20pepodiod

2012.1.11 by.Yamauchi Isamu also IZAMUKARERA.

pepo


pepodiodのバグがようやくとれたわo(^▽^)o

2012-01-12 10:23:37 | Linux
4日ほど考えていたけどpepodiodのバグがようやくとれたわo(^▽^)o
どんなバグかと言うとデバイスが未接続状態から接続状態になった時
high→lowもlow→highのイベントが検出できない
原因はDIOCTLが未接続時”-1”を返却する
接続状態になった時に”-1”からnewデータとして”0"か"1"を返却する
このnewデータをoldデータへ保存してなかった為
なので毎回oldデータが”-1”ままである
これではイベントと見なさないのだ
# loop for dio polling read 
while true
do
[ -e $tDIORD ] && rm -f $tDIORD && touch $tDIORD || touch $tDIORD
RD="-1"
RD=`$DIOCTL 2>&1`
if [ "$RD" != "-1" ];then
  for i in 1 2 4 8 16 32 64 128; do
    case "$i" in
      1) tRD="$(($((0x$RD & 1)) / 1))" ;j=0 ;;
      2) tRD="$(($((0x$RD & 2)) / 2))" ;j=1 ;;
      4) tRD="$(($((0x$RD & 4)) / 4))" ;j=2 ;;
      8) tRD="$(($((0x$RD & 8)) / 8))" ;j=3 ;;
      16) tRD="$(($((0x$RD & 16)) / 16))" ;j=4 ;;
      32) tRD="$(($((0x$RD & 32)) / 32))" ;j=5 ;;
      64) tRD="$(($((0x$RD & 64)) / 64))" ;j=6 ;;
      128) tRD="$(($((0x$RD & 128)) / 128))" ;j=7 ;;
    esac
    new[$j]=$tRD
  done
  else
    for i in 0 1 2 3 4 5 6 7;do
      new[$i]="-1"
    done
  fi
  for i in 0 1 2 3 4 5 6 7;do
    if [ "${old[$i]}" != "${new[$i]}" ];then
      if [ "${old[$i]}" = "1" ];then
        old[$i]=${new[$i]}
        exec_cmd $i low
        j=`expr $i + 4`
        exec_cmd $j low
      elif [ "${old[$i]}" = "0" ];then
        old[$i]=${new[$i]}
        exec_cmd $i high
        j=`expr $i + 4`
        exec_cmd $j high
      else
        old[$i]=${new[$i]}
      fi
    fi
    echo "di[$i]=${new[$i]}" >>$tDIORD
  done
  mv $tDIORD $DIORD
  chown apache.apache $DIORD
  msleep ${POLLTIME}
done

 

else
  old[$i]=${new[$i]}

fi

が抜けてましたわ

pepo