diff --git a/firmware/releases/2-3-4/konnected-esp8266-2-3-4.bin b/firmware/releases/2-3-4/konnected-esp8266-2-3-4.bin new file mode 100644 index 0000000..f7057b8 Binary files /dev/null and b/firmware/releases/2-3-4/konnected-esp8266-2-3-4.bin differ diff --git a/firmware/releases/2-3-4/konnected-filesystem-0x100000-2-3-4.img b/firmware/releases/2-3-4/konnected-filesystem-0x100000-2-3-4.img new file mode 100644 index 0000000..4008f58 Binary files /dev/null and b/firmware/releases/2-3-4/konnected-filesystem-0x100000-2-3-4.img differ diff --git a/firmware/releases/2-3-4/konnected-firmware-2-3-4.bin b/firmware/releases/2-3-4/konnected-firmware-2-3-4.bin new file mode 100644 index 0000000..650104f Binary files /dev/null and b/firmware/releases/2-3-4/konnected-firmware-2-3-4.bin differ diff --git a/scripts/build-firmware b/scripts/build-firmware index c9357f4..26c93b5 100755 --- a/scripts/build-firmware +++ b/scripts/build-firmware @@ -55,4 +55,7 @@ rm -rf "${BUILD_PATH}/*" cp "${FIRMWARE_PATH}/bin/nodemcu_integer_${IMAGE_NAME}.bin" "${BUILD_PATH}/${IMAGE_NAME}.bin" cp "${FIRMWARE_PATH}/bin/konnected-filesystem-0x100000.img" "${BUILD_PATH}/konnected-filesystem-0x100000-${VERSION}.img" +srec_cat -output "${BUILD_PATH}/konnected-esp8266-${VERSION}.bin" -binary "${BUILD_PATH}/${IMAGE_NAME}.bin" -binary -fill 0xff 0x0000 0x100000 "${BUILD_PATH}/konnected-filesystem-0x100000-${VERSION}.img" -binary -offset 0x100000 + + echo "Build Complete: Flash this build with './scripts/flash ${VERSION} '" \ No newline at end of file diff --git a/src/lfs/aws_iot.lua b/src/lfs/aws_iot.lua index 2354c34..811eeb8 100644 --- a/src/lfs/aws_iot.lua +++ b/src/lfs/aws_iot.lua @@ -52,10 +52,17 @@ end) local function startLoop() print("Heap:", node.heap(), 'Connecting to AWS IoT Endpoint:', settings.endpoint) + local mqttFails = 0 c:on('offline', function() - print("Heap:", node.heap(), "mqtt: offline") + mqttFails = mqttFails + 1 + print("Heap:", node.heap(), "mqtt: offline", "failures:", mqttFails) sendTimer:stop() - c:connect(settings.endpoint) + + if mqttFails >= 10 then + tmr.create():alarm(3000, tmr.ALARM_SINGLE, function() node.restart() end) -- reboot in 3 sec + else + c:connect(settings.endpoint) + end end) c:connect(settings.endpoint) @@ -75,10 +82,19 @@ end) c:on('message', function(_, topic, message) print("Heap:", node.heap(), 'topic:', topic, 'msg:', message) local payload = sjson.decode(message) - require("switch")(payload) + local endState = require("switch")(payload) -- publish the new state after actuating switch - table.insert(sensorPut, { pin = payload.pin, state = gpio.read(payload.pin) }) + table.insert(sensorPut, endState) + + -- set state back to initial after momentary is complete + if payload.momentary and payload.times > 0 then + revertIn = (payload.momentary + payload.pause) * payload.times - payload.pause + tmr.create():alarm(revertIn, tmr.ALARM_SINGLE, function() + local revertState = { pin = endState.pin, state = endState.state == 0 and 1 or 0} + table.insert(sensorPut, revertState) + end) + end end) c:on('connect', function() diff --git a/src/lfs/device.lua b/src/lfs/device.lua index 1f44414..44f4347 100644 --- a/src/lfs/device.lua +++ b/src/lfs/device.lua @@ -2,7 +2,7 @@ local me = { id = "uuid:8f655392-a778-4fee-97b9-4825918" .. string.format("%x", node.chipid()), name = "Konnected", hwVersion = "2.3.0", - swVersion = "2.3.3", + swVersion = "2.3.4", http_port = math.floor(node.chipid()/1000) + 8000, urn = "urn:schemas-konnected-io:device:Security:1" }