Giter VIP home page Giter VIP logo

pagenodes's Introduction

Pagenodes

Gitter

You can check out a working example of pagenodes here. Pagenodes is an in-browser fork of node-red. It requires no back-end server and is 100% browser-based. If you are going to host this, many modules will need to be hosted via https, or you can run it locally for full functionality.

screenshot

Pagenodes is currently in a heavy state of development, and we are working on a roadmap to follow for future implementations. In its current form it offers a large amount of functionality with very little set up.

Overview

With pagenodes our goal is to give the user a simple, browser-based IOT network. This gives the development of the workflow to the user without relying on a third party network. Basic functionality can be as simple as relaying an image from the camera to Chrome notification center, scaling up to allowing a robotics protocol like johnny5 the ability to control robotics via the web-browser.

Install

Building PageNodes requires a local node(version 6+) install.

git clone [email protected]:monteslu/pagenodes.git
cd pagenodes
npm install
npm run build

Running Locally

npm run build
npm run start

This will open up a webserver locally with ecstatic on port 1337.

Requirements For Bluetooth Low Energy(BLE) Control

Click here to see what is currently supported for the BLE nodes in pagenodes. Currently bluetooth is enabled for Chrome OS only, but other browsers are working to implement them as well. This site has a list of devices currently compatible.

Setting Up A Basic Flow

Setting up a simple flow with pagenodes is pretty easy. The UI is the standard drag and drop interface from node-red, however we implement a range of new functionality.

Setting up a timestamp delivery

  1. Drag the inject tab from the left column onto the sheet.
  2. Drag the debug tab onto the sheet.
  3. Click and drag from the node on the right side of the 'timestamp' module to the node on the left hand side of the 'msg.payload' module. The flow should look like this: base flow
  4. Next Click on the deploy button to start the flow. Any time there is a change to the flow you must re-deploy.
  5. Click the grey square to the left of the timestamp node in order to activate it. You can switch to the debug panel on the right side of the screen in order to see the actual results!

Almost all of the nodes in the left column will have a small readme in the info tab explaining how they work.

This will give you the base functionality need in order to learn how the nodes work!

Credits & Contributors

Copyright & License

Copyright 2013, 2015 IBM Corp. under the Apache 2.0 license.

pagenodes's People

Contributors

andypiper avatar annaet avatar belphemur avatar codymwalker avatar dceejay avatar funberg avatar fvdpol avatar gitter-badger avatar hardillb avatar hbeeken avatar hindessm avatar jhr007 avatar kallenboone avatar knolleary avatar kylegordon avatar louiemontes avatar malakada avatar monteslu avatar motiooon avatar njh avatar nrn avatar raruston avatar samrocksc avatar tjkoury avatar vielmetti avatar warbrett avatar zobalogh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pagenodes's Issues

make configuration tab available if there's a config error

non-visible config nodes such as the nodebot node give an error message on deploy when they are orphaned.

Would be nice to automatically make the config tab visible when this happens so that those conifg nodes can be cleared out.

Fixing labelStyle

In the nodeDef's portion of all of the nodes, we currently have labelStyle filled out for some, but not others. This could probably use an update.

What's New Section

Been thinking about this for a while, but perhaps we could put a what's new section so users that may not have used pagenodes in a while can see notes from the most previous release.

Adding Append to localwrite node.

Needs to add a dropdown for appending with localforage. localforage currently requires pulling the entire object before appending to it...kind of weird.

Website Push

I think we are getting close to another website push. Perhaps we need an issue list of items needed to make it live?

Escaping curly brackets when mustache has been started

#29 Is a bit of a task for me because it's almost done. I'm not able to escape a curly bracket once mustache has been called into a node for the code snippets in the Info tab for some reason. This appears to be the only issue where this is happening.

Linting/Whitespace

Do not merge yet.

This commit is going to implement both a proper linter and config file, while also knocking out a lot of issues with the whitespace on this project since they are a mix of spaces and tabs. It addresses #84

Nodes are empty after dragging

This is an issue that looks to so far be affecting the function node. After dragging it onto the screen it will no longer have a default title. This should be fixable.

clean up whitespace

There's only like... 7000 linting errors dealing with whitespace. Can we clean this up?

k9yrz

2 spaces

Debugging System

Find and decide a way to debug, and then start cleaning up console.log and commented code.

  • Find a decent debugging system
  • Start removing console.log's from code.

web bluetooth nodes

Now that the noble shim is almost ready (noble/noble#238) , we should put together input and output nodes for WebBluetooth.

Will need a config node that you specify a UUID or service name, and probably a button handle the startScanning method.

The output should be straightforward. Maybe use a button to list the services from the selected BLE device, select a service, then select a characteristic that is capable of being written to. On input it can take a payload of string or array or Buffer, and write it to the characteristic.

The input node will be on a characteristic that is capable of read or notify. If it's a notify characteristic it will only have an output connector. If its a read characteristic it will have an input that will then pass the read value along as a payload of type Buffer.

here's the icon for the nodes: http://fontawesome.io/icon/bluetooth-b/

npm run build throws errors

resolve failed for "pagenodes-nodes": Error: Cannot find module 'pagenodes-nodes'
node_modules/nan
resolve failed for "grunt-simple-mocha": Error: Cannot find module 'grunt-simple-mocha'
resolve failed for "grunt-sass": Error: Cannot find module 'grunt-sass'
resolve failed for "grunt-nodemon": Error: Cannot find module 'grunt-nodemon'
resolve failed for "grunt-contrib-watch": Error: Cannot find module 'grunt-contrib-watch'
resolve failed for "grunt-contrib-uglify": Error: Cannot find module 'grunt-contrib-uglify'
resolve failed for "grunt-contrib-jshint": Error: Cannot find module 'grunt-contrib-jshint'
resolve failed for "grunt-contrib-copy": Error: Cannot find module 'grunt-contrib-copy'
resolve failed for "grunt-contrib-concat": Error: Cannot find module 'grunt-contrib-concat'
resolve failed for "grunt-contrib-compress": Error: Cannot find module 'grunt-contrib-compress'
resolve failed for "grunt-contrib-clean": Error: Cannot find module 'grunt-contrib-clean'
resolve failed for "grunt-concurrent": Error: Cannot find module 'grunt-concurrent'
resolve failed for "grunt-cli": Error: Cannot find module 'grunt-cli'
resolve failed for "babel-runtime": Error: Cannot find module 'babel-runtime'
resolve failed for "webpack-core": Error: Cannot find module 'webpack-core'
Thank You

create a math node

Simple node, pick an operator + - * / etc.

Has one input and one output.

Specify an operand. When a payload comes through, do the operation and override the payload to the result.

If the msg has an operator or operand specified use that instead of what was configured on the node.

If the payload or operand has a . parseFloat() otherwise parseInt(). In either case use a radix of 10, unless a different radix is specified on the msg.

Use fontawesome calculator.

Document how to create nodes or port them from node-red

I would be willing to contribute with additional nodes, but right now there is no documentation about how to create new nodes or port them from node-red.
Can you give a few guidelines?
Thank you so much for your work!

update node loading mechanism

this is major architectural change. Would like to have the html templates loaded up front into the index via the build system.

move client js into editor source

We currently have client javascript embedded into html files in the nodes/ folder.

We need this code to be moved into src/editor/nodeDefs/js/

Each of these will need to be wrapped in a

module.exports = function(RED){
  ...client js cod
};

and then add to the src/editor/nodeDefs/js/index.js

First start off with sentiment inject and debug nodes.

Testing Cleanup/Testing Guidelines

@monteslu I think we can benefit from starting to strip out some of the old testing scaffolding and implementing unit tests to make sure that our nodes are always working functionally moving forward. This will allow us to ensure that even if we do make drastic changes we can ensure the application's integrity.

Module not found: Error: Cannot resolve 'file' or 'directory' ../../red

In my Windows 10, i am getting below error.

ERROR in ./build/red/nodes/registry/loader.js
Module not found: Error: Cannot resolve 'file' or 'directory' ../../red in D:\pagenodes\build\red\nodes\registry
@ ./build/red/nodes/registry/loader.js 30:10-33

31 May 18:23:57 - [error] Error: Cannot find module "../../red"
at webpackMissingModule (http://localhost:1337/ui.bundle.js:71672:76)
at Object.init (http://localhost:1337/ui.bundle.js:71672:162)
at Object.init (http://localhost:1337/ui.bundle.js:59134:13)
at Object.init (http://localhost:1337/ui.bundle.js:59020:15)
at http://localhost:1337/ui.bundle.js:56419:19
at tryCatchReject (http://localhost:1337/ui.bundle.js:58799:31)
at runContinuation1 (http://localhost:1337/ui.bundle.js:58758:5)
at Fulfilled.when (http://localhost:1337/ui.bundle.js:58546:5)
at Thenable.Pending.run (http://localhost:1337/ui.bundle.js:58437:14)
at Scheduler._drain (http://localhost:1337/ui.bundle.js:58950:20)

lodash array node

a node similar to the new strings node. Implement all the methods in the array group that don't require a function parameter.

fix the range node

it was commented out because it was breaking the ui. fix it and get it back in.

add gamepad input node

needs a dropdown for controller id [0 to 3]
will need validation to keep polling interval an integeter >= 16, default 300

mqtt.js node

in and out nodes for mqtt messaging.
use websockets to tunnel the mqtt data

base 64 node

simple pass through node. If the payload is a string, try and base64 decode it and create a Buffer.

If its already a buffer or array, base64 enocde the payload.

midi nodes

an input and output. Maybe a config node to select a specific piece of hardware.

Use this web api: https://webaudio.github.io/web-midi-api/ and https://developer.mozilla.org/en-US/docs/Web/API/MIDIAccess

Use this icon: http://fontawesome.io/icon/music/

The input should emit the payload as a buffer and a topic of midi
Output can accept string, array, butter whatever, but conver it to Buffer when sendind data to the midi output object.

More example of the API here: http://fontawesome.io/icon/music/

lodash collections node

a node similar to the new strings node. Implement all the methods in the collections group that don't require a function parameter.

Option Menus Should Be Rendered Better

Basically we are going to need to start transitioning our option menus that actually send data to the back end into a mapped JS object so that i can be passed into a test suite in the future.

resolve failed for "pagenodes-nodes": Error: Cannot find module 'pagenodes-nodes' node_modules\nan

Hi,
I am trying to setup in my windows 10 and getting below errors when i execute "npm run build" command.

resolve failed for "pagenodes-nodes": Error: Cannot find module 'pagenodes-nodes'
node_modules\nan
resolve failed for "grunt-simple-mocha": Error: Cannot find module 'grunt-simple-mocha'
resolve failed for "grunt-sass": Error: Cannot find module 'grunt-sass'
resolve failed for "grunt-nodemon": Error: Cannot find module 'grunt-nodemon'
resolve failed for "grunt-contrib-watch": Error: Cannot find module 'grunt-contrib-watch'
resolve failed for "grunt-contrib-uglify": Error: Cannot find module 'grunt-contrib-uglify'
resolve failed for "grunt-contrib-jshint": Error: Cannot find module 'grunt-contrib-jshint'
resolve failed for "grunt-contrib-copy": Error: Cannot find module 'grunt-contrib-copy'
resolve failed for "grunt-contrib-concat": Error: Cannot find module 'grunt-contrib-concat'
resolve failed for "grunt-contrib-compress": Error: Cannot find module 'grunt-contrib-compress'
resolve failed for "grunt-contrib-clean": Error: Cannot find module 'grunt-contrib-clean'
resolve failed for "grunt-concurrent": Error: Cannot find module 'grunt-concurrent'
resolve failed for "grunt-cli": Error: Cannot find module 'grunt-cli'
resolve failed for "babel-runtime": Error: Cannot find module 'babel-runtime'
resolve failed for "webpack-core": Error: Cannot find module 'webpack-core'
Hash: 0349934124d02f34fa48
Version: webpack 1.14.0
Time: 116412ms
Asset Size Chunks Chunk Names
function-worker.bundle.js 638 kB 0 [emitted] function-worker
j5-worker.bundle.js 1.95 MB 1 [emitted] j5-worker
service-worker.bundle.js 494 kB 2 [emitted] service-worker
ui.bundle.js 5.58 MB 3 [emitted] ui
+ 1011 hidden modules

WARNING in .//localforage/dist/localforage.js
Critical dependencies:
32:88-96 This seems to be a pre-built javascript file. Though this is possible, it's not recommended. Try to require the original source to get better results.
@ ./
/localforage/dist/localforage.js 32:88-96

ERROR in ./build/backend/plugin.js
Module not found: Error: Cannot resolve 'file' or 'directory' ./log in D:\MyGitRepos\pagenodes\build\backend
@ ./build/backend/plugin.js 3:10-26

buffer node

another passthrough node
if payload is a buffer, set payload to a string

if payload is not a buffer, set payload to a buffer.

allow users to set an encoding property.

firebase nodes

two of them.

One is output to store a value.
Other is both a through type node that reads a value, as well as an option for a persistent connection that monitors changes to a value.

update or remove Contributing.md

As pagenodes grows, there will be files that become outdated, and will need to be rewritten or removed. Here is a, make a mention in PR's for removal:

/CONTRIBUTING.MD // needs an overhaul in order to match current build styles
/src/editor/main.js //Has a lot of old information that needs updated around line 192
/public/index.html // This should probably get reflected over to both the github/twitter/website.
  • Geolocate has weird console.logs.

Expand VoiceRec

  1. Create the ability to do push-to-talk ability on a node.
  2. Create the ability to add a topic, so you can speak directly into a p2p node.

lodash 4

breaks the build and we're stuck on v3. We need the update for some new functionality.

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.