Merge branch 'master' of rvb.name:openhab-process
authorRoman Bazalevsky <rvb@rvb.name>
Fri, 26 Oct 2018 08:50:24 +0000 (11:50 +0300)
committerRoman Bazalevsky <rvb@rvb.name>
Fri, 26 Oct 2018 08:50:24 +0000 (11:50 +0300)
1  2 
mqtt-bt/scan-beacons

diff --combined mqtt-bt/scan-beacons
index fcd3c207ebe7242050927fb280d95c088b93e077,210bcfbbf1c714cf37e8e4e69a10d1571d685696..0e0b701d483eab414041eafed53ad07d5bb2fec9
@@@ -1,32 -1,65 +1,65 @@@
  #!/usr/bin/lua
  
  json = require("json")
+ socket = require("socket")
  
  function getConfig(configname)
  
-   local uci=require("uci")
-   local cur=uci.cursor()
+   local status,uci = pcall(require,"uci")
    local config
-   if configname then
-     config=configname
-   else
-     config="beacon"
-   end
  
-   logging = cur.get(config,"logging","enabled") 
+   if status then
+     if configname then
+       config=configname
+     else
+       config="beacon"
+     end
+     local cur=uci.cursor()
  
-   mqtt_host = cur.get(config,"mqtt","host")
-   mqtt_port = cur.get(config,"mqtt","port")
-   mqtt_id = cur.get(config,"mqtt","id")
-   mqtt_topic = cur.get(config,"mqtt","topic")
+     logging = cur.get(config,"logging","enabled") 
  
-   mqtt_user = cur.get(config,"mqtt","user")
-   mqtt_passwd = cur.get(config,"mqtt","password")
+     mqtt_host = cur.get(config,"mqtt","host")
+     mqtt_port = cur.get(config,"mqtt","port")
+     mqtt_id = cur.get(config,"mqtt","id")
+     mqtt_topic = cur.get(config,"mqtt","topic")
+   
+     mqtt_user = cur.get(config,"mqtt","user")
+     mqtt_passwd = cur.get(config,"mqtt","password")
  
+   else
+   
+     local status,ini = pcall(require,"ini")
+     if not status then
+       os.exit(1)
+     end 
+     if configname then
+       config=configname
+     else
+       config="/etc/beacon.ini"
+     end
+     local cur=ini.parse_file(config)
+     
+     logging = cur["logging"]["enabled"] 
+     mqtt_host = cur["mqtt"]["host"]
+     mqtt_port = cur["mqtt"]["port"]
+     mqtt_id = cur["mqtt"]["id"]
+     mqtt_topic = cur["mqtt"]["topic"]
+   
+     mqtt_user = cur["mqtt"]["user"]
+     mqtt_passwd = cur["mqtt"]["password"]
+   
+   end
+   hostname = socket.dns.gethostname()
    if mqtt_host and not mqtt_id then
      socket = require("socket")
      posix = require("posix")
-     hostname = socket.dns.gethostname()
      pid = posix.getpid()
      mqtt_id="beaconmon-"..hostname.."-"..pid
    end
@@@ -65,10 -98,7 +98,10 @@@ en
  function printLog(str)
    if logging=="yes" then
      capture("logger -t beaconmon \""..str.."\"")
 -  else 
 +    print(str)  
 +  elseif logging=="syslog" then
 +    capture("logger -t beaconmon \""..str.."\"")
 +  elseif logging=="stdout" then 
      print(str)  
    end 
  end
@@@ -83,12 -113,12 +116,12 @@@ en
  
  function open_dump()
  
-   run_command("/bin/kill `/usr/bin/pgrep btmon`")
-   run_command("/bin/kill `/usr/bin/pgrep hcitool`")
+   run_command("/usr/bin/pkill btmon")
+   run_command("/usr/bin/pkill hcitool")
    f = assert(io.popen ("/usr/bin/stdbuf -o0 /usr/bin/btmon"))
-   run_command("/usr/bin/hciconfig hci0 down")
-   run_command("/usr/bin/hciconfig hci0 up")
-   f_null = assert(io.popen ("/usr/bin/hcitool lescan --duplicates --passive"))
+   run_command("hciconfig hci0 down")
+   run_command("hciconfig hci0 up")
+   f_null = assert(io.popen ("hcitool lescan --duplicates --passive"))
  
    return f
  
@@@ -120,13 -150,13 +153,13 @@@ function process_packet(packet
    local type
    local name
  
+   packet['origin'] = hostname
    mac = packet['Address']
    uuid = packet['UUID']
    type = packet['Type']
    name = packet['Name (complete)']
  
-   print(dump(packet))
    if type and starts_with(type,'iBeacon') then
      details=uuid
    elseif name then