====== RMS module work description ====== [[https://jooby.eu/rdc-en/|{{:ru:rdc:elster.png?nolink&200}}]] [[https://jooby.eu/rdc-en/|{{:ru:rdc:metrix.png?nolink&200}}]] [[https://jooby.eu/rdc-en/|{{:ru:rdc:samgas.png?nolink&200}}]] The modules are made in different cases. The functioning algorithm is identical. ==== Jooby Development ==== * [[https://github.com/jooby-dev|API for interacting with Jobby devices. Other documentation]] * [[https://github.com/jooby-dev/jooby-docs|Message documentation]] * [[https://github.com/jooby-dev/jooby-codec|Message encoders/decoders]] * [[https://jooby-dev.github.io/jooby-gui/|Message encoders/decoders GUI (Demo)]] * [[https://github.com/jooby-dev|API for interacting with Jobby devices. Other documentation]] * [[https://github.com/jooby-dev/jooby-docs/blob/main/docs/analog/commands/readme.md|Command and Parameter Examples]] ===== Beginning of work ===== It is necessary to know the module factory parameters to instal module in NS correctly (they are available in specification): * Activation method in the LoraWAN network - **ABP** [[https://wiki.jooby.eu/en/lorawan_spec_device_activation#:~:text=Edit-,ABP%20%2D%20Activation%20By%20Personalization,-%E2%80%9CActivation%20by%20Personalization|(Activation by personalization)]] or **OTAA** [[https://wiki.jooby.eu/en/lorawan_spec_device_activation#:~:text=Edit-,OTAA%20%2D%20Over%2DThe%2DAir%20Activation%20join%20procedure,-The%20join%20procedure|(Over the Air Activation)]] * Keys **APPSKEY[16]**, **NETSKEY[16]** - **ABP** or **APPKEY[16]** - **OTAA** ===== Indication ===== LED indication: * LED’s short flash (20ms) indicates press/release button * Increasing the pulse counter is also accompanied by LEDs short flash (20ms) * LoraWAN module activation in the network is confirmed by a series of seven LED’s flashes. ===== Time and date ===== The Radio module and server times need to be synchronized. It is necessary to correct the modulating time when it leaves the server. Possible deviation no more than 30 seconds. [[https://github.com/jooby-dev/jooby-docs/blob/main/docs/analog/basics.md#device-time-management|Device time management]] The time is transmitted as a 4-byte counter. This is the time in seconds since the year 2000. The module time must be synchronized with the server time. The time can be set using the commands: **SET_TIME** and **CORRECT_TIME**. The **SET_TIME** command is for initial time setting and for adjustments greater than +/-128 seconds. Adjusting the time backwards may result in the loss of hourly data. Further, the server must correct the module time if it deviates from the server time. The recommended allowable time deviation is no more than 30 seconds; if it is exceeded, the time is corrected using the **CORRECT_TIME** command. ===== Battery ===== Once a day, the module measures the battery parameters: battery voltage without load and battery voltage under resistor load (150 Ohm for modules on WLE). These data and the calculated internal resistance value are transmitted once a day also. Based on the measurement results, it is possible to start the battery depassivation process. In this case, the **DEPASS_DONE** event is logged. ===== Magnetic field sensor ===== The module has two magnetic field sensors. The first sensor records gas consumption. In the gas meter, a magnet is installed in one of the rings of the mechanism. The module fixes the number of revolutions of this ring. The pulse counter in the module is only incremented, it is not possible to reset the pulse counter. The increase of the pulse counter is accompanied by a short flash of the LED (20 ms). The pulse counter is an unsigned 4-byte number. When the counter overflows, it starts counting from “0”. This generates a **COUNTER_OVER** event and sends a **NEW_EVENT** frame with this event. The second sensor is used to fix the harmful effects of the magnetic field on the gas meter. When the impact lasts more than 20 seconds, a **NEW_EVENT** frame is sent to the server with a notification about the magnetic impact **MAGNIT_ON**. After removing the effect of the magnet, a NEW_EVENT frame is sent to the server about the termination of the effect of the magnetic field **MAGNIT_OFF**. With a short-term exposure to a magnetic field (2-20 sec), the current pulse counter data **GET_CURRENT** for **HARD_TYPE 1,2** and **GET_CURRENT_MUL** for **HARD_TYPE 12** are sent to the server. ===== Activation/Deactivation ===== Activation occurs after the button is in the "clamped" state for 20 seconds. This happens when the module is installed in the gas meter. The sensor is polled continuously. The **ACTIVATION** mode is confirmed by LED indication - 7 LED flashes with a period of 50 ms. ACTIVATION means that the module will start sending data frames over the radio path. Prior to activation, the radio path is turned off. In the ACTIVATION mode, **INSERT** and **ACTIVATE** events occur, **NEW_EVENT** frames with **INSERT** and **ACTIVATE** events are transmitted, and the time of the event is transmitted in the data of these events. The **GET_CURRENT** command also transfers the current pulse counter data. The **DEACTIVATION** mode is activated when the module is removed from the gas meter (the button is depressed for more than 30 seconds). A **NEW_EVENT** frame is sent to the server with events - **REMOVE** and **DEACTIVATE** (the event time is transmitted in the data of these events) and the current data of the pulse counter is transmitted with the **GET_CURRENT** command. ===== Consumption data ===== Once activated, the module sends consumption data regularly. By default, the module transmits hourly consumption data at an interval of about 4 hours + a pseudo-random component ranging from 0 to 17 minutes. The frequency of sending data can be changed, but the period cannot be less than 10 minutes and more than 36 hours. You can set the type of data to be transferred. It is possible to transfer current, hourly, daily data. It is also possible to transmit hourly and daily data simultaneously (in one frame). To select the type of data to be transmitted, use parameter 5 (Type of data to be output). Hourly data is stored in the archive, the maximum archive depth is 6 months. Daily consumption data is also stored in the archive, the maximum depth is 2 years. The depth of the archives does not change configurationally. ===== Absolute data. Commands, Parameters ===== [[https://github.com/jooby-dev/jooby-docs/blob/main/docs/analog/commands/readme.md|Command and Parameter Examples]] The device supports absolute data mode. This mode is set so that the current readings of the meter can be easily obtained from the data transmitted by the device. In this mode, the device uses a different set of commands to communicate consumption data. To set the initial readings of the meter, you must use the //impulse coefficient - IPK//, which is a parameter of the meter and indicates the amount of resource per pulse. To set the absolute data transmission mode, it is necessary to transfer the impulse coefficient IPK and the initial readings of the meter, expressed taking into account the //impulse coefficient// ''INITIAL_METER_DATA = INITIAL_CONSUMPTION/IPK''. As well as the current value of the pulse counter. The value of the pulse counters can be obtained at the moment of activation or initiate the transfer of current data using a slider, a magnet, pressing a button, setting a connector (tamper closing). If necessary, these operations can be repeated. ===== Events ===== [[https://github.com/jooby-dev/jooby-docs/blob/main/docs/analog/basics.md#device-events|Device events]] All events are recorded in the archive. Archive capacity - not less than 256 events and not more than 512 events. The event log records the time of the event, the event ID, and the **LAST_EVENT** sequence number. The event number is incremented with each entry. The event number is passed to the server with the **LAST_EVENTS** command, which is added to every UPLINK frame sent without a request. There is no priority for messages in the archive. Events are recorded in a cycle. Archives can be requested from the most recent to the oldest and from a specific time. ===== Commands ===== There are 2 types of command direction: * ''downlink'' - request (sent from server to device) * ''uplink'' - response or event (sent from device to server) * [[https://github.com/jooby-dev/jooby-docs/tree/main/docs/analog/commands#downlink-commands|Downlink commands]] * [[https://github.com/jooby-dev/jooby-docs/tree/main/docs/analog/commands#uplink-commands|Uplink commands]] ===== Parameter types ===== [[https://github.com/jooby-dev/jooby-docs/blob/main/docs/analog/parameter-types.md#parameter-types|Description of parameter types]]