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

    2100 LED question

    Scheduled Pinned Locked Moved Hardware
    30 Posts 5 Posters 2.3k 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

      I am going to use this as a string entry and check to see if it is null if not turn the led on.

      Simple enough in theory.

      Screenshot 2023-08-24 at 1.02.54 PM.png

      Make sure to upvote

      1 Reply Last reply Reply Quote 0
      • 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.