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/fi/2-farm/lessons/4-migrate-your-plant-to-the.../single-board-computer-conne...

5.9 KiB

Yhdistä IoT-laitteesi pilveen - Virtuaalinen IoT-laitteisto ja Raspberry Pi

Tässä oppitunnin osassa yhdistät virtuaalisen IoT-laitteesi tai Raspberry Pi:n IoT Hubiin, jotta voit lähettää telemetriatietoja ja vastaanottaa komentoja.

Yhdistä laite IoT Hubiin

Seuraava vaihe on yhdistää laite IoT Hubiin.

Tehtävä - yhdistä IoT Hubiin

  1. Avaa soil-moisture-sensor-kansio VS Codessa. Varmista, että virtuaalinen ympäristö on käynnissä terminaalissa, jos käytät virtuaalista IoT-laitetta.

  2. Asenna joitakin lisäpaketteja Pipin avulla:

    pip3 install azure-iot-device
    

    azure-iot-device on kirjasto, joka mahdollistaa kommunikoinnin IoT Hubin kanssa.

  3. Lisää seuraavat tuontilauseet app.py-tiedoston alkuun, olemassa olevien tuontien alapuolelle:

    from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse
    

    Tämä koodi tuo SDK:n, joka mahdollistaa kommunikoinnin IoT Hubin kanssa.

  4. Poista import paho.mqtt.client as mqtt -rivi, sillä tätä kirjastoa ei enää tarvita. Poista kaikki MQTT-koodi, mukaan lukien aiheen nimet, kaikki koodi, joka käyttää mqtt_client-objektia, sekä handle_command. Säilytä while True: -silmukka, mutta poista mqtt_client.publish -rivi tästä silmukasta.

  5. Lisää seuraava koodi tuontilauseiden alapuolelle:

    connection_string = "<connection string>"
    

    Korvaa <connection string> yhteysmerkkijonolla, jonka hankit laitteelle aiemmin tässä oppitunnissa.

    💁 Tämä ei ole paras käytäntö. Yhteysmerkkijonoja ei koskaan pitäisi tallentaa lähdekoodiin, sillä ne voivat päätyä versionhallintaan ja olla kaikkien saatavilla. Teemme näin yksinkertaisuuden vuoksi. Ihanteellisesti sinun tulisi käyttää esimerkiksi ympäristömuuttujaa ja työkalua kuten python-dotenv. Opit tästä lisää tulevassa oppitunnissa.

  6. Lisää tämän koodin alapuolelle seuraava koodi, joka luo laiteasiakasobjektin IoT Hubin kanssa kommunikointia varten ja yhdistää sen:

    device_client = IoTHubDeviceClient.create_from_connection_string(connection_string)
    
    print('Connecting')
    device_client.connect()
    print('Connected')
    
  7. Suorita tämä koodi. Näet laitteen yhdistyvän.

    pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py 
    Connecting
    Connected
    Soil moisture: 379
    

Lähetä telemetriatietoja

Nyt kun laite on yhdistetty, voit lähettää telemetriatietoja IoT Hubiin MQTT-välittäjän sijaan.

Tehtävä - lähetä telemetriatietoja

  1. Lisää seuraava koodi while True -silmukan sisään, juuri ennen sleep-komentoa:

    message = Message(json.dumps({ 'soil_moisture': soil_moisture }))
    device_client.send_message(message)
    

    Tämä koodi luo IoT Hubin Message-objektin, joka sisältää maaperän kosteuden lukeman JSON-merkkijonona, ja lähettää sen IoT Hubiin laitteesta pilveen -viestinä.

Käsittele komentoja

Laitteesi täytyy käsitellä palvelinkoodista tuleva komento releen ohjaamiseksi. Tämä lähetetään suoran metodipyynnön muodossa.

Tehtävä - käsittele suora metodipyyntö

  1. Lisää seuraava koodi ennen while True -silmukkaa:

    def handle_method_request(request):
        print("Direct method received - ", request.name)
    
        if request.name == "relay_on":
            relay.on()
        elif request.name == "relay_off":
            relay.off()    
    

    Tämä määrittää metodin, handle_method_request, joka kutsutaan, kun IoT Hub lähettää suoran metodipyynnön. Jokaisella suoralla metodilla on nimi, ja tämä koodi odottaa metodeja nimeltä relay_on releen kytkemiseksi päälle ja relay_off releen kytkemiseksi pois päältä.

    💁 Tämä voitaisiin toteuttaa myös yhdellä suoralla metodipyynnöllä, jossa haluttu releen tila välitetään metodipyynnön mukana ja on saatavilla request-objektista.

  2. Suorat metodit vaativat vastauksen, joka kertoo kutsuvalle koodille, että ne on käsitelty. Lisää seuraava koodi handle_method_request-funktion loppuun, jotta voit luoda vastauksen pyyntöön:

    method_response = MethodResponse.create_from_method_request(request, 200)
    device_client.send_method_response(method_response)
    

    Tämä koodi lähettää vastauksen suoraan metodipyyntöön HTTP-tilakoodilla 200 ja palauttaa sen IoT Hubiin.

  3. Lisää seuraava koodi tämän funktion määrittelyn alapuolelle:

    device_client.on_method_request_received = handle_method_request
    

    Tämä koodi kertoo IoT Hub -asiakasobjektille, että sen tulee kutsua handle_method_request-funktiota, kun suora metodi kutsutaan.

💁 Löydät tämän koodin code/pi- tai code/virtual-device-kansiosta.

😀 Maaperän kosteusanturin ohjelma on yhdistetty IoT Hubiin!


Vastuuvapauslauseke:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua Co-op Translator. Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.