thingspeak icon indicating copy to clipboard operation
thingspeak copied to clipboard

SUCCESS!! ThingSpeak working on Debian 10

Open TheRealBrommer opened this issue 3 years ago • 2 comments

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

TheRealBrommer avatar Jan 29 '22 05:01 TheRealBrommer

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

maximeh2 avatar Dec 02 '22 01:12 maximeh2

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.

TheRealBrommer avatar Dec 02 '22 08:12 TheRealBrommer