Flow "error" with objects on dashboard

Bad news......

A while ago my main RPI kinda chucked it in.

My WAP and NTP, and MAIN RPI isn't working.

The WAP suddenly stopped working and because it was running Jessie, I decided to update to Stretch and be done with the "get it updated" posts.

I have rebuilt it with Stretch and got it up to date - well that's still work in progress but - I have NR installed and updated.

I am now going through the fun of trying to get it working.

I load the web page and get a warning about the credentials - which I haven't set - but I'll get to that.

In the mean time I need to check something else on another RPI so power it up.

Alas this is where the problem starts:

See attached.

Two things are in error. Chart and Gauge.

I open the node and (one example only given):

Screenshot%20from%202018-11-11%2019-19-23

So: What's "wrong" with it?

Sorry if this is a silly question, but I am stuck with what is going on.

The machine should work as it did before.
The fact I have updated the "main" one shouldn't change how this one works in showing a Chart and Gauge.

Thanks.

(Edit)
This is something I found when looking at the palette menu:

Screenshot%20from%202018-11-11%2019-35-42

Though I maybe should be able to get it, Type already registered.......

Ok, but it doesn't elaborate on the conflict.

I'll keep digging.
(Though I am still appreciative of help)

First switch off the one you have updated. If the problem goes away you were looking at the wrong machine.
If it is still the same then something must have changed on that machine. Are you sure you did not get confused at some point and make changes on the wrong one?
I also notice in the image that the Deploy button is enabled, which means you have made changes to the flow since you opened the browser. Close the browser window and re-open it and see what happens. You will get a warning when you try to close it asking if you want to leave the page because the browser will know you have made changes, select leave anyway.
Then if the problem still exists have you somehow installed two dashboards? Look in the palette for anything suspicious.
Finally if no joy then post the node red log from a restart of node red.
I am assuming that you have not got an up to date backup of your flow file, or you would already have told us what the effect of reverting that was.

So you appear to have two modules installed that provide dashboard nodes.

Review your list of installed modules for anything else dashboard related. That's probably the case here... It has loaded the 'wrong' version of the node you are using and it expects a different configuration so displays as a validation error in the editor.

Colin,

Today I powered it up and same problem.

(again see attached)

Note this is IP address 94

(and oops, I do have a back up... Silly me for not trying it.)

Nick.

I'm guessing your statement is from information on the second picture.

I too am guessing this is the problem.

I won't "waste" any more time with more information at this stage as I will go off and try the backup first and see what happens.

Silly me. That is why I have backups. And I didn't think to use them.

Shall post back with more information as it comes to hand. (Maybe 20 minutes time)

EDIT:
Ok, here's the first "twist":
Backup files (old) vs What is now in the directory:
Directory name format: year-month-date-hr.mn.se
(newer backup script with time)

pi@BeefPi:~/Backups/NR $ lf 2018-09-09
flows_BeefPi.json  flows_PIFACE_cred.json  flows_PIFACE.json  package.json  package-lock.json  settings.js
pi@BeefPi:~/Backups/NR $ lf 2018-11-12.16.35.38/
flows_BeefPi_cred.json  flows_BeefPi.json  flows_PIFACE_cred.json  flows_PIFACE.json  package.json  package-lock.json  settings.js
pi@BeefPi:~/Backups/NR $ 

6 files vs 7.

Another twist is the names.
The machine is BeeefPi.
Yet there are PIFACE files in the list. Even the old (original/working) ones.

What is this new flows_BeefPi_cred.json?

(The ONLY machine which I tried the certificate stuff on was the one which is now out of commission and I tried it, and put it back to normal. But that's another story.)

Ok,

To not confuse what I have posted and what has since happened.

Given:
There were 6 files in the old version - working - and there are 7 in the new.
(sorry lost the scroll back as I am rebooting the machine)
As best as possible:

cd .node-red
rm *.json
cd~/Backups/NR/2018-11-12.xx.xx.xx
cp * ~/.node-red
sudo reboot

I am guessing that that would be ok.

On THIS machine I have opened a new window and entered the address.
Same problem.

So I guess Nick is correct in his suspicion.

Now, to the palette:
Putting aside the "contrib-filer-else" conflict.

node-red-dashboard
2.10.1

    Type already registered
    Type already registered
    Type already registered
    Type already registered
    Type already registered
    Type already registered
    Type already registered
    Type already registered
    Type already registered
    Type already registered
    Type already registered
    Type already registered

Ok. Not the most informative for WHICH, but.....

Opening it up:
..... :frowning: Sorry. Not much more information given.

Scrolling FURTHER down.....

node-red-node-sqlite
0.1.2

    Error: Cannot find module '/home/pi/.node-red/node_modules/sqlite3/lib/binding/node-v57-linux-arm/node_sqlite3.node' (line:5)

That's a new one.

Though probably not really important at this time.

Thought: (I know they are dangerous) So, could I resolve this problem by deleting the flow/s and going back to an empty NR, uninstall the dashboard, re-install the dashboard and then copy back the flows?

(Shrug)

Thanks.

I hate to think all the others have this problem too.

Ok, quick update no my idea:

Deleted the flow. NO NODES IN USE.

REBOOTED.

Loaded the edit page.

Opened palette manager.

Can't uninstall the dashboard: IN USE!

Ok.......

MORE:

Getting adventurous, I tried this link:
Updating

Just for the fun of it:

pi@BeefPi:~ $ sudo npm install -g --unsafe-perm node-red
npm WARN deprecated mailparser@0.6.2: Mailparser versions older than v2.3.0 are deprecated
npm WARN deprecated nodemailer@1.11.0: All versions below 4.0.1 of Nodemailer are deprecated. See https://nodemailer.com/status/
npm WARN deprecated mimelib@0.3.1: This project is unmaintained
npm WARN deprecated mailcomposer@2.1.0: This project is unmaintained
npm WARN deprecated buildmail@2.0.0: This project is unmaintained
/usr/bin/node-red -> /usr/lib/node_modules/node-red/red.js
/usr/bin/node-red-pi -> /usr/lib/node_modules/node-red/bin/node-red-pi
+ node-red@0.19.5
added 11 packages from 1 contributor, removed 13 packages and updated 28 packages in 135.963s
pi@BeefPi:~ $ cd ~/.node-red
pi@BeefPi:~/.node-red $ npm outdated
Package                              Current  Wanted  Latest  Location
node-red-node-serialport             MISSING   0.4.4   0.6.8  node-red-nodes
grunt-contrib-jshint                   1.1.0   1.1.0   2.0.0  node-red-nodes
mailparser                             0.6.2   0.6.2   2.4.0  node-red-nodes
mocha                                  3.5.3   3.5.3   5.2.0  node-red-nodes
node-red-contrib-bigtimer              1.7.9   1.7.9   2.0.3  node-red-nodes
node-red-contrib-blindcontroller       4.3.3   4.3.3   4.6.0  node-red-nodes
node-red-contrib-google-home-notify    0.0.3   0.0.3   0.0.6  node-red-nodes
node-red-contrib-play-audio            2.3.1   2.3.2   2.3.2  node-red-nodes
node-red-contrib-time-range-switch     0.4.0   0.4.0   0.6.1  node-red-nodes
node-red-node-ping                    0.0.13  0.0.13  0.0.15  node-red-nodes
node-red-node-random                   0.0.8   0.0.8   0.1.2  node-red-nodes
node-red-node-smooth                  0.0.11  0.0.11   0.1.0  node-red-nodes
node-red-node-sqlite                   0.1.2   0.1.2   0.3.5  node-red-nodes
node-red-node-suncalc                  0.0.9   0.0.9  0.0.11  node-red-nodes
nodemailer                            1.11.0  1.11.0   4.6.8  node-red-nodes
proxyquire                             1.8.0   1.8.0   2.1.0  node-red-nodes
should                                11.2.1  11.2.1  13.2.3  node-red-nodes
sinon                                 1.17.7  1.17.7   7.1.1  node-red-nodes
pi@BeefPi:~/.node-red $ 

Rebooted.

SAME PROBLEM.

The dashboard is IN USE.

ui-base
ui_group
ui_tab

So I guess it is going to be difficult neigh impossible to resolve those.

I also have (previously stated) conflicts with:

node-red-contrib-filter
0.1.3
node-red-contrib-filter-else
0.1.0

    Type already registered

node-red-dashboard
2.10.1

    Type already registered
    Type already registered
    Type already registered
    Type already registered
    Type already registered
    Type already registered
    Type already registered
    Type already registered
    Type already registered
    Type already registered
    Type already registered
    Type already registered


node-red-node-sqlite
0.1.2

    Error: Cannot find module '/home/pi/.node-red/node_modules/sqlite3/lib/binding/node-v57-linux-arm/node_sqlite3.node' (line:5)

That's all I can offer for now.

@Trying_to_learn lets go through these items one at a time.

That is your credentials file - note the _cred part of the name. Previously, none of your nodes had credentials, so no credential file was created. You then (correctly) set credentialSecret in your settings file, so the runtime has created an encrypted credentials file for you. That is entirely expected and shows you've correctly set it up. There's nothing else to discuss here.

I said in my reply: Review your list of installed modules for anything else dashboard related. Have you done that?

Deleting flows is pointless and counter productive as you are deleting your own work and will do nothing to resolve the Type already registered issue which is the real problem you should be focussed on.

You need to look at the list of modules you have installed and find any that mention dashboard in their name other than node-red-dashboard. Once you have found it, remove it. This is exactly the same process as we did with the filter error - but I note you've done nothing to resolve that error either.

You do not need to uninstall node-red-dashboard. That is the right module to have installed and reinstalling it won't do anything about the other module you have causing the conflict.

To be absolutely clear you do not need to delete you flows to resolve the Type Already Registered errror. But in the vague hope it will clarify things, you may have deleted the regular nodes in the flow, but the ui_base, ui_tab and ui_group node types are configuration nodes. They do not appear in your main workspace. You must open the Configuration Nodes sidebar tab to find them and delete them. You could also bring up the search dialog (Ctrl-F) and search for each of those types in turn to find the nodes you still have in your configuration.

But, and I'll say it again, you do not need to be deleting all those nodes to resolve the main problem you have - the type already registered error.

​​

Nick,

I am not doing it to simply be difficult. I am trying things to try and see the bigger picture.

Granted: Deleting flows is pointless.

but I note you've done nothing to resolve that error either.

Well, yes and no.

The node has (MANY TIMES been attempted to be uninstalled/removed. It won't.

The three little black bars appear on the screen as it attempts to be removed and...... It just doesn't seem to want to.

Granted I haven't waited until it has finished "blinking the bars" on the screen, but what is a nominal time to wait? (10 minutes?, more?)

** Ok, maybe it will take a long time. Which is a slight problem I have with time allocation. But when I have installed/removed other nodes on the RPI, they don't take that long.

So for what ever reason, it won't/can't be removed. As it isn't causing conflicts, I decided to just accept it and not lose sleep over it.

And as I also mentioned the SQLITE ( node-red-node-sqlite ) is now putting its hand up complaining. But I feel that is yet another problem. Ok, I'll skip that.

The dashboard thing:

I said in my reply: Review your list of installed modules for anything else dashboard related. Have you done that?

Yes. AND I have shown the pictures/screen shots.

I've opened the list and seen a lot of "Type already defined" but that's about the size of the information given.

There is nothing saying WHICH node is the problem.

Just a list of node names and some saying "IN USE". I don't see anything saying THIS is the node that is already defined.

Deleting flows is pointless and counter productive as you are deleting your own work and will do nothing to resolve the Type already registered issue which is the real problem you should be focussed on.

Again: I agree fully. But if the "type already registered" node is conflicting, I need to free up all the nodes used so I can uninstall the offending set.

So I TRIED something to see if I could nut it out myself. But it didn't work. As I have backups of the files, I don't think it was such a waste of time, other than it didn't allow me to remove the used nodes because of what I have said above.

And, yes, I was trying to uninstall the "wrong" set. But as there are no other objects/nodes/what ever saying "I have a conflict as well": It makes for scares pickings.

How can NR report TYPE ALREADY REGISTERED and only show HALF the problem?

To explain:

Say I have a "set" which has a node called: foo.

I install another "set" and it also has a node called foo.

Wouldn't BOTH these sets show up as having a conflict?

So to show you what I have (again):
There are no others saying that. I can't resolve the message "Type already registered" because it is only telling me half the problem.
Be it in the part of the list of at the other side where the conflict is.

Where I am at this point I am only seeing one of the two notifying me of the conflict.

Have you looked at the Node-RED log on startup? Depending on what version you are using, the extra information you want could be there.

You have not, as far as I can see, provided a list or screenshot of all the extra modules you have installed. As I've said repeatedly, you need to identify which extra dashboard module you have installed. If it isn't obvious when you search for 'dashboard' or 'ui' in your list of installed modules, then please let us have a look.

If the uninstall isn't working from the UI, then you should try running the appropriate npm remove <module-name> in /home/pi/.node-red.

The Node-RED log.

Yeah. Right.

Sorry, but I have searched "Node-RED LOG" (got this)
NODE RED LOG

Which is nice to read, but doesn't tell me WHERE the log is.
(Or its name. Though I guess it will have node-red in the name somewhere.)

In the mean time - on the removal of a node:

pi@BeefPi:~/.node-red $ npm remove node-red-contrib-filter-else
npm WARN deprecated nodemailer@1.11.0: All versions below 4.0.1 of Nodemailer are deprecated. See https://nodemailer.com/status/
npm WARN deprecated mailparser@0.6.2: Mailparser versions older than v2.3.0 are deprecated
npm WARN deprecated formatio@1.1.1: This package is unmaintained. Use @sinonjs/formatio instead
npm WARN deprecated mailcomposer@2.1.0: This project is unmaintained
npm WARN deprecated mimelib@0.3.1: This project is unmaintained
npm WARN deprecated jscs-preset-wikimedia@1.0.1: Deprecated in favour of eslint-config-wikimedia. -- https://phabricator.wikimedia.org/T118941
npm WARN deprecated buildmail@2.0.0: This project is unmaintained
npm WARN deprecated nomnom@1.8.1: Package no longer supported. Contact support@npmjs.com for more info.
npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
npm WARN deprecated hoek@2.16.3: The major version is no longer supported. Please update to 4.x or newer
npm WARN deprecated hoek@0.9.1: The major version is no longer supported. Please update to 4.x or newer
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/ansicolors
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/co
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/esprima
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/fast-deep-equal
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/graceful-fs
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/js-yaml/node_modules/esprima
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/jscs/node_modules/esprima
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/json-schema-traverse
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/lru-cache
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/node-red-contrib-isonline/node_modules/bluebird
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/node-red-contrib-ui/node_modules/object-assign
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/object-assign
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/pg-pool/node_modules/object-assign
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/redeyed
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/cardinal
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/mysql2
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/retry-as-promised/node_modules/bluebird
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/sequelize/node_modules/bluebird
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/ajv
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/har-validator
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/node-red-contrib-filter-else
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/js-yaml/node_modules
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/jscs/node_modules
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/node-red-contrib-isonline/node_modules
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/node-red-contrib-ui/node_modules
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/pg-pool/node_modules
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/retry-as-promised/node_modules
npm WARN checkPermissions Missing write access to /home/pi/.node-red/node_modules/sequelize/node_modules
npm ERR! path /home/pi/.node-red/node_modules/ansicolors
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/home/pi/.node-red/node_modules/ansicolors'
npm ERR!  { Error: EACCES: permission denied, access '/home/pi/.node-red/node_modules/ansicolors'
npm ERR!   stack: 'Error: EACCES: permission denied, access \'/home/pi/.node-red/node_modules/ansicolors\'',
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/home/pi/.node-red/node_modules/ansicolors' }
npm ERR! 
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR! 
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator (though this is not recommended).

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/pi/.npm/_logs/2018-11-13T00_51_25_511Z-debug.log
pi@BeefPi:~/.node-red $ 

I'll now look in /home/pi/.npm/_logs/2018-11-13T00_51_25_511Z-debug.log
(Yeah, right. See attached.... Oh. %&^%^& It's on the other machine.)

2018-11-13T00_51_25_511Z-debug.log.txt (304.3 KB)

I can't make much of it.

Does it help with the problem?

** RESOLVED **

Now doing the sqlite node the same way to at least get rid of another error.

UPDATE
(me and my big mouth)
I got rid of the "node-red-contrilb-filter-else" and it wasn't showing.
THOUGH the sqlite wasn't a "type already registered" error, it wouldn't un-install from the GUI.
Considering that after getting rid of that node (command, reboot, reload page: GONE from palette.)
I thought I would do the same with this sqlite node.
Rebooted, reloaded the page.
"node-red-contrilb-filter-else" is B-A-A-CK!

ARGH.


Oh, update on "node-red-contrilb-filter-else":

Did the command as shown above.

REBOOTED after that.

Reloaded the page.

The node is still shown.
(with conflict)

Sorry Nick, but you have LOST ME with what you are saying.

I don't understand what you mean:

you need to identify which extra dashboard module you have installed

Alas it seems I will have to default to the second option you offered. Not that I like having to do that.

If it isn't obvious when you search for 'dashboard' or 'ui' in your list of installed modules,

I have the node-red-dashboard (exact name ....?) installed. That is a given considering it is saying there is a problem with "type already registered".
But what do you want? A list of installed nodes?

I'm guessing this is the problem:
node-red-contrib-ui

Somewhere when I was learning/playing with buttons I must have been told to install/use this.

Why/how it got installed is one thing.

BUT as it is installed, it raises questions from the end user:
1 - why is it only NOW that I am seeing this "type already registered" error when I haven't used this machine for a while.
2 - Upon initial installation why wasn't I made aware of the conflict at THAT time? (Rather than now: some time in the future)

So: given it is using the gauge and chart nodes (and the ui_tab) I am guessing I shall have to delete them from the existing flow and un-install that "set"?

OK the command you want for the logs is

node-red-log

this essentially filters the /var/log/syslog log for node-red entries

contrib-ui was (i believe) the forerunner to Dashboard - i remember when they brought it under the official node-red umbrella and renamed it - there were a number of dire warnings about installing both together (don't cross the streams and all that) !

I assume you have node-red auto starting on boot - if so shut it down, then start it from the commandline so you can see all the start up messages as they go across the screen - this might give you some idea of what is happening.

Nick has asked you to provide us a screenshot - or multiples of each of the nodes that youhave installed in the palette manager - can you do that so we can see what you actually have there as well ?

Craig

Nodes installed on said machine:
(BeefPi) (.94)

Which is a good thing.

But, there are problems with that.

"BeefPi" - the one which has the problem/conflict is a NEW machine in the scheme of things.
I have been down that path of conflicting dashboards. At the beginning I fell for that a couple of times (as I am sure Nick will confirm) but relatively: They were EARLY days.

BeefPi was built less than a year ago at a guess and it had a very recent version of NR installed.
I had got the install process down pretty well and things were working nice.
(I have checked another machine which is OLDER than BeefPi and it doesn't have the problem.)

So something else is happening that this contrib_ui getting installed. I'm not going to lose too much time on it, but am mentioning it for the sake of this disparity.

BeefPi isn't on much. Maybe about as much as the other one.
Recently I did do an entire network update of NR. This may have been the point of the problem happening. Dunno.

So it arcs back to the question:
Why wasn't I given a notification of this "conflict" sooner?
(See my other post)

No blame laid. Just saying.

In the mean time I have found the conflict and deleted the offending things. Re-allocated them to the dashboard, as opposed to the contrib_ui part.

Removed it. All good.

Though I am still having problem with the filter/else thing. It went away, I then removed another sqlite thing and the one I just removed came back. That was mentioned in one of my edits.

I think/hope that the ORIGINAL problem has gone.

This node-red-contrib-filter-else is now a pain in the $$$$$

What happens when you run
npm remove node-red-contrib-filter-else

What happened is:

It went away. (After reboot)
So I did the npm remove node-red-contrib-fileter-else

With that "working" I then tried it with the node-red-node-sqlite thingy.

Rebooted

node-red-node-sqlite gone.

node-red-contrib-filter-else BACK.

I'm not sure if I then re-removed it or left it as is and left it as is for now.

@Trying_to_learn can you confirm what directory you ran the npm remove node-red-contrib-filter-else command in?

In the file /home/pi/.node-red/.config.json search for node-red-contrib-filter-else. If it's there, it will have a file property - please tell us exactly what it says.

This is a known issue and one we will resolve at some point. Right now, Node-RED doesn't have the information to know there will be a conflict until it tries to load the second module - at which point its too late to handle properly.

Really? In the many previous discussions we've had with you, we have talked about the log and you've shared the log output with us. Please bookmark this thread and the response from @craigcurtin so you know how to access the log the next time.

To the best of my knowledge it was ~/.node-red
(Powering machine up now - though why I am not 100% sure)
(Oh, to answer the next part)

Ok, this is what I see:

pi@BeefPi:~/.node-red $ cat .config.json | grep node-red-contrib-filter-else
  "node-red-contrib-filter-else": {
   "name": "node-red-contrib-filter-else",
     "module": "node-red-contrib-filter-else",
     "file": "/home/pi/.node-red/node_modules/node-red-contrib-filter-else/filter.js"
pi@BeefPi:~/.node-red $ 

So, going a bit more:
nano won't let me scroll line by line, so this is the best I can do

   "name": "node-red-contrib-filter-else",
   "version": "0.1.0",
   "local": true,
   "nodes": {
    "filter-filename": {
     "name": "filter-filename",
     "types": [
      "filter"
     ],
     "enabled": true,
     "local": true,
     "module": "node-red-contrib-filter-else",
     "file": "/home/pi/.node-red/node_modules/node-red-contrib-filter-else/filter.js"
    }
   }
  }
 },

Note:
At this point in time as is:
Conflict with:
node-red-contrib-filter-else
node-red-node-sqlite

There is no other conflicts with the dashboard.
But, while scrolling through the .config.json file, I did see mentioning to the old node-red-contrib-ui.

In the directory ~/.node-red do the following:

  1. run npm remove node-red-contrib-filter-else
  2. run npm remove node-red-contrib-ui
  3. edit package.json and make sure neither of those modules is listed in the dependencies section. If they are still listed, delete them from the file.

As for sqlite... that is not a conflict, it is a general error with the module.

  1. run npm rebuild sqlite3