Tadas presents real DIY Smart House project, which he made from A to Z. During this talk project author walks through all the challenges he was facing during implementation, and shares advices how to overcome them. Hopefully this talk will inspire you to start your own Smart House project, and you can take insights form lessons speaker have already learned.
Git Plumbing by Eimantas Vaičiūnas
Git is stupid content tracker yet is a CVS of choice for many developers. Learn how Git stores your code, and what stupid things does to it that make Git look so smart.
Automated Infrastructure with Vagrant, Puppet and Docker by Laurynas Tretjakovas
Learn the common pitfalls and challenges of manual infrastructure and how automated and versioned infrastructure can help you in continuous integration, continuous delivery and overall development process. The presentation will also cover some of the most common infrastructure examples when building and deploying Java application
"Introduction to the Oracle Application Development Framework (ADF)"
In the presentation will be covered basic architecture of ADF, offered functionality, variety of components, customization features, benefits and lacks. Will be a short demo to have a look and feel how it works. Some shares about real world ADF experience.
Bye Bye Cowboy-Coder days! by Vytautas Dagilis.
„Working Effectively with Legacy Code“- one of the best books which talks about Unit testing and TDD. Presentation covers best practices listed in the book as well as shows which of them were successfully implemented in practice. You will find out how to commit changes and be sure that they work even without running and testing application itself.
"Building with Gradle" by Laurynas Tretjakovas.
A short introduction to Gradle. How to start using Gradle for Java projects and how does it compare to Maven and Ant.
Flyway is an open source database migration framework that allows developers to manage schema changes to a database. It works by:
1) Tracking the current schema version in a metadata table.
2) Scanning the classpath for SQL or Java migration scripts in a certain naming convention.
3) Sorting and applying the migrations in order to bring the database schema to the required version.
Ehcache is a widely used open source Java caching library. It allows caching to speed up CPU and I/O bound applications and improve scalability. Ehcache supports different caching topologies like standalone, distributed, and replicated caches. It provides options for memory-based, off-heap, and disk-based storage. Common caching patterns like cache-aside, read-through, and write-behind are supported. Ehcache can be configured based on size, count, or percentage and includes eviction policies and persistence. It enables search, replication between nodes, and high availability.
Git Plumbing by Eimantas Vaičiūnas
Git is stupid content tracker yet is a CVS of choice for many developers. Learn how Git stores your code, and what stupid things does to it that make Git look so smart.
Automated Infrastructure with Vagrant, Puppet and Docker by Laurynas Tretjakovas
Learn the common pitfalls and challenges of manual infrastructure and how automated and versioned infrastructure can help you in continuous integration, continuous delivery and overall development process. The presentation will also cover some of the most common infrastructure examples when building and deploying Java application
"Introduction to the Oracle Application Development Framework (ADF)"
In the presentation will be covered basic architecture of ADF, offered functionality, variety of components, customization features, benefits and lacks. Will be a short demo to have a look and feel how it works. Some shares about real world ADF experience.
Bye Bye Cowboy-Coder days! by Vytautas Dagilis.
„Working Effectively with Legacy Code“- one of the best books which talks about Unit testing and TDD. Presentation covers best practices listed in the book as well as shows which of them were successfully implemented in practice. You will find out how to commit changes and be sure that they work even without running and testing application itself.
"Building with Gradle" by Laurynas Tretjakovas.
A short introduction to Gradle. How to start using Gradle for Java projects and how does it compare to Maven and Ant.
Flyway is an open source database migration framework that allows developers to manage schema changes to a database. It works by:
1) Tracking the current schema version in a metadata table.
2) Scanning the classpath for SQL or Java migration scripts in a certain naming convention.
3) Sorting and applying the migrations in order to bring the database schema to the required version.
Ehcache is a widely used open source Java caching library. It allows caching to speed up CPU and I/O bound applications and improve scalability. Ehcache supports different caching topologies like standalone, distributed, and replicated caches. It provides options for memory-based, off-heap, and disk-based storage. Common caching patterns like cache-aside, read-through, and write-behind are supported. Ehcache can be configured based on size, count, or percentage and includes eviction policies and persistence. It enables search, replication between nodes, and high availability.
This document discusses Java 8 streams and provides examples of:
- Creating streams from collections, arrays, and iterators
- Common intermediate stream operations like filter, map, and distinct
- Terminal stream operations like forEach, collect, and reduce
- Features of streams like laziness and lack of storage
- Parallel stream processing and ensuring non-interference with source data
- Best practices for stateless parallel stream operations
This document provides information about Java 8 lambdas and closures presented by Dainius Mežanskas. It introduces lambda expressions and closures, explains why they were added to Java, describes functional interfaces and the @FunctionalInterface annotation. It provides lambda syntax examples and examples using lambda expressions with the Collections API and streams. It also discusses method references, default methods, and new methods added to the Collections framework in Java 8.
This document summarizes the inaugural meeting of the Kaunas Java User Group (JUG). It introduces the organizer Valdas Žigas and his background. It describes the benefits of JUGs which include sharing experiences, learning, teaching, and business opportunities. It outlines the plans for the Kaunas JUG which are to hold meetings every 3 months, find presenters on Java and JVM topics, attract sponsors, and add the group to the global JUG map. The overall goal is to build a community for sharing knowledge on Java technologies.
- Java was created in 1991 by James Gosling at Sun Microsystems and released in 1996. It was designed to be portable, secure, and have a simple object-oriented syntax like C++.
- Some key features of Java included automatic memory management, strong typing, exceptions, threads, and an extensive class library. This made Java well-suited for applications ranging from mobile devices to enterprise servers.
- Java grew rapidly in popularity and underwent many updates and specifications over the years, including Java EE for enterprise applications, Java ME for mobile, and OpenJDK to make the reference implementation open-source. Modern versions of Java continue to add new features and capabilities.
Devoxx is an annual European conference focused on Java, Android, and HTML5 technologies. In 2013, it was held in Kaunas, Lithuania, attracted 3500 attendees across 9 tracks, and sold out 6 weeks before the event. The conference consisted of 2 days of university sessions and 3 days of main conference tracks covering topics like Java SE, Java EE, web technologies, mobile, and emerging areas.
This document discusses Java 8 streams and provides examples of:
- Creating streams from collections, arrays, and iterators
- Common intermediate stream operations like filter, map, and distinct
- Terminal stream operations like forEach, collect, and reduce
- Features of streams like laziness and lack of storage
- Parallel stream processing and ensuring non-interference with source data
- Best practices for stateless parallel stream operations
This document provides information about Java 8 lambdas and closures presented by Dainius Mežanskas. It introduces lambda expressions and closures, explains why they were added to Java, describes functional interfaces and the @FunctionalInterface annotation. It provides lambda syntax examples and examples using lambda expressions with the Collections API and streams. It also discusses method references, default methods, and new methods added to the Collections framework in Java 8.
This document summarizes the inaugural meeting of the Kaunas Java User Group (JUG). It introduces the organizer Valdas Žigas and his background. It describes the benefits of JUGs which include sharing experiences, learning, teaching, and business opportunities. It outlines the plans for the Kaunas JUG which are to hold meetings every 3 months, find presenters on Java and JVM topics, attract sponsors, and add the group to the global JUG map. The overall goal is to build a community for sharing knowledge on Java technologies.
- Java was created in 1991 by James Gosling at Sun Microsystems and released in 1996. It was designed to be portable, secure, and have a simple object-oriented syntax like C++.
- Some key features of Java included automatic memory management, strong typing, exceptions, threads, and an extensive class library. This made Java well-suited for applications ranging from mobile devices to enterprise servers.
- Java grew rapidly in popularity and underwent many updates and specifications over the years, including Java EE for enterprise applications, Java ME for mobile, and OpenJDK to make the reference implementation open-source. Modern versions of Java continue to add new features and capabilities.
Devoxx is an annual European conference focused on Java, Android, and HTML5 technologies. In 2013, it was held in Kaunas, Lithuania, attracted 3500 attendees across 9 tracks, and sold out 6 weeks before the event. The conference consisted of 2 days of university sessions and 3 days of main conference tracks covering topics like Java SE, Java EE, web technologies, mobile, and emerging areas.
2. Kas yra “protingas namas”
● Šildymo valdymas
● Vėdinimo valdymas
● Temperatūros ir drėgmės stebėjimas
● Elektros prietaisų valdymas
● Vartų valdymas
● Žaliuzių valdymas
● Valdymas pagal scenarijus
● Meteorologinių duomenų pateikimas
● Nuotolinis valdymas
● Apsaugos valdymas ir informavimas
● Vidaus ir lauko apšvietimo valdymas
● Parodymų iš apskaitos prietaisų
surinkimas
● Laistymo valdymas
● Vandens ir dujų nuotėkio stebėjimas ir
valdymas
3. 1. Apsaugos sistema
2. Elektros komutacinės
spintos
3. Tinklo komutacinė
spinta
4. Smart house spinta
8. Internal network
Glassfish
Java EE
No open ports
Glassfish
Java EE
JMS
+
RESTful
+
DerbyDB
JSF2.3 +JAAS / SSL
DerbyDB to Cloud Datastore
G2
“Button” type
apps for gates
G1
12. Smart funkcijos
Komfortas
○ Nuotolinis valdymas ir stebėjimas
○ karštas vanduo kada reikia
○ išvėdinti namai prieš miegą
○ gaivesnis oras grįžus į namus
○ komfortiška šiluma dieną ir naktį
○ grįžus tamsiu paros metu lauke ir
koridoriuje uždegama šviesa
○ pamiršus uždaromi garažo vartai
○ nuotolinis parodymų
deklaravimas
13. Smart funkcijos
Apsauga
○ Aliarmo metu esant
tamsiam paros laikui mirksi
lauko apšvietimas bei šviesa
viduje
○ Buvimo namie imitavimas
15. Smart funkcijos.
Kas toliau?
1. Komfortas
○ vidaus drėgmės kontrolė
○ audio sistemos valdymas
○ laistymo automatinis valdymas
○ BT/WiFi ryšiu valdomi varteliai
2. Apsauga
○ integracija su video apsauga
○ elektroninis “šuo”
3. Energetiniai resursai
○ vandens skaitliukų
nuskaitymas
○ resursų sunaudojimo analizė ir
informavimas
16. APSAUGA - “elektroninis šuo”
● Online video streem
● Galimybė valdyti nuotoliniu būdu
● Baby monitor
Siekiamybė - kad pats nuvažiuotų
ten, kur reikia ir nustatytų aliarmo
priežastį
17. KAINA
Nepirkau:
1. Dujinio katilo valdymo pultas
(laidinis ~130€, belaidis ~220€),
termostatai kambariuose po xx€
2. Vėdinimo sistemos
programuojamas valdymo pultas
~190€
3. Trinkelių šalčio ir ledo daviklis su
kontroleriu ~xxx€
4. Lauko meteorologinė stotelė >30€
5. Lauko vartų GSM modulis ~50€
6. Laistymo sistema xxx€
Smart House pirkimai:
1. Dujų ir elektros skaitliukai ~250€
2. UPS ~80€
3. Komutacinė spinta ~40€
4. Raspberry PI 3 - 35€ JUG dovana :)
5. Automatukai ~20€
6. Relės, kištukai, kita smulki elektronika
~50€
7. Temperatūros davikliai ~10€
8. Papildomi laidai ~100€
9. Maitinimo blokas 6€
10. VPS 3€/mėn
19. DUK ● Kas bus, jei dings elektra arba
suges Raspberry PI?
● Ar dar kartą visa tai daryčiau?
● Kam man to reikia?
● Ar brangu?
● Ar pradėsiu masiškai gaminti?
● Kas buvo sunkiausia?
Editor's Notes
Funkcijos, paleistos ant apsaugos sistemos ir valdomos per aplikaciją bei sms
prijungta 15 įrenginių, kuriuos galima valdyti arba nuskaityti jų būklę ar informaciją, o RPI tam panaudoti 22 GPIO. Rekuperatorius - darbo režimai ir filtro alarmas, plius pačio rekuperatoriaus išjungimas. Vandens vožtuvai on/off, apsaugos sistema - įjungti/išjungti, alarmai ir būklė. 8 temperatūros davikliai kambariuose ir lauke. Apskaitos prietaisų parodymų nuskaitymas iš elektros ir dujų skaitliukų. Lauko apšvietimo valdymas. Boilerio, dujinio katilo (tik šildymas) ir cirkuliacinio siurbliuko valdymas. Lauko vartų valdymas, garažo vartų valdymas ir jų būklė. Trinkelių šildymas.
Kadangi RPI išėjime turi 3,3V ir santykinai silpną išėjimo srovę, tai praktiškai visi GPIO turi būti jungiami per tranzistorių ir optroną, kuris optiškai izoliuoja išėjimą nuo RPI ir visos sistemos. Tas reikalinga norint apsisaugoti nuo elektros iškrovų, kurie gali susidaryti galiniuose įrenginiuose juos elementariai įjungiant ar išjungiant arba gedimo atveju. Pirmam paveiksle pavaizduotas rekuperatoriaus darbo režimų valdymo interfeisas. Antrame - sąsaja su apsaugos sistema bei temperatūros davikliai. Trečia nuotrauka yra galinė valdymo dėžutė, kuri statosi prie pačio įrenginio, jungiasi iš RPI laidas ir relių pagalba jis įjungiamas arba išjungiamas.
Kadangi prie RPI prijungtas ne vienas įrenginys, tame tarpe apsaugos sistema, tai suprantama visai sistemai keliami dideli saugumo reikalavimai. Užsibrėžtas tikslas, kad namų maršrutizatoriuje nebūtų atvirų portų, vadinasi jokių tiesioginių jungimosi iš išorės į RPI. Tam reikalui paleistas VPS, kuris dirba kaip “bridge” tarp vidinio namų tinklo ir galinių vartotojų, komunikacija su RPI vyksta per JMS servisą, t.y. RPI prisijungia prie JMS queue ir laukia komandų. Jas įvykdžius statusą perduoda į kitą queue. Kol kas duomenų bazė yra lokaliai VPS derby DB, tačiau planas yra viską iškelti į Google Cloud Datastore, kad kuo mažiau reiktų rūpintis įvairiais servisais. VPS be abejo paleistas ant SSL transporto, prie jo jungiamasi per web’ą. RESTful servisas kol kas naudojamas tik vartų atidarymui, tam yra padaryta Android aplikacija, kuri nuskaito telefono google paskyrą ir jos el.pašto adresą naudoja JAAS vartotojo autentifikacijai. “Button” type reiškia, kad aplikacija nieko nerodo, nieko neprašo, o paspaudus tiesiog sumirksi ir išsijungia. Važiuojant mašina juk nesinori atlikti daug veiksmų, kad atliktume elementarų veiksmą kaip vartų atidarymas
DEMO
Kambarių temperatūros, dujinio katilo ir rekuperatoriaus darbo režimai
Elektros suvartojimas ir vidurkis, elektros skaitiklių parodymai bei išlaidos €
valdyti įrenginius rankiniu būdu nieko smart tikrai nėra, tai man pačiam labai įdomus etapas buvo surasti automatizavimo galimybės įvykus įvairiems įvykiams ar pasikeitus parametrams. Šios funkcijos “gimsta” iš praktikos, kai susiduri su tam tikra situacija arba tiesiog šauna į galvą, ką būtų galima padaryti naudingo
valdyti įrenginius rankiniu būdu nieko smart tikrai nėra, tai man pačiam labai įdomus etapas buvo surasti automatizavimo galimybės įvykus įvairiems įvykiams ar pasikeitus parametrams. Šios funkcijos “gimsta” iš praktikos, kai susiduri su tam tikra situacija arba tiesiog šauna į galvą, ką būtų galima padaryti naudingo
valdyti įrenginius rankiniu būdu nieko smart tikrai nėra, tai man pačiam labai įdomus etapas buvo surasti automatizavimo galimybės įvykus įvairiems įvykiams ar pasikeitus parametrams. Šios funkcijos “gimsta” iš praktikos, kai susiduri su tam tikra situacija arba tiesiog šauna į galvą, ką būtų galima padaryti naudingo