From 5056a4a4fb5065c88d6a34a6c1dbb790099b3f36 Mon Sep 17 00:00:00 2001 From: Joachim Stolberg Date: Fri, 10 Jun 2022 11:48:59 +0200 Subject: [PATCH] Add 'get name' command to the door controller --- doc/manual_DE.lua | 2 ++ doc/manual_EN.lua | 2 ++ manuals/manual_ta3_DE.md | 4 +++- manuals/manual_ta3_EN.md | 2 ++ move_controller/doorcontroller2.lua | 18 ++++++++++++++++++ 5 files changed, 27 insertions(+), 1 deletion(-) diff --git a/doc/manual_DE.lua b/doc/manual_DE.lua index 48336a5..17eecb7 100644 --- a/doc/manual_DE.lua +++ b/doc/manual_DE.lua @@ -1152,6 +1152,8 @@ techage.manual_DE.aText = { "\n".. "Mit '$send_cmnd(node_number\\, \"dig\"\\, 2)' kann ein Block wieder entfernt werden\\, sofern der Inventory Slot leer ist. \n".. "\n".. + "Mit '$send_cmnd(node_number\\, \"get\"\\, 2)' wird der Name des gesetzten Blocks zurückgeliefert. \n".. + "\n".. "Die Slot-Nummer des Inventars (1 .. 16) muss in allen drei Fällen als payload übergeben werden.\n".. "\n".. "Damit lassen sich auch ausfahrbare Treppen und ähnliches simulieren.\n".. diff --git a/doc/manual_EN.lua b/doc/manual_EN.lua index 53ce0f5..4ec4352 100644 --- a/doc/manual_EN.lua +++ b/doc/manual_EN.lua @@ -1150,6 +1150,8 @@ techage.manual_EN.aText = { "\n".. "A block can be removed again with '$send_cmnd(node_number\\, \"dig\"\\, 2)' if the inventory slot is empty. \n".. "\n".. + "The name of the set block is returned with '$send_cmnd(node_number\\, \"get\"\\, 2)'.\n".. + "\n".. "The slot number of the inventory (1 .. 16) must be passed as payload in all three cases.\n".. "\n".. "This can also be used to simulate extendable stairs and the like. \n".. diff --git a/manuals/manual_ta3_DE.md b/manuals/manual_ta3_DE.md index 76f2030..4ccfcd2 100644 --- a/manuals/manual_ta3_DE.md +++ b/manuals/manual_ta3_DE.md @@ -667,6 +667,8 @@ Mit `$send_cmnd(node_number, "set", 2)` kann ein Block aus dem Inventory explizi Mit `$send_cmnd(node_number, "dig", 2)` kann ein Block wieder entfernt werden, sofern der Inventory Slot leer ist. +Mit `$send_cmnd(node_number, "get", 2)` wird der Name des gesetzten Blocks zurückgeliefert. + Die Slot-Nummer des Inventars (1 .. 16) muss in allen drei Fällen als payload übergeben werden. Damit lassen sich auch ausfahrbare Treppen und ähnliches simulieren. @@ -875,4 +877,4 @@ Der Techage Schraubendreher dient als Ersatz für den normalen Schraubendreher. - Shift+Linksklick: Ausrichtung des angeklickten Blockes speichern - Shift+Rechtsklick: Die gespeicherte Ausrichtung auf den angeklickten Block anwenden -[ta3_screwdriver|image] \ No newline at end of file +[ta3_screwdriver|image] diff --git a/manuals/manual_ta3_EN.md b/manuals/manual_ta3_EN.md index 9176378..5e45494 100644 --- a/manuals/manual_ta3_EN.md +++ b/manuals/manual_ta3_EN.md @@ -660,6 +660,8 @@ With `$send_cmnd(node_number, "set", 2)` a block from the inventory can be set e A block can be removed again with `$send_cmnd(node_number, "dig", 2)` if the inventory slot is empty. +The name of the set block is returned with `$send_cmnd(node_number, "get", 2)`. + The slot number of the inventory (1 .. 16) must be passed as payload in all three cases. This can also be used to simulate extendable stairs and the like. diff --git a/move_controller/doorcontroller2.lua b/move_controller/doorcontroller2.lua index 1b7cef2..664ec30 100644 --- a/move_controller/doorcontroller2.lua +++ b/move_controller/doorcontroller2.lua @@ -196,6 +196,14 @@ local function exchange_nodes(pos, nvm, slot, force) return res end +local function get_node_name(nvm, slot) + local pos = nvm.pos_list[slot] + if pos then + return techage.get_node_lvm(pos).name + end + return "unknown" +end + local function show_nodes(pos) local nvm = techage.get_nvm(pos) if not nvm.is_on then @@ -355,6 +363,9 @@ techage.register_node({"techage:ta3_doorcontroller2"}, { elseif topic == "dig" then local nvm = techage.get_nvm(pos) return exchange_nodes(pos, nvm, tonumber(payload), "dig") + elseif topic == "get" then + local nvm = techage.get_nvm(pos) + return get_node_name(nvm, tonumber(payload)) end return false end, @@ -375,6 +386,13 @@ techage.register_node({"techage:ta3_doorcontroller2"}, { end return 2 end, + on_beduino_request_data = function(pos, src, topic, payload) + if topic == 147 then -- Get Name + local nvm = techage.get_nvm(pos) + return 0, get_node_name(nvm, payload[1] or 1) + end + return 2, "" + end, on_node_load = function(pos) local meta = M(pos) local nvm = techage.get_nvm(pos)