Hi Avgustin,
> as far as I see the HonoClient provides only support for backend apps to send commands (CommandClient) upstream to protocol adapters. However, there are not facilities for
a protocol adapter >to consume commands and to send downstream command responses.
> see such utilities in hono-service-base but they seem to be different level of services (not of the level of CommandClient, MessageSender, RegistrationClient, CredentialsClient).
from our point of view we consider
applications (implementing any IoT-Use-Case) and protocol adapters (that integrate devices by offering a specific protocol and provide Hono’s Messaging patterns like telemetry or Command and Control for this protocol) to be on different levels.
Both levels should be as easy to be implemented as possible, but they have different requirements.
Applications are typical clients, and thus are supported by the HonoClient. All applications share the same mechanism to send a command e.g., so the HonoClient is for all different
applications the same. The HonoClient should be complete, but as simple as possible.
Protocol adapters, however, differ a lot in how they map a command e.g. to the protocol, so they are supported by providing several methods via the AbstractProtocolAdapterBase
class.
These are specifically:
-
createCommandConsumer
-
closeCommandConsumer
-
createCommandResponseSender
-
sendCommandResponse
-
failCommand
This seems to be more suitable than putting it into the HonoClient, which is not meant for that and would suffer a lot regarding simplicity if we attempted it.
Additionally, the HonoClient is provided for being used outside of Hono – and a protocol adapter is an essential part of Hono’s internal architecture, even if it is a custom
protocol adapter.
>Do you plan to make Commands & Control first level citizen of HonoClient and provide CommandResponseSender and CommandConsumer on the HonoClient level? Or you have chosen to
leave >all the low-level implementation to the protocol adapters?
I think I gave the answer already – we will not support protocol adapters via the HonoClient, but will stay with our abstract base class, which is extended by all protocol adapters.
But I would not call it “low level”, maybe you can be more specific on that?
If there are any questions, remarks or improvements – please do not hesitate to ask and discuss, or even provide a pull request or write an issue!
I hope I could help you with your question…
Mit freundlichen Grüßen / Best regards
Karsten Frank
(INST/ECS4)
Bosch Software Innovations GmbH | Ullsteinstr. 128 | 12109 Berlin |
GERMANY |
www.bosch-si.com
Sitz: Berlin, Registergericht: Amtsgericht Charlottenburg; HRB 148411 B
Aufsichtsratsvorsitzender: Dr.-Ing. Thorsten Lücke; Geschäftsführung: Dr. Stefan Ferber, Michael Hahn
From: hono-dev-bounces@xxxxxxxxxxx <hono-dev-bounces@xxxxxxxxxxx>
On Behalf Of Marinov Avgustin (INST/ECS8)
Sent: Montag, 6. August 2018 13:28
To: hono developer discussions <hono-dev@xxxxxxxxxxx>
Subject: [hono-dev] Commands & Control in HonoClient
Hi all,
as far as I see the HonoClient provides only support for backend apps to send commands (CommandClient) upstream to protocol adapters. However, there are not facilities for a
protocol adapter to consume commands and to send downstream command responses.
I see such utilities in hono-service-base but they seem to be different level of services (not of the level of CommandClient, MessageSender, RegistrationClient, CredentialsClient).
Do you plan to make Commands & Control first level citizen of HonoClient and provide CommandResponseSender and CommandConsumer on the HonoClient level? Or you have chosen to
leave all the low-level implementation to the protocol adapters?
Personally I think that these facilities shall be available via HonoClient, but I don’t see open issues for adding such support.
Поздрави / Best regards,
Avgustin Marinov
Engineering Cloud Services Device Manager
(INST/ECS8)
Bosch Software Innovations EOOD | 47B Tsarigradsko Shose | Sofia 1124 |
BULGARIA |
www.bosch-si.com
Tel. +359 2 9055801 | Mobile +359 889 464664 | Fax +359 2 9532617 |
Avgustin.Marinov@xxxxxxxxxxxx