diff --git a/bascula_autonoma_1.json b/bascula_autonoma_1.json index 817b452..47a8c00 100644 --- a/bascula_autonoma_1.json +++ b/bascula_autonoma_1.json @@ -275,7 +275,6 @@ "5263b792c0037321", "fab29e0f6601e531", "a862be7fbfd8827a", - "77d23eabe6e7d642", "9328043d4e9512a9", "06832f8daa7c54f9", "423023a153680e64", @@ -612,11 +611,13 @@ "4ab4a211f9ce33d9", "41b9eef871e59dd2", "b31db528b0be605a", - "185e340354acf892" + "185e340354acf892", + "9d8e071a6d3642c0", + "77d23eabe6e7d642" ], "x": 994, "y": 919, - "w": 452, + "w": 532, "h": 510 }, { @@ -2094,6 +2095,7 @@ "id": "0bc82cd2485c7679", "type": "inject", "z": "953e8740401d175c", + "d": true, "g": "6443f177eec330e4", "name": "distance ID1", "props": [ @@ -3569,7 +3571,7 @@ "initialize": "", "finalize": "", "libs": [], - "x": 1850, + "x": 1890, "y": 1240, "wires": [ [ @@ -4144,7 +4146,7 @@ "links": [ "c35fe5fece5375d0" ], - "x": 2055, + "x": 2065, "y": 1360, "wires": [] }, @@ -4227,7 +4229,7 @@ "initialize": "", "finalize": "", "libs": [], - "x": 1590, + "x": 1670, "y": 1140, "wires": [ [ @@ -4255,7 +4257,7 @@ "links": [ "8356acc61776cae7" ], - "x": 1775, + "x": 1855, "y": 1080, "wires": [] }, @@ -4269,7 +4271,7 @@ "links": [ "c35fe5fece5375d0" ], - "x": 1775, + "x": 1855, "y": 1120, "wires": [] }, @@ -4285,7 +4287,7 @@ "freq": "", "out": "out", "bcm": true, - "x": 2160, + "x": 2180, "y": 1220, "wires": [] }, @@ -4293,13 +4295,13 @@ "id": "77d23eabe6e7d642", "type": "link out", "z": "953e8740401d175c", - "g": "646bdfb9988a1708", + "g": "9328043d4e9512a9", "name": "badplate", "mode": "link", "links": [ "0df085dfc5184645" ], - "x": 1415, + "x": 1435, "y": 1220, "wires": [] }, @@ -4377,7 +4379,7 @@ "c35fe5fece5375d0" ], "x": 1215, - "y": 1100, + "y": 1120, "wires": [] }, { @@ -4396,7 +4398,7 @@ "className": "", "topic": "", "name": "edit plate", - "x": 1320, + "x": 1340, "y": 1220, "wires": [ [ @@ -4415,7 +4417,7 @@ "8356acc61776cae7" ], "x": 1045, - "y": 1340, + "y": 1380, "wires": [] }, { @@ -4442,7 +4444,7 @@ "z": "953e8740401d175c", "g": "9328043d4e9512a9", "name": "estable", - "func": "//****************************************Chequeo de Peso Estable ********************************************\n// El peso estable es el peso leido en cualquier de los siguientes momentos:\n// 1. Al Recibir un QR o RFID\n// 2. Cuando el Detector de presencia en el Totem es ON (distance_flag_SET)\n// 3. Cuando se activa el Boton de Validacion (salida_valida_flag true)\n// 4. Cuando el usuario envia la seleccion del menu en caso de que este habilitado (menu_seleccionado_flag)\n// 5. Cuando el usuario acepta el editor de matricula\n\nif (((flow.get(\"distance_flag_SET\") || flow.get(\"QR_ok_flag\") || flow.get(\"RFID_ok_flag\") || flow.get(\"salida_valida_flag\") || flow.get(\"vehiculo_en_posicion\")) || flow.get(\"editor_matricula_ok\")) && !flow.get(\"peso_bajo_flag\") && !flow.get(\"peso_estable_flag\") && flow.get(\"totem_master\") && !flow.get(\"supervisor\") ) {//aseguramos se hace una sola vez durante la pesada\n flow.set(\"peso_estable\", flow.get(\"peso\"))\n //node.warn(\"peso = \" + flow.get(\"peso_estable\") + \" pma = \" + flow.get(\"pma\") + \"pma - peso = \" + (flow.get(\"pma\") - flow.get(\"peso_estable\")))\n // chequeamos si el peso del vehiculo es inferior al Peso Maximo Autorizado (PMA)\n if (!flow.get(\"peso_estable_flag\")) { // solo emitimos audio y mensaje una sola vez durante la misma pesada\n flow.set(\"peso_estable_flag\", true)\n node.send([{ payload: \"peso_estable\" }, null]) // activa audio de peso estable\n flow.set(\"window_men_m1\", flow.get(\"men_peso_estable\")); //se envia mensaje de Peso estable en pantalla\n }\n if ((flow.get(\"pma\") > 0 && (flow.get(\"pma\") - flow.get(\"peso_estable\")) >= 0)) {\n // tenemos que sacar aviso respecto al peso maximo y detener el proceso\n //node.warn(\"sacamos aviso\" + \" aviso_pma_hecho = \" + flow.get(\"aviso_pma_hecho\"))\n if (!flow.get(\"aviso_pma_hecho\")) {\n node.send([null, null, { payload: \"
PESO EXCEDIDO
SALGA DE LA BASCULA
\" }])\n flow.set(\"aviso_pma_hecho\", true) // hacemos el aviso una sola vez en la pesada\n }\n }\n else{\n \n }\n \n}\nelse if (flow.get(\"supervisor\") && flow.get(\"peso_estable_flag\") && flow.get(\"peso_estable_audio_flag\")){\n flow.set(\"window_men_m1\", flow.get(\"men_peso_estable\")); //se envia mensaje de Peso estable en pantalla\n flow.set(\"peso_estable_audio_flag\", false)\n node.send([{ payload: \"peso_estable\" }, null]) // activa audio de peso estable\n}\n //*************************************************************************************************************\n\nreturn ([null, msg]);", + "func": "//****************************************Chequeo de Peso Estable ********************************************\n// El peso estable es el peso leido en cualquier de los siguientes momentos:\n// 1. Al Recibir un QR o RFID\n// 2. Cuando el Detector de presencia en el Totem es ON (distance_flag_SET)\n// 3. Cuando se activa el Boton de Validacion (salida_valida_flag true)\n// 4. Cuando el usuario envia la seleccion del menu en caso de que este habilitado (menu_seleccionado_flag)\n// 5. Cuando el usuario acepta el editor de matricula\n\nif (((flow.get(\"distance_flag_SET\") || flow.get(\"QR_ok_flag\") || flow.get(\"RFID_ok_flag\") || flow.get(\"salida_valida_flag\") || flow.get(\"vehiculo_en_posicion\")) || flow.get(\"editor_matricula_ok\")) && !flow.get(\"peso_bajo_flag\") && !flow.get(\"peso_estable_flag\") && flow.get(\"totem_master\") && !flow.get(\"supervisor\") ) {//aseguramos se hace una sola vez durante la pesada\n flow.set(\"peso_estable\", flow.get(\"peso\"))\n //node.warn(\"peso = \" + flow.get(\"peso_estable\") + \" pma = \" + flow.get(\"pma\") + \"pma - peso = \" + (flow.get(\"pma\") - flow.get(\"peso_estable\")))\n // chequeamos si el peso del vehiculo es inferior al Peso Maximo Autorizado (PMA)\n if ((flow.get(\"pma\") > 0 && (flow.get(\"pma\") - flow.get(\"peso_estable\")) < 0)) {\n \n if (!flow.get(\"aviso_pma_hecho\")) {\n node.send([null, null, { payload: \"PESO EXCEDIDO
SALGA DE LA BASCULA
\" }])\n flow.set(\"aviso_pma_hecho\", true) // hacemos el aviso una sola vez en la pesada\n }\n }\n else {\n if (!flow.get(\"peso_estable_flag\")) { // solo emitimos audio y mensaje una sola vez durante la misma pesada\n flow.set(\"peso_estable_flag\", true)\n node.send([{ payload: \"peso_estable\" }, null]) // activa audio de peso estable\n flow.set(\"window_men_m1\", flow.get(\"men_peso_estable\")); //se envia mensaje de Peso estable en pantalla\n }\n\n }\n\n \n}\nelse if (flow.get(\"supervisor\") && flow.get(\"peso_estable_flag\") && flow.get(\"peso_estable_audio_flag\")){\n flow.set(\"window_men_m1\", flow.get(\"men_peso_estable\")); //se envia mensaje de Peso estable en pantalla\n flow.set(\"peso_estable_audio_flag\", false)\n node.send([{ payload: \"peso_estable\" }, null]) // activa audio de peso estable\n}\n //*************************************************************************************************************\n\nreturn ([null, msg]);", "outputs": 3, "timeout": 0, "noerr": 0, @@ -4498,7 +4500,7 @@ "finalize": "", "libs": [], "x": 1090, - "y": 1280, + "y": 1320, "wires": [ [ "944c9f4b068e0946" @@ -4538,7 +4540,7 @@ "links": [ "0df0c819dae1658d" ], - "x": 1245, + "x": 1265, "y": 1260, "wires": [] }, @@ -4566,7 +4568,7 @@ "links": [ "656a6ccd2e2d8874" ], - "x": 2045, + "x": 2085, "y": 1080, "wires": [] }, @@ -4613,7 +4615,7 @@ "6fca6204952f0b67", "cf7b0c00631682b2" ], - "x": 2035, + "x": 2065, "y": 1260, "wires": [ [ @@ -6161,15 +6163,15 @@ "statusVal": "", "statusType": "auto", "x": 2160, - "y": 1360, + "y": 1340, "wires": [] }, { "id": "53335688d117ec96", "type": "comment", "z": "953e8740401d175c", - "name": "Version 1.11 de bascula autonoma", - "info": "**Version 1.11**Se puso una condicion (peso en bascula > pmin) en el nodo \"enviar matricula\" para enviar matricula al nodo de analisis. Esto evita que se este\nenviando matricula si se recibe sin que haya vehiculo en bascula. Esto no evita que se reciban matriculas automaticas antes de entrar el vehiculo en la bascula.\nEstas ultimas fotos se conservan en memoria hasta que el vehiculo entre en la bascula y pueden ser utilizadas como foto principal en caso de fallo en la solicitud.\nHemos eliminado en la linea 156 del nodo matricula2 la condicion de \"qr_revisado\" para eximirlo de disponer de matricula debido a que ahora el codigo qr puede estar asociado a varias matriculas.\ny por lo tanto sera necesario disponer de una matricula a pesar de tener el codigo de autorizacio (solo indica residuo).\nHemos inicializado la matricula [flow.set(\"matricula\", \"Sin Matricula\")] tambien en el momento en que el peso supera a pmin por primera vez (es decir entrando en la bascula).\nSe agrego en la salida de la edicion de matricula [flow.set(\"matriculacheck_solicitada\", false)] para permitir que se busque nuevamente la matricula en BD.\n\n**Version 1.1** Hemos agregado excepcion de obligacion de tener que disponer de matricula para el caso de presentar una tarjeta RFID. Anteriormente se habia puesto en el nodo de \"Analisis\ndel modo de operacion\" (*let matricula_obligatoria = flow.get(\"matricula_obligatoria\") || true // siempre es obligatoria*) una linea para obligar a tener siempre matricula,\nindependiente de lo que este configurado en el archivo de configuracion. Ahora esa linea sigue funcionando pero en el caso de la tarjeta se permite que no haya matricula ya que esta identificacion \ncontiene la matricula unica. Ver linea 53 en el nodo mencionado anteriormente. No es el caso de los QR los cuales puede haber el mismo GUUID asociados a diferentes matriculas.\n\nSe han agregado nos nuevos campos a la tabla movimierntos_cerrados en el supervisor estos campos son \"qr_salida\" y \"rfid_salida\". La presencia de estos \ndos campos es para disponer de la identificaciob utilizada en salida en caso de hacerlo. Para ello en el nodo \"Analisis del modo de Operacion\" se evalua \nsi estamos en el movimiento inicial o final para ver cual campo es el que tenemos que rellenar. Est se hace el la linea nº 100\nSe ha moviso la inicializacion flow.set(\"distance_flag_SET\", false) al momento donde la bascula pasa de peso < pmin por primera vez. \nAntes se inicializaba cada vez que el peso que llegaba era menor que pmin. Esto podia ocasionar un error ya que el nodo detector perdia el control\nde este flag al ser inicializado cada vez que el peso < pmin.\n\nEl nodo \"matricula 2\" sustituye al nodo matricula anterior. Este nuevo contiene todas las modificaciones necesarias para adaptarse a los \nnuevos requerimientos de la bascula automatica\n\nPara que el QR pueda entrar en la planta es necesario que la matricula este disponible.\nEn caso de que la matricula leida sea diferente a la matricula obtenida en la BD luego de enviar el QR se toma la matricula leida de la BD\n\n**version 1.0.** Este codigo de Bascula Autonoma sale a partir del Totem Autonomo. Todo el codigo relativo a la gestion de BAse de Datos se traslada al RPI Supervisor\nEn este RPi solo queda lo relativo a la gestion de sensores, camaras, lectores de Identioficacion, semaforo, barrera y la pantalla para que el usuario \npueda interactuar con el sistema como por ejemplo hacer seleccion del residuo a traves de un menu de seleccion.\n\nEn esta version se ha introducido el termino PMA(Peso Maximo Autorizado. Este es un valor que el Totem recibe cuando el Supervisor le envia la autorizacion\nde la matricula junto con la tara- El Totem revisa el peso estable del vehiculo con el PMA recibidoy en caso de ser superior se envia un aviso en la pantalla\nindicandole al conductor que debe retroceder ya que supera el peso admitido.\n\nOtra función que contiene esta version es el chequeo de la Tara. Si el valor recibido de la Tara es superior a cero entonces el movimiento inicial recinbido por el supervisor \nes enviado como movimiento cerrado al Servidor.Realmente para el Totem es transparente. La gestion de la Tara en efecto la hace el Supervisor una vez que recibe\nel movimiento inicial que envia el Totem.", + "name": "Version 1.12 de bascula autonoma", + "info": "**Version 1.12** Se corrigio el nodo peso estable para procesar correctamente el valor de Peso Maximo Admitido y sacar un mensaje que no se pueda borrar\nhasta que el vehiculo abandone la bascula. Se agrego un nodo para mantener el aviso de salir de la bascula en caso de PMA, si el usuario pulsa OK.\n\n**Version 1.11**Se puso una condicion (peso en bascula > pmin) en el nodo \"enviar matricula\" para enviar matricula al nodo de analisis. Esto evita que se este\nenviando matricula si se recibe sin que haya vehiculo en bascula. Esto no evita que se reciban matriculas automaticas antes de entrar el vehiculo en la bascula.\nEstas ultimas fotos se conservan en memoria hasta que el vehiculo entre en la bascula y pueden ser utilizadas como foto principal en caso de fallo en la solicitud.\nHemos eliminado en la linea 156 del nodo matricula2 la condicion de \"qr_revisado\" para eximirlo de disponer de matricula debido a que ahora el codigo qr puede estar asociado a varias matriculas.\ny por lo tanto sera necesario disponer de una matricula a pesar de tener el codigo de autorizacio (solo indica residuo).\nHemos inicializado la matricula [flow.set(\"matricula\", \"Sin Matricula\")] tambien en el momento en que el peso supera a pmin por primera vez (es decir entrando en la bascula).\nSe agrego en la salida de la edicion de matricula [flow.set(\"matriculacheck_solicitada\", false)] para permitir que se busque nuevamente la matricula en BD.\n\n**Version 1.1** Hemos agregado excepcion de obligacion de tener que disponer de matricula para el caso de presentar una tarjeta RFID. Anteriormente se habia puesto en el nodo de \"Analisis\ndel modo de operacion\" (*let matricula_obligatoria = flow.get(\"matricula_obligatoria\") || true // siempre es obligatoria*) una linea para obligar a tener siempre matricula,\nindependiente de lo que este configurado en el archivo de configuracion. Ahora esa linea sigue funcionando pero en el caso de la tarjeta se permite que no haya matricula ya que esta identificacion \ncontiene la matricula unica. Ver linea 53 en el nodo mencionado anteriormente. No es el caso de los QR los cuales puede haber el mismo GUUID asociados a diferentes matriculas.\n\nSe han agregado nos nuevos campos a la tabla movimierntos_cerrados en el supervisor estos campos son \"qr_salida\" y \"rfid_salida\". La presencia de estos \ndos campos es para disponer de la identificaciob utilizada en salida en caso de hacerlo. Para ello en el nodo \"Analisis del modo de Operacion\" se evalua \nsi estamos en el movimiento inicial o final para ver cual campo es el que tenemos que rellenar. Est se hace el la linea nº 100\nSe ha moviso la inicializacion flow.set(\"distance_flag_SET\", false) al momento donde la bascula pasa de peso < pmin por primera vez. \nAntes se inicializaba cada vez que el peso que llegaba era menor que pmin. Esto podia ocasionar un error ya que el nodo detector perdia el control\nde este flag al ser inicializado cada vez que el peso < pmin.\n\nEl nodo \"matricula 2\" sustituye al nodo matricula anterior. Este nuevo contiene todas las modificaciones necesarias para adaptarse a los \nnuevos requerimientos de la bascula automatica\n\nPara que el QR pueda entrar en la planta es necesario que la matricula este disponible.\nEn caso de que la matricula leida sea diferente a la matricula obtenida en la BD luego de enviar el QR se toma la matricula leida de la BD\n\n**version 1.0.** Este codigo de Bascula Autonoma sale a partir del Totem Autonomo. Todo el codigo relativo a la gestion de BAse de Datos se traslada al RPI Supervisor\nEn este RPi solo queda lo relativo a la gestion de sensores, camaras, lectores de Identioficacion, semaforo, barrera y la pantalla para que el usuario \npueda interactuar con el sistema como por ejemplo hacer seleccion del residuo a traves de un menu de seleccion.\n\nEn esta version se ha introducido el termino PMA(Peso Maximo Autorizado. Este es un valor que el Totem recibe cuando el Supervisor le envia la autorizacion\nde la matricula junto con la tara- El Totem revisa el peso estable del vehiculo con el PMA recibidoy en caso de ser superior se envia un aviso en la pantalla\nindicandole al conductor que debe retroceder ya que supera el peso admitido.\n\nOtra función que contiene esta version es el chequeo de la Tara. Si el valor recibido de la Tara es superior a cero entonces el movimiento inicial recinbido por el supervisor \nes enviado como movimiento cerrado al Servidor.Realmente para el Totem es transparente. La gestion de la Tara en efecto la hace el Supervisor una vez que recibe\nel movimiento inicial que envia el Totem.", "x": 1300, "y": 800, "wires": [] @@ -6193,7 +6195,9 @@ "x": 1310, "y": 1160, "wires": [ - [] + [ + "9d8e071a6d3642c0" + ] ] }, { @@ -6210,8 +6214,8 @@ "targetType": "full", "statusVal": "", "statusType": "auto", - "x": 1300, - "y": 1120, + "x": 1240, + "y": 1080, "wires": [] }, { @@ -6224,7 +6228,7 @@ "links": [ "0df0c819dae1658d" ], - "x": 1775, + "x": 1855, "y": 1160, "wires": [] }, @@ -6605,7 +6609,7 @@ "finalize": "", "libs": [], "x": 1090, - "y": 1200, + "y": 1240, "wires": [ [ "185e340354acf892" @@ -6718,8 +6722,8 @@ "targetType": "full", "statusVal": "", "statusType": "auto", - "x": 1340, - "y": 1260, + "x": 1360, + "y": 1300, "wires": [] }, { @@ -6733,7 +6737,7 @@ "e0b4dd6107f95f28" ], "x": 1205, - "y": 1180, + "y": 1200, "wires": [] }, { @@ -6745,5 +6749,26 @@ "x": 3870, "y": 1960, "wires": [] + }, + { + "id": "9d8e071a6d3642c0", + "type": "function", + "z": "953e8740401d175c", + "g": "9328043d4e9512a9", + "name": "rewrite", + "func": "if (msg.payload == \"OK\"){\n node.send({ payload: \"PESO EXCEDIDO
SALGA DE LA BASCULA
\" })\n}\nreturn ;", + "outputs": 1, + "timeout": 0, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 1450, + "y": 1160, + "wires": [ + [ + "f5343bf87806ece4" + ] + ] } ] \ No newline at end of file