<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[LogicMachine Forum - Visu]]></title>
		<link>https://forum.logicmachine.net/</link>
		<description><![CDATA[LogicMachine Forum - https://forum.logicmachine.net]]></description>
		<pubDate>Wed, 14 Oct 2026 23:16:04 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[End user Visu scenes]]></title>
			<link>https://forum.logicmachine.net/showthread.php?tid=6570</link>
			<pubDate>Mon, 05 Oct 2026 18:23:14 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.logicmachine.net/member.php?action=profile&uid=13">gtsamis</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.logicmachine.net/showthread.php?tid=6570</guid>
			<description><![CDATA[Hi,<br />
<br />
I saw that you uploaded a video demonstrating end-user scenes:<br />
<a href="https://www.youtube.com/watch?v=8qCMONZ-q8c" target="_blank" rel="noopener" class="mycode_url">https://www.youtube.com/watch?v=8qCMONZ-q8c</a><br />
<br />
In my installations, the button does not appear anywhere. Is there a setting I need to enable, or does this feature require firmware that has not been released yet?<br />
<br />
Thanks!<br />
George]]></description>
			<content:encoded><![CDATA[Hi,<br />
<br />
I saw that you uploaded a video demonstrating end-user scenes:<br />
<a href="https://www.youtube.com/watch?v=8qCMONZ-q8c" target="_blank" rel="noopener" class="mycode_url">https://www.youtube.com/watch?v=8qCMONZ-q8c</a><br />
<br />
In my installations, the button does not appear anywhere. Is there a setting I need to enable, or does this feature require firmware that has not been released yet?<br />
<br />
Thanks!<br />
George]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Widget Centering | VISU]]></title>
			<link>https://forum.logicmachine.net/showthread.php?tid=6567</link>
			<pubDate>Tue, 29 Sep 2026 14:04:40 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.logicmachine.net/member.php?action=profile&uid=4312">_BG_</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.logicmachine.net/showthread.php?tid=6567</guid>
			<description><![CDATA[Hello,<br />
I have a question regarding New Visu.<br />
The visualisation will be used mainly on a mobile phone (Tile view only).<br />
Is it possible to <span style="font-weight: bold;" class="mycode_b">center the widgets</span> on the screen, or make them <span style="font-weight: bold;" class="mycode_b">automatically scale to the phone’s screen width</span>?<br />
<br />
Custom widget size:<span style="font-style: italic;" class="mycode_i">320x</span><span style="font-style: italic;" class="mycode_i">430,</span> <span style="font-style: italic;" class="mycode_i">3x</span><span style="font-style: italic;" class="mycode_i">4</span><br />
Switch widget size: 3x1<br />
<br />
Or I just need to add some CSS or JS to achieve this?<br />
<br />
I also have a question regarding “Tile view width” in Admin Visu. Does this parameter have any impact on the final appearance of the application? <br />
<br />
Thanks in advance!<br />
BG<br />
<br />
<br />

<div>
<img src="https://forum.logicmachine.net/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
&nbsp;&nbsp;<a href="attachment.php?aid=5124" target="_blank">Visu_issue.png</a> (Size: 53.17 KB / Downloads: 54)</div>
]]></description>
			<content:encoded><![CDATA[Hello,<br />
I have a question regarding New Visu.<br />
The visualisation will be used mainly on a mobile phone (Tile view only).<br />
Is it possible to <span style="font-weight: bold;" class="mycode_b">center the widgets</span> on the screen, or make them <span style="font-weight: bold;" class="mycode_b">automatically scale to the phone’s screen width</span>?<br />
<br />
Custom widget size:<span style="font-style: italic;" class="mycode_i">320x</span><span style="font-style: italic;" class="mycode_i">430,</span> <span style="font-style: italic;" class="mycode_i">3x</span><span style="font-style: italic;" class="mycode_i">4</span><br />
Switch widget size: 3x1<br />
<br />
Or I just need to add some CSS or JS to achieve this?<br />
<br />
I also have a question regarding “Tile view width” in Admin Visu. Does this parameter have any impact on the final appearance of the application? <br />
<br />
Thanks in advance!<br />
BG<br />
<br />
<br />

<div>
<img src="https://forum.logicmachine.net/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
&nbsp;&nbsp;<a href="attachment.php?aid=5124" target="_blank">Visu_issue.png</a> (Size: 53.17 KB / Downloads: 54)</div>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Decimal separator]]></title>
			<link>https://forum.logicmachine.net/showthread.php?tid=6562</link>
			<pubDate>Wed, 23 Sep 2026 07:12:21 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.logicmachine.net/member.php?action=profile&uid=5083">stianj</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.logicmachine.net/showthread.php?tid=6562</guid>
			<description><![CDATA[Hi!<br />
<br />
I have finally grown tired of . (period) being the decimal separator in Visu when , (comma) is the correct one in my part of the world. But searching the forum or the internet seems to suggest that I am the only person with that issue.<br />
<br />
Either I'm the only one who cares, or everyone else has found a solution. Is there a way..?]]></description>
			<content:encoded><![CDATA[Hi!<br />
<br />
I have finally grown tired of . (period) being the decimal separator in Visu when , (comma) is the correct one in my part of the world. But searching the forum or the internet seems to suggest that I am the only person with that issue.<br />
<br />
Either I'm the only one who cares, or everyone else has found a solution. Is there a way..?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[INSPIRATIONAL VISUALIZATION DESIGNS]]></title>
			<link>https://forum.logicmachine.net/showthread.php?tid=6559</link>
			<pubDate>Mon, 21 Sep 2026 18:52:36 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.logicmachine.net/member.php?action=profile&uid=1995">stemic01</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.logicmachine.net/showthread.php?tid=6559</guid>
			<description><![CDATA[Hi team.<br />
It would be great to see more inspiring graphic user interfaces made in the Logic Machine / KNX wiser to get inspired and see what is possible and how we can push ourselves into making great and user friendly designs. <br />
<br />
Please post your inspiring designs.]]></description>
			<content:encoded><![CDATA[Hi team.<br />
It would be great to see more inspiring graphic user interfaces made in the Logic Machine / KNX wiser to get inspired and see what is possible and how we can push ourselves into making great and user friendly designs. <br />
<br />
Please post your inspiring designs.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[access visu pages without login]]></title>
			<link>https://forum.logicmachine.net/showthread.php?tid=6558</link>
			<pubDate>Sun, 20 Sep 2026 09:41:57 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.logicmachine.net/member.php?action=profile&uid=1087">KoBra</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.logicmachine.net/showthread.php?tid=6558</guid>
			<description><![CDATA[Is it possible to access some visu pages without login and password to show them on a narrowcasting system?]]></description>
			<content:encoded><![CDATA[Is it possible to access some visu pages without login and password to show them on a narrowcasting system?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[long press --> ciclyc sending]]></title>
			<link>https://forum.logicmachine.net/showthread.php?tid=6549</link>
			<pubDate>Wed, 16 Sep 2026 13:52:35 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.logicmachine.net/member.php?action=profile&uid=755">toujour</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.logicmachine.net/showthread.php?tid=6549</guid>
			<description><![CDATA[Hi Guys,<br />
<br />
Can I use a long press to trigger a repeating send action as long as I hold down the button? (without logic, but using JavaScript) <br />
<br />
KR,<br />
Alberto]]></description>
			<content:encoded><![CDATA[Hi Guys,<br />
<br />
Can I use a long press to trigger a repeating send action as long as I hold down the button? (without logic, but using JavaScript) <br />
<br />
KR,<br />
Alberto]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[CSS - frame - VISU]]></title>
			<link>https://forum.logicmachine.net/showthread.php?tid=6547</link>
			<pubDate>Tue, 15 Sep 2026 13:44:24 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.logicmachine.net/member.php?action=profile&uid=755">toujour</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.logicmachine.net/showthread.php?tid=6547</guid>
			<description><![CDATA[Hi Guys,<br />
<br />
 I have a problem with remote VISU and the CSS.<br />
In local I see the correct CSS (I want red) but in remote is the deafult.<br />
<br />

<div>
<img src="https://forum.logicmachine.net/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
&nbsp;&nbsp;<a href="attachment.php?aid=5101" target="_blank">Screenshot 2026-09-15 154321.png</a> (Size: 214.16 KB / Downloads: 51)</div>
<br />

<div>
<img src="https://forum.logicmachine.net/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
&nbsp;&nbsp;<a href="attachment.php?aid=5102" target="_blank">Screenshot 2026-09-15 154332.png</a> (Size: 92.02 KB / Downloads: 51)</div>
<br />
<br />
Can you help me ?<br />
<br />
BR,<br />
Alberto]]></description>
			<content:encoded><![CDATA[Hi Guys,<br />
<br />
 I have a problem with remote VISU and the CSS.<br />
In local I see the correct CSS (I want red) but in remote is the deafult.<br />
<br />

<div>
<img src="https://forum.logicmachine.net/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
&nbsp;&nbsp;<a href="attachment.php?aid=5101" target="_blank">Screenshot 2026-09-15 154321.png</a> (Size: 214.16 KB / Downloads: 51)</div>
<br />

<div>
<img src="https://forum.logicmachine.net/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
&nbsp;&nbsp;<a href="attachment.php?aid=5102" target="_blank">Screenshot 2026-09-15 154332.png</a> (Size: 92.02 KB / Downloads: 51)</div>
<br />
<br />
Can you help me ?<br />
<br />
BR,<br />
Alberto]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Visu localbus.js reconnect behaviour, reuse object registry, reconnect without delay]]></title>
			<link>https://forum.logicmachine.net/showthread.php?tid=6543</link>
			<pubDate>Sat, 05 Sep 2026 16:47:55 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.logicmachine.net/member.php?action=profile&uid=11">savaskorkmaz</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.logicmachine.net/showthread.php?tid=6543</guid>
			<description><![CDATA[Setup: LM firmware 2025, Visu, apps/js/localbus.js (v=20251031), Android kiosk panels (WebView) plus desktop Chrome for comparison.<br />
<br />
PROBLEM<br />
<br />
On some corporate networks a middlebox (IPS / application control / proxy / NAC policy) resets established TCP sessions a few seconds after they open. Visu's live-data WebSocket is hit by this; the classic HTTP-polling visualization is not. With the current client logic the visible effect and the server load are much larger than necessary:<br />
<br />
- on every WebSocket close, localbus.js waits 1 s,<br />
- then re-downloads the FULL object registry via POST /apps/localbus.lp (about 285 KB in our project, 2832 objects),<br />
- and only then reopens the WebSocket.<br />
<br />
So each reset costs the user ~3 s of "reconnecting" spinner with frozen values, and costs the LM a full registry regeneration.<br />
<br />
Field symptom that started this: WebSocket killed 1-1.5 s after open, floor plan stays rendered, spinner flashes every ~3 s, values freeze. A laptop on the same LAN (not subject to the policy) worked fine.<br />
<br />
WHAT WE MEASURED<br />
<br />
Lab: a transparent TCP relay between client and LM that kills every session after N seconds.<br />
<br />
1) Current client, Android panel, kill after 5 s<br />
  WS lifetime 5.0 s, visible gap 2.9-3.0 s per cycle, ~37 % of the time disconnected,<br />
  server work per cycle: registry POST 285 KB + WS handshake.<br />
<br />
2) Current client, Android panel, kill after 2 s<br />
  The registry POST never completes, page stays blank with a permanent spinner.<br />
<br />
3) Patched client (see below), desktop Chrome, kill after 5 s<br />
  WS lifetime 5.06 s, visible gap 22-37 ms, &lt; 1 % disconnected, server work: WS handshake only (~4 KB).<br />
<br />
4) Patched client, desktop Chrome, kill after 1.5 s (the field case)<br />
  WS lifetime 1.55 s, gap avg 25 ms / max 29 ms, 1.5 % disconnected, live values keep flowing.<br />
<br />
5) Control, kill only after 15 s idle<br />
  No disconnects at all: the client "ping" every 10 s keeps the socket alive, so idle timeouts &gt;= 11 s are not the cause.<br />
<br />
Also verified: the server ACCEPTS a new WebSocket in the same session without a preceding registry POST (opened in 21 ms, live messages received).<br />
<br />
OBSERVED CLIENT LOGIC (localbus.js)<br />
<br />
onclose -&gt; setstate(false) -&gt; onerror() -&gt; setTimeout(init, 1000) -&gt; init(): POST /apps/localbus.lp (full registry) -&gt; register() -&gt; start(): new WebSocket.<br />
No backoff. The registry is re-fetched on every reconnect although objectstore already holds it.<br />
<br />
REQUESTED CHANGE (small)<br />
<br />
1. On WebSocket close, if objectstore is already populated, reopen the WebSocket directly (start()), without the 1 s delay and without re-downloading the registry.<br />
2. Keep the full init() path only when the registry is empty or the previous session was rejected (lived &lt; ~300 ms), so an expired session still recovers.<br />
3. Add a simple cap/backoff (e.g. max 60 fast reconnects per minute, then 1 s delay) to protect the server under persistent resets.<br />
4. Optional: expose reconnect counters (count, last lifetime, last gap) on the localbus object for diagnostics.<br />
<br />
WHY IT MATTERS FOR THE SERVER TOO<br />
<br />
Under a 1.5 s reset policy with 20 panels the current logic makes the LM regenerate about 1.4 MB/s of registry JSON continuously; the patched logic reduces that to WebSocket handshakes (about 60 KB/s). On healthy networks the change has zero effect.<br />
<br />
REFERENCE IMPLEMENTATION (tested as Visu Custom JS, wraps start/onerror only)<br />
<br />
(function () {<br />
  var CFG = { FAST_LIMIT_PER_MIN: 60, SLOW_WAIT_MS: 1000, REJECT_LIFE_MS: 300, WAIT_FOR_LOCALBUS_MS: 30000 };<br />
  if (window.__sonaLb) return;<br />
  window.__sonaLb = { version: 'V1', active: false, fast: 0, slow: 0, full: 0, lastLifeMs: null, lastGapMs: null, sessions: 0 };<br />
  function install() {<br />
    var lb = window.localbus;<br />
    if (!lb || typeof lb.start !== 'function' || typeof lb.onerror !== 'function' || typeof lb.init !== 'function') {<br />
      console.warn('[sona-lb] unexpected localbus structure, patch not applied'); return;<br />
    }<br />
    var S = window.__sonaLb, hist = [], startT = 0, closeT = 0;<br />
    var origStart = lb.start, origOnError = lb.onerror;<br />
    lb.start = function () {<br />
      startT = Date.now(); S.sessions++;<br />
      if (closeT) { S.lastGapMs = startT - closeT; closeT = 0; }<br />
      return origStart.apply(this, arguments);<br />
    };<br />
    lb.onerror = function () {<br />
      var now = Date.now();<br />
      clearTimeout(this.inittimer); this.inittimer = null;<br />
      closeT = now;<br />
      S.lastLifeMs = startT ? now - startT : null;<br />
      var haveRegistry = this.objectstore &amp;&amp; Object.keys(this.objectstore).length &gt; 0;<br />
      var rejected = S.lastLifeMs !== null &amp;&amp; S.lastLifeMs &lt; CFG.REJECT_LIFE_MS;<br />
      if (!haveRegistry || rejected) { S.full++; return origOnError.call(this); }  // default path: 1 s + POST + WS<br />
      hist = hist.filter(function (t) { return now - t &lt; 60000; });<br />
      var self = this;<br />
      if (hist.length &gt;= CFG.FAST_LIMIT_PER_MIN) {                                  // cap: wait, but no POST<br />
        S.slow++;<br />
        this.inittimer = setTimeout(function () { self.inittimer = null; self.start(); }, CFG.SLOW_WAIT_MS);<br />
        return;<br />
      }<br />
      hist.push(now); S.fast++;<br />
      this.start();                                                                  // fast path: new WebSocket now<br />
    };<br />
    S.active = true;<br />
    console.info('[sona-lb] fast reconnect active (' + S.version + ')');<br />
  }<br />
  if (window.localbus) { install(); return; }<br />
  var t0 = Date.now();<br />
  var timer = setInterval(function () {<br />
    if (window.localbus) { clearInterval(timer); install(); }<br />
    else if (Date.now() - t0 &gt; CFG.WAIT_FOR_LOCALBUS_MS) { clearInterval(timer); console.warn('[sona-lb] localbus not found'); }<br />
  }, 200);<br />
})();<br />
<br />
We can share the raw measurement logs and the relay tool used to reproduce this.]]></description>
			<content:encoded><![CDATA[Setup: LM firmware 2025, Visu, apps/js/localbus.js (v=20251031), Android kiosk panels (WebView) plus desktop Chrome for comparison.<br />
<br />
PROBLEM<br />
<br />
On some corporate networks a middlebox (IPS / application control / proxy / NAC policy) resets established TCP sessions a few seconds after they open. Visu's live-data WebSocket is hit by this; the classic HTTP-polling visualization is not. With the current client logic the visible effect and the server load are much larger than necessary:<br />
<br />
- on every WebSocket close, localbus.js waits 1 s,<br />
- then re-downloads the FULL object registry via POST /apps/localbus.lp (about 285 KB in our project, 2832 objects),<br />
- and only then reopens the WebSocket.<br />
<br />
So each reset costs the user ~3 s of "reconnecting" spinner with frozen values, and costs the LM a full registry regeneration.<br />
<br />
Field symptom that started this: WebSocket killed 1-1.5 s after open, floor plan stays rendered, spinner flashes every ~3 s, values freeze. A laptop on the same LAN (not subject to the policy) worked fine.<br />
<br />
WHAT WE MEASURED<br />
<br />
Lab: a transparent TCP relay between client and LM that kills every session after N seconds.<br />
<br />
1) Current client, Android panel, kill after 5 s<br />
  WS lifetime 5.0 s, visible gap 2.9-3.0 s per cycle, ~37 % of the time disconnected,<br />
  server work per cycle: registry POST 285 KB + WS handshake.<br />
<br />
2) Current client, Android panel, kill after 2 s<br />
  The registry POST never completes, page stays blank with a permanent spinner.<br />
<br />
3) Patched client (see below), desktop Chrome, kill after 5 s<br />
  WS lifetime 5.06 s, visible gap 22-37 ms, &lt; 1 % disconnected, server work: WS handshake only (~4 KB).<br />
<br />
4) Patched client, desktop Chrome, kill after 1.5 s (the field case)<br />
  WS lifetime 1.55 s, gap avg 25 ms / max 29 ms, 1.5 % disconnected, live values keep flowing.<br />
<br />
5) Control, kill only after 15 s idle<br />
  No disconnects at all: the client "ping" every 10 s keeps the socket alive, so idle timeouts &gt;= 11 s are not the cause.<br />
<br />
Also verified: the server ACCEPTS a new WebSocket in the same session without a preceding registry POST (opened in 21 ms, live messages received).<br />
<br />
OBSERVED CLIENT LOGIC (localbus.js)<br />
<br />
onclose -&gt; setstate(false) -&gt; onerror() -&gt; setTimeout(init, 1000) -&gt; init(): POST /apps/localbus.lp (full registry) -&gt; register() -&gt; start(): new WebSocket.<br />
No backoff. The registry is re-fetched on every reconnect although objectstore already holds it.<br />
<br />
REQUESTED CHANGE (small)<br />
<br />
1. On WebSocket close, if objectstore is already populated, reopen the WebSocket directly (start()), without the 1 s delay and without re-downloading the registry.<br />
2. Keep the full init() path only when the registry is empty or the previous session was rejected (lived &lt; ~300 ms), so an expired session still recovers.<br />
3. Add a simple cap/backoff (e.g. max 60 fast reconnects per minute, then 1 s delay) to protect the server under persistent resets.<br />
4. Optional: expose reconnect counters (count, last lifetime, last gap) on the localbus object for diagnostics.<br />
<br />
WHY IT MATTERS FOR THE SERVER TOO<br />
<br />
Under a 1.5 s reset policy with 20 panels the current logic makes the LM regenerate about 1.4 MB/s of registry JSON continuously; the patched logic reduces that to WebSocket handshakes (about 60 KB/s). On healthy networks the change has zero effect.<br />
<br />
REFERENCE IMPLEMENTATION (tested as Visu Custom JS, wraps start/onerror only)<br />
<br />
(function () {<br />
  var CFG = { FAST_LIMIT_PER_MIN: 60, SLOW_WAIT_MS: 1000, REJECT_LIFE_MS: 300, WAIT_FOR_LOCALBUS_MS: 30000 };<br />
  if (window.__sonaLb) return;<br />
  window.__sonaLb = { version: 'V1', active: false, fast: 0, slow: 0, full: 0, lastLifeMs: null, lastGapMs: null, sessions: 0 };<br />
  function install() {<br />
    var lb = window.localbus;<br />
    if (!lb || typeof lb.start !== 'function' || typeof lb.onerror !== 'function' || typeof lb.init !== 'function') {<br />
      console.warn('[sona-lb] unexpected localbus structure, patch not applied'); return;<br />
    }<br />
    var S = window.__sonaLb, hist = [], startT = 0, closeT = 0;<br />
    var origStart = lb.start, origOnError = lb.onerror;<br />
    lb.start = function () {<br />
      startT = Date.now(); S.sessions++;<br />
      if (closeT) { S.lastGapMs = startT - closeT; closeT = 0; }<br />
      return origStart.apply(this, arguments);<br />
    };<br />
    lb.onerror = function () {<br />
      var now = Date.now();<br />
      clearTimeout(this.inittimer); this.inittimer = null;<br />
      closeT = now;<br />
      S.lastLifeMs = startT ? now - startT : null;<br />
      var haveRegistry = this.objectstore &amp;&amp; Object.keys(this.objectstore).length &gt; 0;<br />
      var rejected = S.lastLifeMs !== null &amp;&amp; S.lastLifeMs &lt; CFG.REJECT_LIFE_MS;<br />
      if (!haveRegistry || rejected) { S.full++; return origOnError.call(this); }  // default path: 1 s + POST + WS<br />
      hist = hist.filter(function (t) { return now - t &lt; 60000; });<br />
      var self = this;<br />
      if (hist.length &gt;= CFG.FAST_LIMIT_PER_MIN) {                                  // cap: wait, but no POST<br />
        S.slow++;<br />
        this.inittimer = setTimeout(function () { self.inittimer = null; self.start(); }, CFG.SLOW_WAIT_MS);<br />
        return;<br />
      }<br />
      hist.push(now); S.fast++;<br />
      this.start();                                                                  // fast path: new WebSocket now<br />
    };<br />
    S.active = true;<br />
    console.info('[sona-lb] fast reconnect active (' + S.version + ')');<br />
  }<br />
  if (window.localbus) { install(); return; }<br />
  var t0 = Date.now();<br />
  var timer = setInterval(function () {<br />
    if (window.localbus) { clearInterval(timer); install(); }<br />
    else if (Date.now() - t0 &gt; CFG.WAIT_FOR_LOCALBUS_MS) { clearInterval(timer); console.warn('[sona-lb] localbus not found'); }<br />
  }, 200);<br />
})();<br />
<br />
We can share the raw measurement logs and the relay tool used to reproduce this.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Disable context menu in chrome]]></title>
			<link>https://forum.logicmachine.net/showthread.php?tid=6538</link>
			<pubDate>Thu, 27 Aug 2026 10:25:35 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.logicmachine.net/member.php?action=profile&uid=3682">Ceros2112</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.logicmachine.net/showthread.php?tid=6538</guid>
			<description><![CDATA[Hello,<br />
<br />
is it possible to disable the context menu that opens with long press in a chrome browser? I'm using PC/Tablet visualization and my customer complains about that  <img src="https://forum.logicmachine.net/images/smilies/rolleyes.png" alt="Rolleyes" title="Rolleyes" class="smilie smilie_6" /><br />
<br />
thank you]]></description>
			<content:encoded><![CDATA[Hello,<br />
<br />
is it possible to disable the context menu that opens with long press in a chrome browser? I'm using PC/Tablet visualization and my customer complains about that  <img src="https://forum.logicmachine.net/images/smilies/rolleyes.png" alt="Rolleyes" title="Rolleyes" class="smilie smilie_6" /><br />
<br />
thank you]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Index image on VISU]]></title>
			<link>https://forum.logicmachine.net/showthread.php?tid=6519</link>
			<pubDate>Thu, 23 Jul 2026 13:12:12 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.logicmachine.net/member.php?action=profile&uid=2310">Frank68</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.logicmachine.net/showthread.php?tid=6519</guid>
			<description><![CDATA[Good morning,<br />
is it possible in the new view to have an image that changes based on an analog value, like the additional images in the old system?<br />
Thank you very much.]]></description>
			<content:encoded><![CDATA[Good morning,<br />
is it possible in the new view to have an image that changes based on an analog value, like the additional images in the old system?<br />
Thank you very much.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Change the Trend URL]]></title>
			<link>https://forum.logicmachine.net/showthread.php?tid=6512</link>
			<pubDate>Fri, 17 Jul 2026 11:29:09 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.logicmachine.net/member.php?action=profile&uid=1056">sjfp</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.logicmachine.net/showthread.php?tid=6512</guid>
			<description><![CDATA[Hi we have a energy page which uses widgets to show relevant energy data like Volts, Amps, PF, Etc.<br />
We have various buttons Btn1, Btn2, Btn3 etc, which we have named which widget page to show, like M1-Energy, M2-Energy.<br />
At present when the button is pressed, the correct widget is shown over the top of the Energy Trend Frame, and when the button is pressed again it then shows a Trend Frame for all Meters.<br />
Question is, would it be possible rather than showing the default Trends page for all meters, we could only show the trend page for relevent meters.<br />
Example if we press Btn2, Widget M2-Energy is shown, when Btn2 is pressed again then Trend Page M2-Energy is shown.<br />
<br />
Any help or advise would be great.]]></description>
			<content:encoded><![CDATA[Hi we have a energy page which uses widgets to show relevant energy data like Volts, Amps, PF, Etc.<br />
We have various buttons Btn1, Btn2, Btn3 etc, which we have named which widget page to show, like M1-Energy, M2-Energy.<br />
At present when the button is pressed, the correct widget is shown over the top of the Energy Trend Frame, and when the button is pressed again it then shows a Trend Frame for all Meters.<br />
Question is, would it be possible rather than showing the default Trends page for all meters, we could only show the trend page for relevent meters.<br />
Example if we press Btn2, Widget M2-Energy is shown, when Btn2 is pressed again then Trend Page M2-Energy is shown.<br />
<br />
Any help or advise would be great.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Frame Trend logs from Neighbour]]></title>
			<link>https://forum.logicmachine.net/showthread.php?tid=6505</link>
			<pubDate>Thu, 09 Jul 2026 15:59:42 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.logicmachine.net/member.php?action=profile&uid=2594">function</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.logicmachine.net/showthread.php?tid=6505</guid>
			<description><![CDATA[Hi!  <img src="https://forum.logicmachine.net/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
Is it possible to use the Frame widget to view a Trend logs URL from a neighbour with the new Visu?<br />
I've tried but runs into a problem where i have to login to the frame.]]></description>
			<content:encoded><![CDATA[Hi!  <img src="https://forum.logicmachine.net/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
Is it possible to use the Frame widget to view a Trend logs URL from a neighbour with the new Visu?<br />
I've tried but runs into a problem where i have to login to the frame.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Import page]]></title>
			<link>https://forum.logicmachine.net/showthread.php?tid=6501</link>
			<pubDate>Mon, 06 Jul 2026 04:33:30 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.logicmachine.net/member.php?action=profile&uid=3803">dezza@sdme.it</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.logicmachine.net/showthread.php?tid=6501</guid>
			<description><![CDATA[I need to import one or more pages from one LM to another. Is this possible?]]></description>
			<content:encoded><![CDATA[I need to import one or more pages from one LM to another. Is this possible?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Enabling the Old Visualization Menu via script]]></title>
			<link>https://forum.logicmachine.net/showthread.php?tid=6498</link>
			<pubDate>Thu, 02 Jul 2026 09:34:26 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.logicmachine.net/member.php?action=profile&uid=11">savaskorkmaz</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.logicmachine.net/showthread.php?tid=6498</guid>
			<description><![CDATA[Hello,<br />
One of our partners restored a backup from a project created with the old visualization system on another LogicMachine to a new LogicMachine running the 2025 firmware.<br />
Normally, the old visualization menu is activated automatically when an old backup is restored, but this did not happen on this device.<br />
Could you please provide us with a script to enable the old visualization menu?<br />
Thx]]></description>
			<content:encoded><![CDATA[Hello,<br />
One of our partners restored a backup from a project created with the old visualization system on another LogicMachine to a new LogicMachine running the 2025 firmware.<br />
Normally, the old visualization menu is activated automatically when an old backup is restored, but this did not happen on this device.<br />
Could you please provide us with a script to enable the old visualization menu?<br />
Thx]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Tile view layout broken (large empty gaps) for thermostat widgets on mobile Safari —]]></title>
			<link>https://forum.logicmachine.net/showthread.php?tid=6491</link>
			<pubDate>Tue, 30 Jun 2026 12:11:41 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.logicmachine.net/member.php?action=profile&uid=6067">andreaemanuelli</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.logicmachine.net/showthread.php?tid=6491</guid>
			<description><![CDATA[hi everyone<br />
<br />
Firmware: LM5p2-KCDZ, 20251204<br />
Visu version: new Visu (2025.11)<br />
Browser: Safari on iOS (also reproduced via LM Home app, same engine)<br />
<br />
ISSUE<br />
A Category containing 7 native "thermostat" type widgets (tile_width=2, <br />
tile_height=2 each) renders with large empty vertical gaps between rows <br />
on iPhone, both in portrait and on first load. Widgets are present in <br />
the DOM (confirmed via remote Web Inspector — all 7 elements have <br />
display:block, visibility:visible, correct getBoundingClientRect()), <br />
but visually appear scattered with huge blank spaces between them.<br />
<br />
The same Category with simple "switch" type widgets (lights, in the <br />
same Visu, same device) renders perfectly with no gaps.<br />
<br />
WORKAROUND FOUND<br />
Rotating the device screen once (portrait -&gt; landscape -&gt; portrait, <br />
or just to landscape) immediately fixes the layout — all widgets <br />
snap into a correct, gap-free grid.<br />
<br />
DIAGNOSIS<br />
This strongly suggests a Muuri grid layout calculation race condition: <br />
the thermostat widget's internal SVG (circular arc, +/- buttons) takes <br />
longer to reach final rendered dimensions than a simple switch icon. <br />
If Muuri's initial layout() call measures widget dimensions before the <br />
SVG has settled, it computes wrong absolute positions (translateX/<br />
translateY) for those items, leaving gaps. A manual resize event <br />
(screen rotation) forces Muuri to recalculate using final dimensions.<br />
<br />
ATTEMPTED WORKAROUND (did not work)<br />
Tried dispatching window.dispatchEvent(new Event('resize')) via <br />
custom JS at multiple delays after page load (600ms/1200ms/2000ms/<br />
3500ms) to replicate the rotation effect. This did NOT fix the issue — <br />
suggesting Muuri's internal layout recalculation is not triggered by <br />
the generic window resize event, but by something else (ResizeObserver <br />
on the container, or an internal viewport-change handler specific to <br />
orientation change).<br />
<br />
QUESTIONS<br />
1. Is this a known issue with the thermostat widget (or any widget <br />
  with internal SVG) in tile view on narrow viewports?<br />
2. Is there a way to programmatically trigger Muuri's layout() / <br />
  refreshItems() from custom JS, since the Muuri instance isn't <br />
  exposed on window?<br />
3. Is there a recommended fix (CSS containment, explicit width/height <br />
  constraints, etc.) to prevent this race condition?<br />
<br />
Happy to share screenshots, exported widget JSON and console output <br />
if useful for reproduction.<br />
<br />
Ctrl+F5 already tried, no effect (this isn't a cache issue — confirmed <br />
via fresh hard reload).]]></description>
			<content:encoded><![CDATA[hi everyone<br />
<br />
Firmware: LM5p2-KCDZ, 20251204<br />
Visu version: new Visu (2025.11)<br />
Browser: Safari on iOS (also reproduced via LM Home app, same engine)<br />
<br />
ISSUE<br />
A Category containing 7 native "thermostat" type widgets (tile_width=2, <br />
tile_height=2 each) renders with large empty vertical gaps between rows <br />
on iPhone, both in portrait and on first load. Widgets are present in <br />
the DOM (confirmed via remote Web Inspector — all 7 elements have <br />
display:block, visibility:visible, correct getBoundingClientRect()), <br />
but visually appear scattered with huge blank spaces between them.<br />
<br />
The same Category with simple "switch" type widgets (lights, in the <br />
same Visu, same device) renders perfectly with no gaps.<br />
<br />
WORKAROUND FOUND<br />
Rotating the device screen once (portrait -&gt; landscape -&gt; portrait, <br />
or just to landscape) immediately fixes the layout — all widgets <br />
snap into a correct, gap-free grid.<br />
<br />
DIAGNOSIS<br />
This strongly suggests a Muuri grid layout calculation race condition: <br />
the thermostat widget's internal SVG (circular arc, +/- buttons) takes <br />
longer to reach final rendered dimensions than a simple switch icon. <br />
If Muuri's initial layout() call measures widget dimensions before the <br />
SVG has settled, it computes wrong absolute positions (translateX/<br />
translateY) for those items, leaving gaps. A manual resize event <br />
(screen rotation) forces Muuri to recalculate using final dimensions.<br />
<br />
ATTEMPTED WORKAROUND (did not work)<br />
Tried dispatching window.dispatchEvent(new Event('resize')) via <br />
custom JS at multiple delays after page load (600ms/1200ms/2000ms/<br />
3500ms) to replicate the rotation effect. This did NOT fix the issue — <br />
suggesting Muuri's internal layout recalculation is not triggered by <br />
the generic window resize event, but by something else (ResizeObserver <br />
on the container, or an internal viewport-change handler specific to <br />
orientation change).<br />
<br />
QUESTIONS<br />
1. Is this a known issue with the thermostat widget (or any widget <br />
  with internal SVG) in tile view on narrow viewports?<br />
2. Is there a way to programmatically trigger Muuri's layout() / <br />
  refreshItems() from custom JS, since the Muuri instance isn't <br />
  exposed on window?<br />
3. Is there a recommended fix (CSS containment, explicit width/height <br />
  constraints, etc.) to prevent this race condition?<br />
<br />
Happy to share screenshots, exported widget JSON and console output <br />
if useful for reproduction.<br />
<br />
Ctrl+F5 already tried, no effect (this isn't a cache issue — confirmed <br />
via fresh hard reload).]]></content:encoded>
		</item>
	</channel>
</rss>