User Tools

Site Tools


projects:neopixel-bandwidth-room-light

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
projects:neopixel-bandwidth-room-light [2017-10-15 08:32]
trinitor [Test]
projects:neopixel-bandwidth-room-light [2017-10-15 08:44]
trinitor [SNMP Example]
Line 247: Line 247:
 </code> </code>
  
-===== SNMP Example ======+===== snmp2neopixel.sh ======
 <code> <code>
-Todo+#!/bin/bash 
 + 
 +GATEWAYIP=192.168.x.1    #Your gateway 
 +SNMPCOMMUNITY=public     #snmp read community string 
 +INTNUMBER=1              #Interface number in SNMP; snmpwalk -v2c -c readcommstring <IP> | grep IF-MIB::ifName 
 +MESASURETIME=1           #Time in seconds between messurment 
 +INBOUNDBANDWIDTH=300000  #Max Interface bandwidth 
 +OUTBOUNDBANDWIDTH=100000 #Max Interface bandwidth 
 +MAXBRIGHTNESS=32         #NeoPixel brightness (max value = 255) 
 +NEOPIXELIP=192.168.x.10  #IP of your ESP8266 
 +NEOPIXELPORT=2342        #UDP port of your ESP8266 
 + 
 +while true; do 
 +  TIME=$(date +%s) 
 +  OUT=$(snmpget -v2c -c $SNMPCOMMUNITY $GATEWAYIP ifOutOctets.$INTNUMBER | awk '{print $4}'
 +  IN=$(snmpget -v2c -c $SNMPCOMMUNITY $GATEWAYIP ifInOctets.$INTNUMBER | awk '{print $4}'
 + 
 +  if [ -z "$OUT" ] || [ -z "$IN" ]; then 
 +     msg="Unable to retrieve SNMP info." 
 +     exit 2 
 +  else 
 +     sleep $MESASURETIME 
 +     TIME2=$(date +%s) 
 +     OUT2=$(snmpget -v2c -c $SNMPCOMMUNITY $GATEWAYIP ifOutOctets.$INTNUMBER | awk '{print $4}'
 +     IN2=$(snmpget -v2c -c $SNMPCOMMUNITY $GATEWAYIP ifInOctets.$INTNUMBER | awk '{print $4}'
 + 
 +     if [ "$OUT2" -gt "$OUT" ] || [ "$IN2" -gt "$IN" ] ; then 
 +       if [ "$TIME2" == "$TIME" ]; then 
 +         TIME=1 
 +       fi 
 +       DELTAOUT=$(echo "$OUT2-$OUT" | bc) 
 +       DELTAIN=$(echo "$IN2-$IN" | bc) 
 +       DELTATIME=$(echo "$TIME2-$TIME" | bc) 
 +       INPUTBW=$(echo "$DELTAIN/$DELTATIME/1024" | bc) 
 +       OUTPUTBW=$(echo "$DELTAOUT/$DELTATIME/1024" | bc) 
 +       echo Inbound: $INPUTBW"KB/s" 
 +       echo Outbound: $OUTPUTBW"KB/s" 
 +       INPUTPERCENT=$(echo "$DELTAIN*8/$DELTATIME/$INBOUNDBANDWIDTH" | bc) 
 +       OUTPUTPERCENT=$(echo "$DELTAOUT*8/$DELTATIME/$OUTBOUNDBANDWIDTH" | bc) 
 +       echo Inbound %: $INPUTPERCENT"%" 
 +       echo Outbound %: $OUTPUTPERCENT"%" 
 +       RED=$(echo "$MAXBRIGHTNESS*$OUTPUTPERCENT/100" | bc) 
 +       GREEN=$(echo "$MAXBRIGHTNESS*$INPUTPERCENT/100" | bc) 
 +       echo "{red:$RED,green:$GREEN}" 
 +       echo "{red:$RED,green:$GREEN}" | nc -w 0 -u $NEOPIXELIP $NEOPIXELPORT 
 +     else 
 +      echo "no change" 
 +    fi 
 +  fi 
 +done 
 </code> </code>
  
projects/neopixel-bandwidth-room-light.txt · Last modified: 2017-12-23 11:49 by trinitor