homassistant上配置device_tracker

官方文档:
https://home-assistant.io/components/device_tracker.gpslogger/

一. 更改ha配置
1. configure.yaml
device_tracker:
– platform: gpslogger

zone: !include zone.yaml

2. zone.yaml
– name: MyHome
latitude: xxx.xxx
longitude: xxx.xxx
radius: 250
icon: mdi:home

二. 在手机上安装gpslogger

记录细节->记录到自定义URL,值为以下:
http://[ha_server]/api/gpslogger?api_password=[password]&latitude=%LAT&longitude=%LON&device=%SER&accuracy=%ACC&battery=%BATT&speed=%SPD&direction=%DIR&altitude=%ALT&provider=%PROV&activity=%ACT

修改[ha_server]和[password]为你的值

三. automate.yaml

– alias: hackers365 phone enter office
trigger:
– platform: zone
entity_id: device_tracker.xxx
zone: zone.office
event: enter
condition:
– condition: time
after: ’09:30′
before: ’10:30′
action:
– service: tts.baidu_say
entity_id: media_player.vlc
data:
message: ‘波哥已经到公司了’

raspberry pi 上的pulseaudio

ps3 eye有时可以工作,有时就不能工作,一直郁闷了好几周找不着问题.最终经过排查了几周是pulseaudio 版本过低的问题.raspberry pi官方的镜像中pulseaudio非常旧,还停留在5.0.
中间过程曲折,首先下载的最新的官方镜像测试,一直有问题,时好时坏.然后过元旦的第一天下载了ubuntu镜像,pulseaudio版本是8.0.非常ok没有问题,但是ubuntu的桌面非常慢,导致打开个网页也卡的不行,然后就在另外一个raspberry pi3上测试自己编译高版本的pulseaudio,参考:
http://youness.net/raspberry-pi/bluetooth-headset-raspberry-pi
这位大神的文章,最终编译成功,时好时坏的现象没有了非常稳定。

简明过程如下:

apt-get update
apt-get upgrade
apt-get install intltool libtool libcap-dev libjson0-dev libsndfile1-dev
apt-get install libudev-dev libsbc-dev libbluetooth-dev libx11-xcb-dev libasound2-dev instal libsystemd-dev libsamplerate0-dev
wget 'https://freedesktop.org/software/pulseaudio/releases/pulseaudio-9.0.tar.gz'
tar zxvf pulseaudio-9.0.tar.gz
cd pulseaudio-9.0
./bootstrap.sh
make
make install
ldconfig

中间过程总是被老婆笑话,”你的智能家居好了没呀?”,”都搞了好几周。还没搞定。”,”连个麦克风都搞不定,行了别玩了。”

好吧,别笑话哥,哥已经搞定了,继续下边的工作。。。

shell中根据步长并发跑指定一段时间内的任务

#!/bin/bash

start_date='20160907'
end_date='20160705'
step=5

current_date=`date +%Y%m%d`
current_ts=`date +%s -d "$current_date"`

start_ts=`date +%s -d "$start_date"`
end_ts=`date +%s -d "$end_date"`
ibegin=`expr \( $current_ts - $start_ts \) \/ 86400`

sbegin=$ibegin
ebegin=`expr $ibegin + $step`

function task() {
startDate=$1
endDate=$2
startTs=`date +%s -d "$startDate"`
endTs=`date +%s -d "$endDate"`
begin=`expr \( $current_ts - $startTs \) \/ 86400`

while [ 1 ]
do
if [ $str -eq $endDate ];then
break
fi

{
//do task
}&
begin=`expr $begin + 1`
done
wait
}

while [ 1 ]
do
sdate=`date '+%Y%m%d' --date="-${sbegin} day"`
edate=`date '+%Y%m%d' --date="-${ebegin} day"`

if [ $edate -le $end_date ];then
edate=$end_date
fi

task $sdate $edate

if [ $edate -le $end_date ];then
break;
fi
sbegin=`expr $ebegin + 1`
ebegin=`expr $ebegin + $step`

done

那些年我们一起追逐过的安全工具

http://www.freebuf.com/sectool/110526.html

结尾:

而当年的“黑客”们,有的已经成家享受天伦之乐,有的已经走上人生巅峰,有的在监狱内仰望今生…..从某种意义上说,正是他们所编写的那一个个安全工具,才有了今天中国蓬勃新生的信息安全产业。即便他们离开了这个圈子,但那份情怀已永远地保留在工具中,深藏在于互联网的某个角落。

夜,深了

忙活了一个月,腿儿快累断了。。7月18号晚上终于把房子给订下来了。直到两点才回家。。虽然不是那么完美。没有落地飘窗。没有宽敞的卧室。但它终究是自己的窝。。

感谢。父母的大力资助。感谢。朋友们的帮忙。。

QQ图片20160718130535

批量取数据并(全量/增量)缓存结果(不是结果集)的抽象方法

/*
    * @param $id_list id列表
    * @param $mc_prefix mc前缀
    * @param $extra_param 其它参数
    * @param $callback
    * @return array()
    * @desc 根据id_list批量获取数据并缓存的抽象方法
     */
    public function getList($id_list, $mc_prefix, $extra_params, $callback) {
        $cache_id_list = array();
        foreach($id_list as $_id) {
            $cache_id_list[$_id] = $mc_prefix . $_id;
        }
        $mc = Yaf_Registry::get('cache');
        $ret = array();
        if (!$_SERVER['mc_disable'] && (false !== ($ret_mc=$mc->get($cache_id_list)))) {
            $not_hit = array();
            foreach($cache_id_list as $_id => $_cache_id) {
                if (isset($ret_mc[$_cache_id]) && $ret_mc[$_cache_id]) {
                    $ret[$_id] = $ret_mc[$_cache_id];
                } else {
                    $not_hit[] = $_id;
                }
            }

            if ($not_hit) {
                $not_mc_ret = call_user_func_array($callback, array('id_list' => $not_hit) + $extra_params);
                $ret += $not_mc_ret;
            }
        } else {
            $not_mc_ret = call_user_func_array($callback, array('id_list' => $id_list) + $extra_params);
            $ret = $not_mc_ret;
        }
        if ($not_mc_ret) {
            foreach($not_mc_ret as $_id => $_data) {
                if ($_data) {
                    $cache_id = $mc_prefix . $_id;
                    $mc->set($cache_id, $_data, 86400);
                }
            }
        }

        $return = array();
        foreach($id_list as $_id) {
            if (isset($ret[$_id])) {
                $return[$_id] = $ret[$_id];
            }
        }
        return $return;
    }

一. 字符串连接符

<?php
$x = 4;
echo "x minus one equals " . $x-1 . ", or so I hope";
?>

打印出来:

"-1, or so I hope"

二. and/or
嗯.php也有and/or这样的逻辑运算符.但是…

$bool = true && false;
var_dump($bool); // false, that's expected

$bool = true and false;
var_dump($bool); // true, ouch!
?>

原来’=’比’and/or’优先级高.