Skip to content

Raspberry Pi ​

Mengirim bacaan dari Raspberry Pi dengan Python, lalu menjalankannya otomatis setiap Pi menyala. Berlaku juga untuk komputer Linux lain, seperti Orange Pi atau gateway industri berbasis Debian.

Yang dibutuhkan ​

  • Raspberry Pi dengan Raspberry Pi OS (Bookworm atau lebih baru) yang tersambung ke internet.
  • Akses terminal ke Pi, langsung atau lewat SSH.
  • Perangkat yang sudah dibuat di INCLUDE. Belum ada? Ikuti Perangkat rakitan sendiri, langkah 1.

1. Siapkan Python ​

Raspberry Pi OS menolak pip install ke Python sistem. Buat lingkungan terpisah sekali saja:

bash
python3 -m venv ~/include
~/include/bin/pip install requests paho-mqtt

2. Ambil kodenya dari INCLUDE ​

  1. Buka perangkat Anda, tab Pengaturan, lalu Koneksi & Integrasi.
  2. Di Contoh kode, pilih HTTP dan tab Python, lalu Salin.

Contoh kode Python di layar Koneksi & Integrasi

3. Simpan dan jalankan ​

bash
nano ~/send.py      # tempel kodenya, simpan dengan Ctrl+O, keluar dengan Ctrl+X
~/include/bin/python ~/send.py
py
import time

import requests

URL = "https://app.include.co.id/api/v1/YOUR_DEVICE_TOKEN/telemetry"


def read_sensor():
    # Replace with your sensor reading.
    return {"temperature": 25.4, "humidity": 61}


while True:
    try:
        r = requests.post(URL, json=read_sensor(), timeout=10)
        print(r.status_code, r.text)
    except requests.RequestException as e:
        print("send failed:", e)
    time.sleep(10)

Kalau berhasil, setiap 10 detik muncul:

202 {"ok":true}

Hentikan dengan Ctrl+C.

4. Kirim bacaan sungguhan ​

Contoh yang bisa langsung dicoba di setiap Pi: suhu prosesornya sendiri. Ganti read_sensor():

python
def read_sensor():
    with open("/sys/class/thermal/thermal_zone0/temp") as f:
        return {"cpu_temperature": int(f.read()) / 1000}

Untuk sensor di pin GPIO, pasang library sensornya ke lingkungan yang sama, misalnya ~/include/bin/pip install adafruit-circuitpython-dht, lalu kembalikan nilainya dari read_sensor().

5. Jalan otomatis saat Pi menyala ​

Buat layanan systemd:

bash
sudo nano /etc/systemd/system/include-sensor.service

Isinya (ganti pi dengan nama pengguna Anda):

ini
[Unit]
Description=Kirim bacaan sensor ke INCLUDE
After=network-online.target
Wants=network-online.target

[Service]
User=pi
ExecStart=/home/pi/include/bin/python /home/pi/send.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Lalu nyalakan:

bash
sudo systemctl daemon-reload
sudo systemctl enable --now include-sensor
journalctl -u include-sensor -f     # lihat keluarannya, keluar dengan Ctrl+C

Program kini berjalan setiap Pi menyala, dan dijalankan ulang kalau berhenti.

Lewat MQTT ​

Pilih MQTT dan tab Python di Contoh kode, simpan sebagai ~/publish.py, dan jalankan dengan cara yang sama. Untuk layanan systemd, ganti send.py dengan publish.py.

py
import json
import time

import paho.mqtt.client as mqtt

HOST = "app.include.co.id"
PORT = 1883
DEVICE_ID = "YOUR_DEVICE_ID"
DEVICE_TOKEN = "YOUR_DEVICE_TOKEN"
TOPIC = "includeapps/YOUR_ORG_ID/YOUR_SOLUTION_SLUG/YOUR_DEVICE_ID/telemetry"


def read_sensor():
    # Replace with your sensor reading.
    return {"temperature": 25.4, "humidity": 61}


def on_connect(client, userdata, flags, reason_code, properties):
    print("connected:", reason_code)


client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=DEVICE_ID)
client.username_pw_set(DEVICE_ID, DEVICE_TOKEN)
client.on_connect = on_connect
client.connect(HOST, PORT)
client.loop_start()

while True:
    info = client.publish(TOPIC, json.dumps(read_sensor()), qos=1)
    info.wait_for_publish(timeout=10)
    print("sent:", info.is_published())
    time.sleep(10)

Kalau tidak berhasil ​

PesanArtinya
error: externally-managed-environmentpip dijalankan tanpa venv. Ulangi langkah 1.
ModuleNotFoundError: No module named 'requests'Program dijalankan dengan python3 sistem. Pakai ~/include/bin/python.
send failed: ... NameResolutionErrorPi belum tersambung ke internet.
401 ...Token salah. Salin ulang kode dari Koneksi & Integrasi.
connected: Not authorizedDevice ID atau Device Token salah (MQTT).

Lihat juga Data belum masuk.

INCLUDE AIoT Platform for Smart Industry