Skip to content

Acuparse Troubleshooting Guide

This guide is meant to assist troubleshooting common issues with Installing and using Acuparse. It is not a complete guide. If you need assistance, please reach out to the project via Community Support

Initial Readings

When you first install Acuparse, you may receive a No Data Received! message on your dashboard. Acuparse needs to receive and process it's initial updates from your sensors, before the dashboard can be rendered.

After your initial readings are received, Cron will process them into archive readings. If you see a No Archive Data! message, there may be a problem archiving your readings. Some dashboard features require Archive data. It's critical that your Cron is running the Archive job. Look for the message (SYSTEM){CRON}: Archive Updated in your syslog. When the Archive job has not yet completed successfully, you'll see an error on your dashboard and no data will be displayed.

If your dashboard does not update after 5-10 minutes, check your syslog to ensure data is flowing. Additionally, check and ensure your DNS is redirected, OR you have set your hostname on the Access directly. See also DNS Redirect.

Logs

If using Docker, set DEBUG_ENABLED=1 in your acuparse.env file to include the Apache Error and Cron logs in acuparse logs. Then acuparse restart to update the container config. Syslog is always available.

Syslog

The best way to troubleshoot your installation is to view the syslog. All Acuparse output is logged there.

tail -f /var/log/syslog

Apache

Access Log

The Apache access log contains all the data Apache has received from the web. Including the readings from your Access/Hub. Checking this log will indicate if Acuparse is receiving data from your devices.

tail -f /var/log/apache2/access.log

Error Log

The Apache error log contains the errors and warnings generated by Apache and PHP. Viewing this log can indicate if something is wrong with Acuparse.

tail -f /var/log/apache2/error.log

Cron Log

You can check for errors running cron jobs in the cron log file.

tail -f /opt/acuparse/logs/cron.log

Sensor ID's and MAC Addresses

Without a MAC configured for your Hub or Access, Acuparse has no way of knowing what data it should listen for. You must set a MAC and Iris (5-in-1) or Atlas (7-in-1) sensor ID in the admin settings to begin receiving and uploading your readings.

Sensor ID's/MAC addresses are located on the sensors themselves. If you can't locate them, the syslog will report all sensors and MAC addresses it does not recognize.

You can search the syslog for the unknown messages.

cat /var/log/syslog | grep "Unknown"

Cron Job

The cron job is essential for the proper operation of Acuparse. It runs the archiving, update checking, and external uploads. If your station remains offline and/or there are no updates to external providers, there is a chance this is why.

Run the following commands to update your crontab.

crontab -l | { cat; echo "* * * * * php /opt/acuparse/cron/cron.php > /opt/acuparse/logs/cron.log 2>&1"; } | crontab -

To check for Cron errors, see Cron Logs above.

RaspberryPi's

See RaspberryPi Direct Connect in the install guide to configure your RaspberryPi for direct connection to an Access.

When you are directly connecting your Access/Hub to a RaspberryPi, you must change your upload servers to the secondary ones. This is due to the fact that the Pi is redirecting your DNS locally and without changing the upload server, you can end up with a never ending cycle of readings.

See MyAcuRite Upload URL's for more details!

Installation Errors

If you experience unexpected results while completing the web install, try removing your config file and retry.

sudo rm /opt/acuparse/src/usr/config.php

In more extreme cases, you may also need to remove and reinitialize the Acuparse database.

Access Device

If your not receiving data from your Access, ensure you have a DNS resolvable hostname set for the upload server and/or a DNS redirect in place. Then, reboot your Access. The Access can at times require multiple reboots to begin sending data.

MyAcuRite Offline

If MyAcuRite is offline, Acuparse will respond to your Accesss and store your readings but they will not be back filled to MyAcuRite after their outage is over. The Access is capable of storing the data and sending it later but when used with Acuparse, the Access will continue to think MyAcuRite was online and the readings stored.

You will receive a warning in your syslog when this happens.

NTP

The date and time are critical to Acuparse operations. Both on the server and on your Access device.

The Access device will check for NTP on pool.ntp.org. Ensure your Access can connect to NTP here, or redirect your DNS for pool.ntp.org to a local NTP server.

If the installer was not able to configure NTP for you, review your OS documentation for the proper way to configure NTP on your system.

Hardcoded DNS Servers

The Access device appears to be configured to resolve DNS through 8.8.8.8 by default. This is becoming more and more popular with IoT device makers, to prevent local filtering and also to ease technical support costs. Currently, testing has shown that the Access will query your local DNS for a while, but for currently unknown reasons, can switch and lock onto 8.8.8.8. Connecting to the Access TTY output confirms this hardcode on boot.

There is a great article on how to resolve this Your Smart TV is probably ignoring your PiHole and some great discussion on this article, hardcoding, and DoH over at Hacker News.

To resolve, you need to redirect DNS requests from your Access destined for 8.8.8.8 to your local DNS server using your local firewall rules.

If your Acuparse install is NOT local, that is, installed in the cloud, you should ensure your Acuparse hostname\FQDN is publicly resolvable through 8.8.8.8.

Cisco Switches

If your Access constantly reboots/reconnects when connected to a Cisco switch, enable Portfast.

config terminal
interface FastEthernet0/XX
spanning-tree portfast
end

Hub Device

MyAcuRite Support

MyAcuRite has terminated support for the SmartHUB. Acuparse will receive and store these readings and respond to your hub. Readings will not be uploaded to MyAcuRite and will only be stored locally. You can still use the Hub to upload to external providers.

Inaccurate Readings

Acuparse filters Access readings for erroneous readings by default. See Filter Access Readings for more details.

If you have old erroneous readings in your archive table, you can clean them using MySQL commands.

Modify the below queries to fit your requirements.

Local Install

Main:

mysql -u<USER> -p<PASSWORD> acuparse "DELETE FROM archive WHERE tempF='-40' AND (relH='0' OR relH='1')";

Towers:

mysql -u<USER> -p<PASSWORD> acuparse -e "DELETE FROM tower_data WHERE sensor='<SENSOR_ID>' AND tempF='-40' AND (relH='0' OR relH='1')";

Docker Install

Main:

acuparse console
mysql -h$MYSQL_HOSTNAME -u$MYSQL_USER -p$MYSQL_PASSWORD acuparse -e "DELETE FROM archive WHERE tempF='-40' AND (relH='0' OR relH='1')";

Towers:

acuparse console
mysql -h$MYSQL_HOSTNAME -u$MYSQL_USER -p$MYSQL_PASSWORD acuparse -e "DELETE FROM tower_data WHERE sensor='<SENSOR_ID>' AND tempF='-40' AND (relH='0' OR relH='1')";

Git Repository

If you make changes to the source code locally, your changes will break git pull unless you commit or stash them. If you receive errors while doing a git pull, you can remove your changes and reset your code back to release state by running git reset --hard.

If you're interested in learning Git, this is an excellent resource: Git Exercises.