Install Jenkins native on Raspberry Pi

# Basic installation of Jenkins latest LTS version
sudo wget -O /usr/share/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian/jenkins.io-2023.key
echo “deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc]” https://pkg.jenkins.io/debian binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install fontconfig openjdk-17-jre
sudo apt-get install jenkins

Now the Jenkins UI is available on port 8080
Answer some extra installation questions and wait for the installation to complete.

# Enable Maven in Jenkins
Goto Jenkins UI
Go to “Manage Jenkins” -> “Plugins” -> “Install Plugins” -> Select “Maven integration plugin”
Go to “Manage Jenkins” -> “Tool” -> “Maven installations”
Press “Add Maven”
Select “Install automatically”
Select “Version”
Press “Save”

# Create Project (Public GitHub REPO)
Goto Jenkins UI
Select “New Item”
Enter Project Name
Select “Maven Project”
Press “Ok”
Select “Source Code Management”
Select “GIT”
Enter by Repository URL the GIT URL
Press “Save”
Press “Build”
Now project will be build and all unit tests are automatic run.

# Create Project (Private GitHub REPO)
Goto GitHub UI
Select “Setting” -> “Developer Settings”
Select “Personal access token” -> “Tokens (classic)”
Press “Generate new Token (Classic)”
Enter Name
Select “No expiration”
Select “all scopes”
Press “Generate Token”
Copy token key to clipboard

Goto Jenkins UI
Select “New Item”
Enter Project Name
Select “Maven Project”
Press “Ok”
Select “Source Code Management”
Select “GIT”
Enter by Repository URL the GIT URL
Select “Credentials” -> “Add” -> “Jenkins”
Select “Username with password”
Enter “Username” -> Its your Github username
Enter “Password” -> Copy token key from clipboard
Select “Threat username as secret”
Press “Save”
Press “Build”
Now project will be build and all unit tests are automatic run.

PlaatDomotica 2.0.0

PlaatSoft has released a new version of PlaatDomotica.

Version 2.0.0 (13-10-2024)

  • Major rewrite – Split frontend and backend logic
  • Added table paginating logic
  • Switch from H2 to Postgres database
  • Upgrade Java to 17
  • Upgrade Spring Core to 3.3.4
  • Upgrade Spring Thymeleaf WebUI to 3.3.4
  • Upgrade Spring Security to 1.3.2
  • Upgrade Tomcat to 10.1.30
  • Upgrade JSON library to 20240303
  • Added Lombok 1.18.34

More information click here

RDF vs Property GRAPH (NoSQL) database

RDF Graph example (Query language: SPARQL)

As a framework for representing the Web, Resource Description Framework (RDF) captures structure using a triple, the basic unit in RDF. A triple is a statement with three elements: two nodes connected by an edge (also known as a relationship). Each triple is identified by a Uniform Resource Identifier (URI) as subject-predicate-object:

– The subject is a resource (node) in the graph;
– The predicate represents an edge (relationship)
– The object is another node or a literal value.

More information:
https://rdf4j.org/documentation/tutorials/getting-started/

Property Graph example (Query Language: Cypher)

Information is organized as nodes, relationships, and properties in a property graph. Nodes are tagged with one or more labels, identifying their role in the network. Nodes can also store any number of properties as key-value pairs. Relationships provide directed, named connections between two nodes. Relationships always have a direction, a type, a start node, and an end node, and they can have properties, just like nodes. Although relationships are always directed, they can be navigated efficiently in either direction.


What is the difference between SPARQL and Cypher Query Language?
– SPARQL is the query language for accessing data in the Resource  description Framework (RDF) GRAPH database.
– Cypher is the corresponding language for the data represented in property GRAPH database

More information:
https://neo4j.com/blog/rdf-vs-property-graphs-knowledge-graphs/

Cypher queries examples

INSERT
CREATE (diana:Person {name: “Diana”})
CREATE (melissa:Person {name: “Melissa”, twitter: “@melissa”})
CREATE (xyz:Company {name: “XYZ”})
CREATE (diana)-[:WORKS_FOR]->(xyz)
CREATE (diana)-[:IS_FRIENDS_WITH]->(melissa)

UPDATE
MATCH (p:Person {name: ‘Diana’}) SET p.birthdate = date(‘1980-01-01’)
MATCH (:Person {name: ‘Diana’})-[rel:WORKS_FOR]-(:Company {name: ‘XYZ’}) SET rel.startYear = date({year: 2018})

DELETE
MATCH (j:Person {name: ‘Diana’})-[r:IS_FRIENDS_WITH]->(m:Person{name: ‘Melissa’}) DELETE j,r,m

SELECT
MATCH (p:Product) RETURN p.productName, p.unitPrice ORDER BY p.unitPrice DESC LIMIT 10;

SPARQL examples

INSERT

PREFIX plaat: <http://www.plaatsoft.nl/>
INSERT DATA {
<http://leerling/1> plaat:firstName “Kees”.
<http://leerling/2> plaat:firstName “Jan”.
<http://leerling/3> plaat:firstName “Piet”.
<http://leerling/4> plaat:firstName “Klaas”.
<http://school/1> plaat:name “Bospark”.
<http://school/1> plaat:level “LTS”.
<http://school/1> plaat:city “Alphen aan den Rijn”.
<http://school/2> plaat:name “Lammerschans”.
<http://school/2> plaat:level “MTS”.
<http://school/2> plaat:city “Leiden”.
<http://school/3> plaat:name “Hogeschool van Utrecht”.
<http://school/3> plaat:level “HTS”.
<http://school/3> plaat:city “Utrecht”.
<http://leerling/1> plaat:school <http://school/1>.
<http://leerling/1> plaat:school <http://school/2>.
<http://leerling/1> plaat:school <http://school/3>.
<http://leerling/2> plaat:school <http://school/1>.
<http://leerling/3> plaat:school <http://school/2>.
}

QUERY
# Show all leerlingen of school1
PREFIX plaat: <http://www.plaatsoft.nl/>
SELECT ?x ?firstName
WHERE
{
?x plaat:firstName ?firstName.
?x plaat:school <http://school/1>
}

DELETE
PREFIX plaat: <http://www.plaatsoft.nl/>
DELETE { ?x plaat:firstName ‘Kees’ }
WHERE { ?x plaat:firstName ‘Kees’ }

UPDATE (SPARQL use delete / insert pattern)
PREFIX plaat: <http://www.plaatsoft.nl/>
DELETE { ?x plaat:firstName ‘Kees’ }
INSERT { ?x plaat:firstName ‘William’ }
WHERE { ?x plaat:firstName ‘Kees’ }

Activate GIT SSH key access

Generate ssh key
ssh-keygen -t ed25519 -C “blabla@gmail.com”

Fetch public key content
notepad C:\Users\blabla\.ssh\id_ed25519.pub

Go https://github.com/settings/keys
Press “add public SSH key”
Fill form + public key content

Go to eclipse
Select menu Windows -> Preferences -> General -> Network Connections -> SSH2
Add here your secure key.

The GIT communication is now based on SSH instead op HTTPS.

Nice docker containers

ActiveMQ artemis v2.31.0
Docker container name: apache/activemq-artemis

Name: Artemis
CONSOLE Port 8161
OPENWIRE Port 61616

———–

Postgres 16
Docker container name: postgis/postgis

Name: Postgres
Database Port: 5432
Variable 1: POSTGRES_PASSWORD=admin
Variable 2: POSTGRES_HOST_AUTH_METHOD=trust

Access docker console and enter “psql -U postgres -W” to access the commandline of postgres

PlaatDomotica 1.3.0

PlaatSoft has released a new version of PlaatDomotica.

Version 1.3.0 (10-04-2023)
– Upgrade Spring Core to 2.7.10
– Upgrade Hibernate to 5.6.15
– Upgrade Embedded Tomcat App. Server to 9.0.73
– Added energy summary table
– Added automatic data sync with PlaatEnergy
– Added gas month page + drill in feature
– Added electricity month page + drill in feature
– Added solar month page + drill in feature
– Move home reports to Report page

More information click here

PlaatDomotica 1.1.0

PlaatSoft has released a new version of PlaatDomotica.

Version 1.1.0 (27-01-2023)
– First maintenance release
– Added custom login page
– Added background image
– Improve performance of energy and gas page
– Improve motion page (now resolution is seconds)
– Improve new version detection
– Improve solar page when there is no data
– Added bplaat native android look feature

More information click here

PlaatDomotica 1.0.0

PlaatSoft has released a new version of PlaatDomotica.

Version 1.0.0 (21-01-2023)
– First version for mass market
– Now all buttons have an icon
– Improve chart navigation + chart subtitle
– Added air quality sensor + air quality page
– Added bplaat styling changes
– Improve database cleanup job
– Added actor overview page
– Added sensor overview page
– Improve data model

More information click here

PlaatDomotica v0.9.0

PlaatSoft has released a new version of PlaatDomotica.

Version 0.9.0 (13-01-2023)
– Added cloud density page
– Alarm trigger event sent now email
– Alarm trigger event is now logged
– Bulb on/off event is now logged
– Resync event is now logged
– Login event is now logged
– Added alarm rule page
– Added alarm event page
– Added alarm bulb page
– Improve data model

More information click here

PlaatDomotica v0.8.0

PlaatSoft has released a new version of PlaatDomotica.

Version 0.8.0 (08-01-2023)
– Added toolkit popups to explain in app features
– Added resync feature with Hue base station configuration
– Added automation page
– Refactor java source code for better maintenance
– Improve solar page (performance)
– Improve gas page (performance)
– Improve electricity page (performance)
– Improve utility report
– Added energySensor
– Improve data model

More information click here

PlaatDomotica v0.7.0

PlaatSoft has released a new version of PlaatDomotica.

Version 0.7.0 (05-01-2023)
– Fix some security issues (URL fishing)
– Improve error page
– Reduce code duplication in html pages
– Added (override) properties file
– Improve page titles
– Home buttons are now visible depending on active sensors
– Added version sensor (Check for new version)
– Added current temperature report
– Added current solar report
– Improve error handling of sensors

More information click here

PlaatDomotica v0.6.0

PlaatSoft has released a new version of PlaatDomotica.

Version 0.6.0 (03-01-2023)
– Delete action needs now confirmation
– Improve role base access
– Now sensor can support multiple measureTypes
– Move settings to sensor and actor pages
– Improve data model
– Added actor pages
– Added email actor module
– Added database actor module
– Added portal actor module

More information click here