Examples ======== Read system state and telemetry ------------------------------- .. code-block:: python import asyncio import aiohttp from aiopnsense import OPNsenseClient async def main() -> None: async with aiohttp.ClientSession() as session: client = OPNsenseClient( url="https://opnsense.example.com", username="YOUR_API_KEY", password="YOUR_API_SECRET", session=session, ) try: await client.validate() system_info = await client.get_system_info() telemetry = await client.get_telemetry() print(f"Firewall name: {system_info.get('name')}") print(f"CPU telemetry: {telemetry.get('cpu')}") print(f"Filesystem telemetry: {telemetry.get('filesystems')}") finally: await client.async_close() asyncio.run(main()) Read diagnostics traffic ------------------------ .. code-block:: python import asyncio import aiohttp from aiopnsense import OPNsenseClient async def main() -> None: async with aiohttp.ClientSession() as session: async with OPNsenseClient( url="https://opnsense.example.com", username="YOUR_API_KEY", password="YOUR_API_SECRET", session=session, ) as client: traffic = await client.get_interface_traffic() wan = (traffic.get("interfaces") or {}).get("wan", {}) print(f"WAN bytes received: {wan.get('rx_bytes', 0)}") async for sample in client.stream_interface_traffic(poll_interval=1): sample_wan = (sample.get("interfaces") or {}).get("wan", {}) print(f"WAN receive rate: {sample_wan.get('rx_bits_per_second', 0)} bit/s") break asyncio.run(main()) Check firmware or control a service ----------------------------------- .. code-block:: python import asyncio import aiohttp from aiopnsense import OPNsenseClient async def main() -> None: async with aiohttp.ClientSession() as session: async with OPNsenseClient( url="https://opnsense.example.com", username="YOUR_API_KEY", password="YOUR_API_SECRET", session=session, opts={"verify_ssl": True}, ) as client: firmware = await client.get_firmware_update_info() services = await client.get_services() print(f"Current firmware: {firmware.get('product', {}).get('product_version')}") print(f"Available services: {[service.get('name') for service in services[:5]]}") restarted = await client.restart_service_if_running("unbound") print(f"Restarted unbound: {restarted}") asyncio.run(main())