#!/bin/sh

#######################################################################################
##
##      Raspberry Pi Agent script that allows to poll health data and model
##      (temperature, voltage, frequency)
##
##      Needed commands: vcgencmd
##
##      Version 1.0 By:
##              All In One - Dennis de Houx <info@all-in-one.be>
##
#######################################################################################

vcgencmd=`which vcgencmd`
if [ $? -eq 0 ]
then
  CLOCK_ARM=`vcgencmd measure_clock arm | cut -d '=' -f 2`
  CLOCK_CORE=`vcgencmd measure_clock core | cut -d '=' -f 2`
  CLOCK_H264=`vcgencmd measure_clock h264 | cut -d '=' -f 2`
  CLOCK_ISP=`vcgencmd measure_clock isp | cut -d '=' -f 2`
  CLOCK_V3D=`vcgencmd measure_clock v3d | cut -d '=' -f 2`
  CLOCK_UART=`vcgencmd measure_clock uart | cut -d '=' -f 2`
  CLOCK_PWM=`vcgencmd measure_clock pwm | cut -d '=' -f 2`
  CLOCK_EMMC=`vcgencmd measure_clock emmc | cut -d '=' -f 2`
  CLOCK_PIXEL=`vcgencmd measure_clock pixel | cut -d '=' -f 2`
  CLOCK_VEC=`vcgencmd measure_clock vec | cut -d '=' -f 2`
  CLOCK_HDMI=`vcgencmd measure_clock hdmi | cut -d '=' -f 2`
  CLOCK_DPI=`vcgencmd measure_clock dpi | cut -d '=' -f 2`
  VOLTS_CORE=`vcgencmd measure_volts core | cut -d '=' -f 2 | sed 's/V/ /'`
  VOLTS_SDRAMC=`vcgencmd measure_volts sdram_c | cut -d '=' -f 2 | sed 's/V//'`
  VOLTS_SDRAMI=`vcgencmd measure_volts sdram_i | cut -d '=' -f 2 | sed 's/V//'`
  VOLTS_SDRAMP=`vcgencmd measure_volts sdram_p | cut -d '=' -f 2 | sed 's/V//'`
  TEMP=`vcgencmd measure_temp | cut -d '=' -f 2 | sed "s/'C//" | sed "s/'F//"`
  MODEL=`tr -d '\0' < /sys/firmware/devicetree/base/model`
  
  if [ -z "$CLOCK_ARM" ]; then
    echo "<<<raspberrypi>>>"
    echo "clock-arm: 0"
  else
    echo "<<<raspberrypi>>>"
    echo "clock-arm: $CLOCK_ARM"
  fi
  
  if [ -z "$CLOCK_CORE" ]; then
    echo "clock-core: 0"
  else
    echo "clock-core: $CLOCK_CORE"
  fi
  
  if [ -z "$CLOCK_H264" ]; then
    echo "clock-h264: 0"
  else
    echo "clock-h264: $CLOCK_H264"
  fi
  
  if [ -z "$CLOCK_ISP" ]; then
    echo "clock-isp: 0"
  else
    echo "clock-isp: $CLOCK_ISP"
  fi
  
  if [ -z "$CLOCK_V3D" ]; then
    echo "clock-v3d: 0"
  else
    echo "clock-v3d: $CLOCK_V3D"
  fi
  
  if [ -z "$CLOCK_UART" ]; then
    echo "clock-uart: 0"
  else
    echo "clock-uart: $CLOCK_UART"
  fi
  
  if [ -z "$CLOCK_PWM" ]; then
    echo "clock-pwm: 0"
  else
    echo "clock-pwm: $CLOCK_PWM"
  fi
  
  if [ -z "$CLOCK_EMMC" ]; then
    echo "clock-emmc: 0"
  else
    echo "clock-emmc: $CLOCK_EMMC"
  fi
  
  if [ -z "$CLOCK_PIXEL" ]; then
    echo "clock-pixel: 0"
  else
    echo "clock-pixel: $CLOCK_PIXEL"
  fi
  
  if [ -z "$CLOCK_VEC" ]; then
    echo "clock-vec: 0"
  else
    echo "clock-vec: $CLOCK_VEC"
  fi
  
  if [ -z "$CLOCK_HDMI" ]; then
    echo "clock-hdmi: 0"
  else
    echo "clock-hdmi: $CLOCK_HDMI"
  fi
  
  if [ -z "$CLOCK_DPI" ]; then
    echo "clock-dpi: 0"
  else
    echo "clock-dpi: $CLOCK_DPI"
  fi
  
  if [ -z "$VOLTS_CORE" ]; then
    echo "volts-core: 0"
  else
    echo "volts-core: $VOLTS_CORE"
  fi
  
  if [ -z "$VOLTS_SDRAMC" ]; then
    echo "volts-sdramc: 0"
  else
    echo "volts-sdramc: $VOLTS_SDRAMC"
  fi
  
  if [ -z "$VOLTS_SDRAMI" ]; then
    echo "volts-sdrami: 0"
  else
    echo "volts-sdrami: $VOLTS_SDRAMI"
  fi
  
  if [ -z "$VOLTS_SDRAMP" ]; then
    echo "volts-sdramp: 0"
  else
    echo "volts-sdramp: $VOLTS_SDRAMP"
  fi
  
  if [ -z "$TEMP" ]; then
    echo "temp: 0"
  else
    echo "temp: $TEMP"
  fi
  
  if [ -z "$MODEL" ]; then
    echo "model: 0"
  else
    echo "model: $MODEL"
  fi
fi
