Your SlideShare is downloading. ×
  • Like
JavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan Raguž
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

JavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan Raguž

  • 1,192 views
Published

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 …

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.

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,192
On SlideShare
0
From Embeds
0
Number of Embeds
5

Actions

Shares
Downloads
3
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Java u M2M tehnologijama Mango M2m Ivan RagužIvan Raguž ivan.raguz@serengeti.hr www.serengeti.hr
  • 2. Sadržaj : • Uvod • Mango M2M • Mango sučelje • Arhitektura Mango M2M sustava• Arhitektura Mango M2M sustava
  • 3. 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
  • 4. Uvod Glavne komponente M2M koncepta - Uređaji - Konektori i protokoli - Back End sustav
  • 5. Uvod Zašto se koristi M2M
  • 6. 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.
  • 7. Mango M2M Značajke Mango M2M-a - Brzina - Višestruki protokoli - Višestruke baze podataka- Višestruke baze podataka - Meta point
  • 8. Mango M2M Značajke Mango M2M-a - Korisničko definirani događaji - Inport/Export - Hvatanje događaja- Hvatanje događaja - Sigurnost - Izvještaji
  • 9. 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
  • 10. 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
  • 11. Mango sučelje
  • 12. Mango sučelje Liste pregleda podatkovnih točaka
  • 13. Mango sučelje Grafički pregled
  • 14. Mango sučelje Pregled alarmnih poruka
  • 15. 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)
  • 16. Mango sučelje Izvještaji
  • 17. Mango sučelje Hvatanje i procesuiranje događaja
  • 18. 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
  • 19. Mango sučelje Skupovi podataka – “Data source”
  • 20. Mango sučelje Skupovi podataka – “Data source” - Modbus protokol
  • 21. Mango sučelje Skupovi podataka – “Data source” - SNMP protokol
  • 22. 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.
  • 23. Mango sučelje Podatkovne točke – “Data points” - Hijerarhijska struktura podatkovnih točaka i pregledi
  • 24. Mango sučelje Administracija korisnika - Dva tipa korisnika : adminnistratori i korisnici sustava
  • 25. Mango sučelje Postavke sustava
  • 26. Arhitektura Mango M2M sustava Java, web bazirana aplikacija Otvoreni standard Spring MVC Framework Direct Web Remoting (DWR) Dojo Framework Apache Tomcat Apache Ant
  • 27. 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
  • 28. 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;
  • 29. 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(); } },
  • 30. 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(); } },
  • 31. 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(); } },
  • 32. 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>
  • 33. 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());
  • 34. Arhitektura Mango M2M sustava Kreiranje skupova podataka
  • 35. 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>
  • 36. 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;
  • 37. 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;
  • 38. 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> {
  • 39. 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;
  • 40. Arhitektura Mango M2M sustava Konektori i protokoli SNMP public class SnmpDataSourceRT extends PollingDataSource {PollingDataSource { public class SnmpDataSourceVO extends DataSourceVO<SnmpDataSourceVO> {
  • 41. 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;
  • 42. 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,
  • 43. 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();
  • 44. Arhitektura Mango M2M sustava DataPointRT Konfiguracijski podaci private final DataPointVO vo; private final PointLocatorRT pointLocatorprivate final PointLocatorRT pointLocator
  • 45. 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>();
  • 46. 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;
  • 47. Arhitektura Mango M2M sustava Podatkovni sloj
  • 48. Arhitektura Mango M2M sustava Podatkovni sloj - com.serotonin.mango.db.dao
  • 49. Hvala