/jasonEmbedded

A Spin-off Version of Jason for IoT and Embedded Multiagent Systems

Primary LanguageJavaCreative Commons Attribution 4.0 InternationalCC-BY-4.0

jasonEmbedded

jasonEmbedded
Embedded artificial intelligence in Internet of Things (IoT) devices is presented as an option to reduce connectivity dependence, allowing decision-making directly at the edge computing layer.The Multi-agent Systems (MAS) embedded into IoT devices enables, in addition to the ability to perceive and act in the environment, new characteristics like pro-activity, deliberation, and collaboration capabilities to these devices. A few new frameworks and extensions enable the construction of agent-based IoT devices. However, no framework allows constructing them with hardware control, adaptability, and fault tolerance, besides agents’ communicability and mobility.
This project presents an extension of the Jason framework for developing Embedded MAS with BDI agents capable of controlling hardware, communicating, and moving between IoT devices capable of dealing with fault tolerance.

How to Install?

DESCRIPTION

Agent New Action Description
ARGO .argo.port(S) Defines a serial communication port with an IoT low-end device. Where S is a literal that represents a serial port (i.e., ttyACM0).
.argo.limit(N) Defines an interval for the cycle of environmental perception. Where N is a positive number (N>0) that represents an interval in milliseconds
.argo.percepts(close|open) Listens or not the environmental perceptions.
.argo.act(O) Sends an order to the IoT low-end device to execute. Where O is a literal that represents an order for the microcontroller to execute.
Hermes .hermes.configureContextNetConnection( "X",G,E,U) Configures an ContextNet network. Where X is a string that represents an network name; G is a literal that represents the FQDN or the network address of an gateway; E is a number that represents the network port of an gateway; U is a literal that represents the identification of the device in the network.
.hermes.connect("X") Joins at "X" ContextNet network.
.hermes.sendOut(D,f,M) Dispatches a message to another MAS. Where D is a literal that represents the identification of the recipient MAS; f is a illocutionary force (tell | untell | achieve | unachieve); M is a literal that represents the message.
.hermes.moveOut(D,b,A) Carries over the agents to other MAS. Where D is a literal that represents the identification of the recipient MAS; b is a bio-inspired protocol (inquilinism | mutualism | predation); A is one, all, or a set of agents (i.e., all, agent or [agent1, agent2, agentn])
.hermes.disconnect("X"); Disconnects at "X" ContextNet network.
Mailer .mailer.credentials(E,K) Set email credentials. Where E is a string that represents the email account (e.g., "agent@example.com"); K is a string that represents the e-mail password.
.mailer.eMailService([I,p],[O,q]) Set email provider configurations. Where I is a string that represents the FQDN of the input e-mail server (e.g., "imap.example.com"); p is a literal that represents the input protocol (e.g., imaps); O is a string that represents the FQDN of the output email server(e.g., "smtp.example.com"); q is a literal that represents the output protocol (e.g., smtpOverTLS).
.mailer.sendEMail(D,f,M) Dispatches a email message to another MAS or Human. Where D is a literal that represents the destination email recipient; f is a illocutionary force (tell | untell | achieve | unachieve); M is a literal that represents the message.
Jason .velluscinum.buildWallet(w) Generates a digital wallet and returns the belief: w(P,Q). Where P e Q are literals that represent the agent's key pair.
.velluscinum.deployNFT(S,P,Q,I,M,b) Registers an asset and returns the belief: b(A). Where A is a literal that represents a indivisible asset; S is a literal that represents the address of a DLT node; P and Q are literals that represent the agent's key pair; I is a key-value array that represents the immutable data of an asset; M is a key-value array representing asset or transaction metadata;
.velluscinum.transferNFT(S,P,Q,A,R,M,b) Transfers an asset and returns the belief: b(T). Where T is a literal that represents a transaction performed in the DTL; S is a literal that represents the address of a DLT node; P and Q are literals that represent the agent's key pair; A is a literal that represents a indivisible asset; R is a literal that represents the public key of a recipient agent; M is a key-value array representing asset or transaction metadata;
.velluscinum.deployToken(S,P,Q,I,V,b) Creates V units from an asset, returns the belief: b(C). Where C is a literal that represents a divisible asset; S is a literal that represents the address of a DLT node; P and Q are literals that represent the agent's key pair; I is a key-value array that represents the immutable data of an asset.
.velluscinum.transferToken(S,P,Q,C,R,V,b) Transfers V units of C and returns the belief: b(T). Where T is a literal that represents a transaction performed in the DTL; S is a literal that represents the address of a DLT node; P and Q are literals that represent the agent's key pair; C is a literal that represents a divisible asset; R is a literal that represents the public key of a recipient agent; V is a literal that represents the number of parts of a C.
.velluscinum.stampTransaction(S,P,Q,T) Stamps a transaction (T). Where S is a literal that represents the address of a DLT node; P and Q are literals that represent the agent's key pair.
.velluscinum.tokenBalance(S,P,Q,C,q) Check the wallet Q and return the belief: q(C,V). Where C is a literal that represents a divisible asset; V is a literal that represents the number of parts of a C; S is a literal that represents the address of a DLT node; P and Q are literals that represent the agent's key pair.

Publications

COPYRIGHT

Creative Commons License
jasonEmbedded is licensed under a Creative Commons Attribution 4.0 International License. The licensor cannot revoke these freedoms as long as you follow the license terms:

  • Attribution — You must give appropriate credit like below:

Pantoja, C.E., Jesus, V.S.d., Lazarin, N.M., Viterbo, J. (2023). A Spin-off Version of Jason for IoT and Embedded Multi-Agent Systems. In: Naldi, M.C., Bianchi, R.A.C. (eds) Intelligent Systems. BRACIS 2023. Lecture Notes in Computer Science(), vol 14195. Springer, Cham. https://doi.org/10.1007/978-3-031-45368-7_25

Bibtex citation format
@InProceedings{jasonEmbedded,
doi="10.1007/978-3-031-45368-7_25",
author="Pantoja, Carlos Eduardo
and Jesus, Vinicius Souza de
and Lazarin, Nilson Mori
and Viterbo, Jos{\'e}",
editor="Naldi, Murilo C.
and Bianchi, Reinaldo A. C.",
title="A Spin-off Version of Jason for IoT and Embedded Multi-Agent Systems",
booktitle="Intelligent Systems",
year="2023",
publisher="Springer Nature Switzerland",
address="Cham",
pages="382--396",
isbn="978-3-031-45368-7"
}