Diferència entre revisions de la pàgina «DAM 2022-2023»
(Hi ha 136 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 7: | Línia 7: | ||
[https://meet.google.com/wwr-knez-ukp Teleconferència provisional per a compartir pantalla i confinats] | [https://meet.google.com/wwr-knez-ukp Teleconferència provisional per a compartir pantalla i confinats] | ||
+ | === Accessos ràpids === | ||
+ | [[Recull de pràctiques de 2n de DAM. Curs 2022-2023]] | ||
+ | |||
+ | [[Vídeos QML]] | ||
+ | |||
+ | [[Introducció al QML. Curs 2022-2023]] | ||
+ | == 20230525 '''Lliurament de projectes''' == | ||
+ | Lliurament de projectes | ||
+ | == 20230522 '''Darrer dia de classe''' == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230518 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230515 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230512 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230511 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230508 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230505 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230504 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230427 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230424 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230420 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230417 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230414 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230413 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230331 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230330 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | == 20230327 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | * Seguim fent M07UF1 | ||
+ | |||
+ | == 20230324 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230323 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230320 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230316 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230313 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | * Seguim fent M07UF1 | ||
+ | |||
+ | == 20230310 == | ||
+ | * Seguim desenvolupant GP3 | ||
+ | |||
+ | == 20230306 (2h) '''GP3''' == | ||
+ | * Dues primeres hores: GP3 | ||
+ | |||
+ | * Tercera hora: Qt/QML | ||
+ | |||
+ | == 20230303 (2h) == | ||
+ | * Darrer dia de les pràctiques del [[Recull de pràctiques de 2n de DAM. Curs 2022-2023 | recull]] | ||
+ | |||
+ | == 20230227 (2h) '''Examen Projecte Global. Part Internet de les Coses''' == | ||
+ | [https://recull.binefa.cat/files/20230227exPrjGlobal_IoT/ Examen Projecte Global. Part Internet de les Coses] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | == 20230227 (1h) '''Examen Parcial M07UF1. Qt i QML''' == | ||
+ | [https://recull.binefa.cat/files/20230227exParcialM07UF1/ Examen Parcial M07UF1. Qt i QML] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | == 20230224 (2h) == | ||
+ | * Seguim fent les pràctiques del [[Recull de pràctiques de 2n de DAM. Curs 2022-2023 | recull]] | ||
+ | |||
+ | [https://recull.binefa.cat/files/material/mqttQml/ Material d'ajuda mqttQml] | ||
+ | |||
+ | == 20230223 (1h) == | ||
+ | * [https://recull.binefa.cat/files/material/mqttQml/ Exemples de QML amb TCP-MQTT i ws-MQTT] | ||
+ | |||
+ | == 20230217 (2h) == | ||
+ | [https://recull.binefa.cat/files/20230217/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | Seguim fent els exercicis pendents del [[Recull de pràctiques de 2n de DAM. Curs 2022-2023 | recull de pràctiques]]. | ||
+ | |||
+ | == 20230216 (1h + 1h) == | ||
+ | [https://recull.binefa.cat/files/20230216/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | * Pràctica '''A14.7''' [https://userland.tech/ UserLand] al [[Recull de pràctiques de 2n de DAM. Curs 2022-2023 | recull de pràctiques]]. Es tracta d'instal·lar com a aplicació del vostre telèfon mòbil Android (real o simulat) un sistema Debian. A aquest sistema, dins de l'aplicació UserLand, hi instal·lareu un NodeRed que serà visible des del vostre ordinador. | ||
+ | |||
+ | * Afegida la pràctica '''A17.04'''. Lectura de dades de la placa IoT-02, visualitzant-les a Grafana, emprant NodeRed, InfluxDB. | ||
+ | |||
+ | == 20230213 (3h) == | ||
+ | [https://recull.binefa.cat/files/20230213/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | * S'han afegit les pràctiques '''A14.5''', '''A14.6''' i '''A17.03''' al [[Recull de pràctiques de 2n de DAM. Curs 2022-2023 | recull de pràctiques]]. És la instal·lació de Grafana i InfluxDB al vostre sistema operatiu. | ||
+ | |||
+ | * Instal·leu [https://flows.nodered.org/node/node-red-contrib-influxdb node-red-contrib-influxdb] al vostre NodeRed. | ||
+ | |||
+ | * Seguim fent els exercicis pendents del [[Recull de pràctiques de 2n de DAM. Curs 2022-2023 | recull de pràctiques]]. | ||
+ | |||
+ | == 20230210 (2h) == | ||
+ | [https://recull.binefa.cat/files/20230202/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | * S'ha afegit la pràctica '''A10.3''' al [[Recull de pràctiques de 2n de DAM. Curs 2022-2023 | recull de pràctiques]]. És una pràctica bàsica de la biblioteca '''Paho''' emprant Python. | ||
+ | |||
+ | * Seguim fent els exercicis pendents del [[Recull de pràctiques de 2n de DAM. Curs 2022-2023 | recull de pràctiques]]. | ||
+ | |||
+ | === '''Paho''' - MQTT i Python === | ||
+ | # pip install paho-mqtt | ||
+ | |||
+ | A una cel·la del jupyter-lab: | ||
+ | |||
+ | 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') | ||
+ | |||
+ | == 20230209 (1h) == | ||
+ | [https://recull.binefa.cat/files/20230202/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | Seguim fent els exercicis pendents del [[Recull de pràctiques de 2n de DAM. Curs 2022-2023 | recull de pràctiques]]. | ||
+ | |||
+ | === Alternativa a ''sys.argv'': argparser === | ||
+ | [https://docs.python.org/3/library/argparse.html '''argparser''' - Parser for command-line options, arguments and sub-commands] | ||
+ | |||
+ | [https://docs.python.org/3/howto/argparse.html Argparse Tutorial] | ||
+ | |||
+ | == 20230206 (3h) == | ||
+ | [https://recull.binefa.cat/files/20230202/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | Seguim fent els exercicis pendents del [[Recull de pràctiques de 2n de DAM. Curs 2022-2023 | recull de pràctiques]]. | ||
+ | |||
+ | === '''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]] | ||
+ | |||
+ | == 20230203 (2h) == | ||
+ | [https://recull.binefa.cat/files/20230202/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | Seguim fent els exercicis pendents del [[Recull de pràctiques de 2n de DAM. Curs 2022-2023 | recull de pràctiques]]. | ||
+ | |||
+ | * Pujats els nous exercicis '''A10.1''', '''A10.2''', '''A14.1''', '''A14.2''', '''A14.3''' i '''A14.4''' al [[Recull de pràctiques de 2n de DAM. Curs 2022-2023 | recull de pràctiques]]. | ||
+ | |||
+ | === Autenticació d'accés a 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'''. | ||
+ | |||
+ | === '''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 [https://flows.nodered.org/node/node-red-contrib-telegrambot '''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] | ||
+ | |||
+ | == 20230202 (1h) == | ||
+ | [https://recull.binefa.cat/files/20230202/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | Seguim fent els exercicis pendents del [[Recull de pràctiques de 2n de DAM. Curs 2022-2023 | recull de pràctiques]]. | ||
+ | |||
+ | == 20230130 (3h) == | ||
+ | [https://recull.binefa.cat/files/20230127/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | '''No us oblideu de dur la placa!''' | ||
+ | |||
+ | Seguim fent els exercicis pendents del [[Recull de pràctiques de 2n de DAM. Curs 2022-2023 | recull de pràctiques]]. | ||
+ | |||
+ | * Plantejament de l'exercici '''A18.01''' (Recepció de dades LoRa, emprant el rerefons de The Things Network i un visualitzador QML) del [[Recull de pràctiques de 2n de DAM. Curs 2022-2023 | recull de pràctiques]]. | ||
+ | |||
+ | * En cas de no tenir-ne, feu-vos un compte de [https://telegram.org/ Telegram]. | ||
+ | |||
+ | * Feu-vos un compte a aquesta [https://botsin.space/ instància pensada per a hostatjar ''bots'' de Mastodon] (triga un temps en activar-se). | ||
+ | |||
+ | === '''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]] | ||
+ | |||
+ | == 20230127 (2h) == | ||
+ | [https://recull.binefa.cat/files/20230127/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | '''No us oblideu de dur la placa!''' | ||
+ | |||
+ | [[Formació d'Internet de les Coses - 2a sessió. Viladecans 20 d'octubre de 2022 | Introducció a LoRa / LoRaWAN]] | ||
+ | |||
+ | * [https://recull.binefa.cat/files/doc/iot02/loraWan/lora/codis/unions_01.c Exemple de conversió bidireccional de ''float'' a cadena ''unsigned char'' fent servir ''union'']. | ||
+ | |||
+ | * Nodes a carregar al NodeRed: | ||
+ | |||
+ | [https://flows.nodered.org/node/node-red-contrib-float node-red-contrib-float] | ||
+ | |||
+ | [https://flows.nodered.org/node/node-red-node-base64 node-red-node-base64] | ||
+ | |||
+ | * Exemple de recopilació de dades trameses per la [[Placa IoT-02 | placa IoT-02]] mitjançant LoRa des de NodeRed (arxius al [https://recull.binefa.cat/files/20230127/ recull del dia d'avui]). | ||
+ | |||
+ | * Plantejament dels exercicis '''A17.01''' (Presa de contacta amb LoRa mitjançant The Things Network) i '''A17.02''' (Tramesa de dades emprant LoRa, The Things Network i NodeRed) del [[Recull de pràctiques de 2n de DAM. Curs 2022-2023 | recull de pràctiques]]. | ||
+ | |||
+ | == 20230126 (1h) == | ||
+ | Seguim fent les activitats plantejades al [[Recull de pràctiques de 2n de DAM. Curs 2022-2023]]. | ||
+ | |||
+ | == 20230123 (3h) '''LoRa''' == | ||
+ | [https://recull.binefa.cat/files/20230123/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | '''No us oblideu de dur la placa!''' | ||
+ | |||
+ | Doneu-vos d'alta a [https://www.thethingsnetwork.org/ thethingsnetwork.org] | ||
+ | |||
+ | [[Formació d'Internet de les Coses - 2a sessió. Viladecans 20 d'octubre de 2022 | Introducció a LoRa / LoRaWAN]] | ||
+ | |||
+ | == 20230120 (2h) == | ||
+ | [https://recull.binefa.cat/files/20230120/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | Seguim fent les activitats plantejades al [[Recull de pràctiques de 2n de DAM. Curs 2022-2023]]. | ||
+ | |||
+ | == 20230119 (1h) == | ||
+ | [https://recull.binefa.cat/files/20230119/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | Seguim fent les activitats plantejades al [[Recull de pràctiques de 2n de DAM. Curs 2022-2023]]. | ||
+ | |||
+ | == 20230116 (3h) == | ||
+ | [https://recull.binefa.cat/files/20230116/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | Seguim fent les activitats plantejades al [[Recull de pràctiques de 2n de DAM. Curs 2022-2023]]. | ||
+ | |||
+ | == 20230113 (2h) == | ||
+ | [https://recull.binefa.cat/files/20230113/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | Seguim fent les activitats plantejades al [[Recull de pràctiques de 2n de DAM. Curs 2022-2023]]. | ||
+ | |||
+ | == 20230112 (1h) == | ||
+ | [https://recull.binefa.cat/files/20230112/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | Seguim fent les activitats plantejades el darrer dia. Han estat afegides, a [[Recull de pràctiques de 2n de DAM. Curs 2022-2023]], les pràctiques A08.05, A08.06 i A07.03, que són per a controlar remotament, mitjançant MQTT, un joc de tenis taula. | ||
+ | |||
+ | == 20230109 (3h) == | ||
+ | [https://recull.binefa.cat/files/20230109/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | Seguim fent les activitats plantejades el darrer dia. Han estat afegides, a [[Recull de pràctiques de 2n de DAM. Curs 2022-2023]], les pràctiques A13.03, A13.04 i A13.05, que són la versió en QML de la darrera pràctica feta amb Qt. Les dues darreres pràctiques plantejades avui són la implementació fent servir sòcols web, que permeten l'execució sobre pàgina web (per tant, poden funcionar amb WebAssembly i PureQML). | ||
+ | |||
+ | Al recull d'avui hi ha codi per ajudar a fer la pràctica emprant sòcols web MQTT. | ||
+ | |||
+ | void IndicadorLed::vSetLabelColor(QLabel* et,QColor col, QColor rerefons){ | ||
+ | QPixmap *pix = new QPixmap(22,22); | ||
+ | QPainter *paint = new QPainter(pix); | ||
+ | paint->setBrush(rerefons); | ||
+ | paint->drawRect(0, 0, 21, 21); | ||
+ | paint->setBrush(col); | ||
+ | paint->setPen(Qt::white); | ||
+ | paint->drawEllipse(5, 5, 10, 10); | ||
+ | et->setPixmap(*pix); | ||
+ | } | ||
+ | |||
+ | == 20221219 (4h) == | ||
+ | [https://recull.binefa.cat/files/20221219/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | Seguim fent les activitats plantejades el darrer dia. | ||
+ | |||
+ | Pujat al recull d'avui l'arxiu [https://recull.binefa.cat/files/20221219/ginyMqtt04.zip ginyMqtt04.zip] (Per a fer la connexió MQTT des de Qt) | ||
+ | |||
+ | == 20221216 (2h) == | ||
+ | Seguim fent les activitats plantejades el darrer dia: | ||
+ | |||
+ | * [[Recull_de_pràctiques_de_2n_de_DAM._Curs_2022-2023#A12.02 | A12.02 - Programa en Qt per a interaccionar amb la placa IoT-02]] | ||
+ | |||
+ | * [[Recull_de_pràctiques_de_2n_de_DAM._Curs_2022-2023#A15.04_-_Codi_de_la_placa_IoT-02_per_a_que_funcioni_amb_l.27activitat_A12.02 | A15.04 - Programa per la IoT-02 per a interaccionar amb el programa fet amb Qt de l'activitat A12.02]] | ||
+ | |||
+ | == 20221215 (1h) == | ||
+ | [https://recull.binefa.cat/files/20221215/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | Seguim fent les activitats plantejades el darrer dia: | ||
+ | |||
+ | * [[Recull_de_pràctiques_de_2n_de_DAM._Curs_2022-2023#A15.03_-_IoT-02_servint_p.C3.A0gina_web_per_a_canviar_contrasenya | A15.03 - IoT-02 servint pàgina web per a canviar contrasenya]] | ||
+ | |||
+ | * [[Recull_de_pràctiques_de_2n_de_DAM._Curs_2022-2023#A12.02 | A12.02 - Programa en Qt per a interaccionar amb la placa IoT-02]] | ||
+ | |||
+ | * [[Recull_de_pràctiques_de_2n_de_DAM._Curs_2022-2023#A15.04_-_Codi_de_la_placa_IoT-02_per_a_que_funcioni_amb_l.27activitat_A12.02 | A15.04 - Programa per la IoT-02 per a interaccionar amb el programa fet amb Qt de l'activitat A12.02]] | ||
+ | |||
+ | == 20221212 (3h) == | ||
+ | [https://recull.binefa.cat/files/20221212/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m5/d97m5te.htm Repàs apuntadors] | ||
+ | |||
+ | Seguim fent les activitats plantejades el darrer dia: | ||
+ | |||
+ | * [[Recull_de_pràctiques_de_2n_de_DAM._Curs_2022-2023#A15.03_-_IoT-02_servint_p.C3.A0gina_web_per_a_canviar_contrasenya | A15.03 - IoT-02 servint pàgina web per a canviar contrasenya]] | ||
+ | |||
+ | * [[Recull_de_pràctiques_de_2n_de_DAM._Curs_2022-2023#A12.02 | A12.02 - Programa en Qt per a interaccionar amb la placa IoT-02]] | ||
+ | |||
+ | * [[Recull_de_pràctiques_de_2n_de_DAM._Curs_2022-2023#A15.04_-_Codi_de_la_placa_IoT-02_per_a_que_funcioni_amb_l.27activitat_A12.02 | A15.04 - Programa per la IoT-02 per a interaccionar amb el programa fet amb Qt de l'activitat A12.02]] | ||
+ | |||
+ | == 20221205 (3h) == | ||
+ | [https://recull.binefa.cat/files/20221205/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | * [[Recull_de_pràctiques_de_2n_de_DAM._Curs_2022-2023#A15.03_-_IoT-02_servint_p.C3.A0gina_web_per_a_canviar_contrasenya | A15.03 - IoT-02 servint pàgina web per a canviar contrasenya]] | ||
+ | |||
+ | * [[Recull_de_pràctiques_de_2n_de_DAM._Curs_2022-2023#A12.02 | A12.02 - Programa en Qt per a interaccionar amb la placa IoT-02]] | ||
+ | |||
+ | * [[Recull_de_pràctiques_de_2n_de_DAM._Curs_2022-2023#A15.04_-_Codi_de_la_placa_IoT-02_per_a_que_funcioni_amb_l.27activitat_A12.02 | A15.04 - Programa per la IoT-02 per a interaccionar amb el programa fet amb Qt de l'activitat A12.02]] | ||
+ | |||
+ | == 20221201 (1h + 1h tutoria accidental) == | ||
+ | [https://recull.binefa.cat/files/20221201/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | == 20221128 (3h) == | ||
+ | [https://recull.binefa.cat/files/20221125/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | [https://doc.qt.io/qt-6.2/wasm.html WebAssembly i Emscripten a Qt/QML] | ||
+ | |||
+ | import QtQuick 2.15 | ||
+ | import QtQuick.Window 2.15 | ||
+ | |||
+ | Window { | ||
+ | width: 640 | ||
+ | height: 480 | ||
+ | visible: true | ||
+ | title: qsTr("Títol") | ||
+ | Rectangle{ | ||
+ | color: "lime" | ||
+ | anchors.centerIn: parent | ||
+ | width: parent.width - 20 | ||
+ | height: parent.height - 20 | ||
+ | Text { | ||
+ | id: name | ||
+ | text: qsTr("Una prova") | ||
+ | color: "blue" | ||
+ | anchors.centerIn: parent | ||
+ | font.pixelSize: 32 | ||
+ | font.family: "Helvetica" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | == 20221125 (2h) == | ||
+ | [https://recull.binefa.cat/files/20221125/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | Avui és el darrer dia d'entrada de notes del primer trimestre. És convenient que acabeu les activitats pendents. | ||
+ | |||
+ | Al recull d'avui podeu veure les notes de les activitats fins al dia d'ahir. | ||
+ | |||
+ | == 20221124 (1h + 1h tutoria) == | ||
+ | [https://recull.binefa.cat/files/20221124/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
+ | |||
+ | * '''Classe''' | ||
+ | |||
+ | Seguim fent '''A08.04''' i '''A12.01''' | ||
+ | |||
+ | Demà, 25 de novembre, és el darrer dia d'entrada de notes del primer trimestre. És convenient que acabeu les activitats pendents. | ||
+ | |||
+ | * '''Tutoria ''accidental'' del 24 de novembre de 2022''' | ||
+ | |||
+ | [https://forms.gle/6zfamTGjRqyyKxfR6 22-23 Enquesta d'inici de curs] | ||
+ | |||
+ | Aclariments: | ||
+ | |||
+ | - Per poder respondre han de tenir oberta la sessió de correu fje.edu, encara que l'enquesta és anònima. | ||
+ | |||
+ | - El sistema només permet respondre una sola vegada per usuari. | ||
+ | |||
+ | - Hi ha preguntes que tenen la possibilitat de respostes múltiples i d'altres de resposta única. | ||
+ | |||
+ | - Hi ha respostes que demanen un breu raonament. | ||
+ | |||
+ | - El temps a dedicar-hi no va més enllà dels 10 minuts. | ||
+ | |||
+ | == 20221121 (3h) == | ||
+ | [https://recull.binefa.cat/files/20221121/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
[[Recull de pràctiques de 2n de DAM. Curs 2022-2023]] | [[Recull de pràctiques de 2n de DAM. Curs 2022-2023]] | ||
+ | |||
+ | [[Vídeos QML]] | ||
+ | |||
+ | [[Introducció al QML. Curs 2022-2023]] | ||
+ | |||
+ | Per afegir '''QMLDesigner''' a l'entorn del QtCreator: Aneu al menú ''Help'' / ''About pluggins'' / Seleccioneu ''QMLDesigner'' | ||
+ | |||
+ | Per afegir un nou formulari: '''nomForm.ui.qml''' | ||
+ | |||
== 20221117 (1h) == | == 20221117 (1h) == | ||
[https://recull.binefa.cat/files/20221114/ Recull d'avui] usuari: dam | contrasenya: dam2223 | [https://recull.binefa.cat/files/20221114/ Recull d'avui] usuari: dam | contrasenya: dam2223 | ||
Línia 430: | Línia 893: | ||
[https://docs.google.com/spreadsheets/d/1jxpQM8EaMrWeWnBrbSBBbYi8lwblSla3/edit#gid=1066652034 Seguiment de tutories] | [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 == | ||
Línia 445: | Línia 910: | ||
[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] | ||
+ | |||
+ | === Qt for Android === | ||
+ | [https://doc.qt.io/qt-6/android-getting-started.html Getting Started with Qt for Android] | ||
=== Qt for WebAssembly === | === Qt for WebAssembly === | ||
Línia 456: | Línia 924: | ||
[https://www.bogotobogo.com/Qt/Qt5_QProcess_QFileDialog_QTextEdit_FFmpeg.php Qt5 tutorial FFmpeg converter using QProcess - 2020] | [https://www.bogotobogo.com/Qt/Qt5_QProcess_QFileDialog_QTextEdit_FFmpeg.php 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 == | == IoT == |
Revisió de 13:30, 25 maig 2023
Quan tingueu les credencials d'accés a la NET heu de compartir una carpeta amb aquest nom: 2223-DAM-1rCognom2nCognomNom (Per exemple, si el vostre nom és Xavier López Pujol --> 2223-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 2022-2023
Contingut
- 1 Algunes classes
- 1.1 Accessos ràpids
- 1.2 20230525 Lliurament de projectes
- 1.3 20230522 Darrer dia de classe
- 1.4 20230518
- 1.5 20230515
- 1.6 20230512
- 1.7 20230511
- 1.8 20230508
- 1.9 20230505
- 1.10 20230504
- 1.11 20230427
- 1.12 20230424
- 1.13 20230420
- 1.14 20230417
- 1.15 20230414
- 1.16 20230413
- 1.17 20230331
- 1.18 20230330
- 1.19 20230327
- 1.20 20230324
- 1.21 20230323
- 1.22 20230320
- 1.23 20230316
- 1.24 20230313
- 1.25 20230310
- 1.26 20230306 (2h) GP3
- 1.27 20230303 (2h)
- 1.28 20230227 (2h) Examen Projecte Global. Part Internet de les Coses
- 1.29 20230227 (1h) Examen Parcial M07UF1. Qt i QML
- 1.30 20230224 (2h)
- 1.31 20230223 (1h)
- 1.32 20230217 (2h)
- 1.33 20230216 (1h + 1h)
- 1.34 20230213 (3h)
- 1.35 20230210 (2h)
- 1.36 20230209 (1h)
- 1.37 20230206 (3h)
- 1.38 20230203 (2h)
- 1.39 20230202 (1h)
- 1.40 20230130 (3h)
- 1.41 20230127 (2h)
- 1.42 20230126 (1h)
- 1.43 20230123 (3h) LoRa
- 1.44 20230120 (2h)
- 1.45 20230119 (1h)
- 1.46 20230116 (3h)
- 1.47 20230113 (2h)
- 1.48 20230112 (1h)
- 1.49 20230109 (3h)
- 1.50 20221219 (4h)
- 1.51 20221216 (2h)
- 1.52 20221215 (1h)
- 1.53 20221212 (3h)
- 1.54 20221205 (3h)
- 1.55 20221201 (1h + 1h tutoria accidental)
- 1.56 20221128 (3h)
- 1.57 20221125 (2h)
- 1.58 20221124 (1h + 1h tutoria)
- 1.59 20221121 (3h)
- 1.60 20221117 (1h)
- 1.61 20221114 (3h) A08 - QML, connexió a rerefons Qt i PureQML
- 1.62 20221111 (2h)
- 1.63 20221110 (1h)
- 1.64 20221107 (3h)
- 1.65 20221104 (2h)
- 1.66 20221103 (1h) QDialog
- 1.67 20221028 (2h) A9
- 1.68 20221027 (1h) MicroPython
- 1.69 20221024 (3h)
- 1.70 20221021 (2h)
- 1.71 20221020 (1h) Menús a QMainWindow
- 1.72 20221017 (3h)
- 1.73 20221014 (2h) A06.02, A06.03, A07.01 i A07.02
- 1.74 20221013 (1h) A07.02
- 1.75 20221010 (3h) A06.02, A07.01 i A06.03
- 1.76 20221007 (2h) A06.01
- 1.77 20221006 (1h) A06.01
- 1.78 20221003 (2h) A06.01
- 1.79 20220930 (2h) A00
- 1.80 20220929 (1h)
- 1.81 20220923 (2h) A05
- 1.82 20220922 (1h)
- 1.83 20220919 (3h)
- 1.84 20220916 (2h) A03
- 1.85 20220915 (1h)
- 1.86 20220912 (3h)
- 2 Repositori de codis fet a classe durant el curs
- 3 Documentació
Algunes classes
Teleconferència provisional per a compartir pantalla i confinats
Accessos ràpids
Recull de pràctiques de 2n de DAM. Curs 2022-2023
Introducció al QML. Curs 2022-2023
20230525 Lliurament de projectes
Lliurament de projectes
20230522 Darrer dia de classe
- Seguim desenvolupant GP3
20230518
- Seguim desenvolupant GP3
20230515
- Seguim desenvolupant GP3
20230512
- Seguim desenvolupant GP3
20230511
- Seguim desenvolupant GP3
20230508
- Seguim desenvolupant GP3
20230505
- Seguim desenvolupant GP3
20230504
- Seguim desenvolupant GP3
20230427
- Seguim desenvolupant GP3
20230424
- Seguim desenvolupant GP3
20230420
- Seguim desenvolupant GP3
20230417
- Seguim desenvolupant GP3
20230414
- Seguim desenvolupant GP3
20230413
- Seguim desenvolupant GP3
20230331
- Seguim desenvolupant GP3
20230330
- Seguim desenvolupant GP3
20230327
- Seguim desenvolupant GP3
- Seguim fent M07UF1
20230324
- Seguim desenvolupant GP3
20230323
- Seguim desenvolupant GP3
20230320
- Seguim desenvolupant GP3
20230316
- Seguim desenvolupant GP3
20230313
- Seguim desenvolupant GP3
- Seguim fent M07UF1
20230310
- Seguim desenvolupant GP3
20230306 (2h) GP3
- Dues primeres hores: GP3
- Tercera hora: Qt/QML
20230303 (2h)
- Darrer dia de les pràctiques del recull
20230227 (2h) Examen Projecte Global. Part Internet de les Coses
Examen Projecte Global. Part Internet de les Coses usuari: dam | contrasenya: dam2223
20230227 (1h) Examen Parcial M07UF1. Qt i QML
Examen Parcial M07UF1. Qt i QML usuari: dam | contrasenya: dam2223
20230224 (2h)
- Seguim fent les pràctiques del recull
20230223 (1h)
20230217 (2h)
Recull d'avui usuari: dam | contrasenya: dam2223
Seguim fent els exercicis pendents del recull de pràctiques.
20230216 (1h + 1h)
Recull d'avui usuari: dam | contrasenya: dam2223
- Pràctica A14.7 UserLand al recull de pràctiques. Es tracta d'instal·lar com a aplicació del vostre telèfon mòbil Android (real o simulat) un sistema Debian. A aquest sistema, dins de l'aplicació UserLand, hi instal·lareu un NodeRed que serà visible des del vostre ordinador.
- Afegida la pràctica A17.04. Lectura de dades de la placa IoT-02, visualitzant-les a Grafana, emprant NodeRed, InfluxDB.
20230213 (3h)
Recull d'avui usuari: dam | contrasenya: dam2223
- S'han afegit les pràctiques A14.5, A14.6 i A17.03 al recull de pràctiques. És la instal·lació de Grafana i InfluxDB al vostre sistema operatiu.
- Instal·leu node-red-contrib-influxdb al vostre NodeRed.
- Seguim fent els exercicis pendents del recull de pràctiques.
20230210 (2h)
Recull d'avui usuari: dam | contrasenya: dam2223
- S'ha afegit la pràctica A10.3 al recull de pràctiques. És una pràctica bàsica de la biblioteca Paho emprant Python.
- Seguim fent els exercicis pendents del recull de pràctiques.
Paho - MQTT i Python
# pip install paho-mqtt
A una cel·la del jupyter-lab:
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')
20230209 (1h)
Recull d'avui usuari: dam | contrasenya: dam2223
Seguim fent els exercicis pendents del recull de pràctiques.
Alternativa a sys.argv: argparser
argparser - Parser for command-line options, arguments and sub-commands
20230206 (3h)
Recull d'avui usuari: dam | contrasenya: dam2223
Seguim fent els exercicis pendents del recull de pràctiques.
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).
Exemple de bot de Mastodon per a fer lectures de sensors cada hora.
Obtenció de les credencials per a l'API de Mastodon amb Mastodon.py, pas per pas
20230203 (2h)
Recull d'avui usuari: dam | contrasenya: dam2223
Seguim fent els exercicis pendents del recull de pràctiques.
- Pujats els nous exercicis A10.1, A10.2, A14.1, A14.2, A14.3 i A14.4 al recull de pràctiques.
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.
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
20230202 (1h)
Recull d'avui usuari: dam | contrasenya: dam2223
Seguim fent els exercicis pendents del recull de pràctiques.
20230130 (3h)
Recull d'avui usuari: dam | contrasenya: dam2223
No us oblideu de dur la placa!
Seguim fent els exercicis pendents del recull de pràctiques.
- Plantejament de l'exercici A18.01 (Recepció de dades LoRa, emprant el rerefons de The Things Network i un visualitzador QML) del recull de pràctiques.
- En cas de no tenir-ne, feu-vos un compte de Telegram.
- Feu-vos un compte a aquesta instància pensada per a hostatjar bots de Mastodon (triga un temps en activar-se).
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).
Exemple de bot de Mastodon per a fer lectures de sensors cada hora.
Obtenció de les credencials per a l'API de Mastodon amb Mastodon.py, pas per pas
20230127 (2h)
Recull d'avui usuari: dam | contrasenya: dam2223
No us oblideu de dur la placa!
- Nodes a carregar al NodeRed:
- Exemple de recopilació de dades trameses per la placa IoT-02 mitjançant LoRa des de NodeRed (arxius al recull del dia d'avui).
- Plantejament dels exercicis A17.01 (Presa de contacta amb LoRa mitjançant The Things Network) i A17.02 (Tramesa de dades emprant LoRa, The Things Network i NodeRed) del recull de pràctiques.
20230126 (1h)
Seguim fent les activitats plantejades al Recull de pràctiques de 2n de DAM. Curs 2022-2023.
20230123 (3h) LoRa
Recull d'avui usuari: dam | contrasenya: dam2223
No us oblideu de dur la placa!
Doneu-vos d'alta a thethingsnetwork.org
20230120 (2h)
Recull d'avui usuari: dam | contrasenya: dam2223
Seguim fent les activitats plantejades al Recull de pràctiques de 2n de DAM. Curs 2022-2023.
20230119 (1h)
Recull d'avui usuari: dam | contrasenya: dam2223
Seguim fent les activitats plantejades al Recull de pràctiques de 2n de DAM. Curs 2022-2023.
20230116 (3h)
Recull d'avui usuari: dam | contrasenya: dam2223
Seguim fent les activitats plantejades al Recull de pràctiques de 2n de DAM. Curs 2022-2023.
20230113 (2h)
Recull d'avui usuari: dam | contrasenya: dam2223
Seguim fent les activitats plantejades al Recull de pràctiques de 2n de DAM. Curs 2022-2023.
20230112 (1h)
Recull d'avui usuari: dam | contrasenya: dam2223
Seguim fent les activitats plantejades el darrer dia. Han estat afegides, a Recull de pràctiques de 2n de DAM. Curs 2022-2023, les pràctiques A08.05, A08.06 i A07.03, que són per a controlar remotament, mitjançant MQTT, un joc de tenis taula.
20230109 (3h)
Recull d'avui usuari: dam | contrasenya: dam2223
Seguim fent les activitats plantejades el darrer dia. Han estat afegides, a Recull de pràctiques de 2n de DAM. Curs 2022-2023, les pràctiques A13.03, A13.04 i A13.05, que són la versió en QML de la darrera pràctica feta amb Qt. Les dues darreres pràctiques plantejades avui són la implementació fent servir sòcols web, que permeten l'execució sobre pàgina web (per tant, poden funcionar amb WebAssembly i PureQML).
Al recull d'avui hi ha codi per ajudar a fer la pràctica emprant sòcols web MQTT.
void IndicadorLed::vSetLabelColor(QLabel* et,QColor col, QColor rerefons){ QPixmap *pix = new QPixmap(22,22); QPainter *paint = new QPainter(pix); paint->setBrush(rerefons); paint->drawRect(0, 0, 21, 21); paint->setBrush(col); paint->setPen(Qt::white); paint->drawEllipse(5, 5, 10, 10); et->setPixmap(*pix); }
20221219 (4h)
Recull d'avui usuari: dam | contrasenya: dam2223
Seguim fent les activitats plantejades el darrer dia.
Pujat al recull d'avui l'arxiu ginyMqtt04.zip (Per a fer la connexió MQTT des de Qt)
20221216 (2h)
Seguim fent les activitats plantejades el darrer dia:
- A15.04 - Programa per la IoT-02 per a interaccionar amb el programa fet amb Qt de l'activitat A12.02
20221215 (1h)
Recull d'avui usuari: dam | contrasenya: dam2223
Seguim fent les activitats plantejades el darrer dia:
- A15.04 - Programa per la IoT-02 per a interaccionar amb el programa fet amb Qt de l'activitat A12.02
20221212 (3h)
Recull d'avui usuari: dam | contrasenya: dam2223
Seguim fent les activitats plantejades el darrer dia:
- A15.04 - Programa per la IoT-02 per a interaccionar amb el programa fet amb Qt de l'activitat A12.02
20221205 (3h)
Recull d'avui usuari: dam | contrasenya: dam2223
- A15.04 - Programa per la IoT-02 per a interaccionar amb el programa fet amb Qt de l'activitat A12.02
20221201 (1h + 1h tutoria accidental)
Recull d'avui usuari: dam | contrasenya: dam2223
20221128 (3h)
Recull d'avui usuari: dam | contrasenya: dam2223
WebAssembly i Emscripten a Qt/QML
import QtQuick 2.15 import QtQuick.Window 2.15 Window { width: 640 height: 480 visible: true title: qsTr("Títol") Rectangle{ color: "lime" anchors.centerIn: parent width: parent.width - 20 height: parent.height - 20 Text { id: name text: qsTr("Una prova") color: "blue" anchors.centerIn: parent font.pixelSize: 32 font.family: "Helvetica" } } }
20221125 (2h)
Recull d'avui usuari: dam | contrasenya: dam2223
Avui és el darrer dia d'entrada de notes del primer trimestre. És convenient que acabeu les activitats pendents.
Al recull d'avui podeu veure les notes de les activitats fins al dia d'ahir.
20221124 (1h + 1h tutoria)
Recull d'avui usuari: dam | contrasenya: dam2223
- Classe
Seguim fent A08.04 i A12.01
Demà, 25 de novembre, és el darrer dia d'entrada de notes del primer trimestre. És convenient que acabeu les activitats pendents.
- Tutoria accidental del 24 de novembre de 2022
22-23 Enquesta d'inici de curs
Aclariments:
- Per poder respondre han de tenir oberta la sessió de correu fje.edu, encara que l'enquesta és anònima.
- El sistema només permet respondre una sola vegada per usuari.
- Hi ha preguntes que tenen la possibilitat de respostes múltiples i d'altres de resposta única.
- Hi ha respostes que demanen un breu raonament.
- El temps a dedicar-hi no va més enllà dels 10 minuts.
20221121 (3h)
Recull d'avui usuari: dam | contrasenya: dam2223
Recull de pràctiques de 2n de DAM. Curs 2022-2023
Introducció al QML. Curs 2022-2023
Per afegir QMLDesigner a l'entorn del QtCreator: Aneu al menú Help / About pluggins / Seleccioneu QMLDesigner
Per afegir un nou formulari: nomForm.ui.qml
20221117 (1h)
Recull d'avui usuari: dam | contrasenya: dam2223
Recull de pràctiques de 2n de DAM. Curs 2022-2023
20221114 (3h) A08 - QML, connexió a rerefons Qt i PureQML
Recull d'avui usuari: dam | contrasenya: dam2223
L'exercici A06.03 passa a ser l'A12.01
L'exercici fr-mw-2 d'A09.01 i A09.02 passa a ser A15.01 i A15.02
Introducció al QML. Curs 2022-2023
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
20221111 (2h)
Recull d'avui usuari: dam | contrasenya: dam2223
Revisem projectes pujats a la carpeta compartida i acabem els que tenim pendents.
20221110 (1h)
Recull d'avui usuari: dam | contrasenya: dam2223
A9.01: fent servir Microworkers emprant MicroPython
A9.02: fent servir FreeRTOS emprant l'IDE d'Arduino
Més informació sobre la pràctica A09
20221107 (3h)
Recull d'avui usuari: dam | contrasenya: dam2223
20221104 (2h)
Recull d'avui usuari: dam | contrasenya: dam2223
Ens posem al dia amb les pràctiques pendents.
20221103 (1h) QDialog
Recull d'avui usuari: dam | contrasenya: dam2223
Al recull d'avui hi ha un exemple de codi emprant la classe QDialog.
20221028 (2h) A9
Recull d'avui usuari: dam | contrasenya: dam2223
A9.01: fent servir Microworkers emprant MicroPython
A9.02: fent servir FreeRTOS emprant l'IDE d'Arduino
FreeRTOS i MicroWorkers
fr-mw-1) Presa de contacte amb FreeRTOS
Fent servir la placa IoT-02 feu un programa amb dues tasques. Una tasca farà que el led groc faci pampallugues (500ms encés i 500ms apagat). Una altra tasca llegirà el botó I35, fent que quan estigui premut el cicle del led groc sigui de 100ms encés i 100ms apagat.
fr-mw-2) Connexió a WiFi i un broker MQTT
Afegiu una tasca per a fer connexió a WiFi i MQTT.
- Emprant MicroWorkers
Us podeu basar en el codi present a prj_mqtt_json. Feu servir també una variable booleana bSocConnectat (que serà certa quan hi hagi connexió i falsa quan no s'hagi establert la connexió o s'hagi perdut -quan es perd la IP que s'autollegeix és 0.0.0.0-).
- Emprant FreeRTOS
Us podeu basar en el codi present a IoT-02_mqtts_freeRTOS_json_12. Afegiu-hi també un #define USING_WIFI per saber si cal que funcionin totes aquelles funcions que tenen relació amb la wifi. Feu servir també una variable booleana bSocConnectat (que serà certa quan hi hagi connexió i falsa quan no s'hagi establert la connexió o s'hagi perdut -quan es perd la IP que s'autollegeix és 0.0.0.0-).
Recull de pràctiques de 2n de DAM. Curs 2022-2023
fr-mw-2.2) Publicació
Si bSocConnectat és certa, publica el canvi d'estat del botó quan es prem I35.
fr-mw-2.3) Subscripció
Quan feu la connexió a MQTT, afegiu una subscripció al tema /MAC/led (essent MAC la MAC de la vostra placa). Si rebeu per aquest tema un '1', 'On','on' o 'ON' s'ha d'encendre el led blanc. Si rebeu '0', 'Off', 'off' o 'OFF' s'apaga el led blanc.
20221027 (1h) MicroPython
Recull d'avui usuari: dam | contrasenya: dam2223
Seguim amb MicroPython
Pistes per a la instal·lació de MicroPython a les pàgines 49 a 52
20221024 (3h)
Recull d'avui usuari: dam | contrasenya: dam2223
- Exercici A06.03 (Heu de desar a la carpeta A06 un document 2223-DAM-A06.03-1rCognom2nCognomNom.pdf amb les solucions explicades i un arxiu 2223-DAM-A06.02-1rCognom2nCognomNom.zip amb els codis comprimits, sense el .pro.user).
20221021 (2h)
Recull d'avui usuari: dam | contrasenya: dam2223
20221020 (1h) Menús a QMainWindow
Recull d'avui usuari: dam | contrasenya: dam2223
20221017 (3h)
- Dubtes
- Finalització de les subactivitats pendents
20221014 (2h) A06.02, A06.03, A07.01 i A07.02
Recull d'avui usuari: dam | contrasenya: dam2223
- Dubtes
- Acabem les subactivitats pendents (A06.02, A06.03, A07.01 i/o A07.02).
20221013 (1h) A07.02
Recull d'avui usuari: dam | contrasenya: dam2223
- Feu-vos un usuari a Wokwi. Us podeu autenticar fent servir el vostre usuari a l'Escola o el vostre usuari personal a GMail.
Feu-vos una còpia a la vostra zona a Wokwi d'aquest bessó digital d'un ESP32, implementat en micropython, comunicant mitjançant MQTT. Canvieu la MAC del bessó digital per la MAC de la vostra placa IoT-02.
- Exercici A07.02 (Heu de desar a la carpeta A07 un document 2223-DAM-A07.02-1rCognom2nCognomNom.pdf amb l'explicació de com heu modificat la MAC (escrivint-hi la de la vostra placa IoT-02) del bessó digital copiat a la vostra zona de Wokwi. Feu el document fent servir com a controladors l'Snap!, NodeRED, i el codi amb QtMqtt ginyMqtt04. I com a dispositius la vostra còpia modificada del bessó digital i la placa IoT-02 per a provar la bidireccionalitat de la comunicació MQTT amb el botó i el led.
- Explicació dels codis ginyMqtt00 fins a ginyMqtt04, que fan servir ginys QWidget i QtMqtt.
20221010 (3h) A06.02, A07.01 i A06.03
Recull d'avui usuari: dam | contrasenya: dam2223
- Exercici A06.02 (Heu de desar a la carpeta A06 un document 2223-DAM-A06.02-1rCognom2nCognomNom.pdf amb l'explicació del procés per a instal·lar QtMqtt al vostre sistema. Verifiqueu que us funciona fent servir el codi de la carpeta de l'exercici A06.02
- Si feu servir Windows i no teniu el llenguatge perl instal·lat, instal·leu perl
ecat@iot-ecat:~/Qt/6.2.4/gcc_64/lib$ git clone git://code.qt.io/qt/qtmqtt.git ecat@iot-ecat:~/Qt/6.2.4/gcc_64/lib$ cd qtmqtt/ ecat@iot-ecat:~/Qt/6.2.4/gcc_64/lib/qtmqtt$ git checkout 6.1 (malgrat tingueu la 6.2.4) ecat@iot-ecat:~/Qt/6.2.4/gcc_64/lib/qtmqtt$ rm -r examples/
Mitjançant el Qt Creator obriu el projecte /home/ecat/Qt/6.2.4/gcc_64/lib/qtmqtt/qtmqtt.pro. Aneu al menú i seleccioneu Build / Run qmake
ecat@iot-ecat:~/Qt/6.2.4/gcc_64/lib/qtmqtt$ make ecat@iot-ecat:~/Qt/6.2.4/gcc_64/lib/qtmqtt$ sudo make install
Descàrrega del C++ 17 per Windows.
Compilació i instal·lació des de Windows, un cop instal·lat C++ 17 (i la ruta del PATH havent afegit C:\MinGW\bin).
mingw32-make.exe mingw32-make.exe install
- Exercici A07.01 (Heu de desar a la carpeta A07 un document 2223-DAM-A07.01-1rCognom2nCognomNom.pdf amb l'explicació del procés de fer servir la modificació de simpleclient, anomenant-la simpleclientUsrPwd, incorporant usuari i contrasenya. Heu de comunicar la placa IoT-02 de forma bidireccional amb simpleclientUsrPwd.
void MainWindow::on_buttonConnect_clicked() { if (m_client->state() == QMqttClient::Disconnected) { ui->lineEditHost->setEnabled(false); ui->spinBoxPort->setEnabled(false); ui->buttonConnect->setText(tr("Disconnect")); ui->leUser->setEnabled(false); ui->lePwd->setEnabled(false); m_client->setUsername(ui->leUser->text()); m_client->setPassword(ui->lePwd->text()); m_client->connectToHost(); } else { ui->lineEditHost->setEnabled(true); ui->spinBoxPort->setEnabled(true); ui->leUser->setEnabled(true); ui->lePwd->setEnabled(true); ui->buttonConnect->setText(tr("Connect")); m_client->disconnectFromHost(); } }
- Exercici A06.03 (Heu de desar a la carpeta A06 un document 2223-DAM-A06.03-1rCognom2nCognomNom.pdf amb les solucions explicades i un arxiu 2223-DAM-A06.02-1rCognom2nCognomNom.zip amb els codis comprimits, sense el .pro.user).
20221007 (2h) A06.01
Recull d'avui usuari: dam | contrasenya: dam2223
20221006 (1h) A06.01
Recull d'avui usuari: dam | contrasenya: dam2223
Exercici A06.01 (Heu de desar a la carpeta A06 un document 2223-DAM-A06.01-1rCognom2nCognomNom.pdf amb les solucions explicades i un arxiu 2223-DAM-A06.01-1rCognom2nCognomNom.zip amb els codis comprimits, sense el .pro.user).
20221003 (2h) A06.01
Recull d'avui usuari: dam | contrasenya: dam2223
Connexió entre ginys encastats (Evolució de l'exercici del darrer dia)
Exercici A06.01 (Heu de desar a la carpeta A06 un document 2223-DAM-A06.01-1rCognom2nCognomNom.pdf amb les solucions explicades i un arxiu 2223-DAM-A06.01-1rCognom2nCognomNom.zip amb els codis comprimits, sense el .pro.user).
qtMqtt
Feu un git clone i especifiqueu la versió amb un git checkout 6.0. Després:
git clone https://code.qt.io/cgit/qt/qtmqtt.git cd qmqtt git checkout 6.1 (Canvieu 6.1 per la vostra versió de Qt) mkdir build cd build qmake -r .. make sudo make install
Instal·lació a Windows
- Si no teniu el llenguatge perl instal·lat, instal·leu perl
- Obriu el CMD amb les variables d'entorn de les Qt6
git clone git://code.qt.io/qt/qtmqtt.git cd qmqtt git checkout 6.1 mkdir build cd build qmake -r .. mingw32-make mingw32-make install
Instal·lació de QtMqtt per Android
Malgrat que ja us funcioni la biblioteca QtMqtt en programes d'escriptori, heu de fer la compilació de la biblioteca QtMqtt per a la versió de Qt/QML que feu servir per a poder executar programes que duguin aquesta biblioteca a Android.
Hi ha diversos suggeriments de com fer-ho. Després de diversos intents, aquest és el sistema que a mi m'ha funcionat:
Cerqueu el directori lib de la vostra distribució Qt per a Android x86:
jordi@ecat-XPS13:~$ /home/jordi/Qt/6.0.0/android_x86/bin/qmake -query QT_INSTALL_LIBS /home/jordi/Qt/6.0.0/android_x86/lib
o, per al dispositiu físic Android amb tecnologia Android ARM:
ecat@iot-ecat:~$ /home/ecat/Qt/6.0.0/android_armv7/bin/qmake -query QT_INSTALL_LIBS /home/ecat/Qt/6.0.0/android_armv7/lib
Aneu a la carpeta que ens retorna l'ordre anterior (Android x86):
jordi@ecat-XPS13:~$ cd /home/jordi/Qt/6.0.0/android_x86/lib
o, per al dispositiu físic Android amb tecnologia Android ARM:
ecat@iot-ecat:~$ cd /home/ecat/Qt/6.0.0/android_armv7/lib
I feu el procés d'instal·lació (Android x86):
jordi@ecat-XPS13:~/Qt/6.0.0/android_x86/lib$ git clone git://code.qt.io/qt/qtmqtt.git jordi@ecat-XPS13:~/Qt/6.0.0/android_x86/lib$ cd qtmqtt/ jordi@ecat-XPS13:~/Qt/6.0.0/android_x86/lib/qtmqtt$ git checkout 6.0 jordi@ecat-XPS13:~/Qt/6.0.0/android_x86/lib/qtmqtt$ rm -r examples/
o, per al dispositiu físic Android amb tecnologia Android ARM:
ecat@iot-ecat:~/Qt/6.0.0/android_armv7/lib$ git clone git://code.qt.io/qt/qtmqtt.git ecat@iot-ecat:~/Qt/6.0.0/android_armv7/lib$ cd qtmqtt/ ecat@iot-ecat:~/Qt/6.0.0/android_armv7/lib/qtmqtt$ git checkout 6.0 ecat@iot-ecat:~/Qt/6.0.0/android_armv7/lib/qtmqtt$ rm -r examples/
Per a Android x86, mitjançant el Qt Creator obriu el projecte /home/jordi/Qt/6.0.0/android_x86/lib/qtmqtt/qtmqtt.pro. Aneu al menú i seleccioneu Build / Run qmake
Per a Android ARM, mitjançant el Qt Creator obriu el projecte /home/ecat/Qt/6.0.0/android_armv7/lib/qtmqtt/qtmqtt.pro. Aneu al menú i seleccioneu Build / Run qmake
Torneu al terminal d'abans i feu (Android x86):
jordi@ecat-XPS13:~/Qt/6.0.0/android_x86/lib/qtmqtt$ make jordi@ecat-XPS13:~/Qt/6.0.0/android_x86/lib/qtmqtt$ sudo make install
o, per al dispositiu físic Android amb tecnologia Android ARM:
ecat@iot-ecat:~/Qt/6.0.0/android_armv7/lib/qtmqtt$ make ecat@iot-ecat:~/Qt/6.0.0/android_armv7/lib/qtmqtt$ sudo make install
Copieu, fora de la ruta de les Qt, els projectes d'exemple quickpublication i quicksubscription. Obriu els dos projectes per a que puguin ser executats des de l'escriptori i des del mòbil (emulat o no). Per a verificar llur funcionament, podeu executar un projecte al dispositiu mòbil i l'altre a l'escriptori.
20220930 (2h) A00
- Dubtes
- Programació orientada a objectes en C++. Integració a les Qt. (Codis al recull del 19 de setembre)
- Canvi de la forma del cursor per frames
- Una calculadora que suma, emprant Qt
- A la segona hora es faran activitats relacionades amb el professor transversal del projecte global.
Dins de la carpeta compartida feu una subcarpeta amb el nom activitats. I a dins de la subcarpeta A00. Deseu a la subcarpeta A00 l'activitat feta amb el professor transversal en format .odt i .pdf
20220929 (1h)
- Dubtes
- Programació orientada a objectes en C++. Integració a les Qt. (Codis al recull del 19 de setembre)
- Canvi de la forma del cursor per frames
- Una aplicació, emprant Qt, amb dos botons ( + i -) i una etiqueta que mostra un número. Amb el botó + s'incrementa el valor del número de l'etiqueta i amb el botó - es decrementa.
20220923 (2h) A05
- Dubtes
- Verifiqueu la connectivitat amb el protocol MQTT de la placa IoT-02 emprant Snap! i NodeRED.
- Programació orientada a objectes en C++. Integració a les Qt.
- A la segona hora es farà l'activitat 5 relacionada amb el professor transversal del projecte global.
Feu la subcarpeta A05 dins de la subcarpeta activitats de la carpeta compartida. Deseu a la subcarpeta A05 l'activitat feta amb el professor transversal en format .odt i .pdf
20220922 (1h)
Recull d'avui usuari: dam | contrasenya: dam2223
- Dubtes del darrer dia
- Seguim amb les Qt
20220919 (3h)
Recull d'avui usuari: dam | contrasenya: dam2223
- Dubtes de la setmana passada
- Connexió de la placa IoT-02 a NodeRED mitjançant MQTT
formacio.things.cat:9001 ecat / clotClot
- Programació orientada a objectes en C++. Integració a les Qt
20220916 (2h) A03
- Reviseu si teniu la vostra carpeta compartida enllaçada a carpetes compartides amb el número de la placa IoT-02 cedida fins a final de curs.
- Dubtes del dia anterior
- Programació orientada a objectes en C++. Integració a les Qt
- A la segona hora es faran activitats relacionades amb el professor transversal del projecte global.
Dins de la carpeta compartida feu una subcarpeta amb el nom activitats. I a dins de la subcarpeta A03. Deseu a la subcarpeta A03 l'activitat feta amb el professor transversal en format .odt i .pdf
20220915 (1h)
- Reviseu si teniu la vostra carpeta compartida enllaçada a: Carpetes compartides de 2n de DAM. Curs_2022-2023
- 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
20220912 (3h)
Recull del dia 20220912 usuari: dam | contrasenya: dam2223
Distribució de M07UF1 i M13 al curs 2022-2023
Distribució de M07UF1 i M13 al curs 2022-2023 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
IoT
- NodeRED
Instal·lació de Node.js Guia d'instal·lació de node i npm
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: dam2122
Documentació
Distribució de M07UF1 i M13 al curs 2022-2023 de 2n de DAM
Recull de pràctiques de 2n de DAM. Curs 2022-2023
Enquesta del 17 de novembre de 2022
Qt/QML
Paquets que manquen per a fer funcionar les Qt a l'Ubuntu:
sudo apt install libx11-xcb-dev libglu1-mesa-dev
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
Qt for Android
Getting Started with Qt 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