DEV Community

Austin Spivey for Wia

Posted on

Setup a Pycom FiPy and Publish an Event to Wia Using Python

Pycom FiPy

Setup Your Development Environment

We'll be using Atom as our development environment. You can download the latest version from here.

Once you've got it setup, install the Pymakr plugin. Follow the steps in this tutorial to get it setup.

Connect to the Board

There are two ways to connect your board to your computer either via USB or Serial connection.

(Option 1) Via USB

You can do so either via the USB port on the Expansion Board, Pysense or Pytrack boards (more on that here).

(Option 2) Via Serial (USB to TTL)

To communicate with the board via a USB to TTL cable, connect the following pins:

FiPy <-> USB TTL
TX0 <-> RX
RX0 <-> TX
3.3V <-> VCC

Pycom WiPy Pinout Diagram

Get Device Name

Once you've got it connected to your computer, get the name of your device using one of the following steps:

Linux and Mac OS X

  • Download and install the FTDI drivers from here. Select the appropriate version for your operating system and architecture.
  • Open a terminal window and run the command ls /dev/tty*
  • Look for a device with the name that begins with /dev/tty e.g. /dev/tty.usbmodemPy343431 on MAC or /dev/ttyUSB0/dev/ttyACM0 on Linux.

Note: For Linux, you may need to run the two commands below. Once you've completed that, reboot your computer. This will add permissions that will allow you to upload a sketch to the board.
sudo usermod -a -G tty ${USER}
sudo usermod -a -G dialout ${USER}


  • Download and install the FTDI drivers from here. Select the appropriate version for your operating system and architecture.
  • Open the Windows start menu and search for Device Manager
  • The COM port for the Pycom device will be listed as USB Serial Device or something similar
    • Keep note of the COM port (e.g. COM4)

Using Windows 7?

Pytrack and Pysense will work out of the box for Windows 8/10/+, Mac OS as well as Linux. If using Windows 7, drivers to support the boards will need to be installed. You can find them here .

Setup Your Project

  • Create a new folder for your project. Let's call it wia-publish-pycom-event. Remember where you put it.
  • In Atom, go to File > New Window to open a new window.
  • Add your newly created folder by clicking File > Add Project Folder and navigating to the folder made previously.

alt text

Can't see the tree view pane in Atom?

In the top menu in Atom, click on View > Toggle Tree View. This should make it appear.

  • If the Pymakr plugin is not open at the bottom of your Atom window, click on the arrow on the right hand side to open it.
  • Select Settings > Project Settings. In the address field replace the value with the device name from the step above e.g. /dev/tty.usbmodemPy343431 (Linux/Mac OS X), COM4 (Windows) then save the file.

Add the Request Library

  • Right click on the folder name in Atom and click Add Folder. Enter lib as the folder name.
  • Right click on the lib folder and click New File. Enter as the file name.
  • Click on the file then copy and paste the code from here into that file then save it.

Publish An Event

In Atom, right click on your project and click New File. Enter as the filename.
Copy and paste the code below into the file. View here on GitHub.

from machine import UART
import machine
import os

uart = UART(0, baudrate=115200)

Enter fullscreen mode Exit fullscreen mode
  • Right click on your project and click New File. Enter as the filename.
  • Copy and paste the code below into the file. View here on GitHub.

from network import WLAN
import urequests as requests
import machine
import time
import pycom
import gc
import micropython

# Garbage collection to save memory

# Your WiFi network credentials
WIFI_SSID = 'your-wifi-ssid'
WIFI_KEY = 'your-wifi-key'

# Get this from the Wia dashboard
DEVICE_SECRET_KEY = 'your-device-secret-key'

# Delay between each event

wlan = WLAN(mode=WLAN.STA)
nets = wlan.scan()

# Connect to the WiFi network
for net in nets:
    if net.ssid == WIFI_SSID:
        print('Network found!')
        wlan.connect(net.ssid, auth=(net.sec, WIFI_KEY), timeout=5000)
        while not wlan.isconnected():
             machine.idle() # save power while waiting
        print('WLAN connection succeeded!')

# Post an Event to the Wia cloud
def post_event(json):
        if json is not None:
            req =, headers=headers, json=json_data)
            if req.status_code is not 200:
                print("posting", json, "to Wia")
            return req.json()

# Data
temperature = 24.6
name = "temperature"
json_data = {"name": name, "data": temperature}

# Run this loop continuously
while True:
    if not wlan.isconnected():
        wlan.connect(net.ssid, auth=(net.sec, WIFI_KEY), timeout=5000)
        while not wlan.isconnected():
Enter fullscreen mode Exit fullscreen mode

Replace the following values of the following variables:

  • WIFI_SSID with your WiFi network name.
  • WIFI_KEY with your WiFi network password.
  • DEVICE_SECRET_KEY with your device secret key. You can find this in your Device Configuration page (see screenshot below).

Wia dashboard device configuration page

Your folder structure should now look like this:

  • lib

Project folder structure

Click Upload in the Pymakr plugin at the bottom of your window in Atom and send the code to your Pycom board.

Publish an event code running on Pycom board

Note: If you get "Uploading project (main folder)..." Error

  • Try updating the firmware. For the development board click here.
  • For additional firmware for the Pysense/Pytrack board click here.

Now go to your device in the Wia dashboard and you should see the data appearing in the debugger.

Wia Device Debugger

Top comments (0)