# Topics To Be Covered In This Post #
- What I did this week
- Communication with Kuksa.val
- Skeleton code for GUI using PyQt5
- Navigation widget for IC
- What I plan to do next
# Communication With Kuksa.val #
Continuing with the progress made last week regarding communication with Kuksa-val-server using a bridged network, I tried to enable IP routing to make the traffic at 10.10.10.204 also accessible at localhost 127.0.0.1, but that did not work.
Therefore, we run the kuksa-val-server on IP address 0.0.0.0, which is a special IP address known as the “default route” or “unspecified address”. It is used to indicate that traffic should be sent to all interfaces on a machine, regardless of their individual IP addresses.
This allows us to sidestep the hassle of setting a dedicated IP address to communicate with Kuksa. Based on these developments, I then modified the Kuksa-client config in my demo application, AGL-Kuksa.val-Visualiser for testing its functionality, The changes made in main.py
were:
.
.
.
config = {
"ip": '10.10.10.203',
"port": "8090",
'protocol': 'ws',
'insecure': True,
}
.
.
.
Running AGL Image : #
We then run the QEMU instance the same as before (this time without a VNC viewer).
sudo qemu-system-x86_64 -device virtio-net-pci,\
netdev=net0, mac=52:54:00:12:35:02 -netdev \
bridge,br=br0,id=net0 -drive \
file=\
agl-cluster-demo-platform-flutter-qemux86-64.ext4 \
,if=virtio,format=raw -usb -usbdevice tablet \
-device virtio-rng-pci -snapshot -vga virtio \
-soundhw hda -machine q35 -cpu kvm64 \
-cpu qemu64,+ssse3,+sse4.1,+sse4.2,+popcnt \
-enable-kvm -m 2048 -serial mon:vc -serial \
mon:stdio -serial null -kernel bzImage -append \
'root=/dev/vda rw console=tty0 mem=2048M \
ip=dhcpoprofile.timer=1 console=ttyS0,115200n8 \
verbose fstab=no'
Running Kuksa-val-server in QEMU: #
kuksa-val-server --address 0.0.0.0 --insecure \
--log-level VERBOSE
Host Machine Command For Kuksa-client: #
To verify and establish a connection with Kuksa-val-server running inside the QEMU instance, I made the kuksa-client listen on the VM’s public IP address
# IP is the QEMU instance IP addr
kuksa-client --ip 10.10.10.203 --insecure
Next, we authorize the client using a JWT
access token, usually found at $HOME/.local.local/lib/python3.10/site-packages/kuksa_certificates/jwt/
. Upon successfully connecting to the server,
here is a look at how the AGL-Kuksa.val-Visualiser application interacts with the IC demo application.
# Navigation Input For IC Demo App #
This is a work-in-progress widget to be added to the Instrument cluster tab of our GUI application, and seeks to provide the functionality to,
- set current location (from)
- set destination location (to)
- provide suggestions for address
- start navigation
It makes use of Folium, which is a Python wrapper for leaflet.js which is a javascript library for plotting interactive maps. It enables both the binding of data to a map for choropleth visualizations as well as passing rich vector/raster/HTML visualizations as markers on the map.
The program has several methods such as
search_address
fetch_address_suggestions
show_suggestions
show_location
update_map
and more.
These methods are used for fetching suggestions from OpenStreetMap, displaying suggestions, displaying the location on the map, updating the map, and creating HTML code for the map.
The implementation of this feature can be improved in the coming weeks for setting the marker/ address more accurately.
# Application Preview #
Finally, I got to start working on the skeletal code of the main application using Qt5. This is still a fairly bare-bones preview of how the interface would look and is highly subject to change in future revisions.
All new widgets created for the AGL demo apps will be added as separate modules to increase the customization and maintainability of the whole application.
# What Next? #
Here are some of my targets for next week,
- Improve implementation of Kuksa-client
- add support for signals subscribed by the IC Application
- improve the navigation widget
- finalize the design for the main application with my mentors