Membuat services di Ubuntu


Terkadang kita menginginkan sebuah program supaya bisa jalan otomatis pada saat kita restart atau pada saat system kita jalan, nah cara mudahnya adalah dengan membuat services yang meng-execute program kita tersebut.

Caranya mudah pada kali ini saya contohkan membuat services untuk mengexecute node-red setiap kali system start atau restart di ubuntu.

Pertama tama pastikan node-red sudah terinstall dan saya tidak akan membahasnya disini saya hanya akan membuat servicesnya caranya buat file node-red.service didirectory dibawah ini

sudo nano /etc/systemd/system/node-red.service

Lalu masukkan baris ini didalamnya

[Unit]
Description=Node-RED
After=syslog.target network.target

[Service]
ExecStart=/usr/bin/node-red --max-old-space-size=128 -v
Restart=on-failure
KillSignal=SIGINT

# log output to syslog as 'node-red'
SyslogIdentifier=node-red
StandardOutput=syslog

# non-root user to run as
WorkingDirectory=/home/onix/ #nama username mu
User=onix
Group=onix

[Install]
WantedBy=multi-user.target

Udah gitu aja gampang kan, ini bisa digunakan untuk menjalankan apa saja tinggal ganti ExecStartnya saja.

Untuk menjalankan servicesnya tinggal tuliskan perintah ini di terminal

sudo systemctl start node-red.services #ini kalau nama servicesnya node-red

Untuk melihat statusnya tinggal ganti start dengan status dengan command yang sama

Atau untuk menjadikan aplikasinya jalan pada saat reboot ganti start dengan enable dengan command yang sama.

Selamat Mencoba

Salam Ngoprek …

Happy Coding …

Advertisements

Parsing value json di node-red


Kali ini saya akan share bagaimana caranya parsing data json (dari mqtt) di node-red untuk mengambil valuenya saja yang nantinya data tersebut bebas kita gunakan untuk mentrigger sesuatu atau hanya untuk ditampilkan di ui node-red. Setelah browsing sana sini, tanya sana sini akhirnya entah kenapa tiba tiba malah bisa memparsing data dari mqtt yang bentuknya json, simplenya silahkan copas aja langsung flow node-red dibawah ini

[{"id":"cf8a386d.c705e8","type":"inject","z":"527576f4.5e79c8","name":"","topic":"lora","payload":"{\"temperature\":26,\"humidity\":30}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":900,"wires":[["5979b9b5.eb2a48"]]},{"id":"5979b9b5.eb2a48","type":"json","z":"527576f4.5e79c8","name":"","property":"payload","action":"obj","pretty":true,"x":290,"y":900,"wires":[["28036454.a91e2c","422cfaee.d99884"]]},{"id":"28036454.a91e2c","type":"function","z":"527576f4.5e79c8","name":"data","func":"var obj = msg.payload;\nmsg.payload = obj.temperature;\nreturn msg;","outputs":1,"noerr":0,"x":450,"y":900,"wires":[["b7bc5dc0.c6099"]]},{"id":"422cfaee.d99884","type":"function","z":"527576f4.5e79c8","name":"data","func":"var obj = msg.payload;\nmsg.payload = obj.humidity;\nreturn msg;","outputs":1,"noerr":0,"x":450,"y":960,"wires":[["71392630.791538"]]},{"id":"b7bc5dc0.c6099","type":"debug","z":"527576f4.5e79c8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":650,"y":900,"wires":[]},{"id":"71392630.791538","type":"debug","z":"527576f4.5e79c8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":650,"y":960,"wires":[]}]

Disini saya mencontohkan untuk menginjek data berupa json kalau mau ngambil dari mqtt juga bisa cuman untuk praktisnya saja saya masukkan kedalam inject, datanya simple sebenarnya hanya berupa json seperti dibawah ini

{
"temperature": 26,
"humidity": 30
}

Kemudian data tersebut saya ubah didalam function sehingga nanti value dari temperature dan humiditynya saja yang diambil untuk diolah lebih lanjut. Demikian catatan saya kali ini semoga bermanfaat.

Happy Coding …

Salam Ngoprek …

Telegram Fish Feeder


Ngga kerasa sudah bertemu ramadhan lagi, nah kali ini untuk mengisi waktu pas weekend dan puasa saya membuat Fish Feeder Alias pemberi makan ikan, ini sebenarnya project yang sudah lama saya ingin buat tapi karena sesuatu dan lain hal baru sempet dibuat sekarang.

Designya sebenarnya cukup simple kebetulan saya ada servo micro, esp8266 dan saya pikir saya bisa buat fish feeder ini dari kedua alat tersebut, dan tentu saja dibantu 3d printer saya untuk struktur fish feedernya.

Awal design saya corat coret di buku catatan saya setelah selesai draftnya saya lanjutkan designnya menggunakan fusion 360 dari Autodesk ini merupakan software design favorit saya, dulunya saya suka dengan 123D dari autodesk juga namun 123D sudah tidak release diganti dengan fusion 360, yang saya suka dengan software ini adalah kemampuan parametricnya.

Tidak membutuhkan waktu yang lama untuk membuat designnya namun saya beberapa kali melakukan test print untuk mencocokkan design dengan bentuk nya ketika sudah diimplementasikan, yah itulah enaknya menggunakan printer 3d bisa sesuka hati design kalau ngga suka ya tinggal diprint lagi :).

 

ini adalah beberapa design saya sebelum saya print, sengaja saya buat model micro servonya juga sehingga saya bisa dengan mudah membayangkan posisi dari servo dan gear pendorong makanan ikan.

Untuk elektronik dikarenakan saya dirumah kebetulan ada wemos ya saya menggunakan wemos sebagai microcontroller dan karena sudah ada wifi didalamnya saya kepikiran kenapa ngga saya sekalian gunakan telegram api sebagai remotenya, karena sepertinya cara ini adalah yang paling mudah daripada saya harus routing ddns yang bikin ribet :). 

Saya menggunakan library CTBOT karena pas saya coba kok ya sepertinya library ini yang paling mudah jujur belum pernah nyoba yang lain iseng iseng cari di library arduino CT bot ini nongol paling atas ya udah saya install aja dan setelah dicoba langsung bisa.

Untuk kodingannya gampang banget saya pake contoh yang untuk matikan dan nyalakan lampu lalu saya tambahkan dengan contoh servo sweep sudah gitu aja gampang kan ūüôā

Yang penasaran pengen coba saya share disini untuk design 3dnya silahkan didownload dan diedit sesuka hati.

Link Thingiversenya

Dan codingannya disini 

 

 

 

 

Ok semoga bermanfaat

Happy Coding …

Salam Ngoprek …

 

lora mini dev and ttn


lora_mini_devKali ini nyobain lora module buatan dragino namanya lora mini dev, uniknya dari module ini adalah sudah jadi satu antara RF dan mikro kontrollernya, untuk programmingnya sendiri cukup mudah karena sudah ada usb nya jadi tinggal colok aja mikro usb bawaannya terus bisa diprogram menggunakan arduino ide.

Reviewnya menyusul ya ini tadi baru  test OTAA ke thethingsnetwork si lancar jaya cuman awalnya sempat bingung untuk pin mapping lmicnya, soalnya nyari nyari didokumentasinya ngga nemu.

Beruntung banget pas lagi browsing nemu, nah dibawah ini adalah pinout mappingnya karena kalau pinout ini salah dijamin lora mini dev ini ngga akan bekerja di lmic

 const lmic_pinmap lmic_pins = {
 .nss = 10,
 .rxtx = LMIC_UNUSED_PIN,
 .rst = 9,
 .dio = {2, 6, 7},
};

Silahkan yang pingin nyoba nyoba ini modul bisa pake lmic standard tinggal nanti menyesuaikan lmicnya seperti diatas.

kalau mau liat2 codingannya ke github saya disini tinggal ganti lmicnya seperti diatas

Happy Coding ..

Salam ngoprek …

simple paho-mqtt with python


Bagi kalian yang sedang main IOT mungkin simple script main-main saya dibawah ini mudah-mudahan bisa bermanfaat, iseng sebelum tidur main-main dengan python dan paho mqtt, simple nya si hanya untuk subscribe mqtt dan publish mqtt, mungkin kedepannya ditambahin fitur web.

Yang penasaran silahkan main ke github saya disini 

Sekian semoga bermanfaat

Happy Coding !!!

 

Memasang Password di node-red


node-redAda yang belum tau node-red? yang suka main main dengan raspberry pi atau iot pasti familiar dengan node-red, ya node-red adalah suatu aplikasi dengan banyak fitur yang simple dan sangat gampang digunakan, kali ini saya akan share cara untuk memasang username dan password di node-red karena defaultnya node-red ini tidak memiliki authentifikasi.

Caranya gampang banget tinggal ke home dan akses .node-red dengan cara

cd $HOME/.node-red/

lalu buka setting.js dengan editor kesukaan kalian masing masing, saya sukanya pake nano jadi caranya akses ke nano setting.js tapi sebaiknya sebelum akses ke setting kita siapin passwordnya dulu yang nantinya akan kita ubah didalam setting.js, nah node-red sudah nyiapin password hashnya cara tinggal ketik command dibawah ini lalu masukkan password yang ingin kita hash lalu, copy hasil hashnya dan nanti masukkan ke dalam setting.jsnya. Dibawah ini cara hash passwordnya.

node-red-admin hash-pw

lalu kita bukan setting.js dengan cara

nano setting.js

Lalu cari setingan dibawah ini ubah username dan password dengan hasil hash yang tadi sudah kita buat.

adminAuth: {
    type: "credentials",
    users: [{
        username: "admin",
        password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
        permissions: "*"
    }]
},

Setelah itu kita restart node-red dengan cara

sudo service node-red restart

Selesai setelah itu coba akses node-red dan masukkan username dan password yang sudah kita buat dan node-red pun sudah memiliki autentifikasi sehingga lebih secure

Sekian tutorial kali ni semoga bermanfaat dan Happy Coding …

MQTT Subscribe esp8266


mqtt pub sub esp8266

Nambah catatan aja semoga bermanfaat juga buat yang membutuhkan cara subscribe ke mqtt server dengan esp8266

Pertama tama download dan pasang plugin ini di arduino libraries, lalu sesuaikan coding dibawah dengan alamat server dan topic yang anda gunakan

/*
 MQTT subscriber example

- connects to an MQTT server
 - subscribes to the topic "inTopic"
*/

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

const char *ssid = "ssid"; // cannot be longer than 32 characters!
const char *pass = "pass"; //

// Update these with values suitable for your network.
IPAddress server(xx,xx,xx,xx);

#define BUFFER_SIZE 100

void callback(const MQTT::Publish& pub) {
 Serial.print(pub.topic());
 Serial.print(" => ");
 if (pub.has_stream()) {
 uint8_t buf[BUFFER_SIZE];
 int read;
 while (read = pub.payload_stream()->read(buf, BUFFER_SIZE)) {
 Serial.write(buf, read);
 }
 pub.payload_stream()->stop();
 Serial.println("");
 } else
 Serial.println(pub.payload_string());
}

WiFiClient wclient;
PubSubClient client(wclient, server);

void setup() {
 // Setup console
 Serial.begin(115200);
 delay(10);
 Serial.println();
 Serial.println();
}

void loop() {
 if (WiFi.status() != WL_CONNECTED) {
 Serial.print("Connecting to ");
 Serial.print(ssid);
 Serial.println("...");
 WiFi.begin(ssid, pass);

if (WiFi.waitForConnectResult() != WL_CONNECTED)
 return;
 Serial.println("WiFi connected");
 }

if (WiFi.status() == WL_CONNECTED) {
 if (!client.connected()) {

if (client.connect(MQTT::Connect("arduinoClient")
 .set_auth("username mqtt", "pass mqtt"))) {
 
 client.set_callback(callback);
 client.subscribe("topic");
 }
 }

if (client.connected())
 client.loop();
 }
}

 

Udah gitu aja, semoga bermanfaat

Happy coding !!!