Mycontroller 2.x ideas
-
-
Well the minimal system requirements give an indication on what hardware should be used. OPI0 is from a memory perspective a little "light". anyway it all depends on the load. So it might be that for you it works fine.
-
Thank you!! will have a look!
-
@jkandasa
Thank you for the project. I like MyController a well-developed transport layer, a lot of communication interfaces. I like using the MQTT broker. There is not enough user-friendly dashboard with drag and drop programming, so that the user does not need to delve into the subtleties of html, css, etc. to connect third-party widgets. I want a script editor with direct access to InfluxDB, so that you can make decisions on historical data, including the old one.
I do not know how to write this all at https://github.com/mycontroller-org/mycontroller/projects/1 and what open sourse resources to use. So I write the wishes in this topic.
In general, MyController cool thing! -
I think I might suggest that you forget about the dashboards, graphs and gauges, and focus on the data-flow, conversions, notifications and rules.
And dont be fooled by the time it takes to start from scratch. I dont think your timing is right, I dont see any benefits of changing all those frameworks. But a significant re-design of some parts might be cool.
-
@njbuch
You are right! I am not going to start from scratch. I will start 2.x branch from the existing code and do major changes, like support ACK (needs a lot of change on message queue), Rul engine performance improvement, Switch to Angular4 on UI, standardize REST API, ionic mobile application, InfluxDB for metrics(no more RDBMS metrics support) and much more.I have rewritten everything. Reasons:
- needs to write everything on GoLang (backend), ReactJS (frontend)
- However I have taken the logic used in 1.x, So it speeds up the development
-
The one thing I can say would be nice (from a very early user) is less reliance one scripting based setup.
While I don't mind delving into it, the ability for my non-programming-centric wife to be able to edit the schedule for our watering system would be nice.
There is a button to change the state of my relays, why do I have to script a timer for them?
set the run time in the operation for each zone, set the schedule using the timer, run.
Hope to discuss more with you all as I learn more myself!
-
@zachflem Thank you for your idea. Could you please elaborate a bit more on this? Do you want to implement readymade widget kind of things to replace script?
-
@jkandasa I like the scripting ability, don't get me wrong.
But...
I've got switches setup on the dashboard for 2 relays. It would be nice to add a feature to those switches to automatically turn them off after x seconds/minutes.
or
As part of the operations tab, have the option to select the sensor (in this case a relay) and set the status to "ON" and the duration to x seconds/minutes. Then setting a reoccuring timer to run, using that operation would result in the sensor (the relay) operating for the defined duration.
I might not be explaining myself very well, I'd just like to see some scheduling into the GUI so my wife could change/setup a new watering schedule if I'm not around.
A little off topic, but is there any documentation about scripting in mycontroller?
-
@zachflem well, this is a nice request. I will take it to the todo list.
-
@skywatch I'm adding your idea here,
For V2.0 you might like to think about a page in the settings area with radio buttons to set the 'INFO' / 'DEBUG' etc parameters. Would be easier, especially for people who are new to linux.
Source: https://forum.mycontroller.org/topic/328/serial-problem/43
-
@jkandasa , how is it going with the implementation of 2.x release?
Did you have a chance to start working on it? -
@daniele Thank you for your patience. No, Still I'm on collecting ideas and coding languages.
For now, for UI I have chosen ReactJS, it has good support for native mobile application too. -
I've tested InfluxDB + MyController on my Raspberry Pi 3 for a few months now (thank you so much again for your work @jkandasa). The setup offered super easy way to submit readings into a database but I noticed weird anomalies and after some time I started seeing corrupt data. I'm going to switch everything back to PostgreSQL and see if that could provide more stability.
Although (memory) heavy, I do feel Java runtime provides significant and important cross-platform support with better performance than say Python or Node. What I mean is that current choice to use Java is not a bad one.
The WebUI is as well a bit heavy on browsers, but it can be sped up significantly with modern tech such as HTTP2 (+PUSH) and TLSv1.3 making it absolutely okay to use - some good CSS could fix pretty much everything wrong with it. What I fear is that going with the latest tech here, expecting good cross-platform support and easy code, will end up worse than what we have now, for example HA's webgui. I propose that MyController provides a good API, something uses that API to render a webGUI (the webgui could use say Grafana by-default to display graphs instead of reinventing the wheel) or to display data in a native Android application.
-
@avamander Great points! I will keep in mind these point for MyController 2.x.
Thank you so much! -
@jkandasa Something that would be good is a way to flag aged data or node down on the dashboard display.
As it stands we cannot know 'when' the last data arrived or if the node is still sending data.
It would be good to have a method where by if no data is received after a certain amount of time (setting individually for each node or better still each sensor) then the display on the dashboard can change text colour.
So lets say I have a node or sensor that sends data every 5 minutes. I can have a setting that says 'If no data after 12 mins' then the text turns amber. Next if no data after 30 mins then the text turns red. The times should be individually selectable by user.
Whilst it's relatively easier to see the time of data with graphs, it's still possible to glance at a graph without taking note of the times and assume data is current.
-
@jkandasa
I see this thread is quite old, nevertheless I'd like to share my thoughts after having played with MyController 1.5 snapshot for a while. As a almost non-programmer, quick changes in GUI or implementation of own scripts is a major hurdle. I have fun in designing the sensor nodes, tweaking the PCBs even further (I may publish the result at openhardware.io one day!). Regarding the controller GUI, the so-called WAF is not to be underestimated. I need expressed acceptance of my wife to install some funny electronics device in our living room. And I only get approval, if the look&feel is most easy and convenient and if the device is useful and non-obtrusive. I see many very convenient setup and configuration options in MyController, but I regret to say there are also some drawbacks with the current version that make me hope for a version 2 one day. I would be more than happy if I could find that one or another of these drawbacks were solved at a later date.1. Changes in layout are almost impossible.
I found the *.css file and could vary font sizes for sensor display values, but this is extremely troublesome, as the *.css file is not structured. I helped myself with the browser's debugger and tried to find the relevant locations in the *.css file and was partly successful - but this is no method that I can carry out after every version step you may publish.
Why do I need this? I want a nice display in my living room. Not everything is formatted in a way I need it. For example, outside temperature display should be as big as possible. Sunrise/Sunset maybe medium size, whereas I pretty well know the name of my village, so that I'd be fine with 6 pt2. No information on aged or non-available data
This has been posted before. If a sensor fails, the last reading will always remain displayed. This gives a false feeling of confidence. For example, temperature changes in my deep freeze should be actual, or I wouldn't need a supervision at all. A greyed-out display or a simple "n/a" would do very well.3. Some browsers cannot process the active contents
I reported this for my old iPad 2 (which is a excellent choice as it consumes a mere 3 watts, which is less than a Raspi Zero W plus a DIY TFT). I found a workaround, but on account of flexibility.4. Dashboard logs me out after three days
This is a no-go for a stationary display. I cannot go there every third day and type in my account/password.5. Battery status beside sensor reading
Well, this may be more sort of a luxus item, but if I have a "show only" display without touch ability and only one screen that should fit all purpose, the battery percentage value in a (configurable) small font would help to check the status by just having a closer look. -
@Matt Thank you so much for the great feedback! I do consider your requirements in mind.
-
@jkandasa Somwthing else I'd like to see within the controller is a facility to get user defined updates (hourly, daily, weekly, monthly) from an NTP server with added function to push updated time to an attached RTC module. Also for MYC to determine if NTP time is available and if not use the RTC as time source.
The DS3231 is the most popular of the 'reasonable' RTC modules and is relatively cheap too.So in summary something in the settings to allow/enable use of RTC and to select how often to update system/RTC time. Then also a test of NTP connectivity and if lost switch to RTC time (or maybe use RTC time all the time if available).
-
@skywatch I just had another idea.
Smart Recovery mode for my controller.
In this mode if the controller or gateway are down (say due to a power cut) then on restart the controller will look into the settings and make sure things are how they would have been if no power cut happened.
So if a light should have been turned on during the power cut, then on controller restart it will know this and turn the light on. Also, if there were multiple on/off cycles during the failed state the controller will still be able to calculate what the status should be and send message accordingly.