Efento Gateway integráció
Ez az oktatóanyag bemutatja, hogyan állítson be egy egyszerű http servert egy adatbázissal és konfigurálja az Efento gatewayt az adatok elküldéséhez. Ebben az oktatóanyagban Python, Flask és PostgreSQL adatbázist használunk, de ugyanaz az ötlet könnyen megvalósítható más programozási nyelvekkkel / különböző adatbázisokat felhasználva. Amennyiben bármilyen kérése vagy kérdése lenne, nyugodtan írjon nekünk egy sort a help.efento.io weboldalon
Mielőtt elkezdené
Mielőtt elkezdené, telepítenie és konfigurálnia kell a következő összetevőket:
- PyCharm vagy bármely Python 3 IDE,
- PostgreSQL database,
- Efento Gateway és Efento érzékelők
PostgresSQL adatbázis
Az adatbázis beállítása
A PostgresSQL letöltése és telepítése után létre kell hoznia az első adatbázist. Ez a PostgreSQL telepítése az első lépésében. Alapértelmezés szerint az adatbázis a következő hitelesítő adatokkal jön létre:
DATABASE_HOST = ‘localhost’;
DATABASE_USER = ‘postgres’;
DATABASE_PASSWORD = ‘Your password’;
DATABASE_NAME = ‘postgres’;
Lehetőség van és megváltoztathatja a neveket / hitelesítő adatokat. Írja le, mivel a következő lépésekben szükség lesz rájuk. Amennyiben ellenőrizni szeretné az adatbázis hitelesítő adatait, nyissa meg a pgAdmin fájlt a PostgresSQL mappában. Ezután nyissa meg az Object -> Properties -> General
Táblázat készítése
Az Efento Gateway-ből érkező mérések az adatbázisba mentéséhez létre kell hoznia egy táblázatot. Ebben a példában egy nagyon egyszerű táblázatot készítünk az érzékelők összes adatának tárolására, függetlenül az érzékelő típusától. A táblázatnak 5 oszlopa lesz, mindegyik „text” típusú. Felhívjuk figyelmét, hogy az adatbázis ezen architektúrája csak demonstrációs célokat szolgál. Az adatbázis felépítését a projekt követelményeinek megfelelően kell kiválasztani.
A táblázatot manuálisan is létrehozhatja, a pgAdmin kezelőfelületével vagy egy SQL lekérdezéssel. A pgAdmin alkalmazásban válassza ki az adatbázist, nyissa meg az Tools menüt: Tools -> Query Tools eszközök. Másolja az alábbi kérést a Query Editor-ba és kattintson az Execute (▶) gombra:
CREATE TABLE measurements ( measured_at text , serial_number text , low_battery text , type text, value text);
A CREATE TABLE új, kezdetben üres táblázatot hoz létre az aktuális adatbázisban.
A tábla a parancsot kiadó felhasználó tulajdonában lesz.
Python Server
Mielőtt elkezdené
A szerver működéséhez szüksége lesz:
- Flask – A Flask egy mikrokeret, amelyet webes alkalmazások fejlesztésére használnak. Ha többet szeretne megtudni a Flask-ről, nézze meg ezt a weboldalt. Telepítheti és importálhatja a Flask-et a pyCharm IDE-be vagy a pip használatával ($ pip install -U Flask)
- psycopg2 – az egyik legnépszerűbb PostgreSQL adatbázis-adapter a Python számára. Ha többet szeretne tudni, nézze meg ezt a weboldalt.
Hogyan működik ez?
Az általunk írandó szkript felállítja a http szervert. A szerver folyamatosan figyeli az Efento Gateway által küldött adatokat (a gateway JSON formátumban küldi az adatokat REST-en keresztül.Egy üzenet tartalmazhat több mérést egy érzékelőtől vagy több érzékelő mérését. Miután új üzenetek érkeztek, a szerver elemzi az adatokat, elmenti azokat az adatbázisba és visszaadja a 201-es állapotkódot a gateway-nek . Ez azt jelenti, hogy az üzenetet sikeresen elemezték és elmentették az adatbázisba. Amennyiben bármi baj történik (pl. az adatbázis nem működik), a szerver „500”-as állapotkóddal válaszol. Ebben az esetben a gateway megpróbálja újra elküldeni ugyanazokat az adatokat egy idő után.
Python kód
Szerkessze az adatbázis hitelesítő adatait, és futtassa a kódot a szerver elindításához és az Efento Gateway-től érkező adatok listázásához.
# Import libraries import psycopg2 from flask import Flask, request, Response, json, g app = Flask(__name__) # This scripts saves the measurements sent by Efento Gateway in a PostgreSQL database. # Enter your database credentials: database host, name, user and password DATABASE_HOST = 'host_name'; DATABASE_USER = 'database_user'; DATABASE_PASSWORD = 'database_password'; DATABASE_NAME = 'database_name'; # Connecting to the database conn = psycopg2.connect( dbname=DATABASE_NAME, user=DATABASE_USER, host=DATABASE_HOST, password=DATABASE_PASSWORD ) # Set up "/api/v2/measurements" endpoint, which will be receiving the data sent by Efento Gateway using POST method @app.route('/api/v2/measurements', methods = ['POST']) def respond(): data = request.json record = [] response_handle = [] # Use a loop to create record by iterating through measurements and parameters from JSON. for measurement in data['measurements']: for param in measurement['params']: record.extend([(measurement['measured_at'], measurement['serial'], measurement['battery'], param['type'], param['value'])]) # Create the response body, which will be sent to the gateway (gateway will buffer data from all sensors) response_handle.append(measurement['response_handle']) response = json.dumps({'Y': response_handle, 'N': []}) # Insert data received from gateway into the database measurements = "INSERT INTO measurements(measured_at, serial_number, low_battery, type, value) VALUES (%s, %s, %s, %s, %s)" with conn.cursor() as cur: try: cur.executemany(measurements, record) conn.commit() cur.close() except (Exception, psycopg2.DatabaseError) as error: print(error) return Response(status='500') #Send response body, to the gateway and status code 201. return Response(response, status='201') if __name__ == "__main__": # Start the application on Your port.Default port 5000 app.run(host = '0.0.0.0', port = 5000)
Efento gateway konfiguráció
Jelentkezzen be az Efento Gateway webpaneljére webböngészőjén keresztül. Keresse meg a Settings -> Server settings lehetőséget.
A Connection To Server mezőben válassza az Custom Settings lehetőséget. Töltse ki a szerver címét (a Python parancsfájlt futtató számítógép / szerver tartománya vagy IP-címe) a Server Address mezőbe. Konfigurálja a Server portot 5000-re és kapcsolja ki a TLS-t. Megjegyzés! Ha a TLS ki van kapcsolva, a gateway által küldött adatok nincsenek titkosítva. Gyártási telepítésekhez töltse fel a kiszolgáló tanúsítványát a CA certificate fülre, és használjon titkosított kommunikációt (htpps).
Eredmények
A parancsfájl futtatásakor a gateway-ből érkező összes adat el lesz mentve az adatbázisban. A mérések megtekintéséhez nyissa meg a pgAdmin 4 programot, válassza ki az adatbázist, majd nyissa meg az Tools> Query Tools lehetőséget.
Írja be az alábbi kérést a Query Editor-ba, és válassza az Execute (▶) parancsot:
SELECT * FROM measurements;
KAPCSOLÓDÓ TERMÉKEK