Replies: 4 comments 4 replies
-
I'm not familiar with tailscale, so this is a bit of a poke in the dark and see what squeals...
Do you have control over both device When you run the console application are you providing the CIDR address, or just the tailscale provided address? The difference is being able to bind to the broadcast address of the tailscale network that is given to you. If both ends can bind both their unicast address (like The stumbling block will be if you don't have control over how the response to the Who-Is request will be sent. Modern stacks will respond with a unicast I-Am, but older ones will respond with a broadcast which might not make it through the tunnel. For next steps, try running the console application at both ends and try broadcast messages like $ python3 -m bacpypes3 --address 172.31.18.51/24 --instance 10101 And start sending unicast and broadcast Who-Is and I-Am messages. |
Beta Was this translation helpful? Give feedback.
-
Can you just setup an "edge" application for BACnet scrapes reads/writes or
whatever and then use some other protocol on tailscale to transfer the data?
Like a message bus service like MQTT, ZMQ, or Rabbit MQ (ranging from
easiest to hardest in setup from only dabbling...) for getting data from
edge to AWS... Or even rest API payload.
Some mega makeover I would absolutely jump to asyncio bacpypes3. There is
Py asyncio MQTT packages out there...
I do have a side project that is a "rest like" web app for BACnet. It would
be interesting running this on the edge device and then on your AWS
instance just hit it thru the tailscale VPN with typical REST API web app
requests.
https://github.com/bbartling/bacpypes3RcpServer
Let me know what you think.
…On Sat, Jul 20, 2024, 10:05 AM optecmuza ***@***.***> wrote:
Tailscale is similar to tosibox or other VPN services where it opens a
tunnel between machines running the tailscale service.
Let me explain what I'm hoping to achieve:
Imagine a chiller plant with bacnet devices on subnet 192.168.0.X/24. We
would have a computer running Ubuntu with two available ethernet
interfaces. One interface is on 192.168.0.X/24 for the bacnet network.
Another interface is on an unknown subnet that its there just for outbound
internet connection. We would install tailscale VPN on this machine to add
it to the VPN network that tailscale allows you to belong. My computer in
the office and our servers in EC2 AWS are also running tailscale so
basically its a big VPN network where all these machines are accessible.
Now this on-site machine has 3 ifaces, eth0 for bacnet, eth1 for
internet/wifi/whatever and tailscale0 for the vpn tunnel.
On EC2 AWS we have a machine that runs Skyspark which is a software that
has a full stack of BACnet. This machine is also running tailscale, which
allows me to reach the on-site machine through the tailscale tunnel. I want
to be able to send bacnet scans from the ec2 machine. Because they are in
different subnets, bacnet scans won't work, however unicast will work if I
do static mapping of bacnet devices. I'm not a super expert in bacnet but I
think this scenario, the ec2 instance is a foreign device right? Can
bacpypes help me in running a BBMD or Router service on the on-site machine
to allow for this?
—
Reply to this email directly, view it on GitHub
<#531 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AHC4BHOVTYFJ5XVK562LXUTZNJ4DXAVCNFSM6AAAAABLEZET7OVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTAMJQGI4DIOA>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***
com>
|
Beta Was this translation helpful? Give feedback.
-
I wrote:
Now for why... There are options for devices Scenario 1 - Broadcast on the VPN Network
A global broadcast I-Am from Chiller 1 will be received by Scenario 2 - No broadcast on the VPN network
A global broadcast I-Am from Chiller 1 will be received by Both scenarios have their own issues with respect to maintaining the associations on network 3, sending out I-Am-Router-To-Network messages at the appropriate times, and registering as a foreign device on connect and reconnect make things harder. All of these can be handled by BACpype3, and if the VPN IPv4 address are persistent/consistent then the configurations are just JSON config files, otherwise it'll need some help resolving interface names to IPv4 networks (address and mask). BACpypes3 uses |
Beta Was this translation helpful? Give feedback.
-
Arguably the best option would be for you to create BACpypes3 does not support B/SC yet. Some pieces are in there, but it's incomplete. |
Beta Was this translation helpful? Give feedback.
-
So I'm trying an idea I had with bacpypes and trying to make bacnet scan work across a VPN tunnel
I have
device A
, sitting in192.168.1.0/24
locally in an ubuntu machine at my office. This device is running tailscale VPN.I have
device B
, sitting in EC2 AWS, sitting in172.31.18.51/XX
also in the tailscale mesh VPN. (ubuntu as well)Both devices have their iface
tailscale0
and unicast works, I'm able to ping and theUDPConsole.py
example works for me when doing unicast.What I want to achieve is the following:
I want to send a BACnet
who-is
fromdevice B
that propagates acordingly throught the VPN tunnel anddevice A
responds with anI-Am
back toDevice B
.What do I have to run on
Device A
to make this work? Is theBBMD.py
example applicable or is theIP2IPRouter.py
example applicable?Let me know!
Beta Was this translation helpful? Give feedback.
All reactions