ALERT 3d ago • 100%
what are your thoughts on Unraid as an alternative?
ALERT 6d ago • 100%
I don't know about the rest of the world, but in Ukrainian middle schools on geography lessons we are taught that there are continents and there are "Parts of the World". Europe and Asia are two separate Parts of the World, but they are the same continent - Eurasia. North America and South America are both separate Parts of the World and continents.
ALERT 1w ago • 100%
Up-to-date list of companies' business dealings in Russia - https://www.yalerussianbusinessretreat.com/
ALERT 1w ago • 100%
1466 more to go tomorrow ;)
ALERT 2w ago • 100%
looks like Novyi Svit. been there a few times when I was a child.
ALERT 2w ago • 100%
Tailscale.
ALERT 3w ago • 52%
toss howard lies to you
ALERT 3w ago • 100%
have there been a lot of them?
ALERT 3w ago • 86%
Alas, as a citizen of Kyiv, I can see only corruption in this picture. but anyway, please come visit!
ALERT 3w ago • 100%
whoa! that's the next level of sniping!
ALERT 3w ago • 100%
a nation cannot be the greatest and the stupidest at the same time. one must be chosen. one will be chosen.
ALERT 3w ago • 100%
from my 15 years of RSS experience, a typical feed contains not much more than 5% of useful information, so I am prepared for filtering, no worries :)
ALERT 3w ago • 100%
requesting RSS feed for your blog. thank you
ALERT 1mo ago • 100%
this is fire! 🔥🔥🔥 so intense! I couldn't move my eyes away for the entire video!
ALERT 1mo ago • 28%
or is it? those people working on that game pay taxes at home, being residents of russia, they send money to their families even while living abroad, their families buy products and pay those taxes again, and those taxes are used to fund what? killing us, Ukrainians.
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") > ```
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](https://github.com/custom-components/pyscript/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](gaggiuino.github.io/) project. > > Fully with loadcell scales, pressure sensor, pid temperature control and a hand soldered [all in one pcb](https://github.com/banoz/CoffeeHat/tree/main/Hardware/GaggiaBoard_V3). > > 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
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.