Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    2100 LED question

    Scheduled Pinned Locked Moved Hardware
    30 Posts 5 Posters 1.4k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • JonathanLeeJ
      JonathanLee
      last edited by JonathanLee

      Something maybe like this

      #!/bin/sh
      pfctl -vvss | grep ', rule 79' >/dev/null
      res=$?
      
      if [ $res = 0 ]; then
        sysctl -q dev.gpio.2.led.2.pwm=1
        gpioctl -f /dev/gpioc2 6 duty 1 >/dev/null
      fi
      
      
      Or...
      
      #!/bin/sh
      
      str="$(pfctl -vvss | grep ', rule 79')"
      
      if [ -z "$str" ]; then
        sysctl -q dev.gpio.2.led.2.pwm=1
        gpioctl -f /dev/gpioc2 6 duty 1 >/dev/null
      fi
      

      Ref Researching:
      https://forums.freebsd.org/threads/bin-sh-how-to-save-a-shell-command-output-into-a-string-variable.90088/

      Make sure to upvote

      1 Reply Last reply Reply Quote 0
      • stephenw10S
        stephenw10 Netgate Administrator
        last edited by

        The problem there is that the rule number an change if you add or remove rules. I was hoping you might be able to see tags on rules in the states but I don't see a way to do that. Yet...

        JonathanLeeJ 2 Replies Last reply Reply Quote 1
        • JonathanLeeJ
          JonathanLee @stephenw10
          last edited by

          @stephenw10 It works if you don't adjust the rules I have it going now.

          Make sure to upvote

          1 Reply Last reply Reply Quote 0
          • JonathanLeeJ
            JonathanLee
            last edited by JonathanLee

            /root/deviceonlinenight

            #!/bin/sh
            pfctl -vvss | grep ', rule 79' >/dev/null
            res=$?
            if [ $res = 0 ]; 
            then
              sysctl -q dev.gpio.2.led.0.pwm=1
              gpioctl -f /dev/gpioc2 0 duty 200 >/dev/null
              sysctl -q dev.gpio.2.led.1.pwm=1
              gpioctl -f /dev/gpioc2 3 duty 200 >/dev/null
              sysctl -q dev.gpio.2.led.2.pwm=1
              gpioctl -f /dev/gpioc2 6 duty 200 >/dev/null
            else
              sysctl -q dev.gpio.2.led.0.pwm=1
              gpioctl -f /dev/gpioc2 0 duty 0 >/dev/null
              gpioctl -f /dev/gpioc2 1 duty 0 >/dev/null
              gpioctl -f /dev/gpioc2 2 duty 0 >/dev/null
              sysctl -q dev.gpio.2.led.1.pwm=1
              gpioctl -f /dev/gpioc2 3 duty 0 >/dev/null
              gpioctl -f /dev/gpioc2 4 duty 0 >/dev/null
              gpioctl -f /dev/gpioc2 5 duty 0 >/dev/null
              sysctl -q dev.gpio.2.led.2.pwm=1
              gpioctl -f /dev/gpioc2 6 duty 0 >/dev/null
              gpioctl -f /dev/gpioc2 7 duty 0 >/dev/null
              gpioctl -f /dev/gpioc2 8 duty 0 >/dev/null
            fi
            
            

            /root/deviceonlineday

            #!/bin/sh
            pfctl -vvss | grep ', rule 79' >/dev/null
            res=$?
            if [ $res = 0 ]; 
            then
              sysctl -q dev.gpio.2.led.1.pwm=1
              gpioctl -f /dev/gpioc2 3 duty 100 >/dev/null
              sysctl -q dev.gpio.2.led.2.pwm=1
              gpioctl -f /dev/gpioc2 6 duty 100 >/dev/null
            else
              sysctl -q dev.gpio.2.led.1.pwm=1
              gpioctl -f /dev/gpioc2 3 duty 0 >/dev/null
              sysctl -q dev.gpio.2.led.2.pwm=1
              gpioctl -f /dev/gpioc2 7 duty 100 >/dev/null
            fi
            
            

            Make sure to upvote

            1 Reply Last reply Reply Quote 1
            • JonathanLeeJ
              JonathanLee @stephenw10
              last edited by JonathanLee

              @stephenw10

              pfctl -vvss| grep '192.168.1.11' would work great too as it would be IP address based not rule based
              also
              pfctl -vvss| grep -e 192.168.1.18 -e 192.168.1.11

              Make sure to upvote

              1 Reply Last reply Reply Quote 0
              • stephenw10S
                stephenw10 Netgate Administrator
                last edited by

                Nice!

                1 Reply Last reply Reply Quote 1
                • JonathanLeeJ
                  JonathanLee
                  last edited by JonathanLee

                  Kind of amazing looking when testing the deviceonlinenight.sh

                  IMG_20230824_220920858.jpg

                  It looks like the CM-5

                  The 90s Connection Machine

                  Muzio_CM5.jpg

                  Make sure to upvote

                  1 Reply Last reply Reply Quote 1
                  • JonathanLeeJ
                    JonathanLee
                    last edited by JonathanLee

                    #!/bin/sh
                    pfctl -vvss | grep ', rule 79' >/dev/null
                    res=$?
                    if [ $res = 0 ]; 
                    then
                      sysctl -q dev.gpio.2.led.1.pwm=1
                      gpioctl -f /dev/gpioc2 3 duty 100 >/dev/null
                      sysctl -q dev.gpio.2.led.2.pwm=1
                      gpioctl -f /dev/gpioc2 7 duty 0 >/dev/null
                      gpioctl -f /dev/gpioc2 6 duty 100 >/dev/null
                      gpioctl -f /dev/gpioc2 8 duty 100 >/dev/null
                    else
                      sysctl -q dev.gpio.2.led.1.pwm=1
                      gpioctl -f /dev/gpioc2 3 duty 0 >/dev/null
                      sysctl -q dev.gpio.2.led.2.pwm=1
                      gpioctl -f /dev/gpioc2 6 duty 0 >/dev/null
                      gpioctl -f /dev/gpioc2 8 duty 0 >/dev/null
                      gpioctl -f /dev/gpioc2 7 duty 7 >/dev/null
                    fi
                    
                    

                    IMG_20230825_171454810.jpg

                    This will have purple and red :)

                    Make sure to upvote

                    1 Reply Last reply Reply Quote 0
                    • JonathanLeeJ
                      JonathanLee
                      last edited by

                      Another way to do this now you can run the pfctl command once and use the case command to iterate over the variable I named state

                      #!/bin/sh
                      state=$( pfctl -vvss )
                      res=1
                      resb=1
                      case "$state" in 
                        *, rule 79*)
                          res=0
                          ;;
                      esac
                      case "$state" in 
                        *192.168.1.11*)
                          resb=0
                          ;;
                      esac
                      if [ $res = 0 ] && [ $resb = 0 ]; 
                      then
                        sysctl -q dev.gpio.2.led.1.pwm=1
                        gpioctl -f /dev/gpioc2 3 duty 50 >/dev/null
                        sysctl -q dev.gpio.2.led.2.pwm=1
                        gpioctl -f /dev/gpioc2 7 duty 0 >/dev/null
                        gpioctl -f /dev/gpioc2 6 duty 50 >/dev/null
                      elif [ $res = 0 ];
                      then
                        sysctl -q dev.gpio.2.led.1.pwm=1
                        gpioctl -f /dev/gpioc2 3 duty 0 >/dev/null
                        sysctl -q dev.gpio.2.led.2.pwm=1
                        gpioctl -f /dev/gpioc2 7 duty 0 >/dev/null
                        gpioctl -f /dev/gpioc2 6 duty 50 >/dev/null
                      elif [ $resb = 0 ];
                      then
                        sysctl -q dev.gpio.2.led.2.pwm=1
                        gpioctl -f /dev/gpioc2 7 duty 0 >/dev/null
                        gpioctl -f /dev/gpioc2 6 duty 0 >/dev/null
                        sysctl -q dev.gpio.2.led.1.pwm=1
                        gpioctl -f /dev/gpioc2 3 duty 50 >/dev/null
                      else
                        sysctl -q dev.gpio.2.led.1.pwm=1
                        gpioctl -f /dev/gpioc2 3 duty 0 >/dev/null
                        sysctl -q dev.gpio.2.led.2.pwm=1
                        gpioctl -f /dev/gpioc2 6 duty 0 >/dev/null
                        gpioctl -f /dev/gpioc2 7 duty 50 >/dev/null
                        
                      fi
                      
                      

                      Make sure to upvote

                      1 Reply Last reply Reply Quote 1
                      • JonathanLeeJ
                        JonathanLee
                        last edited by

                        Here is a version with 3 conditional LED adaptions.

                        #!/bin/sh
                        check_current_states=$( pfctl -vvss | grep -e ', rule 84' -e '192.168.1.11' -e '192.168.1.15' )
                        res=1
                        resb=1
                        resc=1
                        case "$check_current_states" in 
                          *", rule 79"* ) res=0 ;;
                        esac
                        case "$check_current_states" in
                          *192.168.1.11* ) resb=0 ;;
                        esac
                        case "$check_current_states" in
                          *192.168.1.15* ) resc=0 ;;
                        esac
                        if [ $res = 0 ] && [ $resb = 0 ]; 
                        then
                          sysctl -q dev.gpio.2.led.1.pwm=1
                          gpioctl -f /dev/gpioc2 3 duty 50 >/dev/null
                          sysctl -q dev.gpio.2.led.2.pwm=1
                          gpioctl -f /dev/gpioc2 7 duty 0 >/dev/null
                          gpioctl -f /dev/gpioc2 6 duty 50 >/dev/null
                        elif [ $res = 0 ];
                        then
                          sysctl -q dev.gpio.2.led.1.pwm=1
                          gpioctl -f /dev/gpioc2 3 duty 0 >/dev/null
                          sysctl -q dev.gpio.2.led.2.pwm=1
                          gpioctl -f /dev/gpioc2 7 duty 0 >/dev/null
                          gpioctl -f /dev/gpioc2 6 duty 50 >/dev/null
                        elif [ $resb = 0 ];
                        then
                          sysctl -q dev.gpio.2.led.2.pwm=1
                          gpioctl -f /dev/gpioc2 7 duty 0 >/dev/null
                          gpioctl -f /dev/gpioc2 6 duty 0 >/dev/null
                          sysctl -q dev.gpio.2.led.1.pwm=1
                          gpioctl -f /dev/gpioc2 3 duty 50 >/dev/null
                        else
                          sysctl -q dev.gpio.2.led.1.pwm=1
                          gpioctl -f /dev/gpioc2 3 duty 0 >/dev/null
                          sysctl -q dev.gpio.2.led.2.pwm=1
                          gpioctl -f /dev/gpioc2 6 duty 0 >/dev/null
                          gpioctl -f /dev/gpioc2 7 duty 50 >/dev/null
                          
                        fi
                        if [ $resc = 0 ];
                        then
                          sysctl -q dev.gpio.2.led.0.pwm=1
                          gpioctl -f /dev/gpioc2 2 duty 50 >/dev/null
                        else
                          sysctl -q dev.gpio.2.led.0.pwm=1
                          gpioctl -f /dev/gpioc2 2 duty 0 >/dev/null
                        
                        fi
                        

                        Make sure to upvote

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post
                        Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.