You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/nl/1-getting-started/lessons/4-connect-internet/single-board-computer-comma...

3.8 KiB

Bedien je nachtlampje via het internet - Virtuele IoT-hardware en Raspberry Pi

In dit deel van de les leer je hoe je commando's kunt ontvangen die via een MQTT-broker naar je Raspberry Pi of virtuele IoT-apparaat worden gestuurd.

Abonneren op commando's

De volgende stap is om je te abonneren op de commando's die door de MQTT-broker worden verzonden en hierop te reageren.

Taak

Abonneer je op commando's.

  1. Open het nachtlampjesproject in VS Code.

  2. Als je een virtueel IoT-apparaat gebruikt, zorg er dan voor dat de terminal de virtuele omgeving uitvoert. Als je een Raspberry Pi gebruikt, werk je niet met een virtuele omgeving.

  3. Voeg de volgende code toe na de definities van de client_telemetry_topic:

    server_command_topic = id + '/commands'
    

    De server_command_topic is het MQTT-topic waarop het apparaat zich abonneert om LED-commando's te ontvangen.

  4. Voeg de volgende code toe net boven de hoofdloop, na de regel mqtt_client.loop_start():

    def handle_command(client, userdata, message):
        payload = json.loads(message.payload.decode())
        print("Message received:", payload)
    
        if payload['led_on']:
            led.on()
        else:
            led.off()
    
    mqtt_client.subscribe(server_command_topic)
    mqtt_client.on_message = handle_command
    

    Deze code definieert een functie, handle_command, die een bericht leest als een JSON-document en zoekt naar de waarde van de eigenschap led_on. Als deze is ingesteld op True, wordt de LED ingeschakeld; anders wordt deze uitgeschakeld.

    De MQTT-client abonneert zich op het topic waarop de server berichten zal sturen en stelt de functie handle_command in om te worden aangeroepen wanneer een bericht wordt ontvangen.

    💁 De on_message handler wordt aangeroepen voor alle topics waarop je bent geabonneerd. Als je later code schrijft die naar meerdere topics luistert, kun je het topic waarnaar het bericht is verzonden ophalen uit het message object dat aan de handlerfunctie wordt doorgegeven.

  5. Voer de code uit op dezelfde manier als je de code uit het vorige deel van de opdracht hebt uitgevoerd. Als je een virtueel IoT-apparaat gebruikt, zorg er dan voor dat de CounterFit-app actief is en dat de lichtsensor en LED op de juiste pinnen zijn aangemaakt.

  6. Pas de lichtniveaus aan die door je fysieke of virtuele apparaat worden gedetecteerd. Berichten die worden ontvangen en commando's die worden verzonden, worden in de terminal geschreven. De LED wordt ook in- en uitgeschakeld afhankelijk van het lichtniveau.

💁 Je kunt deze code vinden in de map code-commands/virtual-device of de map code-commands/pi.

😀 Je hebt je apparaat succesvol geprogrammeerd om te reageren op commando's van een MQTT-broker.


Disclaimer:
Dit document is vertaald met behulp van de AI-vertalingsservice Co-op Translator. Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in zijn oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.