başka türlü bir şey benim istediğim

Showing: 53 RESULTS
ds18b20 temperature read test
Donanım Linux python Raspberry Pi

Raspberry Pi ile bira sıcaklığı ölçümü

Bir süredir evde bira yapmayı düşünüyordum sonunda karar verdim. 3 hafta kadar önce butikbira.com adresinden hazır bira setlerinden ve stout tipinde bira kiti satın aldım ve hemen o gün seti kurup başladım. Evde bira yapmanın en zor yanları kullanılan malzemenin temizliği ve mayalanma ortamının sıcaklığını korumak. Temizlik için gereken sabır ve dikkat iken sıcaklık konusu biraz daha büyük ve sorunlu bir durum. Mayalanma kovasının sıcaklık kontrolünü daha önceden Çin’den aldığım USB termometre ile yapıyordum ancak güvenilir bulmadım. Biraz araştırıp gerekli cihazın DS18B20 olduğunu öğrendim.

DS18B20’nin üç ayrı modeli var; transistör şeklindeki probe, su geçirmez plastik ile kaplanmış olan ve sıvı ölçümleri için de kullanılabilen probe ve sensörün hazır PCB kartı takılmış hali. Ben belki mayalanma kovasının içine de yerleştirebilirim diye düşünerek su geçirmeyen modelini internetten satın aldım. Bu 3 ayrı modelden PCB dışındakileri kullanabilmek için ek olarak 4.7k Ohm/0,25 W (sarı-mor-kırmızı-altın) bir dirence ihtiyacınız olacak. (PCB olanda direnç PCB’ye gömülmüş durumda olacaktır.)

ds18b20-waterproof

Evde boşta duran Raspberry B+ ‘ı bu iş için kullanmaya karar verdim. Sensörü hazırlamak ve Raspberry’ye bağlamak benim gibi elektronik cahili biri için bile çok basit. Sensörün üç kablosu var ve bunların Raspberry’de hangi GPIO pine bağlanacağı aşağıdaki gibi;

Kırmızı - 3.3v - PIN1
Sarı - Data - PIN7 (GPIO4)
Siyah - Topraklama - PIN6 (GROUND)

Bağlantıları yaptıktan sonra komutu çalıştırdıktan sonra Raspberry’yi yeniden başlatmanız gerekiyor.

echo "dtoverlay=w1-gpio" >> /boot/config.txt

Raspberry yeniden başlatıldıktan sonra ise yapılması gereken DS18B20’nin veri alabilmesi için gerekli kernel modüllerini yüklemek. Bunun için aşağıdaki komutları çalıştırın.

echo "modprobe w1-gpio" >> /etc/modprobe.d/ds18b20-temp
echo "modprobe w1-therm" >> /etc/modprobe.d/ds18b20-temp
modprobe -a

Modüllerin başarılı bir şekilde yüklendiğini ve sensörün sıcaklık okuyabildiğini aşağıdaki komutla deneyin. Komut çıktısında t=18437 rakamı celcius olarak sıcaklığı veriyor ve bu değeri 1000′ e bölmelisiniz.

root@beerpi:~# cat /sys/bus/w1/devices/w1_bus_master1/28-*/w1_slave
27 01 4b 46 7f ff 0c 10 8d : crc=8d YES
27 01 4b 46 7f ff 0c 10 8d t=18437

Sensörün başarıyla sıcaklık okuduğundan emin olduktan sonra okuma işlemini bir script haline getirerek aldığınız değeri istediğiniz ortama (veritabanı, grafik, log dosyası vb.) aktarabilirsiniz.

BASH script örneği;

#!/bin/bash
# beertemp.sh
# GPIO bagli DS18B20 sicaklik sensorunden celcius alinan degeri log dosyasina ekleyen script

simdi=$(date "+%Y/%m/%d %H:%M:%S")
temp=$(cat /sys/bus/w1/devices/w1_bus_master1/28-*/w1_slave | grep "t=" | awk -F'=' '{print $2/1000}')

echo "$simdi - $temp" | tee -a /var/log/temp.log

Scripti crontab içerisine ekleyerek istediğiniz zaman aralığı ile sıcaklığın kaydedilmesini sağlayabilirsiniz.

echo "*/2 * * * * root /bin/sh /usr/local/bin/beertemp.sh 2>&1

Python script örneği; (Belirli sıcaklık değerleri dışında uyarı gönderecek şekilde değiştirilmiş hali)

#!/usr/bin/python

import os # import os module
import glob # import glob module
import time # import time module
import urllib2
import subprocess
import logging
from math import trunc

base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'

logging.basicConfig(filename="/var/log/beertemp.log", level=logging.INFO)
simdi = time.strftime("%Y/%m/%d-%H:%M:%S")

def read_temp_raw():
f = open(device_file, 'r')
lines = f.readlines()
f.close()
return lines

def read_temp():
lines = read_temp_raw()
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0 # convert to Celsius
#temp_f = temp_c * 9.0 / 5.0 + 32.0 # convert to Fahrenheit
#return temp_c, temp_f
return temp_c

beerTemp = read_temp()
degree = '{:d}'.format(trunc(beerTemp))
notify_url = "http://yourwebpage/notify.php?msg=Bira+Sicakligi:+%s+%s" % (simdi, beerTemp)
log_msg = "%s - Bira Sicakligi: %s" % (simdi, beerTemp)

if (degree >= 16 or degree <= 25): logging.info(log_msg) else: request = urllib2.urlopen(notify_url).read() logging.warning(log_msg)

Daha sonra isterseniz sensörü bira mayalanma kovasına yapıştırabilir, isterseniz kova kapağında kablo için delik açıp sensörü şerbete daldırabilirsiniz. Deliğin etrafını Starsan ile arındırıp sıcak silikon uygulayabilirsiniz. Kablonun kova içindeki kısımlarına da Starsan sürmeyi unutmayın 🙂

ds18b20 temperature read test

Bash Linux python Raspberry Pi

Dropbox ile otomatik Torrent indirme

Evdeki Raspberry Pi sunucuda çalışan Transmission uygulamasının web arabirimi, uzaktan torrent dosyası ekleme, download listesini takip etme, indirmeyi durdurma gibi işlemleri destekliyor. Böylece şirketten evdeki bilgisayara torrent indirmek kolaylaşıyor. Ama her bulduğunuz torrent dosyasını eklemek için sunucunun web sayfasına bağlanmak, kullanıcı ismi ve parola girmek gerekiyor. Bunu nasıl otomatikleştiririm diye düşünürken aklıma IFTTT ‘nin Dropbox yöntemi geldi.

Planım şuydu, Dropbox’ta bir dizin oluşturup, torrent dosyalarını buraya deoplayacağım, bir uygulama da bu watchfolderdaki dosyaları transmissiona RPC ile gönderip download işlemini başlatacak. Sonunda yaptım.

(more…)

Linux python Raspberry Pi

Raspberry Pi sıcaklığını izlemek

Evde kullandığım Raspberry Pi ben yokken ne kadar ısınıyor acaba? Merak ettim ve eger sıcaklık belli bir derecenin üstüne çıkarsa haber versin istedim. Sıcaklık ölçmek için Python, iletişim için ise PushingBox kullandım. Sonuç, çok başarılı.

Pushingbox belirlediğiniz senaryolara göre çalışan URL’ler üretiyor. Bu URL’i programınızdan çağırdığınızda senaryoya bağlı işlemler (mail atma, growl notification üretme, Twitter üzerinden direct message gönderme vs.)

Eğer Android veya iOS kullanıcısı iseniz PushBullet adlı servise de göz atın. Eminim seveceksiniz.

Ben uyarıları hem pushingbox hem de pushbullet üzerinden gönderiyorum hatta NAGIOS mesajlarını bile.

Script içindeki vXXXXXXXXX kısmını kendi senaryonuza göre değiştirdiğinizden emin olun


#!/usr/bin/env python
# CPU sicakligi 60 C'den yuksek ise http://pushingbox.com uzerinden ileten script.
# gurcan@gurcanozturk.com

from decimal import *
import os
import urllib2

res = os.popen('vcgencmd measure_temp').readline()
resold = res.replace("temp=","")
resnew = resold.replace("'C","")
resint = int(Decimal(resnew))

if resint > 60:
urllib2.urlopen('http://api.pushingbox.com/pushingbox?devid=vXXXXXXXXX&cputemp=%s' % resold)
print resint

Android Donanım Linux

Linux ile LG G2 root işlemi

Rooting (cihaz üzerinde root [yönetici] yetkilerini kazanma) işlemi ile cihazınız üzerindeki üretici programlarını kaldırabilir, root yetkileri isteyen ve cihaza doğrudan erişim isteyen uygulamaları kurabilir, üreticinin sizden gizlediği özellikleri (örneğin LG G2’de radyo var ama bandrol lisanslama maliyetleri yüzünden Türkiye’de radyo özelliği kapalı satılıyor) kullanabilirsiniz.

(more…)

Donanım Linux Mac OS X Raspberry Pi Windows

Raspberry Pi ‘ye seri console bağlantısı

Evde TV kullanmadığım için Raspberry Pi cihazımı genelde çalıştığım şirkette kullandığım ikincil monitörüme HDMI->DVI çevirici ile bağlıyordum. Ancak 2. monitöre bağlasam bile bu kez de Pi’ye klavye bağlamak için, ayrı bir güç adaptörüyle çalışan USB hub gerekiyordu. İnternette araştırmalar sonucu, Raspberry Pi GPIO pinleri kullanılarak seri/USB dönüştürücü ile, monitöre gerek kalmaksızın linux konsola erişmek mümkün, hem de klavyeye ihtiyaç olmaksızın. Nasıl mı?

(more…)

iPhone Linux

iPhone ‘u Ubuntu’da webcam olarak kullanmak

Raspberry Pi için kamera modülleri bakarken aklıma eskiden Nokia 6670 telefonumu MSN’e webcam olarak kullandığım zamanlar geldi 🙂 Aynı şekilde iWebcamera adlı iPhone uygulaması kendini bilgisayarınıza kurduğunuz istemci uygulaması yardımıyla webcam olarak gösteriyor. Ancak firma linux için istemci uygulaması yazmamış, sadece Windows ve Mac OS X ile çalışıyor. Ancak biraz araştırmayla linux ile de çalışabileceğini şu arkadaş yazmış.

(more…)

Donanım Linux Mac OS X

Mac Mini üzerinde Mac OS X ve Ubuntu (Dual boot)

Evde uzun bir süredir sunucu olarak Mac Mini kullanıyordum. Snow Leopard kurulu olan sunucum Mac Mini (Mac Mini 1,1 i686 – 2006 ve öncesi) eski olduğu için artık üzerine Lion veya Mountain Lion kuramazdım. Ayrıca yeni gelen birçok universal uygulama 64bit istiyordu. Ben de üzerinde Ubuntu çalıştırmak için araştırmalar yapıyordum. Sonunda dün cihazı ofise getirdim (evde ekransız kullanıyordum) ve kurulum yaptım.

(more…)