Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Development
  3. pH mètre connected to domoticz

pH mètre connected to domoticz

Scheduled Pinned Locked Moved Development
6 Posts 3 Posters 791 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    Diazovitch69
    wrote on last edited by
    #1

    Hi,

    I précise that I’m noob in programmation. That’s the raison why I post here. I need help from professional.

    I find this link on the web : https://bestengineeringprojects.com/arduino-ph-meter-using-ph-sensor/?fbclid=IwAR2c-q-eo6_WixzqXvJ7Jquw_AwNhnWwyWAUiZBnr_mNQhV5_bewe9Wg4DI

    I would like to have ph value on my domoticz.

    Do you think I can adapt this code with mysensors ?

    
    //Header declearation Start
    #include <LiquidCrystal_I2C.h> //Library for I2C lcd
    #include <OneWire.h> //One wire library
    #include <DallasTemperature.h> //Library for DS18B20 Sensor
    #include <math.h>// Library for math function 
    //Header Declearation End
    
    //Pin Assignment and declearation Start
    #define ONE_WIRE_BUS 5 //data pin  DQ pin of DS18B20 connected to digital pin D5
    LiquidCrystal_I2C lcd(0x27,20,4);  //set the LCD address to 0x27 for a 20 chars and 4 line display
    const int analogPhPin = A0; //PH module pin P0 connected to analog pin A0
    const int analogTemPin = A2; //PH module pin T1 connected to analog pin A1
    
    OneWire oneWire(ONE_WIRE_BUS); //Ste up one wire instance
    DallasTemperature sensors(&oneWire); //pass one wire reference to DS18B20 library
    
    long phTot, temTot;
    float phAvg, temAvg;
    int x;
    const float C = 21.34; //Constant of straight line (Y = mx + C)
    const float m = -5.70; // Slope of straight line (Y = mx + C)
    //Pin Assignment and declearation end
    
    // start for generate custom character
    byte customChar[] = {
      B00100,
      B00100,
      B11111,
      B00100,
      B00100,
      B00000,
      B11111,
      B00000
    };
    //End for generate custom character
    
    //Setup Function Start 
    void setup() {
      lcd.init(); //initialization the lcd
      lcd.backlight(); 
      sensors.begin(); //Start the DS18B20 Library
      lcd.setCursor(0,0);
      lcd.print("PH and Temperature");
      lcd.setCursor(0,1);
      lcd.print("Meter Using");
      lcd.setCursor(0, 2);
      lcd.print("Arduino");
      delay(3000);
      lcd.clear();
    }
    //Setup Function End
    
    //Main function Start
    void loop() {
      phTot = 0;
      temTot = 0;
      phAvg = 0;
      temAvg = 0;
    
      //taking 10 sample and adding with 10 milli second delay
      for(x=0; x<10 ; x++)
        {
            phTot += analogRead(A0);
            temTot += analogRead(A1);
            delay(10);
        }
        float temAvg = temTot/10;
        float phAvg = temTot/10;
        float temVoltage = temAvg * (5000.0 / 1023.0); //convert sensor reading into milli volt
        float phVoltage =  phAvg * (5.0 / 1023.0); //convert sensor reading into milli volt
    
        sensors.requestTemperatures(); // Send the command to get temperatures
        float Etemp = temVoltage*0.1; //convert milli volt to temperature degree Celsius
        float pHValue = phVoltage*m+C;
        float Wtemp = sensors.getTempCByIndex(0);
        float TempDif = fabs(Etemp-Wtemp); //calculating the absolute value of floating
       // lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("Env.Tmp.");
        lcd.setCursor(12,0);
        lcd.print("Sol.Tmp.");
        lcd.setCursor(1,1);
        lcd.print(Etemp);
        lcd.setCursor(6,1);
        lcd.write(B11011111);
        lcd.setCursor(7,1);
        lcd.print("C");
        lcd.setCursor(13,1);
        lcd.print(Wtemp);
        lcd.setCursor(18,1);
        lcd.write(B11011111);
        lcd.setCursor(19,1);
        lcd.print("C");
        lcd.setCursor(0,2);
        lcd.print("PH Value of Solution");
        lcd.setCursor(3,3);
        lcd.print(pHValue);
        lcd.setCursor(9,3);
        lcd.print("PH");
        if (TempDif<= 5)
        {
          lcd.setCursor(11,3);
          lcd.write(customChar);
          lcd.setCursor(14,3);
          lcd.print("0.1PH");
          }
    
        if (TempDif> 5)
        {
          lcd.setCursor(11,3);
          lcd.write(customChar);
          lcd.setCursor(14,3);
          lcd.print("0.2PH");
          }
          delay(1000);
    }
    
    

    I have a gateway mysensors on my pi3b+.

    Thank you.

    1 Reply Last reply
    0
    • nagelcN Offline
      nagelcN Offline
      nagelc
      wrote on last edited by
      #2

      This should be fairly straight forward as long as you just want to send the values to Domoticz and don't need the LC display. MySensors supports a water quality sensor that includes temperature and pH variables.
      You would present S_WATER_QUALITY and send the temperature values as V_TEMP messages and the pH values as V_PH messages.
      See table here: https://www.mysensors.org/download/serial_api_20#variable-types

      I checked the Domoticz release notes and it says this type of meter is included for MySensors. But, I have not tried it.

      1 Reply Last reply
      0
      • D Offline
        D Offline
        Diazovitch69
        wrote on last edited by
        #3

        I'm happy to read you that you think that is possible.
        But i'm a noob and I don't understand what you write.
        Does exist a program I can adapt ? Where can I find it ?
        I need some help please. Thank you.

        skywatchS 1 Reply Last reply
        0
        • nagelcN Offline
          nagelcN Offline
          nagelc
          wrote on last edited by
          #4

          There is an example in the MySensors examples.

          https://github.com/mysensors/MySensors/tree/master/examples/PHSensor

          D 1 Reply Last reply
          0
          • D Diazovitch69

            I'm happy to read you that you think that is possible.
            But i'm a noob and I don't understand what you write.
            Does exist a program I can adapt ? Where can I find it ?
            I need some help please. Thank you.

            skywatchS Offline
            skywatchS Offline
            skywatch
            wrote on last edited by
            #5

            @Diazovitch69 Converting to mysensors is not difficult for this one reading you want to use - but whether or not domoticz will be happy I don't know as I don't use it.

            Best to go to the 'build' page (see top of this page) and look at the door/window sensor. This is fairly basic and should give you a clue to start experimenting with.

            First add my sensors to the code, then a message construct, then presentation function and then send message in code. Sounds worse that it is. Try it and post your code if it doesn't work.....

            1 Reply Last reply
            0
            • nagelcN nagelc

              There is an example in the MySensors examples.

              https://github.com/mysensors/MySensors/tree/master/examples/PHSensor

              D Offline
              D Offline
              Diazovitch69
              wrote on last edited by
              #6

              @nagelc Thank you for your example.
              I think that i have to customize void setup() ?

              1 Reply Last reply
              0

              Hello! It looks like you're interested in this conversation, but you don't have an account yet.

              Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

              With your input, this post could be even better 💗

              Register Login
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              13

              Online

              11.9k

              Users

              11.2k

              Topics

              113.4k

              Posts


              Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • MySensors
              • OpenHardware.io
              • Categories
              • Recent
              • Tags
              • Popular