I am working on BIM and sensor integration via Forge using
https://github.com/autodesk-platform-services/aps-iot-extensions-demo
I have already completed the following parts.
Clone this repository
Install dependencies: yarn install
Setup environment variables:
APS_CLIENT_ID - client ID of your APS application
APS_CLIENT_SECRET - client secret of your APS application
In public/config.js, modify APS_MODEL_URN and APS_MODEL_VIEW with your own model URN and view GUID
Now I am stuck at the next step - In ./services/iot.mocked.js
Modify the mocked up sensors, for example, changing their location (XYZ position in the model's coordinate system) or objectId (the dbID of the room the sensor should be associated with)"
I already created my sensors in Revit files with Sensor ID and sensor parameters with respect to sensor ID in my sensor Influx database. But when I upload the model into forge I can see many other different properties of sensors.
How to do BIM IoT integration via Forge.
The aps-iot-extensions-demo app makes no assumptions about what software the model is coming from, and so it simply hardcodes a list of fake sensors (incl. their location within the model) on the server side: https://github.com/autodesk-platform-services/aps-iot-extensions-demo/blob/master/services/iot.mocked.js#L1-L46.
As a first step, try identifying the coordinates of some of the sensors in your Revit model, and update the XYZ values in the iot.mocked.js file accordingly.
As a next step, try experimenting with the DataView class that controls where the sensors, channels, and actual sensor data is loaded from. For example, the getSensors method currently loads the (fake) sensors from the server but in your case you could retrieve the list of sensors by traversing the BIM model using Viewer APIs.
Related
Have investigated sample code to subscribe DataLogger to move sensors.
https://bitbucket.org/suunto/movesense-mobile-lib/src/master/android/samples/DataLoggerSample/
But failed to subscribe to my own whiteboard resource.
As example used jump counter from jump count sample.
https://bitbucket.org/suunto/movesense-device-lib/src/master/samples/jumpmeter_app/
WB_RES::LOCAL::SAMPLE_JUMPCOUNTER_JUMPCOUNT::LID
And have tried to connect to it by
DataLoggerConfig.DataEntry[] entries = {new DataLoggerConfig.DataEntry('/Sample/JumpCounter/JumpCount')};
But get only last value, not all the values.
What need to do else?
Or have some sample of DataLogger service to be configured to subscribe to your own whiteboard resource?
There is a bug in the SBEM to JSON conversion (or the .../Descriptors) that causes this if the resource notification type is a simple primitive type (like integer). Change the API to return a complex type and it will work.
Full Disclosure: I work for the movesense team
Hi I'm a student and I'm working for the first time on the broker. I understood how the creation of entities works and their updating through "update" queries. My question is: you can create an entity that contains variables (eg geolocation) defined with value "null" or "zero" and then initialize them with values that interest me. So as to have dynamic and non-static variables (ie that require user update)?
Or do we need interaction with the CEP to do this?
From what I have read in the fiware-orion guide when I create an entity (ex car having attributes and velocity coordinates: geopoint). The values of these 2 attributes must be set in a static way (ex: speed 100 and position coordinates 40.257, 2.187). If I understand the values of these attributes I can only update them by making an update query. So my question is:
Is it possible to update the value of the attributes that contain the position or the speed of the car in a dynamic way, ie without having to write the values from the keyboard? Or does this require the use of the CEP of orion?
If I could not explain myself more generally I would like to know if it is possible to follow the progress of a moving car without me having to add the values from the keyboard.
Thanks.
Orion Context Brokker exposes a REST-based API that (among other things) allows you to create, update and query entities. From the point of view of Orion, it doesn't matter who is the one invoking the API: it can be done manually (for instance, using Postman or curl) or can be an automated system developed by you or a third party (for instance, a software running in a sensor in the car that measures the speed and periodically sends an update using a wireless communication network).
From a client-server point of view (in the case you are familiar with these concepts), Orion takes the server of the API role and the one updating the speed (either manually or automatically) takes the role of client of the API.
I'm working on interfacing a BTLE peripheral with intel edison. I'm using puTTY for accessing linux environment. So far I have achieved the connection but when I list the attributes, it gives me services and characters with handle values. but I don't have any table to match the handle with respective services. I do have the complete BT protocol of the device so I know the UUID for each service but I don't know which handle is representing which service due to which I cannot configure the registers and read required data. How can I get an attribute table?
What I'm getting on the console is below:
and what I want is something like this sensorTag attribute table:
http://processors.wiki.ti.com/images/a/a8/BLE_SensorTag_GATT_Server.pdf
I started a OPC UA project using the Milo project to create a OPC UA Client. I am still very new to OPC UA. Right now I am stuck looking for the best practice to read values from several Nodes after a data change of one specific node.
The information model looks like this:
RfidSensorType
On my server i will have several objects of this RfidSensorType. The client creates a subscription on the CurrentAtTag Node to listen for data changes.
My Question:
When the value of CurrentAtTag is changed a callback function will be called in my client which contains the UaMonitoredItem and the DataValue of the CurrentAtTag.
In my application i need to process (at the same time) also the values of Station, IOLPort and CurrentValue which are changed at that moment too.
How can i access those values within the callback from CurrentAtTag?
My only solution is: Using a synchronous read request within that callback
-> Is that an legit approach?
My Research:
1) TriggeringService
I've seen that a TriggerigService exists, which monitors items will send reports only if one specific node changes it values.
Problem: This will call several callsbacks and noz just one..i need all the informations at the same time to further process them..
2) Event Monitoring
In event monitoring one can select "Event fields" which will be returned for each Event notificaiton. I am not sure if i could select the CurrentAtTag, Station, IOLPort and CurrentValue...
Just like you can subscribe to the server's ServerStatus (nodeid "i=2256"), you should be able to subscribe to the nodeid corresponding to 'RfidSensor_Station1'. The server will send PublishResponse with data of type 'RfidSensorType' encoded as an ExtensionObject. The trick is decoding the ExtensionObject.
As Kevin corrected, because 'RfidSensor_Station1' is not node class 'Variable' then it doesn't have a value attribute and you can not monitor the node for data changes. If you are using a PLC, I might combine all properties of the sensor into a string, or byte array. Then I monitor the new variable, and parse the string in the client.
Or you could make ReadRequest as you describe. That will work just fine.
We are currently using visjs version 3 to map the dependencies of our custom built workflow engine. This has been WONDERFUL because it helps us to visualize the flow and find invalid or missing dependencies. What we want to do next is simplify the process of building the dependencies using the visjs manipulation feature. The idea would be that we would display a large group of nodes and allow the user to order them correctly. We then want to be able to submit that json structure back to the server for processing.
Would this be possible?
Yes, this is possible.
Vis.js dispatches various events that relate to user interactions with graph (e.g. manipulations, or position changes) for which you can add handlers that modify or store the data on change. If you use DataSets to store nodes and edges in your network, you can always use the DataSets' get() function to retrieve all elements in you handler in JSON format. Then in your handler, just use an ajax request to transmit the JSON to your server to store the entire graph in your DB or by saving the JSON as a file.
The oppposite for loading the graph: simply query the JSON from your server and inject it into the node and edge DataSets' using the set method.
You can also store the networks current options using the network's getOptions method, which returns all applied options as json.