285_<連続無事故日数管理Web>Basic認証_OK!★

(やはり、簡易なBasic認証暗い入れないと。。。で。)
データベースにテーブルを作成
データベース
dasudasu_tbl
テーブル作成
mst_staff

1,ボイスSOのスタッフ,0033
2,any,0033
を挿入
http://dasudasu.sakura.ne.jp/tbl_20170621/staff_login/staff_login.html
/tbl_20170621/20170622_og_d_list.php
以上

284_<連続無事故日数管理Web>on sakuravps2 !! _OK!★

さくらネットの共用DBで作った無事故日数カウントWebをsakuravps2へ移行する
ディレクトリ
/var/www/html/tbl_20170621
sakuravps2にDBを作成
SQLをエキスポートして、インポートする
http://153.126.154.106/tbl_20170621/20170622_og_list.php
下記のファイルをコピーペースト、DB部分を修正。
[root@ik1-313-16602 tbl_20170621]# ls -l
合計 24
-rw-r–r– 1 root root  901  6月 25 09:55 2017 20170621_form.html
-rw-r–r– 1 root root  660  6月 25 09:44 2017 20170621_trDB.php
-rw-r–r– 1 root root 1326  6月 25 09:57 2017 20170621_updateform.php
-rw-r–r– 1 root root 1394  6月 25 09:59 2017 20170621_view.php
-rw-r–r– 1 root root 6269  6月 25 10:09 2017 20170622_og_list.php
で、、文字が表示されないので、
ここを参照したら解決しました!ありがとう!!!
https://n2p.co.jp/blog/tech/serverside/php-donot-display/
理由は、
「色々調べてみると「ブラウザがPHPを認識してくれてない」という可能性が浮上。」
のとおりで。「PHPに問題が!→取り敢えずphpinfoで確認だ!」の流れ、のとおり!
なので、
#vi /etc/php.ini
short_open_tag = On      //初期値がOffになっていると思いますので、Onにしてあげましょう。
と直したら、表示できました。
以上

283_php+SQLDBで連続無事故日数カウント管理_OK!★

なんとか、できました!!ふううーー。。。

*************************************************
「php+SQLDBで連続無事故日数カウントWebを作ってみた」*************************************************

Web_URL
http://dasudasu.sakura.ne.jp/tbl_20170621/20170621_list.php
20170621_form.html
20170622_og_list.php
20170621_trDB.php
20170621_view.php
20170621_updateform.php
DB名:dasudasu_tbl
テーブル名:tbl_t
項目
tr_Num  id
50 hakkaku_date
tr_today
tr_service service_name
tr_contents naiyou
d_bit
INSERT  INTO tbl_t (tr_date, tr_service, tr_contents) VALUES ( now(), ‘service_name’, ‘naiyou’ )
で今日の日付が入る!!!OK
select max(tr_date) from tbl_t
select min(tr_date) from tbl_t
もOK
select * from tbl_t WHERE tr_date = (select max(tr_date) from tbl_t)
もOK
UPDATE  tbl_t  SET  tr_today = (now())  WHERE tr_date = “2017-06-10”
もOK
SELECT DATEDIFF(now(), (select max(tr_date) from tbl_t)) FROM tbl_t;
もOK
ちなみに、ここ分かりやすい、php PDO Mysqlでgoogleした!
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10131010895
*************************************************
以下、ソース・・・・・
<?php
session_start();
?>
<HTML>
<HEAD>
<TITLE>PHPのテスト</TITLE>
</HEAD>
<BODY>
<HR size=”1″ noshade>
<font size=6 >
ボイスSO<連続無事故日数管理Web>
</font>
<HR size=”1″ noshade>
<BR>
[ <a href=”20170621_form.html”>入れたくないけど・・「SOトラブルの新規登録」はここから</a>]
<BR>
<BR>
<FORM name=”form1″ method=”post” action=”20170622_og_list.php”>
サービス絞り込み(未完成):<select name=”search_key”>
<option value=””selected>全部(高度CC/ひかり/IPVoice/光コラボ)</option>
<option value=”高度CC”>高度CC</option>
<option value=”ひかりライン”>ひかりライン</option>
<option value=”IPVoice”>IPVoice</option>
<option value=”光コラボ”>光コラボ</option>
</select>
<INPUT type=”submit” value=”絞り込む”>
<BR>
<BR>
</FORM>
<?php
require_once(“20170621_trDB.php”);
$pdo = db_connect();
 
// 削除処理
if(isset($_GET[‘action’]) && $_GET[‘action’] == ‘delete’ && $_GET[‘id’] > 0 ){
try {
$pdo->beginTransaction();
$id = $_GET[‘id’];
$sql = “DELETE FROM tbl_t WHERE tr_Num = :id”;
$stmh = $pdo->prepare($sql);
$stmh->bindValue(‘:id’, $id, PDO::PARAM_INT );
$stmh->execute();
$pdo->commit();
print “データを” . $stmh->rowCount() . “件、削除しました。<br>”;
    } catch (PDOException $Exception) {
$pdo->rollBack();
print “エラー:” . $Exception->getMessage();
}
}
// 挿入処理
if(isset($_POST[‘action’]) && $_POST[‘action’] == ‘insert’){
try {
$pdo->beginTransaction();
$sql = “INSERT  INTO tbl_t (tr_date, tr_service, tr_contents) VALUES ( :hakkaku_date, :service_name, :naiyou )”;
$stmh = $pdo->prepare($sql);
$stmh->bindValue(‘:tr_date’,  $_POST[‘hakkaku_date’],  PDO::PARAM_STR );
$stmh->bindValue(‘:tr_service’, $_POST[‘service_name’], PDO::PARAM_STR );
$stmh->bindValue(‘:tr_contents’,        $_POST[‘naiyou’],        PDO::PARAM_STR );
$stmh->execute();
$pdo->commit();
print “データを” . $stmh->rowCount() . “件、挿入しました。<br>”;
    } catch (PDOException $Exception) {
$pdo->rollBack();
print “エラー:” . $Exception->getMessage();
}
}
// 更新処理
if(isset($_POST[‘action’]) && $_POST[‘action’] == ‘update’){
// セッション変数よりidを受け取ります
$id = $_SESSION[‘id’];try {
$pdo->beginTransaction();
$sql = “UPDATE  tbl_t
SET

                  tr_service   = :service_name,
tr_contents  = :naiyou
WHERE tr_Num = :id”;
$stmh = $pdo->prepare($sql);//print $sql;  //これはチェックのために追加(2015/09/05)
//print $id;  //これはチェックのために追加(2015/09/05)

      $stmh->bindValue(‘:service_name’, $_POST[‘service_name’],  PDO::PARAM_STR );
$stmh->bindValue(‘:naiyou’,       $_POST[‘naiyou’],        PDO::PARAM_STR );
$stmh->bindValue(‘:id’,           $id,                     PDO::PARAM_INT );
//print $sql;  //これはチェックのために追加(2015/09/05)
      $stmh->execute();
$pdo->commit();
print “データを” . $stmh->rowCount() . “件、更新しました。<br>”;
    } catch (PDOException $Exception) {
$pdo->rollBack();
print “エラー:” . $Exception->getMessage();
}
// 使用したセッション変数を削除する
unset($_SESSION[‘id’]);
}
// 検索および現在の全データを表示します
try {
if(isset($_POST[‘search_key’]) && $_POST[‘search_key’] != “”){
$search_key = ‘%’ . $_POST[‘search_key’] . ‘%’;
$search_key1 ='”‘ . $_POST[‘search_key’] . ‘”‘;
    $sql= “SELECT * FROM tbl_t WHERE tr_service like :tr_service OR tr_contents like :tr_contents order by tr_date DESC”;
    $stmh = $pdo->prepare($sql);
    $sql2 = “SELECT DATEDIFF(now(), (select max(tr_date) from tbl_t WHERE tr_service like $search_key1 ))”;
    $result = $pdo->query($sql2);
     While($row = $result->fetch()) {
print “<font color=’blue’ size=5 >” . $search_key1 . “の連続無事故日数は、” . $row[0] . “日です。<BR>”;
}
//    print “search_key1 =  ” . $search_key1;  //これはチェックのために追加(2015/09/05)
    $stmh->bindValue(‘:tr_service’,  $search_key, PDO::PARAM_STR );
$stmh->bindValue(‘:tr_contents’, $search_key, PDO::PARAM_STR );
    $stmh->execute();
  }else{
$sql= “SELECT * FROM tbl_t order by tr_date DESC “;
$stmh = $pdo->query($sql);
// 無事故日数を表示します(ここ)***************
     $str = $pdo->query(“SELECT DATEDIFF(now(), (select max(tr_date) from tbl_t)) FROM tbl_t “);
While($row = $str->fetch()) {
$aaa = $row[‘DATEDIFF(now(), (select max(tr_date) from tbl_t))’];
     }
    print “<font color=’red’ size=5 >今日までのところ、全体では<BR>”;
print “<font color=’red’ size=6 >連続無事故日数は【” . $aaa . “】日です!<BR>”;
// 無事故日数を表示します(ここ)***************
  }
    $count = $stmh->rowCount();
print “<font color=’blue’ size=4 >最近のSOトラブル件数は、下記” . $count . “件です。<BR>”;
} catch (PDOException $Exception) {
print “エラー:” . $Exception->getMessage();
}
if($count < 1){
print “検索結果がありません。<BR>”;
}else{
?>
<TABLE width=”600″ border=”1″  cellspacing=”0″ cellpadding=”8″>
<TBODY>
<TR><TH>発覚日</TH><TH>サービス</TH><TH>トラブル概要</TH><TH>&nbsp;</TH></TR>
<?php
while ($row = $stmh->fetch(PDO::FETCH_ASSOC)) {
?>
<TR>
<TD><?=htmlspecialchars($row[‘tr_date’])?></TD>
<TD><?=htmlspecialchars($row[‘tr_service’])?></TD>
<TD align=”center”><?=htmlspecialchars($row[‘tr_contents’])?></TD>
<TD align=”center”><a href=20170621_updateform.php?id=<?=htmlspecialchars($row[‘tr_Num’])?>>更新</a></TD>
</TR>
<?php
}
?>
</TBODY></TABLE>
<?php
}
?>
</BODY>
<!–
<br />
<a href=”./20170621_list.php/”>戻る</a>
–>
</HTML>
 
 

282_php+SQLDBで連続無事故日数カウント管理(まだ途中)

「php+SQLDBで連続無事故日数カウントWebを作ってみた」
Web_URL
http://dasudasu.sakura.ne.jp/tbl_20170621/20170621_list.php
20170621_form.html
20170621_list.php
20170621_trDB.php
20170621_view.php
20170621_updateform.php
DB名:dasudasu_tbl
テーブル名:tbl_t
項目
tr_Num  id
tr_date  hakkaku_date
tr_today
tr_service service_name
tr_contents naiyou
d_bit
INSERT  INTO tbl_t (tr_date, tr_service, tr_contents) VALUES ( now(), ‘service_name’, ‘naiyou’ )
で今日の日付が入る!!!OK
select max(tr_date) from tbl_t
select min(tr_date) from tbl_t
もOK
select * from tbl_t WHERE tr_date = (select max(tr_date) from tbl_t)
もOK
UPDATE  tbl_t  SET  tr_today = (now())  WHERE tr_date = “2017-06-10”
もOK
SELECT DATEDIFF(now(), (select max(tr_date) from tbl_t)) FROM tbl_t;
もOK
<ゴミ>
UPDATE  tbl_t  SET  tr_today = (now()) WHERE tr_date = (select max(tr_date) from tbl_t);
insert into tbl_t (tr_today)  values (now())  WHERE tr_date = (select max(tr_date) from tbl_t)
UPDATE  tbl_t  SET  tr_today = value( now()) WHERE tr_date = “2017-06-10”
UPDATE  tbl_t  SET  tr_today = now() WHERE tr_date = (select max(tr_date) from tbl_t);
UPDATE  tbl_t  SET  tr_today = value( now())   WHERE tr_date = (select max(tr_date) from tbl_t)
SELECT date1, date2, DATEDIFF(day, date1, date2) FROM tbTestTable;
SELECT DATEDIFF(now(), (select max(tr_date) from tbl_t)) FROM tbl_t;
まだ途中!!!!!

281_DTMFのログファイルで番号だけ表示>成功!

ごちゃごちゃ多いので、DTMFの番号だけ選んで表示させます。

phpで関数使います。久しぶり。。。。

これがデータ・・・・・・・

[Jun 18 19:43:17] DTMF[28817][C-0000000f] channel.c: DTMF end ‘5’ received on SIP/5001-00000009, duration 250 ms
[Jun 18 19:43:17] DTMF[28817][C-0000000f] channel.c: DTMF begin emulation of ‘5’ with duration 250 queued on SIP/5001-00000009
[Jun 18 19:43:17] DTMF[28817][C-0000000f] channel.c: DTMF begin ‘5’ received on SIP/5001-00000009
[Jun 18 19:43:17] DTMF[28817][C-0000000f] channel.c: DTMF begin ignored ‘5’ on SIP/5001-00000009
[Jun 18 19:43:17] DTMF[28817][C-0000000f] channel.c: DTMF end ‘5’ received on SIP/5001-00000009, duration 100 ms
[Jun 18 19:43:18] DTMF[28817][C-0000000f] channel.c: DTMF end emulation of ‘5’ queued on SIP/5001-00000009
[Jun 18 19:43:18] DTMF[28817][C-0000000f] channel.c: DTMF end ‘5’ received on SIP/5001-00000009, duration 100 ms
[Jun 18 19:43:18] DTMF[28817][C-0000000f] channel.c: DTMF begin emulation of ‘5’ with duration 100 queued on SIP/5001-00000009
[Jun 18 19:43:18] DTMF[28817][C-0000000f] channel.c: DTMF end emulation of ‘5’ queued on SIP/5001-00000009
今は、まま表示。下記で。
<?php
$contents = @file(‘/var/log/asterisk/dtmf’);
foreach($contents as $line){
echo $line.”<br />”;
}
?>
これを・・・・・
これを更に、文字列を指定した区切り文字で分割して配列で返す explode()。
http://www.phpbook.jp/func/file/index3.html
を参照
データは、
⓪[Jun
①18
②19:43:17]
③DTMF[28817][C-0000000f]
④channel.c:
⑤DTMF
⑥end
⑦‘5’ <———————これを取りたい!!
⑧received
⑨on
⑩SIP/5001-00000009,
⑪duration
⑫250
⑬ms
・・・・・で、こうなりました!!!
************************************
ディレクトリ
/var/www/html/asterisk_log
ファイル名
dtmf_log3.php <—一応関連の情報も一緒に
dtmf_log4.php <—正味番号だけ
************************************
<?php
$contents = @file(‘/var/log/asterisk/dtmf’);
$cnt = 0;
foreach($contents as $line){
        // スペース区切りで配列に格納、項目単位でとる
$array = explode(‘ ‘, $line);
        if($array[5]==”DTMF”){
                if(($cnt%9)==0){
                        echo $array[0].”-“.$array[1].”-“.$array[2].”-“.$array[3].”——->”;
                        echo $array[7].”<br />”;
print “————-<br />”;
}
                $cnt++;
        }
}
?>
************************************
以上

280_DTMFのログファイルをWebに表示する>成功!

asteriskのlogger.confで設定したDTMFのログファイルをWebに表示する
まず、phpでsakuravpsサーバのログファイルをそのまま表示してみる。
参考は、
http://php-beginner.com/practice/file_ope/file_ope3.html
サンプルは、
****************
file_get_contents()使用例
****************
<?php
$contents = @file_get_contents(‘sample.txt’);
echo $contents;
?>
****************
これより、
<?php
$contents = @file_get_contents(‘/var/log/asterisk/dtmf’);
echo $contents;
?>

/var/www/html/asterisk_log
に、ファイル名
dtmf_log1.php
として設置する。
・・・・
http://ik1-313-16602.vs.sakura.ne.jp/asterisk_log/dtmf_log1.php
・・・・
うーーん。改行しないと見ずらいなあ・・・
****************
file()使用例
****************
<?php
$contents = @file(‘sample.txt’);
foreach($contents as $line){
echo $line.”<br />”;
}
?>
****************
これより、
<?php
$contents = @file(‘/var/log/asterisk/dtmf’);
foreach($contents as $line){
echo $line.”<br />”;
}
?>
http://ik1-313-16602.vs.sakura.ne.jp/asterisk_log/dtmf_log2.php
おお、、やや見やすくなった!!!
今日は、ここまで!!!
以上

279_asteriskのlogファイルにDTMFの押下番号を取得は成功!

asteriskでDTMFを取り出す
http://bbs.voip-info.jp/forum/viewtopic.php?showtopic=4000
を参考
ログとして記録して、後から必要な所だけ取り出す方法、、をやってみる。
まず、
/etc/asterisk/logger.conf
のログの吐き出す項目設定に、以下の様に[dtmf]を追加します。。。と。
full => notice,warning,error,verbose,dtmf
↑出力先
その後、
asteriskをreload、もしくはrestartして頂き、変更した設定を読み込みます。。。と。
すると、上記の場合[full]と言うログファイルに、[dtmf]の記録を吐き出す事になりますので、
/var/log/asterisk/full
のファイルに、
例)
[Oct 26 21:37:02] DTMF[13821] channel.c: DTMF end ‘0’ received on DAHDI/1-1, duration 0 ms
[Oct 26 21:37:02] DTMF[13821] channel.c: DTMF end accepted without begin ‘0’ on DAHDI/1-1
[Oct 26 21:37:02] DTMF[13821] channel.c: DTMF end passthrough ‘0’ on DAHDI/1-1
この様な形で、検出されたDTMFの結果が、記録されます。
されない・・・・
で、
http://wiki.kolmisoft.com/index.php/DTMF_problems
をチェック。
DTMF digits are skipped
In /etc/asterisk/sip.conf in [general] section set relaxdtmf=yes and rfc2833compensate=yes and reload Asterisk
なので、やってみる。
ダメ・・・・
http://www.asteriskdocs.org/en/3rd_Edition/asterisk-book-html-chunk/Monitoring_id264504.html
を参考に
When you have saved the file, you will need to reload the logger by issuing the following command from the shell:
$ asterisk -rx ‘logger reload’
or from the Asterisk CLI:
*CLI> logger reload
をやったが、、、、
ダメ・・・・・
CLIで
logger set level DTMF off
をやったがダメ・・・・
http://asteriskpbx.cocolog-nifty.com/blog/2010/12/dtmf-2df5.html
を参考に、
sip.conf

dtmfmode=rfc2833
を明記。
ダメ・・・
https://stackoverflow.com/questions/23752680/asterisk-ignores-dtmf-during-all-calls-cannot-use-keypress-features
を参考に
full => verbose,debug,dtmf
としてみる。。
できた。。。
なんてことない。
asteriskの対応は12から、、、
RaspnberryPiは11だから・・・・
sakuravpsでやってみると、Asterisk 14.4.0なので
見事ログが取れています!!!!
さあ、これをwebで簡単に見れるようにpythonとphp書いてみるか?
[Jun 18 19:43:17] DTMF[28817][C-0000000f] channel.c: DTMF end ‘5’ received on SIP/5001-00000009, duration 250 ms
[Jun 18 19:43:17] DTMF[28817][C-0000000f] channel.c: DTMF begin emulation of ‘5’ with duration 250 queued on SIP/5001-00000009
[Jun 18 19:43:17] DTMF[28817][C-0000000f] channel.c: DTMF begin ‘5’ received on SIP/5001-00000009
[Jun 18 19:43:17] DTMF[28817][C-0000000f] channel.c: DTMF begin ignored ‘5’ on SIP/5001-00000009
[Jun 18 19:43:17] DTMF[28817][C-0000000f] channel.c: DTMF end ‘5’ received on SIP/5001-00000009, duration 100 ms
[Jun 18 19:43:18] DTMF[28817][C-0000000f] channel.c: DTMF end emulation of ‘5’ queued on SIP/5001-00000009
[Jun 18 19:43:18] DTMF[28817][C-0000000f] channel.c: DTMF end ‘5’ received on SIP/5001-00000009, duration 100 ms
[Jun 18 19:43:18] DTMF[28817][C-0000000f] channel.c: DTMF begin emulation of ‘5’ with duration 100 queued on SIP/5001-00000009
[Jun 18 19:43:18] DTMF[28817][C-0000000f] channel.c: DTMF end emulation of ‘5’ queued on SIP/5001-00000009
で1番号の表示セットのようだ!!!
以上

278_5000にCallすると一斉着信は成功!

5000にCallすると一斉着信は成功!
一斉着信にトライ!
http://www.voip-info.jp/index.php/Asterisk_extensions.conf
を参考
下記を
/etc/asterisk/extensions.conf
に追加
; Ring 5001-5005 phones
exten => 5000,1,Dial(SIP/5001&SIP/5002&SIP/5003&SIP/5004&SIP/5005)
exten => 5000,n,Hangup
一応鳴るみたい。。。。OK!!!!!
では、カメラ認知したら、5000にかけるようにしてみる。。
5000 一斉通知用
5001 博一スマホ
5002 文子スマホ
5003 Win10
5004 Win7
5005 空き
/home/pi/motion/motion_tel.py

motion_tel.py

Channel: SIP/5000           # SIP/<通知したい電話番号>@<外線発信するセクション名>
とする!!
どうかな?
うーーーん。失敗。
今日はねむいので止め・・・・
以上

277_温湿度計_HDC1050でOK!

やはりHDC1000は故障かな?HDC1050に変えたら正常に測定開始しました!

どきゅめんと参考は、【154】

コマンドは、

$ sudo i2cdetect -y 1

$ sudo python 20170211_tmp1.py

以上!!!(よかった。。。ふうう。。)

 

276_docomo Developer support 「Repl-AI」を試す_NG!

docomo Developer support 「Repl-AI」を試す
https://dev.smt.docomo.ne.jp/?p=mypage.index
図1:表紙
図2:新規登録
h1729708@yahoo.co.jp
A******6
で登録します。
図3:新規アカウント登録完了!
図4:ログインできました!
では、API利用申請:新規利用申請
図5:API申込み画面
アプリケーション基本情報
アプリケーション名
20170604_zatsudan
アプリケーション概要
docomo Repl-AIを活用した雑談AP、体験用
サービス開始予定日
2017/06/05
アプリケーションタイプ
ウェブアプリケーション
コールバックURL
https://dummy
提供者名
Mr.dasudasu
サポートメールアドレス
h1729708@yahoo.co.jp
API機能 利用申請
雑談対話
シナリオ対話
知識Q&A
の3つ
を申し込み!
図6:申請完了
図7:アプリケーション情報
では、Lesson3に従って
https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_name=dialogue&p_name=sdk#tag01
SDK for Android?をダウンロードして展開
図8:雑談対話APIを使ったコンピュータとのチャットアプリ作成
図9:AndroidStudio
雑談対話APIを使って、ユーザとコンピュータで雑談するアプリを作成します。まず、Eclipse(私の場合、Android Studio)を起動し、新規でAndroidプロジェクトを作成します。プロジェクト名は「BotChat」とし、エントリポイントとなるアクティビティをMainActivity.java、レイアウトファイルをactivity_main.xmlとして作成します。
画面の作成(ListViewとカスタムレイアウト作成)
最初にアプリケーションのUIを作成します。ユーザとコンピュータでの会話を交互に表示するため、ListViewコントロールを使います。ListViewコントロールは、複数のアイテムを1つにまとめてリスト形式で表示することができるビューです。
しかし、、
AndroidStudioの使い方忘れた。。。
ここまでで断念。。。。
ちょっと簡単な奴からにしよ。。。。すみません。。。
以上