Skip to main content

json messaging (2/2)

Took a good 2 hours to change all the messages into JSON format and make it work.

But it is done. All is JSON.

Using it like a map, currently with three key-value pairs:

"id" : for entering a session ID of another session if needed. Currently used for the web client to receive a acknowledge response to confirm that the target received the message (mainly for testing purposes).

"type" : probably the most functional data going through all this. Current types are
STARTUP_TYPE - for when the target sends its initial message, the server uses this to mark which session is the target.
REQUEST_TYPE - for when the web client sends a request to the target. Server uses this to send request to target.
ACK_TYPE - for when the target finishes carrying out the requests and sends an acknowledgement of the completion of the request to the server. Server uses this to send confirmation to the web client 
MISC_MSG_TYPE - for anything else.
DEBUG_TYPE - currently for the pinging that the Raspberry Pi is sending to the server. 

"message" : currently holds messages that are visible in the web client's screen. As the screen would most likely be gone in the end, this and MISC_MSG_TYPE might disappear. 

Anyways, code got cleaner once every message was converted to JSON (no more regex blobs), but it's still messy in some parts.

Comments

Popular posts from this blog

setting up pwm

There's always an obstacle.. I implemented the pwm module as described in the link in the previous post, but oddly enough, it didn't work. The error I received: AttributeError: 'module' object has no attribute 'PWM' After some time scratching my head, I came to the realization that somehow my python was running an older version of the RPi.GPIO library, as PWM control was a pretty recent addition to the library.  And indeed it was.  Not really sure what's happening in detail, but it seems that there are two different... entities? that manage libraries for Python. One is through the usual "apt-get" command and the other is "pip." It appears that Python looks at "pip" first, and it currently linked RPi.GPIO to a really old version of the library.  Uninstalling that older version ("pip uninstall RPi.GPIO") and using the version I obtained through apt-get ("apt-get install python-rpi.gpio...

GPIO testing

Since the environment of the client-server-target is currently quite functional in the messaging standpoint, I decided to try connecting a simple LED light to the Raspberry Pi to see if it could "open" a door when the command is received. Installed the RPi.GPIO module (a Python module that gives the user command of the GPIO--General-Purpose Input/Output--ports in the Raspberry Pi) and connected the LED light to a GPIO pin. When the target received a request message, it would signal the GPIO pin to drive a current to the LED to light it up for 2 seconds. in main: if __name__ == "__main__":   GPIO.setmode(GPIO.BCM)   GPIO.setup(17, GPIO.OUT) in the on_message's request-received logic:      GPIO.output(17, True)      time.sleep(2)      GPIO.output(17, False) The video is a weak visual result. You can a click when the LED lights up; that was the sound of the key being pressed that sent the request message. Now, tim...

pwm..

I just realized that the RPi.GPIO library (for programming the Raspberry Pi's input/output) already has PWM control, giving me a much more efficient control of duty cycles... At least the previous exercise ("duty cycle testing") refreshed me on it. PWM control on RPi.GPIO: http://code.google.com/p/raspberry-gpio-python/wiki/PWM