Skip Navigation

Posts
6
Comments
235
Joined
2 yr. ago

  • Pi zero is many times less powerful than the pi3 but still perfectly fine for lots of simple tasks. Just takes forever to update.

  • This as my first thought. When running these commands in my pi1 or zero I go get a sandwich and come back an hour later

  • My personal portfolio website with resume for job hunting.

  • Same standards, and some extras depending on how you do it, but now the burden is on a small accessory part (the removable battery) instead of the complete system. The biggest hurdle here is the EU say it needs to be tool free and done by the customer. That's a tremendous hurdle. Even today with cell phones that are considered repairable they require tools and don't meet this bar.

  • Bose made this but wireless 4+ years ago.

  • For what it's worth I recently moved from Wordpress to Grav and I'm not looking back. It's a web server and the editor is built in but it's all markdown and fast as hell. The file system is flat and easy to understand. I'm smitten.

  • There are lots of ideas like this when you don't consider the battery certification process and the tons of safety standards. A stand alone battery like this requires it's own housing (needs to be thick so you can't crush the soft battery), certified connector for measuring it's temperature and getting power out, include it's PCM circuitry and be perfectly safe for whenever a customer might accidentally do to it. It's far from from trivial. I do this for a living.

  • I agree and that's the point I was making, wireless ear buds are completely disposable and likely can't be anything but. Not sure why I got downvoted to hell.

  • Anything is possible but it costs more money and makes the product bigger. I don't see how consumers are going to stomach a wireless ear bud that has removable batteries when the ear buds get large, uncomfortable and expensive. I guess we will see what the market bears.

  • Tplink Kasa WiFi AC plugs have the ability to turn the led off. I suspect the switches do too?

  • It integrates poorly in my car and requires a USB cable so I don't bother. I'm happier just using my phone screen.

  • Hope you had fun, beautiful island that is getting remarkably popular lately. Brits love it. I've been going there since I was a child and have seen a lot of changes.

  • This is 10 minutes from where my father grew up. Just got back. Did you take this picture? Did you visit?

  • I do ~/docker so I also have a docker-prototype folder for my sandbox/messing around with non-production stuff and I have a third folder for retired docker services so I keep the recipe and data in case I go back.

  • In case anyone cares here is my script, I use this for backups or shutting down the server.

     
        
    #!/bin/bash
    
    logger "Stopping Docker compose services"
    
    services=(/home/user/docker/*)    # This creates an array of the full paths to all subdirs
    #the last entry in this array is always blank line, hence the minus 1 in the for loop count below
    
    for ((i=0; i<=(${#services[@]}-1); i++))
    do
        docker compose -f ${services[i]}/docker-compose.yml down &
    done
    
    #wait for all the background commands to finish
    wait 
    
      
  • I have a folder that all my docker services are in. Inside the folder is a folder for each discrete service and within that folder is a unique compose file necessary to run the service. Also in the folder is all the storage folders for that service so it's completely portable, move the folder to any server and run it and you're golden. I shut down all the services with a script then I can just tar the whole docker folder and every service and its data is backed up and portable.

  • Sorry, I forgot to post the scripts. I'm a meathead electrical engineer so I don't use GIT or anything so here is the code dump. To summarize the setup's software:

    • cron to run the script that turns the ethernet on and runs rsync to pull data from the server. I have 12 cron entries for the various months/dates/times to run.
    • python script to monitor the button presses for manually running a backup or turning the ethernet port back on
    • bash script that runs the rsync job to pull data from the primary server

    The backup script is fairly boring, just runs rsync and pushes the rsync log files back to the primary server. If it fails it sends me an email before turning the ethernet back off and going black.

    #So here is my python code that runs the button press:

     
        
    #!/usr/bin/env python
    
    import RPi.GPIO as GPIO
    import subprocess
    import time
    from multiprocessing import Process
    
    
    #when this script first runs, at boot, disable ethernet
    time.sleep(5) #wait 5 seconds for system to boot, then try and disable ethernet.
    subprocess.call(['/home/pi/ethernet_updown.sh'], shell=False)
    
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(3, GPIO.IN, pull_up_down=GPIO.PUD_UP)
    GPIO.setup(22, GPIO.OUT) #controls TFT display backlight
    GPIO.setup(23, GPIO.IN) #pull up or down is optional, the TFT display buttons have a hardware 10k pull up. Measure low tranisitions 
    GPIO.setup(24, GPIO.IN)
    
    
    #watches the button mounted above the USB port, in the Pi's case. 
    def case_button_watch():
        while True:
            GPIO.wait_for_edge(3, GPIO.FALLING)
            #wait 100ms then check if its still low, debounce timer
            time.sleep(.100)
            if GPIO.input(3) == GPIO.LOW:
                #do something as it's a button press
                print('Button is pressed!')
                time.sleep(.900)
                if GPIO.input(3) == GPIO.LOW:
                    #if the button is pressed for over 1 second its a long press. Run the backup script
                    print('Button long press (greater than 1 second), running an unscheduled backup')
                    subprocess.call(['/home/pi/backup.sh'], shell=False)
                else:
                    #the press was greater than 100mS but less than 1000mS, just toggle the ethernet
                    print('Button short press (less than 1 second), toggling the ethernet')
                    subprocess.call(['/home/pi/ethernet_updown.sh'], shell=False)
            else:
                #do nothing as its interference
                print('GPIO3 debounce failed, it was noise')
    
    #watches the buttons in the TFT display 
    def TFT_display_button1():
        while True:
            GPIO.wait_for_edge(23, GPIO.FALLING)
            #wait 100ms then check if its still low, debounce timer
            time.sleep(.100)
            if GPIO.input(23) == GPIO.LOW:
                #do something as it's a button press
                print('Button GPIO23 is pressed!')
                GPIO.output(22, GPIO.HIGH) #turn the backlight ON
            else:
                #do nothing as its interference
                print('GPIO23 debounce failed, it was noise')
    
    #watches the buttons in the TFT display
    def TFT_display_button2():
        while True:
            GPIO.wait_for_edge(24, GPIO.FALLING)
            #wait 100ms then check if its still low, debounce timer
            time.sleep(.100)
            if GPIO.input(24) == GPIO.LOW:
                #do something as it's a button press
                print('Button GPIO24 is pressed!')
                GPIO.output(22, GPIO.LOW) #turn the backlight OFF
            else:
                #do nothing as its interference
                print('GPIO24 debounce failed, it was noise')
    
    if __name__ == '__main__':
    
        #run three parallel processes to watch all three buttons with software debounce
        proc1 = Process(target=case_button_watch)
        proc1.start()
    
        proc2 = Process(target=TFT_display_button1)
        proc2.start()
    
        proc3 = Process(target=TFT_display_button2)
        proc3.start()
    
      

    #bash script that toggles the ethernet - if its on, it turns it off. if its off, it turns it on:

     
        
    #!/bin/bash
    
    if sudo ifconfig | grep 'eth0' | grep 'RUNNING' > /dev/null; 
    then 
        wall -n "$(date +"%Y%m%d_%H%M%S"):Ethernet going down"
        sudo ifconfig eth0 down	
    else 
        wall -n "$(date +"%Y%m%d_%H%M%S"):Ethernet going up"
        sudo ifconfig eth0 up
    fi