DAM2 - EH3. IoT Lab. Curs 2025-2026

De binefa.com
Salta a la navegació Salta a la cerca

Quan tingueu les credencials d'accés a la NET heu de compartir una carpeta amb aquest nom: 2526-DAM-1rCognom2nCognomNom (Per exemple, si el vostre nom és Xavier López Pujol --> 2526-DAM-LopezPujolXavier). Heu de compartir-la amb el professor transversal dels projectes globals i amb mi. A aquest enllaç podreu veure si ja hi sou a la llista:

Carpetes compartides de 2n de DAM. Curs 2025-2026

Enllaços ràpids

Compartició de pantalla

Recull de pràctiques de 2n de DAM. Curs 2025-2026

Recull de codis fets a classe. Curs 2025-2026

Introducció al QML. Curs 2025-2026

Llista de 2n de DAM

Totes les llistes

Algunes classes

20260123

20260119

20260116

Sobre arxius .qrc

20260112

20260109

20251215

20251212

Creació de projectes Qt multiplataforma emprant sòcols web segurs (wss) sobre escriptori, WebAssembly i Android.

alumne@qtedu:~/QtPrj/qml$ ./qt_project_generator.py 
============================================================
 GENERADOR DE PROJECTES QT MULTIPLATAFORMA
============================================================

📦 Nom del projecte (ex: mqtt00): mqt00
📱 Nom de l'aplicació [appmqt00]: 
📌 Versió del projecte [0.1]: 
🎨 URI QML [premeu Enter per deixar buit o ex: com.example.mqt00]: 

✅ Projecte 'mqt00' creat correctament!
📁 Ubicació: /home/alumne/QtPrj/qml/mqt00

📝 Passos següents:
  1. Copia a la nova carpeta els arxius (.h i .cpp): connexio, mqttbasic i websocketiodevice
  2. Obre Qt Creator
  3. File → Open File or Project...
  4. Selecciona: /home/alumne/QtPrj/qml/mqt00/CMakeLists.txt
  5. Configura els kits (Desktop, Android, WebAssembly)
  6. Build → Build All
alumne@qtedu:~/QtPrj/qml$

Lloc web per a descarregar-se els arxius necessaris per a fer una aplicació multiplataforma emprant wss sobre escriptori, WebAssembly i Android

Per a connectar el rerefons amb el QML, afegiu a main.cpp el text en negreta:

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include "connexio.h"

int main(int argc, char *argv[]){
   QGuiApplication app(argc, argv);

   qmlRegisterType<Connexio>("desDe.connexio",1,0,"Connexio");

   QQmlApplicationEngine engine;
   ...

Així podeu importar el rerefons des del main.qml:

import QtQuick
import QtQuick.Controls
import desDe.connexio 1.0

Podent fer crides a mètodes públics de la classe C++ de rerefons:

mqttController.on_btConnecta_clicked(); // on_btConnecta_clicked() és un mètode osca públic (public slot) de la classe Connexió a C++

Tots les captures dels senyals de la classe en C++ duen on al davant i es posa en majúscula el primer caràcter del senyal:

       Connexio {
           id: mqttController

           // Rep el senyal quan el C++ confirma la connexió
           onVSignalMqttConnected: {
               estatText.text = "Connectat!";
               estatText.color = "green";
               exitButton.text = "&Desconnecta";
           }

20251205

mqttQml03 (mqttQml03.zip)

20251201

  • Seguim amb QML
  • Seguim fent exercicis pendents
  • A l'exemple qml05 surt aquest advertiment:
qt.qml.context: qrc:/qml05/main.qml:22:9 Parameter "event" is not declared. Injection of parameters into signal handlers is deprecated. Use JavaScript functions with formal parameters instead.

Solució (afegiu function(event)):

       Keys.onDownPressed: square.y += 8
       Keys.onPressed: function(event){
           switch(event.key) {
               case Qt.Key_Plus:
                   square.scale += 0.2
                   break;
               case Qt.Key_Minus:
                   square.scale -= 0.2
                   break;
           }
       }

20251128

  • Seguim amb QML
  • Seguim fent exercicis pendents

20251124

  • Seguim fent exercicis pendents
  • Primer exemple:
import QtQuick

Window {
   width: 640
   height: 480
   visible: true
   title: qsTr("Primera prova. Curs 2025-2026")
   Rectangle{
       anchors.centerIn: parent
       anchors.fill: parent
       color: "lime"
       Text{
           anchors.centerIn: parent
           text: "DAM 2025-2026"
           color: "darkblue"
           font.family: "Comic Sans"
           font.pixelSize: 32
           font.bold: true
       }
   }
}

PureQML

Pàgina oficial de PureQML

Posada en marxa del PureQML

  • Instal·lació de l'eina python-future:
pip3 install future

A GNU/Linux Debian 13:

 sudo apt update
 sudo apt install python3-venv 
 python -m venv entorn
 source entorn/bin/activate
 deactivate

A Windows:

pip install future
  • Primera aplicació
mkdir prjFolder
cd prjFolder
git clone https://github.com/pureqml/qmlcore.git
git clone https://github.com/pureqml/controls.git
./qmlcore/build --boilerplate
./qmlcore/build

A Windows, les dues darreres passes:

python qmlcore/build --boilerplate
python qmlcore/build

Obriu amb un navegador l'arxiu prjFolder/build.web/index.html

  • Modificació de prjFolder/src/app.qml:
Text {
       anchors.fill: context;
        
       text: 'Primer exemple de pureQML';
       color: 'red';
       font.pixelSize: 32;
       verticalAlignment: Text.AlignVCenter;
       horizontalAlignment: Text.AlignHCenter;
}

Reconstruïu-ho:

./qmlcore/build 

A Windows:

python qmlcore/build


Torneu a obrir amb un navegador l'arxiu prjFolder/build.web/index.html per a observar els canvis

Activitats A08.00 del recull de pràctiques de 2n de DAM. Curs_2026-2026

20251121

20251117ex

The Emscripten versions are:

   Qt 6.2: 2.0.14
   Qt 6.3: 3.0.0
   Qt 6.4: 3.1.14
   Qt 6.5: 3.1.25
   Qt 6.6: 3.1.37
   Qt 6.7: 3.1.50
   Qt 6.8: 3.1.56
   Qt 6.9: 3.1.70
   Qt 6.10: 4.0.7

Use emsdk to install specific Emscripten versions. For example, to install it for Qt 6.8 enter:

   ./emsdk install 3.1.70
   ./emsdk activate 3.1.70

On Windows, Emscripten is in your path after installation. On macOS or Linux you need to add it to your path, like this:

source /path/to/emsdk/emsdk_env.sh

Check this with the following command:

em++ --version

20251114

Seguim fent els exercicis pendents de Qt i IoT del recull.

20251110

  • Aneu a alguns exemples amb Qt i baixeu-vos 01_simpleclient_usr_pwd_CMake.zip, exQt_05.zip i ginyMqtt04_cmake.zip. Analitzem els codis i llur funcionament.
  • Baixeu-vos tots els arxius d'avui al recull. Analitzem els codis i llur funcionament.
  • Comencem A12.01 i A12.02 del recull

20251107

20251031

20251027

set(CMAKE_AUTORCC ON)

20251024

  • Fem A06.02 del recull de pràctiques
  • Canvis al CMakeLists.txt (ho teniu penjat al recull del dia d'avui ex04siva.zip):

- Afegiu set(CMAKE_AUTORCC ON) - això processa automàticament els fitxers .qrc- (també és convenient, no necessari a aquesta pràctica, afegir set(CMAKE_AUTOMOC ON)) a CMakeLists.txt

20251017

  • Seguim amb Pr03
void Giny::on_btCesar_clicked()
{
   qDebug() << "Cesar";
   //ui->lbNom->setText("César");
   n+=2;
   //ui->lbNom->setNum(n);
   vEscriuNum(n);
   emit senyalNum(n); // <----- !!!!!
}
void Base::vMostraN(int n){
   //qDebug() << "Número: " << QString::number(ui->spN->value());
   qDebug() << "Número: " << QString::number(n);
   setN(n); // <-- !!!!!!!
}

pr03b.zip

20251013

  • Dubtes del dia anterior
  • Exercicis pendents

20251006

  • Dubtes del dia anterior
  • Seguim analitzant codis
  • Exercicis pendents

20251003

20250929

Control de la placa IoT-02 amb Snap! (Modifiqueu la MAC i poseu-hi la vostra)

20250926


20250922

Recull del dia 20250919 usuari: dam | contrasenya: dam2526

Instal·lació del Node-RED

Linux Installers for Node-RED

Per a Debian 13 i Raspberry Pi:

sudo apt install build-essential
bash <(curl -sL https://github.com/node-red/linux-installers/releases/latest/download/update-nodejs-and-nodered-deb)
sudo systemctl enable nodered
sudo systemctl start nodered

Linux Installers for Node-RED (GitHub)

Running Node-RED locally

Running Node-RED locally (nodered.org)

Prova de funcionament del Node-RED

http://localhost:1880/

Instal·lació del Node-RED Dashboard 2.0

El Node-RED diu que la col·lecció de nodes node-red-dashboard és obsoleta. La versió actual és Node-RED Dashboard 2.0. En el moment de fer aquesta entrada no es pot instal·lar Node-RED Dashboard 2.0 des del mateix gestor del Node-RED.

Una solució és anar al directori .node-red i fer la instal·lació emprant npm

jb@clotfje:~$ cd ~/.node-red
jb@clotfje:~/.node-red$ npm install @flowfuse/node-red-dashboard

added 172 packages, and audited 173 packages in 7s

20 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
jb@clotfje:~/.node-red$ sudo systemctl stop nodered
jb@clotfje:~/.node-red$ sudo systemctl start nodered
jb@clotfje:~/.node-red$

Connectant Snap! i Node-RED mitjançant MQTT

Snap!

20250919

Recull del dia 20250919 usuari: dam | contrasenya: dam2526

Distribució de M07UF1 i M13 al curs 2024-2025 (obsolet)

Distribució de M07UF1 i M13 al curs 2024-2025 de 2n de DAM

Qt

Qt Educational License

El Qt Creator serà l'IDE que farem servir per a desenvolupar el disseny d'aplicacions gràfiques d'usuari:

Aneu a la pàgina Qt for Open Source Development i cerqueu Download the Qt Online Installer. Baixeu-vos-ho i instal·leu-ho (us demana registrar-vos per a poder-ho instal·lar).

Activitat 6

Paquets que manquen per a fer funcionar les Qt a l'Ubuntu:

sudo apt install libx11-xcb-dev libglu1-mesa-dev libxcb-xinerama0

IoT

Instal·lació de Node.js Guia d'instal·lació de node i npm

Supported Node versions on NodeRed

Verificació:

node --version
npm --version

Instal·lació i funcionament del NodeRed autònom

ecat@iot-ecat:~$ mkdir bin
ecat@iot-ecat:~$ cd bin
ecat@iot-ecat:~/bin$ sudo apt install unzip
ecat@iot-ecat:~/bin$ mkdir nodered-ui
ecat@iot-ecat:~/bin$ cd nodered-ui
ecat@iot-ecat:~/bin/nodered-ui$ wget https://www.binefa.cat/IoT/nodeRed/node_red_ui.zip
ecat@iot-ecat:~/bin/nodered-ui$ unzip node_red_ui.zip
ecat@iot-ecat:~/bin/nodered-ui$ node node_modules/node-red/red.js --userDir node_modules/node-red/data --settings node_modules/node-red/settings.js -v --port 2222 --title elmeuTitol --safe flows_meuTitol.json

Si hi ha problemes de confiança amb el certificat al descarrega l'arxiu .zip, hi podeu afegir l'opció --no-check-certificate:

wget --no-check-certificate https://www.binefa.cat/IoT/nodeRed/node_red_ui.zip

Activitat 7

Credencials IoT

#define EAP_ANONYMOUS_IDENTITY "CL-Internet_de_les_coses"
#define EAP_IDENTITY "CL-Internet_de_les_coses"
#define EAP_PASSWORD "CLioT2022_"
#define EAP_USERNAME "CL-Internet_de_les_coses"

const char* ssid = "IOTJE";

Repositori de codis fet a classe durant el curs

Codis fets a les classes de 2n de DAM usuari: dam | contrasenya: dam2526

Documentació

Alguns exàmens Qt/QML

Curs2024-2025 Eina d'avaluació GP1 Curs 2024-2025 - Departament

Drive curs 2023-2024 (Alèxia, SAC). Eina d'avaluació GP1

novaFP ASIX/DAW/DAM

Totes les llistes

Distribució de M07UF1 i M13 al curs 2022-2023 de 2n de DAM

Recull de pràctiques de 2n de DAM. Curs 2022-2023

Projecte global GP1. IoT

Impressió

Qt/QML

How To Install the Qt Educational License

Paquets que manquen per a fer funcionar les Qt a l'Ubuntu:

sudo apt install libx11-xcb-dev libglu1-mesa-dev libxcb-xinerama0
sudo apt install libxcb-cursor0 libxcb-cursor-dev

Activació de l'editor QML al QtCreator 6

Qt5 de Jan Bodnar

Vídeos QML

Qt5 Cadaques! A Book about Qt5

Qt Quick tutorial de Jan Bodnar

PyQt5 de Jan Bodnar

Instal·lació de QtMQtt a les Qt

Qt for Android

Qt for Android

Getting Started with Qt for Android

Getting Started with Qt6.5 for Android

Instal·lació de les eines mínimes (SDK, NDK i eines de terminal) per a fer aplicacions en Qt per a Android

Qt for WebAssembly

Qt for WebAssembly

json

How To Manipulate JSON With C++ and Qt

QProcess

QProcess example

Qt5 tutorial FFmpeg converter using QProcess - 2020

CMake

Cal fer la instal·lació d'aquests paquets a Debian 11:

sudo apt-get install libqt5svg5-dev qtscript5-dev
sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
sudo apt purge ibus

Vídeos externs per aprendre QML

(Gentilesa d'en Raül Gil García)

IoT

Introducció al Node-RED

TCP/UDP Capa de transport d'Ethernet

Introducció a MQTT

Afegint la targeta ESP8266 a l'IDE d'Arduino (NodeMCU1.0)

Micropython and the Internet of Things

SCADA fent servir Python QML i Arduino

MQTT avec Qt

Introducció al testing

Placa IoT-02

Placa IoT-02

Introducció a la placa IoT-02

Per a la programació amb l'IDE d'Arduino: https://dl.espressif.com/dl/package_esp32_index.json

Programació en MicroPython

LoRaWAN

LoRa 2022-2023

Consola de The Things Stack (Community Edition) de The Things Network

Presentació LoRaWAN (esborrany v0.4)

Ús pràctic de LoRaWAN TTNv2

Recull introductori per a treballar amb LoRa ( usuari: dam / contrasenya: dam2122)

Recull de pràctiques de 2n de DAM. Curs 2021-2022

Transmissió d'un número real de tipus IEEE-754 (4 bytes) i llur recuperació a NodeRED

Downlink LoRaWAN fent servir TTSv3