Logic Machine Forum
Exchange data between two LM5 - Printable Version

+- Logic Machine 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: Exchange data between two LM5 (/showthread.php?tid=4176)



Exchange data between two LM5 - Fahd - 05.08.2022

Hi guys, 

I have a KNX  weather station in Building A and I want to send that data to Building B 
Is it possible two send data between two lm5 that are connected on the same network in "Zerotier"?
If yes, How could I do that?


RE: Exchange data between two LM5 - admin - 05.08.2022

If you only need to send data one way then you can connect both LMs to the same ZeroTier network and use remote services (HTTP requests) to send data periodically. Use IP addresses assigned by ZeroTier for communication not LM internal IP. Remote services docs: https://openrb.com/docs/remote-new.htm


RE: Exchange data between two LM5 - Fahd - 05.08.2022

(05.08.2022, 09:43)admin Wrote: If you only need to send data one way then you can connect both LMs to the same ZeroTier network and use remote services (HTTP requests) to send data periodically. Use IP addresses assigned by ZeroTier for communication not LM internal IP. Remote services docs: https://openrb.com/docs/remote-new.htm

Hi again, 
yes it's just one way, in fact, I will have to send 20 objects from one LM to the other 

Could you please give me one example?

lm1 IP address is 192.168.191.79
lm2 IP address is 192.168.191.181
I want to send the object 10/0/2 2byte float from LM1 to LM2, Should I create an object in lm2 and write a script in that object  to read that value from lm1?


RE: Exchange data between two LM5 - Daniel - 05.08.2022

First you have to enable remote services and export objects.
You can ether read value or write to other LM.

Code:
require('socket.http')
socket.http.TIMEOUT = 5

-- Read from object
local reply = socket.http.request('http://remote:remote@192.168.0.10/scada-remote?m=json&r=grp&fn=getvalue&alias=0/0/8')
grp.write('0/0/7', reply)

-- Write to object
value = grp.getvalue('0/0/7')
local reply = socket.http.request('http://remote:remote@192.168.0.10/scada-remote?m=json&r=grp&fn=write&alias=0/0/8&value=' .. value .. '')



RE: Exchange data between two LM5 - Fahd - 05.08.2022

(05.08.2022, 11:10)Daniel Wrote: First you have to enable remote services and export objects.
You can ether read value or write to other LM.

Code:
require('socket.http')
socket.http.TIMEOUT = 5

-- Read from object
local reply = socket.http.request('http://remote:remote@192.168.0.10/scada-remote?m=json&r=grp&fn=getvalue&alias=0/0/8')
grp.write('0/0/7', reply)

-- Write to object
value = grp.getvalue('0/0/7')
local reply = socket.http.request('http://remote:remote@192.168.0.10/scada-remote?m=json&r=grp&fn=write&alias=0/0/8&value=' .. value .. '')
Thanks a LOT, guys. it worked via resident a script in the second lm,
Is it possible to write the value only when it changes not via resident every 60s?


RE: Exchange data between two LM5 - Daniel - 05.08.2022

Use grp.checkwrite('0/0/7', reply)