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

Maybe she had her reasons. Maybe she have had enough of all this. Their government tries to cut out the courageous and leave only spineless brainless matter that doesn't resist.

[-] [email protected] 24 points 2 months ago

you always only read the title and then comment?

[-] [email protected] 34 points 3 months ago

I am an unmarried Ukrainian and I need names!

[-] [email protected] 85 points 4 months ago
[-] [email protected] 20 points 6 months ago* (last edited 6 months ago)

The full-scale invasion was loud and unpredictable for mere citizens of Kyiv. The enemy was stopped right at the border of the city and a few squads were even taken out within the city. So there were citizens who saw ground fights right from their windows. This cannot pass without fear.

[-] [email protected] 32 points 7 months ago

Poland is not almighty, it cannot send us weapons infinitely. This is their choice.

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

especially the orange ones

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

Here in Ukraine we got 1000 mbit even in small villages via optic. For 7.5$/month. For the last 10 years at least. Before that the standard was 100 mbit ethernet. 20 years ago the standard was 30 mbit via coaxial tv cable.

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

cross-posted from: https://reddthat.com/post/550018

So, I decided to buy a venta evaporative humidifier (AH550) which has wifi support. Unfortunately there is no homeassistant integration for this, so I needed to find a workaround solution with pyscript.

What to do to get there:

  • download the venta home app to your smartphone (you need this to initially connect your humidifier to your wifi)
  • create an account (sigh)
  • in the app connect your humidifier to your wlan
  • delete the account
  • delete the venta home app
  • in homeassistant install pyscript integration via hacs
  • create a pyscript folder in your config
  • create the necessary sensors input_booleans, input_numbers, input_selects in homeassistant
  • restart homeassistant
  • add a file "requirements.txt" in your pyscript folder
  • add the text "venta_protocol_v3_device" in your requirements txt
  • create a python file, I called mine "venta_humidifier.py"
  • add the below code into the python file and voila all services and data available in local api can be used in homeassistant through automations
from venta_protocol_v3_device import Venta_Protocol_v3_Device
import json

@service
def venta_setfanspeed(myip=None,mytarget=None):
    """yaml
    name: Sets the Fan Speed of the Venta device
    description: Sets the Fan Speed of the Venta device
    fields:
        myip:
            description: provide IP of venta humidifier
            example: 192.168.40.108
            required: true
        mytarget:
            description: provide fan speed between 1 and 3
            example: 1
            required: true            
            
"""
    d = Venta_Protocol_v3_Device(myip)
    mytask = task.executor(d.setFanSpeed, target=mytarget)

@service
def venta_setautomatic(myip=None,mytarget=None):
    """yaml
    name: Enables / disables the Automatic mode of the Venta device
    description: Enables / disables the Automatic mode of the Venta device
    fields:
        myip:
            description: provide IP of venta humidifier
            example: 192.168.40.108
            required: true
        mytarget:
            description: set if True or False
            example: True
            required: true            
            
"""
    d = Venta_Protocol_v3_Device(myip)
    mytask = task.executor(d.setAutomatic, target=mytarget)
    
@service
def venta_setsleepmode(myip=None,mytarget=None):
    """yaml
    name: Enables / disables the Sleep mode of the Venta device    
    description: Enables / disables the Sleep mode of the Venta device    
    fields:
        myip:
            description: provide IP of venta humidifier
            example: 192.168.40.108
            required: true
        mytarget:
            description: set if True or False
            example: True
            required: true            
            
"""
    d = Venta_Protocol_v3_Device(myip)
    mytask = task.executor(d.setSleepMode, target=mytarget)

@service
def venta_setpower(myip=None,mytarget=None):
    """yaml
    name: Enables / disables the the Venta device  
    description: Enables / disables the the Venta device  
    fields:
        myip:
            description: provide IP of venta humidifier
            example: 192.168.40.108
            required: true
        mytarget:
            description: set if True or False
            example: True
            required: true            
            
"""
    d = Venta_Protocol_v3_Device(myip)
    mytask = task.executor(d.setPower, target=mytarget)

@service
def venta_settargethumidity(myip=None,mytarget=None):
    """yaml
    name: Sets the target humidity of the Venta device    
    description: Sets the target humidity of the Venta device    
    fields:
        myip:
            description: provide IP of venta humidifier
            example: 192.168.40.108
            required: true
        mytarget:
            description: sets target humidity in 5% steps
            example: 55
            required: true            
            
"""
    d = Venta_Protocol_v3_Device(myip)
    mytask = task.executor(d.setTargetHum, target=mytarget)
    
@service
def venta_getstatus(myip=None):
    """yaml
    name: Contacts the Venta device and populates / updates the class properties  
    description: Contacts the Venta device and populates / updates the class properties
    fields:
        myip:
            description: provide IP of venta humidifier
            example: 192.168.40.108
            required: true       
            
"""
    d = Venta_Protocol_v3_Device(myip)
    mytask = task.executor(d.getStatus)
    data= task.executor(d.toJSON)
    x = json.loads(data)
    service.call("input_number", "set_value", blocking=True, entity_id="input_number.venta_temperature", value=round(x['Temperature'],2))
    service.call("input_number", "set_value", blocking=True, entity_id="input_number.venta_humidity", value=round(x['Humidity'],2))
    service.call("input_number", "set_value", blocking=True, entity_id="input_number.venta_targethumidity", value=round(x['TargetHum'],0))
    service.call("input_number", "set_value", blocking=True, entity_id="input_number.venta_daystoservice", value=round(x['DaysToService'],0))
    if x['SleepMode'] == True:
        service.call("input_boolean", "turn_on", blocking=True, entity_id="input_boolean.venta_sleepmode")
    else:
        service.call("input_boolean", "turn_off", blocking=True, entity_id="input_boolean.venta_sleepmode")
    if x['Power'] == True:
        service.call("input_boolean", "turn_on", blocking=True, entity_id="input_boolean.venta_power")
    else:
        service.call("input_boolean", "turn_off", blocking=True, entity_id="input_boolean.venta_power")
    if x['Warnings'] == True:
        service.call("input_boolean", "turn_on", blocking=True, entity_id="input_boolean.venta_lowwaterwarning")
    else:
        service.call("input_boolean", "turn_off", blocking=True, entity_id="input_boolean.venta_lowwaterwarning")
    if x['Automatic'] == True:
        service.call("input_boolean", "turn_on", blocking=True, entity_id="input_boolean.venta_automatic")
    else:
        service.call("input_boolean", "turn_off", blocking=True, entity_id="input_boolean.venta_automatic")
    if x['FanSpeed'] == 1:
        service.call("input_select", "select_option", blocking=True, entity_id="input_select.venta_fanspeed", option="low")
    elif x['FanSpeed'] == 2:
        service.call("input_select", "select_option", blocking=True, entity_id="input_select.venta_fanspeed", option="medium")    
    elif x['FanSpeed'] == 3:
        service.call("input_select", "select_option", blocking=True, entity_id="input_select.venta_fanspeed", option="high")    
2
submitted 9 months ago* (last edited 9 months ago) by [email protected] to c/[email protected]

As an initial post, I just wanted to say that Pyscript changed my whole usage of Home Assistant. I don't even use the built-in automations: everything is performed by Pyscript. Without it, I would dump 90% of my automation ideas due to the clunky automation interface and YAML clunkiness.

If you are too humble to post at the Pyscript GitHub Discussions, please post your questions here!

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

I wish Lemmy would grow to the point when these Reddit moments of "I'm a dermatologist, and actually...” happen as usual as they happen on Reddit.

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

Well, it's not a lie, you don't have to admit it. This is how things work. You cannot count the uncountable, divide undividable into the equal parts, estimate the inestimable, and display the remaining time for the unknown.

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

Prowlarr instead of Jackett. It's simplier and more convenient.

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

cross-posted from: https://discuss.tchncs.de/post/179956

To get more into espresso i finally got a used gaggia classic and upgraded it with a replacement controller running the open source gaggiuino project.

Fully with loadcell scales, pressure sensor, pid temperature control and a hand soldered all in one pcb.

You can also use standard arduino style modules for most components but the pcb makes it much more compact and reliable.

In this case the modifications are fully reversible in case a future owner wants to revert it back to stock.

Works great and automates a lot of steps to be more consistent. Now i just need to practice the manual parts of making espresso ;)

Note: this is not my project, i just documented the build process on my machine. Maybe it helps someone to get an overview what goes into such a conversion and inspires more users to attempt it.

The community is already pretty big and many also adapted the project for other machines.

*Seems like the post was synchronized only after editing multiple times

3
First post (sh.itjust.works)
submitted 9 months ago by [email protected] to c/[email protected]

Here you are, a GCP ~~subreddit~~ community. If you are a /r/gaggiaclassic moderator, and you want to get your moderatorship here - let me know.

view more: next ›

ALERT

joined 9 months ago
MODERATOR OF