Как установить ThingSpeak в Ubuntu 16.04

В Последний уик-энд я установил ESPurna прошивку с открытым исходным кодом с сервером MQTT на Sonoff POW коммутаторе Wi — Fi, а следующим шагом я хочу найти способ вывести график потребления электроэнергии в некоторых веб — интерфейсах. Мы могли бы сделать это в облаке IoT, таким как Xively или ThingSpeak , но так как одна из целей замены встроенного программного обеспечения это не полагаться на собственное решение на основе облачных, я решил найти способ , чтобы нарисовать эти диаграммы в местном сервере, и так случилось , что ThingSpeak также имеет открытый исходный код , доступный на Github .Аппаратные платформы , такие как NanoPi NEO / NEO Air или orange Pi Zero плат , по всей видимости, особенно хорошо подходят для выполнения этой задачи работают под управлением MQTT и Thingspeak, но сначала я хотел установить ThingSpeak в моем собственном Ubuntu 16.04 компьютере.

Как вы можете видеть на скриншоте выше, мне удалось это сделать, но это требует немного больше усилий, чем ожидалось, так как проект не обновлялся с 2015 года, и не работает из коробки с новейшей операционной системой.

Я использовал различные ресурсы в Интернете , в том числе инструкции по Github, а также , как этот ThingSpeak сценарий для Ubuntu 14.04 , а также несколько других ресурсов.

Во-первых, мы должны убедиться, что Ubuntu 16.04 будет полностью обновлен:

sudo apt update

sudo apt dist-upgrade

Ubuntu 16.04 поставляется с Ruby, 2.3, что вызовет много проблем с Thingspeak, так что мне пришлось удалить его в первую очередь:

sudo apt remove ruby

Теперь мы можем установить и Ruby, 2.1.0 и Bundle:

sudo apt-get -y install build-essential mysql-server mysql-client libmysqlclient-dev libxml2-dev libxslt-dev git-core curl rubygems

gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3

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

source ~/.rvm/scripts/rvm

rvm install ruby 2.1.0

gem install bundler

Как только это будет сделано, мы сможем получить исходный код ThingSpeak  и установить его:

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

cd thingspeak

bundle install

Затем я перешел к конфигурации и созданию данных :

cp config/database.yml.example config/database.yml

rake db:create

К сожалению, появилась ошибка:

rake aborted!

 Bundler::GemRequireError: There was an error while trying to load the gem 'mysql2'.

 Gem Load Error is: uninitialized constant Mysql2::Client::SECURE_CONNECTION

Поэтому я проверил версию mysql2 и модернизировал его, чтобы посмотреть решит ли это проблему:

bundle show mysql2

 /home/jaufranc/.rvm/gems/ruby-2.1.0@thingspeak/gems/mysql2-0.3.16

bundle update mysql2

bundle show mysql2

 /home/jaufranc/.rvm/gems/ruby-2.1.0@thingspeak/gems/mysql2-0.4.5

rake db:create

Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile.

 

Предыдущая ошибка ушла, но появилась новая …

Мне пришлось редактировать Gemfile в thingspeak директории, и добавил старую версию mysql2:

gem 'mysql2', '~> 0.3.18'

Давайте обновим mysql2, и попытаемся создать базы данных еще раз:

 bundle update mysql2

bundle show mysql2

 /home/jaufranc/.rvm/gems/ruby-2.1.0@thingspeak/gems/mysql2-0.3.21

rake db:create

 thingspeak_development already exists

 Mysql2::Error: Access denied for user 'thing'@'localhost' to database 'thingspeak_test': CREATE DATABASE `thingspeak_test` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`

 

Черт снова ошибка. Я не смог её исправить, поэтому на данный момент название статьи»Как НЕ установить Thingspeak в Ubuntu 16.04″. Следующие шаги делают незащищенной установку, я просто дал полные базы данных. Но это решение только для внутренней и проверенной локальной сети, возможно, кто-то укажет на безопасное решение вопроса.

mysql -u root -p

 Enter password:

 Welcome to the MySQL monitor.  Commands end with ; or \g.

 Your MySQL connection id is 25

 Server version: 5.7.16-0ubuntu0.16.04.1 (Ubuntu)



Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.



Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.



mysql> GRANT ALL PRIVILEGES ON *.* TO 'thing'@'localhost' WITH GRANT OPTION;

Query OK, 0 rows affected (0.00 sec)



mysql> commit;

Query OK, 0 rows affected (0.00 sec)



mysql> exit;

Bye

На этот раз я смог создать базы данных для Thingspeak:

	
rake db:create

Так что теперь мы можем перейти к следующему шагу, загрузке базы данных с некоторыми данными, требуемыми Thingspeak для работы:

rake db:schema:load

Еще одна ошибка:

 -- create_table("active_admin_comments", {:force=>true})

 rake aborted!

 ActiveRecord::StatementInvalid: Mysql2::Error: All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead: CREATE TABLE `active_admin_comments` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, `namespace` varchar(255), `body` text, `resource_id` varchar(50) NOT NULL, `resource_type` varchar(50) NOT NULL, `author_id` int(11), `author_type` varchar(255), `created_at` datetime, `updated_at` datetime) ENGINE=InnoDB

Проведя некоторое время в поисках решения я в конце концов нашел его в Rails Github, MySQL 5.7 используемый в Ubuntu 16.04 OT ставит NULL.

Нам нужно создать конфигурационный / инициализаторный / abstract_mysql2_adapter.rb файл с:

<span class="pl-c"># config/initializers/abstract_mysql2_adapter.rb</span>

<span class="pl-k">class</span> <span class="pl-en">ActiveRecord::ConnectionAdapters::Mysql2Adapter</span>

  <span class="pl-c1">NATIVE_DATABASE_TYPES</span>[<span class="pl-c1">:primary_key</span>] <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>int(11) auto_increment PRIMARY KEY<span class="pl-pds">"</span></span>

<span class="pl-k">end</span>

Затем нам нужно добавить следующую строку в конце конфигурационного / environment.db

<span class="pl-k">require</span>

<span class="pl-c1">File</span>.expand_path(<span class="pl-s">

<span class="pl-pds">'</span>../../lib/patches/abstract_mysql_adapter<span class="pl-pds">'

</span></span>,

<span class="pl-v">__FILE__</span>)

и выполнить команду еще раз:

	
rake db:schema:load

Успех!

Заключительным шагом нужно запустить сервер:

rails server webrick

=&gt; Booting WEBrick

=&gt; Rails 4.0.5 application starting in development on http://0.0.0.0:3000

=&gt; Run `rails server -h` for more startup options

=&gt; Ctrl-C to shutdown server

[2016-12-07 17:43:04] INFO  WEBrick 1.3.1

[2016-12-07 17:43:04] INFO  ruby 2.1.0 (2013-12-25) [x86_64-linux]

[2016-12-07 17:43:04] INFO  WEBrick::HTTPServer#start: pid=17187 port=3000

Теперь запустите ваш веб — браузер , и вы сможете получить доступ к локальной установке Thingspeak.
следующим шагом я изучу лучше Thingspeak, установлю MQTT, а также один из мостов MQTT в Thingspeak, доступный в Интернете, и посмотрю , смогу ли я построить данные о энергопотреблении.

Благодарим сайт cnx-software.com за предоставленную информацию.

Оригинал статьи тут

 

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments