aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: db6eeeb781b79c461435788c4ebe4471967c617e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
HVAC bindings and client application for Application Framework Binder
=====================================================================

_(Application Framework Binder can be found on https://gerrit.automotivelinux.org/gerrit/#/admin/projects/src/app-framework-binder)_

Installation
------------

Download and install IoT.bzh docker image and sdk.

    1. Follow [this guide](http://iot.bzh/download/public/2016/sdk/AGL-Devkit-Image-and-SDK-for-porter.pdf)
       to get your docker ready and running.

    2. Check out this repository
       git clone https://gerrit.automotivelinux.org/gerrit/src/hvacplugin -c b sandbox/claneys/hvac-bindings

Build project
-------------

Get into build directory under hvacplugin repo and build the widget:

    - cd hvacplugin/build

    - cmake .. && make

It will build the binding with QML Frontend and package all that into a wgt file
named : hvac-demo.wgt

Install and test the widget
--------------------------

### Installation

Transfer the wgt file on your platform with scp :

```C
     $ scp hvac-demo.wgt root@<your_porter_board>:/tmp

```
than install it using afm-util:

```C
    # afm-util install /tmp/hvac-demo.wgt
    { "added": "hvac-demo@0.1" }

```
### Test

You can launch bindings using the afb-daemon, starting them manually like this,
don't forget to change <chosen_port> and <chosen_token> by your choice using an
unused port and a random number for the security token:

```C
# /usr/bin/afb-daemon --ldpaths=/usr/lib/afb:/usr/share/afm/applications/hvac-demo/0.1/lib --mode=local --alias=/icons:/usr/share/afm/icons --port=<chosen_port> --rootdir=/usr/share/afm/applications/hvac-demo/0.1 --roothttp=htdocs --token=<chosen_token> --sessiondir=/home/root/app-data/hvac-demo/.afb-daemon &
NOTICE: binding [/usr/lib/afb/afb-dbus-binding.so] calling registering function afbBindingV1Register
NOTICE: binding /usr/lib/afb/afb-dbus-binding.so loaded with API prefix dbus
NOTICE: binding [/usr/lib/afb/authLogin.so] calling registering function afbBindingV1Register
NOTICE: binding /usr/lib/afb/authLogin.so loaded with API prefix auth
NOTICE: binding [/usr/share/afm/applications/hvac-demo/0.1/lib/hvac-demo.so] calling registering function afbBindingV1Register
NOTICE: binding /usr/share/afm/applications/hvac-demo/0.1/lib/hvac-demo.so loaded with API prefix hvac
NOTICE: Waiting port=12357 rootdir=/usr/share/afm/applications/hvac-demo/0.1
NOTICE: Browser URL= http:/*localhost:12357
```

With bindings launched you can now test them using afb-client-demo as you have
to communicate with bindings using WebSocket protocol. When connection 
established you can dialog with binding using api/verbs from application
framework and running bindings. At first, try to authenticate with ```auth
connect``` which will renew token and create a new session context for the running
app.

Then test following verbs using api ***hvac***:

    - ping : Ping the binder
    - get_temp_left_zone : Get the left zone temperature
    - get_temp_right_zone : Get the right zone temperature
    - get_fanspeed : Read fan speed
    - get : Read all values
    - set : Set value(s)

```C
# afb-client-demo ws://localhost:<chosen_port>/api?token=<chosen_token>
hvac get
ON-REPLY 1:hvac/get: {"response":{"LeftTemperature":21,"RightTemperature":21,"FanSpeed":0},"jtype":"afb-reply","request":{"status":"success","uuid":"f6175a3f-f57a-49ae-80f5-d215abd6e24c"}}
hvac get_temp_left_zone
ON-REPLY 2:hvac/get_temp_left_zone: {"response":{"LeftTemperature":21},"jtype":"afb-reply","request":{"status":"success","info":"Left zone Temperature is:21 query=\"null\""}}
hvac set {"FanSpeed":23, "RightTemperature": 55, "LeftTemperature": 54}
ON-REPLY 3:hvac/set: {"response":{"FanSpeed":23,"RightTemperature":55,"LeftTemperature":54},"jtype":"afb-reply","request":{"status":"success","info":"HVAC settings updated"}}
hvac get_all
ON-REPLY 4:hvac/get_all: {"response":{"LeftTemperature":54,"RightTemperature":55,"FanSpeed":23},"jtype":"afb-reply","request":{"status":"success"}}
hvac set {"FanSpeed":23}
ON-REPLY 5:hvac/set: {"response":{"FanSpeed":23},"jtype":"afb-reply","request":{"status":"success","info":"HVAC settings updated"}}
hvac get_all
ON-REPLY 6:hvac/get_all: {"response":{"LeftTemperature":54,"RightTemperature":55,"FanSpeed":23},"jtype":"afb-reply","request":{"status":"success"}}
```

TODO: QML files aren't modified to fit with bindings for now. They have to be modified to make hybrid application works.