Coder Social home page Coder Social logo

rsi-alarm-gateway's People

Contributors

longzheng avatar mickaelh51 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

rsi-alarm-gateway's Issues

ARM/DISARM from Videofied APP

Hi,
the firmware 9.1.50 or upper allows self monitoring and arm/dissarm from the videofied APP but I those events are´t recognised now.
All the events in this log happened in a row, but after the first one, the others took a few minutes to arrive, as you can see.

Attach the log:
[2023-07-30 09:18:00,336] - server - INFO - ### Connected with 192.168.100.11:52850 ###
[2023-07-30 09:18:00,336] - server - INFO - Start new thread: 140683861052192
[2023-07-30 09:18:00,336] - server - INFO - Number of threads: 3
[2023-07-30 09:18:00,354] - utils - INFO - serial: E8B0502063080508
[2023-07-30 09:18:00,354] - utils - INFO - key: 50880052600010030058520060018800
[2023-07-30 09:18:00,354] - utils - INFO - Setting preshared key
[2023-07-30 09:18:00,355] - utils - INFO - Generate new challenge: 99E250FDECD5EFF529559990F5CE5657
[2023-07-30 09:18:00,572] - utils - INFO - Key response to alarm: 8BEB14D9837F7E7FAB7049F81D67EEEA
[2023-07-30 09:18:01,142] - utils - INFO - Answer: AUTH_SUCCESS,0000,5,20230730111755,5,2,E6612124110,0,XLP090128,0,27FF
[2023-07-30 09:18:01,142] - utils - INFO - Logging successful !!
[2023-07-30 09:18:01,239] - server - DEBUG - b'EVENT,24,1,255\x1a'
[2023-07-30 09:18:01,239] - server - INFO - We received EVENT: EVENT,24,1,255
[2023-07-30 09:18:01,239] - utils - ERROR - unable to find source of event (EVENT,24,1,255)
Traceback (most recent call last):
File "/usr/src/app/utils.py", line 78, in find_event_type
source_of_event = cfg["mapping_users"][event_array[3]]
KeyError: '255'
[2023-07-30 09:18:01,240] - server - INFO - Received update from alarm (armed) update MQTT / source of event (None) / zone of event (None)
[2023-07-30 09:18:01,339] - server - DEBUG - b'REQACK,0\x1a'
[2023-07-30 09:18:01,339] - server - INFO - We received REQACK, send simple ACK
[2023-07-30 09:18:06,344] - server - INFO - No data from client
[2023-07-30 09:18:06,344] - server - INFO - ### Connection 192.168.100.11:52850 closed ###

[2023-07-30 09:21:56,344] - server - INFO - ### Connected with 192.168.100.11:26713 ###
[2023-07-30 09:21:56,345] - server - INFO - Start new thread: 140683861052192
[2023-07-30 09:21:56,345] - server - INFO - Number of threads: 3
[2023-07-30 09:21:56,359] - utils - INFO - serial: E8B0502063080508
[2023-07-30 09:21:56,359] - utils - INFO - key: 50880052600010030058520060018800
[2023-07-30 09:21:56,360] - utils - INFO - Setting preshared key
[2023-07-30 09:21:56,361] - utils - INFO - Generate new challenge: 983812254E88F39A2CD6FBE32D229D3B
[2023-07-30 09:21:56,575] - utils - INFO - Key response to alarm: 861621CC1149A5D9292CF163F0505AEB
[2023-07-30 09:21:57,151] - utils - INFO - Answer: AUTH_SUCCESS,0000,5,20230730112151,5,2,E6612124110,0,XLP090128,0,27FF
[2023-07-30 09:21:57,151] - utils - INFO - Logging successful !!
[2023-07-30 09:21:57,248] - server - DEBUG - b'ALARM,1932\x1a'
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00INPUT1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x1a\x04\x00OUTPUT1\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x1b\x04\x00OUTPUT2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x004B4303181118011A\x00\x00\x00\x00\x00\x008C040421A14E1788\x00\x00\x00\x00\x00\x008C0405172399049C\x00\x00\x00\x00\x
00\x008C04481703990472\x00\x00\x00\x00\x00\x008C043020814E31DA\x00\x00\x00\x00\x00\x008C0427170399'
[2023-07-30 09:21:57,432] - server - DEBUG - b'STATUS\x00\x00\x00\x00FC2043000\x001932\x00\x00\x00\x00\x00\x00\x00\x00 \x1b\x1c\x00\x00\x00\x00\x00\x00\n\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x000000\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00165700\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04PLANTA BAJA\x00\x00\x00\x00\x00\x00D\x01\x00PLANTA ALTA\x00\x00\x00\x00\x00\x00D\x00\x
00GARAJE BARBACOA\x00\x00D\x00\x00 ZONA 4\x00\x00\x00\x00\x00\x00D\x00\x00\t\x01\x01TECLADO\x011\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x06\x01CAM CHIMENEA\x00\x00\x00\x00\x00\x00\x00\
x02\x06\x01CAM SALON2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x06\x02CAM PASILLO\x00\x00\x00\x00\x00\x00\x00\x00\x04\x06\x03CAM BBQ\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x06\x03CA
M GARAJE\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x08\x01PUERTA PISCINA\x00\x00\x00\x00\x00\x07\x08\x01PUERTA PORCHE\x00\x00\x00\x00\x00\x00\x08\x08\x01PUERTA COCINA\x00\x00\x00\x00\x01\x00\t\x0
0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00[2023-07-30 09:21:57,459] - server - DEBUG - b'0287\x00\x00\x00\x00\x00\x0080023916C108015F\x00\x00\x00\x00\x00\x0080020417C11806F8\x00\x00\x00\x00\x0
0\x0080022920C1180314\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00
\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\
x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x0000000000000000
00\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x00\xff\x01\x05\x00\x01\x00\x00\x00\x00\x1a'
[2023-07-30 09:21:57,538] - server - DEBUG - b'EVENT,1,9,8\x1a'
[2023-07-30 09:21:57,538] - server - INFO - We received EVENT: EVENT,1,9,8
[2023-07-30 09:21:57,539] - server - INFO - Received update from alarm (alarm alert !) update MQTT / source of event (Sensor noid 9) / zone of event (BBQ y Garaje)
[2023-07-30 09:21:57,638] - server - DEBUG - b'EVENT,25,6,255\x1a'
[2023-07-30 09:21:57,638] - server - INFO - We received EVENT: EVENT,25,6,255
[2023-07-30 09:21:57,639] - utils - ERROR - unable to find source of event (EVENT,25,6,255)
Traceback (most recent call last):
File "/usr/src/app/utils.py", line 78, in find_event_type
source_of_event = cfg["mapping_users"][event_array[3]]
KeyError: '255'
[2023-07-30 09:21:57,740] - server - INFO - Received update from alarm (disarmed) update MQTT / source of event (None) / zone of event (None)
[2023-07-30 09:21:57,840] - server - DEBUG - b'LOG,152,20\x1a'
[2023-07-30 09:21:57,949] - server - DEBUG - b'LOG\x00\x00\x00\x00\x00\x00\x00FC2043000\x00152\x00\x00\x00\x00\x00\x00\x00\x14\x00\xd7\xf9U\xb9\x00k\xd7\xf9%\xb1\xff8\xd7\xf9%\xb1\x00\xc5\xd7\x
f9%\x99\x00S\xd7\xf9%\x99\tP\xd7\xf9\x15\xe5\x00b\xd7\xf9\x15\xd1\xff?\xd7\xf9\xf5\xd0\xff\x86\xd7\xf9\xf5\xd0\x00\xc4\xd7y\xb5\xb3\x00k\xd7y\x85\x8f\x00b\xd7y\x85k\x00k\xd7yUG\x00b\xd7yU7\x00l
\xd7yU+\x04-\xd7yE\x93\x00k\xd7y\x15o\x00b\xd7y\x15K\x00k\xd7y\xe5&\x00b\xd7y\xe5\x02\x00k\x1a'
[2023-07-30 09:21:58,042] - server - DEBUG - b'REQACK,0\x1a'
[2023-07-30 09:21:58,042] - server - INFO - We received REQACK, send simple ACK
[2023-07-30 09:22:03,047] - server - INFO - No data from client
[2023-07-30 09:22:03,048] - server - INFO - ### Connection 192.168.100.11:26713 closed ###

Stability

After several hours working the gateway is not stable enough, this is the error log:

Traceback (most recent call last):
File "/usr/local/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/usr/local/lib/python3.5/threading.py", line 862, in run
self._target(*self._args, **self._kwargs)
File "server.py", line 95, in client_thread
if (client_auth(connection)):
File "/usr/src/app/utils.py", line 39, in client_auth
alarm_challenge = challenge_and_key.decode().split(',')[2]
IndexError: list index out of range

I've declared all elements and zones of my system (I've four zones) in config.json.

NOKEY error

I tried using this on a Videofied XT-iP 730 panel with firmware 04.04.37.0F8F but I ran into an error with

panel

2023-05-28 15:07:22 Exception in thread Thread-2:
2023-05-28 15:07:22 Traceback (most recent call last):
2023-05-28 15:07:22   File "/usr/local/lib/python3.7/threading.py", line 926, in _bootstrap_inner
2023-05-28 15:07:22     self.run()
2023-05-28 15:07:22   File "/usr/local/lib/python3.7/threading.py", line 870, in run
2023-05-28 15:07:22     self._target(*self._args, **self._kwargs)
2023-05-28 15:07:22   File "server.py", line 95, in client_thread
2023-05-28 15:07:22     if (client_auth(connection)):
2023-05-28 15:07:22   File "/usr/src/app/utils.py", line 40, in client_auth
2023-05-28 15:07:22     alarm_challenge = challenge_and_key.decode().split(',')[2]
2023-05-28 15:07:22 IndexError: list index out of range

I added some additional logging on the response and I can see my request/responses are

IDENT,1000\x1a
IDENT,FD304015210A0241,2\x1a
VERSION,2,0\x1a
AUTH1,FB6223073E5A09E0DF9E81F7A3C832FC\x1a
NOKEY\x1a

The panel response to AUTH1 seems to be an error. I suspect it's because this panel's firmware has fixed the vulnerability documented in https://cybergibbons.com/alarms-2/multiple-serious-vulnerabilities-in-rsi-videofieds-alarm-protocol/

I'm assuming you haven't come across this before but I thought I might just document this just in case anyone else comes across a similar error.

Info

I have an alarm system supplied by Prosegur. The alarm panel is a WIP210. I would like to know technical details of the WIP210, namely:

  1. Can the WIP210 send signals both through IP and GPRS ? I want to retain the remote monitoring of my house and this requires GPRS, but I also want to use sensor status for IoT purposes
  2. The WIP210 communicates alarms only ? Or can it also communicate a movement detection when alarm panel is not armed ?
  3. I see that your code was developed for MQTT with HA. I'm using MQTT with OpenHAB. Would that be a problem ?

Currently my WIP210 is not connected to IP but I have a RJ45 socket 1 meter away, so I'm considering to ask Prosegur to come here and connect the panel to my IP installation.

Thanks

Need basic info

Hello,

I try to capture data sent by the system. I have done a basic http server and setup the alarm to push info on my server. I don't receive any data(My server is ok from another computer from my network).
According your code, the server is a basic HTTP server listen on 888, rigth?
Do you have any clue/tips I can check to receive info?

Merci

Error with newer versions of python

Hello,
Great work but seems that is not compatible with newer versions of python (3.8). I've tested with 3.5 and it works.
You have to edit Dockerfile_rpi in indicating
FROM arm32v7/python:3.5-alpine

Also username and password has to be set-up in order to work with mosquitto mqtt server:
in mqtt.py you have to add:

client.username_pw_set(username="user",password="passwd")

Rgds

How can edit config.json

Hi,
I´m exec the container in my synology but I can´t have instrucctions for edit the config.json
I try to mount /config or /data directory but didn´t find the file.
my container stop automaticaly.

date stream content
2022-09-28 16:07:39 stdout ConnectionRefusedError: [Errno 111] Connection refused
2022-09-28 16:07:39 stdout sock.connect(sa)
2022-09-28 16:07:39 stdout File "/usr/local/lib/python3.7/socket.py", line 716, in create_connection
2022-09-28 16:07:39 stdout raise err
2022-09-28 16:07:39 stdout File "/usr/local/lib/python3.7/socket.py", line 728, in create_connection
2022-09-28 16:07:39 stdout return socket.create_connection(addr, source_address=source, timeout=self._keepalive)
2022-09-28 16:07:39 stdout File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 3522, in _create_socket_connection
2022-09-28 16:07:39 stdout sock = self._create_socket_connection()
2022-09-28 16:07:39 stdout File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 1071, in reconnect
2022-09-28 16:07:39 stdout return self.reconnect()
2022-09-28 16:07:39 stdout File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 937, in connect
2022-09-28 16:07:39 stdout client.connect(cfg["mqtt_host"], cfg["mqtt_port"])
2022-09-28 16:07:39 stdout File "/usr/src/app/mqtt.py", line 16, in mqtt_start_server
2022-09-28 16:07:39 stdout mqtt_client = mqtt_start_server(cfg)
2022-09-28 16:07:39 stdout File "server.py", line 55, in start_alarm_server
2022-09-28 16:07:39 stdout start_alarm_server(cfg)
2022-09-28 16:07:39 stdout File "server.py", line 33, in main
2022-09-28 16:07:39 stdout main()
2022-09-28 16:07:39 stdout File "server.py", line 153, in 
2022-09-28 16:07:39 stdout Traceback (most recent call last):
2022-09-28 16:07:39 stdout [2022-09-28 16:07:39,632] - mqtt - INFO - No User and Password configured
2022-09-28 16:07:39 stdout [2022-09-28 16:07:39,632] - mqtt - INFO - Trying MQTT connection to 192.168.1.1:1883
2022-09-28 16:07:39 stdout [2022-09-28 16:07:39,631] - server - INFO - Socket created

New events 2,7,6

[2023-07-30 18:04:17,054] - server - INFO - ### Connected with 192.168.100.11:41049 ###
[2023-07-30 18:04:17,055] - server - INFO - Start new thread: 140683861052192
[2023-07-30 18:04:17,055] - server - INFO - Number of threads: 3
[2023-07-30 18:04:17,078] - utils - INFO - serial: E8B0502063080508
[2023-07-30 18:04:17,078] - utils - INFO - key: 50880052600010030058520060018800
[2023-07-30 18:04:17,078] - utils - INFO - Setting preshared key
[2023-07-30 18:04:17,079] - utils - INFO - Generate new challenge: B32C8B826515165FF76FFC763DEE2B00
[2023-07-30 18:04:17,297] - utils - INFO - Key response to alarm: FA3B0D970BA288165A472236875E38AF
[2023-07-30 18:04:17,860] - utils - INFO - Answer: AUTH_SUCCESS,0000,5,20230730200411,5,2,E6612124110,0,XLP090128,0,27FF
[2023-07-30 18:04:17,860] - utils - INFO - Logging successful !!
[2023-07-30 18:04:18,858] - server - DEBUG - b'FILE,2676,armstatus.json\x1a'
[2023-07-30 18:04:18,858] - server - INFO - We received FILE
[2023-07-30 18:04:19,030] - server - DEBUG - b'{"FileVersion":2,"L10nRef":"armsta1","DateTime":"2023-07-30 20:04:11","Panel":{"AccountNumber":"0000","SerialNumber":"E8B0502063080508","Anomaly.e
num":null},"GeneralConfiguration":{"PartitionActive":false,"XtenderActive":false,"Normal":{"ArmMode.enum":[1,1,1,1]},"SP1":{"Name":"SP1","ArmMode.enum":null},"SP2":{"Name":"SP2","ArmMode.enum":
null},"ExitDelay":120,"LookInPrivacyEnabled":false},"Devices":[{"DeviceIndex":2,"DeviceByTypeIndex":1,"DetectorIndex":1,"SerialNumber":"A14E1788","Name":"CAM CHIMENEA","External":false,"Perimet
ral":false,"Type.enum":6,"ArmStatus.enum":2,"Anomaly.enum":null,"DeviceDependantFields":null},{"DeviceIndex":3,"DeviceByTypeIndex":2,"DetectorIndex":2,"SerialNumber":"2399049C","Name":"CAM SALO
N2","External":false,"Perimetral":false,"Type.enum":6,"ArmStatus.enum":2,"Anomaly.enum":null,"DeviceDependantFields":null},{"DeviceIndex":4,"DeviceByTypeIndex":3,"DetectorIndex":3,"SerialNumber
":"03990472","Name":"CAM PASILLO","External":false,"Perimetral":false,"Type.enum":6,"ArmStatus.enum":2,"Anomaly.enum":null,"DeviceDependantFields":null},{"DeviceIndex":5,"DeviceByTypeIndex":4,"
DetectorIndex":4,"SerialNumber":"814E31DA","Name":"CAM BBQ","External":false,"Perimetral":false,"Type.enum":6,"ArmStatus.enum":2,"Anomaly.enum":null,"DeviceDependantFields":null},{"DeviceIndex"
:6,"DeviceByTypeIndex":5,"DetectorIndex":5,"SerialNumber":"03990287","Name":"CAM GARAJE","External":false,"Perimetral":false,"Type.enum":6,"ArmStatus.enum":2,"Anomaly.enum":null,"DeviceDependan
tF'
[2023-07-30 18:04:19,030] - server - INFO - We received json file, send ACK
[2023-07-30 18:04:19,102] - server - DEBUG - b'ields":null},{"DeviceIndex":7,"DeviceByTypeIndex":1,"DetectorIndex":6,"SerialNumber":"C108015F","Name":"PUERTA PISCINA","External":true,"Perimetra
l":true,"Type.enum":8,"ArmStatus.enum":2,"Anomaly.enum":null,"DeviceDependantFields":{"Delay":0}},{"DeviceIndex":8,"DeviceByTypeIndex":2,"DetectorIndex":7,"SerialNumber":"C11806F8","Name":"PUER
TA PORCHE","External":true,"Perimetral":true,"Type.enum":8,"ArmStatus.enum":2,"Anomaly.enum":null,"DeviceDependantFields":{"Delay":0}},{"DeviceIndex":9,"DeviceByTypeIndex":3,"DetectorIndex":8,"
SerialNumber":"C1180314","Name":"PUERTA COCINA","External":true,"Perimetral":true,"Type.enum":8,"ArmStatus.enum":2,"Anomaly.enum":null,"DeviceDependantFields":{"Delay":0}}],"Areas":[{"Name":"PL
ANTA BAJA","Delayed":true,"Devices":[2,3,7,8,9],"ArmStatus.enum":1},{"Name":"PLANTA ALTA","Delayed":false,"Devices":[4],"ArmStatus.enum":1},{"Name":"GARAJE BARBACOA","Delayed":false,"Devices":[
5,6],"ArmStatus.enum":1},{"Name":"ZONA 4","Delayed":false,"Devices":null,"ArmStatus.enum":1}],"Area24":{"Devices":null},"Partitions":[{"Name":"PA1","Areas":[1,2],"ArmStatus.enum":1},{"Name":"P
A2","Areas":[3,4],"ArmStatus.enum":1}],"StandardArmStatus.enum":2}\x1a'
[2023-07-30 18:04:24,107] - server - INFO - No data from client
[2023-07-30 18:04:24,107] - server - INFO - ### Connection 192.168.100.11:41049 closed ###
[2023-07-30 18:08:27,677] - server - INFO - ### Connected with 192.168.100.11:27909 ###
[2023-07-30 18:08:27,678] - server - INFO - Start new thread: 140683861052192
[2023-07-30 18:08:27,678] - server - INFO - Number of threads: 3
[2023-07-30 18:08:27,691] - utils - INFO - serial: E8B0502063080508
[2023-07-30 18:08:27,692] - utils - INFO - key: 50880052600010030058520060018800
[2023-07-30 18:08:27,692] - utils - INFO - Setting preshared key
[2023-07-30 18:08:27,693] - utils - INFO - Generate new challenge: 751CEBE3A6E2A2C4975DF4C18FAA26C7
[2023-07-30 18:08:27,910] - utils - INFO - Key response to alarm: FCD646EF26ED6BFA813983B1CEDE8524
[2023-07-30 18:08:28,483] - utils - INFO - Answer: AUTH_SUCCESS,0000,5,20230730200822,5,2,E6612124110,0,XLP090128,0,27FF
[2023-07-30 18:08:28,484] - utils - INFO - Logging successful !!
[2023-07-30 18:08:28,580] - server - DEBUG - b'ALARM,1932\x1a'
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00INPUT1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x1a\x04\x00OUTPUT1\x00
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x1b\x04\x00OUTPUT2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x004B4303181118011A\x00\x00\x00\x00\x01\x008C040421A14E1788\x00\x00\x00\x00\x01\x008C0405172399049C\x00\x00\x00\x00\x
01\x008C04481703990472\x00\x00\x00\x00\x01\x008C043020814E31DA\x00\x00\x00\x00\x01\x008C0427170399'
[2023-07-30 18:08:28,753] - server - DEBUG - b'STATUS\x00\x00\x00\x00FC2043000\x001932\x00\x00\x00\x00\x00\x00\x01\x00 \x1b\x1c\x00\x00\x00\x00\x00\x00\n\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x000000\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00757606\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04PLANTA BAJA\x00\x00\x00\x00\x00\x00A\x00\x00PLANTA ALTA\x00\x00\x00\x00\x00\x00A\x00\x
00GARAJE BARBACOA\x00\x00A\x00\x00 ZONA 4\x00\x00\x00\x00\x00\x00A\x00\x00\t\x01\x01TECLADO\x011\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x06\x01CAM CHIMENEA\x00\x00\x00\x00\x00\x00\x00
x02\x06\x01CAM SALON2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x06\x02CAM PASILLO\x00\x00\x00\x00\x00\x00\x00\x00\x04\x06\x03CAM BBQ\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x06\x03CA
M GARAJE\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x08\x01PUERTA PISCINA\x00\x00\x00\x00\x00\x07\x08\x01PUERTA PORCHE\x00\x00\x00\x00\x00\x00\x08\x08\x01PUERTA COCINA\x00\x00\x00\x00\x00\x00\t\x0
0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00[2023-07-30 18:08:28,781] - server - DEBUG - b'0287\x00\x00\x00\x00\x01\x0080023916C108015F\x00\x00\x00\x00\x01\x0080020417C11806F8\x00\x00\x00\x00\x0
1\x0080022920C1180314\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00
\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00
x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x0000000000000000
00\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x000000000000000000\x00\x00\x00\x00\x00\x00\xff\x01\x05\x01\x01\x00\x00\x00\x00\x1a'
[2023-07-30 18:08:28,860] - server - DEBUG - b'EVENT,1,7,6\x1a'
[2023-07-30 18:08:28,860] - server - INFO - We received EVENT: EVENT,1,7,6
[2023-07-30 18:08:28,861] - server - INFO - Received update from alarm (alarm alert !) update MQTT / source of event (Sensor noid 7) / zone of event (BBQ y Garaje)
[2023-07-30 18:08:28,960] - server - DEBUG - b'EVENT,2,7,6\x1a'
[2023-07-30 18:08:28,961] - server - INFO - We received EVENT: EVENT,2,7,6
[2023-07-30 18:08:28,961] - utils - ERROR - unable to find event type (EVENT,2,7,6)
Traceback (most recent call last):
File "/usr/src/app/utils.py", line 68, in find_event_type
event_type = cfg["mapping_events"][event_array[1]]
KeyError: '2'
[2023-07-30 18:08:29,061] - server - DEBUG - b'EVENT,1,3,2\x1a'
[2023-07-30 18:08:29,061] - server - INFO - We received EVENT: EVENT,1,3,2
[2023-07-30 18:08:29,062] - server - INFO - Received update from alarm (alarm alert !) update MQTT / source of event (Sensor noid 3) / zone of event (Planta Baja)
[2023-07-30 18:08:29,160] - server - DEBUG - b'EVENT,1,2,1\x1a'
[2023-07-30 18:08:29,160] - server - INFO - We received EVENT: EVENT,1,2,1
[2023-07-30 18:08:29,161] - server - INFO - Received update from alarm (alarm alert !) update MQTT / source of event (Sensor noid 2) / zone of event (Planta Baja)
[2023-07-30 18:08:29,260] - server - DEBUG - b'EVENT,2,3,2\x1a'
[2023-07-30 18:08:29,260] - server - INFO - We received EVENT: EVENT,2,3,2
[2023-07-30 18:08:29,261] - utils - ERROR - unable to find event type (EVENT,2,3,2)
Traceback (most recent call last):
File "/usr/src/app/utils.py", line 68, in find_event_type
event_type = cfg["mapping_events"][event_array[1]]
KeyError: '2'
[2023-07-30 18:08:29,360] - server - DEBUG - b'EVENT,2,2,1\x1a'
[2023-07-30 18:08:29,360] - server - INFO - We received EVENT: EVENT,2,2,1
[2023-07-30 18:08:29,361] - utils - ERROR - unable to find event type (EVENT,2,2,1)
Traceback (most recent call last):
File "/usr/src/app/utils.py", line 68, in find_event_type
event_type = cfg["mapping_events"][event_array[1]]
KeyError: '2'
[2023-07-30 18:08:29,460] - server - DEBUG - b'LOG,152,20\x1a'
[2023-07-30 18:08:29,571] - server - DEBUG - b'LOG\x00\x00\x00\x00\x00\x00\x00FC2043000\x00152\x00\x00\x00\x00\x00\x00\x00\x14\x00\xd7y\x8a\x1b\x1c\x00p\xd7yJ\xe4\x05J\xd7yJ \x03C\xd7yJ \x00k\x
d7y*t\x02m\xd7y\x1b\x1a\xc0\x03m\xd7y\x1b\x1a\x00\x00S\xd7y\x1b\x1a\x00\x02P\xd7y\x1b\x1a\x00\x00S\xd7y\x1b\x1a\x00\x03P\xd7y\x1b\x1a\x00\x07m\xd7y\x1b\x1a\x00\x07P\xd7\xf9\xa9\x8b\x00b\xd7\xf9
\xa9s\x01?\xd7\xf9\x89s\x01\x86\xd7\xf9\x89S\x00k\xd7\xf9Y/\x00b\xd7\xf9I\xef\x00k\xd7\xf9\x19\xcb\x00b\xd7\xf9\x19\xbf\x1fl\x1a'
[2023-07-30 18:08:30,564] - server - DEBUG - b'FILE,2676,armstatus.json\x1a'
[2023-07-30 18:08:30,564] - server - INFO - We received FILE
[2023-07-30 18:08:30,739] - server - DEBUG - b'{"FileVersion":2,"L10nRef":"armsta1","DateTime":"2023-07-30 20:08:23","Panel":{"AccountNumber":"0000","SerialNumber":"E8B0502063080508","Anomaly.e
num":null},"GeneralConfiguration":{"PartitionActive":false,"XtenderActive":false,"Normal":{"ArmMode.enum":[1,1,1,1]},"SP1":{"Name":"SP1","ArmMode.enum":null},"SP2":{"Name":"SP2","ArmMode.enum":
null},"ExitDelay":120,"LookInPrivacyEnabled":false},"Devices":[{"DeviceIndex":2,"DeviceByTypeIndex":1,"DetectorIndex":1,"SerialNumber":"A14E1788","Name":"CAM CHIMENEA","External":false,"Perimet
ral":false,"Type.enum":6,"ArmStatus.enum":2,"Anomaly.enum":null,"DeviceDependantFields":null},{"DeviceIndex":3,"DeviceByTypeIndex":2,"DetectorIndex":2,"SerialNumber":"2399049C","Name":"CAM SALO
N2","External":false,"Perimetral":false,"Type.enum":6,"ArmStatus.enum":2,"Anomaly.enum":null,"DeviceDependantFields":null},{"DeviceIndex":4,"DeviceByTypeIndex":3,"DetectorIndex":3,"SerialNumber
":"03990472","Name":"CAM PASILLO","External":false,"Perimetral":false,"Type.enum":6,"ArmStatus.enum":2,"Anomaly.enum":null,"DeviceDependantFields":null},{"DeviceIndex":5,"DeviceByTypeIndex":4,"
DetectorIndex":4,"SerialNumber":"814E31DA","Name":"CAM BBQ","External":false,"Perimetral":false,"Type.enum":6,"ArmStatus.enum":2,"Anomaly.enum":null,"DeviceDependantFields":null},{"DeviceIndex"
:6,"DeviceByTypeIndex":5,"DetectorIndex":5,"SerialNumber":"03990287","Name":"CAM GARAJE","External":false,"Perimetral":false,"Type.enum":6,"ArmStatus.enum":2,"Anomaly.enum":null,"DeviceDependan
tF'
[2023-07-30 18:08:30,739] - server - INFO - We received json file, send ACK
[2023-07-30 18:08:30,808] - server - DEBUG - b'ields":null},{"DeviceIndex":7,"DeviceByTypeIndex":1,"DetectorIndex":6,"SerialNumber":"C108015F","Name":"PUERTA PISCINA","External":true,"Perimetra
l":true,"Type.enum":8,"ArmStatus.enum":2,"Anomaly.enum":null,"DeviceDependantFields":{"Delay":0}},{"DeviceIndex":8,"DeviceByTypeIndex":2,"DetectorIndex":7,"SerialNumber":"C11806F8","Name":"PUER
TA PORCHE","External":true,"Perimetral":true,"Type.enum":8,"ArmStatus.enum":2,"Anomaly.enum":null,"DeviceDependantFields":{"Delay":0}},{"DeviceIndex":9,"DeviceByTypeIndex":3,"DetectorIndex":8,"
SerialNumber":"C1180314","Name":"PUERTA COCINA","External":true,"Perimetral":true,"Type.enum":8,"ArmStatus.enum":2,"Anomaly.enum":null,"DeviceDependantFields":{"Delay":0}}],"Areas":[{"Name":"PL
ANTA BAJA","Delayed":true,"Devices":[2,3,7,8,9],"ArmStatus.enum":1},{"Name":"PLANTA ALTA","Delayed":false,"Devices":[4],"ArmStatus.enum":1},{"Name":"GARAJE BARBACOA","Delayed":false,"Devices":[
5,6],"ArmStatus.enum":1},{"Name":"ZONA 4","Delayed":false,"Devices":null,"ArmStatus.enum":1}],"Area24":{"Devices":null},"Partitions":[{"Name":"PA1","Areas":[1,2],"ArmStatus.enum":1},{"Name":"P
A2","Areas":[3,4],"ArmStatus.enum":1}],"StandardArmStatus.enum":2}\x1a'
[2023-07-30 18:08:30,845] - server - DEBUG - b'REQACK,0\x1a'
[2023-07-30 18:08:30,845] - server - INFO - We received REQACK, send simple ACK
[2023-07-30 18:08:35,851] - server - INFO - No data from client

support: small questions about video feeds

I just acquired one of these devices and I'm toying with your project ( that is great !!! ). The movement sensors also have a video camera. Are the video feeds accessible somewhere ?

Delays of Self monitoring (Videofied App)

Hello,
Since I have enabled monitoring to be able to use your container and see the events by mqtt, I have a slowdown in the sending of notifications to the videofied app, for minutes.
In addition, if after causing a tamper, I cause another on another device, it also takes minutes to notify, not only to the videofied app, but internally in the container debug, also or even loses the second event if a few seconds pass from one event to another.
I get the feeling that the alarm is waiting for some communication from the "central monitoring" indicating that it has been processed to continue sending the rest of the events. But this comment is pure speculation, I have no proof of this.

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.