hms-networks / flexy-thingworx-connector Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
The README currently has a wall of text targeting first time users, advanced users, and developers. This should be broken up to simplify the documentation for different users.
Due to the restructuring and relocation of the services provided by ConnectorHost, many parts of the user documentation must be updated.
As of Release v3.2.1, the code in services InsertDataPoint and Talk2MSyncData makes very inefficient checks.
InsertDataPoint's 'run'-function gets called for each Ewon, for each Tag, for Each datapoint. The logic for checking if 'thing' exists for that Ewon is located in this 'run'-function. A better placement would be at the start of foreach Ewon, because it only needs to run one time per Ewon to serve its function.
Same goes for the logic of handling new properties/tags, it is run for each datapoint instead of each tag.
The M2Web API has not migrated to an authentication method with tokens like the DataMailbox API. As such, the connector will need to be upgraded when the M2Web API supports tokens.
I have went through the steps multiple times without success, even reset with all the check-boxes in Erase & Format. Never get the *config.json in the /usr folder and no realtime log (JVM) entries. I put the older v1.1.1 JAR and jvmrun in /usr, and after reboot I immediately see the config.json file as well as the "Starting Ewon Thingworx Connector 1.0" JVM log event.
hi @alexjhawk ,
we are trying to establish a direct connection between the device and a thingworx server. If I understand the code correctly it do not use the Java SDK and the AlwaysOn protocol. For me it look like it try REST pushes with the variable values. Correct?
Second: I do not see a port I can add to the server name. What port is the software using by default? Also I'm not sure if the communication is https or HTTP. it looks like HTTP, but I assume it is https because this is an internet communication.
Third: https certificates. Are you accepting any https certificate or do you check against the java root certificates and ensure the chain in valid.
test tls and update docs
Historical data reads need to have retry. This requires a change to the extension library.
For example, submodule update commands need to be run. This is not really covered anywhere.
$git clone [email protected]:hms-networks/flexy-thingworx-connector.git --recursive
$git submodule update --init
Going through the setup process today with "the latest" files/firmware and the jvm run and eitities.xml files seem to be missing from the .zip package.
When an application key has either been deleted or revoked, there is no indication from the connector. It continues as normal and displays the same 'null' result as it would on success.
Currently, the ConnectorHost
object in Thingworx, which contains the core of our Thingworx services, is displayed as a "Timer thing". This can be hard to find and potentially confusing, thus we should evaluate how to get our Thingworx connector to show up as a "connector" in Thingworx.
Feature request - status counters. Count dropped HTTP requests and add to logging
The code is using datapoint.dataType, while the correct syntax is tag.dataType. Consequence is that all properties are updated with basetype = "NUMBER". The code is failing and the log is populated with "Unknown data type" for all values.
// Get tag data type
var tagType;
if (datapoint.dataType === "Int") {
tagType = TW_DATA_TYPE_INTEGER;
} else if (datapoint.dataType === "Bool") {
tagType = TW_DATA_TYPE_BOOLEAN;
} else if (datapoint.dataType === "Float") {
tagType = TW_DATA_TYPE_NUMBER;
} else if (datapoint.dataType === "UInt") {
tagType = TW_DATA_TYPE_NUMBER;
} else {
logger.warn("Unknown data type (" + datapoint.dataType + ") for tag: " + tag.name);
tagType = TW_DATA_TYPE_NUMBER;
}
Evaluate the addition of a database in the Thingworx project which provides users the ability to map the values of remote updates with a service or services.
The reference guide has not been included in the most recent releases of the connector because the releases were created automatically with the build tool.
There are some sections of the reference guide that have not been moved or replicated in the README. The reference guide needs to be updated to reflect the latest version(s), or the contents should be moved to the README.
The default settings for the log level and log messages are not verbose enough. On a normal startup, only a message is shown to indicate that the connector is starting: "Starting Ewon Thingworx Connector 1.0". There should be an indication that the connector startup was complete.
The current solution does not support an easy way to read real-time values via a M2Web read. A new service should be created call ReadEwonTagValue for the GenericEwonDeviceTalk2M. This service should perform a read of a single tag value.
Add the information for the connector version's corresponding Thingworx version to the README.md file. This will reduce confusion on which version of Thingworx the connector is built for and tested against.
For httpPost errors, retry post after backoff. Implement a retry counter. Ideally this would also increment status counters.
The ThingWorx Boolean data type produces a "true" or "false" string. When writing to a Flexy Boolean this results in an error because the Flexy expects a 1 or 0. My initial Fix was to change the UpdateEwonTagValue to check for boolean strings and convert them to a 1 or 0 before writing the Flexy.
There is no recovery from an error in the historical data queue for the connector. In the event of a number format exception with the time tracker, the error continues to occur repeatedly until stopped.
10/05/2021 12:56:39 | JVM | 949668 | 1852 |
10/05/2021 12:56:39 | JVM | at wonka.vm.Init.main(Unknown Source) | 949668 | 1851 |
10/05/2021 12:56:39 | JVM | at java.lang.reflect.Method.invoke(Unknown Source) | 949668 | 1850 |
10/05/2021 12:56:39 | JVM | at java.lang.reflect.Method.invoke0(Native Method) | 949668 | 1849 |
10/05/2021 12:56:39 | JVM | at com.hms_networks.americas.sc.thingworx.TWConnectorMain.main(TWConnectorMain.java:206) | 949668 | 1848 |
10/05/2021 12:56:39 | JVM | at com.hms_networks.americas.sc.thingworx.TWConnectorMain.main(TWConnectorMain.java:319) | 949668 | 1847 |
10/05/2021 12:56:39 | JVM | at com.hms_networks.americas.sc.thingworx.TWConnectorMain.runGrabData(TWConnectorMain.java:81) | 949668 | 1846 |
10/05/2021 12:56:39 | JVM | at com.hms_networks.americas.sc.historicaldata.HistoricalDataQueueManager.getFifoNextSpanDataAllGroups(HistoricalDataQueueManager.java:135) | 949668 | 1845 |
10/05/2021 12:56:39 | JVM | at com.hms_networks.americas.sc.historicaldata.HistoricalDataQueueManager.getFifoNextSpanData(HistoricalDataQueueManager.java:170) | 949668 | 1844 |
10/05/2021 12:56:39 | JVM | at java.lang.Long.parseLong(Unknown Source) | 949668 | 1843 |
10/05/2021 12:56:39 | JVM | at java.lang.Long.parseLong(Unknown Source) | 949668 | 1842 |
10/05/2021 12:56:39 | JVM | at java.lang.NumberFormatException.(Unknown Source) | 949668 | 1841 |
10/05/2021 12:56:39 | JVM | at java.lang.IllegalArgumentException.(Unknown Source) | 949668 | 1840 |
10/05/2021 12:56:39 | JVM | at java.lang.RuntimeException.(Unknown Source) | 949668 | 1839 |
10/05/2021 12:56:39 | JVM | at java.lang.Exception.(Unknown Source) | 949668 | 1838 |
10/05/2021 12:56:39 | JVM | at java.lang.Throwable.(Unknown Source) | 949668 | 1837 |
10/05/2021 12:56:39 | JVM | at java.lang.Throwable.(Unknown Source) | 949668 | 1836 |
10/05/2021 12:56:39 | JVM | java.lang.NumberFormatException: empty | 949668 | 1835 |
10/05/2021 12:56:39 | JVM | An error occurred while reading data from the historical log. | 949651 | 1834 |
10/05/2021 12:56:36 | JVM | 946636 | 1833 |
10/05/2021 12:56:36 | JVM | at wonka.vm.Init.main(Unknown Source) | 946635 | 1832 |
10/05/2021 12:56:36 | JVM | at java.lang.reflect.Method.invoke(Unknown Source) | 946635 | 1831 |
10/05/2021 12:56:36 | JVM | at java.lang.reflect.Method.invoke0(Native Method) | 946635 | 1830 |
10/05/2021 12:56:36 | JVM | at com.hms_networks.americas.sc.thingworx.TWConnectorMain.main(TWConnectorMain.java:206) | 946635 | 1829 |
10/05/2021 12:56:36 | JVM | at com.hms_networks.americas.sc.thingworx.TWConnectorMain.main(TWConnectorMain.java:319) | 946635 | 1828 |
10/05/2021 12:56:36 | JVM | at com.hms_networks.americas.sc.thingworx.TWConnectorMain.runGrabData(TWConnectorMain.java:81) | 946635 | 1827 |
10/05/2021 12:56:36 | JVM | at com.hms_networks.americas.sc.historicaldata.HistoricalDataQueueManager.getFifoNextSpanDataAllGroups(HistoricalDataQueueManager.java:135) | 946635 | 1826 |
10/05/2021 12:56:36 | JVM | at com.hms_networks.americas.sc.historicaldata.HistoricalDataQueueManager.getFifoNextSpanData(HistoricalDataQueueManager.java:170) | 946635 | 1825 |
10/05/2021 12:56:36 | JVM | at java.lang.Long.parseLong(Unknown Source) | 946635 | 1824 |
10/05/2021 12:56:36 | JVM | at java.lang.Long.parseLong(Unknown Source) | 946635 | 1823 |
10/05/2021 12:56:36 | JVM | at java.lang.NumberFormatException.(Unknown Source) | 946635 | 1822 |
10/05/2021 12:56:36 | JVM | at java.lang.IllegalArgumentException.(Unknown Source) | 946635 | 1821 |
10/05/2021 12:56:36 | JVM | at java.lang.RuntimeException.(Unknown Source) | 946635 | 1820 |
10/05/2021 12:56:36 | JVM | at java.lang.Exception.(Unknown Source) | 946635 | 1819 |
10/05/2021 12:56:36 | JVM | at java.lang.Throwable.(Unknown Source) | 946635 | 1818 |
10/05/2021 12:56:36 | JVM | at java.lang.Throwable.(Unknown Source) | 946635 | 1817 |
10/05/2021 12:56:36 | JVM | java.lang.NumberFormatException: empty | 946635 | 1816 |
Can the Flexy be configured to push data via MQTT to Azure and to Thingworx in paralel?
Thingworx supports the import and export of projects, things, etc in a source control-friendly format. The import and export procedure for the source control-friendly format is different from the current procedure. The new procedure must be evaluated, tested, and documented for easy customer installation and update of the connector.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.