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

SUCCESS!! ThingSpeak working on Debian 10 #70

Open
TheRealBrommer opened this issue Jan 29, 2022 · 2 comments
Open

SUCCESS!! ThingSpeak working on Debian 10 #70

TheRealBrommer opened this issue Jan 29, 2022 · 2 comments

Comments

@TheRealBrommer
Copy link

Premise:
I want to get good use out of my Raspberry Pi zero with a waveshare
ethernet hat (i.e. NO wireless) which currently run
1. a thingSpeak server for my aquarium & Weather station + some test logging
2. Owncloud setup

I recently got myself a Pimoroni Pirate Audio Lineout hat. This works fine on
a new raspberry Pi zero 2WH. I use that one with Volumio so I can use the excellent
(new) plugin from AxLED for the OLED. Works with Spotify etc, really neat.

Caveat:
1. ThingSpeak needs to run on Wheezy... yes that old, but works great mind you for my above setup
2. Pirate Audio code is written for Buster..... + Volumio installs as an OS

So i wanted to know if i could combine everything under one OS. Initially I ran into
all kinds of issues, all seem due to the mismatch in OS's.

Spoiler:
1. I have tried this with a Jessie version of Volumio & i can get the ThingSpeak
server installed & working. However updating Volumio took me back to
Buster wiping the Jessie setup (changes repositories to legacy)
2. Using this Buster Volumio setup I have managed to install the ThingSpeak
server and it is running assigning a different port than 3000 as Volumio is
using it, but it does work. Quite a few hurdles but i tried to keep track of how i did it +
all the issues i came across (see final recipe below)

What i learned doing this suggested to me that i should be able to get this working
on a newer (Buster) based Debian OS because due to the proper install through RVM (Ruby
Version Manager) I figured i should be able to install this older version based setup using the
latest RVM framework. This should then be able to install a constrained (older) set
of an app (i.e. thingspeak), but with a newer database setup.

So going through the motions i tried to keep track of what i did to achieve this.
Hence the following recipe, with hopefully enough info, for someone else interested
in this the do this as well.

The Recipe:

sudo apt-get update

sudo apt purge ruby

Install MySQL. The thingspeak code wants/needs this. The newer OSs have MariaDB, so by
installing as "default-mysql", mariadb will still be installed HOWEVER with symbolic
links for you to be able to type in mysql commands instead of mariadb commands:
sudo apt-get -y install build-essential default-mysql-server default-mysql-client default-libmysqlclient-dev libxml2-dev libxslt-dev

gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
This didn't work for me so i did:
command curl -sSL https://rvm.io/mpapis.asc | gpg --import -
command curl -sSL https://rvm.io/pkuczynski.asc | gpg --import -

Get RVM:
curl -L https://get.rvm.io | bash -s stable

source ~/.rvm/scripts/rvm
rvm install ruby 2.1.0
gem install rubygems-update -v 2.7.11 (note i don't use sudo, so anyone can run it)

Now need to make sure it uses this version:
update_rubygems

git clone https://github.com/iobridge/thingspeak.git
cd thingspeak

Change in Gemfile:
gem 'mysql2', '~> 0.3.18'
bundle update mysql2

gem install tzinfo -v 1.2.2
gem install tzinfo-data -v 1.2013.8

nano Gemfile.lock
change libv8 to version 3.16.14.5 (which is for arm6)
change myslq2 to version 0.3.21

gem install bundler -v 1.17.3
bundle install
cp config/database.yml.example config/database.yml

------------------- database stuff ----
seems needed for creation of the file /config/environment.db
I ignored errors about user "thing" being missing

------------------- database stuff ----
seems needed for creation of /config/environment.db
I ignored errors about user "thing" being missing

mysql -u root -p
enter:
show databases;
enter:
CREATE DATABASE thingspeak_test DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
enter:
GRANT ALL PRIVILEGES ON thingspeak_test.* TO 'thing'@'localhost';
enter:
FLUSH PRIVILEGES;
enter:
exit

nano config/initializers/abstract_mysql2_adapter.rb

I changed directories to get the right subdirectory as else i got an empty file.
enter:

config/initializers/abstract_mysql2_adapter.rb

class ActiveRecord::ConnectionAdapters::Mysql2Adapter
NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY"
end

cd config
nano environment.db
enter at the END:
require File.expand_path('../../config/initializers/abstract_mysql2_adapter', FILE)

As i got some error running "rake db:create" i had fix something else:

cd /home
cd .rvm

do a "ls" and make sure you end up in a directory something like "ruby-2.1.0@thingspeak"
keep doing this until you're in "gems/mysql2-0.3.21/lib/mysql2/":

nano client.rb

At the line Line 12
:connect_flags => REMEMBER_OPTIONS | LONG_PASSWORD | LONG_FLAG | TRANSACTIONS | PROTOCOL_41 | SECURE_CONNECTION,

Change like this:
:connect_flags => REMEMBER_OPTIONS | LONG_FLAG | TRANSACTIONS | PROTOCOL_41 | SECURE_CONNECTION,

cd ~/thingspeak
rake db:create (i ignored any errors)
rake db:schema:load

rails server (this will run on port 3000, i got a in-use complaint because of Volumio)

So i'm running it on a different port:
rails s -p 4000

Give it a few minutes. Then i went to http://xxx.xxx.xxx.xxx:4000/

SUCCESS !!! It's running

References:
1. https://www.cnx-software.com/2016/12/07/how-to-install-thingspeak-in-ubuntu-16-04/
2. https://www.teracomsystems.com/blog/how-to-install-local-thingspeak-server/?cn-reloaded=1
3. https://github.com/iobridge/thingspeak
4. https://vitux.com/installing-and-configuring-ruby-on-rails-on-debian-10/
5. https://rvm.io/rvm/install

@maximeh2
Copy link

maximeh2 commented Dec 2, 2022

on step rvm install ruby 2.1.0
Error running 'requirements_debian_libs_install bison libssl1.0-dev',
please read /home/pi/.rvm/log/1669896744_ruby-2.1.0/package_install_bison_libssl1.0-dev.log
Requirements installation failed with status: 100.

thanks for advance

@TheRealBrommer
Copy link
Author

Yes some libraries have moved hands, i.e. some links won't work (anymore). Note the system i setup in January (as per above) is still going strong (when obviously the links still worked). So to make this work it will need some more looking at to sort out. I ran into something similar to you when i tried to install it in a VM on Proxmox.

Be aware though there is a great alternative !

You can take any linux distro (my absolute favorite is BunsenLabs as it i super light-weight + based on debian) and install Docker. Then go to Docker hub and get one of those ready-to-go Thingspeak containers. They come with simple install instructions. Once installed they're ready to go. Super, super easy ! I used the one that has >10k+ downloads, can't remember the name though. Just do a search.

It works exactly as the system above. I think, from memory, it might even be based on the same method.

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

No branches or pull requests

2 participants