Python API for FHEM home automation server
Project description
python-fhem
Python FHEM (home automation server) API
Simple API to connect to the FHEM home automation server via sockets or http(s), using the telnet or web port on FHEM with optional SSL (TLS) and password or basicAuth support.
Installation
PIP installation (PyPI)
See the PyPI page for additional information about the package.
pip install [-U] fhem
From source
In python-fhem/fhem
:
Get a copy of README for the install (required by setup.py):
cp ../README.md .
then:
pip install [-U] .
or, as developer installation, allowing inplace editing:
pip install [-U] -e .
History
- 0.6.1 (2018-12-26): New API used telnet non-blocking on get which caused problems (d1nd141, #12), fixed by using blocking telnet i/o.
- 0.6.0 (2018-12-16): Enhanced and expanded get-API (Andre0512 #10). See online documentation, especially the new get() method for details on the new functionality. Proprietary logging functions marked deprecated.
- 0.5.5 (2018-08-26): Documentation cleanup, automatic documentation with sphinx.
- 0.5.3 (2018-08-26): Fix syntax in exception handler
- 0.5.2 (2018-06-09): Fix for crash on invalid csrf-return
- 0.5.1 (2018-01-29): Removed call to logging.basicConfig(), since it was unnecessary and causes breakage if other modules use this too. (heilerich #8)
- 0.5: API cleanup (breaking change!). Removed deprecated functions: sendCmd, sendRcvCmd, getDevState, getDevReading (replaced with PEP8 conform names, s.b.). Renamed parameter ssl= -> use_ssl=
- 0.4.4: Merged python logger support (ChuckMoe, #6)
- 0.4.3: Merged API extensions for getting time of last reading change (logi85, #5)
- 0.4.2: deprecation error message fixed (Ivermue, #4)
- 0.4.0: csrf token support (FHEM 5.8 requirement)
Usage
Set and get transactions
Default telnet connection without password and without encryption:
import logging
import fhem
logging.basicConfig(logging.DEBUG)
# Connect via default protocol telnet, default port 7072:
fh = fhem.Fhem("myserver.home.org")
# Send a command to FHEM (this automatically connects() in case of telnet)
fh.send_cmd("set lamp on")
# Get temperatur of LivingThermometer
temp = fh.get_device_reading("LivingThermometer", "temperature")
# Get a dict of kitchen lights with light on
lights = fh.get_states(group="Kitchen", state="on", device_type="light", value_only=True)
# Get all data of specific tvs
tvs = fh.get(device_type=["LGTV", "STV"])
# Get indoor thermometers with low battery
low = fh.get_readings(name=".*Thermometer", not_room="outdoor", filter={"battery!": "ok"})
To connect via telnet with SSL and password:
fh = fhem.Fhem("myserver.home.org", port=7073, use_ssl=True, password='mysecret')
fh.connect()
if fh.connected():
# Do things
To connect via https with SSL and basicAuth:
fh = fhem.Fhem('myserver.home.org', port=8086, protocol='https',
cafile=mycertfile, username="myuser", password="secretsauce")
Event queues (currently telnet only)
The library can create an event queue that uses a background thread to receive and dispatch FHEM events:
try:
# Python 3.x
import queue
except:
# Python 2.x
import Queue as queue
import fhem
que = queue.Queue()
fhemev = fhem.FhemEventQueue("myserver.home.org", que)
while True:
ev = que.get()
# FHEM events are parsed into a Python dictionary:
print(ev)
que.task_done()
Documentation
see: fhem documentation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.