Skip to content

Latest commit

 

History

History
180 lines (120 loc) · 10.2 KB

README.md

File metadata and controls

180 lines (120 loc) · 10.2 KB

WatchFlower

GitHub release GitHub action GitHub issues GitHub contributors License: GPL v3

WatchFlower is a plant monitoring application that reads and plots data from compatible Bluetooth sensors like Xiaomi "Flower Care" and "RoPot" or Parrot "Flower Power" and "Parrot Pot", as well as many Bluetooth thermometers! It works with international and Chinese Xiaomi devices, doesn't require an account creation, your GPS location, nor any other personal data from you!

Works on Linux, macOS, Windows, but also Android and iOS! Desktop binaries are available on the "release" page, mobile applications are on the app stores.
Virtually all phones and laptops have Bluetooth "Low Energy", but you will need to make sure your desktop computer has a Bluetooth card or dongle (and for Windows, a working driver too).

Available in Chinese (traditional and simplified), Danish, Dutch, English, French, Frisian, German, Norwegian (Bokmål and Nynorsk), Russian and Spanish!

Application developed by Emeric Grange. Visual design by Chris Díaz.

Features

  • Support many plant sensors and thermometers
  • Support a couple of environmental sensors
  • Name your plants and set your own limits for optimal care
  • Background updates and notifications (desktop ONLY for now)
  • Synchronize sensors history (FlowerCare and ThermoBeacon ONLY for now)
  • Configurable update intervals
  • Clickable two-week graphs
  • Monthly/weekly/daily data histograms
  • 90 days CSV data export
  • Scalable UI: 4.6" to 34" screens, landscape or portrait

TODOs

  • Background updates and notifications for Android and iOS

GUI_MOBILE1

Supported devices

WatchFlower has been built to be compatible with as many Bluetooth sensors as possible.
Various new Bluetooth devices and sensors can be added to WatchFlower. If you have one in mind, you can contact us and we'll see what can be done!

Checkout out this page to get more informations about the devices currently support, and get a peek at their Bluetooth APIs.
You can also create your own sensors and use them with WatchFlower! Checkout this guide to learn more about the process.

WatchFlower is NOT associated with Xiaomi, Parrot, or any device manufacturer.

Please note that most Chinese devices have many names, usually no official manufacturer, sometimes a couple of variants potentially sold as the same base model. We do our best to identify them as clearly as we can. You can use the affiliate links below to be sure of what you are buying.

Flower Care RoPot Flower Power Parrot Pot HiGrow
FlowerCare RoPot FlowerPower ParrotPot HiGrow
HHCCJCY01
GCLS002
HHCCPOT002 RKXHAWAII 2AG61POT
Xiaomi / VegTrug / WANFEI
(International and Chinese versions)
Xiaomi and VegTrug variants (monitoring only) (with custom firmware)
shop firmware
Xiaomi Digital Hygrometer (LCD) ClearGrass Digital Hygrometer (EInk) QingPing Temp RH Lite (LCD)
HygroTemp HygroTemp HygroTemp
LYWSDCGQ CGG1 CGDK2
shop shop
Xiaomi Smart Hygrometer Clock Xiaomi Digital Hygrometer 2 (LCD) Miaomiaoce Digital Hygrometer 2 (EInk)
HygroTempClock HygroTemp2 HygroTemp2
LYWSD02
MHO-C303
LYWSD03MMC MHO-C401
shop / shop shop / shop shop
ThermoBeacon (keychain) ThermoBeacon (LCD)
ThermoBeacon ThermoBeacon
2ACD3-WS02
2ACD3-WS07
2ACD3-WS08
KEU-WA59D
shop
Air Box WP6003
WP6003
shop
ESP32 Air Quality Monitor ESP32 Weather Station ESP32 Geiger Counter
Air Monitor Weather Station Geiger Counter
build build build

Screenshots

GUI_MOBILE2 GUI_MOBILE3 GUI_DESKTOP1 GUI_DESKTOP2

Documentation

Dependencies

You will need a C++11 compiler and Qt 5.15 (with Qt Charts). Qt 6+ is not supported yet.
For Android builds, you'll need the appropriates SDK and NDK (21+).

Building WatchFlower

$ git clone https://github.com/emericg/WatchFlower.git
$ cd WatchFlower/
$ qmake
$ make

Using FlowerCare

Android

The Android operating system requires applications to ask for device location permission in order to scan for nearby Bluetooth Low Energy sensors. Android 10+ will ask for ACCESS_FINE_LOCATION, while Android 6+ will only ask for ACCESS_COARSE_LOCATION.
The location permission is only needed while scanning for new sensors, not for updating data. You can learn more on Android developper website.

Some devices also require the GPS to be turned on while scanning for new sensors. This requirement is not documented and there is not much that can be done about it.

iOS

The application will ask you for permission to use Bluetooth. You can learn more on Apple website.

macOS and iOS ('live mode' and 'historical data')

Due to a (bad) combination of factors, these platform need a patched version of Qt in order to work with FlowerCare live mode and history data.
The apps published on the app stores are using such patched version, but if you are building it yourself you can get these patches here. Without it, these two features will just be disabled.

Linux ('live mode' and 'historical data')

While reading FlowerCare historical entry count, the sensors usually freeze for up to a second, and the Linux kernel consider that to be a connection timeout.
To be able to get the historical data working on Linux, you'll need to increase the "supervision timeout" value (while root):

# echo 100 > /sys/kernel/debug/bluetooth/hci0/supervision_timeout

You could also give WatchFlower binary the net_raw and net_admin capabilities, so that it could be allowed to changes the supervision timeout on its own. But at the moment that's not fully implemented.

# setcap 'cap_net_raw,cap_net_admin+eip' watchflower

Special thanks

Third party projects used by WatchFlower

Get involved!

Developers

You can browse the code on the GitHub page, submit patches and pull requests! Your help would be greatly appreciated ;-)

Users

You can help us find and report bugs, suggest new features, help with translation, documentation and more! Visit the Issues section of the GitHub page to start!

License

WatchFlower is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
Read the LICENSE file or consult the license on the FSF website directly.

Emeric Grange [email protected]