BV1AL 之無所不記

2015-12-31

LINE for Linux

使用LINE 交談是不得已,這麼說,是因為LINE 不願意提供給 Open source free software
社群一個有效的方便使用環境,但是台灣太多人用LINE,不用就不方便。

之前有人以反向工法解譯出可以用 Python 來傳送LINE 交談的方法,但是
不久 LINE公司就發文威脅該作者,那段程式碼便被移出網路不能公開了。

為了在 Linux 下使用 LINE,我試過以 wine 跑 LINE for Windows 或是
跑 kvm qemu 跑一個 Windows 來執行 LINE for Windows, 結果都有
使用上的不方便。

最後,發現 LINE 有 for chromium browser 的plugin, 於是試用了一下,
發現這是在幾種 Linux 環境下 LINE 不好用的方式裡
「最不會不好用」的方式,於是就這樣「不得已」的在 Linux 環境下
使用起 LINE 來,也推薦給使用 Linux 並且要用 LINE 的朋友用。

簡單講就是:
1. 安裝 chromium-browser (在Linux 環境)
2. 在chromium-browser 裡安裝 LINE app plugin
之後並不須要開啟 chromium-browser 而是把以下這段指令寫在某個
可供開啟的地方,例如 fluxbox 的 menu 裡:
"chromium-browser --app-id=menkifleemblimdogmoihpfopnplikde"
然後就可以在 Linux 圖型介面環境下啟用 LINE 了。
或者說,在任何 terminal 裡執行上面那段指令,就會啟用 LINE。

標籤: ,

MK802 telegram + ESP8266 自動控制

由於ESP8266 本身俱有網路功能,只要有wifi 就能簡單建構起來。
這裡使用文字介面的 telegram-cli 加 esp8266(執行 telnetd service)。

利用 telegram-cli 當載具,可以接收來自地表各處給的指令(中國除外)、
向OS(Linux) 送出指令,介面由 python 組成(在我五月寫的 Telegram 機器人
那一篇有說明,用一台小小 的 MK802 (或Raspberry Pi)就可以達成。

MK802 到ESP8266 的介面也是藉由 python 來達成
ESP8266 用nodemcu 跑 telnetd service

與ESP8266 互動的部份:
espc = pexpect.spawn('telnet %s 23'%esp8266_IP)
--以下sendline() 內容可以改成任何指令
espc.sendline('gpio.mode(%s,gpio.OUTPUT)'%pin)
espc.expect('> ')
--取得執行後的資訊
espMSG=espc.before
print(espMSG)

ESP8266 執行 telnetd service 的部份:
s=net.createServer(net.TCP,180)
s:listen(23,function(c)
  function s_output(str)
    if(c~=nil) then c:send(str) end
  end
  node.output(s_output, 0)
  c:on("receive",function(c,l)
    node.input(l)
  end)
  c:on("disconnection",function(c)
    node.output(nil)
  end)
  print(" >> DE BV1AL <<")
end)
 
2015年要結束了,最後一天來灌點水! 

標籤: , , , , ,

2015-12-03

ESP8266 多功能按鍵 2

前面那個按鍵的做法是在等待 1.1 秒之後,計算按了幾下,來執行對應的動作。
這個方式的缺點是定死了時間,所以最多也只能按大約四下,如果把等待的時間
延長,對於只按一下(或兩下)卻要等很久,所以不理想。

改成按了按鍵後,每 0.35 秒去檢查一次看看按鍵次數有沒有增加,如果增加,
就繼續等待,如果沒有增加,才去執行累計出來按鍵次數所對應的動作,這樣
既不必等很久,又可以很彈性的可以加入各種不同按鍵次數的動作。

old_b=0
function btcheck()
  if b == 0 then
    tmr.alarm(4,350,1, function()
      if old_b ~= b then
        old_b=b
      else
        buttdo()  
        b,old_b=0,0
        tmr.stop(4)
      end
    end)
  end
end  
這樣就好用多了!

標籤: , ,