System Architecture


The nOS is highly performant, locally independent and connected via cloud.

The modular approach of nomos Engine, nomos Infrastructure and nomos Interface allows efficient connectivity across all Industries.

The local brain to connect all devices, elevating them into one consistent protocol, handle logics and ensuring the uninterrupted execution of matching event and our own nomos message bus keeps everything in sync with zero latency and allows modular accessibility locally, via could or through the nomos realtime API.

diagramms_compatibility_logos_v2

System Architecture

nomos-System-Architecture1


Engine

The Engine is designed as a Daemon
In Unix and other multitasking computer operating systems, a daemon is a computer program that runs as a background process, rather than being under the direct control of an interactive user. The term was coined by the programmers of MIT. They took the name from Maxwell’s demon, a famous thermodynamic experiment that constantly works in the background, sorting molecules.‏

diagramms_Protocol-Engine-v4

Excessive and complex protocols can be unified with our software engine
The example of a Sony TV over LAN explains the trick how to convert the dynamical volume to decimal usable scaling in order to respond with 0-100 percents from the slider.
In this case the original HEX-String 06a0520003004A00 gets elevated and converted:

[COMMANDS];
SETVOLUME;06a052000300\#00;;{%*0.74,%*1,%HEX2} // values from 00 to 4A – shifted to nomos-values 0 – 100″

in our protocol we simply send <TV><SETVOLUME=23></TV> to set the volume to a level of 23%. Also on the other side of the 2-way communication is the mapping of the dynamical feedbacks back into percent values – this generates a feedback event from the daemon: <TV><VOLUME=23></TV>:

[MAPPINGS];
0206A892000300\##;VOLUME;;;{%/0.74} // values from 00 to 4A – shifted to nomos-values 0 – 100”



Open protocol daemon architecture


open protocol daemon architecture

An open, versatile and lightweight protocol that has the power of creating a standard.

open-protocol-daemon

LINUX minimal recommendation:

256MB RAM, 500MHz processor, functional toolchain, fixed HW-Serial and 613KB free space…




Command Server Example (CSV)


prowl.csv

//Systemname, Manufacturer, TYP: PROWL Notification
//Comunications Parameter: HTTPS Port 443
//Creator: @nomos-system.com

[CONFIG];
ACTIVE;true
SERVERIP;api.prowlapp.com
SERVERPORT;443
SERVERMODE;ASCII
SERVERTIMEOUT_IN_MS;1000
SERVERPROTOCOL;HTTPS
//USERNAME;
//PASSWORD;

[COMMANDS];
// sending commands:
// {nomos-Command};{Protocolsequence};{Different Command Timeout};{Parameter}
KEY;/publicapi/add?apikey=DUMMY_KEY_88746012de49e5b4e7aa88cf0e74416605a82af9
NAME;&application=\#
EVENT;&event=\#
PRIORITY_VERYLOW;&priority=-2
PRIORITY_MODERATE;&priority=-1
PRIORITY_NORMAL;&priority=0
PRIORITY_HIGH;&priority=1
PRIORITY_EMERGENCY;&priority=2
TEXT;&description=\#

[MAPPINGS];
// receiving commands:
// {Protocol-Match};{nomos-description};{local Action};ONCHANGE;{Match-Argument}
\*;ERRORMESSAGE
success code=”200″;MESSAGE_SENT
remaining=”\*”;MESSAGES_REMAINING

avr.csv

//Systemname, Manufacturer, TYP: AV Receiver, SONY, DA1800ES
//Communication Parameters: 9600,N,8,1,none
//Creator: @nomos-system.com

//CLASS: AVR
//NAME: SONY, ES AV Receiver
//MANUFACTURER: Sony
//MODEL: DA1800ES_RS_232_ALL_CODES

// Notes:
//
// * This version contains all Sony Main Zone and Zone 2 Input codes. Many may not work on your model.
//
//
// * Send control command after 20 seconds of power on.
// * Strictly keep to send next command after receiving answer response from AVR.
// * Set the command interval to 500ms or more.
// *Configure ‘Network Standby’
// *”ON” Use this setting when using the AVR Connected in a network.
// *”OFF” (default) Use this setting when not using the AVR connected in a network.
// *This setting is reducing the power consumption in the standby mode.
// *Configure ‘External Control’
// *”ON” (default) Use this setting when using command over IP.

[CONFIG];
DEBUG;NO;
SERVERIP;LOCAL;
SERVERPORT;AUTO;9600;8;n;1;
SERVERPROTOCOL;SERIAL;
SERVERMODE;HEX;
SERVERTIMEOUT_IN_MS;NONE;
//SERVERTYPE;SUM;
SPACING;500;
MATCHING;NORMAL;

[COMMANDS];
VOLUME_SET;06a052000300\#00;;{%*0.74,%*1,%HEX2} // values from 00 to 4A – shifted to nomos-values 0 – 100″
POWER_OFF;0202A0203E;
ON;0202A0213D;
ENTER;0202A0223C;
MEMORY;0202A0233B;
MENU;0202A02B33;
DISPLAY;0202A02C32;
UP;0202A0302E;
DOWN;0202A0312D;
LEFT;0202A0332B;
RIGHT;0202A0322C;
ENTER;0202A0342A;
RETURN;0202A03529;
OPTION;0202A03628;
PLAY;0202A03925;
STOP;0202A03A24;
PAUSE;0202A03B23;
LAST;0202A03C22;
NEXT;0202A03D21;
REW;0202A03E20;
FF;0202A03F1F;
GUI_ON;0202A02836;
GUI_OFF;0202A02935;
GUI_TOGGLE;0202A02A34;
INPUT+;0202A04A14;
INPUT-;0202A04B13;
HDMI_OUT;0202A04519;
HDMI_ZONE2_OUT;0202A04717;
SLEEP-SET;0202A050E;
TUNE+;0202A10558;
TUNE-;0202A10657;
GET_VOLUME;0202A092CC;
_____etc.

[MAPPINGS];
Error \* :\%;ERROR;
0206A892000300\##;VOLUME;;;{%/0.74} // values from 00 to 4A – shifted to nomos-values 0 – 100″

commandserver.csv

//Systemname, Manufacturer, TYP:
//Comunications Parameter:
//Creator:

[CONFIG];
ACTIVE;YES // Command-Server activation {“YES”/”NO”}
DEGBUG;YES // Extended Protocol-Emission activation {“YES”/”NO”}
SERVERIP;192.168.1.200 // Server {IP} or {“LOCAL”}
SERVERPORT;6000 // Server Port or Serial-Interface
//LOCALPORT;
//SERVERTYPE
SERVERPROTOCOL;UDP // {“UDP”}/{“TCP”}/{“HTTP”}/{“HTTPS”}/{“SERIAL”}
SERVERMODE;ASCII // {“ASCII”}/{“HEX”}/{“BIN”}
//SERVERTIMEOUT;1 // Timeout {0..3600} Seconds or {“NONE”}
SERVERTIMEOUT_IN_MS;1000 // same as SERVERTIMEOUT, but in ms
//SERVERTYPE; // Checksum Calculator,{“RUS”}/{“SUM”}/{“SUM=”(INDEX)}
//CMDPREFIX;cmd // Prefix for each command
//CMDSUFFIX;\x0a\x0d // Suffix for each command
//MAPPREFIX;reply // Prefix for each match
//MAPSUFFIX;\x0a\x0d // Suffix for each match
//SEQUENCEPREFIX
//SEQUENCESUFFIX
//STARTDELIMITER
//ENDDELIMITER
MATCHING;FULL // Matching-Mode: {“FULL”}/{“NORMAL”}
//SPACING;50 // defines the minimum electrical spacing between 2 Sequences {t in ms}
//CLIENTIP;192.168.1.51 // further Client-IP’s who need to receive Replies too
//CLIENTPORT;5000 // further Client-Port
//USERNAME;user // HTTP or HTTPS: Username
//PASSWORD;pass // HTTP or HTTPS: Passwort
//ENCRYPTION;
//EXPORT;NO

[COMMANDS];
// sending commands:
// {nomos-Command};{Protocolsequence};{Different Command Timeout};{Parameter}

[MAPPINGS];
// receiving commands:
// {Protocol-Match};{nomos-description};{local Action};ONCHANGE;{Match-Argument}