Giter VIP home page Giter VIP logo

flexy-thingworx-connector's People

Contributors

alexjhawk avatar it-hms avatar oliver-walker-hms avatar sunshine-dev-forever avatar tomkimsey avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

yolmant

flexy-thingworx-connector's Issues

Break up README into more targeted documents

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.

Inefficient locations for checks

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.

Inefficient Placement

Inefficient Placement

More Efficient Placement

More Efficient Placement

Inefficient Placement of Tag-logic

Inefficient Placement of Tag-logic

More Efficient Placement of Tag-logic

More Efficient Placement of Tag-logic

M2Web API uses old authentication method

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.

Can't get v1.2 .jar to run

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.

REST or AlwaysON Protocoll, HTTP or HTTPS

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.

No error on application key denial

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.

Better identify `ConnectorHost` as a "connector" in Thingworx

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.

add status counters

Feature request - status counters. Count dropped HTTP requests and add to logging

Talk2MSyncData does pass on correct basetype to InsertDataPoint

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;
            }

Update reference guide or migrate remaining to README

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.

Default log level is not verbose enough during normal startup

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.

Dashboards with Real-Time Info

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 Thingworx version information to README

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.

Boolean Conversion Thingworx to Flexy

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.

No recovery from historical data queue exception

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.