#!/bin/sh # Phone-home heartbeat to Parahub cloud via Yggdrasil PARAHUB_API="http://[200:abb9:5810:37d3:8a4c:98a6:b82b:969a]/api/v1/iot/mesh/heartbeat" HEARTBEAT_KEY="IqPosrcpTQKSbLHxOG3iLTl_K2MsDxvd" # Check Yggdrasil connectivity first ping6 -c 1 -W 3 200:abb9:5810:37d3:8a4c:98a6:b82b:969a >/dev/null 2>&1 || exit 0 # Read identity from /etc/parahub/keys . /etc/parahub/keys 2>/dev/null MAC="${NODE_MAC:-$(cat /sys/class/net/br-lan/address 2>/dev/null)}" HOSTNAME="$(uci -q get system.@system[0].hostname)" YGG_ADDR="${YGGDRASIL_ADDRESS:-unknown}" SSID="${PRIVATE_SSID:-unknown}" UPTIME="$(cut -d. -f1 /proc/uptime)" # Detect hardware from board_name HW=$(cat /tmp/sysinfo/board_name 2>/dev/null) case "$HW" in glinet,gl-axt1800) HW="axt1800" ;; glinet,gl-mt3000) HW="mt3000" ;; glinet,gl-mt6000) HW="mt6000" ;; asus,rt-ax53u) HW="ax53u" ;; *) HW="${HW:-unknown}" ;; esac curl -s -m 10 -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${HEARTBEAT_KEY}" \ -d "{\"mac\":\"${MAC}\",\"hostname\":\"${HOSTNAME}\",\"yggdrasil_address\":\"${YGG_ADDR}\",\"firmware_version\":\"25.12.0-rc4\",\"hardware_profile\":\"${HW}\",\"uptime\":${UPTIME},\"private_ssid\":\"${SSID}\"}" \ "${PARAHUB_API}" >/dev/null 2>&1