Package: rubis
rubisADC board for 16 channels Slow Control on Raspberry pi.
This repository provides board design and control software.Demo30 seconds to startWeb watching demoIt is easy to watch your sensors with rubis + GrafanaPCB view on Raspbery PiFeatureStandaloneInexpensiveMulti channels (16 ch) and additional connectors (4 ch)Including CLI software (This!)Hardware componentsrubis board - less than 5 dollars at elecrowRaspberry Pi (1B+, 2B, 3B, 3B+, 4B, Zero)PIN SocketADC Board* 1--4 / 20 dollers per boardBNC Connector( * 4, optional)SMA Connector( * 4, optional)LEMO Connector (Optional)HardwareYou need to connect the four GPIO pins arranged in a square (Pin 3 -- SDA, Pin 4 -- 5V, Pin 5 -- SCL, Pin 6 -- GND).Circuit diagram3D viewKiCad filesSoftwareInstallBefore run, enable I2C on Raspberry Pi. (sudo raspi-config)
Then, you can find the i2c devices like this.> sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 49 4a 4b -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --If you will use an old raspberry pi, runsudo apt install libatlas-base-devto usenumpy(This tool doesn't depend onnumpy).Then, typepip3 install rubisTherubisbinary will be provided at~/.local/bin/rubisYou want mysql store, please seeDatabase settingbelow.UsageWhen you executerubiswithout option, logging immidiately starts with default configurations.
You can use your custom configuration file with-coption.rubis -ggenerates template config file.
Edit them, then runrubis -c custom_config.json.
At thestrongrequest of the author's supervisor, the following commands are available to people in CYGNUS (dark matter search experiment) without creating or editing a new configuration file.rubis -c cygnusIn addition ofcygnus,one_boardandmysqlconfigurations are pre-defined.Some configurations can be overwrited with command line options.rubis -hprovides option descriptions.
The output file format is CSV/MySQL.As a default, the csv files likesc-20211029-75enrt.csvare created.
The75enrtis a unique hash created by configurations.
The hash helps separation not to mix files taken with different configurations.
The CSV format is like that.time,ch1,ch2,ch3,ch4,ch5,ch6,ch7,ch8,ch9,ch10,ch11,ch12,ch13,ch14,ch15,ch16
2021-10-29 00:49:50, 0.5481417, 0.5476417, 0.5483917, 0.5476417, 0.5432666, 0.5430166, 0.5441416, 0.5433916, 0.5486417, 0.5478917, 0.5482667, 0.5477667, 0.5441416, 0.5446416, 0.5440166, 0.5440166
2021-10-29 00:50:51, 0.5486417, 0.5483917, 0.5475167, 0.5476417, 0.5437666, 0.5435166, 0.5435166, 0.5436416, 0.5482667, 0.5483917, 0.5485167, 0.5481417, 0.5451416, 0.5451416, 0.5438916, 0.5437666
2021-10-29 00:51:51, 0.5480167, 0.5478917, 0.5480167, 0.5475167, 0.5432666, 0.5431416, 0.5430166, 0.5437666, 0.5482667, 0.5481417, 0.5481417, 0.5480167, 0.5445166, 0.5436416, 0.5443916, 0.5443916
2021-10-29 00:52:51, 0.5487667, 0.5481417, 0.5481417, 0.5481417, 0.5437666, 0.5437666, 0.5438916, 0.5435166, 0.5487667, 0.5482667, 0.5483917, 0.5478917, 0.5448916, 0.5440166, 0.5442666, 0.5438916
2021-10-29 00:53:52, 0.5482667, 0.5486417, 0.5476417, 0.5477667, 0.5438916, 0.5437666, 0.5432666, 0.5435166, 0.5487667, 0.5481417, 0.5481417, 0.5485167, 0.5445166, 0.5440166, 0.5441416, 0.5440166
2021-10-29 00:54:52, 0.5482667, 0.5478917, 0.5477667, 0.5478917, 0.5433916, 0.5430166, 0.5436416, 0.5438916, 0.5487667, 0.5487667, 0.5488918, 0.5478917, 0.5451416, 0.5447666, 0.5442666, 0.5441416
2021-10-29 00:55:53, 0.5487667, 0.5480167, 0.5478917, 0.5475167, 0.5441416, 0.5437666, 0.5435166, 0.5433916, 0.5487667, 0.5480167, 0.5483917, 0.5482667, 0.5452666, 0.5450166, 0.5448916, 0.5441416
2021-10-29 00:56:53, 0.5487667, 0.5483917, 0.5482667, 0.5481417, 0.5440166, 0.5438916, 0.5441416, 0.5443916, 0.5491418, 0.5487667, 0.5483917, 0.5482667, 0.5446416, 0.5442666, 0.5441416, 0.5445166
2021-10-29 00:57:54, 0.5478917, 0.5483917, 0.5480167, 0.5480167, 0.5441416, 0.5438916, 0.5440166, 0.5442666, 0.5491418, 0.5488918, 0.5488918, 0.5481417, 0.5450166, 0.5443916, 0.5441416, 0.5442666The-roption makes "dry-run".
With the option, this rubis works on general system not raspberry pi even without ADS board.
It helps to know how rubis works.The-loption show rubis log.
It helps to find the logfile place and configuration with hash.If you miss a config to generate hash,-boption helps you.rubis -b g2hlpcgenerates the config file run before.The-qoption kill all rubis processes.
With the-soption, rubis uses the stored cofiguration used in the previous run.For analysis with pandas dataframe, it is easy to extract the csv files.import pandas as pd
from glob import glob

hash_str = '75enrt'
df = [pd.read_csv(name, parse_dates=[0], index_col=0) for name in sorted(glob('./*'+hash_str+'.csv'))]
df = pd.concat(df)Config optionConfigure nameDescriptionOptionOverwrite optionpathPath to store the dataDefault: "./"-pfile_headerFile header of generated fileDefault: "sc"-fnamingNaming style of file'date_hash.csv', etc. Available keywords : 'head', 'date', 'id', 'hash', 'host'-nrubis_idrubis id (string)Used to identify your rubis board-itime_interval_secData taking time interval (sec)Default: 10-tavailable_boardsList of available ADS1115 boardsDefault: [1,2,3,4]-aoutputOutput format"csv","db", or"both"-odelimiterDelimiter for csv output","," ","space", etc.-dcommentout_stringStrings to be added on the csv file headerdefault: ""time_formatTime column format"timestamp", "datetime" (default), or strftime format (for example, "%H:%M:%S")boardsSetting for each ADS1115 board"gain"option is availablesourcesSetting for each channelsIf you selectnamingincluding "date", a new file will be created day by day.The sources should be set like,"1":{
    "name": "ch1",
    "description": "channel 1",
    "type": "volt"
    },
"2":{
    "name": "ch2",
    "description": "channel 2",
    "type": "linear"
    "a": 2.0,
    "b": 1.2
    },Thenameis used for csv header. For thetype,"volt","raw","millivolt", and"linear"are available."linear"returns the value"a" * (volt) + "b". The "a" and "b" should be written in the config file, for each sources.Database settingIf you want database store, do like that additionalysudo apt install mariadb-server
sudo mysql -u root
MariaDB [(none)]> UPDATE mysql.user SET password=password('newpassword') WHERE User = 'root';
MariaDB [mysql]> UPDATE mysql.user SET plugin='' WHERE User='root';
MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' identified by 'newpassword' with grant option;
MariaDB [mysql]> exit
sudo systemctl restart mysqlYou need an external access, please make a user.CREATE USER 'rubis'@'10.37.%' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO 'rubis'@'10.37.%';
FLUSH PRIVILEGES;And comment out thebind-addressline in/etc/mysql/mariadb.conf.d/50-server.cnf.
In addition, adddefault_time_zone='+00:00'at the bottom of the file.
Then runsudo systemctl restart mysql.If you need static IP access, please edit/etc/dhcpcd.conflike this.# Example static IP configuration:
interface eth0
static ip_address=***.***.***.***/** # your IP/mask
static routers=***.***.***.*** # your gateway
static domain_name_servers=***.***.***.*** ***.***.***.*** # your DNSWhen you set"db"or"both"foroutputin config file, the following settings are required."db":{
    "login":{
        "host": "127.0.0.1",
        "port": 3306,
        "user": "root",
        "passwd": "newpassword",
        "autocommit": true},
    "name": "rubis"
    }For developersClone this repository on your machine, then runmake.sh.
If you need something, please feel free to send a PR or ask me on issue.