Fixed the bug in PUBLISH. Tested with Adafruit IO and data can be published successfully! This was the original goal of this project -- being able to blindly fire values at Adafruit and not having to worry about receiving data. However, I've widened the scope of the project, and want to eventually do a full MQTT implementation per the spec. The basic receive functionality looks at what type of message is receieved, and then prints out basic messages depending on what the payload is. Mostly useful as a debugging tool, but it can easily be expanded. This should probably be split out into its own function at some point. strtoarr.py: Because of the weird bug that makes passing string pointers impossible with the ESP8266, strings have to be stored as hex arrays and then passed as a pointer. This is a pain for the user, so I've written a basic script which will take two arguments: the string to be encoded, and the variable name to be used. It then spits out C code which can be copied and pasted into the user code. This saves a bunch of time, and because it spits them out as static const, it also tells the compiler to store them in flash (as far as I can tell). As mentioned, it has now been tested with Adafruit IO. There are a few more functions in the "user" area of the file. These are only for debugging and will eventually be surrounded with \#ifdef DEBUG so they won't be included in the compiled version. Also, more ifdef preprocessor directives have been added so that debug messages won't be printed to a user's output unless they want them. The next step is to implement SUBSCRIBE, and to compile the code as mqtt.a - a linkable object file.
22 lines
646 B
Python
Executable file
22 lines
646 B
Python
Executable file
#!/usr/bin/env python3
|
|
|
|
###############################################
|
|
# First argument is the value to be encoded, #
|
|
# second argument is the name of the variable #
|
|
# to be used. #
|
|
###############################################
|
|
|
|
import sys
|
|
import os
|
|
|
|
inString = str(sys.argv[1]);
|
|
|
|
print("static const char {0}[{1}] = {{ ".format(sys.argv[2], len(inString)), end='')
|
|
for letter in inString[:-1]:
|
|
p = ord(letter)
|
|
print("{0:#x}, ".format(p), end='')
|
|
|
|
p = ord(inString[-1])
|
|
print("{0:#x} ".format(int(p)), end='')
|
|
print("};")
|
|
print("static const uint8_t {0}_len = {1};".format(sys.argv[2], len(inString)))
|