javacro'14 - java in m2m technologies – mango m2m software – ivan raguž

50
Java u M2M tehnologijama Mango M2m Ivan Raguž Ivan Raguž [email protected] www.serengeti.hr

Category:

Technology


6 download

DESCRIPTION

Mango M2M is open source alternatives for Machine to Machine software that allows users to access and control electronic sensors, devices and machines over multiple protocols. The aim of the lecture is to introduce opportunities Mango M2M platform, code review and architecture, implementation protocols via a Java library.

TRANSCRIPT

Java u M2M tehnologijama

Mango M2m

Ivan RagužIvan Raguž[email protected]

www.serengeti.hr

Sadržaj :

• Uvod

• Mango M2M

• Mango sučelje

• Arhitektura Mango M2M sustava• Arhitektura Mango M2M sustava

Uvod

M2M koncept

- Machine to machine (M2M) odnosi se na tehnologije koje omogućavaju uređajima komunikaciju preko protokola sa drugim uređajima iste sposobnosti.

- M2M koristi mjerne uređaje za hvatanje događaja koji se odvija preko mreže i prevodi ih u smislene informacije

- Podaci sa uređaja mogu se prikupljati i uređajima je moguće upravljati bez ljudskih utjecaja

Uvod

Glavne komponente M2M koncepta

- Uređaji

- Konektori i protokoli

- Back End sustav

Uvod

Zašto se koristi M2M

Mango M2M

-Mango je softver otvorenog standarda za Machine-to-Machine (M2T) tehnologiju (software za industrijsku kontroli, SCADA, HMI ili domotics software)

- Omogućava korisniku istovremeni pristup i kontrolu elektroničkim senzorima, uređajima i strojevima preko raznih protokola.senzorima, uređajima i strojevima preko raznih protokola.

- Osigurava korisnička sučelja za konfiguriranje različitih "data sources" koji omogućavaju upravljanje "downstream" procesima, korisničkim pristupom, porukama upozorenja, zapisivanjem podataka i automatizaciju.

Mango M2M

Značajke Mango M2M-a

- Brzina

- Višestruki protokoli

- Višestruke baze podataka - Višestruke baze podataka

- Meta point

Mango M2M

Značajke Mango M2M-a

- Korisničko definirani događaji

- Inport/Export

- Hvatanje događaja - Hvatanje događaja

- Sigurnost

- Izvještaji

Mango M2M

Značajke Mango M2M-a

- Dinamički dijagrami postavljenih točaka

- Liste pregleda

- Hijerarhija točaka podataka- Hijerarhija točaka podataka

- Grafički prikazi

- Detalji podatkovnih točaka

Mango M2M

Značajke Mango M2M-a

- Lista aktivnih alarma

- Vremesko definiranje događaja

- Udaljeni grafički pregledi- Udaljeni grafički pregledi

- Zvuk alarmnih događaja

Mango sučelje

Mango sučelje

Liste pregleda podatkovnih točaka

Mango sučelje

Grafički pregled

Mango sučelje

Pregled alarmnih poruka

Mango sučelje

Izvještaji- Definiranja podatkovne točke koju želimo pratiti preko izvještaja- Postavljanje vremenskog okidača- Postavljanje mail notifikacije (adrese primatelja ili grupe primatelja)

Mango sučelje

Izvještaji

Mango sučelje

Hvatanje i procesuiranje događaja

Mango sučelje

Skupovi podataka – “Data source”

- Skupovi podataka su mjesta odakle podaci stižu u aplikaciju na obradu

- Skupovi podataka mogu biti svi skupovi koji su podržani protokolima unutar mango m2m aplikacije

- Skupovi podataka mogu se dodavati prilagodbom koda aplikacije i umetanjem protokola

Mango sučelje

Skupovi podataka – “Data source”

Mango sučelje

Skupovi podataka – “Data source”

- Modbus protokol

Mango sučelje

Skupovi podataka – “Data source”

- SNMP protokol

Mango sučelje

Podatkovne točke – “Data points”

- Skup atributa koji se povijesno može pratiti ili detektori događaja koje mjere stanja interesa pojedinih vrijednosti točaka.

Mango sučelje

Podatkovne točke – “Data points”

- Hijerarhijska struktura podatkovnih točaka i pregledi

Mango sučelje

Administracija korisnika

- Dva tipa korisnika : adminnistratori i korisnici sustava

Mango sučelje

Postavke sustava

Arhitektura Mango M2M sustava

Java, web bazirana aplikacija

Otvoreni standard

Spring MVC Framework

Direct Web Remoting (DWR)

Dojo Framework

Apache Tomcat

Apache Ant

Arhitektura Mango M2M sustava

- Definiranjem skupova podatka zavisno o protokolu koji nam je potreban

- Referentni kod- com.serotonin.mango.rt.dataSource.DataSourceRT- com.serotonin.mango.vo.dataSource.DataSourceVO- com.serotonin.mango.vo.dataSource.DataSourceVO

- Izvršavaju zadatke prikupljanja i slanje informacija iz vanjskih sustava u sistem i obrnuto

Arhitektura Mango M2M sustava

DataSourceRT.java

abstract public class DataSourceRT implements

ILifecycle {

public static final String ATTR_UNRELIABLE_KEY =

"UNRELIABLE";"UNRELIABLE";

private final DataSourceVO<?> vo;

Arhitektura Mango M2M sustava

Tipovi objekta u DataSourceVO

BACNET(10, "dsEdit.bacnetIp", true) {

@Override

public DataSourceVO<?> createDataSourceVO() {

return new BACnetIPDataSourceVO();

}}

},

HTTP_RECEIVER(7, "dsEdit.httpReceiver", true) {

@Override

public DataSourceVO<?> createDataSourceVO() {

return new HttpReceiverDataSourceVO();

}

},

Arhitektura Mango M2M sustava

Tipovi objekta u DataSourceVO

SNMP(5, "dsEdit.snmp", true) {

@Override

public DataSourceVO<?> createDataSourceVO() {

return new SnmpDataSourceVO();

}}

},

EBI25(16, "dsEdit.ebi25", false) {

@Override

public DataSourceVO<?> createDataSourceVO() {

return new EBI25DataSourceVO();

}

},

Arhitektura Mango M2M sustava

Tipovi objekta u DataSourceVO

MODBUS_IP(3, "dsEdit.modbusIp", true) {

@Override

public DataSourceVO<?> createDataSourceVO() {

return new ModbusIpDataSourceVO();

}}

},

POP3(12, "dsEdit.pop3", true) {

@Override

public DataSourceVO<?> createDataSourceVO() {

return new Pop3DataSourceVO();

}

},

Arhitektura Mango M2M sustava

Spring MVC DispatcherServlet parmetri mapiranja

<bean id="publicUrlMappings"

class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

<property name="mappings">

<props>

<!-- All user URLs -->

<prop key="/compound_events.shtm">compoundEventsController</prop><prop key="/compound_events.shtm">compoundEventsController</prop>

<prop

key="/data_point_details.shtm">dataPointDetailsController</prop>

<prop key="/data_point_edit.shtm">dataPointEditController</prop>

<prop key="/data_source_edit.shtm">dataSourceEditController</prop>

<prop key="/data_sources.shtm">dataSourceListController</prop>

Arhitektura Mango M2M sustava

dataSourceEditController

public class DataSourceEditController extends ParameterizableViewController {

@Override

protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)

throws Exception {

DataSourceVO<?> dataSourceVO = null;

User user = Common.getUser(request);

// Get the id.

int id = Common.NEW_ID;int id = Common.NEW_ID;

String idStr = request.getParameter("dsid");

if (idStr == null) {

// Check for a data point id

String pidStr = request.getParameter("pid");

if (pidStr == null) {

// Adding a new data source? Get the type id.

int typeId = Integer.parseInt(request.getParameter("typeId"));

Permissions.ensureAdmin(user);

// A new data source

dataSourceVO = DataSourceVO.createDataSourceVO(typeId);

dataSourceVO.setId(Common.NEW_ID);

dataSourceVO.setXid(new DataSourceDao().generateUniqueXid());

Arhitektura Mango M2M sustava

Kreiranje skupova podataka

Arhitektura Mango M2M sustava

Kreiranje skupova podataka

<td align="right" id="dataSourceTypesContent"><select id="dataSourceTypes">

<option value="10">BACnet I/P</option><option value="21">DNP3 IP</option><option value="14">Galil DMC-21x2</option><option value="7">HTTP Receiver</option><option value="11">HTTP Retriever</option><option value="15">HTTP Image</option><option value="27">Internal Data Source</option><option value="26">JMX</option><option value="26">JMX</option><option value="9">Meta Data Source</option><option value="3">Modbus IP</option><option value="2">Modbus Serial</option><option value="13">NMEA listener</option><option value="8">1-wire</option><option value="23">Pachube</option><option value="24">Serotonin Persistent TCP</option><option value="12">POP3 Email</option><option value="5">SNMP</option><option value="4">Spinwave Receiver</option><option value="6">SQL</option><option value="1">Virtual Data Source</option><option value="17">VMStat Data Source</option>

</select><img title="Add" class="ptr" onclick="addDataSource()" alt="Add" src="images/icon_ds_add.png" border="0">

</td>

Arhitektura Mango M2M sustava

Konektori i protokoli

BACnet I/P

public class BACnetIPDataSourceRT extends

PollingDataSource implements DeviceEventListener,

ExceptionListener {ExceptionListener {

public class BACnetIPDataSourceVO extends

DataSourceVO<BACnetIPDataSourceVO> {

public static final Type TYPE = Type.BACNET;

Arhitektura Mango M2M sustava

Konektori i protokoli

BACnet I/P

import com.serotonin.bacnet4j.LocalDevice;

import com.serotonin.bacnet4j.Network;import com.serotonin.bacnet4j.Network;

import com.serotonin.bacnet4j.RemoteDevice;

import com.serotonin.bacnet4j.RemoteObject;

import

com.serotonin.bacnet4j.event.DeviceEventListener;

import

com.serotonin.bacnet4j.event.ExceptionListener;

Arhitektura Mango M2M sustava

Konektori i protokoli

ModBus IP

abstract public class ModbusDataSource extends

PollingDataSource implementsPollingDataSource implements

MessagingExceptionHandler {

abstract public class ModbusDataSourceVO<T extends

ModbusDataSourceVO<?>> extends DataSourceVO<T> {

Arhitektura Mango M2M sustava

Konektori i protokoli

ModBus IP

import com.serotonin.modbus4j.BatchRead;

import com.serotonin.modbus4j.BatchResults;import com.serotonin.modbus4j.BatchResults;

import com.serotonin.modbus4j.ExceptionResult;

import com.serotonin.modbus4j.ModbusMaster;

Arhitektura Mango M2M sustava

Konektori i protokoli

SNMP

public class SnmpDataSourceRT extends

PollingDataSource {PollingDataSource {

public class SnmpDataSourceVO extends

DataSourceVO<SnmpDataSourceVO> {

Arhitektura Mango M2M sustava

Konektori i protokoli

SNMP

import org.snmp4j.PDU;

import org.snmp4j.Snmp;import org.snmp4j.Snmp;

import org.snmp4j.Target;

import org.snmp4j.smi.OID;

import org.snmp4j.smi.Variable;

import org.snmp4j.smi.VariableBinding;

Arhitektura Mango M2M sustava

Definirati podatkovne točke “data point”

Referentni kod

- com.serotonin.mango.rt.dataImage.DataPointRT- com.serotonin.mango.vo.DataPointVO,- com.serotonin.mango.vo.DataPointVO,

Arhitektura Mango M2M sustava

DataPointRT

public class DataPointRT implements IDataPoint,

ILifecycle, TimeoutClient {

private static final Log LOG =

LogFactory.getLog(DataPointRT.class);LogFactory.getLog(DataPointRT.class);

private static final PvtTimeComparator

pvtTimeComparator = new PvtTimeComparator();

Arhitektura Mango M2M sustava

DataPointRT

Konfiguracijski podaci

private final DataPointVO vo;

private final PointLocatorRT pointLocatorprivate final PointLocatorRT pointLocator

Arhitektura Mango M2M sustava

DataPointRT

Runtime podaci

private volatile PointValueTime pointValue;

private final PointValueCache valueCache;private final PointValueCache valueCache;

private RuntimeManager rm;

private List<PointEventDetectorRT> detectors;

private final Map<String, Object> attributes = new

HashMap<String, Object>();

Arhitektura Mango M2M sustava

DataPointRT

Podaci zapisa intervala

private PointValueTime intervalValue;

private long intervalStartTime = -1;private long intervalStartTime = -1;

private List<IValueTime> averagingValues;

private final Object intervalLoggingLock = new

Object();

private TimerTask intervalLoggingTask;

Arhitektura Mango M2M sustava

Podatkovni sloj

Arhitektura Mango M2M sustava

Podatkovni sloj

- com.serotonin.mango.db.dao

Hvala