Tweetovací zvonek

Úvod

Tento jednoduchý projekt tě snadno seznámí, jak použít BigClown Core Modul. Cílem projektu bude zaslání tweetu po stisku tlačítka na Core Module, nebo jakéhokoliv externího tlačítka. Core Module bude připojen USB kabelem na Raspberry Pi, nebo k jakémukoliv jinému počítači, kde spustíš naši Python gateway. Můžete monitorovat vaše návštěvy a zjisti, jestli jste někoho nezmeškali!

We will use Node-RED to react on MQTT message, then we send the tweet. Využijeme grafického rozhraní Node-Red pro nastavení pravidla, kdy MQTT zpráva po stisku tlačítka pošle tweet. Zde je ukázková výsledná tweetovací stránka

Co potřebujeme

Core Module

Následující kód níže přidej do souboru app/application.c. Protože je veškerá logika programu v callback funkci tlačítka, není nutné používat nebo vytvářet funkci application_taks().

Místo tlačítka můžeš použít externí spínač, stačí jen změnit GPIO pin ve funkci pro inicializaci tlačítka. Více na GPIO SDK stránce.

#include <application.h>

void button_event_handler(bc_button_t *self, bc_button_event_t event);

// Instance LED
bc_led_t led;

// Instance tlačítka
bc_button_t button;

// Vstupní bod aplikace
void application_init(void)
{
    // Inicializuj USB
    usb_talk_init();

    // Inciializuj tlačítko a nastav callback funkci
    bc_button_init(&button, BC_GPIO_BUTTON, BC_GPIO_PULL_DOWN, false);
    bc_button_set_event_handler(&button, button_event_handler);

    // Inicializuj LED a nastav blikání
    bc_led_init(&led, BC_GPIO_LED, false, false);
    bc_led_set_mode(&led, BC_LED_MODE_BLINK);
}

// Callback funkce volaná při události tlačítka
void button_event_handler(bc_button_t *self, bc_button_event_t event)
{
    // Skryj varování kompilátoru o nepoužité proměnné
    (void) self;

    // Pokud je tlačítko stisknuto
    if (event == BC_BUTTON_EVENT_PRESS)
    {
        static uint16_t event_count = 0;

        // Ukázka práce s LED. KAždý druhý stisk tlačítka rozsvítí LED
        bc_led_set_mode(&led, (event_count & 1) != 0 ? BC_LED_MODE_ON : BC_LED_MODE_OFF);

        // Publiku usb_talk zprávu. Na počítači z ní vznikne MQTT zpráva
        usb_talk_publish_push_button("", &event_count);

        // Počítej stisky tlačítka
        event_count++;
    }
}

Ukázku zkompiluj zadáním příkazu make do konzole. Poté nahraj zkompilovaný binární kód přes J-link Ozone debugger zadáním make ozone nebo nahrej binární soubor přes interní USB DFU bootloader.

Po nahrání můžeš vyzkoušet funkčnost MQTT zpráv přes Mosquitto. V následujcíí ukázce nahraď xxx za svouji IP adresu MQTT brokeru - Raspberry pi.

Pokud voláš Mosquitto příkazy rovnou z počítače, kde ti běží broker, můžeš vynechat parametr -h.

mosquitto_sub.exe -h xxx.xxx.xxx.xxx -t # -v

Pokud stiskneš tlačítko na Core Module, v konzoli uvidíš příchozí zprávy:

nodes/push-button/- {"event-count": 5}

Konfigurace Raspberry Pi

Instalace a konfigurace

Pro zprovoznění Raspberry Pi postupuj podle připraveného instalačního návodu. Připoj se na konzoli Raspberry Pi přímo, nebo přes SSH. Na Raspberry Pi musí být nainstalované balíčky od Bigclown - buď jsi použil předinstalovaný image, nebo musíš balíčky doinstalovat.

Pak ještě budeme potřebovat Node-RED, abychom propojili tlačítko Core Module s Twitterem. Instalace Node-RED na Raspberry Pi

Konfigurace Node RED

Pokud jsi nainstaloval a spustil Node-RED, otevři internetový prohlížeč na URL <adresa-rpi>:1880 a vytvoř následující flow:

  • MQTT in blok
  • JSON blok
  • Message blok
  • Twitter out blok

Můžeš také importovat celou ukázku zkopírováním kódu níže. V Node-RED potom v menu zvol import ze schránky. V tomto případě můžeš přeskočit následující popis jak vytvářet jednotlivé bloky.

[{"id":"4f1ddaf2.8d8ff4","type":"tab","label":"Flow 1"},{"id":"3adfde65.667022","type":"mqtt-broker","z":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""},{"id":"856fe615.8f1008","type":"twitter-credentials","z":"","screen_name":"@bcDoorbell"},{"id":"b9060d89.926bd","type":"mqtt in","z":"4f1ddaf2.8d8ff4","name":"","topic":"nodes/push-button/-","qos":"0","broker":"3adfde65.667022","x":275,"y":133,"wires":[["aab295ba.d087e8"]]},{"id":"1eb962d4.06a4ad","type":"twitter out","z":"4f1ddaf2.8d8ff4","twitter":"856fe615.8f1008","name":"Tweet","x":739,"y":133,"wires":[]},{"id":"62d4fc7.ea3b104","type":"template","z":"4f1ddaf2.8d8ff4","name":"Message","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Somebody is at the door! ({{payload.event-count}})","x":597,"y":133,"wires":[["1eb962d4.06a4ad"]]},{"id":"aab295ba.d087e8","type":"json","z":"4f1ddaf2.8d8ff4","name":"","x":451,"y":133,"wires":[["62d4fc7.ea3b104"]]}]

MQTT in blok

Tento blok se připojí na MQTT brokera a přijímá příchozí zprávy. Nastav adresu serveru a téma (topic).

JSON blok

Není nutná žádní konfigurace.

Message blok

Tento blok změní MQTT zprávu na řetězec, kterou pak lze poslat na Twitter.

Twitter out blok

Zde nastav své přihlášení do twitter účtu.

Testování

Nyní můžeš stisknout Deploy tlačítko v pravém horním rohu Node-RED. Teď když na Core Module stiskneš tlačítko B, uvidíš na zlomek sekundy text tweeting vedle Tweet bloku.

Gratulujeme k úspěšnému projektu.

Twitter screenshot

Ladění a hledání chyb

V případě, že něco nefunguje, použij Debug blok a zapoj jej někde do řetězce. Poté udělej znova Deploy a ujisti se, že Debug blok má vpravo zakliknutou zelenou barvu a je aktivní. Poté v pravém panelu přepni na Debug záložku a uvidíš ladící zprávy.

Debugging

results matching ""

    No results matching ""