Skip to content

Latest commit

 

History

History
90 lines (62 loc) · 2.07 KB

18b20.md

File metadata and controls

90 lines (62 loc) · 2.07 KB

Temperature sensor 18B20

Module for usage of 18b20 one wire temperature sensor. Temperature can be read directly or event handler may be used

Read temperature directly

Temp18b20 = require "18b20" 
pin = 3
thermometer = Temp18b20(pin)
thermometer:init()

Use event handler manually

print ("core ready")

network_message = require "network_message"

pin = 3

Temp18b20 = require "18b20"
thermometer = Temp18b20(pin)
thermometer:init()
Temp18b20_handler = require "18b20_handler"
thermometer_handle = Temp18b20_handler(thermometer, true)

svr = net.createUDPSocket()
svr:on('receive', function(socket, message) 
    message = network_message.decodeMessage(message) 
    thermometer_handle:handle(socket, message)
end)  

svr:listen(PORT)

Handler responds to event temperature.current. Sample message:

{
    "node": "computer", 
    "protocol": "iot:1", 
    "targets": ["ALL"], 
    "chip_id": "d45656b45afb58b1f0a46", 
    "event": "temperature.current", 
    "parameters": {}
}

In parameter you may define rounding:

"parameters": {"round": true}

Sample response:

{
    "chip_id":194799,
    "protocol":"iot:1",
    "node":"node-40x4",
    "targets":["ALL"],
    "event":"",
    "response":26
}

Register worker in handler and listener:

network_message = require "network_message"
server_listener = require "server_listener"

Temp18b20 = require "18b20"
Temp18b20_handler = require "18b20_handler"

-- setup 18b20
pin = 3
thermometer = Temp18b20(pin)
thermometer:init()

-- atach 18b20 to handler
thermometer_handle = Temp18b20_handler(thermometer, true)

-- add handler to listener
server_listener.add("thermometer", thermometer_handle)

-- run server
server_listener.start(PORT)

Handler has a callback:

cb = function(event)
    print("event :"..event)
end

thermometer_handle = Temp18b20_handler(thermometer, true, cb)