#638 Step by step from Bacnet names to haystack tagging

Maher N Tue 18 Sep 2018

Dear Fellow Haystackers,

I am new to Project Haystack, so excuse the possible triviality of my inquiry. What is being done by this community is, in my humble opinion, a great path for an automated and energy-efficient future. I really admire it.

I would like to know whether or not there is a step by step guideline regarding the procedure required to go from having the raw point names from a BACnet Protocol to a Haystack tagging for each of the points.

I figured that there would be two phases regarding this process:

1) figuring out the role of each point (e.g. temperature sensor, temperature setpoint, pressure sensor, etc...).

For this phase, here is what I think makes sense (but kindly do correct me or add any extra insight, if possible)

1- look at the name of the point, and try to recognize a pattern.

2- look at the unit of the point (if existing), and add this knowledge to 1-.

3- look at the histpoint distribution (e.g. mean, variance, number of unique values) to separate for example setpoint points from sensors.

4- [...] ?

2) figuring out the connectivity of the points to the equipments within the site in question.

For this phase, if we are observing the points of a building that already has a BMS, is there any relatively reliable methodology of Data Analytics that might help with figuring the connectivity?

Note: If you know of any Program that helps with one of the above-mentioned phases, or a company to which one could outsource these tasks, it would be very helpful to know.

Looking forward to hearing from you.



Maher N Wed 26 Sep 2018

Hello again, Ladies and Gents.

Any idea where I could get help regarding the above inquiries?

If no one has ideas about this, anyone has links or papers that might direct me closer to figuring things out on my own?

Any input would be highly appreciated :)

Thank you for your time.



Adam Wallen Wed 26 Sep 2018

Hi Maher,

I can speak to the flow that we use with SkySpark.

1) You connect to the external system

2) Bring in the external table (what we call a grid)

3) Use something to figure out tags to add (often the name of the point as provided by the external system, but sometimes you have other fields such as units)

4) Add tags

5) Create records in SkySpark

Here is some sample code in SkySpark's axon language:

(file: `io/MultiDataGen.csv`, tag: "csvPoint") => do

src: ioReadCsv(file).colNames.remove(0).toGrid

grid0: src.map row => do

  value: row->val.lower

    navName:   row->val,
    temp:      if (value.contains("temp")) marker(),
    air:       if (value.contains("air")) marker(),
    discharge: if (value.contains("discharge")) marker(),
    return:    if (value.contains("return")) marker(),
    zone:      if (value.contains("zone")) marker(),
    fan:       if (value.contains("fan")) marker(),
    coil:      if (value.contains("coil")) marker(),
    outside:   if (value.contains("outside")) marker(),
    leaving:   if (value.contains("leaving")) marker(),
    entering:  if (value.contains("entering")) marker(),
    fan:       if (value.contains("fan")) marker(),
    sensor:    if (not value.contains("status")) marker(),
    cmd:       if (value.contains("status")) marker(),
    kind:      if (value.contains("status")) "Bool" else "Number",
    unit:      if (value.contains("temp")) "°F",
    disMacro:  "\$equipRef \$navName",
    tz:        "New_York",
    siteRef:   read(site)->id,
    equipRef:  read(equip and navName == "Misc")->id,
  }.set(tag, row->val)

grid0.map pt => commit(diff(null, pt, {add}))



Maher N Mon 1 Oct 2018

Thank you very much Adam.

I will do a research on that and see what i can find.

Have a nice day.


Login or Signup to reply.