Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

enhacement: sqlite / multi db node #51

Closed
schroejahr2 opened this issue Aug 10, 2018 · 18 comments
Closed

enhacement: sqlite / multi db node #51

schroejahr2 opened this issue Aug 10, 2018 · 18 comments
Labels

Comments

@schroejahr2
Copy link

Hallo,
es wäre schön in zukunft die sqlite node zu integrieren, da das nachinstallieren nicht ohne weiteres funktioniert.

https://flows.nodered.org/node/node-red-node-sqlite

oder, direkt eine anbindung für MSSQL, MYSQL, SQLite, und PostgreSQL. :

https://flows.nodered.org/node/node-red-contrib-sqldbs

das wäre super !

@schroejahr2 schroejahr2 changed the title enhacement: sqlite node enhacement: sqlite / multi db node Aug 10, 2018
@hobbyquaker
Copy link
Member

ich würd jetzt eher zu den node-red-node-* tendieren, das node-red-contrib-sqldbs scheint mir nicht maintained zu werden, 1 jahr kein commit und keine antworten auf issues...

@Sineos
Copy link

Sineos commented Aug 10, 2018

Wäre hier die Redis Einbindung nicht bevorzugt?

Als Storage backend hört sich das super an, gerade auf so Geräten wie dem RPi:
https://github.com/allenan/node-red-contrib-redis-storage

Direkt von den NR Maintainern, aber leider nur out:
https://github.com/node-red/node-red-nodes/tree/master/storage/redis

Recht umfangreich aber wohl eher verlassen:
https://github.com/chameleonbr/node-red-contrib-redis

@hobbyquaker
Copy link
Member

hobbyquaker commented Aug 10, 2018

Redis geht quasi schon "out of the box", man kann node-red-node-redis über den Palette Manager nachinstallieren und ich hab auch schon ein Redis-Addon gebaut um den Server auf der CCU laufen zu lassen: https://github.com/hobbyquaker/ccu-addon-redis.
Bin aber auch grade dabei node-red-node-sqlite in RedMatic zu integrieren, will ich heute noch releasen. SQL hat ja auch was für sich, Jedem das Seine ;-)
btw - siehe auch #40 - Node-RED 0.19 wird persistente Context-Variablen einführen, wahlweise mit Dateisystem oder Redis als Storage Backend.

EDIT: grade gesehen dass node-red-node-redis nur ein output node ist :( müsste man mal testen ob sich die beiden alternativen installieren lassen oder ich die ins "prebuilt" reinnehmen müsste.

@schroejahr2
Copy link
Author

schroejahr2 commented Aug 10, 2018

redis hat natürlich auch seine vorteile.
Wobei sql einfach weit verbreitet ist und quasi auch von jedem anderen system oder programm direkt genutzt werden kann. mysql ist noch schöner, aber für diese lasten ist sqlite natürlich vollkommen ausreichend. ich bin aber auch einfach sql kind ;)

für mich ist es viel einfacher eben einen 2 zeilen query für z.b. nen moving average oder moving counter zu schreiben als mich anzupassen duck

@hobbyquaker
Copy link
Member

hobbyquaker commented Aug 10, 2018

Grade mal probiert: node-red-node-mysql und node-red-contrib-redis lassen sich installieren.

@hobbyquaker
Copy link
Member

So, v1.0.15 released, die beinhaltet nun node-red-node-sqlite.

@schroejahr2
Copy link
Author

schroejahr2 commented Aug 10, 2018

nur das backend fehlt dazu. bei sqlite ist es ja nur ne file.

@schroejahr2
Copy link
Author

das vorherige kommentar war auf die node mysql bezogen. ich update mal !

@Sineos
Copy link

Sineos commented Aug 10, 2018

Vielen Dank für das Update

Redis geht quasi schon "out of the box", man kann node-red-node-redis über den Palette Manager nachinstallieren

Was ich bei node-red-node-redis nicht verstehe, ist dass diese nur ein out aber kein in hat. Ziemlich sinnfrei.

@hobbyquaker
Copy link
Member

Jau, den node-red-node-redis versteh ich auch nicht - dafür ist node-red-contrib-redis um so mächtiger ;-)

nur das backend fehlt dazu. bei sqlite ist es ja nur ne file.

Wenn Du es haben willst kann ich bei Gelegenheit auch mal ein ccu-addon-mysql bauen, sollte kein allzu großer act sein, auch wenn ich mir nicht ganz sicher bin ob es sinnvoll ist was das wenige RAM und den gemächlichen io einer SD-Karte angeht...

@schroejahr2
Copy link
Author

genau das denke ich auch. sqlite ist sinnvoll mysql nicht.

Ich habe gerade schon meine flows auf die sqlite node migriert. funktioniert super, danke !

@schroejahr2
Copy link
Author

schroejahr2 commented Aug 10, 2018

hauptsächlich kam ich auf die sqlite idee, weil ich mit meinen bisjetzt begrenzten nodered kenntnissen ach einer möglichkeit gesucht habe einen durschnittsverbrauch von einem s0-bus stromzähler zu bauen den ich direkt mit dem pi abnehme (1000 impulse / kWh).

Die einzige Lösung war mir sowas :

timestamp = (new Date()).getTime();
array = context.get('usage');
if( array === undefined){
array = [];
}
array.push(msg.timestamp);
array = array.filter(t => t >= (timestamp - 60000));
context.set('usage',array);

msg.payload = (array.length * 60 / 1000);
return msg;

Aber nun logge ich alles inkl timestamp in die sqlite (neben anderen flows) und kann mir mit nem query alle möglichen arten an graphen ziehen. perfekt !

@schroejahr2
Copy link
Author

aja mit durchschnitt meine ich "gleitenden durchschnitt" über die letzten x (hier 60) sekunden

@Sineos
Copy link

Sineos commented Aug 10, 2018

Ich nehm für alle solche Themen: https://www.npmjs.com/package/node-red-contrib-aggregator
Super nützlich für IoT

@schroejahr2
Copy link
Author

schroejahr2 commented Aug 10, 2018

oh schönes teil danke für den hinweis.

sqlite ist in meinem fall perfekt da ich die daten gespeichert habe und beliebige graphen erstellen kann auch auf historische daten.

@hobbyquaker
Copy link
Member

hobbyquaker commented Aug 10, 2018

das "node-red-contrib-combine" dass ich mit redmatic mitliefer kann auch gleitende mittelwerte bilden (und einiges mehr) ;-) (nur der vollständigkeit angemerkt ;-)

@schroejahr2
Copy link
Author

das "node-red-contrib-combine" dass ich mit redmatic mitliefer kann auch gleitende mittelwerte bilden (und einiges mehr) ;-)

Das habe ich versucht aber ich bin vorerst gescheitert (wie gesagt node-red ist neu für mich).

Das Problem ist das ich halt unregelmässige messages mit ner 1 bekomme, und die anzahl davon über die letzten 60 sekunden haben will - aber bei jeder message aktualisiert - also auf den neuen zeitrahmen verschoben.

Vielleicht ist das möglich, mir zumindest war nicht direkt ersichtlich wie. dazu fehlt dann bei nodered die erfahrung.

@hobbyquaker
Copy link
Member

Ja, ich muss mal an der Doku von den combine-Nodes arbeiten. Ich denke Dein Ziel müsstest Du erreichen mit dem combine - statistic Node, Timeout auf 60000 setzen, zum Zählen der Anzahl der Nachrichten stellst Payload auf "count". Distinction auf "_msg.id" setzen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

No branches or pull requests

3 participants