News:

LATEST RELEASE:  FPP 8.4 - Download from here - https://github.com/FalconChristmas/fpp/releases/tag/8.4

+-+-

+-User

Welcome, Guest.
Please login or register.
 
 
 
Forgot your password?

+-Site Stats

Members
Total Members: 16850
Latest: rjslightshow
New This Month: 28
New This Week: 1
New Today: 1
Stats
Total Posts: 135310
Total Topics: 16950
Most Online Today: 117
Most Online Ever: 7634
(January 21, 2020, 02:14:03 AM)
Users Online
Members: 0
Guests: 84
Total: 84

Recent posts

#1
Falcon PiCap / Re: Swapped PiCap V1 with V2 -...
Last post by CaptainMurdoch - Today at 05:29:18 PM
I don't see any screenshots.  Did you configure the output in xLights or manually via the FPP web UI?
#2
Falcon PiCap / Re: Does the Falcon PiCap v2 s...
Last post by CaptainMurdoch - Today at 05:27:42 PM
The DMX output on the PiCap v2 is a RS-485 output connected to the Pi's onboard serial port (ttyAMA0).  If your Renard expects RS-485 input, then you should be able to configure FPP to send Renard out the ttyAMA0 serial port and connect it to the PiCap v2's DMX output.
#3
Falcon Player (FPP) / Re: FPP 8.4 released!
Last post by lrhorer - Today at 11:30:42 AM
I have temporarily enabled GPIO4 to run the script both when the pin is rising and falling, and added an argument to tell whether the pin is high or low.  This works somewhat, but is far from ideal.

GPIO4 transitions low whenever power is no longer available to the string.  This implies one of two things.  Either the fuse feeding the string has blown, or main power has failed.  GPIO17 will also drop if the main power fails.  Ordinarily, I would be able to simply inspect both to see which is the case and respond appropriately in the script.  Using the value of the argument (argv[1]), I can discern the fact GPIO4 has transitioned low, but there is no way to do this outside of the instance when FPP makes the call.

To put it another way, Normally I should be able to run the script from the CLI using the alias `status_print`, which ideally should say:

Host Name: Lighting1
CPU Temperature: 49C
CPU Usage: 3%
Disk Usage: 23%
Memory Usage: 47%
Power OK.
Fuse Failure!
Case Temperature 44.9C
Battery Voltage 11.43 Volts
Fan On
Cooling Off

but the script is unable to make that determination except when it is called by FPP because of a failure.  Instead, all it can do is say:

Host Name: Lighting1
CPU Temperature: 49C
CPU Usage: 3%
Disk Usage: 23%
Memory Usage: 47%
Power OK.
Fuse Status: Unknown
Case Temperature 44.9C
Battery Voltage 11.43 Volts
Fan On
Cooling Off
#4
Falcon PiCap / Swapped PiCap V1 with V2 - Pix...
Last post by twseeman - Today at 10:24:13 AM
I purchased PiCap V2 to take advantage of 4 ports.  PiCap V1 was working with my leaping arches.  I also upgraded to FPP 8.4.  I am running on a Raspberry Pi 3a.  When I attempt to test pixels, I get not lights.  I will include a screenshot of FPP and the PiCap V2.  I don't know if there is a manual, if there is, can someone point me to it.  I just need help determining while the pixels don't light.
Thanks
Tom Seeman
#5
Falcon PiCap / Does the Falcon PiCap v2 suppo...
Last post by dakingus - January 18, 2025, 05:45:25 PM
Does the Falcon PiCap v2 support Renard output?  The product page does not specifically say is why I'm asking.  
#6
Falcon PiCap / K2-Pi-Servo
Last post by breese - January 17, 2025, 01:47:06 PM
@dkulp
I received my complete K2-Pi-Servo package.
After configuring it I updated it to 8.4.2
When I go into Channel Outputs / Servos Tab and Activate the hat, when I click on Save it highlights but never saves.
If I active the servo hat, change to the Pixel Strings, activate the Enable K2-Pi-Servo, and click Save, Both settings are updated.
Edit: The saved settings for the Servos do not stay activated after a reboot

You cannot view this attachment.
#7
Falcon Player (FPP) / Re: FPP 8.4 released!
Last post by lrhorer - January 17, 2025, 09:09:58 AM
I was unfamiliar with node-red, so I looked it up.  It is just about the last thing on Earth I would want to use for this application.  I could, of course, use an external watchdog to keep track of the GPIO pins, but why add extra code if the code to handle the transition is already in FPP?  I could also take a brute force approach and spawn an external instance of `gpioinfo | grep GPIO4 | grep low`, but that is quite brittle and rather klunky.  An internal Python routine would be far more future proof and independent of the vagaries of gpioinfo.[

Edit: gpioinfo does not work as expected.  It only reports whether the pin is used and whether it is active low or high.  It does not report the actual pin state.
#8
Falcon Player (FPP) / Re: FPP 8.4 released!
Last post by lrhorer - January 16, 2025, 01:50:34 PM
The script does not interact with FPP in any way.  It runs under various situations, one of which is a power or fuse failure, which is indicated by GPIO4 transitioning from around 3V to 0V.  After the script is spawned, it collects various data such as CPU usage, memory usage, temperature, etc.  If requested by the name used to call the script, or if an important situation exists it sends emails and / or texts.  Otherwise it responds per the name used to call the script.

If both GPIO4 and GPIO17 are low, then there is a main power or main fuse failure.  If only GPIO4 is low, then it is a failure of the fuse feeding the string.  If neither are low, then power is OK. (Obviously in this latter case, the script was not called by FPP.) Here is the script so far:

#! /usr/bin/python3
# pi_monitor.py
# Scan / print the health of a Raspberry Pi and
# report any issues to the phone or email list

import psutil, subprocess, email, smtplib, ssl, SendMessage
from time import sleep
from sys import argv, exit
from os import uname
from gpiozero import CPUTemperature
import RPi.GPIO as GPIO

Degrees = "\u00B0C" # Degree symbol UTF-16
Degrees = "C"

HighCPUUsage = 90 # High CPU usage in %
HighCPUTemp = 65 # High CPU temperature in Celsius
CritCPUTemp = 80 # Critical CPU temperature in Celsius
HighMemUsage = 70 # High Memory utilization
HighDiskUsage = 60 # High Disk utilization
Uname = uname().nodename

phones = [["##########", "Consumer Cellular", True],["##########", "Sprint", True], ["#######", "##########", False]]

# runDef = [ Script Name, Delay in seconds, Send to stdout, Send email / sms ]
runDef = [["start", 30, False, True], ["check", 0, False, False], ["print", 0, True, False], ["flash", 0, True, True], ["mail", 0, False, True]]

GPIO.setmode(GPIO.BCM)
GPIO.setup(4,GPIO.IN)
GPIO.setup(17,GPIO.IN)

Fuse = GPIO.input(4)
Power = GPIO.input(17)

if len(argv) > 0: # Should always be non-zero if called from CLI
envString = argv[0] # Contains the name by which the script was called
for runVal in runDef:
scriptName, scriptDelay, scriptPrint, scriptMail, *rest = runVal
if envString.find(scriptName) > 0: # Check if script called with this runVal value
sleep(scriptDelay)
break
else:
print("WTF?") # Not called from CLI
exit(1)

def pi_status(): # Main routine: always called by script
# Gather information about system
result1 = getTemperature()
result2 = getCPU()
result3 = getDiskUsage()
result4 = getMemUsage()
if scriptMail: # Called with Mail Send request: send email
if scriptName == "start":
sendText = "Raspberry Pi Startup notification\r\n"
else:
sendText = "Raspberry Pi Monitor Mail\r\n"
sendText = sendText + "Host Name: " + Uname + "\r\n"
sendText = sendText + result1+ "\r\n"
sendText = sendText + result2+ "\r\n"
sendText = sendText + result3+ "\r\n"
sendText = sendText + result4+ "\r"
sendMessage(sendText)
if scriptPrint: # Called with display request: send to stdout
print("Host Name: " + Uname)
print(result1)
print(result2)
print(result3)
print(result4)

def getTemperature():
cpuTemp = int(CPUTemperature().temperature)
Ctemp = "CPU Temperature: " + str(cpuTemp) + Degrees
if cpuTemp > CritCPUTemp:
sendText = "CRITICAL ALARM FROM HOST " + Uname + "!\r\nALERT: Critical temperature " + str(Ctemp) + ".\r\nShutting system down...\r"
sendMessage(sendText)
sleep(10)
subprocess.run(["shutdown", "-h", "0"])
elif cpuTemp > HighCPUTemp:
sendText = "Alarm From Host " + Uname + "!\r\nWarning: High temperature " + str(Ctemp) + ".\r"
sendMessage(sendText)
return Ctemp

def getCPU():
cpuPercent = int(psutil.cpu_percent(1))
Cusage = "CPU Usage: " + str(cpuPercent) + "%"
if cpuPercent > HighCPUUsage:
# Sending alert on high cpu usage."
sendText = "Alert From HOST " + Uname + "!\r\nWarning: High CPU Utilization " + str(cpuPercent) + "%\r"
sendMessage(sendText)
return Cusage

def getDiskUsage():
for dp in psutil.disk_partitions():
diskUsagePercent = int(psutil.disk_usage(dp.mountpoint).percent)
diskPercent = "Disk Usage: " + str(diskUsagePercent) + "%"
if (diskUsagePercent > HighDiskUsage):
sendText = "Warning From Host " + Uname + "!\r\nWarning: High Disk Usage " + str(diskUsagePercent) + "%.\r"
sendMessage(sendText)
return diskPercent

def getMemUsage():
memUsagePercent = int(psutil.virtual_memory().percent)
if (memUsagePercent > HighMemUsage):
sendText = "Alert From Host " + Uname + "!\r\nWarning: High Memory Usage " + str(memUsagePercent) + "%.\r"
sendMessage(alertMsg)
memUse = "Memory Usage: " +str(memUsagePercent) + "%"
return memUse

def getPower():
if not Fuse:
if not Power:
Text = "Main power failure.  Shutdown will occur shortly."
else:
Text = "Fuse failure."
SendMessage(Text)
pi_status()
#9
Falcon Player (FPP) / Re: FPP 8.4 released!
Last post by darylc - January 15, 2025, 07:24:07 PM
Quote from: lrhorer on January 15, 2025, 03:16:51 PMFPP is indeed using the pin, as expected.  The problem is, I still need to be able to scan the state of the pin in the external script.  The script needs to run on the falling edge of the pin, but it also needs to examine the pin whether nor not it has been called by FPP.  It runs under various situations, including when FPP calls it, as well, and it needs to know the status of the pin whether it has been called by FPP or not.
Personally, I would use node-red instead of a script and have FPP issue a MQTT status when the pin is pressed and let node-red do all the logic including calling back to FPP's API to cause FPP to do things.  This comes with the added bonus of a visual workflow rather than having to re-read/learn the script each time to troubleshoot or modify it.
#10
Falcon Player (FPP) / Re: FPP 8.4 released!
Last post by lrhorer - January 15, 2025, 03:16:51 PM
FPP is indeed using the pin, as expected.  The problem is, I still need to be able to scan the state of the pin in the external script.  The script needs to run on the falling edge of the pin, but it also needs to examine the pin whether nor not it has been called by FPP.  It runs under various situations, including when FPP calls it, as well, and it needs to know the status of the pin whether it has been called by FPP or not.

Support FPP

+- Recent Topics

Swapped PiCap V1 with V2 - Pixels will not light in test by CaptainMurdoch
Today at 05:29:18 PM

Does the Falcon PiCap v2 support Renard Output? by CaptainMurdoch
Today at 05:27:42 PM

FPP 8.4 released! by lrhorer
Today at 11:30:42 AM

K2-Pi-Servo by breese
January 17, 2025, 01:47:06 PM

Big button url question by darylc
January 14, 2025, 05:54:32 PM

Display TEXT to LED Panels form REST API by CaptainMurdoch
January 14, 2025, 11:55:25 AM

Differential Board: PSU & Enclosure by jnealand
January 14, 2025, 07:42:55 AM

wine from matrix with octoscroller control by Poporacer
January 12, 2025, 10:40:05 AM

xLights.org forum registration waiting for approval for several months. by darylc
January 11, 2025, 12:42:54 AM

FPP sequence fade by CaptainMurdoch
January 10, 2025, 08:19:33 AM

Powered by EzPortal
Powered by SMFPacks Menu Editor Mod