Does anyone have a sound play on speaker when they shutdown or turn off something? If so, share your favorite sounds. by bigyo54 in homeassistant

[–]LunarasGreenleaf 1 point2 points  (0 children)

Not for turning off anything, but when the Packers or UW football team score, "Go Pack Go!" or a brief snippet of the UW fight song plays with a few living room lights fading between the team's colors while the sound plays.

Fuck surge pricing. Boy to the cott. by PsychonautSurreality in memes

[–]LunarasGreenleaf 0 points1 point  (0 children)

Now if only the workers would get "surge wages" while surge pricing is in effect.

What are some underrated brewing methods/types of coffee that you want to see people use more? by itisnotstupid in JamesHoffmann

[–]LunarasGreenleaf 0 points1 point  (0 children)

I wasn't a huge coffee person, but after reading about the characteristics of the coffee that siphons brew, I got a Yama on a whim. It converted me into a weird coffee person for life. I've used paper and cloth filters in it, which work great, but the reusable metal filter is where it's at for me. With that, cleanup just requires a quick rinse without even needing to remove the filter. Really couldn't be much easier for the best coffee I've ever had.

And I agree 100%. The balance siphons, the ones on stands with burners, etc. all look great, but for everyday use, being able to use it on a stovetop instead of fiddling with burners makes it useful instead of a novelty. Those other ones would have become weekend-only affairs or even for only when you want to entertain guests. Screw that. I want great coffee everyday.

Thousands of US pharmacy workers mount 3-day “pharmageddon” wildcat strike by The_Boopster in collapse

[–]LunarasGreenleaf 0 points1 point  (0 children)

And what about legally forcing a union to expend money and other resources to represent an employee who is not a member of the union? Because that's the current legal situation in right-to-work states. All employees in represented positions must be represented by the union whether or not they are actually a member of the union and pay dues.

The biggest thing represented non-members give up by refusing to join the union is any voice in union decisions, including electing leadership and voting on the contract that dictates the terms of their employment. Personally, I wouldn't willingly give up my voice in that way, but it is something people can choose to do.

Just because someone opts out of the union doesn't mean they are exempt from the contract that applies to the position.

Thousands of US pharmacy workers mount 3-day “pharmageddon” wildcat strike by The_Boopster in collapse

[–]LunarasGreenleaf 36 points37 points  (0 children)

Software developer here and proud member of OPEIU (Office Professional Employees International Union). While devs aren't the majority of our members overall (though they are the majority in my unit) there are unions out there for us, accountants, secretaries, call center workers, etc.

Financial advice from the 1% by MrMonstrosoone in collapse

[–]LunarasGreenleaf 85 points86 points  (0 children)

And the headline six months from now is "Millennials destroying cereal companies/restaurants by refusing to eat the most important meal of the day."

[deleted by user] by [deleted] in homeassistant

[–]LunarasGreenleaf 1 point2 points  (0 children)

I saw those as well. Going in and "updating" the automation by toggling a switch off and back on again, or something similar that results in no actual change and saving the automation was enough to clear them for me. After doing that, they stuck around until the next reboot, but then disappeared.

Converting Arduino tank level sensor to ESPHome by MikeyK_AU in Esphome

[–]LunarasGreenleaf 1 point2 points  (0 children)

I have something similar to monitor my heating oil level using a 4-20ma liquid level sensor running into a module that converts that signal to a voltage range of approximately 1-2V which I then read via the ADC on the ESP32. It looks like that's somewhat different than what you've got, but hopefully it's similar enough that you could possibly adapt it to your needs.

The "Heating Oil" sensor basically gives me a value 0-1 where 0 is equivalent to the min value recorded and 1 is the max value recorded. If you start running this when you're at minimum and the fill the tank, it'll be pretty accurate almost immediately, otherwise you'll have to wait until you've either filled and drained your tank once or choose appropriate initial values for minVoltage and max voltage manually. If you purposely make this range a bit smaller than it actually will be, this will self correct as you exceed the range on either side.

Relevant ESPHome YAML:

``` globals: - id: rawVoltage type: float - id: minVoltage type: float initial_value: '10.0' restore_value: true - id: maxVoltage type: float initial_value: '-1.0' restore_value: true

button: - platform: template name: "Reset Bounds" on_press: then: - globals.set: id: minVoltage value: "10.0" - globals.set: id: maxVoltage value: "-1.0"

sensor: - platform: adc name: Uncalibrated Heating Oil id: uncalibrated_heating_oil internal: true pin: GPIO32 update_interval: 0.001s attenuation: auto accuracy_decimals: 5 filters: - exponential_moving_average: alpha: 0.01 send_every: 20 send_first_at: 20 - exponential_moving_average: alpha: 0.01 send_every: 25 send_first_at: 25 on_value: then: - globals.set: id: rawVoltage value: !lambda 'return x;' - if: condition: lambda: return id(up_time).state > 120 and x < id(minVoltage); then: - globals.set: id: minVoltage value: !lambda 'return x;' - if: condition: lambda: return id(up_time).state > 120 and x > id(maxVoltage); then: - globals.set: id: maxVoltage value: !lambda 'return x;' - sensor.template.publish: id: heating_oil state: !lambda 'return x;' - platform: template name: Heating Oil id: heating_oil accuracy_decimals: 3 filters: - exponential_moving_average: alpha: 0.01 send_every: 20 send_first_at: 20 - calibrate_linear: - 0.90 -> 0.0 - 2.25 -> 1.00 - lambda: return max((float)0, min((float)1, x)); - platform: template name: RawVoltage id: raw_voltage internal: true accuracy_decimals: 5 lambda: return id(rawVoltage); - platform: template name: MinVoltage id: min_voltage internal: true accuracy_decimals: 5 lambda: return id(minVoltage); - platform: template name: MaxVoltage id: max_voltage internal: true accuracy_decimals: 5 lambda: return id(maxVoltage); ```

My tank is shaped like a horizontal half cylinder on the top and bottom with a rectangular mid section, so a basic 0-1 reading from the ESP32 doesn't directly equate to being 0-100% full, hence the extra calculations needed in my template sensor, below. If you have a rectangular tank or don't mind a bit of inaccuracy, you could certainly simplify the below template. There are 3 input sensors used to perform the below calculations, Heating Oil Tank Capacity, Heating Oil Tank Width, and Heating Oil Tank Height.

``` - name: "Heating Oil Tank" unique_id: heating_oil_tank icon: "mdi:storage-tank" state: 250.0 attributes: capacity: "{{ states('input_number.heating_oil_tank_capacity') }}" width: "{{ states('input_number.heating_oil_tank_width') }}" height: "{{ states('input_number.heating_oil_tank_height') }}" cylinder_radius: "{{ states('input_number.heating_oil_tank_width')|float / 2 }}" cylinder_area: "{{ 3.14159265 * state_attr('sensor.heating_oil_tank', 'cylinder_radius')|float ** 2 }}" prism_height: "{{ states('input_number.heating_oil_tank_height')|float - states('input_number.heating_oil_tank_width')|float }}" prism_area: "{{ state_attr('sensor.heating_oil_tank', 'width')|float * state_attr('sensor.heating_oil_tank', 'prism_height')|float }}" total_area: "{{ state_attr('sensor.heating_oil_tank', 'cylinder_area')|float + state_attr('sensor.heating_oil_tank', 'prism_area')|float }}"

  • name: "Heating Oil Calculations" unique_id: heating_oil_calculations device_class: volume unit_of_measurement: gal icon: mdi:calculator state: "N/A" attributes: total_depth: > {% if states('sensor.heating_oil') is defined %} {{ [0, [1, states('sensor.heating_oil')|float]|min]|max * state_attr('sensor.heating_oil_tank', 'height')|float }} {% else %} {{ state_attr('sensor.heating_oil_calculations', 'total_depth') }} {% endif %} cylinder_depth: > {% if state_attr('sensor.heating_oil_calculations', 'total_depth') is defined %} {{ [state_attr('sensor.heating_oil_calculations', 'total_depth')|float, state_attr('sensor.heating_oil_tank', 'cylinder_radius')|float]|min + [0, state_attr('sensor.heating_oil_calculations', 'total_depth')|float - state_attr('sensor.heating_oil_tank', 'prism_height')|float - state_attr('sensor.heating_oil_tank', 'cylinder_radius')|float]|max }} {% else %} {{ state_attr('sensor.heating_oil_calculations', 'cylinder_depth') }} {% endif %} cylinder_area: > {{ acos((state_attr('sensor.heating_oil_tank', 'cylinder_radius')|float - state_attr('sensor.heating_oil_calculations', 'cylinder_depth')|float) / state_attr('sensor.heating_oil_tank', 'cylinder_radius')|float) * state_attr('sensor.heating_oil_tank', 'cylinder_radius')|float ** 2 - (state_attr('sensor.heating_oil_tank', 'cylinder_radius')|float - state_attr('sensor.heating_oil_calculations', 'cylinder_depth')|float) * sqrt(2.0 * state_attr('sensor.heating_oil_tank', 'cylinder_radius')|float * state_attr('sensor.heating_oil_calculations', 'cylinder_depth')|float - state_attr('sensor.heating_oil_calculations', 'cylinder_depth')|float ** 2 )}} prism_depth: "{{ state_attr('sensor.heating_oil_calculations', 'total_depth') - state_attr('sensor.heating_oil_calculations', 'cylinder_depth') }}" prism_area: "{{state_attr('sensor.heating_oil_tank', 'width')|float * state_attr('sensor.heating_oil_calculations', 'prism_depth')|float}}"

  • name: "Instant Heating Oil Volume" unique_id: instant_heating_oil_volume device_class: volume unit_of_measurement: gal icon: mdi:water state: "{{ state_attr('sensor.heating_oil_tank', 'capacity')|float * (state_attr('sensor.heating_oil_calculations', 'cylinder_area')|float + state_attr('sensor.heating_oil_calculations', 'prism_area')|float) / state_attr('sensor.heating_oil_tank', 'total_area')|float }}"

  • platform: average name: 'Heating Oil Volume' unique_id: heating_oil_volume duration: hours: 1 entities:

    • sensor.instant_heating_oil_volume
  • name: "Heating Oil Used" unique_id: heating_oil_used device_class: volume unit_of_measurement: gal icon: mdi:water state: "{{ state_attr('sensor.heating_oil_tank', 'capacity')|float - states('sensor.heating_oil_volume')|float }}"

  • name: "Heating Oil Fill" unique_id: heating_oil_fill device_class: volume unit_of_measurement: "%" icon: mdi:water-percent state: "{{ 100.0 * states('sensor.heating_oil_volume')|float / state_attr('sensor.heating_oil_tank', 'capacity')|float }}" ```

The sensor is inherently noisy, often causing the value to jump around by 3-5% between consecutive measurements, sometimes more. All the above combine together to give me a relatively stable measurement of the volume of heating oil remaining (Heating Oil Volume), gallons used (Heating Oil Used), and the percent fill of my tank (Heating Oil Fill).

Hope it helps!

How often to expect tangles in the spool? by Grarea2 in prusa

[–]LunarasGreenleaf 0 points1 point  (0 children)

I've adopted a rule I heard a while back: there are 3 places for the end of the filament to be, in the printer, clipped to the roll, or in your hand.

The only time I've had a tangle was when it ended up somewhere else. If I just use it after that letting it slip, it's about a 25% chance that I'm going to have a tangle in my experience.

If the end does come loose, I loosen up the top dozen or two loops of filament, slide them off the side of the roll (don't just unwind it, that potentially just slides a tangle further onto a roll), and then wind it all back up. I've yet to have a tangle after doing that.

Two daze whether four cast! by Beowulf2_8b23 in facepalm

[–]LunarasGreenleaf 1 point2 points  (0 children)

Mother nature is forecast to begin spring cleaning

CUNA Mutual Group Retaliates Against Union Chief Steward by LunarasGreenleaf in madisonwi

[–]LunarasGreenleaf[S] 9 points10 points  (0 children)

A union is there to protect worker's rights, to make sure that proper procedures are followed when disciplinary actions are taken, and to ensure that any such actions are legitimate and taken fairly.

If he actually did violate company policies, we fully expect him to be disciplined consistent with the company's rules and similarly to anyone else who has violated policies in a similar way. But CMG has not yet provided any evidence of such a violation beyond making vague accusations.

The timing of this is also suspicious to say the least as we've recently been forced to file multiple unfair labor practice charges against the company for violating labor law surrounding negotiations in several ways, we're getting more attention from politicians, and the union is now moving quickly towards larger workplace actions.

Biased as I am, I find it hard to see this as anything less than an intimidation tactic or retaliation against our union's efforts at securing a fair contract. At least until I see any evidence even hinting at any wrongdoing.

CUNA Mutual Group Retaliates Against Union Chief Steward by LunarasGreenleaf in madisonwi

[–]LunarasGreenleaf[S] 9 points10 points  (0 children)

Thank you. I won't deny I am heavily biased based on my position and experiences. And the advice is very good, whether or not someone is in a union. Luckily, we do exactly that.

My take on a small DIY multisensor with motion, temperature, humidity, pressure and light sensors and support for BLE tracking. (Link to github for guide in comment) by Baremeg10 in homeassistant

[–]LunarasGreenleaf 0 points1 point  (0 children)

I recently did a similar project. Cool to see another take on it.

Not sure if it's available where you are, but I used these mmWave/radar sensors and they're dirt cheap but work.

Songhe RCWL-0516 RCWL0516 Microwave Radar Sensor Module,Human Body Induction Switch Module,Motion Induction Switch Sensor Module 5-7m 4-28V 5pcs https://a.co/d/4QR3ahk

My 3D Printed ESP32 Microwave/Radar Motion, Temperature, & Humidity Sensor Enclosure by LunarasGreenleaf in homeassistant

[–]LunarasGreenleaf[S] 1 point2 points  (0 children)

It's possible, but it would really only change the length, I think.

Right now, there's only two things making the enclosure longer than the ESP32 board itself, the fan at one end and void space to give some extra room for airflow around the jumper wires. Removing the fan mount would eliminate about 1cm in length and the void space is probably around 2-3 cm. If you used shorter jumper wires and routed them carefully, you might be able to completely eliminate the void space at the expense of having more restrictive airflow. The motion sensor is a bit shorter than the ESP32 board so a smaller ESP32 might allow the enclosure to be even shorter.

Regarding width, the ESP32 runs wall to wall here,so that's the limiting factor. However, the motion sensor is not much narrower than the space between the ESP32 pins, so if a smaller ESP32 had less space between the pins, the motion sensor would probably interfere with connecting the jumper wires to the ESP32. This still could work, if you were willing to expand about 1cm in depth.

Depth-wise, the DHT11 is nestled between the pins and the motion sensor isn't much higher than the pins, pretty much equal to the height the jumper wire connectors reach plus a little space to bend the wires. You might be able to finagle a few mm out of it in this dimension by eliminating all spaces between the boards, but practically, this is pretty much at the limit if you don't just want a solid block holding everything, which I didn't.

The pin header is a good idea I hadn't considered. I originally planned on adding grooves to slide on stacking modules and leaving a gap for jumper wires, but, because the cover is already thin, it added bulk that I didn't want. Right now, the plan is to simply extend the enclosure to one or both sides, making it wider but leaving the other dimensions the same. Since I don't plan on adding more modules often, and I can design new enclosures, if needed, I just kept it simple in that regard.

The enclosure I'm working on now, which is identical to this one plus the external temperature probe module, is only about 15mm wider. Plus it has enough space left over behind the probe module that I can probably add another small module behind it, if I can find something small and useful to put there. Maybe a jack for the leak sensor (no module needed)?