diff --git a/technology/applications/web/zigbee2mqtt.md b/technology/applications/web/zigbee2mqtt.md index 6f00e09..bc98d0b 100644 --- a/technology/applications/web/zigbee2mqtt.md +++ b/technology/applications/web/zigbee2mqtt.md @@ -5,4 +5,108 @@ website: https://www.zigbee2mqtt.io --- # zigbee2mqtt -#wip #🐇 #notnow \ No newline at end of file +Zigbee to [MQTT](../../internet/MQTT.md) bridge, get rid of your proprietary Zigbee bridges. +See [this](https://www.zigbee2mqtt.io/supported-devices/) for a list of supported devices. + +![Screenshot][Screenshot] + +## Setup +In order to run zigbee2mqtt you need a [MQTT](../../internet/MQTT.md) server and a zigbee adapter for talking to the zigbee devices. + +## Configuration +zigbee2mqtt is configured with `configuration.yml` + +Adapter configuration: +```yml +# Required: serial settings +serial: + # Required: location of the adapter (e.g. CC2531). + # USB adapters - use format "port: /dev/ttyACM0" + # To autodetect the USB port, set 'port: null'. + # Ethernet adapters - use format "port: tcp://192.168.1.12:6638" + port: /dev/ttyACM0 + # Optional: disable LED of the adapter if supported (default: false) + disable_led: false + # Optional: adapter type, not needed unless you are experiencing problems (default: shown below, options: zstack, deconz, ezsp) + adapter: null + # Optional: Baud rate speed for serial port, this can be anything firmware support but default is 115200 for Z-Stack and EZSP, 38400 for Deconz, however note that some EZSP firmware need 57600. + baudrate: 115200 + # Optional: RTS / CTS Hardware Flow Control for serial port (default: false) + rtscts: false +``` + +MQTT: +```yml +# Required: MQTT settings +mqtt: + # Required: MQTT server URL (use mqtts:// for SSL/TLS connection) + server: 'mqtt://localhost:1883' + # Optional: MQTT base topic for Zigbee2MQTT MQTT messages (default: zigbee2mqtt) + base_topic: zigbee2mqtt + # Optional: absolute path to SSL/TLS certificate of CA used to sign server and client certificates (default: nothing) + ca: '/etc/ssl/mqtt-ca.crt' + # Optional: absolute paths to SSL/TLS key and certificate for client-authentication (default: nothing) + key: '/etc/ssl/mqtt-client.key' + cert: '/etc/ssl/mqtt-client.crt' + # Optional: MQTT server authentication user (default: nothing) + user: my_user + # Optional: MQTT server authentication password (default: nothing) + password: my_password + # Optional: MQTT client ID (default: nothing) + client_id: 'MY_CLIENT_ID' + # Optional: disable self-signed SSL certificates (default: true) + reject_unauthorized: true + # Optional: Include device information to mqtt messages (default: false) + include_device_information: true + # Optional: MQTT keepalive in seconds (default: 60) + keepalive: 60 + # Optional: MQTT protocol version (default: 4), set this to 5 if you + # use the 'retention' device specific configuration + version: 4 + # Optional: Disable retain for all send messages. ONLY enable if you MQTT broker doesn't + # support retained message (e.g. AWS IoT core, Azure IoT Hub, Google Cloud IoT core, IBM Watson IoT Platform). + # Enabling will break the Home Assistant integration. (default: false) + force_disable_retain: false +``` + +Frontend: +```yml +frontend: + # Optional, default 8080 + port: 8080 + # Optional, empty by default to listen on both IPv4 and IPv6. Opens a unix socket when given a path instead of an address (e.g. '/run/zigbee2mqtt/zigbee2mqtt.sock') + host: 0.0.0.0 + # Optional, enables authentication, disabled by default + auth_token: your-secret-token + # Optional, url on which the frontend can be reached, currently only used for the Home Assistant device configuration page + url: 'https://zigbee2mqtt.myhouse.org' + # Optional, certificate file path for exposing HTTPS. The sibling property 'ssl_key' must be set for HTTPS to be activated + ssl_cert: /config/etc/letsencrypt/live/mydomain.com/fullchain.pem + # Optional, private key file path for exposing HTTPS. The sibling property 'ssl_cert' must be set for HTTPS to be activated + ssl_key: /config/etc/letsencrypt/live/mydomain.com/privkey.pem +``` + +To enable integration with [Home Assistant](Home%20Assistant.md), add this to config: +```yml +homeassistant: true +``` + +## Docker Compose +```yml +version: '3' +services: + zigbee2mqtt: + restart: unless-stopped + image: koenkk/zigbee2mqtt + volumes: + - ./zigbee2mqtt-data:/app/data + - /run/udev:/run/udev:ro + ports: + - 8080:8080 + environment: + - TZ=Europe/Berlin + devices: + - /dev/ttyUSB0:/dev/ttyUSB0 +``` + +[Screenshot]: data:image/avif;base64,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 \ No newline at end of file diff --git a/technology/bsd/OpenBSD.md b/technology/bsd/OpenBSD.md index 1ea1ebd..e7f3c44 100644 --- a/technology/bsd/OpenBSD.md +++ b/technology/bsd/OpenBSD.md @@ -1,7 +1,7 @@ --- obj: os -website: https://www.openbsd.org/ +website: https://www.openbsd.org --- #refactor #notnow # OpenBSD -The OpenBSD project produces a FREE, multi-platform 4.4BSD-based UNIX-like operating system. Our efforts emphasize portability, standardization, correctness, proactive security and integrated cryptography. As an example of the effect OpenBSD has, the popular [OpenSSH](../applications/SSH.md) software comes from OpenBSD. \ No newline at end of file +The OpenBSD project produces a free, multi-platform BSD-based UNIX-like operating system. Our efforts emphasize portability, standardization, correctness, proactive security and integrated cryptography. As an example of the effect OpenBSD has, the popular [OpenSSH](../applications/SSH.md) software comes from OpenBSD. \ No newline at end of file diff --git a/technology/internet/MQTT.md b/technology/internet/MQTT.md index bc24549..8e2bcb9 100644 --- a/technology/internet/MQTT.md +++ b/technology/internet/MQTT.md @@ -34,7 +34,7 @@ Each message is inside a topic allowing for organizing them. ### 1. **IoT (Internet of Things):** - MQTT is widely used in IoT scenarios for efficient communication between devices. ### 2. **Home Automation:** -- Smart homes leverage MQTT for controlling and monitoring devices. For example zigbee2mqtt with [Home Assistant](../applications/web/Home%20Assistant.md). +- Smart homes leverage MQTT for controlling and monitoring devices. For example [zigbee2mqtt](../applications/web/zigbee2mqtt.md) with [Home Assistant](../applications/web/Home%20Assistant.md). ### 3. **Messaging in Remote Locations:** - Suitable for scenarios with low bandwidth, high latency, or unreliable connections. diff --git a/technology/linux/filesystems/Filesystems.md b/technology/linux/filesystems/Filesystems.md index ffdb458..9abd830 100644 --- a/technology/linux/filesystems/Filesystems.md +++ b/technology/linux/filesystems/Filesystems.md @@ -3,6 +3,7 @@ arch-wiki: https://wiki.archlinux.org/title/File_systems tags: ["meta"] obj: meta/collection --- + ## Filesystems - [ZFS](ZFS.md) - [Btrfs](Btrfs.md) @@ -10,4 +11,5 @@ obj: meta/collection - [SquashFS](SquashFS.md) - [MergerFS](MergerFS.md) - [exFAT](exFAT.md) -- [SSHFS](SSHFS.md) \ No newline at end of file +- [SSHFS](SSHFS.md) +- [XFS](XFS.md) \ No newline at end of file diff --git a/technology/linux/filesystems/XFS.md b/technology/linux/filesystems/XFS.md new file mode 100644 index 0000000..95adaf6 --- /dev/null +++ b/technology/linux/filesystems/XFS.md @@ -0,0 +1,29 @@ +--- +obj: filesystem +wiki: https://en.wikipedia.org/wiki/XFS +--- + +# XFS +XFS is a high-performance, scalable file system designed for Unix-like operating systems. It was originally developed by Silicon Graphics, Inc. (SGI) and later open-sourced. XFS is known for its robustness, advanced features, and suitability for large-scale storage environments. + +## File System Creation and Management + +Creating an XFS file system can be done using the mkfs.xfs command: +```shell +mkfs.xfs /dev/sdX +``` + +To mount an XFS file system, use the mount command: +```shell +mount -t xfs /dev/sdX /mnt/point +``` + +Grow the filesystem: +```shell +xfs_growfs /mnt +``` + +Get information on filesystem: +```shell +xfs_info /mnt +```