February 7, 20179 yr 17 minutes ago, SilverNodashi said: uhm, I did suggest it right from the start how is your software going , can you talk to the inverter now from the PI ?
February 7, 20179 yr Just now, Manie said: Still not solving the issue if the user want to download the app and do the installation themself Still in my eyes ms access is the way to go for a single app db. There are a lot to choose. Server and so on obviously not . If you look at JDP AICC many still use it till today without the corruption and things as said above. It is up to the programmer to ensure how he aces the db and store data. I mean like simple for loops as you can just use a normal update or insert to do stuff. If you program wrong everything will be slow etc Make the mysql installation routine part of the initial setup routine. It would run in the background and the user won't even know it happens. But, again, this is your thing, if you want to use Access, do it.
February 7, 20179 yr 1 minute ago, SilverNodashi said: But, again, this is your thing, if you want to use Access, do it. No it's a suggestion and i like yours . Thanks . I want to make thing easy for people and your suggestions will make this possible and i do appreciate it Which one postgresql or mysql is the winning choice ?
February 7, 20179 yr You can always bundle a precompiled preconfigured version with the app. I once made an RPM for a well-known communications company that bundled a java point of sale with postgresql, complete with a java runtime and hardcoded default passwords (cause that is what they wanted). Time to learn how to build debian packages? :-P
February 7, 20179 yr Author 4 hours ago, Manie said: Whats wrong with Acess. Flat files to me is realy stupid option. Wonder why so many use acess ? Looking for options not criticism for easy acess for people to use. Yes msql ect are better but cost more. Manie, I would opt for MySQL based on what I know about database management and ICC in it's pi and Windows versions. Reasons: Access is essentially a front end DB (i.e. it is a user interface that allows people to see and manuipulate records). For this reason it is a clunky option. I have used MySQL, Postgre, MariaDB, MSSQL etc. MSSQL and MySQL are very similar in functionality and possibilities and there is little to choose between them. They are a proper back-end DB that is more appropriate for this type of application (to my mind) but at the same time it is easy to create front-end viewers. For example Access can easily be set up as a front-end for non-expert users to view selected data in MSSQL. MSSQL has a free version (not many people know this) - it is only limited by number of processors and memory capacity on the host but the free version's capabilities far exceed what is needed for ICC. While there is a free version of MSSQL, I would run with MySQL simply because ICC runs on Linux and MySQL is fully compatible there. It is easy to attach front-end "readers" onto MySQL as well, if necessary, so that no-expert users can read data and do simple diagnostics without damaging any data. DB permissions are important. With either MySQL or MSSQL you have the fine-grained permissioning on tables and DBs that you really need for these apps. This is also important looking forward as the project grows and for interoperability. Ultimately your choice of course as you are deeper into the code development but my advice would be MySQL. This is based on quite a lot of years' experience with DB admin, working with both MySQL and MSSQL.
February 7, 20179 yr 8 minutes ago, incagarcilaso said: Ultimately your choice of course as you are deeper into the code development but my advice would be MySQL. This is based on quite a lot of years' experience with DB admin, working with both MySQL and MSSQL. I agree, I do a lot of db base applications but for windows. Pi is different as it a small device and you have to think about options. Iike SSD today is much faster especially with development. Also who is going to maintain the DB. Face it we can't compare as SD card to one of those. So you have to think about all factors
February 7, 20179 yr Author Just now, Manie said: I agree, I do a lot of db base applications but for windows. Pi is different as it a small device and you have to think about option. Iike SSD today is much faster especially with development. Also who is going to maintain the DB. Face it we can't compare as SD card to one of those. So you have to think about all factors It is the biggest decision to make in the initiation of the development process as it is the heart of the app and everything depends on it, everything. As you say there are so many factors. It may mean that for Pi, the answer is DB x, while the Windows ICC needs DB y. They are two different apps so I suppose that is not an issue. DB maintenance is an issue. You can of course set up automated maintenance tasks but there is only so much those can do without the intervention of a DB Admin from time to time. However, these are still arguments for using MySQL or MSSQL over Access or others, for me.
February 7, 20179 yr 1 hour ago, Manie said: I agree, I do a lot of db base applications but for windows. Pi is different as it a small device and you have to think about options. Iike SSD today is much faster especially with development. Also who is going to maintain the DB. Face it we can't compare as SD card to one of those. So you have to think about all factors So when you go the Microsoft route you have luxuries like SSD drives? But not on a Raspberry Pi? Why not? How does a Raspberry Pi limit those options? Or is it Linux that limits those options? You have the advantage of a small, cheap, low power consumption device which can monitor and control many analog and digital sensors, manipulate many electronic devices (relays, fans, alarms, actuators for ventilation, water pump bottles for topups, etc) and would hardly ever need updates or Internet security subscriptions. But the problems you face are the database, based on the fact that a Raspberry Pi doesn't have a SATA port?
February 7, 20179 yr 56 minutes ago, incagarcilaso said: It is the biggest decision to make in the initiation of the development process as it is the heart of the app and everything depends on it, everything. As you say there are so many factors. It may mean that for Pi, the answer is DB x, while the Windows ICC needs DB y. They are two different apps so I suppose that is not an issue. DB maintenance is an issue. You can of course set up automated maintenance tasks but there is only so much those can do without the intervention of a DB Admin from time to time. However, these are still arguments for using MySQL or MSSQL over Access or others, for me. You can run MySQL on Windows as well, making the whole process more cross platform compatible. MySQL has triggers, like MSSQL and a lot of maintenance can be automated, if you know what you're doing
February 7, 20179 yr 2 hours ago, plonkster said: You can always bundle a precompiled preconfigured version with the app. I once made an RPM for a well-known communications company that bundled a java point of sale with postgresql, complete with a java runtime and hardcoded default passwords (cause that is what they wanted). Time to learn how to build debian packages? :-P True, it could be automated a lot. Unix Ports would have been easier :-P
February 7, 20179 yr Because I'm more of a python developer, I usually end up using SQLalchemy, which is an ORM which also provides somewhat of an abstraction layer. That serves three purposes: During development we use sqlite, in the unit tests we also use sqlite (in memory storage), and in production we use postgresql. If something similar is available for your environment, maybe you could consider shipping it with sqlite, but providing instructions to use a different database. Just now, SilverNodashi said: MySQL has triggers, I hope they fixed them since 5.0. They were pretty rubbish back then :-)
February 7, 20179 yr Just now, plonkster said: If something similar is available for your environment, maybe you could consider shipping it with sqlite, but providing instructions to use a different database. That's actually a very good idea. Give the end user the option to use different DB's as he see fit. Default to Access if you have to, or SQLite. Drupal does this, allowing power users to use PostgreSQL and leverage the more powerful features on those clusters. Normal end users would use MySQL or SQLite if they don't know what they're doing.
February 7, 20179 yr Just now, plonkster said: I hope they fixed them since 5.0. They were pretty rubbish back then :-) I actually honestly don't know. Haven't used triggers since Classic ASP + MSSQL. It's a nice feature but MySQL didn't have it back then so I never really used it, but it's a nice option to script backend stuff right in the DB
February 7, 20179 yr So when you go the Microsoft route you have luxuries like SSD drives? But not on a Raspberry Pi? Why not? How does a Raspberry Pi limit those options? Or is it Linux that limits those options? You have the advantage of a small, cheap, low power consumption device which can monitor and control many analog and digital sensors, manipulate many electronic devices (relays, fans, alarms, actuators for ventilation, water pump bottles for topups, etc) and would hardly ever need updates or Internet security subscriptions. But the problems you face are the database, based on the fact that a Raspberry Pi doesn't have a SATA port? You miss the point hereSent from my SM-G920F using Tapatalk
February 7, 20179 yr Just now, SilverNodashi said: I actually honestly don't know. Haven't used triggers since Classic ASP + MSSQL. It's a nice feature but MySQL didn't have it back then so I never really used it, but it's a nice option to script backend stuff right in the DB I don't like to put magic into database triggers (things magically updated of created), but I do like to use them for complex data integrity checks. For that to work, the trigger must be able to raise an exception of some kind and cause the transaction to fail. Back in version 5.0 MySQL triggers couldn't do that, there was no way for the trigger to signal a problem, so there was no way to use them for data integrity checks. That made them useless to me. I got so fed up with MySQL back in the day, I actually wrote down my reasons. The thing that sent me over the edge was how it magically tries to guess what you want, log a warning, and return the wrong result (instead of failing vociferously). So my reasons (from an old blog post). Non standard way of quoting table- and column names Postgresql: SELECT * FROM "Order"; Mysql: SELECT * FROM `Order`;Default values for columns must be a constant Postgresql: CREATE TABLE mytable (id char(32) not null default somefunction(), x int); Mysql: no equivalent, only auto_increment and now special cases handled.Triggers cannot cause insert/update to fail.Group by allows selecting from columns that is NOT in the group by clause This is in fact called a feature by the documentation, but allows people to write horribly broken queries. Magic guessing what you want. When used in a particular ORM application where an URL was mapped to an object, it involved looking up an object with the empty string ('') as the key. When you do a SELECT column from table where id='', even though id is an integer column, MySQL will assume you meant zero and if you happen to have such a row, hand it to you while raising only a warning. That excludes one other reason: When people use Windows and MyISAM tables. Then the table names become case insensitive (because of the case-insensitive file system on the windows side), causing lots of problems when you want to deploy on a Unix platform. But I fully understand that it is a popular option, and since most of the stuff that works in postgresql does work in MySQL, my solution is to develop for Postgresql and let it degrade to MySQL rather than the other way round (which is usually a disaster).
February 7, 20179 yr Just now, Manie said: You miss the point here Sent from my SM-G920F using Tapatalk Not really. You compared SSD to microSD. I pointed out that a Raspberry Pi can take an SSD as well. In terms of DB maintenance, you need to take that into consideration regardless of which DB you end up using, not?
February 7, 20179 yr Just now, Manie said: You miss the point here Sent from my SM-G920F using Tapatalk Manie, sorry, I'll back-off.
February 7, 20179 yr Okay. Let's cut the technical BS here. In plain words, i'm a mechanic. You can use technical terms like motor technician, engineer, anything but i will stay a mechanic. Although i'm able to do some most stuff myself, i don't care about mssql, access and all that shite. I bought a pi especially for my axpert (first time i ever heard of a raspberry pi)......and guess what...it didn't work for me. I just don't have the time to sit and figure stuff out for hours to get it working and seeing that i had a windows laptop monitoring my cctv 24/7 i asked@manie if it would be possible to develop the old aicc program further. Last night he sent me a link to test the new ICC for windows. I downloaded it, extracted it, changed the connection to my axpert from serial to USB and voila! It works. It works great! It's been running stable for 24h. No fiddling, no figuring out to do, nothing. Download, extract and run. That's it!So there you have it. I'm that stupid guy who wasn't happy with a pi doing the monitoring on my system an Manie developed a program in record time (as a fcukin hobby) which suit my needs 150℅. That is the point here. Easy and simple, like most of us normal people are.Well done and thanks Manie. Keep up the great work!Sent from my S60 using Tapatalk
February 7, 20179 yr Ditto @Czauto We had this debate before. Last year. The only right DB is the one the developer knows very well, that they can support with their eyes closed. The one that the client knows nothing about. Yes there may be better ones for the "new" app, or "new" device but you do not want to learn a new skill whilst you deal with new users on a new system. And with THIS type of application, IF you want to change DB's in the future, IF there is historical data, you deal with that then only IF the user wants it. Chances are remote for if you do cater for "trillions" of records, on a small device, why? Is that the right platform then? It is a small device so no matter that you can store the DB on a external 100Tb SSD drive, there is the fact of low key low cost low everything to deal with.
February 7, 20179 yr Sorry but i hate being self centered. Manie busted his arse giving clients like me what they asked for and that I am gratefull for and I won't be bothered one bit to pay him for his time. Fulltime job, family and a 5430 lines of code written in 2 weeks time? Give that man a Bells!Sent from my S60 using Tapatalk
February 7, 20179 yr I still think the solution is to ship a kind of "firmware", an image. The guy who just wants to make it work simply writes the image to an sdcard and he's done. You can go one step further and ship physical sd cards to also rule out the kind of person who can't even write his own sdcard. Such people exist. You can go further and ship a fully configured Raspberry pi with cables... :-) Have to tell you, on the venus side we also ship two kinds of packages. A fully configured image that works on the Pi2 and the Pi3, and then there are Raspbian packages. It takes more work getting the Raspbian packages going. Problem, the images are compiled for the cortexa7thf-neon-vfpv4 combo while the older Pi is arm1176jzfshf. The Raspbian packages are compiled for the older platform. So the image doesn't run on the older Pi, those people have to use Raspbian. But still there are just too many people with an older Pi A or B who needs help, don't want to spend money on a Pi2/3, and don't want to replace the mk2-usb with an mk3. And it's a maintenance nightmare. Makes me understand perfectly why The Beaglebone+Cape combo is going to sell for around 4k once it hits the stores, even though a BBB is only around 1.5k. Support is expensive.
February 7, 20179 yr Manie, Well done. I'll take my hat off for you if you did this job as a part time venture, in such a recoerd time. I looked at the screenshots and are really impressed! You know, if you got a hundred programmers together, you'll have 200 different ideas and all of them are better than the other. At the end of the day it's every programmers prerogative to make his own decision, stick to it, and be able to support it properly. I have a site running in Cape Town with nearly 100 tills running on our system, using MS Access. When we installed it 3 years ago, everybody was laughing at us and made statements such as : " it won't even last 1 hour and it's going to crash" Well 3 years later, it is still running sound and best of all, we haven't had 1 minute of downtime yet! It is all about the integrity of a program and how it uses the database, ( to my opinion! ) Manie, if you want to change your time into money, you need to develop a system for the end users. ( Excluding the clever "forum users" ) And I do not mean anything bad by saying that , Guys ! The forum members are very different to the normal man in the street, and I agree with Czauto - You need a potent, simple and easy to use system, for the masses. Just my humble opinion Guys!
February 7, 20179 yr Thanks Chris for the compliment. Yes i do have a job work from 7 to 16H00 and do programing after hours. All very true what you say. I always forget that there are programmers out here and are know there stuff. I am trying to see what the user wants, not me myself bu the user. I did not even include the Infini yet as I have one. I did the windows one , started with the Axperts as a lot do have one. Very true, i still have apps going with access by a mine that is getting data from a PLC !! 13 minutes ago, Chris-R said: Manie, if you want to change your time into money, you need to develop a system for the end users Yes this is what i am trying to do and hope to do one day
February 7, 20179 yr Let kick of with the first version. I will still add and fix as we go and get more info from users http://iccsoftware.co.za/download-2/
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.