Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

type and Network Node (MAC) dropdown is not work #483

Closed
boyphongsakorn opened this issue Oct 15, 2023 · 20 comments
Closed

type and Network Node (MAC) dropdown is not work #483

boyphongsakorn opened this issue Oct 15, 2023 · 20 comments
Labels
bug 🐛 Something isn't working next release/in dev image🚀 This is coming in the next release or was already released if the issue is Closed.

Comments

@boyphongsakorn
Copy link

Describe the issue

type and Network Node (MAC) dropdown is not work

# General
#---------------------------
LOG_LEVEL='verbose'
LOG_LEVEL__metadata="{}"
TIMEZONE='Asia/Bangkok'
TIMEZONE__metadata="{}"
PLUGINS_KEEP_HIST=250
PLUGINS_KEEP_HIST__metadata="{}"
PIALERT_WEB_PROTECTION=False
PIALERT_WEB_PROTECTION__metadata="{}"
PIALERT_WEB_PASSWORD='8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92'
PIALERT_WEB_PASSWORD__metadata="{}"
INCLUDED_SECTIONS=['new_devices','down_devices','events']
INCLUDED_SECTIONS__metadata="{}"
REPORT_DASHBOARD_URL='http://pi.alert'
REPORT_DASHBOARD_URL__metadata="{}"
DIG_GET_IP_ARG='-4 myip.opendns.com @resolver1.opendns.com'
DIG_GET_IP_ARG__metadata="{}"
UI_LANG='English'
UI_LANG__metadata="{}"
UI_PRESENCE=['online','offline','archived']
UI_PRESENCE__metadata="{}"
DAYS_TO_KEEP_EVENTS=90
DAYS_TO_KEEP_EVENTS__metadata="{}"
HRS_TO_KEEP_NEWDEV=0
HRS_TO_KEEP_NEWDEV__metadata="{}"
API_CUSTOM_SQL='SELECT * FROM Devices WHERE dev_PresentLastScan = 0'
API_CUSTOM_SQL__metadata="{}"
NETWORK_DEVICE_TYPES=['AP','Gateway','Firewall','Hypervisor','Powerline','Switch','WLAN','PLC','Router','USB LAN Adapter','USB WIFI Adapter','Internet']
NETWORK_DEVICE_TYPES__metadata="{}"


# ARPSCAN
#---------------------------
SCAN_SUBNETS=['192.168.31.0/24 --interface=enp2s0']
SCAN_SUBNETS__metadata="{}"
ARPSCAN_RUN='schedule'
ARPSCAN_RUN__metadata="{\"function\": \"RUN\", \"type\": \"text.select\", \"default_value\": \"schedule\", \"options\": [\"disabled\", \"once\", \"schedule\", \"always_after_scan\", \"on_new_device\"], \"localized\": [\"name\", \"description\"], \"events\": [\"run\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"When to run\"}, {\"language_code\": \"es_es\", \"string\": \"Cuando ejecutar\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Specify when your Network-discovery scan will run. Typical setting would be <code>schedule</code> and then you specify a cron-like schedule in the <a href=\\\"#ARPSCAN_RUN_SCHD\\\"><code>ARPSCAN_RUN_SCHD</code>setting</a> \"}, {\"language_code\": \"es_es\", \"string\": \"Especifique cu\\u00e1ndo se ejecutar\\u00e1 su an\\u00e1lisis de descubrimiento de red. La configuraci\\u00f3n t\\u00edpica ser\\u00eda <code>schedule</code> y luego se especifica una programaci\\u00f3n similar a cron en la configuraci\\u00f3n <a href=\\\"#ARPSCAN_RUN_SCHD\\\"><code>ARPSCAN_RUN_SCHD</code></a> \"}]}"
ARPSCAN_CMD='python3 /home/pi/pialert/front/plugins/arp_scan/script.py userSubnets={subnets}'
ARPSCAN_CMD__metadata="{\"function\": \"CMD\", \"type\": \"readonly\", \"default_value\": \"python3 /home/pi/pialert/front/plugins/arp_scan/script.py userSubnets={subnets}\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Command\"}, {\"language_code\": \"es_es\", \"string\": \"Comando\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Command to run. This should not be changed\"}, {\"language_code\": \"es_es\", \"string\": \"Comando para ejecutar. Esto no debe ser cambiado\"}]}"
ARPSCAN_RUN_TIMEOUT=300
ARPSCAN_RUN_TIMEOUT__metadata="{\"function\": \"RUN_TIMEOUT\", \"type\": \"integer\", \"default_value\": 300, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Run timeout\"}, {\"language_code\": \"es_es\", \"string\": \"Tiempo l\\u00edmite de ejecuci\\u00f3n\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Maximum time in seconds to wait for the script to finish. If this time is exceeded the script is aborted.\"}, {\"language_code\": \"es_es\", \"string\": \"Tiempo m\\u00e1ximo en segundos para esperar a que finalice el script. Si se supera este tiempo, se cancela el script.\"}]}"
ARPSCAN_RUN_SCHD='*/3 * * * *'
ARPSCAN_RUN_SCHD__metadata="{\"function\": \"RUN_SCHD\", \"type\": \"text\", \"default_value\": \"*/3 * * * *\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Schedule\"}, {\"language_code\": \"es_es\", \"string\": \"Schedule\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Only enabled if you select <code>schedule</code> in the <a href=\\\"#ARPSCAN_RUN\\\"><code>ARPSCAN_RUN</code> setting</a>. Make sure you enter the schedule in the correct cron-like format (e.g. validate at <a href=\\\"https://crontab.guru/\\\" target=\\\"_blank\\\">crontab.guru</a>). For example entering <code>*/3 * * * *</code> will run the scan every 3 minutes. Will be run NEXT time the time passes. <br/> It's recommended to use the same schedule interval for all plugins responsible for discovering new devices.\"}, {\"language_code\": \"es_es\", \"string\": \"Solo est\\u00e1 habilitado si selecciona <code>schedule</code> en la configuraci\\u00f3n <a href=\\\"#ARPSCAN_RUN\\\"><code>ARPSCAN_RUN</code></a>. Aseg\\u00farese de ingresar la programaci\\u00f3n en el formato similar a cron correcto (por ejemplo, valide en <a href=\\\"https://crontab.guru/\\\" target=\\\"_blank\\\">crontab.guru</a>). Por ejemplo, ingresar <code>*/3 * * * *</code> ejecutar\\u00e1 el escaneo cada 3 minutos. Se ejecutar\\u00e1 la PR\\u00d3XIMA vez que pase el tiempo. <br/> Se recomienda utilizar el mismo intervalo de programaci\\u00f3n para todos los complementos que analizan su red.\"}]}"
ARPSCAN_WATCH=['Watched_Value1','Watched_Value2']
ARPSCAN_WATCH__metadata="{\"function\": \"WATCH\", \"type\": \"text.multiselect\", \"default_value\": [\"Watched_Value1\", \"Watched_Value2\"], \"options\": [\"Watched_Value1\", \"Watched_Value2\", \"Watched_Value3\", \"Watched_Value4\"], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Watched\"}, {\"language_code\": \"es_es\", \"string\": \"Watched\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Send a notification if selected values change. Use <code>CTRL + Click</code> to select/deselect. <ul> <li><code>Watched_Value1</code> is IP</li><li><code>Watched_Value2</code> is Vendor</li><li><code>Watched_Value3</code> is Interface </li><li><code>Watched_Value4</code> is N/A </li></ul>\"}, {\"language_code\": \"es_es\", \"string\": \"Env\\u00eda una notificaci\\u00f3n si los valores seleccionados cambian. Utilice <code>CTRL + clic</code> para seleccionar/deseleccionar. <ul> <li><code>Valor_observado1</code> es IP</li><li><code>Valor_observado2</code> es Proveedor</li><li><code>Valor_observado3</code> es Interfaz </li><li><code>Valor_observado4</code> es N/A </li></ul>\"}]}"
ARPSCAN_REPORT_ON=['new']
ARPSCAN_REPORT_ON__metadata="{\"function\": \"REPORT_ON\", \"type\": \"text.multiselect\", \"default_value\": [\"new\"], \"options\": [\"new\", \"watched-changed\", \"watched-not-changed\", \"missing-in-last-scan\"], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Report on\"}, {\"language_code\": \"es_es\", \"string\": \"Informar sobre\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"When should notification be sent out.\"}, {\"language_code\": \"es_es\", \"string\": \"Cu\\u00e1ndo debe enviarse una notificaci\\u00f3n.\"}]}"

# DDNS
#---------------------------
DDNS_RUN='schedule'
DDNS_RUN__metadata="{\"function\": \"RUN\", \"events\": [\"run\"], \"type\": \"text.select\", \"default_value\": \"schedule\", \"options\": [\"disabled\", \"once\", \"schedule\", \"always_after_scan\"], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"When to run\"}, {\"language_code\": \"es_es\", \"string\": \"Cu\\u00e1ndo ejecutar\"}, {\"language_code\": \"de_de\", \"string\": \"Wann laufen\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"When the plugin should run. An hourly or daily <code>SCHEDULE</code> is a good option.\"}]}"
DDNS_CMD='python3 /home/pi/pialert/front/plugins/ddns_update/script.py prev_ip={prev_ip}  DDNS_UPDATE_URL={DDNS_UPDATE_URL} DDNS_USER={DDNS_USER} DDNS_PASSWORD={DDNS_PASSWORD} DDNS_DOMAIN={DDNS_DOMAIN} '
DDNS_CMD__metadata="{\"function\": \"CMD\", \"type\": \"readonly\", \"default_value\": \"python3 /home/pi/pialert/front/plugins/ddns_update/script.py prev_ip={prev_ip}  DDNS_UPDATE_URL={DDNS_UPDATE_URL} DDNS_USER={DDNS_USER} DDNS_PASSWORD={DDNS_PASSWORD} DDNS_DOMAIN={DDNS_DOMAIN} \", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Command\"}, {\"language_code\": \"es_es\", \"string\": \"Comando\"}, {\"language_code\": \"de_de\", \"string\": \"Befehl\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Command to run. This can not be changed\"}, {\"language_code\": \"es_es\", \"string\": \"Comando a ejecutar. Esto no se puede cambiar\"}, {\"language_code\": \"de_de\", \"string\": \"Befehl zum Ausf\\u00fchren. Dies kann nicht ge\\u00e4ndert werden\"}]}"
DDNS_RUN_SCHD='*/5 * * * *'
DDNS_RUN_SCHD__metadata="{\"function\": \"RUN_SCHD\", \"type\": \"text\", \"default_value\": \"*/5 * * * *\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Schedule\"}, {\"language_code\": \"es_es\", \"string\": \"Schedule\"}, {\"language_code\": \"de_de\", \"string\": \"Schedule\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Only enabled if you select <code>schedule</code> in the <a href=\\\"#DDNS_RUN\\\"><code>DDNS_RUN</code> setting</a>. Make sure you enter the schedule in the correct cron-like format (e.g. validate at <a href=\\\"https://crontab.guru/\\\" target=\\\"_blank\\\">crontab.guru</a>). For example entering <code>0 4 * * *</code> will run the scan after 4 am in the <a onclick=\\\"toggleAllSettings()\\\" href=\\\"#TIMEZONE\\\"><code>TIMEZONE</code> you set above</a>. Will be run NEXT time the time passes.\"}, {\"language_code\": \"es_es\", \"string\": \"Solo est\\u00e1 habilitado si selecciona <code>schedule</code> en la configuraci\\u00f3n <a href=\\\"#DDNS_RUN\\\"><code>DDNS_RUN</code></a>. Aseg\\u00farese de ingresar la programaci\\u00f3n en el formato similar a cron correcto (por ejemplo, valide en <a href=\\\"https://crontab.guru/\\\" target=\\\"_blank\\\">crontab.guru</a>). Por ejemplo, ingresar <code>0 4 * * *</code> ejecutar\\u00e1 el escaneo despu\\u00e9s de las 4 a.m. en el <a onclick=\\\"toggleAllSettings()\\\" href=\\\"#TIMEZONE\\\"><code>TIMEZONE</ c\\u00f3digo> que configur\\u00f3 arriba</a>. Se ejecutar\\u00e1 la PR\\u00d3XIMA vez que pase el tiempo.\"}, {\"language_code\": \"de_de\", \"string\": \"Nur aktiviert, wenn Sie <code>schedule</code> in der <a href=\\\"#DDNS_RUN\\\"><code>DDNS_RUN</code>-Einstellung</a> ausw\\u00e4hlen. Stellen Sie sicher, dass Sie den Zeitplan im richtigen Cron-\\u00e4hnlichen Format eingeben (z. B. validieren unter <a href=\\\"https://crontab.guru/\\\" target=\\\"_blank\\\">crontab.guru</a>). Wenn Sie beispielsweise <code>0 4 * * *</code> eingeben, wird der Scan nach 4 Uhr morgens in der <a onclick=\\\"toggleAllSettings()\\\" href=\\\"#TIMEZONE\\\"><code>TIMEZONE</ ausgef\\u00fchrt. Code> den Sie oben festgelegt haben</a>. Wird das N\\u00c4CHSTE Mal ausgef\\u00fchrt, wenn die Zeit vergeht.\"}]}"
DDNS_RUN_TIMEOUT=30
DDNS_RUN_TIMEOUT__metadata="{\"function\": \"RUN_TIMEOUT\", \"type\": \"integer\", \"default_value\": 30, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Run timeout\"}, {\"language_code\": \"es_es\", \"string\": \"Tiempo l\\u00edmite de ejecuci\\u00f3n\"}, {\"language_code\": \"de_de\", \"string\": \"Zeit\\u00fcberschreitung\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Maximum time in seconds to wait for the script to finish. If this time is exceeded the script is aborted.\"}, {\"language_code\": \"es_es\", \"string\": \"Tiempo m\\u00e1ximo en segundos para esperar a que finalice el script. Si se supera este tiempo, el script se cancela.\"}, {\"language_code\": \"de_de\", \"string\": \"Maximale Zeit in Sekunden, die auf den Abschluss des Skripts gewartet werden soll. Bei \\u00dcberschreitung dieser Zeit wird das Skript abgebrochen.\"}]}"
DDNS_DOMAIN='your_domain.freeddns.org'
DDNS_DOMAIN__metadata="{\"function\": \"DOMAIN\", \"type\": \"text\", \"default_value\": \"your_domain.freeddns.org\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"DynDNS domain URL\"}, {\"language_code\": \"es_es\", \"string\": \"URL del dominio DynDNS\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"DynDNS host URL (do not include http:// or https://).\"}, {\"language_code\": \"es_es\", \"string\": \"URL del host DynDNS (no incluya http:// o https://).\"}]}"
DDNS_USER='dynu_user'
DDNS_USER__metadata="{\"function\": \"USER\", \"type\": \"text\", \"default_value\": \"dynu_user\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"DynDNS user\"}, {\"language_code\": \"es_es\", \"string\": \"Usuario de DynDNS\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The username used to login to the DynDNS service (sometimes a full email address).\"}, {\"language_code\": \"es_es\", \"string\": \"El nombre de usuario utilizado para iniciar sesi\\u00f3n en el servicio DynDNS (a veces, una direcci\\u00f3n de correo electr\\u00f3nico completa).\"}]}"
DDNS_PASSWORD='A0000000B0000000C0000000D0000000'
DDNS_PASSWORD__metadata="{\"function\": \"PASSWORD\", \"type\": \"password\", \"default_value\": \"A0000000B0000000C0000000D0000000\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"DynDNS password\"}, {\"language_code\": \"es_es\", \"string\": \"Contrase\\u00f1a de DynDNS\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The DynDNS service access password\"}, {\"language_code\": \"es_es\", \"string\": \"La contrase\\u00f1a de acceso al servicio DynDNS.\"}]}"
DDNS_UPDATE_URL='https://api.dynu.com/nic/update?'
DDNS_UPDATE_URL__metadata="{\"function\": \"UPDATE_URL\", \"type\": \"text\", \"default_value\": \"https://api.dynu.com/nic/update?\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"DynDNS update URL\"}, {\"language_code\": \"es_es\", \"string\": \"URL de actualizaci\\u00f3n de DynDNS\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Update URL starting with <code>http://</code> or <code>https://</code>.\"}, {\"language_code\": \"es_es\", \"string\": \"Actualice la URL que comienza con <code>http://</code> o <code>https://</code>.\"}]}"
DDNS_WATCH=['Watched_Value1']
DDNS_WATCH__metadata="{\"function\": \"WATCH\", \"type\": \"text.multiselect\", \"default_value\": [\"Watched_Value1\"], \"options\": [\"Watched_Value1\", \"Watched_Value2\", \"Watched_Value3\", \"Watched_Value4\"], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Watched\"}, {\"language_code\": \"es_es\", \"string\": \"Visto\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Send a notification if selected values change. Use <code>CTRL + Click</code> to select/deselect. <ul> <li><code>Watched_Value1</code> is Previous IP (not recommended)</li><li><code>Watched_Value2</code> unused</li><li><code>Watched_Value3</code> unused </li><li><code>Watched_Value4</code> unused </li></ul>\"}]}"
DDNS_REPORT_ON=['new','watched-changed']
DDNS_REPORT_ON__metadata="{\"function\": \"REPORT_ON\", \"type\": \"text.multiselect\", \"default_value\": [\"new\", \"watched-changed\"], \"options\": [\"new\", \"watched-changed\", \"watched-not-changed\", \"missing-in-last-scan\"], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Report on\"}, {\"language_code\": \"es_es\", \"string\": \"Informar sobre\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Send a notification only on these statuses. <code>new</code> means a new unique (unique combination of PrimaryId and SecondaryId) object was discovered. <code>watched-changed</code> means that selected <code>Watched_ValueN</code> columns changed.\"}, {\"language_code\": \"es_es\", \"string\": \"Env\\u00ede una notificaci\\u00f3n solo en estos estados. <code>new</code> significa que se descubri\\u00f3 un nuevo objeto \\u00fanico (una combinaci\\u00f3n \\u00fanica de PrimaryId y SecondaryId). <code>watched-changed</code> significa que las columnas <code>Watched_ValueN</code> seleccionadas cambiaron.\"}]}"

# NEWDEV
#---------------------------
NEWDEV_dev_MAC=''
NEWDEV_dev_MAC__metadata="{\"function\": \"dev_MAC\", \"type\": \"readonly\", \"maxLength\": 50, \"default_value\": \"\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Device MAC\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The MAC address of the device. Uneditable - Autodetected.\"}]}"
NEWDEV_dev_Name='(unknown)'
NEWDEV_dev_Name__metadata="{\"function\": \"dev_Name\", \"type\": \"readonly\", \"maxLength\": 50, \"default_value\": \"(unknown)\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Device Name\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The name of the device. Uneditable as internal functionality is dependent on specific new device names.\"}]}"
NEWDEV_dev_Owner__metadata="{\"function\": \"dev_Owner\", \"type\": \"string\", \"maxLength\": 30, \"default_value\": \"House\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Device Owner\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The owner of the device.\"}]}"
NEWDEV_dev_DeviceType__metadata="{\"function\": \"dev_DeviceType\", \"type\": \"string\", \"maxLength\": 30, \"default_value\": \"\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Device Type\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The type of the device.\"}]}"
NEWDEV_dev_Vendor=''
NEWDEV_dev_Vendor__metadata="{\"function\": \"dev_Vendor\", \"type\": \"readonly\", \"maxLength\": 250, \"default_value\": \"\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Device Vendor\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The vendor of the device. Uneditable - Autodetected.\"}]}"
NEWDEV_dev_Favorite=False
NEWDEV_dev_Favorite__metadata="{\"function\": \"dev_Favorite\", \"type\": \"integer.checkbox\", \"default_value\": 0, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Favorite Device\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Indicates whether the device is marked as a favorite.\"}]}"
NEWDEV_dev_Group__metadata="{\"function\": \"dev_Group\", \"type\": \"string\", \"maxLength\": 10, \"default_value\": \"\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Device Group\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The group to which the device belongs.\"}]}"
NEWDEV_dev_Comments__metadata="{\"function\": \"dev_Comments\", \"type\": \"string\", \"default_value\": \"\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Device Comments\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Additional comments or notes about the device.\"}]}"
NEWDEV_dev_FirstConnection=''
NEWDEV_dev_FirstConnection__metadata="{\"function\": \"dev_FirstConnection\", \"type\": \"readonly\", \"format\": \"date-time\", \"default_value\": \"\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"First Connection\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The date and time of the first connection with the device. Uneditable - Autodetected.\"}]}"
NEWDEV_dev_LastConnection=''
NEWDEV_dev_LastConnection__metadata="{\"function\": \"dev_LastConnection\", \"type\": \"readonly\", \"format\": \"date-time\", \"default_value\": \"\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Last Connection\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The date and time of the last connection with the device. Uneditable - Autodetected.\"}]}"
NEWDEV_dev_LastIP=''
NEWDEV_dev_LastIP__metadata="{\"function\": \"dev_LastIP\", \"type\": \"readonly\", \"maxLength\": 50, \"default_value\": \"\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Last IP\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The last known IP address of the device. Uneditable - Autodetected.\"}]}"
NEWDEV_dev_StaticIP=False
NEWDEV_dev_StaticIP__metadata="{\"function\": \"dev_StaticIP\", \"type\": \"integer.checkbox\", \"default_value\": 0, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Static IP\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Indicates whether the device has a static IP address.\"}]}"
NEWDEV_dev_ScanCycle=True
NEWDEV_dev_ScanCycle__metadata="{\"function\": \"dev_ScanCycle\", \"type\": \"integer.checkbox\", \"default_value\": 1, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Scan Cycle\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The default value of the <code>Scan device</code> dropdown. Enable if newly discovered devices should be scanned.\"}]}"
NEWDEV_dev_LogEvents=True
NEWDEV_dev_LogEvents__metadata="{\"function\": \"dev_LogEvents\", \"type\": \"integer.checkbox\", \"default_value\": 1, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Log Events\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Indicates whether events related to the device shouldbe logged.\"}]}"
NEWDEV_dev_AlertEvents=True
NEWDEV_dev_AlertEvents__metadata="{\"function\": \"dev_AlertEvents\", \"type\": \"integer.checkbox\", \"default_value\": 1, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Alert Events\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Indicates whether events related to the device should trigger alerts. The default value of the <code>Alert All Events</code> checkbox.\"}]}"
NEWDEV_dev_AlertDeviceDown=False
NEWDEV_dev_AlertDeviceDown__metadata="{\"function\": \"dev_AlertDeviceDown\", \"type\": \"integer.checkbox\", \"default_value\": 0, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Alert Device Down\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Indicates whether an alert should be triggered when the device goes down. The default value of the <code>Alert Down</code> checkbox.\"}]}"
NEWDEV_dev_SkipRepeated=0
NEWDEV_dev_SkipRepeated__metadata="{\"function\": \"dev_SkipRepeated\", \"type\": \"integer\", \"default_value\": 0, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Skip Repeated\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The default value of the <code>Skip repeated notifications for</code> dropdown. Enter number of <b>hours</b> for which repeated notifications should be ignored for. If you enter <code>0</code> then you get notified on all events.\"}]}"
NEWDEV_dev_LastNotification=''
NEWDEV_dev_LastNotification__metadata="{\"function\": \"dev_LastNotification\", \"type\": \"readonly\", \"format\": \"date-time\", \"default_value\": \"\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Last Notification\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The date and time of the last notification sent for the device. Uneditable - Autodetected.\"}]}"
NEWDEV_dev_PresentLastScan=True
NEWDEV_dev_PresentLastScan__metadata="{\"function\": \"dev_PresentLastScan\", \"type\": \"integer.checkbox\", \"default_value\": 1, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Present Last Scan\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Indicates whether the device should be marked as present after detected in a scan.\"}]}"
NEWDEV_dev_NewDevice=True
NEWDEV_dev_NewDevice__metadata="{\"function\": \"dev_NewDevice\", \"type\": \"integer.checkbox\", \"default_value\": true, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"New Device\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Indicates whether the device is considered a new device. The default value of the <code>New Device</code> checkbox.\"}]}"
NEWDEV_dev_Location__metadata="{\"function\": \"dev_Location\", \"type\": \"string\", \"maxLength\": 250, \"default_value\": \"\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Device Location\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The location of the device.\"}]}"
NEWDEV_dev_Archived=False
NEWDEV_dev_Archived__metadata="{\"function\": \"dev_Archived\", \"type\": \"integer.checkbox\", \"default_value\": 0, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Archived\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Indicates whether the device is archived. The default value of the <code>Archived</code> checkbox.\"}]}"
NEWDEV_dev_Network_Node_MAC_ADDR__metadata="{\"function\": \"dev_Network_Node_MAC_ADDR\", \"type\": \"string\", \"default_value\": \"\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Network Node MAC Address\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The MAC address of the network node.\"}]}"
NEWDEV_dev_Network_Node_port='0'
NEWDEV_dev_Network_Node_port__metadata="{\"function\": \"dev_Network_Node_port\", \"type\": \"readonly\", \"default_value\": 0, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Network Node Port\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The port number of the network node. Uneditable.\"}]}"
NEWDEV_dev_Icon__metadata="{\"function\": \"dev_Icon\", \"type\": \"string\", \"default_value\": \"\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Device Icon\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"The icon associated with the device. Check the <a href=\\\"https://github.com/jokob-sk/Pi.Alert/blob/main/docs/ICONS.md\\\" target=\\\"_blank\\\">documentation on icons</a> for more details.\"}]}"


# INTRNT
#---------------------------
INTRNT_RUN='schedule'
INTRNT_RUN__metadata="{\"function\": \"RUN\", \"events\": [\"run\"], \"type\": \"text.select\", \"default_value\": \"schedule\", \"options\": [\"disabled\", \"once\", \"schedule\", \"always_after_scan\"], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"When to run\"}, {\"language_code\": \"es_es\", \"string\": \"Cu\\u00e1ndo ejecutar\"}, {\"language_code\": \"de_de\", \"string\": \"Wann laufen\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"When the plugin should run. An hourly or daily <code>SCHEDULE</code> is a good option.\"}]}"
INTRNT_CMD='python3 /home/pi/pialert/front/plugins/internet_ip/script.py prev_ip={prev_ip} DIG_GET_IP_ARG={DIG_GET_IP_ARG}'
INTRNT_CMD__metadata="{\"function\": \"CMD\", \"type\": \"readonly\", \"default_value\": \"python3 /home/pi/pialert/front/plugins/internet_ip/script.py prev_ip={prev_ip} DIG_GET_IP_ARG={DIG_GET_IP_ARG}\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Command\"}, {\"language_code\": \"es_es\", \"string\": \"Comando\"}, {\"language_code\": \"de_de\", \"string\": \"Befehl\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Command to run. This can not be changed\"}, {\"language_code\": \"es_es\", \"string\": \"Comando a ejecutar. Esto no se puede cambiar\"}, {\"language_code\": \"de_de\", \"string\": \"Befehl zum Ausf\\u00fchren. Dies kann nicht ge\\u00e4ndert werden\"}]}"
INTRNT_RUN_SCHD='*/5 * * * *'
INTRNT_RUN_SCHD__metadata="{\"function\": \"RUN_SCHD\", \"type\": \"text\", \"default_value\": \"*/5 * * * *\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Schedule\"}, {\"language_code\": \"es_es\", \"string\": \"Schedule\"}, {\"language_code\": \"de_de\", \"string\": \"Schedule\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Only enabled if you select <code>schedule</code> in the <a href=\\\"#INTRNT_RUN\\\"><code>INTRNT_RUN</code> setting</a>. Make sure you enter the schedule in the correct cron-like format (e.g. validate at <a href=\\\"https://crontab.guru/\\\" target=\\\"_blank\\\">crontab.guru</a>). For example entering <code>0 4 * * *</code> will run the scan after 4 am in the <a onclick=\\\"toggleAllSettings()\\\" href=\\\"#TIMEZONE\\\"><code>TIMEZONE</code> you set above</a>. Will be run NEXT time the time passes.\"}, {\"language_code\": \"es_es\", \"string\": \"Solo est\\u00e1 habilitado si selecciona <code>schedule</code> en la configuraci\\u00f3n <a href=\\\"#INTRNT_RUN\\\"><code>INTRNT_RUN</code></a>. Aseg\\u00farese de ingresar la programaci\\u00f3n en el formato similar a cron correcto (por ejemplo, valide en <a href=\\\"https://crontab.guru/\\\" target=\\\"_blank\\\">crontab.guru</a>). Por ejemplo, ingresar <code>0 4 * * *</code> ejecutar\\u00e1 el escaneo despu\\u00e9s de las 4 a.m. en el <a onclick=\\\"toggleAllSettings()\\\" href=\\\"#TIMEZONE\\\"><code>TIMEZONE</ c\\u00f3digo> que configur\\u00f3 arriba</a>. Se ejecutar\\u00e1 la PR\\u00d3XIMA vez que pase el tiempo.\"}, {\"language_code\": \"de_de\", \"string\": \"Nur aktiviert, wenn Sie <code>schedule</code> in der <a href=\\\"#INTRNT_RUN\\\"><code>INTRNT_RUN</code>-Einstellung</a> ausw\\u00e4hlen. Stellen Sie sicher, dass Sie den Zeitplan im richtigen Cron-\\u00e4hnlichen Format eingeben (z. B. validieren unter <a href=\\\"https://crontab.guru/\\\" target=\\\"_blank\\\">crontab.guru</a>). Wenn Sie beispielsweise <code>0 4 * * *</code> eingeben, wird der Scan nach 4 Uhr morgens in der <a onclick=\\\"toggleAllSettings()\\\" href=\\\"#TIMEZONE\\\"><code>TIMEZONE</ ausgef\\u00fchrt. Code> den Sie oben festgelegt haben</a>. Wird das N\\u00c4CHSTE Mal ausgef\\u00fchrt, wenn die Zeit vergeht.\"}]}"
INTRNT_RUN_TIMEOUT=30
INTRNT_RUN_TIMEOUT__metadata="{\"function\": \"RUN_TIMEOUT\", \"type\": \"integer\", \"default_value\": 30, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Run timeout\"}, {\"language_code\": \"es_es\", \"string\": \"Tiempo l\\u00edmite de ejecuci\\u00f3n\"}, {\"language_code\": \"de_de\", \"string\": \"Zeit\\u00fcberschreitung\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Maximum time in seconds to wait for the script to finish. If this time is exceeded the script is aborted.\"}, {\"language_code\": \"es_es\", \"string\": \"Tiempo m\\u00e1ximo en segundos para esperar a que finalice el script. Si se supera este tiempo, el script se cancela.\"}, {\"language_code\": \"de_de\", \"string\": \"Maximale Zeit in Sekunden, die auf den Abschluss des Skripts gewartet werden soll. Bei \\u00dcberschreitung dieser Zeit wird das Skript abgebrochen.\"}]}"
INTRNT_WATCH=['Watched_Value1']
INTRNT_WATCH__metadata="{\"function\": \"WATCH\", \"type\": \"text.multiselect\", \"default_value\": [\"Watched_Value1\"], \"options\": [\"Watched_Value1\", \"Watched_Value2\", \"Watched_Value3\", \"Watched_Value4\"], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Watched\"}, {\"language_code\": \"es_es\", \"string\": \"Visto\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Send a notification if selected values change. Use <code>CTRL + Click</code> to select/deselect. <ul> <li><code>Watched_Value1</code> is Previous IP (not recommended)</li><li><code>Watched_Value2</code> unused</li><li><code>Watched_Value3</code> unused </li><li><code>Watched_Value4</code> unused </li></ul>\"}]}"
INTRNT_REPORT_ON=['new','watched-changed']
INTRNT_REPORT_ON__metadata="{\"function\": \"REPORT_ON\", \"type\": \"text.multiselect\", \"default_value\": [\"new\", \"watched-changed\"], \"options\": [\"new\", \"watched-changed\", \"watched-not-changed\", \"missing-in-last-scan\"], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Report on\"}, {\"language_code\": \"es_es\", \"string\": \"Informar sobre\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Send a notification only on these statuses. <code>new</code> means a new unique (unique combination of PrimaryId and SecondaryId) object was discovered. <code>watched-changed</code> means that selected <code>Watched_ValueN</code> columns changed.\"}, {\"language_code\": \"es_es\", \"string\": \"Env\\u00ede una notificaci\\u00f3n solo en estos estados. <code>new</code> significa que se descubri\\u00f3 un nuevo objeto \\u00fanico (una combinaci\\u00f3n \\u00fanica de PrimaryId y SecondaryId). <code>watched-changed</code> significa que las columnas <code>Watched_ValueN</code> seleccionadas cambiaron.\"}]}"


# DBCLNP
#---------------------------
DBCLNP_RUN='schedule'
DBCLNP_RUN__metadata="{\"function\": \"RUN\", \"events\": [\"run\"], \"type\": \"text.select\", \"default_value\": \"schedule\", \"options\": [\"disabled\", \"once\", \"schedule\", \"always_after_scan\"], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"When to run\"}, {\"language_code\": \"es_es\", \"string\": \"Cu\\u00e1ndo ejecutar\"}, {\"language_code\": \"de_de\", \"string\": \"Wann laufen\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"When the cleanup should be performed. An hourly or daily <code>SCHEDULE</code> is a good option.\"}]}"
DBCLNP_CMD='python3 /home/pi/pialert/front/plugins/db_cleanup/script.py pluginskeephistory={pluginskeephistory} hourstokeepnewdevice={hourstokeepnewdevice} daystokeepevents={daystokeepevents} pholuskeepdays={pholuskeepdays}'
DBCLNP_CMD__metadata="{\"function\": \"CMD\", \"type\": \"readonly\", \"default_value\": \"python3 /home/pi/pialert/front/plugins/db_cleanup/script.py pluginskeephistory={pluginskeephistory} hourstokeepnewdevice={hourstokeepnewdevice} daystokeepevents={daystokeepevents} pholuskeepdays={pholuskeepdays}\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Command\"}, {\"language_code\": \"es_es\", \"string\": \"Comando\"}, {\"language_code\": \"de_de\", \"string\": \"Befehl\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Command to run. This can not be changed\"}, {\"language_code\": \"es_es\", \"string\": \"Comando a ejecutar. Esto no se puede cambiar\"}, {\"language_code\": \"de_de\", \"string\": \"Befehl zum Ausf\\u00fchren. Dies kann nicht ge\\u00e4ndert werden\"}]}"
DBCLNP_RUN_SCHD='*/30 * * * *'
DBCLNP_RUN_SCHD__metadata="{\"function\": \"RUN_SCHD\", \"type\": \"text\", \"default_value\": \"*/30 * * * *\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Schedule\"}, {\"language_code\": \"es_es\", \"string\": \"Schedule\"}, {\"language_code\": \"de_de\", \"string\": \"Schedule\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Only enabled if you select <code>schedule</code> in the <a href=\\\"#DBCLNP_RUN\\\"><code>DBCLNP_RUN</code> setting</a>. Make sure you enter the schedule in the correct cron-like format (e.g. validate at <a href=\\\"https://crontab.guru/\\\" target=\\\"_blank\\\">crontab.guru</a>). For example entering <code>0 4 * * *</code> will run the scan after 4 am in the <a onclick=\\\"toggleAllSettings()\\\" href=\\\"#TIMEZONE\\\"><code>TIMEZONE</code> you set above</a>. Will be run NEXT time the time passes.\"}, {\"language_code\": \"es_es\", \"string\": \"Solo est\\u00e1 habilitado si selecciona <code>schedule</code> en la configuraci\\u00f3n <a href=\\\"#DBCLNP_RUN\\\"><code>DBCLNP_RUN</code></a>. Aseg\\u00farese de ingresar la programaci\\u00f3n en el formato similar a cron correcto (por ejemplo, valide en <a href=\\\"https://crontab.guru/\\\" target=\\\"_blank\\\">crontab.guru</a>). Por ejemplo, ingresar <code>0 4 * * *</code> ejecutar\\u00e1 el escaneo despu\\u00e9s de las 4 a.m. en el <a onclick=\\\"toggleAllSettings()\\\" href=\\\"#TIMEZONE\\\"><code>TIMEZONE</ c\\u00f3digo> que configur\\u00f3 arriba</a>. Se ejecutar\\u00e1 la PR\\u00d3XIMA vez que pase el tiempo.\"}, {\"language_code\": \"de_de\", \"string\": \"Nur aktiviert, wenn Sie <code>schedule</code> in der <a href=\\\"#DBCLNP_RUN\\\"><code>DBCLNP_RUN</code>-Einstellung</a> ausw\\u00e4hlen. Stellen Sie sicher, dass Sie den Zeitplan im richtigen Cron-\\u00e4hnlichen Format eingeben (z. B. validieren unter <a href=\\\"https://crontab.guru/\\\" target=\\\"_blank\\\">crontab.guru</a>). Wenn Sie beispielsweise <code>0 4 * * *</code> eingeben, wird der Scan nach 4 Uhr morgens in der <a onclick=\\\"toggleAllSettings()\\\" href=\\\"#TIMEZONE\\\"><code>TIMEZONE</ ausgef\\u00fchrt. Code> den Sie oben festgelegt haben</a>. Wird das N\\u00c4CHSTE Mal ausgef\\u00fchrt, wenn die Zeit vergeht.\"}]}"
DBCLNP_RUN_TIMEOUT=30
DBCLNP_RUN_TIMEOUT__metadata="{\"function\": \"RUN_TIMEOUT\", \"type\": \"integer\", \"default_value\": 30, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Run timeout\"}, {\"language_code\": \"es_es\", \"string\": \"Tiempo l\\u00edmite de ejecuci\\u00f3n\"}, {\"language_code\": \"de_de\", \"string\": \"Zeit\\u00fcberschreitung\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Maximum time in seconds to wait for the script to finish. If this time is exceeded the script is aborted.\"}, {\"language_code\": \"es_es\", \"string\": \"Tiempo m\\u00e1ximo en segundos para esperar a que finalice el script. Si se supera este tiempo, el script se cancela.\"}, {\"language_code\": \"de_de\", \"string\": \"Maximale Zeit in Sekunden, die auf den Abschluss des Skripts gewartet werden soll. Bei \\u00dcberschreitung dieser Zeit wird das Skript abgebrochen.\"}]}"


# UNDIS
#---------------------------
UNDIS_RUN='disabled'
UNDIS_RUN__metadata="{\"function\": \"RUN\", \"events\": [\"run\"], \"type\": \"text.select\", \"default_value\": \"disabled\", \"options\": [\"disabled\", \"once\", \"always_after_scan\"], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"When to run\"}, {\"language_code\": \"es_es\", \"string\": \"Cu\\u00e1ndo ejecuta\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"When enabled, ONCE is the preferred option. It runs at startup and after every save of the config here.<br> Changes will only show in the devices <b> after the next scan!</b>\"}, {\"language_code\": \"es_es\", \"string\": \"Cuando est\\u00e1 habilitado, ONCE es la opci\\u00f3n preferida. Se ejecuta al inicio y despu\\u00e9s de cada guardado de la configuraci\\u00f3n aqu\\u00ed.<br> \\u00a1Los cambios solo se mostrar\\u00e1n en los dispositivos <b> despu\\u00e9s del pr\\u00f3ximo escaneo!</b>\"}]}"
UNDIS_CMD='python3 /home/pi/pialert/front/plugins/undiscoverables/script.py devices={devices}'
UNDIS_CMD__metadata="{\"function\": \"CMD\", \"type\": \"text\", \"default_value\": \"python3 /home/pi/pialert/front/plugins/undiscoverables/script.py devices={devices}\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Command\"}, {\"language_code\": \"es_es\", \"string\": \"Comando\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Command to run. This can not be changed\"}, {\"language_code\": \"es_es\", \"string\": \"Comando a ejecutar. Esto no se puede cambiar\"}]}"
UNDIS_RUN_TIMEOUT=10
UNDIS_RUN_TIMEOUT__metadata="{\"function\": \"RUN_TIMEOUT\", \"type\": \"integer\", \"default_value\": 10, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Run timeout\"}, {\"language_code\": \"es_es\", \"string\": \"Tiempo l\\u00edmite de ejecuci\\u00f3n\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Maximum time in seconds to wait for the script to finish. If this time is exceeded the script is aborted.\"}, {\"language_code\": \"es_es\", \"string\": \"Tiempo m\\u00e1ximo en segundos para esperar a que finalice el script. Si se supera este tiempo, el script se cancela.\"}]}"
UNDIS_WATCH='[]'
UNDIS_WATCH__metadata="{\"function\": \"WATCH\", \"type\": \"readonly\", \"default_value\": [], \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Watched\"}, {\"language_code\": \"es_es\", \"string\": \"Visto\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Undiscoverable Devices can not change their status, no watch is enabled.\"}, {\"language_code\": \"es_es\", \"string\": \"Los dispositivos no detectables no pueden cambiar su estado, ning\\u00fan reloj est\\u00e1 habilitado.\"}]}"
UNDIS_REPORT_ON='[]'
UNDIS_REPORT_ON__metadata="{\"function\": \"REPORT_ON\", \"type\": \"readonly\", \"default_value\": [], \"options\": [\"new\", \"watched-changed\", \"watched-not-changed\", \"missing-in-last-scan\"], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Report on\"}, {\"language_code\": \"es_es\", \"string\": \"Informar sobre\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"No notifications will be sent.\"}, {\"language_code\": \"es_es\", \"string\": \"No se enviar\\u00e1n notificaciones.\"}]}"
UNDIS_devices_to_import=['dummy_router']
UNDIS_devices_to_import__metadata="{\"function\": \"devices_to_import\", \"type\": \"list\", \"default_value\": [\"dummy_router\"], \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"UnDiscoverable Devices\"}, {\"language_code\": \"es_es\", \"string\": \"Dispositivo no detectable\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Devices to be added to the devices list.\"}, {\"language_code\": \"es_es\", \"string\": \"Dispositivos que se a\\u00f1adir\\u00e1n a la lista de dispositivos.\"}]}"

# CSVBCKP
#---------------------------
CSVBCKP_RUN='schedule'
CSVBCKP_RUN__metadata="{\"function\": \"RUN\", \"events\": [\"run\"], \"type\": \"text.select\", \"default_value\": \"schedule\", \"options\": [\"disabled\", \"once\", \"schedule\", \"always_after_scan\", \"on_new_device\"], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"When to run\"}, {\"language_code\": \"es_es\", \"string\": \"Cu\\u00e1ndo ejecutar\"}, {\"language_code\": \"de_de\", \"string\": \"Wann laufen\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"When the backup should be created. A daily or weekly <code>SCHEDULE</code> is a good option.\"}, {\"language_code\": \"es_es\", \"string\": \"Cu\\u00e1ndo se debe crear la copia de seguridad. Un <code>SCHEDULE</code> diario o semanal es una buena opci\\u00f3n.\"}, {\"language_code\": \"de_de\", \"string\": \"Wann das Backup erstellt werden soll. Ein t\\u00e4glicher oder w\\u00f6chentlicher <code>SCHEDULE</code> ist eine gute Option.\"}]}"
CSVBCKP_CMD='python3 /home/pi/pialert/front/plugins/csv_backup/script.py overwrite={overwrite} location={location}'
CSVBCKP_CMD__metadata="{\"function\": \"CMD\", \"type\": \"readonly\", \"default_value\": \"python3 /home/pi/pialert/front/plugins/csv_backup/script.py overwrite={overwrite} location={location}\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Command\"}, {\"language_code\": \"es_es\", \"string\": \"Comando\"}, {\"language_code\": \"de_de\", \"string\": \"Befehl\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Command to run. This can not be changed\"}, {\"language_code\": \"es_es\", \"string\": \"Comando a ejecutar. Esto no se puede cambiar\"}, {\"language_code\": \"de_de\", \"string\": \"Befehl zum Ausf\\u00fchren. Dies kann nicht ge\\u00e4ndert werden\"}]}"
CSVBCKP_RUN_SCHD='0 2 * * 3'
CSVBCKP_RUN_SCHD__metadata="{\"function\": \"RUN_SCHD\", \"type\": \"text\", \"default_value\": \"0 2 * * 3\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Schedule\"}, {\"language_code\": \"es_es\", \"string\": \"Schedule\"}, {\"language_code\": \"de_de\", \"string\": \"Schedule\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Only enabled if you select <code>schedule</code> in the <a href=\\\"#CSVBCKP_RUN\\\"><code>CSVBCKP_RUN</code> setting</a>. Make sure you enter the schedule in the correct cron-like format (e.g. validate at <a href=\\\"https://crontab.guru/\\\" target=\\\"_blank\\\">crontab.guru</a>). For example entering <code>0 4 * * *</code> will run the scan after 4 am in the <a onclick=\\\"toggleAllSettings()\\\" href=\\\"#TIMEZONE\\\"><code>TIMEZONE</code> you set above</a>. Will be run NEXT time the time passes.\"}, {\"language_code\": \"es_es\", \"string\": \"Solo est\\u00e1 habilitado si selecciona <code>schedule</code> en la configuraci\\u00f3n <a href=\\\"#CSVBCKP_RUN\\\"><code>CSVBCKP_RUN</code></a>. Aseg\\u00farese de ingresar la programaci\\u00f3n en el formato similar a cron correcto (por ejemplo, valide en <a href=\\\"https://crontab.guru/\\\" target=\\\"_blank\\\">crontab.guru</a>). Por ejemplo, ingresar <code>0 4 * * *</code> ejecutar\\u00e1 el escaneo despu\\u00e9s de las 4 a.m. en el <a onclick=\\\"toggleAllSettings()\\\" href=\\\"#TIMEZONE\\\"><code>TIMEZONE</ c\\u00f3digo> que configur\\u00f3 arriba</a>. Se ejecutar\\u00e1 la PR\\u00d3XIMA vez que pase el tiempo.\"}, {\"language_code\": \"de_de\", \"string\": \"Nur aktiviert, wenn Sie <code>schedule</code> in der <a href=\\\"#CSVBCKP_RUN\\\"><code>CSVBCKP_RUN</code>-Einstellung</a> ausw\\u00e4hlen. Stellen Sie sicher, dass Sie den Zeitplan im richtigen Cron-\\u00e4hnlichen Format eingeben (z. B. validieren unter <a href=\\\"https://crontab.guru/\\\" target=\\\"_blank\\\">crontab.guru</a>). Wenn Sie beispielsweise <code>0 4 * * *</code> eingeben, wird der Scan nach 4 Uhr morgens in der <a onclick=\\\"toggleAllSettings()\\\" href=\\\"#TIMEZONE\\\"><code>TIMEZONE</ ausgef\\u00fchrt. Code> den Sie oben festgelegt haben</a>. Wird das N\\u00c4CHSTE Mal ausgef\\u00fchrt, wenn die Zeit vergeht.\"}]}"
CSVBCKP_RUN_TIMEOUT=30
CSVBCKP_RUN_TIMEOUT__metadata="{\"function\": \"RUN_TIMEOUT\", \"type\": \"integer\", \"default_value\": 30, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Run timeout\"}, {\"language_code\": \"es_es\", \"string\": \"Tiempo l\\u00edmite de ejecuci\\u00f3n\"}, {\"language_code\": \"de_de\", \"string\": \"Zeit\\u00fcberschreitung\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Maximum time in seconds to wait for the script to finish. If this time is exceeded the script is aborted.\"}, {\"language_code\": \"es_es\", \"string\": \"Tiempo m\\u00e1ximo en segundos para esperar a que finalice el script. Si se supera este tiempo, el script se cancela.\"}, {\"language_code\": \"de_de\", \"string\": \"Maximale Zeit in Sekunden, die auf den Abschluss des Skripts gewartet werden soll. Bei \\u00dcberschreitung dieser Zeit wird das Skript abgebrochen.\"}]}"
CSVBCKP_overwrite=False
CSVBCKP_overwrite__metadata="{\"function\": \"overwrite\", \"type\": \"boolean\", \"default_value\": false, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Overwrite file\"}, {\"language_code\": \"es_es\", \"string\": \"Sobrescribir archivo\"}, {\"language_code\": \"de_de\", \"string\": \"Datei \\u00fcberschreiben\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"If the <code>devices.csv</code> file should be always overwritten. If disabled, the date and time is added to the name.\"}, {\"language_code\": \"es_es\", \"string\": \"Si el archivo <code>devices.csv</code> siempre debe sobrescribirse. Si est\\u00e1 deshabilitado, la fecha y la hora se agregan al nombre.\"}, {\"language_code\": \"de_de\", \"string\": \"Wenn die Datei <code>devices.csv</code> immer \\u00fcberschrieben werden soll. Wenn deaktiviert, werden dem Namen Datum und Uhrzeit hinzugef\\u00fcgt.\"}]}"
CSVBCKP_location='/home/pi/pialert/config'
CSVBCKP_location__metadata="{\"function\": \"location\", \"type\": \"text\", \"default_value\": \"/home/pi/pialert/config\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"File location\"}, {\"language_code\": \"es_es\", \"string\": \"Ubicaci\\u00f3n del archivo\"}, {\"language_code\": \"de_de\", \"string\": \"Speicherort\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Where the <code>devices.csv</code> file should be saved. For example <code>/home/pi/pialert/config</code>.\"}, {\"language_code\": \"es_es\", \"string\": \"Donde se debe guardar el archivo <code>devices.csv</code>. Por ejemplo <code>/home/pi/pialert/config</code>.\"}, {\"language_code\": \"de_de\", \"string\": \"Wo die Datei <code>devices.csv</code> gespeichert werden soll. Zum Beispiel <code>/home/pi/pialert/config</code>.\"}]}"

# VNDRPDT
#---------------------------
VNDRPDT_RUN='schedule'
VNDRPDT_RUN__metadata="{\"function\": \"RUN\", \"events\": [\"run\"], \"type\": \"text.select\", \"default_value\": \"schedule\", \"options\": [\"disabled\", \"once\", \"schedule\", \"always_after_scan\"], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"When to run\"}, {\"language_code\": \"es_es\", \"string\": \"Cu\\u00e1ndo ejecutar\"}, {\"language_code\": \"de_de\", \"string\": \"Wann laufen\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"When the plugin should run. An overnight weekly <code>SCHEDULE</code> is recommended.\"}]}"
VNDRPDT_CMD='python3 /home/pi/pialert/front/plugins/vendor_update/script.py'
VNDRPDT_CMD__metadata="{\"function\": \"CMD\", \"type\": \"readonly\", \"default_value\": \"python3 /home/pi/pialert/front/plugins/vendor_update/script.py\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Command\"}, {\"language_code\": \"es_es\", \"string\": \"Comando\"}, {\"language_code\": \"de_de\", \"string\": \"Befehl\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Command to run. This can not be changed\"}, {\"language_code\": \"es_es\", \"string\": \"Comando a ejecutar. Esto no se puede cambiar\"}, {\"language_code\": \"de_de\", \"string\": \"Befehl zum Ausf\\u00fchren. Dies kann nicht ge\\u00e4ndert werden\"}]}"
VNDRPDT_RUN_SCHD='0 4 * * 3'
VNDRPDT_RUN_SCHD__metadata="{\"function\": \"RUN_SCHD\", \"type\": \"text\", \"default_value\": \"0 4 * * 3\", \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Schedule\"}, {\"language_code\": \"es_es\", \"string\": \"Schedule\"}, {\"language_code\": \"de_de\", \"string\": \"Schedule\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Only enabled if you select <code>schedule</code> in the <a href=\\\"#VNDRPDT_RUN\\\"><code>VNDRPDT_RUN</code> setting</a>. Make sure you enter the schedule in the correct cron-like format (e.g. validate at <a href=\\\"https://crontab.guru/\\\" target=\\\"_blank\\\">crontab.guru</a>). For example entering <code>0 4 * * *</code> will run the scan after 4 am in the <a onclick=\\\"toggleAllSettings()\\\" href=\\\"#TIMEZONE\\\"><code>TIMEZONE</code> you set above</a>. Will be run NEXT time the time passes.\"}, {\"language_code\": \"es_es\", \"string\": \"Solo est\\u00e1 habilitado si selecciona <code>schedule</code> en la configuraci\\u00f3n <a href=\\\"#VNDRPDT_RUN\\\"><code>VNDRPDT_RUN</code></a>. Aseg\\u00farese de ingresar la programaci\\u00f3n en el formato similar a cron correcto (por ejemplo, valide en <a href=\\\"https://crontab.guru/\\\" target=\\\"_blank\\\">crontab.guru</a>). Por ejemplo, ingresar <code>0 4 * * *</code> ejecutar\\u00e1 el escaneo despu\\u00e9s de las 4 a.m. en el <a onclick=\\\"toggleAllSettings()\\\" href=\\\"#TIMEZONE\\\"><code>TIMEZONE</ c\\u00f3digo> que configur\\u00f3 arriba</a>. Se ejecutar\\u00e1 la PR\\u00d3XIMA vez que pase el tiempo.\"}, {\"language_code\": \"de_de\", \"string\": \"Nur aktiviert, wenn Sie <code>schedule</code> in der <a href=\\\"#VNDRPDT_RUN\\\"><code>VNDRPDT_RUN</code>-Einstellung</a> ausw\\u00e4hlen. Stellen Sie sicher, dass Sie den Zeitplan im richtigen Cron-\\u00e4hnlichen Format eingeben (z. B. validieren unter <a href=\\\"https://crontab.guru/\\\" target=\\\"_blank\\\">crontab.guru</a>). Wenn Sie beispielsweise <code>0 4 * * *</code> eingeben, wird der Scan nach 4 Uhr morgens in der <a onclick=\\\"toggleAllSettings()\\\" href=\\\"#TIMEZONE\\\"><code>TIMEZONE</ ausgef\\u00fchrt. Code> den Sie oben festgelegt haben</a>. Wird das N\\u00c4CHSTE Mal ausgef\\u00fchrt, wenn die Zeit vergeht.\"}]}"
VNDRPDT_RUN_TIMEOUT=600
VNDRPDT_RUN_TIMEOUT__metadata="{\"function\": \"RUN_TIMEOUT\", \"type\": \"integer\", \"default_value\": 600, \"options\": [], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Run timeout\"}, {\"language_code\": \"es_es\", \"string\": \"Tiempo l\\u00edmite de ejecuci\\u00f3n\"}, {\"language_code\": \"de_de\", \"string\": \"Zeit\\u00fcberschreitung\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Maximum time in seconds to wait for the script to finish. If this time is exceeded the script is aborted.\"}, {\"language_code\": \"es_es\", \"string\": \"Tiempo m\\u00e1ximo en segundos para esperar a que finalice el script. Si se supera este tiempo, el script se cancela.\"}, {\"language_code\": \"de_de\", \"string\": \"Maximale Zeit in Sekunden, die auf den Abschluss des Skripts gewartet werden soll. Bei \\u00dcberschreitung dieser Zeit wird das Skript abgebrochen.\"}]}"
VNDRPDT_WATCH=['Watched_Value1']
VNDRPDT_WATCH__metadata="{\"function\": \"WATCH\", \"type\": \"text.multiselect\", \"default_value\": [\"Watched_Value1\"], \"options\": [\"Watched_Value1\", \"Watched_Value2\", \"Watched_Value3\", \"Watched_Value4\"], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Watched\"}, {\"language_code\": \"es_es\", \"string\": \"Visto\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Send a notification if selected values change. Use <code>CTRL + Click</code> to select/deselect. <ul> <li><code>Watched_Value1</code> is vendor name</li><li><code>Watched_Value2</code> is device name</li><li><code>Watched_Value3</code> unused </li><li><code>Watched_Value4</code> unused </li></ul>\"}]}"
VNDRPDT_REPORT_ON=['new','watched-changed']
VNDRPDT_REPORT_ON__metadata="{\"function\": \"REPORT_ON\", \"type\": \"text.multiselect\", \"default_value\": [\"new\", \"watched-changed\"], \"options\": [\"new\", \"watched-changed\", \"watched-not-changed\", \"missing-in-last-scan\"], \"localized\": [\"name\", \"description\"], \"name\": [{\"language_code\": \"en_us\", \"string\": \"Report on\"}, {\"language_code\": \"es_es\", \"string\": \"Informar sobre\"}], \"description\": [{\"language_code\": \"en_us\", \"string\": \"Send a notification only on these statuses. <code>new</code> means a new unique (unique combination of PrimaryId and SecondaryId) object was discovered. <code>watched-changed</code> means that selected <code>Watched_ValueN</code> columns changed.\"}, {\"language_code\": \"es_es\", \"string\": \"Env\\u00ede una notificaci\\u00f3n solo en estos estados. <code>new</code> significa que se descubri\\u00f3 un nuevo objeto \\u00fanico (combinaci\\u00f3n \\u00fanica de PrimaryId y SecondaryId). <code>watched-changed</code> significa que seleccion\\u00f3 <code>Watched_ValueN Las columnas </code> cambiaron.\"}]}"

docker-compose.yml

Deploy with Portainer
is just jokobsk/pi.alert:latest -v /home/me/pialert/config:/home/pi/pialert/config -v /home/me/pialert/db:/home/pi/pialert/db with port 20211 and network host

.env

name
TZ
value
Asia/Bangkok
name
PATH
value
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
name
USER
value
pi
name
USER_ID
value
1000
name
USER_GID
value
1000
name
PORT
value
20211
name
SCAN_SUBNETS
value
['192.168.31.0/24 --interface=enp2s0']

Screenshots

Screenshot-2566-10-15-at-13.39.09.md.png

Paste last few lines from pialert.log

13:37:06 [Send API] Updating notification_* files in /home/pi/pialert/front/api/
13:37:06 [Notification] Skip email
13:37:06 [Notification] Skip Apprise
13:37:06 [Notification] Skip webhook
13:37:06 [Notification] Skip NTFY
13:37:06 [Notification] Skip PUSHSAFER
13:37:06 [Notification] Skip MQTT
13:37:06 [Notification] Notifications changes: 0
13:37:06 [MAIN] Process: Wait
13:37:11 [API] Updating table_devices.json file in /front/api
13:37:11 [API] Updating table_custom_endpoint.json file in /front/api
13:37:11 [MAIN] waiting to start next loop
13:37:16 [MAIN] waiting to start next loop
13:37:21 [MAIN] waiting to start next loop
13:37:26 [MAIN] waiting to start next loop
13:37:31 [MAIN] waiting to start next loop
13:37:36 [MAIN] waiting to start next loop
13:37:41 [MAIN] waiting to start next loop
13:37:46 [MAIN] waiting to start next loop
13:37:51 [MAIN] waiting to start next loop
13:37:56 [Notification] Check if something to report
13:37:56 [Notification] Open text Template
13:37:56 [Notification] Open html Template
13:37:56 [Notification] Using template/back/report_template.html
13:37:56 [Notification] included sections: ['new_devices', 'down_devices', 'events']
13:37:56 [Notification] New Devices sections done.
13:37:56 [Notification] Down Devices sections done.
13:37:56 [Notification] Events sections done.
13:37:56 [Notification] No changes to report
13:37:56 [Notification] Notifications changes: 0
13:37:56 [MAIN] Process: Wait
13:38:01 [MAIN] waiting to start next loop
13:38:06 [MAIN] waiting to start next loop
13:38:12 [MAIN] waiting to start next loop
13:38:17 [MAIN] waiting to start next loop
13:38:22 [MAIN] waiting to start next loop
13:38:27 [MAIN] waiting to start next loop
13:38:32 [MAIN] waiting to start next loop
13:38:37 [MAIN] waiting to start next loop
13:38:42 [MAIN] waiting to start next loop
13:38:47 [MAIN] waiting to start next loop
13:38:52 [MAIN] waiting to start next loop
13:38:57 [Notification] Check if something to report
13:38:57 [Notification] Open text Template
13:38:57 [Notification] Open html Template
13:38:57 [Notification] Using template/back/report_template.html
13:38:57 [Notification] included sections: ['new_devices', 'down_devices', 'events']
13:38:57 [Notification] New Devices sections done.
13:38:57 [Notification] Down Devices sections done.
13:38:57 [Notification] Events sections done.
13:38:57 [Notification] No changes to report
13:38:57 [Notification] Notifications changes: 0
13:38:57 [MAIN] Process: Wait
13:39:02 [MAIN] waiting to start next loop
13:39:07 [MAIN] waiting to start next loop
13:39:12 [MAIN] waiting to start next loop
13:39:17 [MAIN] waiting to start next loop
13:39:22 [MAIN] waiting to start next loop
13:39:27 [MAIN] waiting to start next loop
13:39:32 [MAIN] waiting to start next loop
13:39:37 [MAIN] waiting to start next loop
13:39:42 [MAIN] waiting to start next loop
13:39:47 [MAIN] waiting to start next loop
13:39:52 [MAIN] waiting to start next loop
13:39:57 [MAIN] waiting to start next loop
13:40:03 [Plugins] ---------------------------------------------
13:40:03 [Plugins] display_name: DDNS update
13:40:03 [Plugins] Executing: python3 /home/pi/pialert/front/plugins/ddns_update/script.py prev_ip={prev_ip} DDNS_UPDATE_URL={DDNS_UPDATE_URL} DDNS_USER={DDNS_USER} DDNS_PASSWORD={DDNS_PASSWORD} DDNS_DOMAIN={DDNS_DOMAIN}
13:40:22 [Plugins] No output received from the plugin DDNS - enable LOG_LEVEL=debug and check logs
13:40:22 [Plugins] ---------------------------------------------
13:40:22 [Plugins] display_name: Internet check
13:40:22 [Plugins] Executing: python3 /home/pi/pialert/front/plugins/internet_ip/script.py prev_ip={prev_ip} DIG_GET_IP_ARG={DIG_GET_IP_ARG}
13:40:22 [Plugins] SUCCESS, received 1 entries
13:40:22 [API] Updating table_plugins_history.json file in /front/api
13:40:22 [Plugins] ---------------------------------------------
13:40:22 [Plugins] display_name: Arp-Scan (Network scan)
13:40:22 [Plugins] Executing: python3 /home/pi/pialert/front/plugins/arp_scan/script.py userSubnets={subnets}
13:40:34 [Plugins] SUCCESS, received 29 entries
13:40:34 [API] Updating table_plugins_history.json file in /front/api
13:40:34 [Process Scan] Processing scan results
13:40:34 [Process Scan] Print Stats
13:40:34 [Scan Stats] Devices Detected.......: 31
13:40:34 [Scan Stats] New Devices............: 0
13:40:34 [Scan Stats] Down Alerts............: 0
13:40:34 [Scan Stats] New Down Alerts........: 0
13:40:34 [Scan Stats] New Connections........: 1
13:40:34 [Scan Stats] Disconnections.........: 0
13:40:34 [Scan Stats] IP Changes.............: 0
13:40:34 [Scan Stats] Scan Method Statistics:
13:40:34 INTRNT: 1
13:40:34 arp-scan: 29
13:40:34 local_MAC: 1
13:40:34 [Process Scan] Stats end
13:40:34 [Process Scan] Sessions Events (connect / discconnect)
13:40:34 [Process Scan] Creating new devices
13:40:34 [Process Scan] Updating Devices Info
13:40:34 [Process Scan] Resolve devices names
13:40:34 [Update Device Name] Trying to resolve devices without name
13:40:34 [Update Device Name] Pholus entries from prev scans: 0
13:40:34 [Update Device Name] Names Found (DiG/Pholus): 0 (0/0)

@jokob-sk
Copy link
Owner

Hi there,

Thank you for all the details.

Can you please have a look if there are any errors in the browser dev console?

Here is an example how to debug a similar issue: https://github.com/jokob-sk/Pi.Alert/blob/main/docs/DEBUG_INVALID_JSON.md

Thanks in advance,
j

@jokob-sk jokob-sk added the Waiting for reply⏳ Waiting for the original poster to respond, or discussion in progress. label Oct 15, 2023
@boyphongsakorn
Copy link
Author

Hi there,

Thank you for all the details.

Can you please have a look if there are any errors in the browser dev console?

Here is an example how to debug a similar issue: https://github.com/jokob-sk/Pi.Alert/blob/main/docs/DEBUG_INVALID_JSON.md

Thanks in advance, j

ok i got 1

jquery.min.js:2 GET http://192.168.31.215:20211/php/server/devices.php?action=getDeviceTypes 500 (Internal Server Error)

@jokob-sk
Copy link
Owner

Great, what error do you get if you access this URL in your browser? This is how a correct result should look like:

image

@boyphongsakorn
Copy link
Author

Great, what error do you get if you access this URL in your browser? This is how a correct result should look like:

image

i get chrome error 500 page

Screenshot-2566-10-15-at-14.56.14.md.png

@jokob-sk
Copy link
Owner

Hummmm, can you post what's in pialert_front.log?

@boyphongsakorn
Copy link
Author

Hummmm, can you post what's in pialert_front.log?


[2023-10-15_13-15-40] 
   Settings saved to the <code>pialert.conf</code> file.
   
   A time-stamped backup of the previous file created. 
   
    Reloading...
   
[2023-10-15_13-17-47] 
   Settings saved to the <code>pialert.conf</code> file.
   
   A time-stamped backup of the previous file created. 
   
    Reloading...
   
                              

Screenshot-2566-10-15-at-15.12.02.md.png

@jokob-sk
Copy link
Owner

Huummm, this doesn't give us useful info...

Can you post the content of these tabs?

image

@jokob-sk
Copy link
Owner

jokob-sk commented Oct 15, 2023

In the container, could you also check the php log files? (version number might differ)

image

@jokob-sk
Copy link
Owner

Oh, also please post the content of the pialert.php_errors.log file

@boyphongsakorn
Copy link
Author

Huummm, this doesn't give us useful info...

Can you post the content of these tabs?

image

ok

header

Request URL:
http://192.168.31.215:20211/php/server/devices.php?action=getDeviceTypes
Request Method:
GET
Status Code:
500 Internal Server Error
Remote Address:
192.168.31.215:20211
Referrer Policy:
strict-origin-when-cross-origin
Connection:
keep-alive
Content-Type:
text/html; charset=UTF-8
Date:
Sun, 15 Oct 2023 08:44:19 GMT
Server:
nginx/1.18.0
Transfer-Encoding:
chunked
Accept:
*/*
Accept-Encoding:
gzip, deflate
Accept-Language:
en-US,en
Connection:
keep-alive
Cookie:
PHPSESSID=2po2lgtgdcsi3p9ktvv7ktgamp; Front_Devices_Columns_Visible=%5B0%2C1%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C10%2C11%2C12%2C13%2C14%2C15%2C16%2C17%2C18%5D; Front_Devices_Columns_Order=%5B0%2C1%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C10%2C11%2C12%2C13%2C14%2C15%2C16%2C17%2C18%5D; isNewVersion=false; isNewVersionChecked=1697357705; undefined=1%20day; Front_Details_Sessions_Rows=50; Front_Details_Events_Rows=50; Front_Details_Events_Hide=true; Front_Devices_Rows=50; Front_Devices_Order=%5B%5B8%2C%22asc%22%5D%5D; getDevicesTotals=%5B34%2C29%2C0%2C34%2C0%2C0%5D
Host:
192.168.31.215:20211
Referer:
http://192.168.31.215:20211/deviceDetails.php?mac=50:eb:f8:1b:5f:98
Sec-Gpc:
1
User-Agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36
X-Requested-With:
XMLHttpRequest

request/payload
action: getDeviceTypes

response
This request has no response data available.

@boyphongsakorn
Copy link
Author

In the container, could you also check the php log files? (version number might differ)

image

root@bpserver:/# tail -n 20 -f /var/log/php7.4-fpm.log
[15-Oct-2023 13:13:36] NOTICE: fpm is running, pid 21
[15-Oct-2023 13:13:36] NOTICE: ready to handle connections
[15-Oct-2023 13:13:36] NOTICE: systemd monitor interval set to 10000ms

@boyphongsakorn
Copy link
Author

Oh, also please post the content of the pialert.php_errors.log file

ummmm in my pialert.php_errors.log is blank log

@jokob-sk
Copy link
Owner

hummm... I'm not smarter... can you check nginx logs shortly after the 500 error?

cd /var/log/nginx
/var/log/nginx# tail -n 20 error.log 
tail -n 20 access.log 

@boyphongsakorn
Copy link
Author

boyphongsakorn commented Oct 15, 2023 via email

@jokob-sk
Copy link
Owner

Thanks so much for all the help-found the bug 🐛:

2023/10/15 18:24:31 [error] 35#35: *1817 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function getNetworkTypes() in /home/pi/pialert/front/php/server/devices.php:860
Stack trace:
#0 /home/pi/pialert/front/php/server/devices.php(51): getDeviceTypes()

This will be fixed in the next release.

@jokob-sk jokob-sk added bug 🐛 Something isn't working next release/in dev image🚀 This is coming in the next release or was already released if the issue is Closed. and removed Waiting for reply⏳ Waiting for the original poster to respond, or discussion in progress. labels Oct 15, 2023
@jokob-sk
Copy link
Owner

In the mean time you can delete this line:

https://github.com/jokob-sk/Pi.Alert/blob/71c20e159db69a2cd6ecbc77361a8f4d1039628d/front/php/server/devices.php#L860C11-L860C37

This should fix the issue until I release a fix.

@boyphongsakorn
Copy link
Author

In the mean time you can delete this line:

https://github.com/jokob-sk/Pi.Alert/blob/71c20e159db69a2cd6ecbc77361a8f4d1039628d/front/php/server/devices.php#L860C11-L860C37

This should fix the issue until I release a fix.

ok, i will wait for next release.

@jokob-sk
Copy link
Owner

keeping it open for others to find

@jokob-sk jokob-sk reopened this Oct 16, 2023
@vladaurosh
Copy link
Contributor

This looks to be same as I reported here (second bug)
https://github.com/jokob-sk/Pi.Alert/issues/465

@jokob-sk
Copy link
Owner

Released in 23.11.11

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug 🐛 Something isn't working next release/in dev image🚀 This is coming in the next release or was already released if the issue is Closed.
Projects
None yet
Development

No branches or pull requests

3 participants