Aquí podrás encontrar los comandos del Cloud Shell usados y explicados.
Remplaza las palabras entre <> por la información correspondiente
- Azure IoT Hub
- Azure App Service
- Simulated Temperature Sensor (Este lo buscas desde el Marketplace con este nombre en Inglés)
- Azure Cloud Shell con Bash
- Repositorio web-apps-node-iot-hub-data-visualization
- Git
- Simulador Raspberry Pi
- Node.js
- En Windows debes poner la variable de entorno
- Manifiesto del diseño de IoT
- Tutorial para conectarlo a Power BI
- Tutorial para conectarlo a ML Studio
Indice
-
Abre portal.azure.com y abre el Cloud Shell. Si no tienes una cuenta de almacenamiento en tu suscripción creala desde la ventana que te aparece
-
Una vez que cargue vamos a generar tres variables para usarlas durante nuestra implementación
RESOURCE_GROUP=test-arqs \
LOCATION=southcentralus \
IOT_HUB_NAME=iot-res-arqs \
IOT_EDGE_DEVICE_NAME=edge-device-arqs
Nota: Se pueden hacer variables temporales dentro del CLI de Azure para asegurarte tener el mismo nombre de grupo de recursos, localización y nombres de recursos durante toda la implementación.
- Creamos un recurso de IoT Hub
az iot hub create --resource-group $RESOURCE_GROUP --name $IOT_HUB_NAME --sku F1 --partition-count 2 --location $LOCATION
- Creas un dispositivo de IoT Edge asociado al IoT Hub que acabas de crear
az iot hub device-identity create --device-id $IOT_EDGE_DEVICE_NAME --edge-enabled --hub-name $IOT_HUB_NAME
- Obtenemos nuestro ConnectionString que nos servirá para conectarnos después
az iot hub device-identity connection-string show --device-id $IOT_EDGE_DEVICE_NAME --hub-name $IOT_HUB_NAME
- Obtendrías algo parecido a esto. Guardalo:
HostName=iot-res-arqs.azure-devices.net;DeviceId=myEdgeDevice;SharedAccessKey=yNVfE31mVrTFfoDnsTa04XfHq4HYEvS1s9SyLVvsrbY=
Importante: Guardalo absolutamente todo, hasta la palabra HostName
.
- Implementamos la configuración necesaria y creamos un grupo de implementacón asociado a nuestro IoT Hub para que funcione. En este caso se usará una plantilla de ARM de Microsoft para la configuración. https://aka.ms/iotedge-vm-deploy
az deployment group create \
--resource-group $IOT_HUB_NAME \
--template-uri "https://aka.ms/iotedge-vm-deploy" \
--parameters dnsLabelPrefix='<NOMBRE_MAQUINA_VIRTUAL>' \
--parameters adminUsername='azureUser' \
--parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id $IOT_EDGE_DEVICE_NAME --hub-name iot-res-arqs -o tsv) \
--parameters authenticationType='password' \
--parameters adminPasswordOrKey="<PASSWORD>."
Nota: Toda la configuración se hace a traves de la plantilla ARM y pasamos todos los datos por medio de parametros. Para saber más de ellas consulta el tutorial de creación de ARM templates
- Obtendrás algo parecibo a esto. Guardalo para acceder a tu VM:
- Colocamos el acceso SSH obtenido para entrar a la máquina virtual
ssh <TU USERNAME>@{TU DNS}
- Comprobamos el status de nuestra implementación de iotedge
sudo systemctl status iotedge
-
Si te falló la implementación de iotedge espera unos minutos y si continua fallando ve este tutorial para instalarlo de forma manual.
-
Si quieres obtener los registros de creación del dispositivo lo puedes hacer copn el siguiente comando
journalctl -u iotedge
- Si quieres ver que realmente se creo el dispositivo ejecuta este comando. Se encarga de listar todos los dispositivos de IoT asociados a tu Hub:
sudo iotedge list
-
Ve a portal.azure.com y ve a tu recurso IoT Hub que acabas de crear.
-
en el menú de la izquierda del recurso busca IoT Edge.
-
Selecciona el dispostivo que tienes ahí
-
Da clic en Establecer módulos
- Agrega un dispositivo de Marketplace
- Busca Simulated Temperature Sensor y agregalo
- Ve a la sección de rutas y quita la primera por Default
- Te debe aparecer SimulatedTemperatureSensor en la lista de módulos de IoT Edge.
- Para verificar que esta funcionando nuestro sensor de temperatura escribe lo siguiente en el Azure Cloud Shell. Esto listará todos los dispositivos asociados al IoT Hub actual
sudo iotedge list
Nota: si cerraste la ventana de Cloud Shell tendrás que entrar de nuevo a la maquina virtual con SSH.
- Escribe el siguiente comando para que veas que el sensor esta funcionando y obteniendo datos.
sudo iotedge logs SimulatedTemperatureSensor -f
Te debe aparecer algo así
Nota: No necesitas hacer el paso anterior Adjuntamos un sensor de temperatura simulado para agregar la Raspberry Pi, puedes hacerlo directamente después de crear tu servicio IoT Hub.
Nota: Ve este tutorial para conectar tu Raspberry Pi fisica
- Desde Azure Clod Shell o Azure CLI obtenemos un nuevo tipo de connection string que es el que usaremos de aquí en adelante del tutorial, guardalo. Se hace con este comando:
az iot hub show-connection-string --hub-name $IOT_HUB_NAME --policy-name service
-
Creamos un nuevo dispositivo de IoT Edge como en pasos anteriores.
-
Una vez creado, obtenemos el Primary Connection String
-
Creamos un grupo de consumo de Azure para que podamos obtener los datos de la Raspberry Pi. Guarda el nombre del grupo de consumo:
az iot hub consumer-group create --hub-name iot-res-arqs --name ConsumerGroupArqs
- Abre cmd o terminal, colocate en la carpeta que más desees, clona el siguiente proyecto de GitHub y dirigete a la carpeta contenedora:
git clone https://github.com/Azure-Samples/web-apps-node-iot-hub-data-visualization.git
cd web-apps-node-iot-hub-data-visualization
- Coloca las variables de entorno en la misma CMD o terminal que tienes abierta con los siguientes comandos:
set IotHubConnectionString=<TU_CONNECTION_STRING>
set EventHubConsumerGroup=<TU_NOMBRE_CONSUMER_GROUP>
- Ejecuta los siguientes comandos de
npm
para instalar y comenzar a ejecutar la solución.
npm install
npm start
- Ve al navegador y accesa a: http://localhost:3000
Debe aparecerte algo así:
Listo, has obtenido los datos de la Raspberry Pi en una página web
-
Nos dirijimos a portal.azure.com y abrimos el Azure Cloud Shell
-
Ejecuta el siguiente comando para crear un plan de App Service:
az appservice plan create --name <NOMBRE_SERVICE_PLAN> --resource-group <NOMBRE_GRUPO_RECURSOS> --sku FREE
Nota: Aquí ya no esoty usando las variables del inicio pero puedes sentirte libre de usarlas.
- Creamos una webapp y la asociamos a nuestro plan de App Service. Esto creará un recurso de App Service.
az webapp create -n <NOMBRE_WEBAPP> -g <NOMBRE_GRUPO_RECURSOS> -p <NOMBRE_SERVICE_PLAN> --runtime "node|10.6" --deployment-local-git
- Una vez creado nuestro recurso, colocamos las variables de entorno como lo hicimos en nuestro entorno local
az webapp config appsettings set -n <NOMBRE_WEBAPP> -g <NOMBRE_GRUPO_RECURSOS> --settings EventHubConsumerGroup=<TU_NOMBRE_CONSUMER_GROUP> IotHubConnectionString="<TU_CONNECTION_STRING>"
- Abrimos los Web Sockets de nuestro App Service y habilitamos solo trafico por HTTPS:
az webapp config set -n <NOMBRE_WEBAPP> -g <NOMBRE_GRUPO_RECURSOS> --web-sockets-enabled true
az webapp update -n <NOMBRE_WEBAPP> -g <NOMBRE_GRUPO_RECURSOS> --https-only true
- También puedes esta configuración manualmente
- si no has hecho antes una implementación de Git con App Service y/o no has establecido antes credenciales de implementación, hazlo ahora con este comando:
az webapp deployment user set --user-name <USERNAME>
- Después de la ejecución de este comando te pedirá un password yq ue lo confirmes. Recuerda y guarda bien estos dos datos
Recordatorio: En terminales cuando escribes contraseñas no aparece nada por seguridad, es decir, parece que no estas ecribiendo, pero si lo estas haciendo.
- Obtienes y guardas la URL de Git con el siguiente comando (también puedes obtenerla viendo el detalle del recurso):
az webapp deployment source config-local-git -n <NOMBRE_WEBAPP> -g <NOMBRE_GRUPO_RECURSOS>
- Añades el destino remoto a tu repositorio local en tu computadora usando la URL obtenida en el paso anterior:
git remote add webapp <URL_GIT>
- Subes tu solución a App Service
git push webapp master
- Debes obtener una respuesta similar a esta:
remote:
remote: Finished successfully.
remote: Running post deployment command(s)...
remote: Deployment successful.
To https://contoso-web-app-3.scm.azurewebsites.net/contoso-web-app-3.git
6b132dd..7cbc994 main -> main
- Comprueba el status de la webapp con el siguiente comando:
az webapp show -n <NOMBRE_WEBAPP> -g <NOMBRE_GRUPO_RECURSOS> --query state
- Accede al link de la webapp desde el detalle de tu recurso. Debes tener un resultado igual al que salió en tu computadora:
(Sin el inspector de elementos claro esta)
- Recuerda eliminar tus recursos de Azure o todo tu grupo de recursos para cuidar tu saldo.