Eastron SDM230 SDM630-LoRa - LoRaWAN Integration

Scarica in formato docx, pdf o txt
Scarica in formato docx, pdf o txt
Sei sulla pagina 1di 4

Eastron SMD630/230 Lora

Questa è una breve guida alla configurazione ed integrazione dei contatori di energia
elettrica LoraWAN di Eastron.
La guida si divide in questo modo:

● Come funziona il misuratore


● Settaggi necessari per comunicazione Lora
● Decodifica dei messaggi
● Configurazioni lato piattaforma Lora su web

Come funziona il misuratore


Il misuratore Eastron SDM230 è un misuratore in linea per carichi monofase, mentre il
modello SDM630 è un misuratore dotato di collegamenti con trasformatori di corrente a 5A
in ingresso (*A/5A). Il misuratore SDM630 ovviamente deve essere provvisto di pinze
amperometriche adeguate per il funzionamento, mentre per l’SDM230 basta installarlo sul
cavo di alimentazione.
Le configurazioni per i due dispositivi avvengono tramite due diversi menu: uno per
l’installatore ed uno da amministratore.

● password installatore: 1000


● password admin: 6308

A questa pagina è presente il manuale per il device, con la guida alle configurazioni delle
pinze e all’accesso alle varie sezioni dei menu:
https://www.eastroneurope.com/images/uploads/products/manuals/Eastron_Europe_SDM63
0MCT-LoraWAN_user_manual.pdf
Scheda tecnica: https://aphex-metering.com/wp-content/uploads/2022/01/SDM630MCT-
LoRa_Series_Datasheet.pdf

Settaggi necessari per comunicazione Lora


La maggior parte dei parametri sono visualizzabili da qui: https://aphex-metering.com/wp-
content/uploads/2022/01/Eastron_Europe_SDM630MCT-LoraWAN_user_manual.pdf
Cosa è necessario avere per configurare il device su un gateway Lora? Sono necessarie le
seguenti cose:

1. Modalità di connessione tramite OTAA (capitolo 4.3.2 Join Mode:OTAA/ ABP del
manuale)
2. Modalità AUTO attiva (capitolo 4 - AUTO del manuale). Suggerirei 20 minuti di
intervallo di comunicazione
3. Accesso ai valori di DEVEUI, APPEUI, APPKEY

I valori di DEVEUI, APPEUI, APPKEY sono accessibili dal menu di amministrazione.


NOTA: i menu DEVEUI ed APPEUI riportano il valore reale dell’oggetto. APPKEY invece
riporta generalmente un esadecimale del tipo XXXXXX00000000000000000000XXXXXX
dove X è un numero esadecimale da 1 ad F mentre gli 0 non sono veramente 0. Questi 0
sono in realtà delle maschere che vengono mostrate dopo il salvataggio del valore e quindi
sui misuratori di default non siamo sicuri della APPKEY di default. Dovrebbe essere
112233445566778899AABBCCDDXXXXXX ma è da verificare. Comunque sia basta
cambiare i valori a quello che si preferisce e le modifiche vengono salvate anche se non
sono mostrate al successivo rientro nel menù.

Decodifica dei messaggi


I messaggi arrivano di default in formato esadecimale sui canali Lora.
I messaggi hanno questo tipo di formato:
001435FC 01 14 443A424E 40E7A876 42C5DA1D 439449DB 43AEC439 3B B2

I messaggi dovrebbero avere questo formato, di default.

Byte Description Data Example Decoded


Range Type Hex

0-3 Serial Number UINT32 001435FC 1324540


4 Message Fragment Number (always 1 for default UINT8 1 1
configuration)

5 Number of Parameter Bytes in this Payload (always 20 UINT8 14 20


for default configuration)

6-9 Total Energy FLOAT 443A424E 745036


10-13 Frequency FLOAT 40E7A876 7.239314
14-17 Total Power Factor FLOAT 42C5DA1D 98926
18-21 Maximum Total System Power Demand FLOAT 439449DB 296577
22-25 Total Current FLOAT 43AEC439 349533
26-27 Modbus Checksum - F792 -

Il dispositivo è configurabile in fase di ordine per mandare messaggi anche di tipo diverso,
ma non me ne curerei ad ora. Il parser del messaggio che abbiamo trovato in giro per
l’internet è di questo tipo:

// v3 to v4 compatibility wrapper_


function decodeUplink(input) {
return {
data: Decode(input.fPort, input.bytes, input.variables)
};
}

function intFromBytes(x) {
var val = 0;
for (var i = 0; i < x.length; ++i) {
val += x[i];
if (i < x.length - 1) {
val = val << 8;
}
}
return val;
}

function bytesToFloat(bytes) {
var bits = bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3];
var sign = (bits >>> 31 === 0) ? 1.0 : -1.0;
var e = bits >>> 23 & 0xff;
var m = (e === 0) ? (bits & 0x7fffff) << 1 : (bits & 0x7fffff) | 0x800000;
var f = sign * m * Math.pow(2, e - 150);
return parseFloat(f);
}

// Decode decodes an array of bytes into an object._


// - fPort contains the LoRaWAN fPort number_
// - bytes is an array of bytes, e.g. [225, 230, 255, 0]_
// - variables contains the device variables e.g. {"calibration": "3.5"} (both the
key / value are of type string)_
// The function must return an object, e.g. {"temperature": 22.5}_

function Decode(fPort, bytes, variables) {


var decoded = {};

if (bytes[4] == 01) {

decoded.SERIAL_NO = intFromBytes(bytes.slice(0, 4));


_ // Serial number_
decoded.INSTANT_WATT = (bytesToFloat(bytes.slice(06, 10)));
_ // Instant W read_
decoded.KWH = (bytesToFloat ** (bytes.slice(10, 14)));
_ // Total Kwh_
decoded.CURRENT = (bytesToFloat(bytes.slice(14, 18)));
_ // Always zero?_
decoded.KWH_2 = (bytesToFloat ** (bytes.slice(18, 22)));
_ /// Absolute Kwh_
decoded.KVArh_imp = (bytesToFloat(bytes.slice(22, 26)));
_ // KVArh Imported_
decoded.KVArh_exp = (bytesToFloat ** (bytes.slice(26, 30)));
_ // kVArh Exported_
decoded.KVArh_tot = (bytesToFloat ** (bytes.slice(30, 34)));
_ // KVArh Total_
}

return decoded;
}

Non siamo sicuri che i valori in questo parser siano effettivamente quelli titolati. Potrebbe
essere più giusto considerare quelli della tabella sopra. E’ da guardare una volta installato
completamente su una linea il misuratore.

Configurazioni lato piattaforma Lora su web


Sulla piattaforma Lora la configurazione è abbastanza semplice. Si tratta di:

● dispositivo compatibile con Lora 1.0.2 revB


● mettere i corretti DEVEUI, APPEUI, APPKEY (attenti all’APPKEY che è nascosta!!)
● aggiungere un parser javascript come sopra configurato

I valori sono riportati come file JSON

Potrebbero piacerti anche