Raspberry PI and RFID
-
Hi,
I'm wanting to use the mango scada on a raspberry PI Does anyone know if there is a way to pull the data from something like this (http://wiki.seeed.cc/125Khz_RFID_module-UART/) into the scada?Regards
Billy -
Hi Billy,
Yes, quite possible. You could get started with a Serial Data Source. You'll need to identify the serial port, find the port settings in the device documentation (baud rate, parity, etc), and set up the regex to capture in incoming data.
Here's the JSON for my serial data source:
{ "dataSources":[ { "xid":"DS_0ff77d1f-0d36-4f36-bc2e-0227a4a01b05", "name":"RFID Test", "enabled":true, "type":"SERIAL", "alarmLevels":{ "POINT_READ_PATTERN_MISMATCH_EVENT":"URGENT", "POINT_WRITE_EXCEPTION":"URGENT", "DATA_SOURCE_EXCEPTION":"URGENT", "POINT_READ_EXCEPTION":"URGENT" }, "purgeType":"YEARS", "baudRate":9600, "commPortId":"COMM", "dataBits":8, "flowControlIn":0, "flowControlOut":0, "hex":true, "ioLogFileSizeMBytes":1.0, "logIO":false, "maxHistoricalIOLogs":1, "maxMessageSize":1024, "messageRegex":"()02.*", "messageTerminator":"03", "parity":0, "pointIdentifierIndex":1, "readTimeout":1000, "stopBits":1, "useTerminator":true, "editPermission":"", "purgeOverride":false, "purgePeriod":1 } ], "dataPoints":[ { "xid":"DP_8b4d3826-55aa-4586-bff0-bfcce63d4e31", "name":"Catch All", "enabled":true, "loggingType":"ON_CHANGE", "intervalLoggingPeriodType":"MINUTES", "intervalLoggingType":"INSTANT", "purgeType":"YEARS", "pointLocator":{ "dataType":"ALPHANUMERIC", "pointIdentifier":"", "valueIndex":0, "valueRegex":".*" }, "eventDetectors":[ ], "plotType":"STEP", "rollup":"NONE", "unit":"", "templateXid":"Alphanumeric_Default", "chartColour":"", "chartRenderer":{ "type":"TABLE", "limit":10 }, "dataSourceXid":"DS_0ff77d1f-0d36-4f36-bc2e-0227a4a01b05", "defaultCacheSize":1, "deviceName":"RFID Test", "discardExtremeValues":false, "discardHighLimit":1.7976931348623157E308, "discardLowLimit":-1.7976931348623157E308, "intervalLoggingPeriod":15, "intervalLoggingSampleWindowSize":0, "overrideIntervalLoggingSamples":false, "preventSetExtremeValues":false, "purgeOverride":false, "purgePeriod":1, "readPermission":"", "setExtremeHighLimit":1.7976931348623157E308, "setExtremeLowLimit":-1.7976931348623157E308, "setPermission":"", "textRenderer":{ "type":"PLAIN", "useUnitAsSuffix":true, "unit":"", "renderedUnit":"", "suffix":"" }, "tolerance":0.0 } ] }
COMM is a server socket virtual serial port I used for testing via:
echo -n -e "\x02\x30\x31\x30\x30\x30\x37\x33\x34\x45\x30\x44\x32\x03" | nc localhost 9000
So you'll need to select your comm port (probably something like /dev/ttyUSB0)
The "CatchAll" point in that JSON gets this value after that echo:
01000734E0D2
You can either refine the regex on the points on the serial data source to get value from that, or you can use a meta or scripting data source driven on context update to extract the values.