Content
-
Sockets
-
Introduction
The protocol between server and client is JSON-Format based.
To be able to request data or to send a command the client has to be authentificated.
After the authentification every JSON-Command from cliend must have a Token attribute. If the Token is wrong the connection gets closed.
The server listens to the Action attribute - if a valid action is recogniced it gets executed.
-
Authentification
Login Information
Username: TestUser
Password: Test
Client sends it's username "TestUser"
{ "Username": "f6c1788e5bc736fb2b6265a39c15178ded2deac2bd6cd4d27fc5185a9ebbdfd3165d1aad078619184b0fcedbc6b29aa48fd03753788b6758570f60f0beec30e0" }
Client receives random hash"
{ "UsernameSalt": "ec4de89a840aebf97c7757dc0b0ef75efe65b315115d0895686e32c313f27250a8c24f4b53d1645ab34f645c55cda96fc596a8c2afe9536f7691033363bfcc21" }
Client returns with SHA512(UsernameSalt+SHA512(Password)
{ "EndHash": "40bf442a2979e327522e596f2a116f10fc8cfee79317b98929f63e92f6a9fce8076da37f69b2481278c01ab04b3dd1db51f9a432e817f4a9299b6bdbb2c8689b" }
Client receives random Token associated to this socket."
{ "Token": "d4bdd55347543aba8bdab7bda807c11dfe0f39743c4842590c9840d578f1bc970d400fd007d7780e579cbad099566c3caddfeeb01f3beb0e4ce978debf8656ae" }
-
Commands
-
VirtualPlugChanged
VirtualPlugChanged forces each value of an array of values to a certain plug or variable for exactly one cycle
Clients wants 1234.DI#01 to change to 1 and than to 0.
{ "Action": "VirtualPlugChanged", "PlugID": "1234.DI#01", "Values": "[1,0]" }
-
StatusRequest
The server returns the status of the requested plugs.
Clients wants 1234.DI#01 to change to 1 and than to 0.
{ "Action": "StatusRequest", "PlugIDs": [ "1234.DI#01", "1234.DI#02", "1234.DQ#01", "1234.DQ#02" ] }
-
Restart
The server will reset everything and reload the configuration file.
Clients wants 1234.DI#01 to change to 1 and than to 0.
{ "Action": "Restart", }
-
VirtualPlugChanged
-
Notifications
-
PlugStatus
The server notificates the client with the status information of certain plugs
Server tell client the values of 1234.DI#01, 1234.DI#02, 1234.DQ#01, 1234.DQ#02.
{ "Action": "PlugStatus", "Plugs": { "1234.DI#01": {"Value": "0"}, "1234.DI#02": {"Value": "1"}, "1234.DQ#01": {"Value": "1"}, "1234.DQ#02": {"Value": "0"} } }
-
Status
The server notificates the client that the command was executed without a certain request.
Server tell client the values of 1234.DI#01, 1234.DI#02, 1234.DQ#01, 1234.DQ#02.
{ "Status": "OK" }
-
PlugStatus
-
Websocket
Login Information
Port: 8765
Password: Test
-
Standard-Socket
Login Information
Username: TestUser
Password: Test
-
Introduction
-
Serial Connection
Connection Information
Baud: 57600
Data Bit: 8
Stop Bit: 1
Parity Bit: None
Command End: \r\n
- Model
-
Requests
- Get Alive Status Request from Main Module
Check if the Main Module of Rasmatin Network is answering
Command:
Hello RaSmatin!
Answer:
Hello!
- Get Value of any Plug
Command Syntax:
[module id].[plug type]#[number]=?
Example: Get value of digital output plug numer 1 of module 1234.
1234.DQ#01=?
Examlpe Answer:
1234.DQ#01=1
Example: Get value of digital input plug number 5 of module 1234.
1234.DI#05=?
Examlpe Answer:
1234.DI#05=1
Example: Get value of analog input plug number 2 of module 1234.
1234.AII#02=?
Examlpe Answer:
1234.AI#02=823
- Get Hardware Infos of the Module
Returns information of the hardware. (e.g. Plug Types and number of plugs)
Command Syntax:
[module id].ModulHardware
Command:
1234.ModulHardware
Answer:
1234.12DI;12DO;4AI;CAN;Clock;RS485
- Get Informations of the Module (Serial, ID, Description, ...)
Returns information of the hardware. (e.g. Plug Types and number of plugs)
Command Syntax:
[module id].ModulInfo
Command:
1234.ModulInfo
Answer:
1234.ID=-001;Serial=00100;Name=;Description=MainModule;config
- Get Software Version
Returns the software version of the module.
Command Syntax:
[module id].Version
Command:
1234.Version
Answer:
1234.RaControl V0.02 2016-07-07
- Get Hardware Status
Returns the values of all implemented plugs
Command Syntax:
[module id].Get HW-Status!
Command:
1234.Get HW-Status!
Answer:
1234.DI#01=1 1234.DI#02=0 1234.DI#03=0 1234.DI#04=0 1234.DI#05=0 1234.DI#06=0 1234.DI#07=0 1234.DI#08=0 1234.DI#09=0 1234.DI#10=0 1234.DI#11=0 1234.DI#12=0 1234.DQ#01=0 1234.DQ#02=0 1234.DQ#03=0 1234.DQ#04=0 1234.DQ#05=0 1234.DQ#06=0 1234.DQ#07=0 1234.DQ#08=0 1234.DQ#09=0 1234.DQ#10=0 1234.DQ#11=0 1234.DQ#12=0 1234.AI#01=3.04 1234.AI#02=2.99 1234.AI#03=0.00 1234.AI#04=2.99
- Relay Test
Switches on and off all digital outputs for 100ms to check if they are working fine.
Command Syntax:
[module id].RELAY_TEST
Command:
1234.RELAY_TEST
Answer:
1234.Do RELAY_TEST!
- Commands
- Reset
Command Syntax:
[module id].Reset
Software reset of the module
1234.Reset
Answer:
1234.Do Reset!
- Set/Reset digital output plug
Set/Reset of a digital output plug.
Command Syntax:
[module id].DQ#[number]=[0|1]
Set digital output plug number 3 of Module 1234 to 1.
1234.DQ#03=1
- Set Molule Serial Number
Set the module serial number. This number has to be unique for each module within an RaSmatin network.
Command Syntax:
[module id].SetModul_Serial=[yourModuleID]
Set module serial number from 100 to 1234.
100.SetModul_Serial=1234
- Set Molule Identification Number
Set the module identification number.
Command Syntax:
[module id].SetModul_ID=[yourModuleID]
Set module ID from 100 to 123.
100.SetModul_ID=123
- Set Molule Name
Set the internal name of the module.
Command Syntax:
[module id].SetName=[yourModuleName]
Set module name to "MAIN MODULE" of moule 1234.
1234.SetName=MAIN MODULE
- Set Molule Description
Set the internal description of the module.
Command Syntax:
[module id].SetDescription=[yourModuleDescription]
Set module description to "Solar Control Module" of moule 1234.
1234.SetDescription=Solar Control Module
- Get Value of any Plug
- Get Alive Status Request from Main Module