![]() |
|
communication vbus solar resol - Printable Version +- LogicMachine Forum (https://forum.logicmachine.net) +-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1) +--- Forum: Gateway (https://forum.logicmachine.net/forumdisplay.php?fid=10) +--- Thread: communication vbus solar resol (/showthread.php?tid=346) |
RE: communication vbus solar resol - KoBra - 24.01.2023 (09.01.2023, 10:45)KoBra Wrote:(09.01.2023, 09:29)admin Wrote: You need to remove these lines from the library: nobody with a clue? RE: communication vbus solar resol - admin - 24.01.2023 Most likely that's a "luavbus.log" call. Find the relevant line in the library and add comments before this luavbus.log (--) to disable it: Code: -- luavbus.log(...)RE: communication vbus solar resol - KoBra - 28.02.2026 I finally got it working thanks to AI. For everybody struggeling. Please find my working script below. Code: local http = require('socket.http')
local bit = require('bit')
-- CONFIGURATION
local url = 'http://192.168.1.1/current/current_packets.vbus'
local alarm_obj = '0/4/28' -- DPT 1.005: 1 = ALARM, 0 = OK
function parseVBus()
local response, status = http.request(url)
-- 1. HTTP Connection Check (Network/KM2 Failure)
if status ~= 200 or not response then
grp.checkupdate(alarm_obj, true) -- ALARM ON
log("[SLL ALARM] KM2 unreachable. Network or Power issue.")
return
end
local function getVal(b1, b2)
if not b1 or not b2 then return 0 end
local v = (b2 * 256) + b1
if v > 32767 then v = v - 65536 end
return v * 0.1
end
-- 2. Find the primary SLL Data Header
local p = response:find('\16\00\113\34\16')
if p then
-- System is healthy
grp.checkupdate(alarm_obj, false) -- ALARM OFF (OK)
-- SENSORS
local s1 = getVal(response:byte(p+16), response:byte(p+17))
local s2 = getVal(response:byte(p+18), response:byte(p+19))
local s3 = getVal(response:byte(p+20), response:byte(p+21))
local s4 = 0
local p_extra = response:find('\16\00\00\01\76', p)
if p_extra then
s4 = getVal(response:byte(p_extra+18), response:byte(p_extra+19))
end
-- PWM & RELAYS (Verified Mapping)
local pwa = response:byte(p+32) or 0 -- PWM A
local r2 = response:byte(p+33) or 0 -- Relay 2 (Diverting Valve)
local mask = response:byte(p+40) or 0
local r1 = (bit.band(mask, 0x01) == 0x01) and 100 or 0 -- Relay 1 (Pump Power)
-- Safety Cleanup
if pwa > 100 then pwa = 0 end
if r1 > 100 then r1 = 100 end
if r2 > 100 then r2 = 100 end
-- KNX UPDATES
grp.checkupdate('0/4/26', s1)
grp.checkupdate('0/4/20', s2)
grp.checkupdate('0/4/23', s3)
grp.checkupdate('0/4/21', s4)
grp.checkupdate('0/4/24', pwa)
grp.checkupdate('0/4/27', r1)
grp.checkupdate('0/4/25', r2)
else
-- 3. Data Header Missing (VBus Cable or Controller Mode Failure)
grp.checkupdate(alarm_obj, true) -- ALARM ON
log("[SLL ALARM] KM2 online but VBus data stream invalid.")
end
end
parseVBus() |