It appears that the hardware detection process has not been updated since the introduction of the Pi4. I have tried to update hardware.py myself however my changes are not being reflected, I assume that missing something in the script or one of the other processes. Please update the script to reflect the new Pi devices. RPi HardwareHistory - eLinux.org can be used for reference on Revision numbers.
We wont be adding any new support for the raspberry pi cayenne agent.
You can use the cayenne python library instead GitHub - myDevicesIoT/Cayenne-MQTT-Python: Python Library for Cayenne MQTT API
I have to say that referring me to the MQTT API is a lazy response, as that API does not populate the same fields in the dashboard as the agent does. That said it would have been better to document the fact that the hardware.py script can only populate the make and model information at the time of install and not after the install is complete and the information is sent to the dashboard. The thing I find odd is that the scripts in the agent collect the information each time the agent starts which seems like a waste of calls and processing when the information can not be updated on the dashboard after install. For anyone that wants the updated table for the hardware.py script it is below. Please not that you will have to interrupt the agent install process to get this to work. It would be nice to have this information added to the files directly from the source so this effort was not needed.
Login in to Cayenne dashboard and add a device.
Download the install script that is given.
Comment out the wget and the tar commands in that file.
Manually run the wget command:
wget -O $HOME/myDevices.tar.gz “https://updates.mydevices.com/raspberry/myDevices.tar.gz”
tar -xzvf myDevices.tar.gz
Edit
myDevices/Cayenne-Agent/myDevices/system/hardware.py
Once you have edited the file you can then finish the install with the second command provided.
if self.Revision == 'Beta':
self.model = 'Raspberry Pi Model B (Beta)'
if self.Revision in ('000d', '000e', '000f', '0002', '0003', '0004', '0005', '0006'):
self.model = 'Raspberry Pi Model B'
if self.Revision in ('0007', '0008', '0009'):
self.model = 'Raspberry Pi Model A'
if self.Revision in ('0010', '0013', '900032'):
self.model = 'Raspberry Pi Model B +'
if self.Revision in ('0011', '0014'):
self.model = 'Raspberry Pi Compute Module'
if self.Revision in ('0012', '0015', '900021'):
self.model = 'Raspberry Pi Model A+'
if self.Revision in ('a01040', 'a01041', 'a21041', 'a22042'):
self.model = 'Raspberry Pi 2 Model B'
if self.Revision in ('900092', '900093', '920093'):
self.model = 'Raspberry Pi Zero'
if self.Revision in ('9000c1',):
self.model = 'Raspberry Pi Zero W'
if self.Revision in ('a02082', 'a22082', 'a32082'):
self.model = 'Raspberry Pi 3 Model B'
if self.Revision in ('a020d3'):
self.model = 'Raspberry Pi 3 Model B+'
if self.Revision in ('a020a0'):
self.model = 'Raspberry Pi Compute Module 3'
if self.Revision in ('9020e0'):
self.model = 'Raspberry Pi 3 Model A+'
if self.Revision in ('a02100'):
self.model = 'Raspberry Pi Compute Module 3+'
if self.Revision in ('902120',):
self.model = 'Raspberry Pi Zero 2 W'
if self.Revision in ('a03111', 'b03111', 'b03112', 'b03114', 'c03111', 'c03112', 'c03114', 'd03114'):
self.model = 'Raspberry Pi 4 Model B'
if 'Rockchip' in CPU_HARDWARE:
self.model = 'Tinker Board'
self.manufacturer = 'Element14/Premier Farnell'
if self.Revision in ('a01041', '900092', 'a02082', '0012', '0011', '0010', '000e', '0008', '0004', 'a020d3', 'a01040', 'a020a0', '900021', '9020e0', 'a02100', '902120', 'a03111', 'b03111', 'b03112', 'b03114', 'c03111', 'c03112', 'c03114', 'd03114'):
self.manufacturer = 'Sony, UK'
if self.Revision in ('a32082'):
self.manufacturer = 'Sony, Japan'
if self.Revision in ('0014', '0015', 'a21041', 'a22082', '920093'):
self.manufacturer = 'Embest, China'
if self.Revision in ('0005', '0009', '000f'):
self.manufacturer = 'Qisda'
if self.Revision in ('0006', '0007', '000d'):
self.manufacturer = 'Egoman'
if self.Revision == '0000':
if 'Rockchip' in CPU_HARDWARE:
self.manufacturer = 'ASUS'
Setup the uSD card on the most recent Pi that is compatible and swap uSD card back to new Pi IV and carry on ? I have not tested this but often use this method between other models. See other post on using legacy (compact and stable) Pi images also… Saves time and space ?
This issue here in not with an issue that prevents the agent install from working. The agent install works fine no matter if I run the install on a Pi3 or a Pi4. The agent installs and reports back to the dashboard with the information. The issue that is pointed out in this thread is the agent reports the incorrect information about the device back to the dashboard. Secondly the information is reported back to the dashboard only one right after the agent is installed. It collects the same information every time the agent runs but is it not an updateable field after its initial report. So this means that if you want the device to report correctly on the dashboard you have to play with the install to make that happen. The changes are easy to implement, but that is not the point I am making in this post. The issue here is that they refuse to fix the simplest of issues for an agent that they host the installer for. The second part of this is that they do not attempt to understand the issue and have any willingness to work with the community they just deflect to issue something else.
I love the product as it is easy to understand and the dashboard very useful for managing my Pi devices and sending alerts when there is an issue. This issue is the lack of responsibility / accountability for the product they are providing. They have a poor communication and documentation history when dealing with the product. Look to the removal of the iOS and Android apps from support and the lack of progress on the PWA replacement. I am not trying to rant or bash the company, I understand that development is hard and that in the current times that staffing and other operations can be difficult. If those are the limiting factors then ask the community for help allow us to help with things like updating support for the agent so that the new devices can be reported correctly or so that we can get a working dashboard that is usable on a mobile device.