ALERT

joined 1 year ago
MODERATOR OF
[–] ALERT 6 points 17 hours ago

same :/ the day is fucked up due to the shitty morning :/

[–] ALERT 4 points 2 days ago
[–] ALERT 2 points 2 days ago

you are right except for the places that offer tiny or huge ones.

[–] ALERT 1 points 2 days ago (2 children)

there's no "usually", in every household every person makes it as they please at each preparation iteration, according to the size of their hands, capabilities, mood, and especially filling. you do cherry for kids - make them smaller, one cherry inside. oh, today your kid wants them full of cherry juice hinkali-style, voila, enormous ones, and the juice drips. same thing with borshch, or other "staples" of Ukrainian cuisine. there are no rules, only slight directions. do as you please.

[–] ALERT 6 points 3 days ago (5 children)

Varenyky are on the size side you prefer them to be. Being small or big doesn't stop them from being varenyky.

[–] ALERT 2 points 4 days ago

it's funny how I as a Ukrainian can easily clearly pronounce both English and French variants, while my language is from even a different language group :D

[–] ALERT 0 points 1 week ago

друже, тебе даунвоутять за невірно вибрану мову постів. ти вибираєш англійську, а не українську.

[–] ALERT 2 points 1 week ago
[–] ALERT 3 points 1 week ago

he edits his videos himself. alas, he's not a very good English-speaker, so yeah, only auto-generated subtitles are the way. but his Ukrainian pronunciation is quite stable so it should auto-generate ok.

[–] ALERT 1 points 1 week ago (1 children)

lasik-type operation. ~1k€. once and for all your life. best decision in my life. and my wife's. and my mom's. and 6 of my friends'. https://eyes.ua, https://eyes.lt

[–] ALERT 1 points 2 weeks ago

I assure you, he's not the coolest at all. He's corrupt, he and his team are destroying Kyiv.

[–] ALERT 1 points 2 weeks ago* (last edited 2 weeks ago)

I am sure you understand that the money is there one way or another. You came there to get it for free and watched an ad; you came there to get it and bought something else; the developers will get their money from any activity towards their product. That's why here in Ukraine, we take boycotting russian products very seriously. actually, boycotting any product that did not leave russian and belorussian markets. https://leave-russia.org/

 

A suggestion for my favorite Lemmy client: I would love to know that I am banned in a community before finishing a huge post/reply and pressing "send", not after T_T

 

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")    
5
Pyscript appreciation post (self.pyscript_ha)
submitted 1 year ago* (last edited 1 year ago) by ALERT to c/pyscript_ha
 

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!

 

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

6
First post (self.gaggiaclassic)
submitted 1 year ago by ALERT to c/gaggiaclassic
 

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 ›