Your own Google Now / IFTTT / Yahoo Pipes.
Phyks (Lucas Verney) d6cec7331d Better output of temperature notifier scenario 1 year ago
config Refactor scenario management 1 year ago
doc Fix a bug in storage when running the same scenario with multiple configurations, in parallel 1 year ago
hooks Stash 1 year ago
infotuyo Forgot to decode a subprocess.check_output call 1 year ago
scenarios Better output of temperature notifier scenario 1 year ago
.gitignore Refactor scenario management 1 year ago
CONTRIBUTING.md LocalStorage-like for Agents 1 year ago
LICENSE.md Add license 1 year ago
README.md Add extra instructions on install 1 year ago
pylintrc Continue RATP notifier 1 year ago
requirements.txt Definitely fix the `DateAwareJSONDecoder` 1 year ago

README.md

infotuyo

infotuyo is a Python script meant to run so-called scenarios, which can be compared to features provided by IFTTT, Yahoo Pipes (now gone offline). It can also be used to build some of the features of Google Now.

You can use existing agents and write new ones to fetch and manipulate data, and then put them together in scenarios. Agents are plain Python classes, scenarios are easily described in JSON.

Don’t wait, get started now!

Installation and usage

  1. git clone this repository.
  2. cd infotuyo; pip install -r requirements.txt to install the common requirements (although some specific agents might require extra python modules to run).
  3. You are ready to go and start running some scenarios.

More detailed setup instructions can be found in the setup.sh script.

Head to the getting started guide for a full introduction to infotuyo.

Extending

Coding guidelines and some useful information about extending this tool can be found both in the CONTRIBUTING.md file and in the getting started guide.

Known limitations

There are some known limitations for the moment, mainly due to the fact that I wanted some minimalistic code to run on my Raspberry Pi:

  • All the configuration is done through JSON files, and you should manually go and edit the files. There is a WebUI available, but it is very minimalistic for now, and read only. This may change in the near future, depending on feedbacks.
  • For now, only linear sequential scenarios are supported. This basically means that only one agent at the time can be run (for now). Typically, a scenario should always have this form:

Typical scenario

Some cases can be worked around by writing multiple linear scenarios instead of a single one with agents receiving / emitting multiple payloads. But a scenario such as a digest scenario cannot be written at the moment.

License

The content of this repository is licensed under an MIT license, unless explicitly mentionned otherwise.

Alternative solutions

Before getting into writing this tool, I came across some other solutions, which you might be interested in. I reference them here, in case they better suit your needs.

  • Huginn which actually gave me the original idea, but is written in ruby on rails, and is way too heavy for a small Raspberry Pi.
  • TriggerHappy written in Python/Django, same issue with Raspberry Pi, plus it does not offer a lot of available agents and I was not convinced by the way agents are written (but this is a matter of tastes).
  • Node-RED in NodeJS, IoT oriented in the available agents.
  • BeeHive written in Go, should be ok with Raspberrry Pi, but there is not a lot of available agents for now, and it only supports “action->reaction”, and not any chain / graph.

My goals when starting this were basically to be able to run it on a Raspberry Pi (actually, I do not intend to do much more than a slightly enhanced cron, so it should run smoothly on virtually anything), be dead simple, integrate with Weboob and be able to secure my credentials in some ways.