Knowing "You Are Banned In This Community" Before Writing A Post/Reply
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
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, 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
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.