Oktatóanyag: IoT Edge-eszközök hierarchiájának létrehozása Linuxhoz készült IoT Edge használatával Windows rendszeren
A következőkre vonatkozik: IoT Edge 1.4
Fontos
Az IoT Edge 1.5 LTS és az IoT Edge 1.4 támogatott kiadások. Az IoT Edge 1.4 LTS 2024. november 12-én megszűnik. Ha egy korábbi kiadáson dolgozik, olvassa el az IoT Edge frissítése című témakört.
Az Azure IoT Edge-csomópontokat hierarchikus rétegekbe rendezett hálózatokon is üzembe helyezheti. A hierarchia minden rétege egy átjáróeszköz, amely az alatta lévő rétegben lévő eszközöktől érkező üzeneteket és kéréseket kezeli. Ezt a konfigurációt beágyazott élnek is nevezik.
Az eszközök hierarchiáját úgy strukturálhatja, hogy csak a felső réteg legyen a felhőhöz való kapcsolódás, az alsó rétegek pedig csak a szomszédos északi és déli rétegekkel kommunikálhassanak. Ez a hálózati rétegzés a legtöbb ipari hálózat alapja, amely az ISA-95 szabványt követi.
Ez az oktatóanyag bemutatja az IoT Edge-eszközök hierarchiájának létrehozását a Linuxhoz készült IoT Edge használatával Windows rendszeren, az IoT Edge futtatókörnyezeti tárolók üzembe helyezését az eszközökön, valamint az eszközök helyi konfigurálását. A következő feladatokat hajtja végre:
- Hozza létre és definiálja a kapcsolatokat az IoT Edge-eszközök hierarchiájában.
- Konfigurálja az IoT Edge-futtatókörnyezetet a hierarchiában lévő eszközökön.
- Konzisztens tanúsítványokat telepíthet az eszközhierarchiában.
- Számítási feladatok hozzáadása a hierarchiában lévő eszközökhöz.
- Az IoT Edge API proxymodullal biztonságosan irányíthatja a HTTP-forgalmat egyetlen porton keresztül az alsó rétegbeli eszközökről.
Tipp.
Ez az oktatóanyag manuális és automatizált lépések keverékét tartalmazza, amelyek bemutatják a beágyazott IoT Edge-funkciókat.
Ha teljesen automatizáltan szeretné beállítani az IoT Edge-eszközök hierarchiáját, a szkriptelt Azure IoT Edge for Industrial IoT-minta alapján saját szkriptet vezet. Ez a szkriptelt forgatókönyv előre konfigurált eszközként telepíti az Azure-beli virtuális gépeket egy gyári környezet szimulálásához.
Ha részletesebben szeretné áttekinteni az IoT Edge-eszközök hierarchiájának létrehozásának és kezelésének manuális lépéseit, tekintse meg az IoT Edge-eszközátjáró-hierarchiák útmutatóját.
Ebben az oktatóanyagban a következő hálózati rétegek vannak definiálva:
Felső réteg: Ezen a rétegen az IoT Edge-eszközök közvetlenül a felhőhöz csatlakozhatnak.
Alsó rétegek: A felső réteg alatti rétegekben lévő IoT Edge-eszközök nem tudnak közvetlenül csatlakozni a felhőhöz. Az adatok küldéséhez és fogadásához egy vagy több közvetítő IoT Edge-eszközön kell végigmenniük.
Ez az oktatóanyag két eszközhierarchiát használ az egyszerűség érdekében. A felső rétegbeli eszköz a hierarchia felső rétegében lévő olyan eszközt jelöl, amely közvetlenül a felhőhöz tud csatlakozni. Ezt az eszközt szülőeszköznek nevezzük. Az alsó rétegbeli eszköz egy olyan eszközt jelöl a hierarchia alsó rétegében, amely nem tud közvetlenül csatlakozni a felhőhöz. Igény szerint további eszközöket is hozzáadhat az éles környezet megjelenítéséhez. Az alsó rétegben lévő eszközöket gyermekeszközöknek nevezzük.
Feljegyzés
A gyermekeszköz lehet alsóbb rétegbeli eszköz vagy átjáróeszköz beágyazott topológiában.
Előfeltételek
Az IoT Edge-eszközök hierarchiájának létrehozásához a következőkre van szükség:
- Bash-rendszerhéj az Azure Cloud Shellben az Azure CLI 2.3.1-s verziójával, az Azure IoT 0.10.6-os vagy újabb verziójával. Ez az oktatóanyag az Azure Cloud Shellt használja. Az Azure CLI-modulok és -bővítmények aktuális verzióinak megtekintéséhez futtassa az az verziót.
- Két, Linuxhoz készült Azure IoT Edge-et futtató Windows-eszköz Windows rendszeren. Mindkét eszközt külső virtuális kapcsolóval kell üzembe helyezni.
Tipp.
Belső vagy alapértelmezett virtuális kapcsolót is használhat, ha porttovábbítás van konfigurálva a Windows gazdagép operációs rendszerén. Az oktatóanyag egyszerűsége érdekében azonban mindkét eszköznek külső virtuális kapcsolót kell használnia, és ugyanahhoz a külső hálózathoz kell csatlakoznia.
A netowrkingről további információt az Azure IoT Edge for Linux windowsos hálózatkezelési és hálózatkezelési konfigurációjában talál a Linuxhoz készült Azure IoT Edge-hez Windows rendszeren.
Ha az EFLOW-eszközöket egy DMZ-n kell beállítania, tekintse meg az Azure IoT Edge linuxos konfigurálását Windows Ipari IoT > DMZ-konfiguráción.
- Érvényes előfizetéssel rendelkező Azure-fiók. Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.
- Ingyenes vagy standard szintű IoT Hub az Azure-ban.
- Győződjön meg arról, hogy a következő portok nyitva vannak az összes eszközön, kivéve a legalacsonyabb rétegű eszközt: 443, 5671, 8883:
- 443: A szülő- és gyermek peremhálózati központok között rest API-hívásokhoz és Docker-tárolólemezképek lekéréséhez használható.
- 5671, 8883: AMQP-hez és MQTT-hez használatos.
Tipp.
További információ az EFLOW virtuálisgép-tűzfalról: IoT Edge for Linux on Windows security.
IoT Edge-eszközhierarchia létrehozása
Az IoT Edge-eszközök alkotják a hierarchia rétegeit. Ez az oktatóanyag két IoT Edge-eszköz hierarchiáját hozza létre: a felső és az alsó rétegbeli eszközt. Igény szerint további alsóbb rétegbeli eszközöket is létrehozhat.
Az IoT Edge-eszközök hierarchiájának létrehozásához és konfigurálásához az az iot edge-eszközökkel hozza létre az Azure CLI-parancsot. A parancs több lépés automatizálásával és kondenzálásával leegyszerűsíti a hierarchia konfigurálását:
- Eszközök létrehozása az IoT Hubon
- A szülő-gyermek kapcsolatok beállítása az eszközök közötti kommunikáció engedélyezéséhez
- Az üzembehelyezési jegyzék alkalmazása az egyes eszközökre
- Tanúsítványláncot hoz létre az egyes eszközökhöz, hogy biztonságos kommunikációt létesítsen közöttük
- Konfigurációs fájlokat hoz létre az egyes eszközökhöz
Eszközkonfiguráció létrehozása
Beágyazott éleszközök egy csoportját hozhatja létre egy szülőeszközt tartalmazó gyermekeszközzel. Ebben az oktatóanyagban alapszintű üzembehelyezési jegyzékeket használunk. További példaként tekintse át a konfigurációs példasablonokat.
Az az iot edge-eszközök létrehozási parancsának használata előtt meg kell határoznia a legfelső és az alsó rétegbeli eszközök üzembehelyezési jegyzékét. Töltse le a deploymentTopLayer.json mintafájlt a helyi gépére.
A legfelső rétegbeli eszköztelepítési jegyzék meghatározza az IoT Edge API proxymodult, és deklarálja az útvonalat az alsó rétegbeli eszközről az IoT Hubra.
Töltse le a deploymentLowerLayer.json mintafájlt a helyi gépére.
Az alsó rétegbeli eszköz üzembehelyezési jegyzék tartalmazza a szimulált hőmérséklet-érzékelő modult, és deklarálja az útvonalat a felső rétegbeli eszközre. A systemModules szakaszban láthatja, hogy a futtatókörnyezeti modulok a $upstream:443-ból mcr.microsoft.com helyett lekérésre vannak beállítva. Az alsó rétegbeli eszköz docker-rendszerkép-kéréseket küld a 443-as porton található IoT Edge API proxymodulhoz , mivel közvetlenül nem tudja lekérni a rendszerképeket a felhőből. Az alsó rétegbeli eszközön üzembe helyezett másik modul, a Szimulált hőmérséklet-érzékelő modul szintén a rendszerkép-kérést küldi el a következőre
$upstream:443
: .Az alacsonyabb rétegbeli üzembehelyezési jegyzék létrehozásáról további információt az Azure IoT Edge-eszközök csatlakoztatása hierarchia létrehozásához című témakörben talál.
Az Azure Cloud Shellben az az iot edge-eszközökkel hozza létre az Azure CLI-parancsot az IoT Hubban lévő eszközök és konfigurációs csomagok létrehozásához a hierarchiában lévő összes eszközhöz. Cserélje le a következő helyőrzőket a megfelelő értékekre:
Helyőrző Leírás <hub-name> Az IoT Hub neve. <config-bundle-output-path> A mappa elérési útja, ahová menteni szeretné a konfigurációs csomagokat. <parent-device-name> A felső réteg szülőeszköz-azonosítójának neve. <parent-deployment-manifest> A szülőeszköz üzembehelyezési jegyzékfájlja. <parent-fqdn-or-ip> A szülőeszköz teljes tartományneve (FQDN) vagy IP-címe. <gyermekeszköz neve> Az alsó réteg gyermekeszköz-azonosítójának neve. <gyermektelepítési jegyzék> A gyermekeszköz üzembehelyezési jegyzékfájlja. <child-fqdn-or-ip> Gyermekeszköz teljes tartományneve (FQDN) vagy IP-címe. az iot edge devices create \ --hub-name <hub-name> \ --output-path <config-bundle-output-path> \ --default-edge-agent "mcr.microsoft.com/azureiotedge-agent:1.4" \ --device id=<parent-device-name> \ deployment=<parent-deployment-manifest> \ hostname=<parent-fqdn-or-ip> \ --device id=child-1 \ parent=parent-1 \ deployment=<child-deployment-manifest> \ hostname=<child-fqdn-or-ip>
Az alábbi parancs például két IoT Edge-eszköz hierarchiáját hozza létre az IoT Hubban. Egy szülő-1 nevű felső rétegbeli eszköz és egy child-1* nevű alsó rétegű eszköz. A parancs a kimeneti könyvtárban lévő összes eszköz konfigurációs csomagjait menti. A parancs önaláírt teszttanúsítványokat is létrehoz, és tartalmazza őket a konfigurációs csomagban. A konfigurációs csomagok telepítése minden eszközön egy telepítési szkript használatával történik.
az iot edge devices create \ --hub-name my-iot-hub \ --output-path ./output \ --default-edge-agent "mcr.microsoft.com/azureiotedge-agent:1.4" \ --device id=parent-1 \ deployment=./deploymentTopLayer.json \ hostname=10.0.0.4 \ --device id=child-1 \ parent=parent-1 \ deployment=./deploymentLowerLayer.json \ hostname=10.1.0.4
A parancs futtatása után megtalálhatja az eszközkonfigurációs csomagokat a kimeneti könyvtárban. Példa:
PS C:\nested-edge\output> dir
Directory: C:\nested-edge\output
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 4/10/2023 4:12 PM 7192 child-1.tgz
-a--- 4/10/2023 4:12 PM 6851 parent-1.tgz
Használhatja a parancsnak argumentumként átadott saját tanúsítványait és kulcsait, vagy létrehozhat egy összetettebb eszközhierarchiát. További információ a beágyazott eszközök az az paranccsal történő létrehozásáról: az iot edge devices create. Ha nem tudja, hogyan használják a tanúsítványokat egy átjáróforgatókönyvben, tekintse meg az útmutató tanúsítvány szakaszát.
Ebben az oktatóanyagban beágyazott argumentumokkal hozza létre az eszközöket és a konfigurációs csomagokat. A konfigurációs fájlt YAML vagy JSON formátumban is használhatja. A mintakonfigurációs fájlért lásd a sample_devices_config.yaml példát.
Az IoT Edge-futtatókörnyezet konfigurálása
Az eszközök kiépítése mellett a konfigurációs lépések megbízható kommunikációt hoznak létre a hierarchiában lévő eszközök között a korábban létrehozott tanúsítványok használatával. A lépések a hierarchia hálózati szerkezetének létrehozását is megkezdik. A felső rétegbeli eszköz fenntartja az internetkapcsolatot, lehetővé téve a rendszerképek lekérését a felhőből való futásidejéhez, míg az alsó rétegbeli eszközök a felső réteg eszközén keresztül haladva érik el ezeket a képeket.
Az IoT Edge-futtatókörnyezet konfigurálásához a konfigurációs csomagokat kell alkalmaznia az eszközökre. A konfigurációk különböznek a felső és az alsó rétegbeli eszköz között, ezért ügyeljen az egyes eszközökre alkalmazott eszközkonfigurációs fájlra.
Minden eszköznek szüksége van a megfelelő konfigurációs csomagra. Usb-meghajtóval vagy biztonságos fájlmásolással áthelyezheti a konfigurációs csomagokat az egyes eszközökre. A konfigurációs csomagot át kell másolnia az egyes EFLOW-eszközök Windows-gazdagép operációs rendszerére, majd át kell másolnia az EFLOW virtuális gépre.
Figyelmeztetés
Mindenképpen küldje el a megfelelő konfigurációs csomagot minden eszközre.
Felső rétegbeli eszközkonfiguráció
Csatlakozzon a legfelső szintű Windows-gazdagéphez, és másolja a parent-1.tzg fájlt az eszközre.
Emelt szintű PowerShell-munkamenet indítása a Futtatás rendszergazdaként funkcióval.
Másolja a parent-1.tzg elemet az EFLOW virtuális gépre.
Copy-EflowVmFile -fromFile parent-1.tzg -toFile ~/ -pushFile
Csatlakozás az EFLOW virtuális géphez
Connect-EflowVm
Bontsa ki a konfigurációs köteg archívumát. Például a kátrány paranccsal nyerje ki a parent-1 archív fájlt:
tar -xzf ./parent-1.tgz
Adja meg a telepítési szkript végrehajtási engedélyét.
chmod +x install.sh
Futtassa a install.sh szkriptet.
sudo sh ./install.sh
Alkalmazza a megfelelő tanúsítványengedélyeket, és indítsa újra az IoT Edge-futtatókörnyezetet.
sudo chmod -R 755 /etc/aziot/certificates/ sudo iotedge system restart
Ellenőrizze, hogy az összes IoT Edge-szolgáltatás megfelelően fut-e.
sudo iotedge system status
Végül adja hozzá a megfelelő tűzfalszabályokat az alsó rétegbeli eszköz és a felső rétegbeli eszköz közötti kapcsolat engedélyezéséhez.
sudo iptables -A INPUT -p tcp --dport 5671 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 8883 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT sudo iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT sudo iptables-save | sudo tee /etc/systemd/scripts/ip4save
Futtassa a konfigurációs és kapcsolati ellenőrzéseket az eszközökön.
sudo iotedge check
A felső rétegbeli eszközön várjon egy kimenetet, amely több átmenő értékelést is eredményez. A naplószabályzatokra és a hálózattól függően a DNS-szabályzatokra vonatkozó figyelmeztetések is megjelenhetnek.
Ha részletesebben szeretné megtudni, hogy milyen módosítások történnek az eszköz konfigurációs fájlján, tekintse meg az IoT Edge konfigurálását az eszközökre vonatkozó útmutató útmutatójának eszközökre vonatkozó szakaszában.
Alsó rétegbeli eszközkonfiguráció
Csatlakozzon az alsó szintű Windows-gazdagéphez, és másolja a child-1.tzg fájlt az eszközre.
Emelt szintű PowerShell-munkamenet indítása a Futtatás rendszergazdaként funkcióval.
Másolja a child-1.tzg-t az EFLOW virtuális gépre.
Copy-EflowVmFile -fromFile child-1.tzg -toFile ~/ -pushFile
Csatlakozás az EFLOW virtuális géphez
Connect-EflowVm
Bontsa ki a konfigurációs köteg archívumát. Például a kátrány paranccsal nyerje ki a child-1 archív fájlt:
tar -xzf ./child-1.tgz
Adja meg a telepítési szkript végrehajtási engedélyét.
chmod +x install.sh
Futtassa a install.sh szkriptet.
sudo sh ./install.sh
Alkalmazza a megfelelő tanúsítványengedélyeket, és indítsa újra az IoT Edge-futtatókörnyezetet.
sudo chmod -R 755 /etc/aziot/certificates/ sudo iotedge system restart
Ellenőrizze, hogy az összes IoT Edge-szolgáltatás megfelelően fut-e.
sudo iotedge system status
Futtassa a konfigurációs és kapcsolati ellenőrzéseket az eszközökön. Az alsó rétegbeli eszköz esetében a diagnosztikai rendszerképet manuálisan kell átadni a parancsban:
sudo iotedge check --diagnostics-image-name <parent_device_fqdn_or_ip>:443/azureiotedge-diagnostics:1.2
Ha helyesen végezte el a korábbi lépéseket, ellenőrizheti, hogy az eszközök megfelelően vannak-e konfigurálva. Ha meggyőződik a konfigurációk helyességéről az egyes eszközökön, készen áll a folytatásra.
Eszközmodul üzembe helyezése
Az eszközök modultelepítése akkor lett alkalmazva, amikor az eszközök az IoT Hubban lettek létrehozva. Az az iot edge devices create command applied the deployment JSON files for the top and lower layer devices. Az üzembe helyezések befejeződése után az alsó rétegbeli eszköz az IoT Edge API proxymodult használja a szükséges lemezképek lekéréséhez.
Emellett az IoT Edge Agent és az IoT Edge Hub futtatókörnyezeti moduljai is megkapják a Docker regisztrációs modult és az IoT Edge API proxymodult.
A Docker-beállításjegyzék modul egy meglévő Azure Container Registryre mutat. Ebben az esetben REGISTRY_PROXY_REMOTEURL
a Microsoft Container Registryre mutat. A Docker-beállításjegyzék alapértelmezés szerint az 5000-s porton figyel.
Az IoT Edge API proxymodulja HTTP-kéréseket irányít más modulokhoz, így az alsó rétegbeli eszközök tárolólemezképeket kérhetnek le vagy blobokat küldhetnek a tárolóba. Ebben az oktatóanyagban a 443-es porton kommunikál, és úgy van konfigurálva, hogy a Docker-tároló lemezkép-lekéréses kéréseinek útvonalát küldje el a Docker-beállításjegyzék-modulba az 5000-es porton. Emellett a Blob Storage feltöltési kérései az AzureBlobStorageonIoTEdge modulhoz vezetnek az 11002-es porton. Az IoT Edge API proxymoduljáról és konfigurálásáról a modul útmutatójában talál további információt.
Ha szeretné áttekinteni, hogyan hozhat létre ilyen üzembe helyezést az Azure Portalon vagy az Azure Cloud Shellen keresztül, tekintse meg az útmutató felső rétegbeli eszközszakaszát.
A modulok állapotát a következő paranccsal tekintheti meg:
az iot hub module-twin show --device-id <edge-device-id> --module-id '$edgeAgent' --hub-name <iot-hub-name> --query "properties.reported.[systemModules, modules]"
Ez a parancs az edgeAgent jelentett összes tulajdonságát kimeneteli. Íme néhány hasznos az eszköz állapotának figyeléséhez: futtatókörnyezet állapota, futásidejű kezdési idő, futásidejű utolsó kilépési idő, futásidejű újraindítások száma.
A modulok állapotát az Azure Portalon is megtekintheti. Lépjen az IoT Hub Eszközök szakaszára az eszközök és modulok megtekintéséhez.
A létrejött adatok megtekintése
A leküldéses szimulált hőmérséklet-érzékelő modul mintakörnyezeti adatokat hoz létre. Olyan üzeneteket küld, amelyek tartalmazzák a környezeti hőmérsékletet és a páratartalmat, a gép hőmérsékletét és nyomását, valamint egy időbélyeget.
Ezeket az üzeneteket az Azure Cloud Shellben is megtekintheti:
az iot hub monitor-events -n <iot-hub-name> -d <lower-layer-device-name>
Példa:
az iot hub monitor-events -n my-iot-hub -d child-1
{
"event": {
"origin": "child-1",
"module": "simulatedTemperatureSensor",
"interface": "",
"component": "",
"payload": "{\"machine\":{\"temperature\":104.29281270901808,\"pressure\":10.48905461241978},\"ambient\":{\"temperature\":21.086561171611102,\"humidity\":24},\"timeCreated\":\"2023-04-17T21:50:30.1082487Z\"}"
}
}
Hibaelhárítás
Futtassa a iotedge check
parancsot a konfiguráció ellenőrzéséhez és a hibák elhárításához.
Beágyazott hierarchiában is futtatható iotedge check
, még akkor is, ha az alsóbb rétegbeli eszközök nem rendelkeznek közvetlen internet-hozzáféréssel.
Amikor az alsó rétegből fut iotedge check
, a program megpróbálja lekérni a képet a szülőtől a 443-es porton keresztül.
sudo iotedge check --diagnostics-image-name $upstream:443/azureiotedge-diagnostics:1.2
Az azureiotedge-diagnostics
érték a beállításjegyzék-modulhoz csatolt tárolóregisztrációs adatbázisból lesz lekért. Ez az oktatóanyag alapértelmezés szerint a következőre https://mcr.microsoft.comvan beállítva:
Név szerint | Érték |
---|---|
REGISTRY_PROXY_REMOTEURL |
https://mcr.microsoft.com |
Ha privát tárolóregisztrációs adatbázist használ, győződjön meg arról, hogy az összes rendszerkép (IoTEdgeAPIProxy, edgeAgent, edgeHub, szimulált hőmérséklet-érzékelő és diagnosztika) megtalálható a tárolóregisztrációs adatbázisban.
Ha egy alsóbb rétegbeli eszköz processzorarchitektúrája eltér a szülőeszközétől, akkor a megfelelő architektúrarendszerképre van szüksége. Használhat csatlakoztatott beállításjegyzéket, vagy megadhatja a megfelelő rendszerképet az edgeAgent és edgeHub modulokhoz az alsóbb rétegbeli eszköz config.toml fájljában. Ha például a szülőeszköz ARM32v7 architektúrán fut, és az alsóbb rétegbeli eszköz AMD64-architektúrán fut, meg kell adnia a megfelelő verziót és architektúra képcímkét az alsóbb rétegbeli eszköz config.toml fájljában.
[agent.config]
image = "$upstream:443/azureiotedge-agent:1.4.10-linux-amd64"
"systemModules": {
"edgeAgent": {
"settings": {
"image": "$upstream:443/azureiotedge-agent:1.4.10-linux-amd64"
},
},
"edgeHub": {
"settings": {
"image": "$upstream:443/azureiotedge-hub:1.4.10-linux-amd64",
}
}
}
Az erőforrások eltávolítása
A díjak elkerülése érdekében törölheti a cikkben létrehozott helyi konfigurációkat és Azure-erőforrásokat.
Az erőforrások törlése:
Jelentkezzen be az Azure Portalra, és válassza az Erőforráscsoportok elemet.
Válassza ki az IoT Edge teszterőforrásokat tartalmazó erőforráscsoport nevét.
Ellenőrizze az erőforráscsoportban található erőforrások listáját. Ha mindet törölni szeretné, válassza az Erőforráscsoport törlése lehetőséget. Ha csak néhányat szeretne törölni, az egyes erőforrásokat egyenként is törölheti.
Következő lépések
Ebben az oktatóanyagban két IoT Edge-eszközt konfigurált átjáróként, és az egyiket a másik szülőeszközeként állította be. Ezután bemutatta, hogyan húzhat egy tárolórendszerképet a gyermekeszközre egy átjárón keresztül az IoT Edge API proxymoduljával. Ha többet szeretne megtudni, tekintse meg a proxymodul használatáról szóló útmutatót.
Az átjárók IoT Edge-eszközök hierarchikus rétegeinek létrehozásával kapcsolatos további információkért tekintse meg az alábbi cikket.