martinhej / robopoint
robopoint is the gateway to robocloud for simple devices.
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 0
Open Issues: 2
Type:project
Requires
- php: ^7.1.3
- ext-iconv: *
- aws/aws-sdk-php: ^3.52
- friendsofsymfony/rest-bundle: ^2.3
- martinhej/robocloud: @dev
- sensio/framework-extra-bundle: ^5.1
- symfony/asset: ^4.0
- symfony/console: ^4.0
- symfony/debug-pack: *
- symfony/expression-language: ^4.0
- symfony/flex: ^1.0
- symfony/form: ^4.0
- symfony/framework-bundle: ^4.0
- symfony/lts: ^4@dev
- symfony/monolog-bundle: ^3.1
- symfony/orm-pack: *
- symfony/process: ^4.0
- symfony/security-bundle: ^4.0
- symfony/serializer-pack: ^1.0
- symfony/swiftmailer-bundle: ^3.1
- symfony/twig-bundle: ^4.0
- symfony/validator: ^4.0
- symfony/web-link: ^4.0
- symfony/webpack-encore-pack: *
- symfony/yaml: ^4.0
Requires (Dev)
- symfony/browser-kit: ^4.0
- symfony/css-selector: ^4.0
- symfony/dotenv: ^4.0
- symfony/maker-bundle: ^1.0
- symfony/phpunit-bridge: ^4.0
- symfony/profiler-pack: *
- symfony/web-server-bundle: ^4.0
Conflicts
This package is not auto-updated.
Last update: 2024-11-10 05:56:36 UTC
README
As the headline suggests the purpose of this web app is to provide easier access to robocloud for devices for which it would be too difficult to interact directly. Here are a few concrete examples:
- A simple unit based on an ESP chip is sending meteorology measurement data to robocloud for further processing.
- Robotic mouse that is following a line is seeking a buddy to get help to find the lost line.
- Two maze solvers want to share info on the shortest track to get through a maze.
Installation
-
Make sure you read the robocloud README.md file first (https://github.com/martinhej/robocloud/blob/master/README.md) to learn about the basics.
-
In your symfony project run:
composer require martinhej/robopoint
-
Copy the
robopoint.yaml.dist
torobopoint.yaml
. You can also move a copy of the file into desiredpackages
directory to handle environment specific configuration. -
After addressing Kinesis specific settings (and DynamoDB in case you are going to store messages in DynamoDB table) make sure the
message_schema_dir
andrecovery_file
path settings are correct. -
Deploy to a server of your choice or use the Symfony server bundle
bin/console server:run
.
Push messages to stream
At this moment the only reference point for available endpoints is the
robopoint\Controller\Api\V1\MessageController
class. The REST API is far from what
it should be and its initial structure is in progress.
POST at the /messages/
endpoint your first message into the stream. I.e. try
{ "messages": [ { "roboId":"robogarden", "purpose":"garden.water_pump.start", "data":{ "pumpId":"demo", "runTime":"3200" } } ] }
If you get 200 response it should contain the message id and time:
{ "messages": [ { "messageId": "92089bf40a4ed3a623ba6140fa2a520ab77fcb6d", "messageTime": "2018-05-30T15:13:21+0000" } ] }
Read messages
Visit api/v1/messages/robo1/read-by-purpose/garden.water_pump.start
to read
the message you just sent.
The response contains messages
and lag
. The lag
is the time in microseconds
behind the latest message in the stream.