DAM 2023-2024
Quan tingueu les credencials d'accés a la NET heu de compartir una carpeta amb aquest nom: 2324-DAM-1rCognom2nCognomNom (Per exemple, si el vostre nom és Xavier López Pujol --> 2324-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 2023-2024
Contingut
- 1 Enllaços ràpids
- 2 Algunes classes
- 2.1 20240116 (1h)
- 2.2 20240115 (3h)
- 2.3 20240112 (1h)
- 2.4 20240109 (1h)
- 2.5 20240108 (3h)
- 2.6 20231219 (1h)
- 2.7 20231218 (3h)
- 2.8 20231215 (1h + 1h)
- 2.9 20231211 (3h)
- 2.10 20231205 (1h)
- 2.11 20231204 (3h)
- 2.12 20231201 (2h)
- 2.13 20231128 (1h)
- 2.14 20231127 (3h)
- 2.15 20231124 (1h + 1h)
- 2.16 20231121 (1h)
- 2.17 20231120 (3h)
- 2.18 20231117 (1h + 1h)
- 2.19 20231114 (1h)
- 2.20 20231013 (3h)
- 2.21 20231110 (1h + 1h)
- 2.22 20231107 (1h)
- 2.23 20231106 (3h)
- 2.24 20231103 (1h + 1h)
- 2.25 20231031 (1h)
- 2.26 20231030 (3h)
- 2.27 20231027 (1h + 1h)
- 2.28 20231024 (1h)
- 2.29 20231020 (2h)
- 2.30 20231020 (2h)
- 2.31 20231017 (1h)
- 2.32 20231016 (3h)
- 2.33 20231010 (1h)
- 2.34 20231009 (3h)
- 2.35 20231006 (1h + 1h)
- 2.36 20231003 (1h)
- 2.37 20231002 (3h)
- 2.38 20230929 (1h + 1h)
- 2.39 20230926 (1h)
- 2.40 20230922 (1h + 1h)
- 2.41 20230919 (1h)
- 2.42 20230918 (3h)
- 3 Repositori de codis fet a classe durant el curs
- 4 Documentació
Enllaços ràpids
Recull de pràctiques de 2n de DAM. Curs 2023-2024
Recull de codis fets a classe. Curs 2023-2024
Algunes classes
20240116 (1h)
Continuem desenvolupant la pràctica A13.00
20240115 (3h)
Mastodon
- Mastodon, una alternativa lliure a Twitter
No totes les instàncies de Mastodon faciliten la instal·lació de bots. Per a fer els primers passos us recomano aquesta instància pensada per a hostatjar bots de Mastodon (tal i com es va demanar el dia anterior, heu d'haver demanat les credencials a la instància de Mastodon botsin.space amb molta antelació. Si ho sol·liciteu avui mateix no podreu seguir la classe).
Obtenció de les credencials per a l'API de Mastodon amb Mastodon.py, pas per pas
- Feu els exercicis A10.2 i A14.4 del recull de pràctiques
20240112 (1h)
Continuem desenvolupant la pràctica A13.00 del recull de pràctiques
20240109 (1h)
Continuem desenvolupant la pràctica A13.00 del recull de pràctiques
Deures pel 15 de gener
Feu-vos membres d'aquesta instància de Mastodon: botsin.space
Feu-ho amb prou antelació, és possible que trigui més de tres hores a donar-vos accés.
20240108 (3h)
Recull de codis comentats avui
Autenticació d'accés a NodeRED
Generació de la contrasenya d'accés en mode hash des de la carpeta d'execució del NodeRED:
node node_modules/node-red/red.js admin hash-pw
En aquest exemple fem servir aquesta contrasenya en mode hash:
$2a$08$PbYFpiQSnoVaOfD1daCelU2Kvcg19KElO1DbVtE8GAJXacD6ABq
Edició de settings.js:
toni@vps-10d8edcd:~/bin/nodered$ nano ./node_modules/node-red/settings.js
// Securing Node-RED // ----------------- // To password protect the Node-RED editor and admin API, the following // property can be used. See http://nodered.org/docs/security.html for details. adminAuth: { type: "credentials", users: [{ username: "toni", password: "$2a$08$PbYFpiQSnoVaOfD1daCelU2Kvcg19KElO1DbVtE8GAJXacD6ABq", permissions: "*" }] },
Un cop fets el canvis cal reiniciar el NodeRED.
- Feu l'exercici A14.1 del recull de pràctiques
Telegram
- Creació de bots amb BotFather
- Instal·lació de nodes de Telegram a NodeRED (afegiu els nodes node-red-contrib-telegrambot)
- Interacció amb un usuari de Telegram
- Interacció amb un grup de Telegram
Material per a fer el bot i flux de prova per al bot de Telegram
- Feu els exercicis A14.2 i A14.3 del recull de pràctiques
Deures pel 15 de gener
Feu-vos membres d'aquesta instància de Mastodon: botsin.space
Feu-ho amb prou antelació, és possible que trigui més de tres hores a donar-vos accés.
20231219 (1h)
Continuem desenvolupant la pràctica A13.00
20231218 (3h)
Activitat A13.00 ginyMqtt en QML i qmake
Al recull del dia d'avui hi ha una introducció a la pràctica A13.00
20231215 (1h + 1h)
- Exemple de pàgina lliscant. Ús de SwipeView. Funciona per qmake (no per cmake)
Comunicació bidireccional del frontal en QML amb el rerefons en C++
Frontal: En anglès front-end. Rerefons: En anglès back-end
- Exemple d'un rerefons en C. Ús de SwipeView i una classe de rerefons feta en C++. Funciona per qmake (no per cmake)
Procés de creació de codi per a comunicar un frontal QML amb un rerefons C++: Vídeos QML
- Activitat A08.04 del recull de pràctiques de 2n de DAM._Curs_2023-2024
20231211 (3h)
Introducció al QML. Curs 2023-2024
Activitats A08.01, A08.02 i A08.03 del recull de pràctiques de 2n de DAM._Curs_2023-2024
PureQML
Posada en marxa del PureQML
- Instal·lació de l'eina python-future:
pip3 install future
A Windows:
pip install future
- Primera aplicació
mkdir prjFolder cd prjFolder git clone https://github.com/pureqml/qmlcore.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_2023-2024
20231205 (1h)
Introducció al QML. Curs 2023-2024
20231204 (3h)
Seguim fent les activitats pendents del recull de pràctiques de 2n de DAM._Curs_2023-2024
Comencem la pràctica A12.02
Al dia d'avui hi ha penjat:
- Exemple d'etiqueta dibuixada a partir d'un QPixMap: 00_botonsToggle05.zip
- Exemple de QTimer: 00_botonsToggle06.zip
- Exemple dels senyals pressed() i released(): 04_indicadorBotons00.zip
- Exemple d'ús de QJsonObject: 01_json_00.zip
- Biblioteca JSON per l'IDE d'Arduino: Arduino_JSON.zip (exemple d'ús: IoT-02_mqtt_10_dam.zip)
- Exemple de conversió de JSON a text i de text a JSON amb NodeRED (els temes MQTT han de ser de tipus text): json00.nodered.txt
20231201 (2h)
Seguim fent les activitats pendents del recull de pràctiques de 2n de DAM._Curs_2023-2024
20231128 (1h)
Seguim fent les activitats pendents del recull de pràctiques de 2n de DAM._Curs_2023-2024
20231127 (3h)
Seguim fent les activitats pendents del recull de pràctiques de 2n de DAM._Curs_2023-2024
20231124 (1h + 1h)
- Diferències entre el mètode setEnabled(bool) i setVisible(bool)
- Qt's keyPressEvent ( #include <QKeyEvent> )
- QDialog. Senyals accepted() i rejected(). Mètodes de resposta accept() i reject(). Respostes a dlg.exec(): QDialog::Accepted i QDialog::Rejected.
- Seguim fent l'activitat A06.04 - Interfícies gràfiques
- Seguim fent les activitats pendents del recull de pràctiques de 2n de DAM._Curs_2023-2024
- Documentació sobre Qt/C++:
20231121 (1h)
- Explicació de l'activitat A06.04 - Interfícies gràfiques
- Seguim fent les activitats pendents del recull de pràctiques de 2n de DAM._Curs_2023-2024
20231120 (3h)
Seguim fent les activitats pendents del recull de pràctiques de 2n de DAM._Curs_2023-2024
20231117 (1h + 1h)
Seguim fent les activitats pendents del recull de pràctiques de 2n de DAM._Curs_2023-2024
20231114 (1h)
Exemple d'arxiu de projecte emprant CMake
- CMake
CMake: The Standard Build System
Getting started with CMake in Qt6
Vídeo CMake and Qt (Part 1) - CMake Introduction
Qt and CMake: The Past, the Present and the Future
Vídeo Migrating from QMake to CMake | #QtWS22
- Seguim fent l'activitat A12.01.1 - ginyMqtt amb QMake
- Activitat A12.01.2 - ginyMqtt amb CMake
20231013 (3h)
- Document actualitzat de la Instal·lació de QtMQtt a les Qt
- Activitat A06.05 i A07.08 (prova de QtMQtt a la placa IoT-02) publicada a A06 - POO en C++ i Qt i A07 - Introducció a la placa IoT-02, Wokwi i protocols de comunicació. A06.05 i A07.08 són la mateixa pràctica (pengeu dos documents pdf idèntics amb els noms corresponents a les dues pràctiques a les carpetes A06 i A07 del Drive).
- A partir de simplecient amb usuari i contrasenya s'ha generat la classe mqttBasic.
- Activitat A12.01 - ginyMqtt
20231110 (1h + 1h)
Seguim fent els exercicis pendents del Recull de pràctiques de 2n de DAM._Curs_2023-2024
20231107 (1h)
Feu-li una ullada a simplecient amb usuari i contrasenya. Provem llur funcionament interactuant bidireccionalment amb la placa IoT-02
Seguim fent els exercicis pendents de l'activitat A06 - POO en C++ i Qt
20231106 (3h)
MicroWorkers Tasques en MicroPython
FreeRTOS Tasques en C a sistemes encastats. (Pàgina oficial de FreeRTOS)
Seguim fent els exercicis pendents del Recull de pràctiques de 2n de DAM._Curs_2023-2024
20231103 (1h + 1h)
Seguim fent els exercicis pendents del Recull de pràctiques de 2n de DAM._Curs_2023-2024
20231031 (1h)
Instal·lació de QtMQtt a les Qt
Seguim fent els exercicis pendents de l'activitat A06 - POO en C++ i Qt
20231030 (3h)
Seguim fent els exercicis pendents de l'activitat A07 - Introducció a la placa IoT-02, Wokwi i protocols de comunicació
MicroWorkers Tasques en MicroPython
FreeRTOS Tasques en C a sistemes encastats. (Pàgina oficial de FreeRTOS)
20231027 (1h + 1h)
1a hora: Seguim fent exercicis IoT
2a hora: Seguim fent exercicis Qt
20231024 (1h)
20231020 (2h)
Referència ràpida sobre MicroPython a l'ESP32
Pràctica A07.08 - Introducció al micropython
Exercicis de MicroPython (agafant com a referència codis en C al GitHub).
20231020 (2h)
Explicació de com encastar ginys i connectar-los mitjançant senyals (signals) i osques (slots) en C++/Qt.
Pràctica A06.01 - Ginys encastats
20231017 (1h)
Explicació de com encastar ginys i connectar-los mitjançant senyals (signals) i osques (slots) en C++/Qt.
Pràctica A06.01 - Ginys encastats
20231016 (3h)
Nodes de text, botó i variables de flux. Canvi de color d'un punt (representació d'un led)
El node botó tramet un payload personalitzat quan es prem.
En el Value format del node de text:
<font color={{msg.color}} ><i class="fa fa-circle" style="font-size:24px;"></i></font>
Funció FF3399:
msg.color = "#FF3399" return msg;
Funció {R,G,B} -> {0,0,0}:
flow.set("R","00"); flow.set("G","00"); flow.set("B","00"); flow.set("RGB","#"+flow.get("R")+flow.get("G")+flow.get("B")); msg.color = flow.get("RGB"); return msg;
Funció R -> FF:
flow.set("R","FF"); flow.set("RGB","#"+flow.get("R")+flow.get("G")+flow.get("B")); msg.color = flow.get("RGB"); return msg;
Funció R -> 00:
flow.set("R","00"); flow.set("RGB","#"+flow.get("R")+flow.get("G")+flow.get("B")); msg.color = flow.get("RGB"); return msg;
Flux ledMulticolor.nodered.json
Pràctica A07.02 - Punt multicolor al NodeRED i variables de flux
Pràctica A07.03 - Visualització amb un giny rellotge del nivell de llum
Pràctica A07.04 - Ús d'MQTT (no MQTTS) (broker: formacio.things.cat, usuari: ecat, contrasenya: clotClot) Codi per a la placa IoT-02 emprant MQTT
Pràctica A07.05 - Instal·lació del servei mosquitto
Pràctica A07.06 - Ús del servei mosquitto
20231010 (1h)
20231009 (3h)
Pràctica A07.01 - Introducció al control de la placa Iot-02 mitjançant NodeRed
Configuració de l'MQTT-Dash (mqtt-dash-iot-smart-home.apk)
20231006 (1h + 1h)
20231003 (1h)
- Giny botó --> qDebug()
- Giny lliscant + visualitzador LCD
- Cursors
- Matrioxca
- Interfície gràfica que incrementa i decrementa
20231002 (3h)
20230929 (1h + 1h)
20230926 (1h)
20230922 (1h + 1h)
20230919 (1h)
- Reviseu si teniu la vostra carpeta compartida enllaçada a: Carpetes compartides de 2n de DAM. Curs_2023-2024
- Porteu un cable o alimentador amb connector microUSB de tipus B. Haureu de dur-lo sempre que es facin pràctiques amb la placa IoT-02.
- Dubtes del dia anterior
- Repartiment de la placa IoT-02. El número de placa queda registrat a les carpetes compartides
20230918 (3h)
Recull del dia 20230918 usuari: dam | contrasenya: dam2324
Distribució de M07UF1 i M13 al curs 2023-2024
Distribució de M07UF1 i M13 al curs 2023-2024 de 2n de DAM
Qt
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).
Paquets que manquen per a fer funcionar les Qt a l'Ubuntu:
sudo apt install libx11-xcb-dev libglu1-mesa-dev libxcb-xinerama0
IoT
- NodeRED
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
Repositori de codis fet a classe durant el curs
Codis fets a les classes de 2n de DAM usuari: dam | contrasenya: dam2324
Documentació
Drive curs 2023-2024 (Alèxia, SAC). Eina d'avaluació GP1
Distribució de M07UF1 i M13 al curs 2022-2023 de 2n de DAM
Recull de pràctiques de 2n de DAM. Curs 2022-2023
Qt/QML
Paquets que manquen per a fer funcionar les Qt a l'Ubuntu:
sudo apt install libx11-xcb-dev libglu1-mesa-dev libxcb-xinerama0
Activació de l'editor QML al QtCreator 6
Qt5 de Jan Bodnar
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
Getting Started with Qt for Android
Getting Started with Qt6.5 for Android
Qt for WebAssembly
json
How To Manipulate JSON With C++ and Qt
QProcess
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
IoT
TCP/UDP Capa de transport d'Ethernet
Afegint la targeta ESP8266 a l'IDE d'Arduino (NodeMCU1.0)
Micropython and the Internet of Things
SCADA fent servir Python QML i Arduino
Placa IoT-02
Per a la programació amb l'IDE d'Arduino: https://dl.espressif.com/dl/package_esp32_index.json
LoRaWAN
Consola de The Things Stack (Community Edition) de The Things Network
Presentació LoRaWAN (esborrany v0.4)
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