# Lopy4/Fipy och Datacake Under måndagens workshop kopplade vi upp oss mot WiFi och skickade sensordata till Datacake (m.h.a MQTT). Ett kort verkade defekt och här kommer instruktioner för hur man använder ett annat kort med samma kodbas. ## Hämta det nya kortets Dev-EUI Ersätt all kod i `boot.py` med följande kod (och ladda sedan upp): ```python= from network import WLAN from mqtt import MQTTClient import ubinascii import constants as CONST import machine from network import LoRa import binascii print("#################################") print(binascii.hexlify(LoRa().mac()).upper()) print("#################################") # WiFi Setup client_id = ubinascii.hexlify(machine.unique_id()) print(client_id) wlan = WLAN(mode=WLAN.STA) wlan.connect(CONST.WIFI_SSID, auth=(WLAN.WPA2, CONST.WIFI_PASS), timeout=5000) while not wlan.isconnected(): machine.idle() print('Connected to WiFi\n') # MQTT Setup def sub_cb(topic, msg): print(msg) client = MQTTClient(client_id, CONST.DATACAKE_MQTT_URL, user=CONST.DATACAKE_TOKEN, password=CONST.DATACAKE_TOKEN, port=CONST.DATACAKE_MQTT_PORT) client.set_callback(sub_cb) client.connect() print('connected to MQTT server') ``` När koden väl har laddats upp, kommer man (i konsolen) se en output lik följande: ``` ################ 010203fffe040506 ################ ``` Kopiera mac-adressen för nästa steg. ## Skapa en ny device i Datacake 1. Under `devices`, skapa en ny device (`Add Device`). 2. Välj `LoRaWAN`och `New Product` och ge produkten ett namn (kan vara vad som helst). Next 3. Välj `The Things Stack V3` och Next 4. Klistra in `DevEUI` och ge enheten ett namn. Next 5. Välj `Free` och sedan `Add 1 device` Nu ska den enheten dyka upp under `Devices`. Välj enheten och lägg till två fält för temperatur och fuktighet (temperature, humidity). ## Ändra `constants.py` För att publicera data behöver `DATACAKE_DEVICE_ID` och `DATACAKE_MQTT_TOPIC` i `lib/constants.py` justeras. Hämta ny ID kan man göra under `Devices/din_nya_enhet/configuration` i datacake. Scrolla ner till `Integrations` och `Configure` under MQTT. ### Exempel: Från bilden nedan kan vi se att enheten vi har valt har id `189a6b2e-240a-470f-8b17-ede702f97623` och namnet `rak7431`. ![image alt](https://i.imgur.com/LuSc6kZ.png) Då ska `DATACAKE_DEVICE_ID` och `DATACAKE_MQTT_TOPIC` i `lib/constants.py` se ut som följande: ```python= WIFI_SSID = 'XXXXXXX' WIFI_PASS = 'XXXXXXX' DATACAKE_TOKEN = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' DATACAKE_MQTT_URL = 'mqtt.datacake.co' DATACAKE_MQTT_PORT = 1883 DATACAKE_DEVICE_ID = '189a6b2e-240a-470f-8b17-ede702f97623' DATACAKE_MQTT_TOPIC = 'dtck-pub/rak7431/189a6b2e-240a-470f-8b17-ede702f97623/' ``` ## Ladda upp koden Ladda upp koden och se om det nu går att publicera data till datacake. Det kan man bekräfta genom att gå till `Configurations` och scrolla ner till `Fields` och se om fälten har uppdaterats (och när). Dashboard kan skapas vid det här laget. Vid frågor, kontakta mig! :) david.mozart@lnu.se 070-292 18 58