Online pinup peru casinos, also known as virtual casinos or internet casinos, are online versions of traditional brick-and-mortar casinos. They allow players to play and wager on casino games through the internet.

Online mostbet casinos generally offer a wide variety of games, including traditional games like blackjack, roulette, craps, and baccarat, as well as a large number of slot machine games. These games can be played for free or for real money, and some online casinos also offer live dealer games, where players can interact with a live dealer in real time and play games like blackjack or roulette.

To play online national casino casino games, players must first create an account with the casino and make a deposit. Once their account is funded, they can select from the casino's available games and start playing.

Online hellspins casino casinos use various technologies to ensure that their games are fair and that players' personal and financial information is secure.

Many online betano casinos also offer bonuses and promotions to attract players and incentivize them to make a deposit and play their games.

Online betano casino games are digital versions of traditional casino games that can be played over the internet using a computer or mobile device. Online casinos offer a wide variety of games including slots, blackjack, poker, roulette, baccarat, craps and more.

These games are developed by game studios and offered by online pinup casinos. Some online casinos also have live dealer games, where players can interact with a live dealer through a video stream and place bets in real-time.

Online pinup casinos offer various bonuses, promotions, and loyalty programs to attract and retain players. They also offer a wide range of stakes to accommodate different budgets and different playing styles, and players can often play games in free play mode to practice or try out new games before playing for real money.

Slot machines in betano: These are virtual versions of traditional mechanical slot machines. They typically feature a variety of themes and bonus rounds, and players can win large payouts depending on the combination of symbols they land on.

Online sol casino casinos generally offer a wider variety of games than brick-and-mortar casinos, and many also offer bonuses and promotions to attract players. Some online casinos also offer sports betting and horse racing betting options.

Online pixbet casinos offer a wide variety of games that can be played for real money. These games include traditional casino games such as slot machines, blackjack, roulette, and craps, as well as newer, more innovative games that have been developed specifically for online play.

Online betano casinos, also known as virtual casinos or Internet casinos, are online versions of traditional brick-and-mortar casinos. They allow players to play and wager on casino games through the internet. Online casinos typically offer a wide variety of games including slot machines, table games such as blackjack, roulette, baccarat, and video poker, as well as live dealer games. T

Online ice casino casinos use software to simulate the experience of being in a real casino. The software uses random number generators (RNGs) to ensure that the games are fair and that the outcome is random. Many online casinos are licensed and regulated by government gaming authorities to ensure that they operate ethically and legally.

To play online real money casino casino games, players typically have to create an account, make a deposit, and then choose the game they want to play. Some online casinos also offer mobile versions of their games that can be played on smartphones or tablets.

Players can play from anywhere as long as they have an internet connection in ice casino, making online casinos accessible to a much wider audience than traditional brick-and-mortar casinos.

Online zet casino casinos offer a wide variety of games, including classic games such as blackjack, roulette, and slot machines, as well as newer games that have been developed specifically for online play.

Use the safe bittorrent scanner utility to quickly find, download, and play torrents in a few easy steps.

  1. Home
  2. User Guides
  3. RESTful API Documentation
  4. Appendix: API Documentation- Data Export and Import

Appendix: API Documentation- Data Export and Import

Overview 

Conventional FTP Data Retrieval

Method FTP
Minutely/ Hourly Raw Data/ Per Minute Data
Number of File Sent

Based on number of counters installed, one file per counter on daily basis
E.g. 300 counters = 300 files

Data Retrieving Time

2.30am according to Clients' time zone

Disadvantages of using conventional method:

  • Relatively hard to maintain
  • No visibility on FTP success rate to to Client server
  • Raw data are not aggregated. Self aggregation and comparison are required. Raw files not combined to branch levels if one of the counters is offline, it would result in lower branch level traffic
  • No visibility on whether late data will be re included next day
  • Data Integrity: Inaccurate data especially when one offline counter affects the overall accuracy of counting, in terms of sales conversion, visitor counts etc. No visibility if data retrieved is partially completed or fully completed, if it is clean data with no offline
    counters and no unverified data

Proposed Solution: 

Benefits:
  • Ensure the data collected is fully verified
  • Ensure the branch level data collected has no missing data due to one of the counter offline
  • Ensure the data is fully uploaded to the server and get the complete set to compare with sales
    conversion

API

API

Integration with Incumbent People Counter

Note

User can ONLY migrate existing visitor count data to FootfallCam Analytic Manager

User may choose to migrate historical data from incumbent device into FootfallCam Analytic Manager The process will take up to a week to generate reports based on the historical data.

However, this function is currently not available for public release. If you would like to migrate your data from your existing people counter, please email to FootfallCam Sales Team.

 

Data Retrieve 

FootfallCam is a fully embedded software module, intended for any environment where store footfall counting is required. Business intelligence (BI) system extracts and analyses footfall data (from FootfallCam central server) together with ePOS data or staff labour hours (from retailer's ePOS system or staff management system) to produce management report for corporate strategic planning. By default, user able to obtain footfall data directly from counter or server via several types of methods which are listed as below:

 

 

Retrieve Data via API from device

Note

ONLY available for counter with IP Type in Static.

Long-lived access token will be provided.

STEP 1 - Generate URL: http://[insert Internal IP]/cgi-bin/access_token.cgi?username=[insert Username] &password=[insert Password]

Item Description
Internal IP Retrieve the Internal IP.

 

 

(Info: For more information on Internal IP, please refer to Section 6.2.)

Username admin

 

 

(Info: Case sensitive.)

Password (Info: Same password used to login to Counter Setup Wizard, therefore it is counter-dependent. NOT the password used to login to counter Wi-Fi)

STEP 2 - Run the URL and access token received will be shown as below.

URL Output
http://192.168.2.123/cgi-bin/access_token.cgi?username=Admin&password=[password]

STEP 3 - Retrieve data using access token received. Generate URL with the selected parameter listed as below: http://[insert Internal IP]/cgi-bin/apiCount_cgi?data_type=[insert Data Type]&data_format=[insert Data Format]&resolution_min=[insert Resolution Minutes]&date_start=[insert Date Start]&date_end=[insert Date End]&time_start=[insert Time Start]&time_end= [insert Time End]&access_token=[insert Token]

Parameter Description Value Sample
Data Type Type of the data. json, xml data_type=xml
Data Format Format of the data. hour, minute, second data_format=second
Resolution Minutes The minutes data's resolution. 1, 5, 10, 15, 30, 60 resolution_min=15
Resolution Second The second data's resolution. 1, 5, 10, 15, 30, 60 resolution_sec=1
Date Start Start date of the data. YYYYMMDD date_start=20181231
Date End End date of the data. YYYYMMDD date_end=20190131
Time Start To set the start time range of the API HHmmss time_start=103000
Time End To set the end time range of the API HHmmss time_end=223300
Sample 1 - Counting Data in Second
http://192.168.2.123/cgi-bin/apiCount.cgi?data_type=json&data_format=second&resolution_sec=30&date_start=20181231&date_end=20190131&time_start=083000&time_end=183000&access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IkFkbWluIiwic2VyaWFsIjoiTnpVd01EQXdNREl3WkRnM05qUmpadz09IiwicGFzc3dvcmQiOiIxMjM0NTYifQ.0fhypDovKDrEG3WIRNnXqlT9CArFPSsuZbi0R1RRvGw
Sample 2 - Counting Data in Minute
http://192.168.2.123/cgi-bin/apiCount.cgi?data_type=json&data_format=minute&resolution_min=1&date_start=20181231&date_end=20190131&time_start=083000&time_end=183000&access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IkFkbWluIiwic2VyaWFsIjoiTnpVd01EQXdNREl3WkRnM05qUmpadz09IiwicGFzc3dvcmQiOiIxMjM0NTYifQ.0fhypDovKDrEG3WIRNnXqlT9CArFPSsuZbi0R1RRvGw
Sample 3 - Counting Data in Hour
http://192.168.2.123/cgi-bin/apiCount.cgi?data_type=json&data_format=hour&date_start=20181231&date_end=20190131&time_start=083000&time_end=183000&access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IkFkbWluIiwic2VyaWFsIjoiTnpVd01EQXdNREl3WkRnM05qUmpadz09IiwicGFzc3dvcmQiOiIxMjM0NTYifQ.0fhypDovKDrEG3WIRNnXqlT9CArFPSsuZbi0R1RRvGw

Retrieve Data via API from device V2

Note

This section provide raw data collection from device via HTTP API endpoint.

A quick peek on the implementation.

Data Type Sample Output
ffc-eventrawdata
API: http://192.168.2.123/api/v2/counting/ffc-eventrawdata?DateStart=20221115&DateEnd=20221116&access_token={accessToken}
 
{
    "DatetimeRequested": "2022-12-01 08:15:22",
    "DateStart": "2022-11-15 00:00:00",
    "DateEnd ": "2022-11-16 00:00:00",
    "Serial": "00000000ce4828fb",
    "DeviceType": 3,
    "DataType": "ffc-eventrawdata",
    "Data": [
        {
            "EventStartUTCTime": "2022-11-15 00:01:21",
            "EventEndLocalTime": "2022-11-15 00:01:21",
            "EventStartTime": 1668470481,
            "CombineObjectTypeId": 11,
            "MetricId": 2,
            "RoiId": 1,
            "CameraSerial": "00000000ce4828fb",
            "PeopleId": 1,
            "EventEndUTCTime": "2022-11-15 00:01:21",
            "UploadedLocalDateTime": "2022-11-15 00:01:21",
            "EventEndTime": 1668470481,
            "EventStartLocalTime": "2022-11-15 00:01:21",
            "UploadedUTCDateTime": "2022-11-15 00:01:21",
            "PeopleTypeId": 1
        },
        {
            "EventStartUTCTime": "2022-11-15 00:01:42",
            "EventEndLocalTime": "2022-11-15 00:01:42",
            "EventStartTime": 1668470502,
            "CombineObjectTypeId": 11,
            "MetricId": 2,
            "RoiId": 1,
            "CameraSerial": "00000000ce4828fb",
            "PeopleId": 1,
            "EventEndUTCTime": "2022-11-15 00:01:42",
            "UploadedLocalDateTime": "2022-11-15 00:01:42",
            "EventEndTime": 1668470502,
            "EventStartLocalTime": "2022-11-15 00:01:42",
            "UploadedUTCDateTime": "2022-11-15 00:01:42",
            "PeopleTypeId": 1
        },
        ...,
        {
            "EventStartUTCTime": "2022-11-15 11:31:42",
            "EventEndLocalTime": "2022-11-15 11:31:42",
            "EventStartTime": 1668555102,
            "CombineObjectTypeId": 11,
            "MetricId": 2,
            "RoiId": 1,
            "CameraSerial": "00000000ce4828fb",
            "PeopleId": 1,
            "EventEndUTCTime": "2022-11-15 11:31:42",
            "UploadedLocalDateTime": "2022-11-15 11:31:42",
            "EventEndTime": 1668555102,
            "EventStartLocalTime": "2022-11-15 11:31:42",
            "UploadedUTCDateTime": "2022-11-15 11:31:42",
            "PeopleTypeId": 1
        }
    ]
}
healthchecklog
API : http://192.168.2.123/api/v2/healthcheck/healthchecklog?DateStart=20221115&DateEnd=20221120&access_token={accessToken}
 
{
    "DatetimeRequested": "2022-12-01 05:21:21",
    "DateStart": "2022-11-15 00:00:00",
    "DateEnd ": "2022-11-20 00:00:00",
    "Serial": "00000000ce4828fb",
    "DeviceType": 3,
    "DataType": "healthchecklog",
    "Data": [
        {
            "CameraSerial": "00000000ce4828fb",
            "ModuleStartTime": "2022-11-15 00:00:00",
            "Temperature": 60,
            "FrameRate": 54,
            "CameraStatus": "OK",
            "Connectivity": 1,
            "BandwidthUsage": {
                "Received": 51,
                "Transmitted": 55
            }
        },
        {
            "CameraSerial": "00000000ce4828fb",
            "ModuleStartTime": "2022-11-15 00:15:00",
            "Temperature": 64,
            "FrameRate": 55,
            "CameraStatus": "OK",
            "Connectivity": 1,
            "BandwidthUsage": {
                "Received": 52,
                "Transmitted": 54
            }
        },
        ...,
        {
            "CameraSerial": "00000000ce4828fb",
            "ModuleStartTime": "2022-11-19 23:45:00",
            "Temperature": 63,
            "FrameRate": 52,
            "CameraStatus": "OK",
            "Connectivity": 1,
            "BandwidthUsage": {
                "Received": 50,
                "Transmitted": 55
            }
        }
    ]
}
networklog
API: http://192.168.2.123/api/v2/log/networklog?DateStart=20221115&DateEnd=20221116&access_token={accessToken}
 
{
    "DatetimeRequested": "2022-12-02 08:15:22",
    "DateStart": "2022-11-15 00:00:00",
    "DateEnd ": "2022-11-16 00:00:00",
    "Serial": "00000000ce4828fb",
    "DeviceType": 3,
    "DataType": "networklog",
    "Data": [
        {
            "CameraSerial": "00000000ce4828fb",
            "Endpoint": "http://footfallcounter.com",
            "FailStart": "2022-11-15 00:16:20",
            "FailEnd": "2022-11-15 00:20:20",
            "NetworkStatus": "Fail",
            "FailedReason": {
                "StatusCode": 400,
                "Description": "Bad Request"
            }
        },
        {
            "CameraSerial": "00000000ce4828fb",
            "Endpoint": "http://footfallcounter.com",
            "FailStart": "2022-11-15 12:11:20",
            "FailEnd": "2022-11-15 12:12:20",
            "NetworkStatus": "Fail",
            "FailedReason": {
                "StatusCode": 503,
                "Description": "Service Unavailable Error"
            }
        },
        ...
    ]
}

The table above provides sample output of each API endpoint. Full API Endpoint format is as such:

http://[insert Internal IP]/api/v2/[insert DataGroup]/[insert DataType]/[insert SubData]?DateStart=[insert Date Start]&DateEnd=[insert Date End]&access_token=[insert Token]

DateStart & DateEnd must be specified by end-user to indicate the range of duration. API will do the polling of data from device database based on the range and outpus. Users would use HTTP GET request to call the API.

API Structure Format

Endpoint Breakdown Description Value Sample
Data Group Group of datatype healthcheck, counting, log .../api/v2/healthcheck/...
Date Type Data Topic

ffc-eventrawdata,
healthchecklog, networklog 

.../api/v2/counting/ffc-eventrawdata/...
Sub Data (optional) For specific data query instead of full data pulling.

healthchecklog - Temperature, FrameRate, BandwidthUsage

networklog - FailStartEnd

ffc-eventrawdata - MetricId, PeopleId,

.../api/v2/counting/ffc-eventrawdata/metricid
Parameter Description Value Sample
Date Start Start date of the data. YYYYMMDD date_start=20181231
Date End End date of the data. YYYYMMDD date_end=20190131
Access Token authentication token get from getAccessToken URL. Kindly refer to Section Retrieve Data via API from device  Step 1 and Step 2 to get the token.    

Data Explanation

Data Format
{
    "DatetimeRequested": "2022-12-02 08:15:22", # requested datetime
    "DateStart": "YYYYMMDD", # start date
    "DateEnd ": "YYYYMMDD", # end date
    "Serial": "00000000ce4828fb", # device serial (unique)
    "DeviceType": 3, # always 3
    "DataType": "ffc-eventrawdata", # topic data from the provided list.
    "Data": [ # List of object of data based on DataType
        {
            # Application-specific data would go here. (based on DataType)
        },
        {
            # Application-specific data would go here. (based on DataType)
        }
    ]
}

Each Application Data Explanation

Counting Data

Description= Raw counting data from device.
API Endpoint= http://.../api/v2/counting/ffc-eventrawdata
Param=DateStart, DateEnd
Method= GET
Body=

{
    "EventStartUTCTime": "2022-09-14 23:58:42", # utc datetime in YYYY-MM-DD hh:mm:ss format
    "EventEndLocalTime": "2022-09-15 07:58:42", # local datetime in YYYY-MM-DD hh:mm:ss format
    "EventStartTime": 1663200005, # utc timestamp in seconds or milliseconds
    "CombineObjectTypeId": 11, # can be 1 or 11, both mean it is a person crossing the line
    "MetricId": 2, # 1 for crossing in-line, 2 for crossing out-line
    "RoiId": 1, # always 1
    "CameraSerial": "00000000ce4828fb", # device serial
    "PeopleId": 1, # always 1
    "EventEndUTCTime": "2022-09-14 23:58:42", # utc datetime in YYYY-MM-DD hh:mm:ss format
    "UploadedLocalDateTime": "2022-09-15 07:58:42", # local datetime in YYYY-MM-DD hh:mm:ss format  
    "EventEndTime": 1663200005, # utc timestamp in seconds or milliseconds
    "EventStartLocalTime": "2022-09-15 07:58:42", # local datetime in YYYY-MM-DD hh:mm:ss format
    "UploadedUTCDateTime": "2022-09-14 23:58:42", # utc datetime in YYYY-MM-DD hh:mm:ss format
    "PeopleTypeId": 1 # always 1
}
 
ProbeCounting Data

Description= Raw probe data from device wifi dongle. (Data are aggregated every 5min interval)
API Endpoint= http://.../api/v2/counting/ffc-probecounting
Param=DateStart, DateEnd
Method= GET
Body=

{
    "ProbeCount": 30,
    "EventStartUTCTime": "2022-09-14 23:58:42", # utc datetime in YYYY-MM-DD hh:mm:ss format
    "EventEndLocalTime": "2022-09-15 07:58:42", # local datetime in YYYY-MM-DD hh:mm:ss format
    "EventStartTime": 1663200005, # utc timestamp in seconds or milliseconds
    "CameraSerial": "00000000ce4828fb", # device serial
    "EventEndUTCTime": "2022-09-14 23:58:42", # utc datetime in YYYY-MM-DD hh:mm:ss format
    "UploadedLocalDateTime": "2022-09-15 07:58:42", # local datetime in YYYY-MM-DD hh:mm:ss format  
    "EventEndTime": 1663200005, # utc timestamp in seconds or milliseconds
    "EventStartLocalTime": "2022-09-15 07:58:42", # local datetime in YYYY-MM-DD hh:mm:ss format
    "UploadedUTCDateTime": "2022-09-14 23:58:42", # utc datetime in YYYY-MM-DD hh:mm:ss format
}
 
Performance Data

Description= provide a list of performance data. (5 min interval)
API Endpoint= http://.../api/v2/healthcheck/healthchecklog
Param=DateStart,DateEnd
Method= GET
Body=

{
    "CameraSerial": "00000000ce4828fb", # device serial
    "ModuleStartTime": 2022-11-15 07:00:00, # utc datetime in YYYY-MM-DD hh:mm:ss format
    "Temperature": 52, # temperature of the device in Celsius format
    "FrameRate": 54, # frame rate of the camera
    "CameraStatus": "OK", # camera status. OK means functioning properly.
    "Connectivity": 1, # connection status to a server endpoint.
    "BandwidthUsage":{
        "Received": 50, # received packages in KiB format (5min interval)
        "Transmitted": 12 # transmitted packages in KiB format (5min interval)
    }
}
Error Log Data

Description= Network error log.
API Endpoint= http://.../api/v2/log/networklog/
Param=DateStart,DateEnd
Method= GET
Body=

{
    "CameraSerial": "00000000ce4828fb", # device serial
    "ServerUrl": "http://footfallcounter.com", # server endpoint assigned at device network UI.
    "FailStart": 1665567526, # utc timestamp in seconds or milliseconds
    "FailEnd": 1665569000, # utc timestamp in seconds or milliseconds
    "NetworkStatus": "Fail", # Always Fail.
    "FailedReason":{
        "StatusCode": 504, # HTTP status code
        "Description": "Gateway Timeout" # Status Code Explanation
    }
}

Device Occupancy Data Viewing via API

Description Calling this endpoint to get device occupancy data in JSON format.
Endpoint {DeviceIPAddress}/api/v2/occupancy
Method GET
Body - JSON Example
{
    "Serial": "00000000ce4828fb",
    "LastResetDateTime": "2022-11-15 07:00:00",
    "OccupancyData": 32,
    "OccupancyLimit": 50
}
Body Description
  1. Serial (string): Device Serial
  2. LastResetDateTime (string): utc datetime in YYYY-MM-DD hh:mm:ss format
  3. OccupancyData (integer): Device occupancy data
  4. OccupancyLimit (integer): Occupancy limit set.

Device Occupancy Data Reset via API

Description Calling this endpoint to reset device occupancy data in JSON format.
Endpoint {DeviceIPAddress}/api/v2/occupancy/reset
Method GET
Body - JSON Example
{
    "Serial": "00000000ce4828fb",
    "LastResetDateTime": "2022-11-15 07:00:00",
    "IsReset": True,
    "OccupancyData": 0,
    "OccupancyLimit": 50
}
Body Description
  1. Serial (string): Device Serial
  2. LastResetDateTime (string): utc datetime in YYYY-MM-DD hh:mm:ss format
  3. IsReset (bool): to indicate occupancy data has been reset.

Retrieve Data via API From Analytic Manager

STEP 1 - Login Analytic manager and navigate to export page from left side navigation bar Setting > Export 

STEP 2 - Select API tab

STEP 3 - Select desired export options for each fields and click Apply

Item Description
Data Aggregation Select types of data (Counter level or Site level) to be exported. It will then further populate the drop down list by counters or by sites.
Time Aggregation Select hourly or daily aggregated data to be exported
Date Range Start and end date of data to be exported. May manually adjust 'fromdate' and 'todate' in generated URL for easier integration.
Date Format Date format used in CSV/Excel/TXT export file

STEP 4 - Click Copy button to copy the URL for exporting data based on selected fields. Some parameters may  adjust manually in URL (e.g: 'fromdate' and 'todate').

 

Retrieve Live Data via WebSocket

WebSocket Client

With this module, counting data is able to be sent to your websocket server as it happens. Please consult your IT Technician if it is possible to set up a websocket server to receive our live counting data. 

Note

Please make sure you understand the following:

Data must be acknowledged with an "OK" upon receiving them, otherwise, our counters will assume the sending has failed and will keep re-sending the same data. Your websocket server must not block any incoming connections from the Counter. This means whitelisting the site network if there is a blanket ban on connections.

Please expect dummy data to be sent so that we can confirm the connection between the counter and your server. Dummy data may also be sent after the confirmation for debugging purposes. The message's topic name will be "generic-test-topic", and you can configure your server to ignore this data.

We will hold 10,000 IN/OUT data if your Websocket Server is down. This should be around 2 weeks worth of footfall data. After this threshold is exceeded, the module will be turned off as to not bloat the counter's storage.

For this to be set up, there are several requirements:

Setting up the Websocket Module

Requirement

Websocket Server Address

Data MUST be acknowledged with OK upon receiving them, otherwise, FootfallCam counter will assume the sending has failed and keep re-sending the same data.

Basic Authentication (Optional)

Username and Password

In your Counter's Control Panel, navigate to the Settings tab and scroll down to find 'Websocket Module'.

Once enabled, you can fill in your Websocket Address in the field provided. If Basic Authentication is enabled in your Server, you may toggle the option and fill in the details. Otherwise, this option is optional.

Every time the setting is changed, Check Connection must be clicked before saving it to allow the Counter to test the connection.

  1. The Websocket Server should receive a JSON test data with the topic 'generic-test-topic'.
  2. The Websocket Server must return "OK".

Websocket Module: Data Explanation

Parameter

Description

Value

Topic

Name of the payload which IN / OUT data will send to server.

ffc-eventrawdata

CameraSerial

Unique ID.

(Info: You may obtain the CameraSerial by getting the Chipset Code from Home page.)

00000000xxxxxxxx

EventStartUTCTime

Start of Event in UTC Timezone.

YYYY-MM-DD HH:MM:SS

EventEndUTCTime

End of Event in UTC Timezone.

YYYY-MM-DD HH:MM:SS

EventStartTime

Event Start Time in Linux Timestamp

YYYY-MM-DD HH:MM:SS

EventEndTime

Event End Time in Linux Timestamp

YYYY-MM-DD HH:MM:SS

EventStartLocalTime

Event Start in Local Time.

YYYY-MM-DD HH:MM:SS

EventEndLocalTime

Event End in Local Time.

YYYY-MM-DD HH:MM:SS

UploadedUTCDateTime

UTC Time of when the Data is published to be sent.

YYYY-MM-DD HH:MM:SS

UploadedLocalDateTime

Local Time of when the Data is published to be sent.

YYYY-MM-DD HH:MM:SS

MetricId

To indicates kind of event triggered such as Value IN or Value Out.

1 = ValueIN

2 = ValueOut

PeopleTypeId

To indicate which kind of people were detected.

1 = Visitor

2 = Staff

Roild

Temporarily ONLY for Internal Use.

N / A

PeopleId

To indicate the people are being tracked. Example, multiple people will be indicate with different IDs.

numeric

Sample 1 - Value IN Data
{'Topic': 'ffc-eventrawdata', 'Data': {'EventStartUTCTime': '2020-06-17 03:16:41', 'EventEndLocalTime': '2020-06-17 11:16:41', 'EventStartTime': 1592363801, 'MetricId': 1, 'RoiId': 1, 'CameraSerial': '000000006afce315', 'PeopleId': 1, 'EventEndUTCTime': '2020-06-17 03:16:41', 'UploadedLocalDateTime': '2020-06-17 11:16:45', 'EventEndTime': 1592363801, 'EventStartLocalTime': '2020-06-17 11:16:41', 'UploadedUTCDateTime': '2020-06-17 03:16:45', 'PeopleTypeId': 1}}
Sample 2 - Value OUT Data
{'Topic': 'ffc-eventrawdata', 'Data': {'EventStartUTCTime': '2020-06-17 03:20:18', 'EventEndLocalTime': '2020-06-17 11:20:18', 'EventStartTime': 1592364018, 'MetricId': 2, 'RoiId': 1, 'CameraSerial': '000000006afce315', 'PeopleId': 1, 'EventEndUTCTime': '2020-06-17 03:20:18', 'UploadedLocalDateTime': '2020-06-17 11:20:21', 'EventEndTime': 1592364018, 'EventStartLocalTime': '2020-06-17 11:20:18', 'UploadedUTCDateTime': '2020-06-17 03:20:21', 'PeopleTypeId': 1}}

Retrieve Data via Data Integration Tool

Download Link (Supports Windows 64-bit devices only)

Link Here

 

Build/Send Query

STEP 1 - Select the API Type (Authentication/Hourly Data/Minutes Data/Seconds Data/Most Recent 60 Seconds Data).

STEP 2 - Fill in required fields accordingly.

STEP 3 - Click the Copy icon to copy Query, or the Send Query button to send Request.

 

Copy Code Snippets

STEP 1 - Select the API Type (Authentication/Hourly Data/Minutes Data/Seconds Data/Most Recent 60 Seconds Data).

STEP 2 - Fill in required fields accordingly.

STEP 3 - Select Language.

STEP 4 - Click the Copy icon to copy Code Snippet.

 

Link Counter to Local WebSocket Server

STEP 1 - Click the Copy icon to copy Local WebSocket Address.

STEP 2 - Navigate to Counter Setup Wizard of the counter that you wish to test WebSocket connection in your web browser.

STEP 3 - Navigate to IT Settings page, then to WebSocket Module under Advanced IT Settings section.

STEP 4 - Toggle WebSocket to "ON".

STEP 5 - Paste into WebSocket Server Address text input.

STEP 6 - Click Test Connection button.

STEP 7 - Click Save button.

STEP 8 - You should be seeing IN/OUT data (Including test connection) displaying in Response in Data Integration Tool app.

 

Retrieve Data via FTP

FTP directly from counter

Time of Output Once per day
Minimum Resolution Once per 1 minute
Data Presentation By Counter level

  1. Access the Configuration page on the menu bar on the left
  2. Scroll to the Direct Export from Counter section in the newly landed page
  3. Click on the option of Enable FTP.
  4. Fill in the required details:
Item Description
1. FTP configurations FTP account details
2. Schedule How often should the data be exported
3. Date Format The date format that will appear on the data
4. File name Name of the exported file
5. File format Format of the exported file

Note

The user must create a branch and allocate counter under the branch first.

Overall process flow of FTP directly from counter

FTP push from Server

Time of Output Daily of Weekly
Minimum Resolution 1 hour
Data Presentation By Branch level
Types of Data IN and OUT values, Outside Traffic, Turn In Rate, Verification and Aggregation Status
Output format .xlsx or .csv format

  1. Select Export Centre on the menu bar on the left
  2. Click on the tab Automate Export
  3. Click on Configure to create a new FTP schedule
  4. Fill in the details as required

Item

Description

1.      Data aggregation

Level of data to export and which site should be exported

2.      Time aggregation

Time frame of the data to be exported

3.      Date format

Format of data that will be shown in the export file

4.      Export frequency

Frequency of the export schedule

5.      Export type

Select the file format to be exported

6.      FTP details

Input your FTP account details

Note

You may click on Edit to edit the existing settings of any schedule.

Retrieve Data via MQTT

Settings up MQTT through counter setup wizard

STEP 1 - Once logged in into device, on home page click on settings to head to settings page.

STEP 2 - On Settings page. Open up Advanced IT Settings dropdown.

STEP 3 - Head Towards MQTT Module and click on Enable MQTT.

STEP 4 - Fill up necessary field and click 'Save' on Save Changes below.

Example Configuration 

MQTT Broker Address

mqtt://broker.hivemq.com:1883 or 

ws://broker.hivemq.com:9001 

MQTT Client ID

client_123  #default is ChipSerial of device
MQTT Topic /status/0000000000000001 #default setting is /status/{ChipSerial}
MQTT Last Will QoS

0 #send and forget

MQTT User Name #leave blank if not authentication
MQTT Password #leave blank if not authentication
Sample 1 - Occupancy Data
'{
    "RoiId": 1,
    "CombineObjectTypeId": 1,
    "ObjectCount": 0, # 1 for Occupied and 0 for None
    "Timestamp": 1672889540, #UTCtime
    "LocalTime": "2023-01-05 11:32:20",
    "UTCTime": "2023-01-05 03:32:20",
    "OccupancyTypeId": 1,
    "ObjectCountUnit": 1,
    "CameraSerial": "100000008c76409d" 
}'
Sample 2 - Counting Data
'{
    "CombineObjectTypeId": 11,
    "EventEndLocalTime": "2022-11-25 04:47:49",
    "EventEndTime": 1669351669,
    "EventEndUTCTime": "2022-11-25 04:47:49",
    "EventStartLocalTime": "2022-11-25 04:47:49",
    "EventStartTime": 1669351669,
    "EventStartUTCTime": "2022-11-25 04:47:49",
    "MetricId": 2,
    "PeopleId": 1,
    "PeopleTypeId": 1,
    "RoiId": 1,
    "CameraSerial": "000000007b77a260"
}'

Retrieve Data via Bacnet

STEP 1 - Connect FFC device to Bacnet Router.

STEP 2 - Connect Computer to same network as FFC device.

STEP 3 - Configure FFC device's ip address through counter setup wizard.

STEP 4 - Connect computer/master device to Bacnet network with BAC0 protocol and Port 47808.

Example Setting to connect using YABE software

STEP 5 - Get data from device's properties with device's name FFC and device's ID with last six digits of company serial.

Example display of connected device using Bacnet

 

After the device connected to Bacnet network, the counting data were inside properties. And there are two type of data which is In-C-X and Out-C-X. In-C-X and Out-C-X which represented In count and Out count, and X represented current hour - X hours. There are total 96 data which represent last 48 hours in and out count for the devices.

Retrieve Data via SQL

Note

Microsoft SQL Server Management Studio or equivalent is required. Use dbcontent6848.footfallcam.com (Port: 41433) or own server address as the server name in the SQL software.
** For user of dbcontent6848.footfallcam.com will required to setup a public static IP and request our team to whitelist the IP address

STEP 1 - Click on Setting > Company to access the Control Panel Setting page.

STEP 2 - Navigate to section Grab Data from SQL Table.

STEP 3 - Complete the process by entering all the required fields and click on Create button.

Item Description
1. Username Username used to access FootfallCam Analytic Manager V9™.
2. Password Password used to access FootfallCam Database Server.

Example updated on 2021-02-25:

Analytic Manager UserName Analytic Manager Password SQL Server UserName SQL Server Password
abc 123 xyz 789
Old approach :
Select * from functionName ('abc', '123');
Exec functionName ('abc', '123');
New approach :
Select * from functionName ('abc', '789');
Exec functionName ('abc', '789');

Note: Password '789' is only example password. For security concern, it's encourage user to set a complicated pattern set.

Sample 2 - How to get Counter List
Description To retrieve counter list and site info include ID, CameraName, IP, Port, Serial.
Function Name GetCounterByBranch
Data Params Username [nvarchar]; Password [nvarchar]; Branchid[bigint]
Sample SQL SELECT * FROM GetCounterByBranch('username', 'password', 37);
Sample Result
Sample 1 - How to get Site List
Description To retrieve site list and site info include BranchCode, BranchName, Region, City, Country, StoreType, Latitude, Longitude and Floorsize.
Function Name GetBranchList
Data Params Username [nvarchar]; Password [nvarchar]
Sample SQL SELECT * FROM GetBranchList('username','password');
Sample Result
Sample 3 - How to get Hourly Counting data by Site
Description To retrieve site hourly counting data include Branchid, ValueIn, ValueOut, OutsideTraffic, TurnInRate.
Function Name GetBranchHourly
Data Params Username [nvarchar]; Password [nvarchar]; BranchCode [bigint]; StartDate [datetime]; EndDate [datetime]
Sample SQL SELECT * FROM GetBranchHourly('username', 'password', -1, '20150320', '20150321');
Note -1 refer to the company which means all site(s).
Sample Result
Sample 4 - How to get Daily Counting data by Site
Description To retrieve site daily counting data include Branchid, ValueIn, ValueOut, OutsideTraffic, TurnInRate.
Function Name GetBranchHourly
Data Params Username [nvarchar]; Password [nvarchar]; BranchCode [bigint]; StartDate [datetime]; EndDate [datetime]
Sample SQL SELECT * FROM GetBranchDailySummary('username', 'password', 410, '20140120', '20140121');
Note -1 refer to the company which means all site(s).
Sample Result
Sample 5 - How to get Area List
Description To retrieve area list and area info include BranchId, BranchName, AreaId, AreaName, CameraId, CounterName, CompanySerial, CounterChipsetCode, LineName and Direction
Function Name GetAreaConfiguration
Data Params Username [nvarchar]; Password[ nvarchar]; BranchID [nvarchar]
Sample SQL select * from GetAreaConfiguration('Username', 'Password', -1)
Note -1 which means all site(s) in the company.
Sample Result
Sample 6 - How to get Hourly Counting data by Area
Description To retrieve area hourly counting data include AreaId, AreaName, ValueDateTime, ValueIn, ValueOut
Function Name GetAreaHourly
Data Params UserName [nvarchar]; Password [nvarchar]; AreaID [nvarchar]; StartDate [datetime]; EndDate [datetime]
Sample SQL select * from GetAreaHourly('Username', 'Password', -1, '2021-01-13 00:00:00.000','2021-01-14 00:00:00.000')
Note -1 which means all area(s) in the company.
Sample Result

Schema

 

Retrieve Data by Manual Export Function

Note

Download the sample of Manual Export is available.

STEP 1 - Click on Setting > Export to access the Export page.

STEP 2 - Click on Manual Export tab to access the Manual Export tab.

STEP 3 - Complete the process by entering all the required fields and click on CSV / Excel / TXT button.

Item Description
1. Data Aggregation Select the site / counter.
2. Time Aggregation Select the length of data.
3. Date Range Select the start date and end date.
4. Date Format Select the format of the date.
5. Time Format Select the format of the time.
6. File Column Arrangement of column in download file. (Info: User able to re-organize the data column if user selected custom mode.)

Different Metrics are available for a different combination of Data Aggregation and Time Aggregation.

  1. Data Aggregation: Site
    Time Aggregation: Hourly
  2. Data Aggregation: Site
    Time Aggregation: Daily

Retrieve Data by Auto Scheduled on Web Portal 

Data can be schedule to auto generate and export to your email according to the frequency set. Below are the steps to configure the automated export setting.

STEP 1 - Click on Setting > Export to access the Export page.

STEP 2 - Click on Automate Export tab to access the Manual Export tab.

STEP 3 - Click on Configure button to access Configure Automate Export Setting page.

STEP 4 - Complete the process by entering all the required fields and click on Save button.

Item Description
1. Data Aggregation Select the site / counter.
2. Time Aggregation Select the length of data.
3. Date Format Select the format of the date.
4. Time Format Select the format of the time.
5. Export Frequency Select the export frequency.
6. Export Type Select the export format type.
(Info: There are 3 export type: Excel , CSV , TXT)
7. Email Email address
(Info: Notification will be sent to this email if the automated export is failed.)
8. Export (Email scheduler) Active schedule for export data email.
9. Your FTP Details FTP details to receive exported file.
10. Advance Setting Advance setting that included Encryption Mode and Connection Ty[e.

Power BI Integration

  • Open Power BI and navigate to Get Data  => Database => PostgreSQL database.
  • Then you will be redirected to PostgreSQL login page. Fill in the details below:-
    • Server : beta-cube.footfallcam.com:6543
    • Database : postgres
    • Data connectivity mode : DirectQuery
    • Then click ok, and you will be directed to the user login page
    • Please contact FootfallCam Support via Support Portal to request for user credential.

Sales Data Integration 

Prepare Import Sales File

Note

Download the Sales Conversion Template for import sales data and enter the required site detail(s).

The requirements MUST adhered to the imported file are listed as below:

Item

Description

File Format

Comma-separated values (.csv)

1. StoreCode

StoreCode must match with Site Code in FootfallCam Analytic Manager V9™.

(Info: For more information on Site Code, please refer to Section 4.5 Manage Site Detail.)

2. DateTime

The format of DateTime must be DD-MM-YYYY hh:mm.

3. TotalTransactionQty

TotalTransactionQty is the number of transactions made by customer and the format must be Whole Number and without any special character.

4. TotalTransactionValue

TotalTransactionValue is the amount of payment received and the format must be Numeric up to 2 decimal places and without any special character.

The TotalTransactionQty and TotalTransactionValue can be aggregated in hour according to the sample as below:

Before Aggregation After Aggregation [Optional]

Import Sales File Option

Note

There are TWO options for import file are available.

Option 1 - Manual Import

STEP 1 - Click on Setting > Import to access the Import page.

STEP 2 - Click on Manual Upload tab to access the Manual Upload tab.

STEP 3 - Complete the process by entering all the required fields and click on Import button.

Item

Description

1. Import Data Type

Select the Sales Data as the import data type.

2. Sales File Format

Select the import file format.

3. Upload File

Browse and upload the file in Comma-separated values (.csv) format.

4. Available Fields in CSV File 11

Drag and drop the specified field according to the header in Required Fields.

 

Option 2 - Automate Import

STEP 1 - Click on Setting > Import to access the Import page.

STEP 2 - Click on Automate Upload tab to access the Automate Upload tab.

STEP 3 - Click on Configure to access the Configure Automate Import Setting page.

STEP 4 - Complete the process by entering all the required fields and click on Test button to ensure the process run successfully.

STEP 5 - Click on Save button to complete the process.

Item

Description

1. Import Data Type

Select the Sales Data as the import data type.

2. Sales File Format

Select the import file format.

3. Upload Sample File

Browse and upload the sample file in Comma-separated values (.csv) format.

4. Available Fields in CSV File 11

Drag and drop the specified field according to the header in Required Fields.

5. Import Frequency

Select the import frequency.

6. Email

Enter an email address to receive import fail notification alert.

7. FTP Details

Enter the information required for FTP.

(Info: For more information on FTP account, please refer to Section 4.5 Manage Site Detail.)

8. Directory

Location of the sales data file.

Import Sales File History

Note

Import File History ONLY contains file uploaded via Automate Upload.

STEP 1 - Click on Setting > Import to access the Import page.

STEP 2 - Click on Automate Upload tab to access the Automate Upload tab.

STEP 3 - Select the Import Data Type to manage and click on Edit.

STEP 4 - Navigate to Import History Log at the bottom of the page.

STEP 5 - Click on Download Log to view the import status in details.

Import Successfully

Import Failed

FAQ

Question 1: How would you ensure that the API is secured?

- SQL Server API will need to be accessed through user name and password
- Password is being stored as encrypted string that can only be decrypted with the key that holds inside the SQL Server and the key is being hidden from user
- REST API call to retrieve data will also need to be called with encrypted access token
- The owner of the server can opt for firewall blocking and IP whitelisting for SQL Server to further enhance the security of the server
- Default port will not be used to prevent hijack from hackers

 

Question 2: How would FootfallCam deal with the huge traffic of API requests and responses?

Traffic handling is performed by Microsoft SQL Server there is no additional handling from FootfallCam. But the database script that FootfallCam provides for data pulling (API) is already fine-tuned to prevent bottleneck.

Updated on January 9, 2023