@Pinx,
If you have a Copy or URL to the API Reference manual you should attach that to your post also.
Folks will probably want to see if thereâs any other form of Delimiter in the Request/Response string pair, along with some of the semantics of the request.
eg. If I make the âevery 10 secondsâ request you indicate, will the Boiler/Burner call me back every 10 seconds from then on, or do you have to keep calling it?
eg. are there any [tt]CR[/tt], or [tt]CR-LF[/tt], characters in between requests or just the { / } chars.
If not [tt]CR[/tt], or [tt]CR-LF[/tt], youâre going to need the [tt]raw[/tt] [tt][/tt] tag in your implementation file, and youâll have to process responses in a âbyte-by-byteâ manner.
Looking over your comments, it seems like the format might be more
<byteCount> <openCurly> <char1> <char2> ... <char-n> <closeCurly> <checkSumByte>
There are a bunch of questions like these thatâll be easier for someone to work out with the Reference manual handy.
Given what youâre trying to do initially, it might be easier to start with the [read-only] Weather Plugin as the base for your code (since it has a way to render the Temperature) or perhaps the Somfy Blinds demo (since itâs doing low-level IO).
From there, you can overlay âpiecesâ of the [tt]I_GC100.xml[/tt] file to handle the IO. Itâs probably not the best to base your code on since itâs a Device that creates/manages devices, with all the complexity that goes with that.
eg.
[tt][/tt]
âŚcode with luup.io.read() calls
⌠clearing the buffer when you get a â{â
⌠appending to the Buffer otherwise
âŚbufferring the raw bytes until you see the â}â
⌠decoding the resulting âcommand responseâ from the buffer and doing something with it.
[tt][/tt]
[tt]raw[/tt]
and a few others that you can slice out of I_GC100.xml, and the Somfy Blind demo
Over time, as you learn it, you can move over to implementing the Thermostat controls, since youâll presumably want to interact with your furnace (Temp Up/Down etc)
The key to writing this stuff is to start small, get it working, and then add to it. Simplifying your initial effort as much as possible will help you get some initial progress, early, and avoid frustration.
Some starting thoughts to get you going initially:
a) Get familiar with logging onto Vera directly, using SSH ⌠youâll need this a lot.
This is outlined in the Somfy walkthrough Wiki page if you havenât seen that already.
b) reduce the [tt][/tt] block down to simply [tt]luup.log(luup.io.read())[/tt]
Thatâll print everything coming in from the Burner. If you put on Verbose Logging then youâll also see this data, as Veraâs framework will print it in the log files ([tt]/var/log/cmh/LuaUPnP.log[/tt])
c) Have your startup function use the [tt]luup.io.write()[/tt] call to write out some âbinaryâ of a Command, similar to the commands you listed here.
[tt]luup.io.write("...")[/tt]
If you get the above logic working, then you have a starter device to expand upon. With the above type of steps, the device would ârequestâ something [once, at startup] and print diagnostics of the output.
If it helps, when I first wrote one of these I first worked by having a Terminal emulator (under Windows, but Mac would work also) connected to the USB-Serial port. I got very familiar with the codes being sent/received in my Alarm Panel and when that information would come.
Then I started with very minimalist Luup code blocks ([tt]I_Xxxxx.xml[/tt]) derived from the Somfy examples to get the initial communications going.