This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

communication vbus solar resol
#41
(09.01.2023, 10:45)KoBra Wrote:
(09.01.2023, 09:29)admin Wrote: You need to remove these lines from the library:
Code:
  for _, searcher in ipairs(package.searchers or package.loaders) do     name = "cjson"     local loader = searcher(name)     if type(loader) == 'function' then       package.preload[name] = loader       cjson  = require (name)       break     end     name = "json"     local loader = searcher(name)     if type(loader) == 'function' then       package.preload[name] = loader       cjson  = require (name)       break     end   end   for _, searcher in ipairs(package.searchers or package.loaders) do     name = "vbusprofiles"     local loader = searcher(name)     if type(loader) == 'function' then       package.preload[name] = loader       vbusprofiles  = require (name)       break     end     name = "user.vbusprofiles"     local loader = searcher(name)     if type(loader) == 'function' then       package.preload[name] = loader       vbusprofiles  = require (name)       break     end   end   for _, searcher in ipairs(package.searchers or package.loaders) do     name = "luavbuspacket"     local loader = searcher(name)     if type(loader) == 'function' then       package.preload[name] = loader       luavbuspacket  = require (name)       break     end     name = "user.luavbuspacket"     local loader = searcher(name)     if type(loader) == 'function' then       package.preload[name] = loader       luavbuspacket  = require (name)       break     end   end

now we go to 
Code:
User library vbus:303: bad argument #3 to 'format' (no value) stack traceback: [C]: in function 'format' User library vbus:303: in function 'packetExtract' User library vbus:205: in function 'waitData'

nobody with a clue?
Reply
#42
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(...)
But I think that it will fail somewhere else as the original error is caused by a missing variable/value.
Reply
#43
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()
Reply


Forum Jump: