Coder Social home page Coder Social logo

pynodered's Introduction

pynodered

Documentation Status

About

Make your python functions available in Node-RED using a simple decorator.

pynodered is a server communicating with Node-RED to make available your python functions as blocks in Node-RED. pynodered reads modules and python files containing functions decorated with 'node_red', register them as blocks in Node-RED. pynodred then handles communications between Node-RED (in javascript) to run your function whenever the block receives a message.

Quick Start

Requires python>=3.5

$ pip install pynodered
# Install node dependencies
$ npm install follow-redirects url querystring

Examples

A simple example to lowercase the payload of the messages:

from pynodered import node_red

@node_red(category="pyfuncs")
def lower_case(node, msg):

    msg['payload'] = str(msg['payload']).lower()
    return msg

Put this snippet is in a file "example.py", run the pynodered server with:

$ pynodered example.py

and in another console:

$ node-red

In Node-RED, you now have a new category "pyfuncs" with a function lower_case. It can be used in a flow as any other blocks:

images/lower-case-flow.png

It is possible to add block properties (constant arguments provided by the user in Node-RED) by defining a property in the decorator:

from pynodered import node_red, NodeProperty

@node_red(category="pyfuncs",
          properties=dict(number=NodeProperty("Number", value="1")))

def repeat(node, msg):

    msg['payload'] = msg['payload'] * int(node.number.value)
    return msg

Don't forget to restart the pynodered server everytime your python files change. Node-RED also needs to be restarted but only when the function name or properties change or a new function is added. Refreshing the browser is then necessary.

By default pynodered exports the functions in the Node-RED package 'pynodered' and the category 'default'. The category name can be changed with the decorator optional argument. For the package name and information, the python module containing the functions can declare a 'package' dictonary like this:

package = {
    "name" : "FFT filters",
    "version" : "0.01",
    "description"  : "Nodes written in Python for signal processing",
}

Warning

pynodered is not ready for production use yet. On a multi-user computer, be aware that pynodered server will respond to anyone request and will execute code under the account that launched the server. NODE-Red has a similar issue (https://nodered.org/docs/security)

License

Copyright (C) 2019 Ghislain Picard

Free software: GNU General Public License v3

This package is a rewrite and extension of the code intially written by Tomaž Šolc for sigfox-toolbox https://github.com/sensorlab/sigfox-toolbox/tree/master/node-red-python. Copyright (2017) SensorLab, Jožef Stefan Institute http://sensorlab.ijs.si and licensed under GPL version 3

pynodered's People

Contributors

blacklight avatar dependabot[bot] avatar gavinspearhead avatar ghislainp avatar izphi78 avatar jasonlshelton avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.