Jump to content

Muttley

Members
  • Posts

    146
  • Joined

  • Last visited

  • Days Won

    1

Muttley last won the day on March 7

Muttley had the most liked content!

Profile Information

  • Location
    Jozi

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Muttley's Achievements

  1. Hey, You sound like the devs at work Update done, testing concluded and can confirm that the dashboard is rendering correctly on Firefox Version 123.0 (64-bit). Please close this ticket
  2. Thanks for the input - been trying to work this out for ages!
  3. Hey @slipx Was just wondering if you would know what would cause the random data losses that I'm having on some days and if there's anything that I should be doing differently: (On those days, I distinctly recall that there was data and everything looked good, only to wake up the next morning to see that the days data is gone).
  4. Thanks for your input - only charge up with grid if we absolutely have to but it's not often!
  5. Found it cheaper for you from DIY Electronics
  6. Hi all, Thought I'd share my journey in creating an accurate water level measuring system for my Jojo tanks. I've finally managed to find a solution which is about 99.6% accurate. This equates to a water height difference of +-5mm between the actual height in the tank vs what the probe is reading. I'd call this a success Some of the other ESP32 + sensor solutions which I've tried and given up on: Waterproof ultrasonic sensor - difficult to implement as the minimum distance between the sensor and the water level is +-20CM if I recall correctly. This meant that I would need to 3D print a cone to raise the ultrasonic sensor and cut a large hole in the Jojo Tank. Plus the issues of condensation on the sensor. Analog water pressure sensor - this was attached to the bottom of the outlet of the tank. The readings were all over the place and I'd see random drops for no apparent reason so I gave up on this. Throw in pressure sensor + ADS1115 A/D Module + voltage regulation - this was probably the longest standing solution that I had in place. The results were very erratic and I'd see random fluctuations for no apparent reason. Landed up having to re-calibrate multiple times - definitely something was wrong. After advice from others on the Home Assistant Forum, I tried a solution which was suggested by others and it's been spot on and much easier to implment! Hardware: ESP32 24V Power Supply DC - DC Voltage Regulator DF Robot Throw in submersible pressure sensor INA219 Current Sensor USB Power Supply Misc conduit and enclosure 2 Measurements were taken to calibrate: 1: when the sensor was not inside the tank 2: when the sensor was in the tank and the tank was full (manual float switch had stopped filling). As seen in the code below: float full_voltage = 0.00092; // Voltage at full condition float empty_voltage = 0.00042; // Voltage at empty condition & float max_full_reading = 9.2; // Adjust the maximum reading at full water level float min_empty_reading = 4.2; // Adjust the minimum reading at empty water level As there are 2 tanks and only 1 sensor, the total volume is multiplied by 2. Both tank levels equalize when they're full and are thus same. YAML: captive_portal: i2c: sda: 21 scl: 22 sensor: - platform: ina219 address: 0x40 shunt_resistance: 0.1 ohm current: name: "INA219 Current" id: ina_current accuracy_decimals: 5 filters: - multiply: 1000 #convert from Amps to mA unit_of_measurement: "mA" power: name: "INA219 Power" accuracy_decimals: 5 bus_voltage: name: "INA219 Bus Voltage" accuracy_decimals: 2 shunt_voltage: name: "INA219 Shunt Voltage" id: ina219_shunt_voltage accuracy_decimals: 5 max_voltage: 32.0V max_current: 400mA update_interval: 10s - platform: template name: "Water Level" id: water_level unit_of_measurement: 'm' accuracy_decimals: 3 update_interval: 60s lambda: |- float shunt_voltage = id(ina219_shunt_voltage).state; float full_voltage = 0.00092; // Voltage at full condition float empty_voltage = 0.00042; // Voltage at empty condition float max_height = 1.570; // Adjust the max height as needed // Calculate water level based on calibration float slope = (max_height - 0.0) / (full_voltage - empty_voltage); float intercept = max_height - slope * full_voltage; float water_level = slope * shunt_voltage + intercept; // Ensure water level is within bounds water_level = water_level < 0.0 ? 0.0 : water_level; water_level = water_level > max_height ? max_height : water_level; ESP_LOGD("custom", "Shunt Voltage: %.5f V", id(ina219_shunt_voltage).state); ESP_LOGD("custom", "Water Level: %.5f m", water_level); return water_level; - platform: template name: "Current Full Percentage" id: current_full_percentage unit_of_measurement: '%' accuracy_decimals: 1 update_interval: 60s lambda: |- float max_full_reading = 9.2; // Adjust the maximum reading at full water level float min_empty_reading = 4.2; // Adjust the minimum reading at empty water level float current_reading = id(ina_current).state; if (current_reading <= min_empty_reading) { return 0.0; } else if (current_reading >= max_full_reading) { return 100.0; } else { float current_full_percentage = 100 * (current_reading - min_empty_reading) / (max_full_reading - min_empty_reading); return current_full_percentage; } - platform: template name: "Tank Volume" id: tank_volume unit_of_measurement: "litres" lambda: |- float tank_radius = 0.71; // Adjust the tank radius as needed float max_height = 1.57; // Adjust the max height as needed float total_volume_single_tank = 3.14159265 * tank_radius * tank_radius * max_height * 1000; float percentage_full = id(current_full_percentage).state; float water_level = max_height * (percentage_full / 100.0); float current_volume_single_tank = 3.14159265 * tank_radius * tank_radius * water_level * 1000; float total_volume_both_tanks = 2 * current_volume_single_tank; return total_volume_both_tanks; We had a water outage today so I had an opportunity to test the sensor value (height) vs the actual height with a tape measure and I was off by 5mm, so I'll take this as a success. Hope this is useful to you guys - shout if I can answer any questions
  7. Awesome stuff, thanks for the lesson! It's a Sunsynk 8kW Sunsynk (apologies for not including this initially). Will have a look at the LiBMS screen later when we start drawing from the battery. My mate who also has an 8kW Sunsynk and 2 x Greenrich UP5000's (same spec as my batteries), connected in parallel has the charge rate currently set to 80A. In theory, if he'd like, can up this to 120A (80 x 1.5) to charge up his batteries as quickly as possible?
  8. Thanks so much for the feedback. Please see pics below. Master battery is connected to inverter via CAN.
  9. Hi guys, Wondering if anyone can assist me in determining what the best/optimal charge rate for both the Greenrich WM5000 or UP5000. I tried calling Ellyhill Power and I spoke to a technician who was rude and beyond useless (kept giving me different numbers). Some spec sheets I've seen state that the max charge rate is 80A and the technician told me 50A - please see attached. Currently I'm charging my WM5000's at 165A - is this too much? Discharging at 185A - also is this too much? Any input would be greatly appreciated wm5000-greenrich-4.96-wall-mount(1).pdf
  10. You're a flipping genius, thank you! Renders perfectly in Chrome but not in Firefox (hate Chrome but that's a discussion for another day)
  11. Thanks for the feedback - page view is configured to use the Horizontal (layout-card) view type. After removing the card height, this is the result: All other settings are standard... haven't changed anything.
  12. Hey @slipx Finally updated my card after a few weeks and I've noticed that the alignment seems to be off: Could this be due to the card height which I've set to: card_height: 480px to match your other solar, battery and grid cards?
  13. Thanks - just to find the correct, wiring diagram now... 13 pages of this thread to go
×
×
  • Create New...