SlideShare a Scribd company logo
1 of 23
Download to read offline
© Luonnonvarakeskus© Luonnonvarakeskus
Juha Backman / LUKE
WP 2: Jäljitettävyys ja
pilvipalvelut ISOBUS-standardiin
valmistajariippumattomasti
© Luonnonvarakeskus© Luonnonvarakeskus
WP 2
T 2.1 EFDI
Extended FMIS Data Interface
© Luonnonvarakeskus
Ajateltu demonstraatio
13.1.2021
FMIS
3G/4G
WLAN
USB
Juha Backman
© Luonnonvarakeskus
Demonstraatio käytännössä
13.1.2021
WLAN
USB
LAN
EFDI Client: TC
EFDI Client: TC
EFDI Client: FMIS
EFDI Server
Juha Backman
© Luonnonvarakeskus
CrossControl ISOBUS terminaali
• CrossControl ISOBUS terminaali CCpilot VA
• EFDI
– Taustaohjelma ISOBUS terminaaliin: ”USB-tikun korvaaja”
– Palvelinohjelma tietokoneelle tiedon lähetys/vastaanottoon
• Käytetyt kirjastot
– MQTT-kirjasto: mosquitto-1.4.15
– Protobuf: protobuf-3.5.1
– HTTP-yhteys, XML-parsinta: QT5
13.1.2021Juha Backman
© Luonnonvarakeskus
Raspberry Pi Zero W
• Speksit
– 1GHz, single-core CPU
– 512MB RAM
– Mini HDMI and USB On-The-Go ports
– Micro USB power
– 802.11 b/g/n wireless LAN
– Bluetooth 4.1
• Sulautettu Linux
– Voi konfiguroida erilaisiksi USB Gadgeteiksi
→ Näkyy terminaalille USB-tikkuna
→ Siirtää tallennetun XML-tiedoston EFDI
protokollalla
13.1.2021Juha Backman
© Luonnonvarakeskus
EFDI Client: FMIS
• EFDI Client prototyyppi toteutettu
– Kirjautuu HTTP-yhteydellä EFDI onboard serverille
– Avaa MQTT yhteyden ja kommunikoinnin EFDI serverille
– Kysyy kaikkia serverille kirjautuneita EFDI Clienttejä 10
sekunnin välein
– Luo jokaiselle Clientille paikalliset kansiot
• /endpoints/<Client ID>/Inbox
• /endpoints/<Client ID>/Outbox
– Tarkkailee Outbox-kansiota: kun TASKDATA.XML
tallennettu kansioon muuttaa XML:n protobuf-muotoon ja
lähettää serverin kautta kyseselle clientille
– Uuden taskin tullessa serveriltä tallentaa sen kyseisen
clientin Inbox-kansioon
13.1.2021Juha Backman
© Luonnonvarakeskus
FMIS connects to EFDI Server
13.1.2021Juha Backman
© Luonnonvarakeskus
Connect to HTTP-server
Send onboarding request to http://192.168.1.40:3123/onboard
Reply from server
authentication {
certificate: "-----BEGIN RSA PRIVATE KEY----- [ .... ]"
secret: "376f0940c2494a38bdd0208426f4a077”
}
connection_criteria {
client_id: "bdca6a0f-8011-462a-8f74-2f0beac1205e"
commands: "commands/bdca6a0f-8011-462a-8f74-2f0beac1205e"
measures: "measures/bdca6a0f-8011-462a-8f74-2f0beac1205e"
host: "tcp://192.168.1.40"
port: "1883”
}
device_id: "bdca6a0f-8011-462a-8f74-2f0beac1205e”
capability_id: "2b287272-110e-4e0d-907f-63865caed69b”
sensor_id: "2546a359-a704-4ce3-8747-952ecf13255c"
13.1.2021
onboarding-process.flow
/**
* How to onboard to a network.
*
* @flow {id} iso11783.p15.v0.m0.onboarding-process
* @flow {name} "Onboarding process"
* @flow {sequence} iso11783.p15.v0.m0.onboarding-endpoint
*/
onboarding-endpoint.scenario
/**
* Desciption of how to onboard an endpoint.
*
* @scenario {id} iso11783.p15.v0.m0.onboarding-endpoint
* @scenario {name} "Onboarding Endpoint"
* @scenario {request.verb} PROCESS
* @scenario {request.noun}
iso11783.p15.v0.m0.messages.Onboarding
* @scenario {response.verb} ACKNOWLEDGE
* @scenario {response.noun}
iso11783.p15.v0.m0.messages.OnboardingResponse
*/
Juha Backman
© Luonnonvarakeskus
Connect to MQTT and EFDI server
Connecting to MQTT broker HOST:192.168.1.40 PORT:1883
Connected to MQTT broker
Subscribe TOPIC commands/bdca6a0f-8011-462a-8f74-2f0beac1205e
Send status to EFDI server
application_message_id: "{6bbeb8cf-be0e-48c1-9d94-a800347b05df}”
application_message_seq_no: 1
sensor_id: "2546a359-a704-4ce3-8747-952ecf13255c”
capability_id: "2b287272-110e-4e0d-907f-63865caed69b”
mode: PUBLISH
timestamp { seconds: 1574244348 }
reference: "{d9b6efb6-92b7-4028-a986-a0db53717aed}”
verb: NOTIFY
noun {
[type.googleapis.com/iso11783.p15.v0.m0.messages.ClientStatus] {
event: ONLINE
}
}
13.1.2021
client-information-exchange.flow
/**
* To exchange information about the current client status.
* The client status is sent with mode PUBLISH when
* - Connection to the server was established successfully (status ONLINE)
* - The client wants to disconnecte (status EXPECTED_OFFLINE)
* - The client has los its connection to the server (status UNEXPECTED_OFFLINE)
*
* @flow {id} iso11783.p15.v0.m0.client-information-exchange
* @flow {name} "Client Information Exchange"
* @flow {sequence} iso11783.p15.v0.m0.client-information
* @flow {sequence} [iso11783.p10.v1.m0.reference-request]
*/
client-information.scenario
/**
* The client must send this message when it is successfully connected to the server.
* The reception of a client status message must be confirmed by the server.
* The message does not need to be confirmed by the server when the client is
unintentionally offline (in case of UNEXPECTED_OFFLINE).
*
* @scenario {id} iso11783.p15.v0.m0.client-status
* @scenario {name} "Client Status"
* @scenario {request.verb} NOTIFY
* @scenario {request.noun} iso11783.p15.v0.m0.messages.ClientStatus
* @scenario {response.verb} CONFIRM
* @scenario {response.noun}
*/ Juha Backman
© Luonnonvarakeskus
MQTT communication with protobuf: ”Send”
13.1.2021
request.proto
syntax = "proto3";
package iso11783.p15.v0.m0.messages;
import "google/protobuf/any.proto";
import "google/protobuf/timestamp.proto";
import "iso11783/p15/v0/m0/messages/chunk-component.proto";
import "iso11783/p15/v0/m0/messages/mode.proto";
import "iso11783/p15/v0/m0/messages/verb.proto";
/**
* Message for ALL requests sent to the messaging component.
*/
message Request {
string application_message_id = 1; // Client generated message ID. Used to uniquely identify the message on sender side
int64 application_message_seq_no = 2; // Sequence number from the client indicates the order in which the messages were sent
string sensor_id = 3; // ToDo
string capability_id = 4; // ToDo
Mode mode = 5; // The sending mode so the messaging component can properly process the message
repeated string recipients = 6; // Directly addressed endpoints. Addressed by the messaging component message IDs
ChunkComponent chunk_info = 7; // Used when transferring chunked messages. If the sent content inside the noun is not
chunked, this must be empty
google.protobuf.Timestamp timestamp = 8; // Client generated UTC timestamp at which the client sent the message
string reference = 9; // ToDo uuid reference to description (like stream description)
Verb verb = 10; // Verb for the scenario
google.protobuf.Any noun = 11; // Noun and data of the scenario
repeated google.protobuf.Any extension = 2048; // Used for proprietary purposes
}
Juha Backman
© Luonnonvarakeskus
MQTT communication with protobuf: ”Receive”
13.1.2021
response.proto
syntax = "proto3";
package iso11783.p15.v0.m0.messages;
import "google/protobuf/any.proto";
import "google/protobuf/timestamp.proto";
import "iso11783/p15/v0/m0/messages/verb.proto";
/**
* Message for ALL messages sent from the messaging component.
*/
message Response {
enum ResponseBodyType {
MESSAGES = 0;
}
int32 response_code = 1; // HTTP Response Codes will be used here (200, 400, 201, etc)
ResponseBodyType type = 2; // The Type of the body so that it can be decoded
string application_message_id = 3; // ID generated by the endpoint
string message_id = 4; // ID generated by messaging component
google.protobuf.Timestamp timestamp = 5; // UTC Timestamp when this message was generated by the messaging component.
Verb verb = 6; // Verb for the scenario
google.protobuf.Any noun = 7; // Noun and data of the scenario
string reference = 8; // Referenced object
string sender_id = 9; // Initial sender of the message
repeated google.protobuf.Any extension = 2048; // Used for proprietary purposes
}
void EFDIClient::MQTTMessageHandler(char * /* topic is not used */, int len, void *data)
{
// Handle received messages
Response response;
if(response.ParseFromArray(data,len))
{
if(response.has_noun())
{
qPrint() << "Received response " << response.noun().type_url().c_str() << endl;
// TODO: What to do with this?
if(response.noun().type_url() == "type.googleapis.com/iso11783.p15.v0.m0.messages.Reference")
{
Reference reference;
if(!reference.ParseFromString(response.noun().value()))
{
qWarning() << "Unable to parse reference response" << endl;
return;
}
SendReference(reference.reference().c_str(), response.sender_id().c_str());
}
[…….]
Juha Backman
© Luonnonvarakeskus
Capabilities response
Topic: commands/bdca6a0f-8011-462a-8f74-2f0beac1205e
Received response type.googleapis.com/iso11783.p15.v0.m0.messages.Reference
Send reference response
verb: SHOW
noun {
[type.googleapis.com/iso11783.p15.v0.m0.messages.ReferenceResponse] {
reference: "{d9b6efb6-92b7-4028-a986-a0db53717aed}"
referenced_object {
[type.googleapis.com/iso11783.p15.v0.m0.messages.Capabilities] {
capabilities {
noun_type_url: "type.googleapis.com/iso11783.p10.v1.m0.messages.FinishedWorkOrder"
verb_direction_list {
verb: PROCESS
direction: SEND_RECEIVE
}
}
}
} }}
13.1.2021
reference-request.scenario
/**
* Endpoint A sends a reference request to endpoint B.
* The reference was sent by endpoint B.
* Endpoint A wants to know to which message endpoint B references.
* Endpoint B responds with the message that is referenced by the sent reference.
* The request must be sent with mode DIRECT and endpoint B must be the recipient.
* The response must be sent with mode DIRECT and endpoint A must be the
recipient.
*
* @scenario {id} iso11783.p15.v0.m0.reference-request
* @scenario {name} "Reference Request"
* @scenario {request.verb} GET
* @scenario {request.noun} iso11783.p15.v0.m0.messages.Reference
* @scenario {response.verb} SHOW
* @scenario {response.noun} iso11783.p15.v0.m0.messages.ReferenceResponse
*/
Juha Backman
© Luonnonvarakeskus
Send subscriptions to EFDI server
Send subscriptions to EFDI server
mode: PUBLISH
verb: PROCESS
noun {
[type.googleapis.com/iso11783.p15.v0.m0.messages.Subscriptions] {
subscriptions {
noun_verb_list {
noun_type_url: "type.googleapis.com/iso11783.p10.v1.m0.messages.FinishedWorkOrder”
verbs: PROCESS
}
}
}}
Topic: commands/bdca6a0f-8011-462a-8f74-2f0beac1205e
Received response type.googleapis.com/iso11783.p15.v0.m0.messages.SubscriptionsResponse
13.1.2021
subscriptions-exchange.flow
/**
* The subscriptions should be exchanged when the client connects to the server for
the first time.
* Before removing subscriptions by sending an unsubscriptions message, the
endpoint needs to send a subscriptions message.
*
* @flow {id} iso11783.p15.v0.m0.subscriptions-exchange
* @flow {name} "Subscriptions Exchange"
* @flow {sequence} iso11783.p15.v0.m0.send-subscriptions
* @flow {sequence} [iso11783.p15.v0.m0.send-unsubscriptions]
*/
send-subscriptions.scenario
/**
* Messages that are sent with mode PUBLISH or PUBLISH_WITH_DIRECT are not
forwarded to any endpoint by default.
* An endpoint needs to subscribe to these messages in order to receive them.
* By sending a subscriptions message the endpoint announces that it want to
receive these messages.
*
* @scenario {id} iso11783.p15.v0.m0.send-subscriptions
* @scenario {name} "Send Subscriptions"
* @scenario {request.verb} PROCESS
* @scenario {request.noun} iso11783.p15.v0.m0.messages.Subscriptions
* @scenario {response.verb} ACKNOWLEDGE
* @scenario {response.noun} iso11783.p15.v0.m0.messages.SubscriptionsResponse
*/ Juha Backman
© Luonnonvarakeskus
Request information from EFDI server
Send endpointlist request to EFDI server
application_message_id: "{d56e03c9-544b-4504-9b54-d795b7e0c99c}”
application_message_seq_no: 4
sensor_id: "2546a359-a704-4ce3-8747-952ecf13255c”
capability_id: "2b287272-110e-4e0d-907f-63865caed69b”
mode: PUBLISH
timestamp { seconds: 1574244358 }
verb: GET
noun {
[type.googleapis.com/iso11783.p15.v0.m0.messages.ListEndpoints] {
capabilities {
noun_type_url: "type.googleapis.com/iso11783.p10.v1.m0.messages.WorkOrder”
verb_direction_list {
verb: PROCESS
direction: SEND_RECEIVE
}
}
}}
Topic: commands/bdca6a0f-8011-462a-8f74-2f0beac1205e
Received response type.googleapis.com/iso11783.p15.v0.m0.messages.ListEndpointsResponse
13.1.2021
list-endpoints-exchange.flow
/**
* How to request a list of endpoints.
*
* @flow {id} iso11783.p15.v0.m0.list-endpoints-exchange
* @flow {name} "List Endpoints Exchange"
* @flow {sequence} iso11783.p15.v0.m0.send-list-endpoints
*/
send-list-endpoints.scenario
/**
* To get a list of endpoints currently available on the server network.
*
* @scenario {id} iso11783.p15.v0.m0.send-list-endpoints
* @scenario {name} "Send List Endpoints"
* @scenario {request.verb} GET
* @scenario {request.noun} iso11783.p15.v0.m0.messages.ListEndpoints
* @scenario {response.verb} SHOW
* @scenario {response.noun} iso11783.p15.v0.m0.messages.ListEndpointsResponse
*/
Juha Backman
© Luonnonvarakeskus
TC Connect to EFDI Server
13.1.2021Juha Backman
© Luonnonvarakeskus
Connect to HTTP, MQTT and EFDI server
Send onboarding request to http://192.168.1.40:3123/onboard
Reply from server
Connecting to MQTT broker HOST:192.168.1.40 PORT:1883
Subscribe TOPIC commands/2141219c-af95-47e9-bbdb-e0145d616642
Send status to EFDI server
Send subscriptions to EFDI server
Send reference response
referenced_object {
[type.googleapis.com/iso11783.p15.v0.m0.messages.Capabilities] {
capabilities {
noun_type_url: "type.googleapis.com/iso11783.p10.v1.m0.messages.WorkOrder”
verb_direction_list {
verb: PROCESS
direction: SEND_RECEIVE
}
}
13.1.2021Juha Backman
© Luonnonvarakeskus
TC and FMIS are now connected to EFDI Server
13.1.2021Juha Backman
© Luonnonvarakeskus
FMIS continues polling TC clients…
Send endpointlist request to EFDI server
Topic: commands/bdca6a0f-8011-462a-8f74-2f0beac1205e
Received response type.googleapis.com/iso11783.p15.v0.m0.messages.ListEndpointsResponse
List of known endpoints:
id: 7125d634-5bb7-47fe-b6c4-6ee0e17741ce name: type: status:
13.1.2021Juha Backman
© Luonnonvarakeskus
FMIS send WorkOrder to TC
Send WorkOder to 7125d634-5bb7-47fe-b6c4-6ee0e17741ce
Topic: commands/bdca6a0f-8011-462a-8f74-2f0beac1205e
Received response type.googleapis.com/iso11783.p15.v0.m0.messages.ForwardInfo
Topic: commands/bdca6a0f-8011-462a-8f74-2f0beac1205e
Received response type.googleapis.com/iso11783.p10.v1.m0.messages.WorkOrderResponse
13.1.2021
Topic: commands/2141219c-af95-47e9-bbdb-e0145d616642
Received response type.googleapis.com/iso11783.p10.v1.m0.messages.WorkOrder
Send WorkOderResponse to 28fa24a0-b623-41bd-91ae-9f35d089c40b
Topic: commands/2141219c-af95-47e9-bbdb-e0145d616642
Received response type.googleapis.com/iso11783.p15.v0.m0.messages.ForwardInfo
TC receives WorkOrder
task-work.flow
/**
* Describes the handling of tasks between multiple endpoints.
* A planned task can be send to an endpoint.
* This planned task or any other task could be modified.
* In the end the completed work order is sent.
*
* @flow {id} iso11783.p10.v1.m0.task-work
* @flow {name} "Task Work"
* @flow {sequence} [iso11783.p10.v1.m0.planned-work-order]
* @flow {sequence} [iso11783.p10.v1.m0.modified-work-order]
* @flow {sequence} iso11783.p10.v1.m0.completed-work-order
*/
planned-work-order.scenario
/**
* A created task that shall be processed by the receiver.
*
* @scenario {id} iso11783.p15.v0.m0.planned-work-order
* @scenario {name} "Planned Work Order"
* @scenario {request.verb} PROCESS
* @scenario {request.noun} iso11783.p15.v0.m0.messages.WorkOrder
* @scenario {response.verb} ACKNOWLEDGE
* @scenario {response.noun} iso11783.p15.v0.m0.messages.WorkOrderResponse
*/
Juha Backman
© Luonnonvarakeskus
TC send FinishedWorkOrder to FMIS
Send FinishedWorkOder to Topic:commands/2141219c-af95-47e9-bbdb-e0145d616642
Received response type.googleapis.com/iso11783.p15.v0.m0.messages.ForwardInfo
13.1.2021
FMIS receives FinishedWorkOrder
Topic: commands/bdca6a0f-8011-462a-8f74-2f0beac1205e
Received response type.googleapis.com/iso11783.p10.v1.m0.messages.FinishedWorkOrder
completed-work-order.scenario
/**
* The endpoint completed a task.
* The task can be created by another endpoint but also be created by the endpoint
itself.
*
* @scenario {id} iso11783.p15.v0.m0.completed-work-order
* @scenario {name} "Completed Work Order"
* @scenario {request.verb} PROCESS
* @scenario {request.noun} iso11783.p15.v0.m0.messages.FinishedWorkOrder
* @scenario {response.verb} ACKNOWLEDGE
* @scenario {response.noun} iso11783.p15.v0.m0.messages.WorkOrderResponse
*/
Juha Backman
© Luonnonvarakeskus
TC disconnects from EFDI server
Send status to EFDI server
application_message_id: "{9e9c1302-b2ff-44e4-8e6f-e12c39ba876b}”
application_message_seq_no: 6
sensor_id: "b8fa65c4-cfd5-4308-a334-99fcfc4ea7d5”
capability_id: "0f00da34-187c-4885-b59c-a64ba953b7b9”
mode: PUBLISH
timestamp { seconds: 1551976533}
verb: NOTIFY
noun {
[type.googleapis.com/iso11783.p15.v0.m0.messages.ClientStatus] {
event: EXPECTED_OFFLINE
}}
13.1.2021Juha Backman
© Luonnonvarakeskus13.1.2021Juha Backman

More Related Content

What's hot

Socket programming using java
Socket programming using javaSocket programming using java
Socket programming using javaUC San Diego
 
Java Socket Programming
Java Socket ProgrammingJava Socket Programming
Java Socket ProgrammingVipin Yadav
 
Covert timing channels using HTTP cache headers
Covert timing channels using HTTP cache headersCovert timing channels using HTTP cache headers
Covert timing channels using HTTP cache headersyalegko
 
Socket Programming Tutorial
Socket Programming TutorialSocket Programming Tutorial
Socket Programming TutorialJignesh Patel
 
Socket programming-tutorial-sk
Socket programming-tutorial-skSocket programming-tutorial-sk
Socket programming-tutorial-sksureshkarthick37
 
HTTP2 and gRPC
HTTP2 and gRPCHTTP2 and gRPC
HTTP2 and gRPCGuo Jing
 
A Short Java Socket Tutorial
A Short Java Socket TutorialA Short Java Socket Tutorial
A Short Java Socket TutorialGuo Albert
 
Socket programming
Socket programmingSocket programming
Socket programmingharsh_bca06
 
Covert Timing Channels using HTTP Cache Headers
Covert Timing Channels using HTTP Cache HeadersCovert Timing Channels using HTTP Cache Headers
Covert Timing Channels using HTTP Cache HeadersDenis Kolegov
 
Use perl creating web services with xml rpc
Use perl creating web services with xml rpcUse perl creating web services with xml rpc
Use perl creating web services with xml rpcJohnny Pork
 
Application Layer and Socket Programming
Application Layer and Socket ProgrammingApplication Layer and Socket Programming
Application Layer and Socket Programmingelliando dias
 

What's hot (20)

Socket programming using java
Socket programming using javaSocket programming using java
Socket programming using java
 
Java sockets
Java socketsJava sockets
Java sockets
 
Java Socket Programming
Java Socket ProgrammingJava Socket Programming
Java Socket Programming
 
Make gRPC great again
Make gRPC great againMake gRPC great again
Make gRPC great again
 
Covert timing channels using HTTP cache headers
Covert timing channels using HTTP cache headersCovert timing channels using HTTP cache headers
Covert timing channels using HTTP cache headers
 
Socket Programming Tutorial
Socket Programming TutorialSocket Programming Tutorial
Socket Programming Tutorial
 
Sockets
SocketsSockets
Sockets
 
Network Sockets
Network SocketsNetwork Sockets
Network Sockets
 
Lecture10
Lecture10Lecture10
Lecture10
 
Socket programming-tutorial-sk
Socket programming-tutorial-skSocket programming-tutorial-sk
Socket programming-tutorial-sk
 
HTTP2 and gRPC
HTTP2 and gRPCHTTP2 and gRPC
HTTP2 and gRPC
 
A Short Java Socket Tutorial
A Short Java Socket TutorialA Short Java Socket Tutorial
A Short Java Socket Tutorial
 
Socket programming
Socket programmingSocket programming
Socket programming
 
Building Netty Servers
Building Netty ServersBuilding Netty Servers
Building Netty Servers
 
Covert Timing Channels using HTTP Cache Headers
Covert Timing Channels using HTTP Cache HeadersCovert Timing Channels using HTTP Cache Headers
Covert Timing Channels using HTTP Cache Headers
 
Use perl creating web services with xml rpc
Use perl creating web services with xml rpcUse perl creating web services with xml rpc
Use perl creating web services with xml rpc
 
Ppt of socket
Ppt of socketPpt of socket
Ppt of socket
 
Socket programming
Socket programmingSocket programming
Socket programming
 
Java socket programming
Java socket programmingJava socket programming
Java socket programming
 
Application Layer and Socket Programming
Application Layer and Socket ProgrammingApplication Layer and Socket Programming
Application Layer and Socket Programming
 

Similar to Teknologiapaiva 13012021-jaljitettavyys ja pilvipalvelut isobus-standardiin valmistajariippumattomasti

Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...
Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...
Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...Yoshifumi Kawai
 
Android Performance #4: Network
Android Performance #4: NetworkAndroid Performance #4: Network
Android Performance #4: NetworkYonatan Levin
 
Performance #4 network
Performance #4  networkPerformance #4  network
Performance #4 networkVitali Pekelis
 
CC++ echo serverThis assignment is designed to introduce network .pdf
CC++ echo serverThis assignment is designed to introduce network .pdfCC++ echo serverThis assignment is designed to introduce network .pdf
CC++ echo serverThis assignment is designed to introduce network .pdfsecunderbadtirumalgi
 
IPv4 Multicast Application Development
IPv4 Multicast Application DevelopmentIPv4 Multicast Application Development
IPv4 Multicast Application DevelopmentBob Quinn
 
Deploy mbed IoT cloud
Deploy mbed IoT cloudDeploy mbed IoT cloud
Deploy mbed IoT cloud艾鍗科技
 
Developing Driver Terminal for Forage Harvester with QML and Qt
Developing Driver Terminal for Forage Harvester with QML and QtDeveloping Driver Terminal for Forage Harvester with QML and Qt
Developing Driver Terminal for Forage Harvester with QML and QtBurkhard Stubert
 
7 hands on
7 hands on7 hands on
7 hands onvideos
 
Distributed Airline Reservation System
Distributed Airline Reservation SystemDistributed Airline Reservation System
Distributed Airline Reservation Systemamanchaurasia
 
Dpdk: rte_security: An update and introducing PDCP
Dpdk: rte_security: An update and introducing PDCPDpdk: rte_security: An update and introducing PDCP
Dpdk: rte_security: An update and introducing PDCPHemant Agrawal
 
Airline reservation system
Airline reservation systemAirline reservation system
Airline reservation systemdwitigajab
 
Linkmeup v076(2019-06).2
Linkmeup v076(2019-06).2Linkmeup v076(2019-06).2
Linkmeup v076(2019-06).2eucariot
 
CN_UNIT4.ppt notre knxckvj bjbDJKVHFL jb
CN_UNIT4.ppt notre knxckvj bjbDJKVHFL jbCN_UNIT4.ppt notre knxckvj bjbDJKVHFL jb
CN_UNIT4.ppt notre knxckvj bjbDJKVHFL jbPRADEEPERUKULLA2
 
CODE FOR echo_client.c A simple echo client using TCP #inc.pdf
CODE FOR echo_client.c A simple echo client using TCP  #inc.pdfCODE FOR echo_client.c A simple echo client using TCP  #inc.pdf
CODE FOR echo_client.c A simple echo client using TCP #inc.pdfsecunderbadtirumalgi
 
EWD 3 Training Course Part 6: What Happens when a QEWD Application is Started
EWD 3 Training Course Part 6: What Happens when a QEWD Application is StartedEWD 3 Training Course Part 6: What Happens when a QEWD Application is Started
EWD 3 Training Course Part 6: What Happens when a QEWD Application is StartedRob Tweed
 
CN_UNIT4.ppt ytutuim jykhjl fjghkhj gjjj
CN_UNIT4.ppt ytutuim jykhjl fjghkhj gjjjCN_UNIT4.ppt ytutuim jykhjl fjghkhj gjjj
CN_UNIT4.ppt ytutuim jykhjl fjghkhj gjjjPRADEEPERUKULLA2
 
2232016 Sample Implementation Plan1.htmlfileCUsers.docx
2232016 Sample Implementation Plan1.htmlfileCUsers.docx2232016 Sample Implementation Plan1.htmlfileCUsers.docx
2232016 Sample Implementation Plan1.htmlfileCUsers.docxeugeniadean34240
 
Rapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devicesRapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devicesciklum_ods
 

Similar to Teknologiapaiva 13012021-jaljitettavyys ja pilvipalvelut isobus-standardiin valmistajariippumattomasti (20)

Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...
Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...
Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...
 
Android Performance #4: Network
Android Performance #4: NetworkAndroid Performance #4: Network
Android Performance #4: Network
 
Performance #4 network
Performance #4  networkPerformance #4  network
Performance #4 network
 
CC++ echo serverThis assignment is designed to introduce network .pdf
CC++ echo serverThis assignment is designed to introduce network .pdfCC++ echo serverThis assignment is designed to introduce network .pdf
CC++ echo serverThis assignment is designed to introduce network .pdf
 
IPv4 Multicast Application Development
IPv4 Multicast Application DevelopmentIPv4 Multicast Application Development
IPv4 Multicast Application Development
 
Deploy mbed IoT cloud
Deploy mbed IoT cloudDeploy mbed IoT cloud
Deploy mbed IoT cloud
 
Developing Driver Terminal for Forage Harvester with QML and Qt
Developing Driver Terminal for Forage Harvester with QML and QtDeveloping Driver Terminal for Forage Harvester with QML and Qt
Developing Driver Terminal for Forage Harvester with QML and Qt
 
7 hands on
7 hands on7 hands on
7 hands on
 
Distributed Airline Reservation System
Distributed Airline Reservation SystemDistributed Airline Reservation System
Distributed Airline Reservation System
 
Dpdk: rte_security: An update and introducing PDCP
Dpdk: rte_security: An update and introducing PDCPDpdk: rte_security: An update and introducing PDCP
Dpdk: rte_security: An update and introducing PDCP
 
Airline reservation system
Airline reservation systemAirline reservation system
Airline reservation system
 
Cloud RPI4 tomcat ARM64
Cloud RPI4 tomcat ARM64Cloud RPI4 tomcat ARM64
Cloud RPI4 tomcat ARM64
 
Linkmeup v076(2019-06).2
Linkmeup v076(2019-06).2Linkmeup v076(2019-06).2
Linkmeup v076(2019-06).2
 
CN_UNIT4.ppt notre knxckvj bjbDJKVHFL jb
CN_UNIT4.ppt notre knxckvj bjbDJKVHFL jbCN_UNIT4.ppt notre knxckvj bjbDJKVHFL jb
CN_UNIT4.ppt notre knxckvj bjbDJKVHFL jb
 
Stackato Presentation Techzone 2013
Stackato Presentation Techzone 2013Stackato Presentation Techzone 2013
Stackato Presentation Techzone 2013
 
CODE FOR echo_client.c A simple echo client using TCP #inc.pdf
CODE FOR echo_client.c A simple echo client using TCP  #inc.pdfCODE FOR echo_client.c A simple echo client using TCP  #inc.pdf
CODE FOR echo_client.c A simple echo client using TCP #inc.pdf
 
EWD 3 Training Course Part 6: What Happens when a QEWD Application is Started
EWD 3 Training Course Part 6: What Happens when a QEWD Application is StartedEWD 3 Training Course Part 6: What Happens when a QEWD Application is Started
EWD 3 Training Course Part 6: What Happens when a QEWD Application is Started
 
CN_UNIT4.ppt ytutuim jykhjl fjghkhj gjjj
CN_UNIT4.ppt ytutuim jykhjl fjghkhj gjjjCN_UNIT4.ppt ytutuim jykhjl fjghkhj gjjj
CN_UNIT4.ppt ytutuim jykhjl fjghkhj gjjj
 
2232016 Sample Implementation Plan1.htmlfileCUsers.docx
2232016 Sample Implementation Plan1.htmlfileCUsers.docx2232016 Sample Implementation Plan1.htmlfileCUsers.docx
2232016 Sample Implementation Plan1.htmlfileCUsers.docx
 
Rapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devicesRapid java backend and api development for mobile devices
Rapid java backend and api development for mobile devices
 

More from Natural Resources Institute Finland (Luke) / Luonnonvarakeskus (Luke)

More from Natural Resources Institute Finland (Luke) / Luonnonvarakeskus (Luke) (20)

Seminar_abstracts_autumn_2022.pdf
Seminar_abstracts_autumn_2022.pdfSeminar_abstracts_autumn_2022.pdf
Seminar_abstracts_autumn_2022.pdf
 
Orgaanisten lannoitteiden hiilisyöte ja lannoitusvaikutus nurmen perustamis- ...
Orgaanisten lannoitteiden hiilisyöte ja lannoitusvaikutus nurmen perustamis- ...Orgaanisten lannoitteiden hiilisyöte ja lannoitusvaikutus nurmen perustamis- ...
Orgaanisten lannoitteiden hiilisyöte ja lannoitusvaikutus nurmen perustamis- ...
 
Metsäteollisuuden kuitulietteiden peltoviljelykäyttö karkeilla kivennäismailla
Metsäteollisuuden kuitulietteiden peltoviljelykäyttö karkeilla kivennäismaillaMetsäteollisuuden kuitulietteiden peltoviljelykäyttö karkeilla kivennäismailla
Metsäteollisuuden kuitulietteiden peltoviljelykäyttö karkeilla kivennäismailla
 
Maan fosforivarantojen ja lannoituksen tutkimiseen kehitettiin uusi tutkimusa...
Maan fosforivarantojen ja lannoituksen tutkimiseen kehitettiin uusi tutkimusa...Maan fosforivarantojen ja lannoituksen tutkimiseen kehitettiin uusi tutkimusa...
Maan fosforivarantojen ja lannoituksen tutkimiseen kehitettiin uusi tutkimusa...
 
Lajikkeen, korjuuajan ja katekalvon vaikutus
Lajikkeen, korjuuajan ja katekalvon vaikutusLajikkeen, korjuuajan ja katekalvon vaikutus
Lajikkeen, korjuuajan ja katekalvon vaikutus
 
Maaningan uudistettu huuhtoumamittauskenttä
Maaningan uudistettu huuhtoumamittauskenttäMaaningan uudistettu huuhtoumamittauskenttä
Maaningan uudistettu huuhtoumamittauskenttä
 
Sään ääri-iilmiöiden aiheuttama stressi näkyy timotein ja nurminadan rehuarvo...
Sään ääri-iilmiöiden aiheuttama stressi näkyy timotein ja nurminadan rehuarvo...Sään ääri-iilmiöiden aiheuttama stressi näkyy timotein ja nurminadan rehuarvo...
Sään ääri-iilmiöiden aiheuttama stressi näkyy timotein ja nurminadan rehuarvo...
 
Typpi-inhibiittori naudanlietteessä - koetuloksia kuivissa kasvuoloissa
Typpi-inhibiittori naudanlietteessä - koetuloksia kuivissa kasvuoloissaTyppi-inhibiittori naudanlietteessä - koetuloksia kuivissa kasvuoloissa
Typpi-inhibiittori naudanlietteessä - koetuloksia kuivissa kasvuoloissa
 
Kaupallisten nurmiseosten sadontuotto ja rehuarvo erilaisilla viljelystrategi...
Kaupallisten nurmiseosten sadontuotto ja rehuarvo erilaisilla viljelystrategi...Kaupallisten nurmiseosten sadontuotto ja rehuarvo erilaisilla viljelystrategi...
Kaupallisten nurmiseosten sadontuotto ja rehuarvo erilaisilla viljelystrategi...
 
Orgaanisten lannoitteiden ja kuitulietteiden vaikutus ravinteiden huuhtoutumi...
Orgaanisten lannoitteiden ja kuitulietteiden vaikutus ravinteiden huuhtoutumi...Orgaanisten lannoitteiden ja kuitulietteiden vaikutus ravinteiden huuhtoutumi...
Orgaanisten lannoitteiden ja kuitulietteiden vaikutus ravinteiden huuhtoutumi...
 
Seminar on Forest and Plant Health_Abstracts.pdf
Seminar on Forest and Plant Health_Abstracts.pdfSeminar on Forest and Plant Health_Abstracts.pdf
Seminar on Forest and Plant Health_Abstracts.pdf
 
Ukrainan sodan vaikutukset ruokamarkkinoihin ja metsäsektoriin -webinaari 1.4...
Ukrainan sodan vaikutukset ruokamarkkinoihin ja metsäsektoriin -webinaari 1.4...Ukrainan sodan vaikutukset ruokamarkkinoihin ja metsäsektoriin -webinaari 1.4...
Ukrainan sodan vaikutukset ruokamarkkinoihin ja metsäsektoriin -webinaari 1.4...
 
Nuorten visiot kestävästä ruoasta 2050
Nuorten visiot kestävästä ruoasta 2050Nuorten visiot kestävästä ruoasta 2050
Nuorten visiot kestävästä ruoasta 2050
 
Chasing the moving target: the role of emotions in strategic packaging decisions
Chasing the moving target: the role of emotions in strategic packaging decisionsChasing the moving target: the role of emotions in strategic packaging decisions
Chasing the moving target: the role of emotions in strategic packaging decisions
 
To pack or not to pack green: ympäristövastuullisen päätöksenteon haasteita
To pack or not to pack green: ympäristövastuullisen päätöksenteon haasteitaTo pack or not to pack green: ympäristövastuullisen päätöksenteon haasteita
To pack or not to pack green: ympäristövastuullisen päätöksenteon haasteita
 
Moving from cross-system interaction to cross-system collaboration?
Moving from cross-system interaction to cross-system collaboration? Moving from cross-system interaction to cross-system collaboration?
Moving from cross-system interaction to cross-system collaboration?
 
Visiot kestävästä ruokapakkaamisesta 2050
Visiot kestävästä ruokapakkaamisesta 2050Visiot kestävästä ruokapakkaamisesta 2050
Visiot kestävästä ruokapakkaamisesta 2050
 
Package design and the consumer panel
Package design and the consumer panelPackage design and the consumer panel
Package design and the consumer panel
 
Ruokapakkaamisen kulttuurit ja muutos
Ruokapakkaamisen kulttuurit ja muutosRuokapakkaamisen kulttuurit ja muutos
Ruokapakkaamisen kulttuurit ja muutos
 
Biopohjaiset pakkausmateriaalit: markkinat, raaka-aineet ja kestävyys
Biopohjaiset pakkausmateriaalit: markkinat, raaka-aineet ja kestävyysBiopohjaiset pakkausmateriaalit: markkinat, raaka-aineet ja kestävyys
Biopohjaiset pakkausmateriaalit: markkinat, raaka-aineet ja kestävyys
 

Recently uploaded

Orientation, design and principles of polyhouse
Orientation, design and principles of polyhouseOrientation, design and principles of polyhouse
Orientation, design and principles of polyhousejana861314
 
Analytical Profile of Coleus Forskohlii | Forskolin .pptx
Analytical Profile of Coleus Forskohlii | Forskolin .pptxAnalytical Profile of Coleus Forskohlii | Forskolin .pptx
Analytical Profile of Coleus Forskohlii | Forskolin .pptxSwapnil Therkar
 
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptx
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptxSOLUBLE PATTERN RECOGNITION RECEPTORS.pptx
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptxkessiyaTpeter
 
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.PraveenaKalaiselvan1
 
The Black hole shadow in Modified Gravity
The Black hole shadow in Modified GravityThe Black hole shadow in Modified Gravity
The Black hole shadow in Modified GravitySubhadipsau21168
 
Nanoparticles synthesis and characterization​ ​
Nanoparticles synthesis and characterization​  ​Nanoparticles synthesis and characterization​  ​
Nanoparticles synthesis and characterization​ ​kaibalyasahoo82800
 
Grafana in space: Monitoring Japan's SLIM moon lander in real time
Grafana in space: Monitoring Japan's SLIM moon lander  in real timeGrafana in space: Monitoring Japan's SLIM moon lander  in real time
Grafana in space: Monitoring Japan's SLIM moon lander in real timeSatoshi NAKAHIRA
 
Unlocking the Potential: Deep dive into ocean of Ceramic Magnets.pptx
Unlocking  the Potential: Deep dive into ocean of Ceramic Magnets.pptxUnlocking  the Potential: Deep dive into ocean of Ceramic Magnets.pptx
Unlocking the Potential: Deep dive into ocean of Ceramic Magnets.pptxanandsmhk
 
Recombination DNA Technology (Nucleic Acid Hybridization )
Recombination DNA Technology (Nucleic Acid Hybridization )Recombination DNA Technology (Nucleic Acid Hybridization )
Recombination DNA Technology (Nucleic Acid Hybridization )aarthirajkumar25
 
zoogeography of pakistan.pptx fauna of Pakistan
zoogeography of pakistan.pptx fauna of Pakistanzoogeography of pakistan.pptx fauna of Pakistan
zoogeography of pakistan.pptx fauna of Pakistanzohaibmir069
 
A relative description on Sonoporation.pdf
A relative description on Sonoporation.pdfA relative description on Sonoporation.pdf
A relative description on Sonoporation.pdfnehabiju2046
 
Behavioral Disorder: Schizophrenia & it's Case Study.pdf
Behavioral Disorder: Schizophrenia & it's Case Study.pdfBehavioral Disorder: Schizophrenia & it's Case Study.pdf
Behavioral Disorder: Schizophrenia & it's Case Study.pdfSELF-EXPLANATORY
 
GFP in rDNA Technology (Biotechnology).pptx
GFP in rDNA Technology (Biotechnology).pptxGFP in rDNA Technology (Biotechnology).pptx
GFP in rDNA Technology (Biotechnology).pptxAleenaTreesaSaji
 
Isotopic evidence of long-lived volcanism on Io
Isotopic evidence of long-lived volcanism on IoIsotopic evidence of long-lived volcanism on Io
Isotopic evidence of long-lived volcanism on IoSérgio Sacani
 
Dashanga agada a formulation of Agada tantra dealt in 3 Rd year bams agada tanta
Dashanga agada a formulation of Agada tantra dealt in 3 Rd year bams agada tantaDashanga agada a formulation of Agada tantra dealt in 3 Rd year bams agada tanta
Dashanga agada a formulation of Agada tantra dealt in 3 Rd year bams agada tantaPraksha3
 
All-domain Anomaly Resolution Office U.S. Department of Defense (U) Case: “Eg...
All-domain Anomaly Resolution Office U.S. Department of Defense (U) Case: “Eg...All-domain Anomaly Resolution Office U.S. Department of Defense (U) Case: “Eg...
All-domain Anomaly Resolution Office U.S. Department of Defense (U) Case: “Eg...Sérgio Sacani
 
Biopesticide (2).pptx .This slides helps to know the different types of biop...
Biopesticide (2).pptx  .This slides helps to know the different types of biop...Biopesticide (2).pptx  .This slides helps to know the different types of biop...
Biopesticide (2).pptx .This slides helps to know the different types of biop...RohitNehra6
 
Bentham & Hooker's Classification. along with the merits and demerits of the ...
Bentham & Hooker's Classification. along with the merits and demerits of the ...Bentham & Hooker's Classification. along with the merits and demerits of the ...
Bentham & Hooker's Classification. along with the merits and demerits of the ...Nistarini College, Purulia (W.B) India
 

Recently uploaded (20)

Orientation, design and principles of polyhouse
Orientation, design and principles of polyhouseOrientation, design and principles of polyhouse
Orientation, design and principles of polyhouse
 
Analytical Profile of Coleus Forskohlii | Forskolin .pptx
Analytical Profile of Coleus Forskohlii | Forskolin .pptxAnalytical Profile of Coleus Forskohlii | Forskolin .pptx
Analytical Profile of Coleus Forskohlii | Forskolin .pptx
 
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptx
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptxSOLUBLE PATTERN RECOGNITION RECEPTORS.pptx
SOLUBLE PATTERN RECOGNITION RECEPTORS.pptx
 
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.
BIOETHICS IN RECOMBINANT DNA TECHNOLOGY.
 
Engler and Prantl system of classification in plant taxonomy
Engler and Prantl system of classification in plant taxonomyEngler and Prantl system of classification in plant taxonomy
Engler and Prantl system of classification in plant taxonomy
 
The Black hole shadow in Modified Gravity
The Black hole shadow in Modified GravityThe Black hole shadow in Modified Gravity
The Black hole shadow in Modified Gravity
 
Nanoparticles synthesis and characterization​ ​
Nanoparticles synthesis and characterization​  ​Nanoparticles synthesis and characterization​  ​
Nanoparticles synthesis and characterization​ ​
 
9953056974 Young Call Girls In Mahavir enclave Indian Quality Escort service
9953056974 Young Call Girls In Mahavir enclave Indian Quality Escort service9953056974 Young Call Girls In Mahavir enclave Indian Quality Escort service
9953056974 Young Call Girls In Mahavir enclave Indian Quality Escort service
 
Grafana in space: Monitoring Japan's SLIM moon lander in real time
Grafana in space: Monitoring Japan's SLIM moon lander  in real timeGrafana in space: Monitoring Japan's SLIM moon lander  in real time
Grafana in space: Monitoring Japan's SLIM moon lander in real time
 
Unlocking the Potential: Deep dive into ocean of Ceramic Magnets.pptx
Unlocking  the Potential: Deep dive into ocean of Ceramic Magnets.pptxUnlocking  the Potential: Deep dive into ocean of Ceramic Magnets.pptx
Unlocking the Potential: Deep dive into ocean of Ceramic Magnets.pptx
 
Recombination DNA Technology (Nucleic Acid Hybridization )
Recombination DNA Technology (Nucleic Acid Hybridization )Recombination DNA Technology (Nucleic Acid Hybridization )
Recombination DNA Technology (Nucleic Acid Hybridization )
 
zoogeography of pakistan.pptx fauna of Pakistan
zoogeography of pakistan.pptx fauna of Pakistanzoogeography of pakistan.pptx fauna of Pakistan
zoogeography of pakistan.pptx fauna of Pakistan
 
A relative description on Sonoporation.pdf
A relative description on Sonoporation.pdfA relative description on Sonoporation.pdf
A relative description on Sonoporation.pdf
 
Behavioral Disorder: Schizophrenia & it's Case Study.pdf
Behavioral Disorder: Schizophrenia & it's Case Study.pdfBehavioral Disorder: Schizophrenia & it's Case Study.pdf
Behavioral Disorder: Schizophrenia & it's Case Study.pdf
 
GFP in rDNA Technology (Biotechnology).pptx
GFP in rDNA Technology (Biotechnology).pptxGFP in rDNA Technology (Biotechnology).pptx
GFP in rDNA Technology (Biotechnology).pptx
 
Isotopic evidence of long-lived volcanism on Io
Isotopic evidence of long-lived volcanism on IoIsotopic evidence of long-lived volcanism on Io
Isotopic evidence of long-lived volcanism on Io
 
Dashanga agada a formulation of Agada tantra dealt in 3 Rd year bams agada tanta
Dashanga agada a formulation of Agada tantra dealt in 3 Rd year bams agada tantaDashanga agada a formulation of Agada tantra dealt in 3 Rd year bams agada tanta
Dashanga agada a formulation of Agada tantra dealt in 3 Rd year bams agada tanta
 
All-domain Anomaly Resolution Office U.S. Department of Defense (U) Case: “Eg...
All-domain Anomaly Resolution Office U.S. Department of Defense (U) Case: “Eg...All-domain Anomaly Resolution Office U.S. Department of Defense (U) Case: “Eg...
All-domain Anomaly Resolution Office U.S. Department of Defense (U) Case: “Eg...
 
Biopesticide (2).pptx .This slides helps to know the different types of biop...
Biopesticide (2).pptx  .This slides helps to know the different types of biop...Biopesticide (2).pptx  .This slides helps to know the different types of biop...
Biopesticide (2).pptx .This slides helps to know the different types of biop...
 
Bentham & Hooker's Classification. along with the merits and demerits of the ...
Bentham & Hooker's Classification. along with the merits and demerits of the ...Bentham & Hooker's Classification. along with the merits and demerits of the ...
Bentham & Hooker's Classification. along with the merits and demerits of the ...
 

Teknologiapaiva 13012021-jaljitettavyys ja pilvipalvelut isobus-standardiin valmistajariippumattomasti

  • 1. © Luonnonvarakeskus© Luonnonvarakeskus Juha Backman / LUKE WP 2: Jäljitettävyys ja pilvipalvelut ISOBUS-standardiin valmistajariippumattomasti
  • 2. © Luonnonvarakeskus© Luonnonvarakeskus WP 2 T 2.1 EFDI Extended FMIS Data Interface
  • 4. © Luonnonvarakeskus Demonstraatio käytännössä 13.1.2021 WLAN USB LAN EFDI Client: TC EFDI Client: TC EFDI Client: FMIS EFDI Server Juha Backman
  • 5. © Luonnonvarakeskus CrossControl ISOBUS terminaali • CrossControl ISOBUS terminaali CCpilot VA • EFDI – Taustaohjelma ISOBUS terminaaliin: ”USB-tikun korvaaja” – Palvelinohjelma tietokoneelle tiedon lähetys/vastaanottoon • Käytetyt kirjastot – MQTT-kirjasto: mosquitto-1.4.15 – Protobuf: protobuf-3.5.1 – HTTP-yhteys, XML-parsinta: QT5 13.1.2021Juha Backman
  • 6. © Luonnonvarakeskus Raspberry Pi Zero W • Speksit – 1GHz, single-core CPU – 512MB RAM – Mini HDMI and USB On-The-Go ports – Micro USB power – 802.11 b/g/n wireless LAN – Bluetooth 4.1 • Sulautettu Linux – Voi konfiguroida erilaisiksi USB Gadgeteiksi → Näkyy terminaalille USB-tikkuna → Siirtää tallennetun XML-tiedoston EFDI protokollalla 13.1.2021Juha Backman
  • 7. © Luonnonvarakeskus EFDI Client: FMIS • EFDI Client prototyyppi toteutettu – Kirjautuu HTTP-yhteydellä EFDI onboard serverille – Avaa MQTT yhteyden ja kommunikoinnin EFDI serverille – Kysyy kaikkia serverille kirjautuneita EFDI Clienttejä 10 sekunnin välein – Luo jokaiselle Clientille paikalliset kansiot • /endpoints/<Client ID>/Inbox • /endpoints/<Client ID>/Outbox – Tarkkailee Outbox-kansiota: kun TASKDATA.XML tallennettu kansioon muuttaa XML:n protobuf-muotoon ja lähettää serverin kautta kyseselle clientille – Uuden taskin tullessa serveriltä tallentaa sen kyseisen clientin Inbox-kansioon 13.1.2021Juha Backman
  • 8. © Luonnonvarakeskus FMIS connects to EFDI Server 13.1.2021Juha Backman
  • 9. © Luonnonvarakeskus Connect to HTTP-server Send onboarding request to http://192.168.1.40:3123/onboard Reply from server authentication { certificate: "-----BEGIN RSA PRIVATE KEY----- [ .... ]" secret: "376f0940c2494a38bdd0208426f4a077” } connection_criteria { client_id: "bdca6a0f-8011-462a-8f74-2f0beac1205e" commands: "commands/bdca6a0f-8011-462a-8f74-2f0beac1205e" measures: "measures/bdca6a0f-8011-462a-8f74-2f0beac1205e" host: "tcp://192.168.1.40" port: "1883” } device_id: "bdca6a0f-8011-462a-8f74-2f0beac1205e” capability_id: "2b287272-110e-4e0d-907f-63865caed69b” sensor_id: "2546a359-a704-4ce3-8747-952ecf13255c" 13.1.2021 onboarding-process.flow /** * How to onboard to a network. * * @flow {id} iso11783.p15.v0.m0.onboarding-process * @flow {name} "Onboarding process" * @flow {sequence} iso11783.p15.v0.m0.onboarding-endpoint */ onboarding-endpoint.scenario /** * Desciption of how to onboard an endpoint. * * @scenario {id} iso11783.p15.v0.m0.onboarding-endpoint * @scenario {name} "Onboarding Endpoint" * @scenario {request.verb} PROCESS * @scenario {request.noun} iso11783.p15.v0.m0.messages.Onboarding * @scenario {response.verb} ACKNOWLEDGE * @scenario {response.noun} iso11783.p15.v0.m0.messages.OnboardingResponse */ Juha Backman
  • 10. © Luonnonvarakeskus Connect to MQTT and EFDI server Connecting to MQTT broker HOST:192.168.1.40 PORT:1883 Connected to MQTT broker Subscribe TOPIC commands/bdca6a0f-8011-462a-8f74-2f0beac1205e Send status to EFDI server application_message_id: "{6bbeb8cf-be0e-48c1-9d94-a800347b05df}” application_message_seq_no: 1 sensor_id: "2546a359-a704-4ce3-8747-952ecf13255c” capability_id: "2b287272-110e-4e0d-907f-63865caed69b” mode: PUBLISH timestamp { seconds: 1574244348 } reference: "{d9b6efb6-92b7-4028-a986-a0db53717aed}” verb: NOTIFY noun { [type.googleapis.com/iso11783.p15.v0.m0.messages.ClientStatus] { event: ONLINE } } 13.1.2021 client-information-exchange.flow /** * To exchange information about the current client status. * The client status is sent with mode PUBLISH when * - Connection to the server was established successfully (status ONLINE) * - The client wants to disconnecte (status EXPECTED_OFFLINE) * - The client has los its connection to the server (status UNEXPECTED_OFFLINE) * * @flow {id} iso11783.p15.v0.m0.client-information-exchange * @flow {name} "Client Information Exchange" * @flow {sequence} iso11783.p15.v0.m0.client-information * @flow {sequence} [iso11783.p10.v1.m0.reference-request] */ client-information.scenario /** * The client must send this message when it is successfully connected to the server. * The reception of a client status message must be confirmed by the server. * The message does not need to be confirmed by the server when the client is unintentionally offline (in case of UNEXPECTED_OFFLINE). * * @scenario {id} iso11783.p15.v0.m0.client-status * @scenario {name} "Client Status" * @scenario {request.verb} NOTIFY * @scenario {request.noun} iso11783.p15.v0.m0.messages.ClientStatus * @scenario {response.verb} CONFIRM * @scenario {response.noun} */ Juha Backman
  • 11. © Luonnonvarakeskus MQTT communication with protobuf: ”Send” 13.1.2021 request.proto syntax = "proto3"; package iso11783.p15.v0.m0.messages; import "google/protobuf/any.proto"; import "google/protobuf/timestamp.proto"; import "iso11783/p15/v0/m0/messages/chunk-component.proto"; import "iso11783/p15/v0/m0/messages/mode.proto"; import "iso11783/p15/v0/m0/messages/verb.proto"; /** * Message for ALL requests sent to the messaging component. */ message Request { string application_message_id = 1; // Client generated message ID. Used to uniquely identify the message on sender side int64 application_message_seq_no = 2; // Sequence number from the client indicates the order in which the messages were sent string sensor_id = 3; // ToDo string capability_id = 4; // ToDo Mode mode = 5; // The sending mode so the messaging component can properly process the message repeated string recipients = 6; // Directly addressed endpoints. Addressed by the messaging component message IDs ChunkComponent chunk_info = 7; // Used when transferring chunked messages. If the sent content inside the noun is not chunked, this must be empty google.protobuf.Timestamp timestamp = 8; // Client generated UTC timestamp at which the client sent the message string reference = 9; // ToDo uuid reference to description (like stream description) Verb verb = 10; // Verb for the scenario google.protobuf.Any noun = 11; // Noun and data of the scenario repeated google.protobuf.Any extension = 2048; // Used for proprietary purposes } Juha Backman
  • 12. © Luonnonvarakeskus MQTT communication with protobuf: ”Receive” 13.1.2021 response.proto syntax = "proto3"; package iso11783.p15.v0.m0.messages; import "google/protobuf/any.proto"; import "google/protobuf/timestamp.proto"; import "iso11783/p15/v0/m0/messages/verb.proto"; /** * Message for ALL messages sent from the messaging component. */ message Response { enum ResponseBodyType { MESSAGES = 0; } int32 response_code = 1; // HTTP Response Codes will be used here (200, 400, 201, etc) ResponseBodyType type = 2; // The Type of the body so that it can be decoded string application_message_id = 3; // ID generated by the endpoint string message_id = 4; // ID generated by messaging component google.protobuf.Timestamp timestamp = 5; // UTC Timestamp when this message was generated by the messaging component. Verb verb = 6; // Verb for the scenario google.protobuf.Any noun = 7; // Noun and data of the scenario string reference = 8; // Referenced object string sender_id = 9; // Initial sender of the message repeated google.protobuf.Any extension = 2048; // Used for proprietary purposes } void EFDIClient::MQTTMessageHandler(char * /* topic is not used */, int len, void *data) { // Handle received messages Response response; if(response.ParseFromArray(data,len)) { if(response.has_noun()) { qPrint() << "Received response " << response.noun().type_url().c_str() << endl; // TODO: What to do with this? if(response.noun().type_url() == "type.googleapis.com/iso11783.p15.v0.m0.messages.Reference") { Reference reference; if(!reference.ParseFromString(response.noun().value())) { qWarning() << "Unable to parse reference response" << endl; return; } SendReference(reference.reference().c_str(), response.sender_id().c_str()); } […….] Juha Backman
  • 13. © Luonnonvarakeskus Capabilities response Topic: commands/bdca6a0f-8011-462a-8f74-2f0beac1205e Received response type.googleapis.com/iso11783.p15.v0.m0.messages.Reference Send reference response verb: SHOW noun { [type.googleapis.com/iso11783.p15.v0.m0.messages.ReferenceResponse] { reference: "{d9b6efb6-92b7-4028-a986-a0db53717aed}" referenced_object { [type.googleapis.com/iso11783.p15.v0.m0.messages.Capabilities] { capabilities { noun_type_url: "type.googleapis.com/iso11783.p10.v1.m0.messages.FinishedWorkOrder" verb_direction_list { verb: PROCESS direction: SEND_RECEIVE } } } } }} 13.1.2021 reference-request.scenario /** * Endpoint A sends a reference request to endpoint B. * The reference was sent by endpoint B. * Endpoint A wants to know to which message endpoint B references. * Endpoint B responds with the message that is referenced by the sent reference. * The request must be sent with mode DIRECT and endpoint B must be the recipient. * The response must be sent with mode DIRECT and endpoint A must be the recipient. * * @scenario {id} iso11783.p15.v0.m0.reference-request * @scenario {name} "Reference Request" * @scenario {request.verb} GET * @scenario {request.noun} iso11783.p15.v0.m0.messages.Reference * @scenario {response.verb} SHOW * @scenario {response.noun} iso11783.p15.v0.m0.messages.ReferenceResponse */ Juha Backman
  • 14. © Luonnonvarakeskus Send subscriptions to EFDI server Send subscriptions to EFDI server mode: PUBLISH verb: PROCESS noun { [type.googleapis.com/iso11783.p15.v0.m0.messages.Subscriptions] { subscriptions { noun_verb_list { noun_type_url: "type.googleapis.com/iso11783.p10.v1.m0.messages.FinishedWorkOrder” verbs: PROCESS } } }} Topic: commands/bdca6a0f-8011-462a-8f74-2f0beac1205e Received response type.googleapis.com/iso11783.p15.v0.m0.messages.SubscriptionsResponse 13.1.2021 subscriptions-exchange.flow /** * The subscriptions should be exchanged when the client connects to the server for the first time. * Before removing subscriptions by sending an unsubscriptions message, the endpoint needs to send a subscriptions message. * * @flow {id} iso11783.p15.v0.m0.subscriptions-exchange * @flow {name} "Subscriptions Exchange" * @flow {sequence} iso11783.p15.v0.m0.send-subscriptions * @flow {sequence} [iso11783.p15.v0.m0.send-unsubscriptions] */ send-subscriptions.scenario /** * Messages that are sent with mode PUBLISH or PUBLISH_WITH_DIRECT are not forwarded to any endpoint by default. * An endpoint needs to subscribe to these messages in order to receive them. * By sending a subscriptions message the endpoint announces that it want to receive these messages. * * @scenario {id} iso11783.p15.v0.m0.send-subscriptions * @scenario {name} "Send Subscriptions" * @scenario {request.verb} PROCESS * @scenario {request.noun} iso11783.p15.v0.m0.messages.Subscriptions * @scenario {response.verb} ACKNOWLEDGE * @scenario {response.noun} iso11783.p15.v0.m0.messages.SubscriptionsResponse */ Juha Backman
  • 15. © Luonnonvarakeskus Request information from EFDI server Send endpointlist request to EFDI server application_message_id: "{d56e03c9-544b-4504-9b54-d795b7e0c99c}” application_message_seq_no: 4 sensor_id: "2546a359-a704-4ce3-8747-952ecf13255c” capability_id: "2b287272-110e-4e0d-907f-63865caed69b” mode: PUBLISH timestamp { seconds: 1574244358 } verb: GET noun { [type.googleapis.com/iso11783.p15.v0.m0.messages.ListEndpoints] { capabilities { noun_type_url: "type.googleapis.com/iso11783.p10.v1.m0.messages.WorkOrder” verb_direction_list { verb: PROCESS direction: SEND_RECEIVE } } }} Topic: commands/bdca6a0f-8011-462a-8f74-2f0beac1205e Received response type.googleapis.com/iso11783.p15.v0.m0.messages.ListEndpointsResponse 13.1.2021 list-endpoints-exchange.flow /** * How to request a list of endpoints. * * @flow {id} iso11783.p15.v0.m0.list-endpoints-exchange * @flow {name} "List Endpoints Exchange" * @flow {sequence} iso11783.p15.v0.m0.send-list-endpoints */ send-list-endpoints.scenario /** * To get a list of endpoints currently available on the server network. * * @scenario {id} iso11783.p15.v0.m0.send-list-endpoints * @scenario {name} "Send List Endpoints" * @scenario {request.verb} GET * @scenario {request.noun} iso11783.p15.v0.m0.messages.ListEndpoints * @scenario {response.verb} SHOW * @scenario {response.noun} iso11783.p15.v0.m0.messages.ListEndpointsResponse */ Juha Backman
  • 16. © Luonnonvarakeskus TC Connect to EFDI Server 13.1.2021Juha Backman
  • 17. © Luonnonvarakeskus Connect to HTTP, MQTT and EFDI server Send onboarding request to http://192.168.1.40:3123/onboard Reply from server Connecting to MQTT broker HOST:192.168.1.40 PORT:1883 Subscribe TOPIC commands/2141219c-af95-47e9-bbdb-e0145d616642 Send status to EFDI server Send subscriptions to EFDI server Send reference response referenced_object { [type.googleapis.com/iso11783.p15.v0.m0.messages.Capabilities] { capabilities { noun_type_url: "type.googleapis.com/iso11783.p10.v1.m0.messages.WorkOrder” verb_direction_list { verb: PROCESS direction: SEND_RECEIVE } } 13.1.2021Juha Backman
  • 18. © Luonnonvarakeskus TC and FMIS are now connected to EFDI Server 13.1.2021Juha Backman
  • 19. © Luonnonvarakeskus FMIS continues polling TC clients… Send endpointlist request to EFDI server Topic: commands/bdca6a0f-8011-462a-8f74-2f0beac1205e Received response type.googleapis.com/iso11783.p15.v0.m0.messages.ListEndpointsResponse List of known endpoints: id: 7125d634-5bb7-47fe-b6c4-6ee0e17741ce name: type: status: 13.1.2021Juha Backman
  • 20. © Luonnonvarakeskus FMIS send WorkOrder to TC Send WorkOder to 7125d634-5bb7-47fe-b6c4-6ee0e17741ce Topic: commands/bdca6a0f-8011-462a-8f74-2f0beac1205e Received response type.googleapis.com/iso11783.p15.v0.m0.messages.ForwardInfo Topic: commands/bdca6a0f-8011-462a-8f74-2f0beac1205e Received response type.googleapis.com/iso11783.p10.v1.m0.messages.WorkOrderResponse 13.1.2021 Topic: commands/2141219c-af95-47e9-bbdb-e0145d616642 Received response type.googleapis.com/iso11783.p10.v1.m0.messages.WorkOrder Send WorkOderResponse to 28fa24a0-b623-41bd-91ae-9f35d089c40b Topic: commands/2141219c-af95-47e9-bbdb-e0145d616642 Received response type.googleapis.com/iso11783.p15.v0.m0.messages.ForwardInfo TC receives WorkOrder task-work.flow /** * Describes the handling of tasks between multiple endpoints. * A planned task can be send to an endpoint. * This planned task or any other task could be modified. * In the end the completed work order is sent. * * @flow {id} iso11783.p10.v1.m0.task-work * @flow {name} "Task Work" * @flow {sequence} [iso11783.p10.v1.m0.planned-work-order] * @flow {sequence} [iso11783.p10.v1.m0.modified-work-order] * @flow {sequence} iso11783.p10.v1.m0.completed-work-order */ planned-work-order.scenario /** * A created task that shall be processed by the receiver. * * @scenario {id} iso11783.p15.v0.m0.planned-work-order * @scenario {name} "Planned Work Order" * @scenario {request.verb} PROCESS * @scenario {request.noun} iso11783.p15.v0.m0.messages.WorkOrder * @scenario {response.verb} ACKNOWLEDGE * @scenario {response.noun} iso11783.p15.v0.m0.messages.WorkOrderResponse */ Juha Backman
  • 21. © Luonnonvarakeskus TC send FinishedWorkOrder to FMIS Send FinishedWorkOder to Topic:commands/2141219c-af95-47e9-bbdb-e0145d616642 Received response type.googleapis.com/iso11783.p15.v0.m0.messages.ForwardInfo 13.1.2021 FMIS receives FinishedWorkOrder Topic: commands/bdca6a0f-8011-462a-8f74-2f0beac1205e Received response type.googleapis.com/iso11783.p10.v1.m0.messages.FinishedWorkOrder completed-work-order.scenario /** * The endpoint completed a task. * The task can be created by another endpoint but also be created by the endpoint itself. * * @scenario {id} iso11783.p15.v0.m0.completed-work-order * @scenario {name} "Completed Work Order" * @scenario {request.verb} PROCESS * @scenario {request.noun} iso11783.p15.v0.m0.messages.FinishedWorkOrder * @scenario {response.verb} ACKNOWLEDGE * @scenario {response.noun} iso11783.p15.v0.m0.messages.WorkOrderResponse */ Juha Backman
  • 22. © Luonnonvarakeskus TC disconnects from EFDI server Send status to EFDI server application_message_id: "{9e9c1302-b2ff-44e4-8e6f-e12c39ba876b}” application_message_seq_no: 6 sensor_id: "b8fa65c4-cfd5-4308-a334-99fcfc4ea7d5” capability_id: "0f00da34-187c-4885-b59c-a64ba953b7b9” mode: PUBLISH timestamp { seconds: 1551976533} verb: NOTIFY noun { [type.googleapis.com/iso11783.p15.v0.m0.messages.ClientStatus] { event: EXPECTED_OFFLINE }} 13.1.2021Juha Backman