Bu çalışmada raspberry pi üzerindeki cpu'nun sıcaklık değerini okuyacağız. Bu okuduğumuz sıcaklık değerini TCP ile oluşturacağımız server'a aktaracağız. Programlama dili olarak Python kullanacağız.
Hadi başlayalım.
Öncelikle raspberry pi üzerindeki cpu'nun sıcaklığını ölçmek ile başlayalım.
import os
import time
def measure_temp():
temp = os.popen("vcgencmd measure_temp").readline()
return (temp.replace("temp= ",""))
while True:
print(measure_temp)
time.sleep(1)
Bir saniye aralıklarla console ekranında cpu sıcaklık değerini yazdıracaktır. Biz programı durdurana kadar devam edecektir.
Evet artık cpu sıcaklık değerini okuyabiliyoruz. Şimdi client ve server'larımızı oluşturabiliriz.
Önce TCP için yapalım:
Server kısmı:
import socket
host = "192.168.1.42"
port = 12345
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("socket oluşturuldu")
s.bind((host, port))
print("socket {} nolu porta bağlandı".format(port))
s.listen(5)
print("socket dinleniyor")
except socket.error as msg:
print("Hata:", msg)
while True:
# Client ile bağlantı kurulursa
c, addr = s.accept()
print('Gelen bağlantı:', addr)
# Bağlanan client tarafına bağlandığını belirtelim
mesaj = 'Bağlantı sağlandı'
c.send(mesaj.encode('utf-8'))
# client tarafından gönderilen cpu sıcaklık değeri
yanit = c.recv(1024)
print( yanit.decode("utf-8") )
# Bağlantıyı sonlandıralım
c.close()
Client kısmı:
# -*- coding: utf-8 -*-
import socket
#cpu temp
import os
import time
while True:
# Socket oluşturulması
s = socket.socket()
# Bağlanılacak adres ve port
host = "192.168.1.42"
port = 12345
try:
# Bağlantıyı yap
s.connect((host, port))
# serverden yanıtı al
yanit = s.recv(1024)
print(yanit.decode("utf-8"))
#cpu sıcaklığı ölçülür ve server'a gönderilir
temp = os.popen("vcgencmd measure_temp").readline()
mesaj= temp
s.send(mesaj.encode("utf-8"))
# bağlantıyı kapat
s.close()
except socket.error as msg:
print("[Server aktif değil.] Mesaj:", msg)
time.sleep(1)
Biz server'dan bağlantıyı kesene kadar, client cpu sıcaklık değerini göndermeye devam edecektir.
Şimdi çalıştıralım:
Server'a herhangi bir bağlantı olmadan önce:
Client çalıştırılınca server:
Client çıktısı:
Bu şekilde TCP ile veri aktarımını başarılı bir şekilde tamamlamış olduk.