Diferència entre revisions de la pàgina «DAM 2023-2024»

De binefa.com
Salta a la navegació Salta a la cerca
 
(Hi ha 245 revisions intermèdies del mateix usuari que no es mostren)
Línia 7: Línia 7:
  
 
[[Recull de pràctiques de 2n de DAM. Curs 2023-2024]]
 
[[Recull de pràctiques de 2n de DAM. Curs 2023-2024]]
 +
 +
[https://recull.binefa.cat/ Recull de codis fets a classe. Curs 2023-2024]
  
 
[https://docs.google.com/spreadsheets/d/1m7RJ7jsQvkfQROlvj_rruT2C51vtx2RCUnBqNkDumXE/ Llista de 2n de DAM]
 
[https://docs.google.com/spreadsheets/d/1m7RJ7jsQvkfQROlvj_rruT2C51vtx2RCUnBqNkDumXE/ Llista de 2n de DAM]
Línia 13: Línia 15:
  
 
= Algunes classes =
 
= Algunes classes =
 +
'''Examen del M07UF1: 13 de maig de 2024'''. El 21 de maig a les dues darreres hores també és reservat.
 +
== 20240513 (1h + 2h) Examen M07UF1 ==
 +
[https://recull.binefa.cat/files/20240513ex/ Recull del dia d'avui]
 +
 +
* 1a hora: GP3
 +
 +
* 2a i 3a hora: '''Examen final de 2/3 parts''' del M07UF1
 +
 +
== 20240510 (2h) ==
 +
Seguim amb el GP3.
 +
== 20240506 (1h + 2h) ==
 +
[https://recull.binefa.cat/files/20240506/ Recull del dia d'avui] <-- '''Conversió de 2 bytes (''unsigned char'') a ''short int'''''
 +
 +
* 1a hora: GP3
 +
 +
* 2a i 3a hora: M07UF1 (Heu d'acabar les pràctiques pendents)
 +
== 20240503 (2h) ==
 +
Seguim amb el GP3.
 +
== 20240430 (1h) ==
 +
Seguim amb el GP3.
 +
 +
== 20240429 (1h + 2h) ==
 +
[https://recull.binefa.cat/files/20240415/ Recull del dia d'avui]
 +
 +
* 1a hora: GP3
 +
 +
* 2a i 3a hora: M07UF1
 +
 +
S'ha afegit '''M05'''. Seguim resolent els exercicis del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]. ('''Fins ara s'ha demanat fer M00, M01, M02, M03, M04 i M05''').
 +
== 20240426 (2h) ==
 +
Seguim amb el GP3.
 +
== 20240423 (1h) ==
 +
Seguim amb el GP3.
 +
 +
== 20240422 (1h + 2h) ==
 +
[https://recull.binefa.cat/files/20240415/ Recull del dia d'avui]
 +
 +
* 1a hora: GP3
 +
 +
* 2a i 3a hora: M07UF1
 +
 +
S'ha afegit '''M03'''. Seguim resolent l'exercici de l'enunciat M04 del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]. ('''Fins ara s'ha demanat fer M00, M01, M02, M03 i M04'''. No s'ha demanat fer M05).
 +
 +
== 20240419 (2h) ==
 +
Seguim amb el GP3.
 +
== 20240416 (1h) ==
 +
Seguim amb el GP3.
 +
== 20240415 (1h + 2h) ==
 +
[https://recull.binefa.cat/files/20240415/ Recull del dia d'avui]
 +
 +
* 1a hora: GP3
 +
 +
* 2a i 3a hora: M07UF1
 +
 +
Seguim resolent l'exercici de l'enunciat M04 del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]. ('''Fins ara s'ha demanat fer M00, M01, M02 i M04'''. No s'ha demanat fer ni M03 ni M05).
 +
 +
== 20240412 (2h) ==
 +
Seguim amb el GP3.
 +
 +
== 20240409 (1h) ==
 +
Seguim amb el GP3.
 +
 +
== 20240408 (1h + 2h) ==
 +
[https://recull.binefa.cat/files/20240408/ Recull del dia d'avui]
 +
 +
Pujats els enunciats M04 i M05 al [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]. '''Fins ara s'ha demanat fer M00, M01, M02 i M04'''. No s'ha demanat fer ni M03 ni M05.
 +
 +
== 20240405 (2h) ==
 +
[https://recull.binefa.cat/files/20240405/ Recull del dia d'avui] <-- Proposta de '''m01_3_00'''
 +
 +
Seguim amb el M07UF1 tot fent els exercicis pendents del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
== 20240402 (1h) ==
 +
Seguim amb el GP3.
 +
 +
== 20240318 (1h + 2h) ==
 +
1h de GP3 i 2h de M07UF1
 +
 +
Acabem les pràctiques M00 al [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
 +
 +
== 20240315 (2h) ==
 +
GP3
 +
== 20240311 (1h + 2h) ==
 +
1h de GP3 i 2h de M07UF1
 +
 +
Acabem les pràctiques M00 al [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
[https://ca.wikipedia.org/wiki/SCADA Sistemes SCADA]
 +
 +
[[Modbus RTU]]
 +
 +
== 20240308 (1h) ==
 +
Fem les pràctiques M00 al [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
== 20240304 (1h + 2h) '''GP3''' ==
 +
'''Comença GP3'''
 +
 +
'''Comença el tercer trimestre del M07UF1'''
 +
 +
Afegides les pràctiques M00 al [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
<!-- '''Prova de la part IoT: 20240219'''
 +
 +
'''Prova de la part Qt i QML (amb IoT): 20240226''' -->
 +
 +
== 20240301 (2h) ==
 +
Seguim fent les pràctiques del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
== 20240226 (3h) '''A11''' i prova trimestral '''M07UF1''' ==
 +
[https://recull.binefa.cat/files/20240226_QtQml_ex/ Enunciat de la metacognició de síntesi del M07UF1 i part puntuable del projecte global]
 +
 +
== 20240223 (2h) ==
 +
Seguim fent les pràctiques del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
== 20240220 (1h) ==
 +
Seguim fent les pràctiques del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
== 20240219 (3h) '''A11''' (Prova final part IoT -'''GP1'''-)==
 +
[https://recull.binefa.cat/files/20240219_IoT_ex/20240219_A11.pdf Enunciat de la metacognició de síntesi en pdf]
 +
 +
[https://recull.binefa.cat/files/20240219_IoT_ex/20240219_A11.pdf Enunciat de la metacognició de síntesi en format editable]
 +
 +
== 20240216 (2h) ==
 +
Seguim fent les pràctiques del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
== 20240213 (1h) ==
 +
Afegits '''A13.01''' (''QML a Android'') i '''A13.02''' (''QML a WebAssembly'') al [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
Seguim fent les pràctiques del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
== 20240209 (2h) ==
 +
* HTTP assíncron esperant resposta MQTT:
 +
 +
[[Image:HttpMqttAssincron.png|center|HTTP a MQTT assíncron]]
 +
 +
Funció '''tramet = OFF''':
 +
flow.set("tramet","OFF");
 +
return msg;
 +
Funció '''tramet = ON , missatge''':
 +
flow.set("missatge",msg.payload);
 +
flow.set("tramet","ON");
 +
return msg;
 +
Funció '''LDR req''':
 +
if(msg.req.query['topic'] == "LDR"){
 +
    msg.payload = "El valor de 0 a 4095 de l'LDR demanada";
 +
}else{
 +
    msg.payload = "No entenc el tema";
 +
}
 +
return msg;
 +
Funció '''wait MQTT message with timeout''':
 +
var timeoutWait = 2; // 2 second timeout wait
 +
var now = new Date();
 +
var timeoutTime = new Date().setSeconds(now.getSeconds() + timeoutWait);
 +
var timeOuted = true;
 +
var tramet;
 +
 +
while (now < timeoutTime) {
 +
    now = new Date(); // update the current time
 +
    tramet = flow.get("tramet");
 +
    if(tramet == "ON"){
 +
        flow.set("tramet","OFF");
 +
        timeOuted = false;
 +
        msg.payload = flow.get("missatge");
 +
        break;
 +
    }
 +
}
 +
if(timeOuted){
 +
    msg.payload = "MQTT answer has been timed out!"
 +
}
 +
return msg;
 +
* Seguim fent les pràctiques del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
== 20240206 (1h) ==
 +
Seguim fent les pràctiques del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
== 20240205 (3h) ==
 +
Afegits '''A10.3''', '''A17.07''' i '''A17.08''' al [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
=== Desenvolupament d'una API en NodeRed. Pasarel·la '''HTTP a MQTT''' ===
 +
[[Image:Nodered20220402e00.png|center|Flux HTTP a MQTT]]
 +
 +
[https://www.binefa.cat/training/upcSchool/2022/20220402/httpMqtt.nodered.json Flux httpMqtt.nodered.json]
 +
 +
[http://vps656540.ovh.net:2222/mqtt?topic=/7C9EBDEA5BA0/ledW&&payload=0 Apagant] led blanc:
 +
[[Image:Nodered20220402e01.png|center|Apagant led blancto. HTTP a MQTT]]
 +
 +
[http://vps656540.ovh.net:2222/mqtt?topic=/7C9EBDEA5BA0/ledW&&payload=1 Encenent] led blanc:
 +
[[Image:Nodered20220402e02.png|center|Encenent led blanc. HTTP a MQTT]]
 +
 +
* Funció '''bridge''':
 +
msg.topic = msg.req.query['topic'];
 +
msg.payload = msg.req.query['payload'];
 +
return msg;
 +
 +
* Funció '''response''':
 +
msg.payload = "Tema: "+msg.req.query['topic']+", missatge: "+msg.req.query['payload'];
 +
return msg;
 +
=== Captura de la resposta web ===
 +
'''curl "http://iot.electronics.cat:2222/mqtt2?topic=/7C9EBDEA5BA0/ledW&&payload=0"'''
 +
Tema: /7C9EBDEA5BA0/ledW, missatge: 0
 +
Es pot redireccionar la resposta a un arxiu:
 +
'''curl "http://iot.electronics.cat:2222/mqtt2?topic=/7C9EBDEA5BA0/ledW&&payload=0" > resposta.txt'''
 +
[https://curl.se/windows/ '''curl''' per Windows]
 +
=== '''paho-mqtt''' i Python ===
 +
# pip install paho-mqtt
 +
 +
A una cel·la del jupyter-lab (si no el teniu, el podeu instal·lar seguint [https://jupyter.org/install aquestes instruccions]):
 +
 +
import random
 +
 +
import paho.mqtt.subscribe as subscribe
 +
import paho.mqtt.client as mqtt
 +
import paho.mqtt.properties as properties
 +
 +
mqttc = mqtt.Client('idClient-'+str(random.randrange(100000,999999)))
 +
# mqttc.username_pw_set("usuari","contrasenya");
 +
mqttc.connect("broker.emqx.io", 1883)
 +
 +
def on_message(clientId, userdata, message):
 +
    msg = str(message.payload.decode("utf-8"))
 +
    print('topic = ', message.topic)
 +
    print('payload = ', msg)
 +
 +
mqttc.on_message = on_message
 +
mqttc.subscribe('topicName')
 +
 +
A una altra cel·la del jupyter-lab:
 +
mqttc.loop_start()
 +
 +
[https://techoverflow.net/2021/12/27/how-to-set-username-password-in-paho-mqtt/ Usuari i contrasenya a MQTT emprant Paho]
 +
 +
* Publicació MQTT des de Paho:
 +
mqttc.publish('topicName','Escola del clot')
 +
 +
== 20240202 (2h) ==
 +
[https://recull.binefa.cat/files/20240202/union02.c union02.c] al recull de codis.
 +
 +
Seguim fent les pràctiques pendents al [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
== 20240130 (1h) ==
 +
Seguim fent les pràctiques pendents al [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
* Per a qui us faci falta un emulador d'Android:
 +
 +
[[Màquina virtual Android per a fer-la servir per a executar codis QML des de QtCreator]]
 +
 +
== 20240129 (3h) ==
 +
[http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m7/d97m7te.htm  Repàs de les unions] i comparació amb les estructures. [https://recull.binefa.cat/files/doc/iot02/loraWan/lora/codis/unions_01.c Exemple de codi emprant unions]
 +
 +
[https://eu1.cloud.thethings.network/ TTN] (The Things Network, Community Edition)
 +
 +
Baixeu-vos els dos pdf del [https://recull.binefa.cat/files/doc/iot02/loraWan/ recull introductori per a treballar amb LoRa] ( usuari: ''dam'' / contrasenya: ''dam2324'')
 +
 +
[[LoRa 2023-2024]]
 +
 +
Exemple de tramesa de variables de tipus ''float'' mitjançant TTN (The Things Network)
 +
 +
* '''A17.01 - Presa de contacte amb LoRa mitjançant The Things Network''' del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
* '''A17.02 - Tramesa de dades emprant LoRa, The Things Network i NodeRed''' del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
== 20240126 (2h) ==
 +
Seguim desenvolupant les pràctiques pendents.
 +
 +
* Exercici'''A14.7 - UserLand''' del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
== 20240123 (1h) ==
 +
L'exercici '''A14.4''' deixa d'estar en suspens i torna a estar en actiu. Tots els alumnes que venen a classe han rebut un correu amb les credencials d'accés a [https://mastodon.binefa.cat/ la instància provisional de Mastodon creada expressament] per a poder desenvolupar la pràctica.
 +
 +
Seguim desenvolupant les pràctiques pendents.
 +
 +
== 20240122 (3h) ==
 +
* L'exercici '''A14.5''' del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]] és la documentació de la instal·lació del Grafana al vostre sistema operatiu.
 +
 +
[https://grafana.com/docs/grafana/latest/setup-grafana/installation/debian/ Instal·lació de Grafana a Debian o Ubuntu]
 +
 +
[https://grafana.com/docs/grafana/latest/setup-grafana/installation/windows/ Instal·lació de Grafana a Windows]
 +
 +
* [[Ús de Grafana llegint dades de MariaDB]]
 +
 +
* Si no l'heu finalitzat, acabeu l'exercici '''A14.8''' del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
* Feu els exercicis '''A17.05''' i '''A17.06''' del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]] que us fan visualitzar a Grafana les dades emmagatzemades a MariaDB.
 +
 +
== 20240119 (2h) ==
 +
[[Ús de MariaDB per emmagatzemar dades de la Internet de les Coses]]
 +
 +
[[Ús de la base de dades MariaDB des de NodeRED]]
 +
 +
* Feu l'exercici '''A14.8''' del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
* Una altra [https://mastodon.bot/ instància de Mastodon per a fer bots]. L'exercici '''A14.4''' queda en suspens fins a que no es rebin les credencials de Mastodon (de qualsevol de les dues instàncies de Mastodon que s'han proposat per a fer bots).
 +
 +
== 20240116 (1h) ==
 +
Continuem desenvolupant la pràctica A13.00
 +
== 20240115 (3h) ==
 +
=== '''Mastodon''' ===
 +
* Mastodon, una alternativa lliure a Twitter
 +
 +
No totes les instàncies de [https://ca.wikipedia.org/wiki/Mastodon_(xarxa_social) Mastodon] faciliten la instal·lació de ''bots''. Per a fer els primers passos us recomano aquesta [https://botsin.space/ 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 [https://botsin.space/ botsin.space] amb molta antelació. Si ho sol·liciteu avui mateix no podreu seguir la classe''').
 +
 +
 +
<!-- [https://botsin.space/@siarq_sensors Exemple de bot de Mastodon] per a fer lectures de sensors cada hora.
 +
 +
[https://gist.github.com/aparrish/661fca5ce7b4882a8c6823db12d42d26 Getting credentials for the Mastodon API with Mastodon.py, step by step]
 +
 +
[[Getting credentials for the Mastodon API with Mastodon.py, step by step]] -->
 +
[[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 de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
== 20240112 (1h) ==
 +
Continuem desenvolupant la pràctica A13.00 del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
== 20240109 (1h) ==
 +
Continuem desenvolupant la pràctica '''A13.00''' del [[Recull de pràctiques de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
=== '''Deures pel 15 de gener''' ===
 +
 +
Feu-vos membres d'aquesta instància de Mastodon: [https://botsin.space/ botsin.space]
 +
 +
'''Feu-ho amb prou antelació''', és possible que trigui més de tres hores a donar-vos accés.
 +
 +
== 20240108 (3h) ==
 +
[https://recull.binefa.cat/files/20240108/ Recull de codis comentats avui]
 +
 +
=== Autenticació d'accés a NodeRED ===
 +
[https://nodered.org/docs/getting-started/local Darrera versió de NodeRed]
 +
 +
[https://nodered.org/docs/user-guide/runtime/securing-node-red Securing 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 de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
=== '''Telegram''' ===
 +
[https://wiki.binefa.cat/index.php?title=Bot_de_Telegram Bot de 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
 +
 +
[https://recull.binefa.cat/files/doc/bots 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 de 2n de DAM. Curs 2023-2024 | recull de pràctiques]]
 +
 +
=== '''Deures pel 15 de gener''' ===
 +
 +
Feu-vos membres d'aquesta instància de Mastodon: [https://botsin.space/ 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) ==
 +
[https://recull.binefa.cat/files/20231211/ Recull del dia d'avui]
 +
 +
Activitat '''A13.00''' [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A13.00 ginyMqtt en QML i qmake | ginyMqtt en QML i qmake]]
 +
 +
Al recull del dia d'avui hi ha una introducció a la pràctica A13.00
 +
 +
== 20231215 (1h + 1h) ==
 +
[https://recull.binefa.cat/files/20231215/ Recull del dia d'avui]
 +
 +
* [https://www.binefa.cat/training/qml/clot/pl01.zip 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''
 +
 +
* [https://www.binefa.cat/training/qml/clot/pl02.zip 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 | recull de pràctiques de 2n de DAM._Curs_2023-2024]]
 +
 +
== 20231211 (3h) ==
 +
[https://recull.binefa.cat/files/20231211/ Recull del dia d'avui]
 +
 +
[[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 | recull de pràctiques de 2n de DAM._Curs_2023-2024]]
 +
 +
=== PureQML ===
 +
[https://pureqml.com/ Pàgina oficial de 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 | recull de pràctiques de 2n de DAM._Curs_2023-2024]]
 +
 +
== 20231205 (1h) ==
 +
[https://recull.binefa.cat/files/20231205/ Recull del dia d'avui]
 +
 +
[[Introducció al QML. Curs 2023-2024]]
 +
 +
== 20231204 (3h) ==
 +
[https://recull.binefa.cat/files/20231204/ Recull del dia d'avui]
 +
 +
Seguim fent les activitats pendents del [[Recull de pràctiques de 2n de DAM._Curs_2023-2024 | 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 | recull de pràctiques de 2n de DAM._Curs_2023-2024]]
 +
 +
[[Instal·lació de les eines mínimes (SDK, NDK i eines de terminal) per a fer aplicacions en Qt per a Android]]
 +
 +
== 20231128 (1h) ==
 +
Seguim fent les activitats pendents del [[Recull de pràctiques de 2n de DAM._Curs_2023-2024 | 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 | recull de pràctiques de 2n de DAM._Curs_2023-2024]]
 +
 +
== 20231124 (1h + 1h) ==
 +
* [https://zetcode.com/gui/qt5/strings/ Exemples emprant QString]
 +
 +
* [https://zetcode.com/gui/qt5/containers/ Exemples emprant QStringList]
 +
 +
* Diferències entre el mètode ''setEnabled(bool)'' i ''setVisible(bool)''
 +
 +
* [https://zetcode.com/gui/qt5/eventsandsignals/ Qt's keyPressEvent] ( ''#include <QKeyEvent>'' )
 +
 +
* [https://doc.qt.io/qt-6/resources.html The Qt Resource System (.qrc)]
 +
 +
* [https://doc.qt.io/qt-6/qdialog.html QDialog]. Senyals ''accepted()'' i ''rejected()''. Mètodes de resposta ''accept()'' i ''reject()''. Respostes a ''dlg.exec()'': ''QDialog::Accepted'' i ''QDialog::Rejected''.
 +
 +
* [https://doc.qt.io/qt-6/qmainwindow.html QMainWindow]. [https://zetcode.com/gui/qt5/menusandtoolbars/ Menús i barres d'eines]. [https://doc.qt.io/qt-6/qaction.html QAction]
 +
 +
* Seguim fent l'activitat [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A06.04 - Interfícies gràfiques | A06.04 - Interfícies gràfiques]]
 +
 +
* Seguim fent les activitats pendents del [[Recull de pràctiques de 2n de DAM._Curs_2023-2024 | recull de pràctiques de 2n de DAM._Curs_2023-2024]]
 +
 +
* Documentació sobre Qt/C++:
 +
- [https://recull.binefa.cat/files/doc/Foundations%20of%20Qt%20Development.pdf Llibre de Qt]
 +
 +
- [https://zetcode.com/gui/qt5/ Tutorial breu sobre Qt]
 +
 +
== 20231121 (1h) ==
 +
* Explicació de l'activitat [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A06.04 - Interfícies gràfiques | A06.04 - Interfícies gràfiques]]
 +
 +
* Seguim fent les activitats pendents del [[Recull de pràctiques de 2n de DAM._Curs_2023-2024 | 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 | 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 | recull de pràctiques de 2n de DAM._Curs_2023-2024]]
 +
 +
== 20231114 (1h) ==
 +
[https://recull.binefa.cat/files/programes_i_apps/qt/CMakeLists.txt Exemple d'arxiu de projecte emprant CMake]
 +
 +
* CMake
 +
[https://cmake.org/features/ CMake: The Standard Build System]
 +
 +
[https://doc.qt.io/qt-6/cmake-get-started.html Getting started with CMake in Qt6]
 +
 +
Vídeo [https://www.youtube.com/watch?v=952DsSbAHHg CMake and Qt (Part 1) - CMake Introduction]
 +
 +
[https://www.qt.io/blog/qt-and-cmake-the-past-the-present-and-the-future Qt and CMake: The Past, the Present and the Future]
 +
 +
Vídeo [https://www.youtube.com/watch?v=RVfRnuP2MME Migrating from QMake to CMake | #QtWS22]
 +
 +
* Seguim fent l'activitat [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A12.01.1 - ginyMqtt amb QMake | A12.01.1 - ginyMqtt amb QMake]]
 +
 +
* Activitat [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A12.01.2 - ginyMqtt amb CMake | 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 [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A06 - POO en C++ i Qt | A06 - POO en C++ i Qt]] i [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A07 - Introducció a la placa IoT-02, Wokwi i protocols de comunicació | 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 [[Carpetes compartides de 2n de DAM. Curs 2023-2024 | Drive]]).
 +
 +
* A partir de [https://recull.binefa.cat/files/20231107/ ''simplecient'' amb usuari i contrasenya] s'ha generat la classe [https://recull.binefa.cat/files/programes_i_apps/qt/mqttBasic.zip mqttBasic].
 +
 +
* Activitat [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A12.01.1 - ginyMqtt amb QMake | 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 [https://recull.binefa.cat/files/20231107/ ''simplecient'' amb usuari i contrasenya]. Provem llur funcionament interactuant bidireccionalment amb la [[Placa IoT-02 | placa IoT-02]]
 +
 +
Seguim fent els exercicis pendents de l'activitat [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A06 - POO en C++ i Qt | A06 - POO en C++ i Qt]]
 +
 +
== 20231106 (3h) ==
 +
[https://github.com/jczic/MicroWorkers MicroWorkers] Tasques en MicroPython
 +
 +
[https://github.com/jordibinefa/IoT-02/tree/master/codes/freeRTOS FreeRTOS] Tasques en C a sistemes encastats. ([https://freertos.org/ Pàgina oficial de FreeRTOS])
 +
 +
[[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A09 - FreeRTOS i MicroWorkers | A09 - FreeRTOS i MicroWorkers]]
 +
 +
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 [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A06 - POO en C++ i Qt | A06 - POO en C++ i Qt]]
 +
 +
== 20231030 (3h) ==
 +
Seguim fent els exercicis pendents de l'activitat [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A07 - Introducció a la placa IoT-02, Wokwi i protocols de comunicació | A07 - Introducció a la placa IoT-02, Wokwi i protocols de comunicació]]
 +
 +
[https://github.com/jczic/MicroWorkers MicroWorkers] Tasques en MicroPython
 +
 +
[https://github.com/jordibinefa/IoT-02/tree/master/codes/freeRTOS FreeRTOS] Tasques en C a sistemes encastats. ([https://freertos.org/ Pàgina oficial de FreeRTOS])
 +
 +
[[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A09 - FreeRTOS i MicroWorkers | A09 - FreeRTOS i MicroWorkers]]
 +
 +
== 20231027 (1h + 1h) ==
 +
1a hora: Seguim fent exercicis IoT
 +
 +
2a hora: Seguim fent exercicis Qt
 +
 +
== 20231024 (1h) ==
 +
[https://provisional.binefa.com/index.php/Recull_de_pr%C3%A0ctiques_de_2n_de_DAM._Curs_2023-2024#A06.02_-_Interf.C3.ADcies_gr.C3.A0fiques '''A06.02''']
 +
 +
== 20231020 (2h) ==
 +
[https://provisional.binefa.com/index.php/Placa_IoT-02#Instal.C2.B7laci.C3.B3_de_MicroPython Micropython a la placa IoT-02]
 +
 +
[https://docs.micropython.org/en/latest/esp32/quickref.html#pins-and-gpio Referència ràpida sobre MicroPython a l'ESP32]
 +
 +
'''Pràctica A07.08''' - [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A07.08 - Introducció al micropython | 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''' - [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A06.01 - Ginys encastats | Ginys encastats]]
 +
== 20231017 (1h) ==
 +
[https://recull.binefa.cat/files/20231017/ Recull del dia d'avui]
 +
 +
Explicació de com encastar ginys i connectar-los mitjançant senyals (''signals'') i osques (''slots'') en C++/Qt.
 +
 +
'''Pràctica A06.01''' - [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A06.01 - Ginys encastats | Ginys encastats]]
 +
 
== 20231016 (3h) ==
 
== 20231016 (3h) ==
 
=== Nodes de '''text''', '''botó''' i '''variables de flux'''. Canvi de color d'un punt (representació d'un led) ===
 
=== Nodes de '''text''', '''botó''' i '''variables de flux'''. Canvi de color d'un punt (representació d'un led) ===
Línia 51: Línia 664:
 
[https://www.binefa.cat/training/upcSchool/2022/20220402/ledMulticolor.nodered.json Flux ledMulticolor.nodered.json]
 
[https://www.binefa.cat/training/upcSchool/2022/20220402/ledMulticolor.nodered.json Flux ledMulticolor.nodered.json]
  
Pràctica - [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A07.02 - Punt multicolor al NodeRED i variables de flux | Punt multicolor al NodeRED i variables de flux]]
+
'''Pràctica A07.02''' - [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A07.02 - Punt multicolor al NodeRED i variables de flux | Punt multicolor al NodeRED i variables de flux]]
 +
 
 +
'''Pràctica A07.03''' - [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A07.03 - Visualització amb un giny rellotge del nivell de llum | Visualització amb un giny rellotge del nivell de llum]]
 +
 
 +
'''Pràctica A07.04''' - [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A07.04 - Ús d'MQTT (no MQTTS) | Ús d'MQTT (no MQTTS)]] (''broker'': formacio.things.cat, ''usuari'': ecat, ''contrasenya'': clotClot) [https://recull.binefa.cat/files/programes_i_apps/codisArduinoIDE/IoT-02_mqtt_freeRTOS_json_12_escolaDelClot_broker2.zip Codi per a la placa IoT-02 emprant MQTT]
 +
 
 +
'''Pràctica A07.05''' - [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A07.05 - Instal·lació del servei mosquitto | Instal·lació del servei mosquitto]]
 +
 
 +
'''Pràctica A07.06''' - [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A07.06 - Ús del servei mosquitto | Ús del servei mosquitto]]
  
 
== 20231010 (1h) ==
 
== 20231010 (1h) ==
Línia 59: Línia 680:
  
 
== 20231009 (3h) ==
 
== 20231009 (3h) ==
Pràctica - [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A07.01 - Introducció al control de la placa Iot-02 mitjançant NodeRed | Introducció al control de la placa Iot-02 mitjançant NodeRed]]
+
'''Pràctica A07.01''' - [[Recull de pràctiques de 2n de DAM._Curs_2023-2024#A07.01 - Introducció al control de la placa Iot-02 mitjançant NodeRed | Introducció al control de la placa Iot-02 mitjançant NodeRed]]
  
 
[https://www.binefa.cat/IoT/teoria/mqtt_00.pdf Introducció a l'MQTT]
 
[https://www.binefa.cat/IoT/teoria/mqtt_00.pdf Introducció a l'MQTT]
Línia 122: Línia 743:
  
 
Paquets que manquen per a fer funcionar les Qt a l'Ubuntu:  
 
Paquets que manquen per a fer funcionar les Qt a l'Ubuntu:  
  sudo apt install libx11-xcb-dev libglu1-mesa-dev
+
  sudo apt install libx11-xcb-dev libglu1-mesa-dev libxcb-xinerama0
  
 
=== IoT ===
 
=== IoT ===
Línia 157: Línia 778:
  
 
= Documentació =
 
= Documentació =
 +
[https://drive.google.com/drive/folders/1P4FlwnGsX4qXIXBJJL9vS8KK1R-OUeZM Drive curs 2023-2024] ([https://web2.alexiaedu.com/ACWeb/paginas/Home/HomeMetro.aspx Alèxia], [https://sac.net.fje.edu/v1.0/#/home/ SAC]). [https://drive.google.com/drive/folders/1dcGDwZBWcG3utW6OxXBkQey7oHa_3ZNx Eina d'avaluació GP1]
 +
 +
[https://drive.google.com/drive/folders/0AG8LE_yosU7JUk9PVA novaFP ASIX/DAW/DAM]
 +
 +
[https://drive.google.com/drive/folders/1plnk2yt-SlPEwJDE7ILUkrGRsm2hf1fw Totes les llistes]
 +
 
[[Distribució de M07UF1 i M13 al curs 2022-2023 de 2n de DAM]]
 
[[Distribució de M07UF1 i M13 al curs 2022-2023 de 2n de DAM]]
  
Línia 163: Línia 790:
 
[https://drive.google.com/drive/folders/1vorYyIsiOUU6Ia3ViqDCpfG-gFUqnroc Projecte global GP1. IoT]
 
[https://drive.google.com/drive/folders/1vorYyIsiOUU6Ia3ViqDCpfG-gFUqnroc Projecte global GP1. IoT]
  
[https://docs.google.com/spreadsheets/d/1jxpQM8EaMrWeWnBrbSBBbYi8lwblSla3/edit#gid=1066652034 Seguiment de tutories]
+
[http://192.168.10.17:9191/app?service=page/UserWebPrint Impressió]
  
[https://docs.google.com/forms/d/1VwVSCWRftkxRUdqQKi_Uqi8LboIrHDh53ZFdei303gA/edit Enquesta del 17 de novembre de 2022]
+
<!-- [https://docs.google.com/spreadsheets/d/1jxpQM8EaMrWeWnBrbSBBbYi8lwblSla3/edit#gid=1066652034 Seguiment de tutories]
  
 +
[https://docs.google.com/forms/d/1VwVSCWRftkxRUdqQKi_Uqi8LboIrHDh53ZFdei303gA/edit Enquesta del 17 de novembre de 2022] -->
 
== Qt/QML ==
 
== Qt/QML ==
 
Paquets que manquen per a fer funcionar les Qt a l'Ubuntu:  
 
Paquets que manquen per a fer funcionar les Qt a l'Ubuntu:  
  sudo apt install libx11-xcb-dev libglu1-mesa-dev
+
  sudo apt install libx11-xcb-dev libglu1-mesa-dev libxcb-xinerama0
 
[https://youtu.be/b936UY3YZe4 Activació de l'editor QML al QtCreator 6]
 
[https://youtu.be/b936UY3YZe4 Activació de l'editor QML al QtCreator 6]
  
Línia 181: Línia 809:
  
 
[http://zetcode.com/gui/pyqt5/ PyQt5] de [https://twitter.com/janbodnar Jan Bodnar]
 
[http://zetcode.com/gui/pyqt5/ PyQt5] de [https://twitter.com/janbodnar Jan Bodnar]
 +
 +
[[Instal·lació de QtMQtt a les Qt]]
  
 
=== Qt for Android ===
 
=== Qt for Android ===
 
[https://doc.qt.io/qt-6/android-getting-started.html Getting Started with Qt for Android]
 
[https://doc.qt.io/qt-6/android-getting-started.html Getting Started with Qt for Android]
 +
 +
[https://doc.qt.io/qt-6.5/android-getting-started.html 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 ===

Revisió de 15:09, 20 juny 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

Enllaços ràpids[modifica]

Compartició de pantalla

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

Recull de codis fets a classe. Curs 2023-2024

Llista de 2n de DAM

Totes les llistes

Algunes classes[modifica]

Examen del M07UF1: 13 de maig de 2024. El 21 de maig a les dues darreres hores també és reservat.

20240513 (1h + 2h) Examen M07UF1[modifica]

Recull del dia d'avui

  • 1a hora: GP3
  • 2a i 3a hora: Examen final de 2/3 parts del M07UF1

20240510 (2h)[modifica]

Seguim amb el GP3.

20240506 (1h + 2h)[modifica]

Recull del dia d'avui <-- Conversió de 2 bytes (unsigned char) a short int

  • 1a hora: GP3
  • 2a i 3a hora: M07UF1 (Heu d'acabar les pràctiques pendents)

20240503 (2h)[modifica]

Seguim amb el GP3.

20240430 (1h)[modifica]

Seguim amb el GP3.

20240429 (1h + 2h)[modifica]

Recull del dia d'avui

  • 1a hora: GP3
  • 2a i 3a hora: M07UF1

S'ha afegit M05. Seguim resolent els exercicis del recull de pràctiques. (Fins ara s'ha demanat fer M00, M01, M02, M03, M04 i M05).

20240426 (2h)[modifica]

Seguim amb el GP3.

20240423 (1h)[modifica]

Seguim amb el GP3.

20240422 (1h + 2h)[modifica]

Recull del dia d'avui

  • 1a hora: GP3
  • 2a i 3a hora: M07UF1

S'ha afegit M03. Seguim resolent l'exercici de l'enunciat M04 del recull de pràctiques. (Fins ara s'ha demanat fer M00, M01, M02, M03 i M04. No s'ha demanat fer M05).

20240419 (2h)[modifica]

Seguim amb el GP3.

20240416 (1h)[modifica]

Seguim amb el GP3.

20240415 (1h + 2h)[modifica]

Recull del dia d'avui

  • 1a hora: GP3
  • 2a i 3a hora: M07UF1

Seguim resolent l'exercici de l'enunciat M04 del recull de pràctiques. (Fins ara s'ha demanat fer M00, M01, M02 i M04. No s'ha demanat fer ni M03 ni M05).

20240412 (2h)[modifica]

Seguim amb el GP3.

20240409 (1h)[modifica]

Seguim amb el GP3.

20240408 (1h + 2h)[modifica]

Recull del dia d'avui

Pujats els enunciats M04 i M05 al recull de pràctiques. Fins ara s'ha demanat fer M00, M01, M02 i M04. No s'ha demanat fer ni M03 ni M05.

20240405 (2h)[modifica]

Recull del dia d'avui <-- Proposta de m01_3_00

Seguim amb el M07UF1 tot fent els exercicis pendents del recull de pràctiques

20240402 (1h)[modifica]

Seguim amb el GP3.

20240318 (1h + 2h)[modifica]

1h de GP3 i 2h de M07UF1

Acabem les pràctiques M00 al recull de pràctiques

python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"

20240315 (2h)[modifica]

GP3

20240311 (1h + 2h)[modifica]

1h de GP3 i 2h de M07UF1

Acabem les pràctiques M00 al recull de pràctiques

Sistemes SCADA

Modbus RTU

20240308 (1h)[modifica]

Fem les pràctiques M00 al recull de pràctiques

20240304 (1h + 2h) GP3[modifica]

Comença GP3

Comença el tercer trimestre del M07UF1

Afegides les pràctiques M00 al recull de pràctiques

20240301 (2h)[modifica]

Seguim fent les pràctiques del recull de pràctiques

20240226 (3h) A11 i prova trimestral M07UF1[modifica]

Enunciat de la metacognició de síntesi del M07UF1 i part puntuable del projecte global

20240223 (2h)[modifica]

Seguim fent les pràctiques del recull de pràctiques

20240220 (1h)[modifica]

Seguim fent les pràctiques del recull de pràctiques

20240219 (3h) A11 (Prova final part IoT -GP1-)[modifica]

Enunciat de la metacognició de síntesi en pdf

Enunciat de la metacognició de síntesi en format editable

20240216 (2h)[modifica]

Seguim fent les pràctiques del recull de pràctiques

20240213 (1h)[modifica]

Afegits A13.01 (QML a Android) i A13.02 (QML a WebAssembly) al recull de pràctiques

Seguim fent les pràctiques del recull de pràctiques

20240209 (2h)[modifica]

  • HTTP assíncron esperant resposta MQTT:
HTTP a MQTT assíncron

Funció tramet = OFF:

flow.set("tramet","OFF");
return msg;

Funció tramet = ON , missatge:

flow.set("missatge",msg.payload);
flow.set("tramet","ON");
return msg;

Funció LDR req:

if(msg.req.query['topic'] == "LDR"){
   msg.payload = "El valor de 0 a 4095 de l'LDR demanada";
}else{
   msg.payload = "No entenc el tema";
}
return msg;

Funció wait MQTT message with timeout:

var timeoutWait = 2; // 2 second timeout wait
var now = new Date();
var timeoutTime = new Date().setSeconds(now.getSeconds() + timeoutWait);
var timeOuted = true;
var tramet;

while (now < timeoutTime) {
   now = new Date(); // update the current time
   tramet = flow.get("tramet");
   if(tramet == "ON"){
       flow.set("tramet","OFF");
       timeOuted = false;
       msg.payload = flow.get("missatge");
       break;
   }
}
if(timeOuted){
   msg.payload = "MQTT answer has been timed out!"
}
return msg;

20240206 (1h)[modifica]

Seguim fent les pràctiques del recull de pràctiques

20240205 (3h)[modifica]

Afegits A10.3, A17.07 i A17.08 al recull de pràctiques

Desenvolupament d'una API en NodeRed. Pasarel·la HTTP a MQTT[modifica]

Flux HTTP a MQTT

Flux httpMqtt.nodered.json

Apagant led blanc:

Apagant led blancto. HTTP a MQTT

Encenent led blanc:

Encenent led blanc. HTTP a MQTT
  • Funció bridge:
msg.topic = msg.req.query['topic'];
msg.payload = msg.req.query['payload'];
return msg;
  • Funció response:
msg.payload = "Tema: "+msg.req.query['topic']+", missatge: "+msg.req.query['payload'];
return msg;

Captura de la resposta web[modifica]

curl "http://iot.electronics.cat:2222/mqtt2?topic=/7C9EBDEA5BA0/ledW&&payload=0"
Tema: /7C9EBDEA5BA0/ledW, missatge: 0

Es pot redireccionar la resposta a un arxiu:

curl "http://iot.electronics.cat:2222/mqtt2?topic=/7C9EBDEA5BA0/ledW&&payload=0" > resposta.txt

curl per Windows

paho-mqtt i Python[modifica]

# pip install paho-mqtt

A una cel·la del jupyter-lab (si no el teniu, el podeu instal·lar seguint aquestes instruccions):

import random

import paho.mqtt.subscribe as subscribe
import paho.mqtt.client as mqtt
import paho.mqtt.properties as properties

mqttc = mqtt.Client('idClient-'+str(random.randrange(100000,999999)))
# mqttc.username_pw_set("usuari","contrasenya");
mqttc.connect("broker.emqx.io", 1883)

def on_message(clientId, userdata, message):
   msg = str(message.payload.decode("utf-8"))
   print('topic = ', message.topic)
   print('payload = ', msg)

mqttc.on_message = on_message
mqttc.subscribe('topicName')

A una altra cel·la del jupyter-lab:

mqttc.loop_start()

Usuari i contrasenya a MQTT emprant Paho

  • Publicació MQTT des de Paho:
mqttc.publish('topicName','Escola del clot')

20240202 (2h)[modifica]

union02.c al recull de codis.

Seguim fent les pràctiques pendents al recull de pràctiques

20240130 (1h)[modifica]

Seguim fent les pràctiques pendents al recull de pràctiques

  • Per a qui us faci falta un emulador d'Android:

Màquina virtual Android per a fer-la servir per a executar codis QML des de QtCreator

20240129 (3h)[modifica]

Repàs de les unions i comparació amb les estructures. Exemple de codi emprant unions

TTN (The Things Network, Community Edition)

Baixeu-vos els dos pdf del recull introductori per a treballar amb LoRa ( usuari: dam / contrasenya: dam2324)

LoRa 2023-2024

Exemple de tramesa de variables de tipus float mitjançant TTN (The Things Network)

20240126 (2h)[modifica]

Seguim desenvolupant les pràctiques pendents.

20240123 (1h)[modifica]

L'exercici A14.4 deixa d'estar en suspens i torna a estar en actiu. Tots els alumnes que venen a classe han rebut un correu amb les credencials d'accés a la instància provisional de Mastodon creada expressament per a poder desenvolupar la pràctica.

Seguim desenvolupant les pràctiques pendents.

20240122 (3h)[modifica]

  • L'exercici A14.5 del recull de pràctiques és la documentació de la instal·lació del Grafana al vostre sistema operatiu.

Instal·lació de Grafana a Debian o Ubuntu

Instal·lació de Grafana a Windows

  • Feu els exercicis A17.05 i A17.06 del recull de pràctiques que us fan visualitzar a Grafana les dades emmagatzemades a MariaDB.

20240119 (2h)[modifica]

Ús de MariaDB per emmagatzemar dades de la Internet de les Coses

Ús de la base de dades MariaDB des de NodeRED

  • Una altra instància de Mastodon per a fer bots. L'exercici A14.4 queda en suspens fins a que no es rebin les credencials de Mastodon (de qualsevol de les dues instàncies de Mastodon que s'han proposat per a fer bots).

20240116 (1h)[modifica]

Continuem desenvolupant la pràctica A13.00

20240115 (3h)[modifica]

Mastodon[modifica]

  • 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

20240112 (1h)[modifica]

Continuem desenvolupant la pràctica A13.00 del recull de pràctiques

20240109 (1h)[modifica]

Continuem desenvolupant la pràctica A13.00 del recull de pràctiques

Deures pel 15 de gener[modifica]

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)[modifica]

Recull de codis comentats avui

Autenticació d'accés a NodeRED[modifica]

Darrera versió de NodeRed

Securing 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.

Telegram[modifica]

Bot de 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

Deures pel 15 de gener[modifica]

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)[modifica]

Continuem desenvolupant la pràctica A13.00

20231218 (3h)[modifica]

Recull del dia d'avui

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)[modifica]

Recull del dia d'avui


Comunicació bidireccional del frontal en QML amb el rerefons en C++

Frontal: En anglès front-end. Rerefons: En anglès back-end


Procés de creació de codi per a comunicar un frontal QML amb un rerefons C++: Vídeos QML

20231211 (3h)[modifica]

Recull del dia d'avui

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[modifica]

Pàgina oficial de PureQML

Posada en marxa del PureQML[modifica]

  • 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)[modifica]

Recull del dia d'avui

Introducció al QML. Curs 2023-2024

20231204 (3h)[modifica]

Recull del dia d'avui

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)[modifica]

Seguim fent les activitats pendents del recull de pràctiques de 2n de DAM._Curs_2023-2024

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

20231128 (1h)[modifica]

Seguim fent les activitats pendents del recull de pràctiques de 2n de DAM._Curs_2023-2024

20231127 (3h)[modifica]

Seguim fent les activitats pendents del recull de pràctiques de 2n de DAM._Curs_2023-2024

20231124 (1h + 1h)[modifica]

  • Diferències entre el mètode setEnabled(bool) i setVisible(bool)
  • QDialog. Senyals accepted() i rejected(). Mètodes de resposta accept() i reject(). Respostes a dlg.exec(): QDialog::Accepted i QDialog::Rejected.
  • Documentació sobre Qt/C++:

- Llibre de Qt

- Tutorial breu sobre Qt

20231121 (1h)[modifica]

20231120 (3h)[modifica]

Seguim fent les activitats pendents del recull de pràctiques de 2n de DAM._Curs_2023-2024

20231117 (1h + 1h)[modifica]

Seguim fent les activitats pendents del recull de pràctiques de 2n de DAM._Curs_2023-2024

20231114 (1h)[modifica]

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

20231013 (3h)[modifica]

20231110 (1h + 1h)[modifica]

Seguim fent els exercicis pendents del Recull de pràctiques de 2n de DAM._Curs_2023-2024

20231107 (1h)[modifica]

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)[modifica]

MicroWorkers Tasques en MicroPython

FreeRTOS Tasques en C a sistemes encastats. (Pàgina oficial de FreeRTOS)

A09 - FreeRTOS i MicroWorkers

Seguim fent els exercicis pendents del Recull de pràctiques de 2n de DAM._Curs_2023-2024

20231103 (1h + 1h)[modifica]

Seguim fent els exercicis pendents del Recull de pràctiques de 2n de DAM._Curs_2023-2024

20231031 (1h)[modifica]

Instal·lació de QtMQtt a les Qt

Seguim fent els exercicis pendents de l'activitat A06 - POO en C++ i Qt

20231030 (3h)[modifica]

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)

A09 - FreeRTOS i MicroWorkers

20231027 (1h + 1h)[modifica]

1a hora: Seguim fent exercicis IoT

2a hora: Seguim fent exercicis Qt

20231024 (1h)[modifica]

A06.02

20231020 (2h)[modifica]

Micropython a la placa IoT-02

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)[modifica]

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)[modifica]

Recull del dia d'avui

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)[modifica]

Nodes de text, botó i variables de flux. Canvi de color d'un punt (representació d'un led)[modifica]

El node botó tramet un payload personalitzat quan es prem.

Flujx canvi de color d'un punt


Visualització canvi de color d'un punt

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)[modifica]

Introducció a l'MQTT

El protocol MQTT

20231009 (3h)[modifica]

Pràctica A07.01 - Introducció al control de la placa Iot-02 mitjançant NodeRed

Introducció a l'MQTT

Configuració de l'MQTT-Dash (mqtt-dash-iot-smart-home.apk)

20231006 (1h + 1h)[modifica]

Recull del dia d'avui

20231003 (1h)[modifica]

Recull del dia d'avui

  • Giny botó --> qDebug()
  • Giny lliscant + visualitzador LCD
  • Cursors
  • Matrioxca
  • Interfície gràfica que incrementa i decrementa

20231002 (3h)[modifica]

Recull del dia d'avui

Codi Snap!

20230929 (1h + 1h)[modifica]

Recull del dia d'avui

20230926 (1h)[modifica]

Recull del dia d'avui

20230922 (1h + 1h)[modifica]

Recull del dia d'avui

20230919 (1h)[modifica]

  • Dubtes del dia anterior

20230918 (3h)[modifica]

Recull del dia 20230918 usuari: dam | contrasenya: dam2324

Distribució de M07UF1 i M13 al curs 2023-2024[modifica]

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

Qt[modifica]

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[modifica]

  • 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[modifica]

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

Repositori de codis fet a classe durant el curs[modifica]

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

Documentació[modifica]

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[modifica]

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

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[modifica]

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[modifica]

Qt for WebAssembly

json[modifica]

How To Manipulate JSON With C++ and Qt

QProcess[modifica]

QProcess example

Qt5 tutorial FFmpeg converter using QProcess - 2020

CMake[modifica]

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[modifica]

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

Placa IoT-02[modifica]

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[modifica]

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