Qt 5.1 on the blackberry playbook

I purchased a Blackberry Playbook a few months to experiment with Qt. At this moment, I am fiddling with Qt5.1. The documentation that helped me along can be found on:

http://qt-project.org/wiki/Building-Qt5-for-the-Playbook

http://qt-project.org/wiki/Building_and_Deploying_Qt_Applications_to_the_Playbook

 

https://github.com/preet/scratch/wiki/Qt-5.1-on-the-Playbook

I hope these URL’s are also helpfull to you.

Freddy

Posted in Post QNX, Post Webkit, Qt, User Interfaces | Tagged , , , , , , | Leave a comment

Qt on Blackberry Playbook, building qnx-qt-mobility on Windows

Building qnx-qt-mobility on Windows is a straight forward job. Make sure that your Qt is installed where you want it (see previous post). Then bear in mind the following:

  • Set the environment variables TMP and TEMP to c:\Temp. Make sure the folder does not contain any white spaces.
  •  Add ‘-lEGL’ to qnx-qt-mobility\doc\src\snippets\sensors\Makefile when that build fails. You should add it where ‘LIBS’ is declared. The end of the line should look like:     ‘-LC:/apps/bbndk-2.1.0/target/qnx6/armle-v7/usr/lib -lEGL -lQtCore -lm -lbps
  • configure it using: configure.bat -prefix c:\apps\bbndk-2.1.0\qt-4.8.3
  • make it and install it.

Adding the EGL library to the makefile is something I also need to do when building Qt applications from the BBNDK. Maybe my Qt build is not quite right or it is not documented.

Now it’s time to figure out how to use Qt mobility…

Posted in Post QNX, User Interfaces | Tagged , , , , , | 1 Comment

Qt on Blackberry Playbook, step 2 building for Windows

While using my brand new Qt build, I ran into some issue while adding a number of modules. It seemed that qmake was pointing towards the folder where it was build. After a bit of reading, i found out that is was better to build Qt ‘on the spot’. So, build it where you want to have your Qt binaries and libraries installed because the ‘-prefix‘ argument of the configuration tool does not work. StackOverflow has a whole thread about this build issue.

To be continued…

Posted in User Interfaces | Tagged , , , , | Leave a comment

Blackberry playbook, my first steps

I was looking for a Blackberry Playbook because it runs qnx and I needed a Qt test platform🙂 So, I got one from Ebay and started to read the qt-project wiki. This wiki provides all information that is required to build Qt 4.8.3 for the playbook. I had to prepare my laptop before I was able to download and build Qt. The following items are really needed:

  1. Blackberry native development kit 2.1.0
  2. Mingw32-make
  3. github for windows

The first step to do, after installing the software above is to open the Github shell. After opening the shell, you need to execute the ‘bbndk-env.bat’ script from the bbndk-2.1.0 directory to setup the blackberry ndk. The final 2 steps are adding the location of Mingw32-make to the PATH environment variable and make sure that the TMP and TEMP environment variables do not point to a directory that contains whitespaces in its name.

Here are a few other things to bear in mind:

  • The first step in building a new configurator.exe required me to add ‘-platform win32-g++’
  • The option ‘-inotify‘ raised an error when configuring the qt build. Does not seem to be a valid parameter.
  • The option ‘-prefix‘ seems to be ignored forcing me to build an installation folder by hand.
  • Building the source on a Core2Duo laptop gives you plenty of time to make breakfast for the whole family.

After building and moving Qt target specific files I started my first application using an example given by bgmotey.

Note: If you run into an ‘unknown symbol: egl*’ issue, try to remove the library QtOpenGL from the build settings dialog and add ‘EGL’.

I hope this brief summary helps others to start developing Qt applications for their blackberry also.

PS: The Qt libraries are included in the BAR files since Blackberry does not have the Qt libraries pre-installed on the playbook.

The result….

Qt 4.8.3 on Blackberry

Blackberry Playbook running first Qt Application

Posted in Post QNX, User Interfaces | Tagged , , , , , , , , , , , | Leave a comment

Ordered the Raspberry Pi

A few month ago, the Raspberry Pi was announced. On the 29th of februari, a huge amount of geeks, enthusiast, computer programmers were able to bring down 3 websites. RS-Components, Farnell and Raspberry Pi‘s website were not able to process the registrations for the 10000 available boards, the went down in a blip🙂 I have to admit, i was one of them and I think you were one of them too. Last week, I received an email from RS  informing me that I was able to order my Raspberry Pi and that is what I did this weekend.  I’m not sure yet where I am going to use the Raspberry Pi but I will play with it for a while before I decide where it will end up. The Remeha boiler project or another domotica project will make good candidates. A CAN bus machine automation project will be nice too or I will ask Rob, my boss, to donate his telescope to his staff so that we can use the Raspberry Pi to automate that. Having a Raspberry Pi is not the problem, picking the project to go with it is…

It will take 4 weeks till RS delivers. A pitty btw that they do not include a case with it…

Posted in domotica, Post Embedded, Uncategorized, User Interfaces | Tagged , , , , , , , | Leave a comment

Domotica using a NAS, a CA42, a Remeha heater and HTML5 part 4, the result.

It has been a little while ago but I made some progress and here is the result…

A web interface showing information obtained from the Remeha Avanta heating. This is how it works:

  1. My Synology DS210J runs an application named remeha2xml. This application is written in C.
  2. remeha2xml opens a serial connection to the Remeha Avanta using a modified CA42 datacable.
  3. remeha2xml sends commands to the Remeha Avanta and reads the responses.  The commands to and the responses from the Remeha Avanta have been obtained using a serial port sniffer.
  4. remeha2xml writes the response data to an xml file. This file is stored in a folder that is accessible by the webserver running on the Synology.
  5. The remeha2xml application is periodically started by cron so that the xml data is refreshed at given intervals.
  6. The xml file contains a process instruction to use a stylesheet. When requesting the XML file via a browser, the data is nicely formatted:Screenshot showing xml stylesheet result
  7. I also created an HTML5 page that uses the SteelSeries widgets and Rgraph. The result is displayed at the beginning of this post.

I ran into three minor issues during this project:

  1. The modem cable, see previous posts.
  2.  The warm water temperature was 623 degrees celcius🙂 but Remeha clarified that for me. (Their customer support is very friendly).
  3. the data obtain from the XML files does not show my HTC Desire’s browser and I don’t know why yet but I will find out.

There are a number of things I want to do before closing this project:

  1. Porting the application over to a Raspberry PI. I would like to build a Diskless Remeha Monitor and the Raspberry PI would be a low cost platform to achieve this goal.
  2. Finding out how to utilize the remeha2xml application without waking up the harddisks from hibernate every time (xml file is stored on harddisk, storing it on the ramdrive would be an option).

Here are a code snippets that I would like to share with you:

  • Setting up the communication with a serial device is easy, this is what I did in C:

/* Declare and initialize termios */
struct termios tio;
memset(&tio,0,sizeof(tio));

int fd=0;
int result=0;
char requestbuffer[255] = {0};
char responsebuffer[255] = {0};

int main() {
/* open serial port */
fd = open(argv[1], O_RDWR | O_NDELAY | O_NOCTTY);
if (fd < 0) {
printf(“Oops…\n”);
} else {
cfmakeraw(&tio);
tio.c_cflag |= CLOCAL;
cfsetospeed(&tio,B9600);
cfsetispeed(&tio,B9600);
tcsetattr(fd, TCSANOW, &tio);
result = write(fd, requestbuffer, sizeof(requestbuffer));
if (result > 0) {
result = read(fd, responsebuffer, sizeof(responsebuffer));
if (result > 0) {
printf(“We have data…\n”);
} else {
printf(“Oops…\n”);
}
} else {
printf(“Oops…\n”);
}
close(fd);
}
}

  • libxml: I struggled to get it working and this is what I used in my code:

xmlDocPtr doc = xmlNewDoc(BAD_CAST(“1.0”));
xmlNodePtr root_node = xmlNewNode(NULL,BAD_CAST(“remeha”));
xmlDocSetRootElement(doc,root_node);
xmlNodePtr PINode=xmlNewDocPI(doc,(xmlChar *)”xml-stylesheet”,(xmlChar *)”type=\”text/xsl\” href=\”remeha2xml.xsl\””);
xmlAddPrevSibling(root_node,PINode);
xmlNodePtr pnode = xmlNewChild(root_node, NULL, “value”, formattedbuffer);
xmlSetProp(pnode, “type”, attr_value_string); // Add attribute to pnode

See ya.

Posted in communication, domotica, Uncategorized, User Interfaces | Tagged , , , , , , , , , , | 3 Comments

Domotica using a NAS, a CA42, a Remeha heater and HTML5 part 3

Yesterday, I took some time and installed a serial sniffer on my laptop and peeked at the commununication between the Avanta P1 boiler and my laptop. I ran the Recom software and requested the boilers identity. The following command is sent by the Recom software:

02 52 05 06 01 0B 5B 03

Where 02 equals STX and 03 equals ETX. The rest is Remeha specific. After sending the request, the boiler answers with:

02 41 06 16 01 0B 01 00 00 12 10 01 00 00 00 00 00 06 11 41 06 80 89 03
02             = STX
41 06          = ????
16             = framesize without STX, ETX = 0x16 = 22 bytes
01             = ???? Boilertype = Avanta
0B             = ???? Manufacturer = Avanta
01             = Msg byte 0: ????
00 00          = Msg byte 1 and 2: ????
12             = Msg byte 3: (Software version / 10)
10             = Msg byte 4: (Parameter version / 10)
01             = Msg byte 5: Parameter type
00 00 00 00 00 = Msg byte 6 - 10: ????
06 11 41 06 80 = Msg byte 11-15: Serial nr, my Recom shows 41 = A
89             = ????, no part of the data payload
03             = ETX

I also have other messages but I need to analyze these first before posting them. I hope this will help you along. The config files that comes with the Recom software are very helpfull. They contain the layout of the datagram. I did post an XSL to print the XML content as tables to make it a bit more readable. Check the following link: http://www.domoticaforum.eu/viewtopic.php?f=70&t=7219

I already discovered that there are differences between the Avanta and the Calenta messages that Robert Hekkers showed on his blog. His analysis on this link shows completely different datasents than I have. I’ll give you my request and response when the Recom software asks for realtime data (actuele waarden):

Request: 02 52 05 06 02 00 53 03 

Response: 02 41 06 3E 02 00 E4 16 BC 16 80 F3 00 80 00 80 00 80 A2 12 40 07 4C 04 7C 15 08 07 00 00 00 00 00 00 00 00 00 00 64 00 00 00 11 01 09 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 74 03

I need some time to figure out the data above, and the Recom files will certainly help but I want to understand the rest of the protocol also since it is my daytime job also.

If someone of Remeha Netherlands is reading this also, a hint or suggestion would be very welcome🙂

Posted in communication, domotica | Tagged , , , , , , , , , , , , , , , , , , , , | 1 Comment