Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 01:51
    ChristianTremblay opened #314
  • Jan 22 22:00

    ChristianTremblay on develop

    Mostly adding some details in l… (compare)

  • Jan 21 02:14

    ChristianTremblay on develop

    Change the binary and multistat… Update float to int type Merge pull request #313 from ku… (compare)

  • Jan 21 02:14
    ChristianTremblay closed #313
  • Jan 20 05:21
    kushan-26 commented #313
  • Jan 20 04:51
    kushan-26 closed #312
  • Jan 20 04:51
    kushan-26 commented #312
  • Jan 20 04:35
    ChristianTremblay commented #313
  • Jan 20 03:59
    kushan-26 synchronize #313
  • Jan 20 03:57
    kushan-26 commented #313
  • Jan 20 03:44
    ChristianTremblay commented #312
  • Jan 18 17:37
    kushan-26 commented #312
  • Jan 18 17:33
    kushan-26 opened #313
  • Jan 18 05:22
    kushan-26 commented #312
  • Jan 18 04:41
    kushan-26 commented #312
  • Jan 18 03:03
    ChristianTremblay commented #312
  • Jan 17 22:35
    kushan-26 opened #312
  • Jan 15 04:08
    kushan-26 commented #310
  • Jan 14 21:58
    ChristianTremblay commented #310
  • Jan 14 17:36
    kushan-26 commented #310
Safrone
@Safrone
just surprised I'm able to see it then via wireshark. IDK the best way to initiate discovery given this
Joel Bender
@JoelBender
Next two octets after the length are probably X’82’, check out the hex piece.
You’ll need some IPv4-to-Ethernet BACnet router. I bet one of the devices is already doing that.
Safrone
@Safrone
image.png
yup
Safrone
@Safrone
@JoelBender Would this require specific hardware or is there a script that would enable this. I didn't see any responses to my ipv4 discovery requests so probably will need some talking to the client
Joel Bender
@JoelBender
It looks like you are talking to a device from Delta Controls and since it speaks BACnet/Ethernet, unless it is a very old device, it also speaks BACnet/IPv4. The simplest thing to do would be to configure it with BACnet/IPv4 support turned on, give the new port a BACnet network numbers that don't conflict with other BACnet network numbers in the intranet, and you're good to go.
Safrone
@Safrone
OK, thanks for the help
Safrone
@Safrone
what is the specific format of the date data? e.g.: {'calendarEntry': {'dateRange': {'endDate': [121, 7, 5, 1], 'startDate': [121, 7, 5, 1]}}}
ah, found it:
        _date = Date(
            year=_d.year - 1900, month=_d.month, day=_d.day, day_of_week=_d.isoweekday()
        ).value
        _time = Time(
            hour=_t.hour,
            minute=_t.minute,
            second=_t.second,
            hundredth=int(_t.microsecond / 10000),
        ).value
sujitregal
@sujitregal
I have gateway to which 10 radios are connected. Each radio have to 10 motors. Motor have 2 parameters speed and torque. Now i want to create one object for each radio with it's 10 motors and want to show present value of speed and torque. How can i do that?
Gateway is my bacnet device and for remaining i want to create objects
Christian Tremblay
@ChristianTremblay

What do you want to do ? Create 1 BACnet device that will present 100 motors with 2 points ?

It’s possible to create that using a simple name convention

Motor001_speed
Motor001_torque
[…]
Motor100_speed
Motor100_torque

In your code, the presentValue of each point is updated based on the value for from your radio gateway.

The points could be analogInputs (read only from BACnet)
You could also use another name convention for objects… maybe with the radio ID included…
sujitregal
@sujitregal
@ChristianTremblay Thanks for your reply.
Yes your are correct. I want to create one BACnet device in that I have 10 radios.
And radio have connected to some motors.
But my requirement is to create single object for them in which i will update present value.
sujitregal
@sujitregal
But i don't know how to create an array inside object for each radio's each motor
sujitregal
@sujitregal
image.jpeg
My BACnet device structure is something like this.
So i want to create object for each radio in which i can send present value of all 10 motors connected to it.
It will be great if i get sample code
Joel Bender
@JoelBender
I think you are looking for a Group Object, Clause 12.14, which "defines a standardized object whose properties represent a collection of other objects and one or more of their properties." You would still create the 200 Analog Value Objects, the present value of each one is for a specific radio, motor, and speed/torque. Then create a Group Object representing a radio, which will reference the 20 points for the corresponding motor and point (see Clause 12.14.5, List_Of_Group_Members). When a BACnet client reads the Present_Value from your gateway it will get back a list of 20 ReadAccessResult structures all at once.
There is rudimentary support for Group Objects in BACpypes, but only for the client side (reading the properties of the object) and not the server side (that gathers all of the referenced values in the list of group members).
Joel Bender
@JoelBender
I'm not sure how widely supported the Group Object will be for BACnet clients, of course if you are only going to be using your own client then it would be fine and still conformant. An easier and more widely supported option is to let the client decide which objects to read using Read Property Multiple, which has the same effect returning a list of read access results. Assuming BACpypes and then BAC0 better support server-side Group Objects in the future, your existing gateway code can simply add those additional objects without changing any of the other code you need to write to get the value into the present value of the Motor075_speed object.
sujitregal
@sujitregal
Hi, I am trying to change object instance number but it is not working for me
sujitregal
@sujitregal

import BAC0
from BAC0.core.devices.local.models import (
analog_input,
datetime_value,
character_string,
)

new_device = = BAC0.connect(ip='192.168.10.184/16', port=47808, deviceId=124)

_new_objects = analog_value(
instance=0,
name="DA-T",
description="Discharge Air Temp in degC",
presentValue=10,
properties={"units": "degreesCelsius"},
)
_new_objects = analog_value(
instance=1,
name="ZN-T",
description="ZoneTemperature in degC",
presentValue=20,
properties={"units": "degreesCelsius"},
)
_new_objects.add_objects_to_application(new_device)

Kushan Abeyawardhane
@kushan-26
@ChristianTremblay Have you tried plotting binary points in the Influxdb data visualizer? I could not view binary points as a time-series plot because the value is in string format. Only "last" value aggregate function would populate a graph but that does not consider previous data values for a given time interval.
sujitregal
@sujitregal
Hi
Can anyone help me with example code on how we can define custom properties .
Thank
Christian Tremblay
@ChristianTremblay
Custom properties of existing devices you need to connect to or custom devices for BAC0 itself running as a device ?
custom being : proprietary objects, right ?
Christian Tremblay
@ChristianTremblay
@kushan-26 : I have not worked a lot yet with boolean and multistate values... I don't have the dashboard in front of me right now, but I worked with (I think) the State Timeline and got a pretty neat result.
Ben Bartling
@bbartling
Odd question is it possible to run a BAC0.lite() app without the debug prints? Is there a switch to turn it off?
2021-12-28 13:13:09,846 - INFO    | Starting BAC0 version 21.02.25 (Lite)
2021-12-28 13:13:09,850 - INFO    | Use BAC0.log_level to adjust verbosity of the app.
2021-12-28 13:13:09,852 - INFO    | Ex. BAC0.log_level('silence') or BAC0.log_level('error')
2021-12-28 13:13:09,854 - INFO    | Starting TaskManager
2021-12-28 13:13:09,909 - INFO    | Using ip : 192.168.0.103
2021-12-28 13:13:09,912 - INFO    | Starting app...
2021-12-28 13:13:09,914 - INFO    | BAC0 started
2021-12-28 13:13:09,916 - INFO    | Registered as Simple BACnet/IP App
2021-12-28 13:13:09,947 - INFO    | Update Local COV Task started
BAC0.log_level('silence')?
That worked : )
Christian Tremblay
@ChristianTremblay
Nice !
Ben Bartling
@bbartling

Hey Christian I noticed your post on SO, I was playing around with trying to make a driver for Node Red for BACnet.
https://stackoverflow.com/questions/70511960/python-shell-node-keep-a-python-script-running/70520584?noredirect=1#:~:text=interesting%20work%20guys%20henry%2C%20%40sandeep.kgp

I have sort of given up on it for the time being its too time consuming trying to learn Node & JavaScript. Just don't have the time! Its very do-able if there were some Node.js guru's out there...., I personally think Node Red could do anything Tridium can do and its free. who needs to spend $5k on a JACE????!

The JavaScript BACnet stacks are not user friendly. Like its easier to make something yourself. They also are not maintained very well or I dont think updated in a few years
Bruno Monteiro
@BrunoSMonteiro_twitter
Hello, I'm struggling with Bacnet so sorry if my question is dumb =).
Is it possible to request 2 bacnet devices from the same server? I'm building an API that will get information from N devices but I'm getting a message saying that the there is already a connection from the IP from my server. When I call my API to 2 different bacnets I got an empty message from the second one I called, it looks like that's no possible to call it, is it correct? There is any other way?
Christian Tremblay
@ChristianTremblay
You need to create 1 BAC0 instance that will use the socket (port 47808) and use this same instance to talk to as many controllers you want.
By doing so, your computer becomes a BACnet device that will interact with the network. A device that could also contain objects… which explains why we don’t differentiate client/server in BACnet. We have devices. Every device can talk or answer