• Skip to primary navigation
  • Skip to main content

Cursos Online para mentes inquietas

  • Cursos
  • Mi cuenta
    • Mi cuenta
    • Foros
    • Curso de AWL
    • Curso Express de TIA Portal
    • Curso de iniciación a la Industria 4.0.
    • Curso de comunicaciones IE y Profinet
    • Curso de WinCC Flexible 2008
    • Crear HMI con OPC y VB.NET
    • Crear HMI con Snap7 y VB.NET
    • Curso HMI con ViSnap7
    • Curso TIA Portal CPU 1200
    • Curso de Step 7 V5.x
  • Contacto
  •  

crear archivos

¡Uppsss! No estás logueado ¿eres usuario registrado?

Si eres usuario de la plataforma, HAZ CLIC AQUI PARA ACCEDER A TU CUENTA
Después, vuelve a acceder a la plataforma de cursos.

Home › Foros › Curso IOT e Industria 4.0 › Módulo 2. Raspberry e IOT2040 › crear archivos

  • Este debate tiene 10 respuestas, 3 mensajes y ha sido actualizado por última vez el hace 3 años, 1 mes por roberto.vicario.
Viendo 11 entradas - de la 1 a la 11 (de un total de 11)
  • Autor
    Entradas
  • 9 abril, 2019 a las 15:32 #7446
    roberto.vicario
    Participante

    Hola Íñigo:

    esto se está poniendo muy interesante.

    estoy haciendo un proyectito de registro de temperaturas transmitiéndolas por MQTT y registrándolas en un archivo. Estoy leyendo la temperatura con un NodeMCU y un sensor DS18B20. Funciona. Enviar por MQTT. Funciona. Registrar en un archivo de texto como un CSV para posteriores accesos: estadísticas… Funciona. Sacar una gráfica en un Dashboard. Funciona aunque me falta afinarlo.

    Ahora quiero que el archivo se trocee para evitar un archivo demasiado largo o para facilitar accesos posteriores. La idea es que cada mes se genere un archivo distinto, pero no he dado con la forma de lograrlo. Mi idea inicial era, obtener de un timestamp la fecha y hora (sacadas en JS, y hasta ahí funciona, porque forman parte de lo que escribo en el archivo) y colocarlas en el path, algo así;

    …/Desktop/año/mes  pero me genera un archivo con ese nombre  (…/año/mes)

    Por fin la pregunta; ¿cómo puedo pasar el valor de la variable, no el nombre de la variable? Todos los intentos han acabado en que doy una cadena de caracteres y sale esa cadena como nombre del archivo. Lo que yo quiero es que si es marzo ponga marzo y si es 2019 ponga 2019. No sé si me he explicado pero confío en que me has entendido.

    Un saludo y muchas gracias por todo

     

    Roberto

    9 abril, 2019 a las 22:03 #7452
    Iñigo Gútiez
    Superadministrador

    Hola Roberto,

    He creado un ejemplo que espero que te sirva. Lo he dejado en el Anexo.

    Creo que es lo que quieres hacer (más o menos).

    Además, le he añadido un pequeño truquillo que espero que te guste

    El enlace es: https://programacionsiemens.com/cursos/module-6/crear-csv-en-carpetas-de-forma-dinamica/

    Ya me dirás si te es útil.

    9 abril, 2019 a las 23:30 #7460
    roberto.vicario
    Participante

    Fantástico, Íñigo:

    de alguna forma intuía que iban por ahí los tiros. ya había sacado el mes el año y tal de la variable Date, pero era al pasarla al nombre del archivo donde me liaba. yo intentaba meterlo en el nodo File, pero ahí lo considera una cadena de caracteres, y en el nodo función, que es donde intuía que había que hacerlo, no veía cómo pasar el nombre del archivo al siguiente nodo.

    Por suerte siempre hay alguien que sabe algo más y lo cuenta, que es lo que más vale. Gracias y me pongo a arreglarlo.

    Un saludo

     

    Roberto

    10 abril, 2019 a las 7:25 #7462
    Iñigo Gútiez
    Superadministrador

    Genial. Me alegro 🙂

    10 abril, 2019 a las 14:17 #7467
    franciscod
    Participante

    Hola Roberto,

    podrias subir el código que has hecho para ese sensor y las conexiones? Gracias!

    10 abril, 2019 a las 18:54 #7468
    Iñigo Gútiez
    Superadministrador
    franciscod wrote:

    Hola Roberto, podrias subir el código que has hecho para ese sensor y las conexiones? Gracias!

    Vamos a ver ejemplo enseguida en arduino con mqtt y más cositas interesantes.

    Pero si lo comparte, genial vaya jaja

    • Esta respuesta fue modificada hace 3 años, 1 mes por Iñigo Gútiez.
    10 abril, 2019 a las 23:29 #7477
    roberto.vicario
    Participante

    Por supuesto.

    En realidad, no lo he hecho. Encontré por casualidad un ejemplo que casi clavaba lo que yo quería hacer. Sólo tuve que adaptar dos o tres cosas y ya lo tenía. La verdad es que me vino de lujo, porque lo de los reenganches a la Wifi y tal para mí son un poco jaleo…

    Está hecho para un ESP8266 desde el IDE de Arduino. Si ya conoces Arduino, sin más, adaptas el IDE con unas librerías y punto. Si no lo has visto, déjale a Íñigo que haga los primeros pases (que veo que ya tiene el horno a punto) y luego te lo metes sin anestesia.

    Déjame que lo organice un poco y mañana lo subo. Soy un poco desastre y no son horas de ponerse a buscar …

    Un saludo

    Roberto

    11 abril, 2019 a las 19:58 #7484
    roberto.vicario
    Participante

    Buenas tardes:

    lo prometido es deuda. Aquí va el código del sensor. Por ser fiel a la verdad, lo he sacado de uno de la web instructables.com, que hacía prácticamente lo que yo quería, leer temperatura y, a través de la wifi de casa, publicarla en un servidor de MQTT. En un principio lo conecté al servidor de test.mosquitto.org y después al de la raspberry. El finde pasado, me fui de casa y dejé al sensor leyendo la temperatura del salón y transmitiéndola al servidor de test.mosquitto.org mientras yo, en Burgos, recibía en el portátil los datos a través de mosquitto y node-red.

    En el código he cambiado (comentado) una función de reconexión al servidor MQTT porque me fallaba continuamente por otra función casi igual pero que no me falla. He comentado lo que publicaba esa función y listo. Las transmisiones las hace cada 10 segundos, pero se puede modificar al gusto.

     

    #include <ESP8266WiFi.h>

    #include <PubSubClient.h>

    #include <OneWire.h>

    #include <DallasTemperature.h>

    #define ONE_WIRE_BUS 5

    // Setup a oneWire instance to communicate with any OneWire devices
    // (not just Maxim/Dallas temperature ICs)
    OneWire oneWire(ONE_WIRE_BUS);

    DallasTemperature sensors(&oneWire);

    // Update these with values suitable for your network.
    const char* ssid = «TU RED WIFI»;
    const char* password = «TU CLAVE DE ACCESO»;
    const char* mqtt_server = «TU SERVIDOR MQTT»;

    WiFiClient espClient;
    PubSubClient client(espClient);
    long lastMsg = 0;
    float temp = 0;
    int inPin = 5;

    void setup_wifi() {
    delay(10);
    // We start by connecting to a WiFi network
    Serial.println();
    Serial.print(«Connecting to «);
    Serial.println(ssid);
    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED)
    {
    delay(500);
    Serial.print(«.»);
    }
    Serial.println(«»);
    Serial.println(«WiFi connected»);
    Serial.println(«IP address: «);
    Serial.println(WiFi.localIP());
    }

    /*void reconnect() {
    // Loop until we’re reconnected
    while (!client.connected()) {
    Serial.print(«Attempting MQTT connection…»);
    // Attempt to connect
    if (client.connect(«arduinoClient_temperature_sensor»)) {
    Serial.println(«connected»);
    } else {
    Serial.print(«failed, rc=»);
    Serial.print(client.state());
    Serial.println(» try again in 5 seconds»);
    // Wait 5 seconds before retrying
    delay(5000);
    }
    }
    }*/

    void reconnect() {
    // Loop until we’re reconnected
    while (!client.connected()) {
    Serial.print(«Attempting MQTT connection…»);
    // Create a random client ID
    String clientId = «ESP8266Client-«;
    clientId += String(random(0xffff), HEX);
    // Attempt to connect
    if (client.connect(clientId.c_str())) {
    Serial.println(«connected»);
    // Once connected, publish an announcement…
    // client.publish(«outTopic», «hello world»);
    // … and resubscribe
    // client.subscribe(«inTopic»);
    } else {
    Serial.print(«failed, rc=»);
    Serial.print(client.state());
    Serial.println(» try again in 5 seconds»);
    // Wait 5 seconds before retrying
    delay(5000);
    }
    }
    }

    void setup()
    {
    Serial.begin(115200);
    setup_wifi();
    client.setServer(mqtt_server, 1883);
    pinMode(inPin, INPUT);
    sensors.begin();
    }

    void loop()
    {
    if (!client.connected()) {
    reconnect();
    }
    client.loop();

    long now = millis();
    if (now – lastMsg > 10000) {
    lastMsg = now;
    sensors.setResolution(12);
    sensors.requestTemperatures(); // Send the command to get temperatures
    temp = sensors.getTempCByIndex(0);
    Serial.println(temp);
    if((temp > -30) && (temp <50))
    {
    client.publish(«TU TOPIC», String(temp).c_str());
    }
    }
    }

     

    E  E E Eso es todo amigos

    Roberto

    11 abril, 2019 a las 21:08 #7486
    roberto.vicario
    Participante

    Sobre el circuito, el sensor DS18b20 se alimenta a 5 V y tiene tres pines o hilos. Se puede alimentar desde la propia placa del NodeMCU, por los pines Vin y GND si estamos alimentando la placa desde la conexión USB. Entre alimentación y masa se pone una resistencias de 4k7 ohm. El tercero es la salida de datos y se conecta al pin de entrada de datos que hayas elegido. En mi caso es el 5 del ESP8266 que corresponde con el D1 de la placa de NodeMCU (con el CP2102). La verdad es que es un poco jaleo la configuración de los puertos, por la numeración GPIO, por la numeración del ESP o por la numeración de la placa.

    Si dejas la placa alimentada desde el USB no necesitas nada más.

    esta es la web de la que lo he sacado.

    https://www.instructables.com/id/Remote-Temperature-Monitoring-Using-MQTT-and-ESP82/

    y esta es una imagen del esquema con fritzing

     

    Saludos de nuevo

     

    Roberto

    11 abril, 2019 a las 22:23 #7488
    Iñigo Gútiez
    Superadministrador

    Bien bien… ¡¡esa es la idea!!

    ¿Mola o no mola la experiencia?

    12 abril, 2019 a las 1:45 #7498
    roberto.vicario
    Participante

    MOLA, MOLA.

    la verdad es que Arduino lo conocía desde hace bastante tiempo, y ya había hecho alguna cosita, discreta, eso sí. Pero desde hace un tiempo me venía picando la curiosidad el tema del IOT y las comunicaciones. Quería hacer cosas de este estilo, leer un dato, transmitirlo y presentarlo en un PC o en un archivo o en el móvil… si además puedes hacer el camino inverso ya tienes un control remoto de tu calefacción o de tu arduino para que te haga un café cuando llegues a casa.

    Vamos, la vida padre. Con qué poco me conformo…

  • Autor
    Entradas
Viendo 11 entradas - de la 1 a la 11 (de un total de 11)
  • Debes estar registrado para responder a este debate.
Acceder
  • Aviso Legal y Política de Privacidad
  • Condiciones de Venta
  • Política de cookies

Copyright © 2022 · Programación Siemens · Todos los derechos reservados

· ¿Quién soy? · Misión, Visión y valores

Utilizamos cookies propios y de terceros para mejorar nuestros servicios y tu experiencia de usuario. Si continuas navegando, consideramos que aceptas su uso. Aceptar Más información
Política de Cookies

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Siempre activado
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
GUARDAR Y ACEPTAR