Hardware button and LED to control association in wireless networks

Almost all wireless technologies use some kind of association process to enable devices to join the network. Such a process is typically initiated by pressing a button on the network controller and by subsequently pressing another button on the device to associate.

Hardware button and LED to control association in wireless networks

Software gateways, like Dog, cannot naturally support this press-and-join interaction and the association process is usually initiated by software (e.g., using an app).
In this post we present a really simple design for adding a push-button and a LED to a RaspberryPi running Dog and we show how to control the gateway association through them, using a very simple Python script.

The button and LED circuit uses the Raspberry Pi GPIO ports to respectively drive the LED, through a BC337 transistor used as switch, and to read the button position. Figure below shows the corresponding circuit and resistors' values.

The script for checking the GPIO input, and sending the “associate” command is really simple and can be downloaded as a gist from GitHub (see below for the core code).

Hardware button and LED to control association in wireless networks schematic''' Created on Apr 4, 2014 @author: bonino Copyright (c) 2014 Dario Bonino Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License ''' import rest,time, RPi.GPIO as GPIO def button_to_gw (RCpin): # the base url base_url = 'http://localhost:8080/api/v1/' # gateway URL gw_associate_url = base_url+'devices/zwave-gateway/commands/associate' gw_state_url = base_url+'devices/zwave-gateway/status' # request body body = '{}' #setup the gpio output GPIO.setmode(GPIO.BOARD) GPIO.setup(RCpin, GPIO.IN) GPIO.setup(18,GPIO.OUT) # This takes about 1 millisecond per loop cycle status = 'idle' while (True): status = rest.send(url=gw_state_url) print status if status['status']['DeviceAssociationState'][0]['value'] == 'associating': GPIO.output(18,GPIO.HIGH) else: GPIO.output(18,GPIO.LOW) if(GPIO.input(RCpin) == False): try: rest.send('PUT', gw_associate_url, body, { 'Content-Type':'application/json' }) print 'sending associate' except: pass time.sleep(0.1) return if __name__ == '__main__': button_to_gw(22)

 

For more detail: Hardware button and LED to control association in wireless networks


About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top