[-] [email protected] 22 points 1 month ago

It would be a kinda fun league to watch, but I dont want to hear about athletes dying because they took obscene amounts of steroids to be the best.

[-] [email protected] 20 points 4 months ago

I have heard that its not too hard to start your own project when working at valve.

Maybe it will turn into their next game, or a new steam feature or it will get canned.

[-] [email protected] 21 points 4 months ago

The best thing is, if you sort low to high, after the 2nd or 3rd page it just completely breaks and starts showing items randomly.

[-] [email protected] 27 points 4 months ago

I already had adblock before the whole stupid adblock block. I support the creators I watch, can listen to videos with the screen off, and I also use YT Music, so its a good deal for me.

I can however understand anyone who doesnt want to pay for YT Premium and doesnt want to be blasted by scam ads. Ads shouldnt be this annoying.

[-] [email protected] 33 points 5 months ago

I think you forgot the part where capitalism makes peoples life worse and worse, while at the same time conservative media blames the left for it, even if they are the cause.

Because in the End people dont vote for fascists because its funny, but because they believe they can get them out of a shitty situation (Fascism doesnt do that obviously, but people get blinded by propaganda).

We wouldnt have this issue today if politicians werent all neoliberal and actually cared about poor people.

[-] [email protected] 16 points 5 months ago

Ich habe auch das Gefühl dass die Grünen auch versuchen Bürokratie abzubauen, bzw. nicht weiter aufzubauen, ohne die Kraft der Gesetze zu schwächen. Ein Beispiel ist die Förderung von Photovoltaikanlagen mit dem Wegfall der MWSt. oder dass selbstverbrauchter Strom nicht mehr versteuert werden muss.

[-] [email protected] 21 points 5 months ago

Dass Twitch Leute wahllos bannt, wenn Leute mit Kontakten zu Twitch nachfragen, ist leider nichts neues.

[-] [email protected] 15 points 8 months ago

Home assistant and its various alternatives

[-] [email protected] 30 points 8 months ago

Alcohol has never killed anyone, its the products our body creates when breaking it down that hurt us.

[-] [email protected] 84 points 8 months ago

Because everyone knows what KS and MO mean, especially on a european sub.

5
submitted 9 months ago by [email protected] to c/[email protected]

This is the automation that I use to control a Hoymiles HM-600 Solar Microinverter to achieve a zero export on a battery with some other features. I use an ESP32 with OpenDTU for the communication and a shelly 3em to monitor my usage. I found the core template section somewhere else on the internet and changed it a bit, but its definetly not perfect.

alias: zero_energy_export
trigger:
  - platform: time_pattern
    seconds: /30
    enabled: false
  - platform: mqtt
    topic: solar/114190918869/0/power
    enabled: true
condition:
  - condition: state
    entity_id: binary_sensor.hm_600_producing
    state: "on"
  - condition: state
    entity_id: binary_sensor.hm_600_reachable
    state: "on"
action:
  - service: number.set_value
    data_template:
      value: |
        { set newSolarLimit = 250 }    
        {{ newSolarLimit }}
    target:
      entity_id: number.hm_600_limit_nonpersistent_absolute
    enabled: false
  - if:
      - condition: and
        conditions:
          - condition: numeric_state
            entity_id: sensor.pack_state_of_charge
            above: 95
          - condition: numeric_state
            entity_id: sensor.battery_voltage_1
            above: 54.5
        enabled: false
      - condition: not
        conditions:
          - condition: state
            entity_id: input_boolean.batterievoll
            for:
              hours: 0
              minutes: 5
              seconds: 0
            state: "off"
    then:
      - service: number.set_value
        data:
          value: "600"
        target:
          entity_id:
            - number.hm_600_limit_persistent_absolute
    else:
      - if:
          - condition: and
            conditions:
              - condition: numeric_state
                entity_id: sensor.gesamtstromverbrauch
                below: 300
              - condition: or
                conditions:
                  - condition: state
                    entity_id: input_boolean.lowpower
                    state: "off"
                    for:
                      hours: 0
                      minutes: 5
                      seconds: 0
                  - condition: state
                    entity_id: input_boolean.lowpower
                    state: "on"
                enabled: true
        then:
          - service: number.set_value
            data_template:
              value: >
                {% set maxSolarPower = 600 | float %}    


                {% set newSolarLimit = 0 | float %}    


                {% set negThreshold = 15 | float %}


                {% set minSolarLimit = 195 | float %}


                {% set curGridUsage = states('sensor.gesamtverbrauch_power') |
                float %}


                {% set curSolarLimit =
                states('number.hm_600_limit_nonpersistent_relative') | float %}



                {% if is_number(curGridUsage) and curGridUsage + ( curSolarLimit
                * maxSolarPower / 100 ) - negThreshold <= minSolarLimit %}
                  {% set newSolarLimit = ( minSolarLimit / maxSolarPower * 100 ) %}
                  {{ newSolarLimit }}      
                {% elif is_number(curGridUsage) and (curGridUsage +
                (curSolarLimit * maxSolarPower / 100)) < maxSolarPower and
                (curGridUsage + (curSolarLimit * maxSolarPower / 100) -
                negThreshold) > minSolarLimit %}
                  {% set newSolarLimit = ((curGridUsage + (curSolarLimit *
                maxSolarPower / 100) - negThreshold) / maxSolarPower * 100 )|
                round(2, 'fold')  %}
                  {{ newSolarLimit }}
                {% elif is_number(curGridUsage) and curGridUsage +
                (curSolarLimit * maxSolarPower / 100) - negThreshold >=
                maxSolarPower %}
                  {% set newSolarLimit = (maxSolarPower / maxSolarPower * 100)  %}
                  {{ newSolarLimit }}
                {% else %}
                  {% set newSolarLimit = curSolarLimit %}
                  {{ newSolarLimit }}
                {% endif %}
            target:
              entity_id: number.hm_600_limit_persistent_relative
          - service: input_boolean.turn_on
            data: {}
            target:
              entity_id: input_boolean.lowpower
        else:
          - service: number.set_value
            data_template:
              value: >
                {% set maxSolarPower = 600 | float %}    


                {% set newSolarLimit = 0 | float %}    


                {% set negThreshold = 30 | float %}


                {% set minSolarLimit = 195 | float %}


                {% set curGridUsage = states('sensor.gesamtverbrauch_power') |
                float %}


                {% set curSolarLimit =
                states('number.hm_600_limit_nonpersistent_relative') | float %}



                {% if is_number(curGridUsage) and curGridUsage + ( curSolarLimit
                * maxSolarPower / 100 ) - negThreshold <= minSolarLimit %}
                  {% set newSolarLimit = ( minSolarLimit / maxSolarPower * 100 ) %}
                  {{ newSolarLimit }}      
                {% elif is_number(curGridUsage) and (curGridUsage +
                (curSolarLimit * maxSolarPower / 100)) < maxSolarPower and
                (curGridUsage + (curSolarLimit * maxSolarPower / 100) -
                negThreshold) > minSolarLimit %}
                  {% set newSolarLimit = ((curGridUsage + (curSolarLimit *
                maxSolarPower / 100) - negThreshold) / maxSolarPower * 100 )|
                round(2, 'fold')  %}
                  {{ newSolarLimit }}
                {% elif is_number(curGridUsage) and curGridUsage +
                (curSolarLimit * maxSolarPower / 100) - negThreshold >=
                maxSolarPower %}
                  {% set newSolarLimit = (maxSolarPower / maxSolarPower * 100)  %}
                  {{ newSolarLimit }}
                {% else %}
                  {% set newSolarLimit = curSolarLimit %}
                  {{ newSolarLimit }}
                {% endif %}
            target:
              entity_id: number.hm_600_limit_persistent_relative
          - service: input_boolean.turn_off
            data: {}
            target:
              entity_id: input_boolean.lowpower
        enabled: true
  - if:
      - condition: and
        conditions:
          - condition: numeric_state
            entity_id: sensor.pack_state_of_charge
            above: 95
          - condition: numeric_state
            entity_id: sensor.battery_voltage_1
            above: 54.5
    then:
      - service: input_boolean.turn_on
        data: {}
        target:
          entity_id: input_boolean.batterievoll
    else:
      - service: input_boolean.turn_off
        data: {}
        target:
          entity_id: input_boolean.batterievoll
mode: single

I also have an automation that pushes the virtual buttons shown by OpenDTU that turns the inverter off when the battery is too low and back on again. Only do this if you have a BMS that can reliably disconnect the battery if the automation doesnt work.

The advantage is that I dont have to build a switch with an inrush current reduction. If you connect a solar microinverter to a battery I would also recommend fusing the cables from the battery to the inverter, because a battery can provide a much higher peak current than a solar panel.

[-] [email protected] 18 points 9 months ago

I guess I am a god then

[-] [email protected] 16 points 11 months ago* (last edited 11 months ago)

Yeah, he didnt do a video to roast LTT and he also didnt insult him.

He just stated what he sees as going wrong at LTT and how it could be fixed.

I stopped watching LTT a long time ago because of similar reasons, it was just so frustrating to see them start a project, barely finish it, release the video and the not finish it.

Other times they made a big mistake in the middle and continued with the video "because we dont have time to fix it".

I prefer Youtubers that may have months between videos, but when a new one is out, I nkow its going to be a good one.

And if they do a project, when it has an issue, they either continue the video until it is fixed, or they read it in the comments and someday we will get a follow up.

view more: next ›

noobnarski

joined 1 year ago