From 1bbb7423154eaf36bb1e8eb583cf97dad0c1a039 Mon Sep 17 00:00:00 2001 From: Sebastiaan de Schaetzen Date: Sun, 14 Jul 2024 19:00:57 +0200 Subject: [PATCH] Little improvements, i guess --- controller-host/main.lua | 5 +- controller-host/mqtt/client.lua | 2 +- controller-host/mqtt/luasocket.lua | 2 +- get-image.lua | 3 +- spider-cam/spider-cam.py | 2 +- spider-host/main.go | 75 ------------------------------ 6 files changed, 9 insertions(+), 80 deletions(-) diff --git a/controller-host/main.lua b/controller-host/main.lua index 86bb120..7298ebf 100644 --- a/controller-host/main.lua +++ b/controller-host/main.lua @@ -7,7 +7,10 @@ local errorMessage = nil local oldPrint = print function print(...) - local string = string.format(...) + local string = "" + for _, v in ipairs({...}) do + string = string .. v + end love.mqtt.send("controller/stdout", string) oldPrint(...) end diff --git a/controller-host/mqtt/client.lua b/controller-host/mqtt/client.lua index c385a89..9241419 100644 --- a/controller-host/mqtt/client.lua +++ b/controller-host/mqtt/client.lua @@ -1078,7 +1078,7 @@ function client_mt:_apply_network_timeout() local allData = "" while true do local size = math.min(totalSize, 16384) - local data, err = sync_recv_func(size) + local data, err = sync_recv_func(size, ...) if not data and (err == "timeout" or err == "wantread") then loop.timeouted = true coroutine_yield(err) diff --git a/controller-host/mqtt/luasocket.lua b/controller-host/mqtt/luasocket.lua index d4334c6..b189c2d 100644 --- a/controller-host/mqtt/luasocket.lua +++ b/controller-host/mqtt/luasocket.lua @@ -45,7 +45,7 @@ end -- Set connection's socket to non-blocking mode and set a timeout for it function luasocket.settimeout(conn, timeout) conn.timeout = timeout - conn.sock:settimeout(timeout, "t") + conn.sock:settimeout(timeout, "b") end -- export module table diff --git a/get-image.lua b/get-image.lua index 611e004..12f3b7f 100644 --- a/get-image.lua +++ b/get-image.lua @@ -20,6 +20,7 @@ local function onMessage(data) end local function onConnect(connack) + print("Connected") if connack.rc ~= 0 then print("Connection to broker failed:", connack:reason_string()) os.exit(1) @@ -29,7 +30,7 @@ local function onConnect(connack) topic = "spider/telemetry/#" }) - print("Connected and subscribed") + print("Subscribed") end client = mqtt.client { diff --git a/spider-cam/spider-cam.py b/spider-cam/spider-cam.py index b495be0..169f015 100644 --- a/spider-cam/spider-cam.py +++ b/spider-cam/spider-cam.py @@ -29,7 +29,7 @@ def process_request(request): global mqttc image_count += 1 - if image_count > 30: + if image_count > 10: image_count = 0 print(f'Request completed: {request}') diff --git a/spider-host/main.go b/spider-host/main.go index b210c2d..70e03ef 100644 --- a/spider-host/main.go +++ b/spider-host/main.go @@ -2,7 +2,6 @@ package main import ( "fmt" - "github.com/blackjack/webcam" mqtt "github.com/eclipse/paho.mqtt.golang" "log" "time" @@ -45,79 +44,6 @@ func onPing(client mqtt.Client, msg mqtt.Message) { publishTelemetry(client, "pong", msg.Payload()) } -func handleWebcam(client mqtt.Client) { - cam, err := webcam.Open("/dev/video0") - if err != nil { - log.Fatalf("Could not open webcam: %v\n", err) - } - defer cam.Close() - - supportedFormat := cam.GetSupportedFormats() - //log.Printf("Supported formats:\n") - imageFormat := webcam.PixelFormat(0) - for format, description := range supportedFormat { - if description == "10-bit Bayer GBGB/RGRG" { - imageFormat = format - } - } - - //width, height := 1296, 972 - //width, height := uint32(2592), uint32(1944) - width, height := uint32(640), uint32(480) - - if imageFormat != webcam.PixelFormat(0) { - _, _, _, err = cam.SetImageFormat(imageFormat, width, height) - if err != nil { - log.Fatalf("Could not set image format: %v\n", err) - } - } - - supportedFramerates := cam.GetSupportedFramerates(imageFormat, width, height) - log.Printf("Supported frame rates:\n") - for _, format := range supportedFramerates { - log.Printf(" - %s\n", format) - } - - controls := cam.GetControls() - log.Printf("Controls:\n") - for _, control := range controls { - log.Printf(" - %s\n", control) - } - - //cam.SetAutoWhiteBalance(true) - //cam.SetControl() - - //err = cam.SetFramerate(10) - //if err != nil { - // log.Fatalf("Could not set framerate: %v\n", err) - //} - - err = cam.StartStreaming() - if err != nil { - log.Fatalf("Could not start streaming webcam: %v\n", err) - } - - count := 0 - for { - err = cam.WaitForFrame(100) - if err != nil { - log.Fatalf("Could not start streaming webcam: %v\n", err) - } - frame, err := cam.ReadFrame() - if err != nil { - log.Fatalf("Could not read frame: %v\n", err) - } - if len(frame) > 0 { - count++ - if count > 30*4 { - print("Publishing frame\n") - publishTelemetry(client, "camfeed", frame) - return - } - } - } -} - func main() { opts := mqtt.NewClientOptions() opts.AddBroker(broker) @@ -138,7 +64,6 @@ func main() { } InitBattery() - //go handleWebcam(client) slowTelemetry := time.NewTicker(3 * time.Second) defer slowTelemetry.Stop()